xiaoju
2505dd8d6a
chore: remove stale pnpm-lock.yaml
2026-05-18 10:25:45 +00:00
xiaomo
1121dfa48b
Merge pull request 'feat: uwf — Stateless Workflow CLI' ( #317 ) from feat/309-uwf-stateless into main
2026-05-18 10:07:55 +00:00
xiaoju
d90e29ad05
fix: address 3 critical PR review issues
...
1. threads.yaml race condition: reload threads index after agent subprocess
completes before updating head pointer (cli-uwf/commands/thread.ts)
2. evaluateJsonata not awaited: jsonata evaluate() returns Promise for async
expressions — now properly awaited (uwf-moderator/evaluate.ts)
3. resolveWorkflowHash dead code: function always returns a value, removed
impossible null return type and dead null-check branches at call sites
(cli-uwf/store.ts, commands/thread.ts, commands/workflow.ts)
2026-05-18 10:05:11 +00:00
xiaoju
0727e0e8d5
fix: reload CAS store after agent spawn + share schemas via uwf-protocol
...
The agent subprocess writes StepNode to CAS on disk, but the parent
process had an in-memory cache from createFsStore init. Fix: re-create
store after agent spawn to pick up new nodes.
Also centralized JSON Schemas in uwf-protocol so cli-uwf and agent-kit
produce identical type hashes.
E2E smoke test passing: workflow put → thread start → 3x step → done
Refs #309
2026-05-18 09:33:52 +00:00
xiaoju
ba012d98bc
feat: add @uncaged/uwf-agent-hermes — Hermes agent CLI adapter
...
Spawns 'hermes chat' with assembled prompt from agent-kit context.
Agent-kit handles extract, StepNode write, and stdout output.
Refs #309 , #316
2026-05-18 09:22:12 +00:00
xiaoju
b165049a13
feat: implement thread step — moderator → agent → update head
...
- Walk CAS chain to build ModeratorContext with expanded output
- Call uwf-moderator evaluate() for role decision
- Agent resolution: --agent > config overrides > default
- Spawn agent CLI, capture StepNode hash
- Update threads.yaml, check done via second evaluate
- Archive on $END
Refs #309 , #315
2026-05-18 09:19:37 +00:00
xiaoju
4d477c67c0
feat: add @uncaged/uwf-agent-kit — agent CLI framework
...
- createAgent() API for building agent CLIs
- Context builder: reads CAS chain, builds AgentContext
- Extract: LLM-based structured output extraction
- StepNode writer: writes to CAS without touching threads.yaml
- Stdout: outputs StepNode hash
Refs #309 , #314
2026-05-18 09:15:25 +00:00
xiaoju
0d5678c961
feat: add thread start/show/list/kill commands
...
- thread start: ULID generation, StartNode to CAS, threads.yaml
- thread show: active (done:false) or archived (done:true)
- thread list: active threads, --all includes history
- thread kill: archive to history.jsonl
Refs #309 , #313
2026-05-18 09:09:10 +00:00
xiaoju
a8e2aa85f8
feat: add @uncaged/cli-uwf with workflow put/show/list commands
...
Refs #309 , #312
2026-05-18 09:03:55 +00:00
xiaoju
2a4d35399b
feat: add @uncaged/uwf-moderator with JSONata evaluation engine
...
5 tests passing: transition, condition match, fallback,
missing role error, output expansion.
Refs #309 , #311
2026-05-18 08:58:21 +00:00
xiaoju
391915411e
feat: add @uncaged/uwf-protocol with all shared types
...
Refs #309 , #310
2026-05-18 08:53:37 +00:00
scottwei
4aaf49bfc6
Merge pull request 'jshang/optimize-dashboard-ui' ( #308 ) from jshang/optimize-dashboard-ui into main
...
Reviewed-on: uncaged/workflow#308
2026-05-18 08:45:46 +00:00
xiaoju
08de1ae5eb
docs: fresh uwf-* packages, depend on @uncaged/json-cas, no reuse
2026-05-18 08:44:04 +00:00
xiaoju
c91a3d1ec6
docs: add description to condition definitions
2026-05-18 08:41:29 +00:00
xiaoju
13d932f69c
docs: config with provider/model/agent registries and alias-based overrides
2026-05-18 08:38:08 +00:00
jiashuang
f705d9b8ea
refactor: optimize ui for dashboard
2026-05-18 16:20:05 +08:00
xiaoju
f84d327410
docs: add .env for API keys, separate from config.yaml
2026-05-18 08:19:48 +00:00
xiaoju
9c2f93629b
docs: add models config (default + extract LLM)
2026-05-18 08:16:03 +00:00
xiaoju
bcefcb9af7
docs: add section 4 — key data types with shared StepRecord
2026-05-18 08:13:18 +00:00
xiaoju
b14dce2bc6
docs: fix inconsistencies — title, terminology, threads.yaml, JSONata context
2026-05-18 08:09:40 +00:00
xiaoju
85c572e770
docs: inline roles/moderator into Workflow, output as cas_ref, detail polymorphic
2026-05-18 08:07:20 +00:00
xiaoju
9a89885ce6
docs: rewrite CAS structure — flatten refs, named conditions, config.yaml, output naming
2026-05-18 07:55:04 +00:00
xiaoju
d095ceaafa
docs: agent CLI takes thread-id + role, outputs CAS hash, step owns pointer
2026-05-18 07:24:14 +00:00
xiaoju
2a0346f48b
docs: simplify show to pure thread-id → head query, all output JSON
2026-05-18 07:18:29 +00:00
xiaoju
b4e25ea002
docs: add done field to step output
2026-05-18 07:12:38 +00:00
xiaoju
77f2060e6b
docs: step on ended thread is an error, not null head
2026-05-18 07:11:50 +00:00
xiaoju
8f9a925179
docs: simplify step output to workflow/thread/head
2026-05-18 07:10:11 +00:00
jiashuang
2f3fff3536
refactor: introduce react-router
2026-05-18 15:06:16 +08:00
xiaoju
a7eb9814ae
docs: fix agent invocation format in thread step
2026-05-18 07:05:35 +00:00
xiaoju
a8024e6d42
docs: use full 26-char Crockford Base32 ULIDs for thread IDs
2026-05-18 07:03:40 +00:00
xiaoju
6d94d9c85a
docs: fix hash format to 13-char Crockford Base32 (XXH64)
2026-05-18 07:03:02 +00:00
xiaoju
49a4d08c04
docs: add thread list --all and thread kill
2026-05-18 06:59:47 +00:00
xiaoju
d5773369af
docs: uwf thread subcommands, simplify start output
2026-05-18 06:58:35 +00:00
xiaoju
f49e014f41
docs: update CLI design — uwf naming, simplify commands and agent protocol
2026-05-18 06:56:55 +00:00
xiaoju
ab48a8169d
docs: add stateless workflow CLI design
...
Refs #297
2026-05-18 06:37:25 +00:00
xiaomo
2b707fb44e
Merge pull request 'refactor: replace extractRefs with schema casRef annotations (Phase 2)' ( #290 ) from feat/285-phase2-remove-extractrefs into main
2026-05-16 11:50:47 +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
xiaomo
6bb8cf8315
Merge pull request 'feat: add collectCasRefs — schema-level CAS ref annotation (Phase 1)' ( #288 ) from feat/285-cas-ref-annotation into main
2026-05-16 10:43:16 +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
xingyue
9584a86fb7
Merge pull request 'chore: fix biome cognitive complexity warnings' ( #287 ) from chore/fix-biome-complexity-warnings into main
2026-05-16 10:40:27 +00:00
Scott Wei
defc0afc27
chore: fix biome cognitive complexity warnings
...
Refactor dashboard graph/schema helpers and descriptor role validation
into smaller functions so bun run check passes without warnings.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-16 18:33:00 +08:00
xiaomo
9f6633d5bf
Merge pull request 'refactor(workflow-protocol): require AgentFn Opt generic' ( #284 ) from refactor/agent-fn-required-opt into main
2026-05-16 10:27:07 +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
xiaomo
ba90214af6
Merge pull request 'chore: internalize unused exports across all packages' ( #283 ) from chore/audit-exports-cleanup into main
2026-05-16 09:59:57 +00: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
xiaomo
131021b1a7
Merge pull request 'chore: remove symlink dead code' ( #271 ) from chore/remove-symlink-dead-code into main
2026-05-16 06:22:34 +00:00
xiaoju
e42555fd9c
chore: remove symlink dead code
...
Now that bundles are fully self-contained (no external @uncaged/* imports),
the symlink mechanism is no longer needed.
- Delete ensure-uncaged-workflow-symlink.ts
- Remove ensureUncagedWorkflowSymlink from all imports/exports
- Remove ExtractBundleExportsOptions type (storageRoot param)
- Simplify extractBundleExports to single-arg signature
- Clean up stale comments
2026-05-16 06:21:34 +00:00
xiaomo
3a26eb28e5
Merge pull request 'chore: make bundle fully self-contained, no external imports' ( #270 ) from chore/no-external-bundle into main
2026-05-16 06:16:28 +00:00
xiaoju
c1a17b707c
chore: make bundle fully self-contained, no external imports
...
- Remove uncagedWorkflowExternals() from scaffold build script
- Remove --external from Bun.build config
- Tighten bundle validator: only Node built-ins allowed, all deps must be inlined
- Update skill.ts documentation
Bundles are now deterministic — same Node/Bun version = same behavior,
no dependency resolution at runtime.
2026-05-16 05:12:49 +00:00
xiaoju
4ea1e0d8a4
chore: publish 0.5.0-alpha.4 — unified env() API
2026-05-15 10:19:38 +00:00