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
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
xiaoju
e37dbc3f35
wip: Phase 1 protocol + CAS types for Merkle call stack
...
小橘 <xiaoju@shazhou.work >
2026-05-12 01:35:45 +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
xiaoju
ca0403c8ab
fix: content node refs field + thread head update
...
Fixes #161
Fixes #162
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-09 08:53:02 +00:00
xiaoju
26cf51366f
feat: Phase 3 — engine read path + runtime context builder
...
- Add buildThreadContext(headHash, cas) to workflow-runtime
- Expand extract phase to return { meta, contentPayload, refs[] }
- Add parseCasThreadNode() to workflow-cas for node type parsing
- Update createWorkflow to write ContentMerkleNode with artifact refs
- Tests: 4 pass (build-context + extract-refs)
- Biome format pass on all files
Refs #155 , closes #158
小橘 <xiaoju@shazhou.work >
2026-05-09 08:00:24 +00:00
xiaoju
81c582ae0e
feat: Phase 2 — engine write path (CAS nodes + threads.json)
...
- Engine writes StartNode, StateNode, ContentMerkleNode as CAS blobs
- threads.json tracks active threads, completed → history/{date}.jsonl
- No more .data.jsonl writes
- ancestors skip-list: [parent, ...parentAncestors] capped at 11
- Tests: 4 pass (engine write path)
Refs #155 , closes #157
小橘 <xiaoju@shazhou.work >
2026-05-09 07:53:44 +00:00
xiaoju
6f000512d2
feat: Phase 1 — CAS thread storage types + helpers
...
- Add StartNode, StateNode, ContentMerkleNode types to workflow-protocol
- Add collectRefs() to workflow-cas — extracts CAS hashes from StateNode payload
- Add findReachableHashes() to workflow-cas — recursive mark traversal via refs[]
- Tests: 7 pass (collect-refs + reachable)
Refs #155 , closes #156
小橘 <xiaoju@shazhou.work >
2026-05-09 07:30:47 +00:00
xingyue
1a1e8b3398
feat(cas,reactor): create @uncaged/workflow-cas and @uncaged/workflow-reactor
...
Phase 4: CAS module extracted with Merkle types, hash functions,
and fs-backed store. Imports CasStore type from protocol.
Phase 5: Reactor (ReAct loop) extracted as independent package.
Only depends on protocol — no cas or engine dependency.
Ref: #143 , closes #147 , closes #148
2026-05-09 11:11:33 +08:00