xiaoju
3afd7a5319
chore: remove leftover smoke test files
2026-05-18 11:41:49 +00:00
xiaoju
6306b23a9f
refactor: replace extractRefs with schema casRef annotations
...
Migrate all templates to use .meta({ casRef: true }) on Zod schema
fields instead of manual extractRefs functions. Remove extractRefs
from RoleDefinition type entirely.
- develop: planner phases[].hash, coder completedPhase annotated
- solve-issue, smoke, init templates: extractRefs removed
- create-workflow.ts: uses collectCasRefs(schema, meta)
- RoleDefinition: extractRefs field removed (breaking)
218 tests pass, 0 fail.
Fixes #289 , Refs #285
2026-05-16 10:48:45 +00:00
xiaoju
93b7947d7c
feat: add collectCasRefs — extract CAS refs from schema meta annotations
...
Replaces manual extractRefs functions with declarative schema-level
casRef annotations. Walks Zod v4 schemas recursively, collecting
string values from fields marked with .meta({ casRef: true }).
Supports: objects, arrays, discriminatedUnion, nullable/optional.
8/8 test cases pass (flat, nested, union, null, mixed).
Refs #285 , addresses #286
2026-05-16 10:42:24 +00:00
Scott Wei
7dadf874e1
refactor(workflow-protocol): require AgentFn Opt generic
...
Make AgentFn<Opt> always take a mandatory options argument, removing
the void conditional overload. Simplify createAgentAdapter, restore
exports needed by tests, and fix CLI test bundles to use cas.put
instead of disallowed @uncaged/* imports.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-16 18:23:07 +08:00
xiaoju
5bbac3e4f7
chore: internalize unused exports across all packages
...
Audit public API surfaces using reachability analysis from application
entry points (Worker, CLI, Dashboard). Symbols not reachable from any
application's customization tree are removed from package index.ts files.
Source files and internal usage are untouched — only the public export
surface is narrowed.
Changes by package:
- workflow-util: -7 exports (base32 internals, logger config types)
- workflow-cas: -12 exports (merkle internals, serialization details)
- workflow-execute: -24 exports (engine internals, LLM extract details)
- workflow-reactor: -4 exports (reactor config/invocation internals)
- workflow-register: -8 exports (redundant protocol re-exports, internal YAML fns)
- workflow-runtime: curated re-export subset (stop full protocol re-export)
- workflow-util-agent: -5 exports (internal agent helpers)
- workflow-agent-cursor: -1 export (validateCursorAgentConfig)
- workflow-agent-hermes: -1 export (validateHermesAgentConfig)
Note: workflow-protocol index.ts unchanged — downstream packages still
import removed symbols via internal paths. Protocol cleanup requires
updating workflow-runtime/src/types.ts first (separate PR).
Refs #273 , #274 , #275 , #276 , #277 , #278 , #279 , #280 , #281 , #282
2026-05-16 09:58:56 +00:00
xiaoju
4ea1e0d8a4
chore: publish 0.5.0-alpha.4 — unified env() API
2026-05-15 10:19:38 +00:00
xiaoju
f74b482cc0
chore: version 0.5.0-alpha.3, add publish-all script
...
- scripts/publish-all.mjs: pins workspace:^ before npm publish, restores after
- Workaround for bun publish workspace:^ resolution bug in pre mode
小橘 🍊
2026-05-15 01:37:27 +00:00
xiaoju
77e395b913
chore: version 0.5.0-alpha.1
...
小橘 🍊
2026-05-15 01:27:54 +00:00
xiaoju
9576d69032
chore: enter changeset pre mode (alpha), version 0.5.0-alpha.0
...
小橘 🍊
2026-05-15 01:22:44 +00:00
xiaoju
4582274ba4
feat(protocol): AgentFn<Opt> type + createAgentAdapter bridge
...
Add AgentFn<Opt = void> as the formal agent boundary type:
- Input: ThreadContext (fixed), Output: string (fixed)
- Opt: agent-specific structured options (e.g. { workspace } for Cursor)
Add createAgentAdapter<Opt>(agent, extract) → AdapterFn bridge in
workflow-util-agent, plus createSimpleAgentAdapter for Opt = void.
Also fixes: workflow-cas composite flag + cursor tsconfig reference.
Refs #252
2026-05-14 08:41:22 +00:00
xiaoju
94f725c50b
refactor: cursor-agent uses runtime.extract for workspace detection
...
- Remove llmProvider and workspace from CursorAgentConfig (now just command/model/timeout)
- extractWorkspacePath uses runtime.extract + runtime.cas instead of standalone reactor
- TextProducerFn signature gains runtime parameter: (ctx, prompt, runtime)
- develop-entry.ts hardcodes cursor-agent path, no more env var dependency
- Drop @uncaged/workflow-reactor dep from workflow-agent-cursor
- Update tests for simplified config
小橘 <xiaoju@shazhou.work >
2026-05-13 15:51:43 +00:00
xingyue
9276689cb6
chore: switch to npmjs registry, publish v0.4.5
...
- Remove Gitea npm registry, use npmjs.org
- changeset publish works natively with npmjs
- release script: build + test + changeset publish
- Remove custom release.sh, all via changesets
2026-05-13 21:20:18 +08:00
xingyue
b4584cbaa6
chore: publish v0.4.3 — include src/ in published packages
...
bun runtime resolves the 'bun' exports condition to ./src/index.ts,
but src/ was not in the files array so consumers got ENOENT.
2026-05-13 21:11:17 +08:00
xingyue
1cf963a1fb
chore: publish v0.4.2 — fix workspace deps, remove publish.sh
...
- workspace:* → workspace:^ (resolves to ^x.y.z instead of exact)
- Remove publish.sh, use changesets workflow
- changeset config: access public (Gitea compat)
- release script: build + test + changeset publish
2026-05-13 21:07:29 +08:00
xingyue
ce5bc50210
chore: publish v0.4.1
...
小橘 <xiaoju@shazhou.work >
2026-05-13 20:59:59 +08:00
xingyue
522afdd4bd
feat: adopt changesets + fix exports, bump to 0.4.0
...
- Install @changesets/cli with fixed mode (all @uncaged/* packages sync version)
- Fix package exports: add bun condition, point import to dist/
- Bump all packages to 0.4.0 via changeset version
- Auto-generated CHANGELOG.md for each package
- Ignore workflow-dashboard (private)
- Add npm scripts: changeset, version, release
- publish.sh: support workspace:^ prefix matching
Closes #241 , Closes #242
2026-05-13 20:56:21 +08:00
xingyue
ca644dabaa
chore: bump all packages to 0.4.0, fix exports for publish
...
- All @uncaged/* packages → 0.4.0
- Internal deps: workspace:* → workspace:^ (resolves to ^0.4.0 on publish)
- Fix exports: add 'bun' condition for local dev (src), 'import' for consumers (dist)
- Remove stale 'main: src/index.ts' from 6 packages
- Fix publish.sh topo sort to match workspace:^ prefix
星月 <xingyue@shazhou.work >
2026-05-13 20:46:00 +08:00
xingyue
aede8f7613
chore: publish v0.3.21
...
小橘 <xiaoju@shazhou.work >
2026-05-13 17:10:39 +08:00
xingyue
6cce5e2593
chore: publish v0.3.20
...
小橘 <xiaoju@shazhou.work >
2026-05-13 17:00:43 +08:00
xingyue
d3a7ed9062
chore: publish v0.3.19
...
小橘 <xiaoju@shazhou.work >
2026-05-13 16:56:55 +08:00
xiaoju
bb1293f6b9
fix: add exports field to 6 packages for proper type resolution
...
Packages without exports.types pointed main/types to src/ which
doesn't exist in published tarballs. Now all packages have:
exports."." = { types: dist/index.d.ts, import: src/index.ts }
Bump to 0.3.18.
2026-05-13 08:29:36 +00:00
xiaoju
497f03c747
chore: bump all packages to 0.3.17
2026-05-13 08:04:32 +00:00
xiaoju
cfe4543d39
refactor!: remove deprecated Agent types, introduce Adapter-first API
...
BREAKING CHANGES:
- Remove AgentFn, AgentFnResult, AgentBinding from workflow-protocol
- Remove wrapAgentAsAdapter from workflow-util-agent
- workflowAsAgent → workflowAdapter (old name kept as deprecated re-export)
New APIs:
- createTextAdapter(producer) — bridges text-producing functions to AdapterFn
- TextProducerFn, TextAdapterResult types
- workflowAdapter() — direct AdapterFn for child workflow delegation
All agent packages (cursor, hermes, llm) now return AdapterFn directly,
no wrapping needed. Bundle entries simplified accordingly.
小橘 🍊 (NEKO Team)
2026-05-13 08:03:27 +00:00
xiaoju
061926b86a
chore: fix all biome lint errors
...
- Auto-fix string concatenation → template literals
- Remove unused imports
- Prefix unused function with underscore
- Format fixes across multiple files
2026-05-13 07:26:11 +00:00
xiaoju
d5d7be6100
chore: add files field to all packages, bump to 0.3.16
...
Excludes tsconfig.json and source files from published packages.
Fixes TypeScript errors when consuming packages via bun.
2026-05-13 07:19:49 +00:00
xiaoju
1566a43395
chore: bump all packages to 0.3.15
2026-05-13 07:04:12 +00:00
xiaoju
f0d1bb9ae8
chore: bump all to 0.3.11
...
小橘 🍊
2026-05-13 03:28:33 +00:00
xiaoju
04cfd33f99
chore: bump all to 0.3.10 (regenerate lockfile)
...
小橘 🍊
2026-05-13 03:27:05 +00:00
xiaoju
a8c00f169b
chore: bump all packages to 0.3.9 (fix workspace:* dep resolution)
...
小橘 🍊
2026-05-13 03:25:50 +00:00
xiaoju
8e63f99eb6
chore: bump all public packages to 0.3.6
...
小橘 🍊
2026-05-13 03:18:25 +00:00
xiaoju
bd110b76e1
chore: remove accidental self-referencing symlinks
...
小橘 🍊
2026-05-13 02:44:24 +00:00
xiaoju
ec4599a230
refactor: extract wrapAgentAsAdapter to util-agent, support childThread in RoleFn ( #222 )
2026-05-13 02:37:32 +00:00
xiaoju
bebf4aad45
feat(protocol): add AdapterFn/RoleFn/AdapterBinding, refactor createWorkflow to use AdapterBinding ( #222 )
...
- Add RoleFn<T>, AdapterFn, AdapterBinding types to workflow-protocol
- Mark AgentFn, AgentFnResult, AgentBinding as @deprecated
- Refactor createWorkflow to accept AdapterBinding instead of AgentBinding
- Adapter returns typed meta directly — no more extract call in workflow loop
- Add buildThreadInput (ThreadContext-based), keep buildAgentPrompt as deprecated wrapper
- Update template bundle-entries to wrap AgentFn as AdapterFn
- Update solve-issue tests to use AdapterFn directly
2026-05-13 02:27:36 +00:00
xingyue
0c02cb7574
chore: publish v0.3.5
...
小橘 <xiaoju@shazhou.work >
2026-05-13 09:34:41 +08:00
xingyue
4493fd8979
chore: publish v0.3.4
...
小橘 <xiaoju@shazhou.work >
2026-05-12 20:35:02 +08:00
xingyue
3846dc12a9
chore: bump all public packages to 0.3.3
2026-05-12 12:58:17 +08:00
xingyue
4c4dabb7a3
chore: bump all public packages to 0.3.2
2026-05-12 12:55:21 +08:00
xiaoju
98122b446d
feat: Phase 3 — agent observability for Merkle call stack
...
- StartStep gains parentState: string | null (from StartNodePayload)
- buildAgentPrompt injects Parent Context section when parentState is set
- CLI thread show outputs parentState (top-level) and childThread (per step)
- 2 new prompt tests + thread show assertion updates
Refs #197 , #194
小橘 🍊 (NEKO Team)
2026-05-12 02:23:15 +00:00
xiaomo
f723daa014
Merge pull request 'feat( #194 ): Phase 2 — Engine layer Merkle call stack' ( #202 ) from feat/194-merkle-call-stack-phase2 into main
2026-05-12 02:11:24 +00:00
xiaoju
1e9900bed3
feat( #194 ): Phase 2 — Engine layer Merkle call stack wiring
...
- Protocol: AgentFnResult = string | { output, childThread }, RoleOutput.childThread,
ThreadContext.bundleHash for parent state lookup
- Runtime: create-workflow normalizes AgentFnResult, propagates childThread in RoleOutput
- Engine: ExecuteThreadOptions.parentStateHash, appendStateForStep writes childThread,
putStartNode uses parentStateHash
- workflowAsAgent: reads parent head state from threads.json, passes parentStateHash
to child, returns { output, childThread: rootHash }
- Integration test: 4 cases verifying bidirectional Merkle links (306 lines)
Phase 2 of #194 (Merkle Call Stack). Closes #196 .
小橘 <xiaoju@shazhou.work >
2026-05-12 02:10:06 +00:00
xiaomo
aebff8b906
Merge pull request 'refactor: replace Moderator function with ModeratorTable in WorkflowDefinition' ( #201 ) from refactor/200-moderator-table into main
2026-05-12 02:06:03 +00:00
xingyue
db45089922
refactor: replace Moderator function with ModeratorTable in WorkflowDefinition ( #200 )
...
- WorkflowDefinition.moderator → WorkflowDefinition.table (ModeratorTable)
- Moderator type + tableToModerator no longer exported from protocol/runtime
- tableToModerator internalized in workflow-execute engine layer
- WorkflowDescriptor gains graph: WorkflowGraph (auto-extracted from table)
- buildDescriptor extracts serializable graph edges from ModeratorTable
- validateWorkflowDescriptor validates graph structure
- All templates (develop, solve-issue) export table directly
- CLI init scaffold updated to use ModeratorTable
- 99 tests pass, 0 failures
2026-05-12 10:01:30 +08:00
xiaoju
a98431a12a
feat( #194 ): Phase 1 — parentState / childThread in CAS nodes
...
- Protocol: StartNodePayload.parentState, StateNodePayload.childThread
- CAS: putStartNode refs include parentState, collectRefs includes childThread
- Parsing: legacy nodes without new fields default to null
- Engine + fork: all callers pass parentState: null / childThread: null
- Tests: 8 new cases for refs, parsing, collect-refs (+208 lines)
Phase 1 of #194 (Merkle Call Stack). Closes #195 .
小橘 <xiaoju@shazhou.work >
2026-05-12 01:42:10 +00:00
xiaoju
376dd87b6b
chore: bump to v0.3.1, fix workspace:* in published packages
...
v0.3.0 was published with workspace:* deps (npm doesn't resolve them).
Re-published as v0.3.1 with concrete version refs.
Local monorepo deps restored to workspace:*.
小橘 <xiaoju@shazhou.work >
2026-05-11 11:00:49 +00:00
xiaoju
4d8469a649
chore: bump all packages to v0.3.0
...
Published to Gitea npm registry (git.shazhou.work).
小橘 <xiaoju@shazhou.work >
2026-05-11 10:52:35 +00:00
xiaoju
ec13c19505
Merge pull request 'refactor: replace maxRounds with supervisor check interval' ( #186 ) from refactor/185-remove-max-rounds into main
2026-05-11 09:01:24 +00:00
xiaoju
2b587612d5
refactor: replace maxRounds with supervisor check interval
...
Removes maxRounds as a hard stop limit from the entire stack. The supervisor
(already configured via workflow.yaml supervisorInterval) is now the sole
termination authority.
Changes across 27 files in 11 packages:
- workflow-protocol: StartStep.meta is now empty, StartNodePayload drops maxRounds
- workflow-cas: isStartPayload no longer checks maxRounds
- workflow-execute: engine, worker, fork-thread all stripped of maxRounds plumbing
- cli-workflow: --max-rounds flag removed from CLI and HTTP API
- workflow-runtime: build-context and create-workflow no longer reference maxRounds
- workflow-dashboard: UI no longer sends maxRounds
- workflow-template-develop/solve-issue: moderator no longer checks rounds remaining
- All tests updated
Fixes #185
2026-05-11 08:51:35 +00:00
xingyue
2342a6e3bd
fix: login.tsx use new gateway endpoint path
2026-05-11 16:46:38 +08:00
xiaoju
1742ced6df
refactor: simplify ExtractFn to (schema, contentHash)
...
- Remove extractPrompt from RoleDefinition
- Remove ExtractContext type
- ExtractFn now takes (schema, contentHash) instead of (schema, prompt, ExtractContext)
- createExtract reads CAS content by hash, keeps ReAct loop with cas_get
- Coder schema uses .describe() for phase hash hint
- All role definitions, CLI templates, and skill output updated
Refs #180 , closes #174 , closes #181
2026-05-11 07:54:09 +00:00
xiaoju
da6bcb10d6
feat(workflow): add declarative ModeratorTable type and migrate templates
...
Migrate workflow-template-develop and workflow-template-solve-issue
moderators to use the declarative ModeratorTable/tableToModerator
pattern. Update workflow-runtime re-exports and workflow-execute
engine to use renamed types.
Fixes #172
2026-05-11 06:25:39 +00:00