@kynetic-ai/spec 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -455
- package/dist/agent-runtime/bootstrap.d.ts +31 -0
- package/dist/agent-runtime/bootstrap.d.ts.map +1 -0
- package/dist/agent-runtime/bootstrap.js +302 -0
- package/dist/agent-runtime/bootstrap.js.map +1 -0
- package/dist/agent-runtime/dispatch.d.ts +150 -10
- package/dist/agent-runtime/dispatch.d.ts.map +1 -1
- package/dist/agent-runtime/dispatch.js +1248 -244
- package/dist/agent-runtime/dispatch.js.map +1 -1
- package/dist/agent-runtime/invocation.d.ts +28 -1
- package/dist/agent-runtime/invocation.d.ts.map +1 -1
- package/dist/agent-runtime/invocation.js +172 -60
- package/dist/agent-runtime/invocation.js.map +1 -1
- package/dist/agent-runtime/prompts.d.ts +9 -0
- package/dist/agent-runtime/prompts.d.ts.map +1 -1
- package/dist/agent-runtime/prompts.js +42 -7
- package/dist/agent-runtime/prompts.js.map +1 -1
- package/dist/agent-runtime/session-event-accumulator.d.ts +83 -0
- package/dist/agent-runtime/session-event-accumulator.d.ts.map +1 -0
- package/dist/agent-runtime/session-event-accumulator.js +203 -0
- package/dist/agent-runtime/session-event-accumulator.js.map +1 -0
- package/dist/agent-runtime/session-event-types.d.ts +67 -0
- package/dist/agent-runtime/session-event-types.d.ts.map +1 -0
- package/dist/agent-runtime/session-event-types.js +13 -0
- package/dist/agent-runtime/session-event-types.js.map +1 -0
- package/dist/agent-runtime/workspace.d.ts +244 -0
- package/dist/agent-runtime/workspace.d.ts.map +1 -0
- package/dist/agent-runtime/workspace.js +2025 -0
- package/dist/agent-runtime/workspace.js.map +1 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/adapters.js +58 -13
- package/dist/agents/adapters.js.map +1 -1
- package/dist/agents/spawner.d.ts +8 -0
- package/dist/agents/spawner.d.ts.map +1 -1
- package/dist/agents/spawner.js +25 -3
- package/dist/agents/spawner.js.map +1 -1
- package/dist/cli/batch-exec.js +1 -1
- package/dist/cli/batch-exec.js.map +1 -1
- package/dist/cli/command-annotations.d.ts +15 -3
- package/dist/cli/command-annotations.d.ts.map +1 -1
- package/dist/cli/command-annotations.js +23 -3
- package/dist/cli/command-annotations.js.map +1 -1
- package/dist/cli/commands/agent.d.ts +2 -0
- package/dist/cli/commands/agent.d.ts.map +1 -1
- package/dist/cli/commands/agent.js +144 -27
- package/dist/cli/commands/agent.js.map +1 -1
- package/dist/cli/commands/agents.d.ts.map +1 -1
- package/dist/cli/commands/agents.js +5 -5
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +118 -3
- package/dist/cli/commands/derive.js.map +1 -1
- package/dist/cli/commands/guard.d.ts.map +1 -1
- package/dist/cli/commands/guard.js +8 -6
- package/dist/cli/commands/guard.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +20 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/item.d.ts.map +1 -1
- package/dist/cli/commands/item.js +205 -47
- package/dist/cli/commands/item.js.map +1 -1
- package/dist/cli/commands/log.d.ts.map +1 -1
- package/dist/cli/commands/log.js +24 -10
- package/dist/cli/commands/log.js.map +1 -1
- package/dist/cli/commands/meta.d.ts.map +1 -1
- package/dist/cli/commands/meta.js +10 -1
- package/dist/cli/commands/meta.js.map +1 -1
- package/dist/cli/commands/plan-import.d.ts +3 -3
- package/dist/cli/commands/plan-import.d.ts.map +1 -1
- package/dist/cli/commands/plan-import.js +213 -528
- package/dist/cli/commands/plan-import.js.map +1 -1
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +533 -83
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/review.d.ts +14 -0
- package/dist/cli/commands/review.d.ts.map +1 -0
- package/dist/cli/commands/review.js +1142 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +1 -0
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +33 -10
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/session/checkpoint.d.ts +2 -4
- package/dist/cli/commands/session/checkpoint.d.ts.map +1 -1
- package/dist/cli/commands/session/checkpoint.js +6 -107
- package/dist/cli/commands/session/checkpoint.js.map +1 -1
- package/dist/cli/commands/session/commands.d.ts.map +1 -1
- package/dist/cli/commands/session/commands.js +33 -23
- package/dist/cli/commands/session/commands.js.map +1 -1
- package/dist/cli/commands/session/compact.js +4 -4
- package/dist/cli/commands/session/compact.js.map +1 -1
- package/dist/cli/commands/session/create.js +2 -2
- package/dist/cli/commands/session/create.js.map +1 -1
- package/dist/cli/commands/session/format.d.ts.map +1 -1
- package/dist/cli/commands/session/format.js +1 -6
- package/dist/cli/commands/session/format.js.map +1 -1
- package/dist/cli/commands/session/log.d.ts +32 -7
- package/dist/cli/commands/session/log.d.ts.map +1 -1
- package/dist/cli/commands/session/log.js +166 -60
- package/dist/cli/commands/session/log.js.map +1 -1
- package/dist/cli/commands/session/migrate.d.ts +9 -0
- package/dist/cli/commands/session/migrate.d.ts.map +1 -0
- package/dist/cli/commands/session/migrate.js +46 -0
- package/dist/cli/commands/session/migrate.js.map +1 -0
- package/dist/cli/commands/session/stale-close.d.ts.map +1 -1
- package/dist/cli/commands/session/stale-close.js +5 -8
- package/dist/cli/commands/session/stale-close.js.map +1 -1
- package/dist/cli/commands/session/types.d.ts +1 -1
- package/dist/cli/commands/session/types.d.ts.map +1 -1
- package/dist/cli/commands/setup.d.ts +2 -2
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +287 -257
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/shadow.d.ts.map +1 -1
- package/dist/cli/commands/shadow.js +147 -31
- package/dist/cli/commands/shadow.js.map +1 -1
- package/dist/cli/commands/skill-crud.d.ts +7 -0
- package/dist/cli/commands/skill-crud.d.ts.map +1 -1
- package/dist/cli/commands/skill-crud.js +41 -18
- package/dist/cli/commands/skill-crud.js.map +1 -1
- package/dist/cli/commands/skill-diff.d.ts.map +1 -1
- package/dist/cli/commands/skill-diff.js +29 -3
- package/dist/cli/commands/skill-diff.js.map +1 -1
- package/dist/cli/commands/skill-install.d.ts.map +1 -1
- package/dist/cli/commands/skill-install.js +5 -4
- package/dist/cli/commands/skill-install.js.map +1 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +359 -49
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/trait.d.ts.map +1 -1
- package/dist/cli/commands/trait.js +5 -27
- package/dist/cli/commands/trait.js.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +113 -52
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +69 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +26 -0
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +108 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/sync-mode.d.ts +44 -0
- package/dist/cli/sync-mode.d.ts.map +1 -0
- package/dist/cli/sync-mode.js +64 -0
- package/dist/cli/sync-mode.js.map +1 -0
- package/dist/daemon/middleware/project-context.ts +25 -7
- package/dist/daemon/project-context.ts +18 -0
- package/dist/daemon/routes/agent-dispatch.ts +107 -23
- package/dist/daemon/routes/aggregation.ts +184 -0
- package/dist/daemon/routes/inbox.ts +5 -0
- package/dist/daemon/routes/items.ts +167 -0
- package/dist/daemon/routes/meta.ts +141 -1
- package/dist/daemon/routes/plans.ts +147 -0
- package/dist/daemon/routes/projects.ts +28 -6
- package/dist/daemon/routes/ref-resolution.ts +119 -0
- package/dist/daemon/routes/refs.ts +42 -0
- package/dist/daemon/routes/session-related.ts +140 -0
- package/dist/daemon/routes/sessions.ts +581 -0
- package/dist/daemon/routes/tasks.ts +257 -2
- package/dist/daemon/routes/triage.ts +40 -1
- package/dist/daemon/routes/validation.ts +1 -1
- package/dist/daemon/server.ts +165 -50
- package/dist/daemon/session-sync.ts +11 -0
- package/dist/daemon/shadow-sync.ts +11 -0
- package/dist/daemon/watcher.ts +56 -5
- package/dist/daemon/websocket/project-resolution.ts +77 -0
- package/dist/export/json.d.ts.map +1 -1
- package/dist/export/json.js +104 -1
- package/dist/export/json.js.map +1 -1
- package/dist/export/types.d.ts +52 -1
- package/dist/export/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/parser/agent-detection.d.ts +1 -1
- package/dist/parser/agent-detection.d.ts.map +1 -1
- package/dist/parser/agent-detection.js +10 -0
- package/dist/parser/agent-detection.js.map +1 -1
- package/dist/parser/alignment.d.ts.map +1 -1
- package/dist/parser/alignment.js +4 -2
- package/dist/parser/alignment.js.map +1 -1
- package/dist/parser/config.d.ts +397 -2
- package/dist/parser/config.d.ts.map +1 -1
- package/dist/parser/config.js +125 -3
- package/dist/parser/config.js.map +1 -1
- package/dist/parser/dispatch-workspaces.d.ts +18 -0
- package/dist/parser/dispatch-workspaces.d.ts.map +1 -0
- package/dist/parser/dispatch-workspaces.js +209 -0
- package/dist/parser/dispatch-workspaces.js.map +1 -0
- package/dist/parser/doctor.d.ts.map +1 -1
- package/dist/parser/doctor.js +27 -8
- package/dist/parser/doctor.js.map +1 -1
- package/dist/parser/file-lock.d.ts.map +1 -1
- package/dist/parser/file-lock.js +9 -2
- package/dist/parser/file-lock.js.map +1 -1
- package/dist/parser/index.d.ts +6 -0
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +6 -0
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/plans.d.ts.map +1 -1
- package/dist/parser/plans.js +1 -0
- package/dist/parser/plans.js.map +1 -1
- package/dist/parser/refs.d.ts +8 -1
- package/dist/parser/refs.d.ts.map +1 -1
- package/dist/parser/refs.js +27 -1
- package/dist/parser/refs.js.map +1 -1
- package/dist/parser/review-operations.d.ts +72 -0
- package/dist/parser/review-operations.d.ts.map +1 -0
- package/dist/parser/review-operations.js +185 -0
- package/dist/parser/review-operations.js.map +1 -0
- package/dist/parser/review-task-integration.d.ts +78 -0
- package/dist/parser/review-task-integration.d.ts.map +1 -0
- package/dist/parser/review-task-integration.js +173 -0
- package/dist/parser/review-task-integration.js.map +1 -0
- package/dist/parser/review-threads.d.ts +101 -0
- package/dist/parser/review-threads.d.ts.map +1 -0
- package/dist/parser/review-threads.js +222 -0
- package/dist/parser/review-threads.js.map +1 -0
- package/dist/parser/review-validation.d.ts +69 -0
- package/dist/parser/review-validation.d.ts.map +1 -0
- package/dist/parser/review-validation.js +207 -0
- package/dist/parser/review-validation.js.map +1 -0
- package/dist/parser/reviews.d.ts +58 -0
- package/dist/parser/reviews.d.ts.map +1 -0
- package/dist/parser/reviews.js +230 -0
- package/dist/parser/reviews.js.map +1 -0
- package/dist/parser/session-branch.d.ts +91 -0
- package/dist/parser/session-branch.d.ts.map +1 -0
- package/dist/parser/session-branch.js +565 -0
- package/dist/parser/session-branch.js.map +1 -0
- package/dist/parser/session-sync-scheduler.d.ts +53 -0
- package/dist/parser/session-sync-scheduler.d.ts.map +1 -0
- package/dist/parser/session-sync-scheduler.js +100 -0
- package/dist/parser/session-sync-scheduler.js.map +1 -0
- package/dist/parser/setup-status.d.ts +7 -1
- package/dist/parser/setup-status.d.ts.map +1 -1
- package/dist/parser/setup-status.js +104 -39
- package/dist/parser/setup-status.js.map +1 -1
- package/dist/parser/shadow-sync-scheduler.d.ts +71 -0
- package/dist/parser/shadow-sync-scheduler.d.ts.map +1 -0
- package/dist/parser/shadow-sync-scheduler.js +139 -0
- package/dist/parser/shadow-sync-scheduler.js.map +1 -0
- package/dist/parser/shadow.d.ts +121 -14
- package/dist/parser/shadow.d.ts.map +1 -1
- package/dist/parser/shadow.js +752 -27
- package/dist/parser/shadow.js.map +1 -1
- package/dist/parser/skill-render.d.ts +24 -0
- package/dist/parser/skill-render.d.ts.map +1 -1
- package/dist/parser/skill-render.js +98 -26
- package/dist/parser/skill-render.js.map +1 -1
- package/dist/parser/validate.d.ts +43 -3
- package/dist/parser/validate.d.ts.map +1 -1
- package/dist/parser/validate.js +204 -30
- package/dist/parser/validate.js.map +1 -1
- package/dist/parser/yaml.d.ts +47 -11
- package/dist/parser/yaml.d.ts.map +1 -1
- package/dist/parser/yaml.js +329 -149
- package/dist/parser/yaml.js.map +1 -1
- package/dist/review/checks.d.ts +97 -0
- package/dist/review/checks.d.ts.map +1 -0
- package/dist/review/checks.js +175 -0
- package/dist/review/checks.js.map +1 -0
- package/dist/review/index.d.ts +3 -0
- package/dist/review/index.d.ts.map +1 -0
- package/dist/review/index.js +3 -0
- package/dist/review/index.js.map +1 -0
- package/dist/review/subject-bindings.d.ts +83 -0
- package/dist/review/subject-bindings.d.ts.map +1 -0
- package/dist/review/subject-bindings.js +175 -0
- package/dist/review/subject-bindings.js.map +1 -0
- package/dist/schema/common.d.ts +26 -0
- package/dist/schema/common.d.ts.map +1 -1
- package/dist/schema/common.js +13 -0
- package/dist/schema/common.js.map +1 -1
- package/dist/schema/dispatch-workspace.d.ts +2643 -0
- package/dist/schema/dispatch-workspace.d.ts.map +1 -0
- package/dist/schema/dispatch-workspace.js +187 -0
- package/dist/schema/dispatch-workspace.js.map +1 -0
- package/dist/schema/inbox.d.ts +8 -8
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +2 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/meta.d.ts +663 -116
- package/dist/schema/meta.d.ts.map +1 -1
- package/dist/schema/meta.js +28 -0
- package/dist/schema/meta.js.map +1 -1
- package/dist/schema/plan.d.ts +30 -19
- package/dist/schema/plan.d.ts.map +1 -1
- package/dist/schema/plan.js +3 -1
- package/dist/schema/plan.js.map +1 -1
- package/dist/schema/review-records.d.ts +2676 -0
- package/dist/schema/review-records.d.ts.map +1 -0
- package/dist/schema/review-records.js +232 -0
- package/dist/schema/review-records.js.map +1 -0
- package/dist/schema/spec.d.ts +32 -14
- package/dist/schema/spec.d.ts.map +1 -1
- package/dist/schema/spec.js +5 -0
- package/dist/schema/spec.js.map +1 -1
- package/dist/schema/task.d.ts +187 -29
- package/dist/schema/task.d.ts.map +1 -1
- package/dist/schema/task.js +12 -2
- package/dist/schema/task.js.map +1 -1
- package/dist/schema/triage.d.ts +22 -22
- package/dist/sessions/cache.d.ts +119 -0
- package/dist/sessions/cache.d.ts.map +1 -0
- package/dist/sessions/cache.js +284 -0
- package/dist/sessions/cache.js.map +1 -0
- package/dist/sessions/index.d.ts +1 -0
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +2 -0
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/legacy.d.ts +77 -0
- package/dist/sessions/legacy.d.ts.map +1 -0
- package/dist/sessions/legacy.js +146 -0
- package/dist/sessions/legacy.js.map +1 -0
- package/dist/sessions/store.d.ts +115 -71
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +357 -182
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +44 -16
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js +11 -2
- package/dist/sessions/types.js.map +1 -1
- package/dist/strings/errors.d.ts +32 -0
- package/dist/strings/errors.d.ts.map +1 -1
- package/dist/strings/errors.js +17 -0
- package/dist/strings/errors.js.map +1 -1
- package/dist/strings/labels.d.ts +1 -0
- package/dist/strings/labels.d.ts.map +1 -1
- package/dist/strings/labels.js +1 -0
- package/dist/strings/labels.js.map +1 -1
- package/dist/utils/activity.d.ts +101 -0
- package/dist/utils/activity.d.ts.map +1 -0
- package/dist/utils/activity.js +408 -0
- package/dist/utils/activity.js.map +1 -0
- package/dist/utils/git.d.ts +31 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +87 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/web-ui/_app/immutable/assets/0.tmlwn-Ih.css +1 -0
- package/dist/web-ui/_app/immutable/assets/9.BwwJybWx.css +1 -0
- package/dist/web-ui/_app/immutable/chunks/2KqE8gtn.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/70-t_QvE.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/AiWQj974.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B25nWFyA.js +5 -0
- package/dist/web-ui/_app/immutable/chunks/B2bcA_Q_.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B5e5HYyB.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B7-5z6eA.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B7bGmhK0.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B8tYZKAE.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BFGAyJjD.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BG0850zf.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BG8eSzAd.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BIMxXS8I.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BSzL1fpU.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BYtjHfeq.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{D1ArdqNb.js → Bp5pFYXL.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/BsJFsuAT.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BvpNHcD6.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BypqA25-.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/C0w6WDm5.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/C5_PAZ0y.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CDRO15Iv.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CF1CoqD5.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CS2sa4_m.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CWUQwB9H.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CY5FDdSU.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/C_7MTDoj.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CaAJD3dl.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{i-XnOIX0.js → ChB5iyEL.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/ChQD-6N8.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{BCkp8Hs8.js → CqbsoCwA.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/DCeJW50p.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DJtZNgcs.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DKIeaprD.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DLd2uVIA.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DW_subyT.js +2 -0
- package/dist/web-ui/_app/immutable/chunks/DbU6lVn0.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Dc7ZCC5m.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Dd5umPsk.js +2 -0
- package/dist/web-ui/_app/immutable/chunks/Dg_zDpDS.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Dgqu8Yuc.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DmxsPZTB.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DphTaFUB.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DqK4iHp0.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DqT6OH_u.js +2 -0
- package/dist/web-ui/_app/immutable/chunks/Ds9I9wQb.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Du5ng3u4.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DxJw79Wi.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/GFTX8GgV.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/HNjs76Zz.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/HVMjDi4_.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/P0A_fJvS.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/T3vGWjIL.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/VTmrX9Qu.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Xvwhx_F1.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Yyz1XMQA.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/dh5HeqUr.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/fZMteyca.js +62 -0
- package/dist/web-ui/_app/immutable/chunks/{D28BF5MJ.js → gPrj-hqC.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/htcWMiYN.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/oTsvd9y4.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/qJfLUwU4.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/xCtiO_JE.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/y4GeEH6k.js +1 -0
- package/dist/web-ui/_app/immutable/entry/app.C4h_eOn6.js +2 -0
- package/dist/web-ui/_app/immutable/entry/start.CQFTf9ep.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/0.Dh1xO970.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/1.l75D3Opx.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/10.DBidBPc-.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/11.Ab0gUKWe.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/12.CMsnoxfs.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/13.D8YKuknB.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/14.DZ0aan7y.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/15.CUIKreDL.js +2 -0
- package/dist/web-ui/_app/immutable/nodes/16.BWc8--BO.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/2.CDUonbuh.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/3.Ctg3M00i.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/4.Ci-JDwbA.js +2 -0
- package/dist/web-ui/_app/immutable/nodes/5.CTyEDAq0.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/6.BTZZqsAb.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/7.BI52g_Jo.js +137 -0
- package/dist/web-ui/_app/immutable/nodes/8.3hZPaB9x.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/9.DS49kvwl.js +29 -0
- package/dist/web-ui/_app/version.json +1 -1
- package/dist/web-ui/favicon-192.png +0 -0
- package/dist/web-ui/favicon-32.png +0 -0
- package/dist/web-ui/favicon.ico +0 -0
- package/dist/web-ui/index.html +14 -11
- package/package.json +14 -7
- package/plugin/.claude-plugin/marketplace.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/plugins/kspec/skills/merge/SKILL.md +127 -0
- package/plugin/plugins/kspec/skills/plan/SKILL.md +55 -26
- package/plugin/plugins/kspec/skills/review/SKILL.md +350 -133
- package/plugin/plugins/kspec/skills/task-work/SKILL.md +96 -106
- package/templates/agents-sections/04-pr-workflow.md +15 -12
- package/templates/agents-sections/06-ralph-loop.md +15 -10
- package/templates/skills/manifest.yaml +25 -7
- package/templates/skills/merge/SKILL.md +120 -0
- package/templates/skills/plan/SKILL.md +55 -26
- package/templates/skills/review/SKILL.md +346 -130
- package/templates/skills/task-work/SKILL.md +93 -103
- package/dist/web-ui/_app/immutable/assets/0.BxCxvrZR.css +0 -1
- package/dist/web-ui/_app/immutable/chunks/B-CZR0q8.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/B1IR5Su5.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/B_Cvvtc4.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BtFaGGII.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/Bu8JVsCH.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/C87u-CNA.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/CrFkBTYp.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/D6RtLpzL.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/D7FHSgx2.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DBXrsxZQ.js +0 -2
- package/dist/web-ui/_app/immutable/chunks/Da_hHMuA.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/Do6LchSF.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DoNPtcAw.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DtUbXRZz.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DyFPRlLl.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DzAP8lRM.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DzVXElzN.js +0 -2
- package/dist/web-ui/_app/immutable/chunks/aoPBFken.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/laxtrUO3.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/q1nIWgqB.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/sTLbk5Nm.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/vwKgQu5P.js +0 -5
- package/dist/web-ui/_app/immutable/entry/app.BCwMcqnT.js +0 -2
- package/dist/web-ui/_app/immutable/entry/start.wKCQH-tt.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/0.CjGVMG74.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/1.B6_AIPan.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/2.q4oCS7Ws.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/3.rTKZf9o2.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/4.DVIDRu1d.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/5.8PtPXIOd.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/6.ZZrTemy_.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/7.IP-gxCxi.js +0 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Event Accumulator
|
|
3
|
+
*
|
|
4
|
+
* Buffers text from ACP SessionUpdate events and flushes at newline boundaries,
|
|
5
|
+
* emitting typed session lifecycle events. Tracks state per session to support
|
|
6
|
+
* concurrent sessions independently.
|
|
7
|
+
*
|
|
8
|
+
* AC: @session-event-broadcast ac-newline-streaming — flush at newline boundaries
|
|
9
|
+
* AC: @session-event-broadcast ac-boundary-flush — flush on state transitions
|
|
10
|
+
* AC: @session-event-broadcast ac-per-session-state — per-session accumulator state
|
|
11
|
+
* AC: @session-event-broadcast ac-tool-input-included — tool_call_start includes input
|
|
12
|
+
* AC: @session-event-broadcast ac-replaces-text-chunks — replaces agent_text_chunk
|
|
13
|
+
*/
|
|
14
|
+
import type { SessionUpdate } from "../acp/index.js";
|
|
15
|
+
import type { SessionEventData } from "./session-event-types.js";
|
|
16
|
+
/** The content mode the accumulator is currently tracking for a session. */
|
|
17
|
+
type ContentMode = "message" | "thinking" | "idle";
|
|
18
|
+
/** Per-session accumulator state. */
|
|
19
|
+
export interface AccumulatorState {
|
|
20
|
+
buffer: string;
|
|
21
|
+
mode: ContentMode;
|
|
22
|
+
/** Tracks active tool calls for duration_ms calculation. */
|
|
23
|
+
activeToolCalls: Map<string, {
|
|
24
|
+
toolName: string;
|
|
25
|
+
startTime: number;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
/** Context for event emission (session identity + agent metadata). */
|
|
29
|
+
export interface SessionContext {
|
|
30
|
+
sessionId: string;
|
|
31
|
+
agentId: string;
|
|
32
|
+
taskId: string | null;
|
|
33
|
+
taskTitle: string | null;
|
|
34
|
+
}
|
|
35
|
+
/** Callback invoked when the accumulator produces a typed session event. */
|
|
36
|
+
export type SessionEventEmitter = (event: SessionEventData) => void;
|
|
37
|
+
/**
|
|
38
|
+
* Manages per-session text accumulation and lifecycle event emission.
|
|
39
|
+
*
|
|
40
|
+
* AC: @session-event-broadcast ac-per-session-state
|
|
41
|
+
*/
|
|
42
|
+
export declare class SessionEventAccumulator {
|
|
43
|
+
private sessions;
|
|
44
|
+
/**
|
|
45
|
+
* Get or create accumulator state for a session.
|
|
46
|
+
*/
|
|
47
|
+
private getState;
|
|
48
|
+
/**
|
|
49
|
+
* Build the common base fields for session events.
|
|
50
|
+
*/
|
|
51
|
+
private baseFields;
|
|
52
|
+
/**
|
|
53
|
+
* Flush buffered text as a progress event (newline-boundary streaming).
|
|
54
|
+
* Emits complete lines up to the last newline, keeps the partial remainder.
|
|
55
|
+
* Forces a full flush when the buffer exceeds MAX_BUFFER_SIZE.
|
|
56
|
+
*
|
|
57
|
+
* AC: @session-event-broadcast ac-newline-streaming
|
|
58
|
+
*/
|
|
59
|
+
private flushBuffer;
|
|
60
|
+
/**
|
|
61
|
+
* Transition to a new content mode, flushing the buffer as a _complete event.
|
|
62
|
+
*
|
|
63
|
+
* AC: @session-event-broadcast ac-boundary-flush
|
|
64
|
+
*/
|
|
65
|
+
private transitionMode;
|
|
66
|
+
/**
|
|
67
|
+
* Process a SessionUpdate from ACP, emitting typed session events.
|
|
68
|
+
*
|
|
69
|
+
* This is the main entry point — replaces the old onTextChunk callback.
|
|
70
|
+
*/
|
|
71
|
+
handleUpdate(ctx: SessionContext, update: SessionUpdate, emit: SessionEventEmitter): void;
|
|
72
|
+
/**
|
|
73
|
+
* Flush and clean up state for a session (on session end).
|
|
74
|
+
* Emits any remaining buffered text as a _complete event.
|
|
75
|
+
*/
|
|
76
|
+
endSession(ctx: SessionContext, emit: SessionEventEmitter): void;
|
|
77
|
+
/** Check if a session is currently being tracked. */
|
|
78
|
+
hasSession(sessionId: string): boolean;
|
|
79
|
+
/** Get the number of tracked sessions. */
|
|
80
|
+
get sessionCount(): number;
|
|
81
|
+
}
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=session-event-accumulator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-event-accumulator.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/session-event-accumulator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAKjE,4EAA4E;AAC5E,KAAK,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAEnD,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,4DAA4D;IAC5D,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvE;AAED,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,4EAA4E;AAC5E,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEpE;;;;GAIG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAA4C;IAE5D;;OAEG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAkCnB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAuBtB;;;;OAIG;IACH,YAAY,CACV,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,mBAAmB,GACxB,IAAI;IAqFP;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI;IAehE,qDAAqD;IACrD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,0CAA0C;IAC1C,IAAI,YAAY,IAAI,MAAM,CAEzB;CACF"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Event Accumulator
|
|
3
|
+
*
|
|
4
|
+
* Buffers text from ACP SessionUpdate events and flushes at newline boundaries,
|
|
5
|
+
* emitting typed session lifecycle events. Tracks state per session to support
|
|
6
|
+
* concurrent sessions independently.
|
|
7
|
+
*
|
|
8
|
+
* AC: @session-event-broadcast ac-newline-streaming — flush at newline boundaries
|
|
9
|
+
* AC: @session-event-broadcast ac-boundary-flush — flush on state transitions
|
|
10
|
+
* AC: @session-event-broadcast ac-per-session-state — per-session accumulator state
|
|
11
|
+
* AC: @session-event-broadcast ac-tool-input-included — tool_call_start includes input
|
|
12
|
+
* AC: @session-event-broadcast ac-replaces-text-chunks — replaces agent_text_chunk
|
|
13
|
+
*/
|
|
14
|
+
/** Maximum buffer size before forced flush (prevents unbounded memory growth). */
|
|
15
|
+
const MAX_BUFFER_SIZE = 8 * 1024; // 8KB
|
|
16
|
+
/**
|
|
17
|
+
* Manages per-session text accumulation and lifecycle event emission.
|
|
18
|
+
*
|
|
19
|
+
* AC: @session-event-broadcast ac-per-session-state
|
|
20
|
+
*/
|
|
21
|
+
export class SessionEventAccumulator {
|
|
22
|
+
sessions = new Map();
|
|
23
|
+
/**
|
|
24
|
+
* Get or create accumulator state for a session.
|
|
25
|
+
*/
|
|
26
|
+
getState(sessionId) {
|
|
27
|
+
let state = this.sessions.get(sessionId);
|
|
28
|
+
if (!state) {
|
|
29
|
+
state = { buffer: "", mode: "idle", activeToolCalls: new Map() };
|
|
30
|
+
this.sessions.set(sessionId, state);
|
|
31
|
+
}
|
|
32
|
+
return state;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Build the common base fields for session events.
|
|
36
|
+
*/
|
|
37
|
+
baseFields(ctx) {
|
|
38
|
+
return {
|
|
39
|
+
session_id: ctx.sessionId,
|
|
40
|
+
agent_id: ctx.agentId,
|
|
41
|
+
task_id: ctx.taskId,
|
|
42
|
+
task_title: ctx.taskTitle,
|
|
43
|
+
timestamp: Date.now(),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Flush buffered text as a progress event (newline-boundary streaming).
|
|
48
|
+
* Emits complete lines up to the last newline, keeps the partial remainder.
|
|
49
|
+
* Forces a full flush when the buffer exceeds MAX_BUFFER_SIZE.
|
|
50
|
+
*
|
|
51
|
+
* AC: @session-event-broadcast ac-newline-streaming
|
|
52
|
+
*/
|
|
53
|
+
flushBuffer(state, ctx, emit) {
|
|
54
|
+
if (state.buffer.length === 0)
|
|
55
|
+
return;
|
|
56
|
+
// Newline-boundary flush: emit complete lines, keep partial remainder
|
|
57
|
+
const lastNewline = state.buffer.lastIndexOf("\n");
|
|
58
|
+
if (lastNewline === -1) {
|
|
59
|
+
// No newline yet — check max buffer size
|
|
60
|
+
if (state.buffer.length >= MAX_BUFFER_SIZE) {
|
|
61
|
+
const text = state.buffer;
|
|
62
|
+
state.buffer = "";
|
|
63
|
+
const progressType = state.mode === "thinking" ? "thinking_progress" : "message_progress";
|
|
64
|
+
emit({ ...this.baseFields(ctx), type: progressType, text });
|
|
65
|
+
}
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// Emit everything up to and including the last newline
|
|
69
|
+
const text = state.buffer.slice(0, lastNewline + 1);
|
|
70
|
+
state.buffer = state.buffer.slice(lastNewline + 1);
|
|
71
|
+
const progressType = state.mode === "thinking" ? "thinking_progress" : "message_progress";
|
|
72
|
+
emit({ ...this.baseFields(ctx), type: progressType, text });
|
|
73
|
+
// Check if remainder exceeds max buffer
|
|
74
|
+
if (state.buffer.length >= MAX_BUFFER_SIZE) {
|
|
75
|
+
const overflow = state.buffer;
|
|
76
|
+
state.buffer = "";
|
|
77
|
+
emit({ ...this.baseFields(ctx), type: progressType, text: overflow });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Transition to a new content mode, flushing the buffer as a _complete event.
|
|
82
|
+
*
|
|
83
|
+
* AC: @session-event-broadcast ac-boundary-flush
|
|
84
|
+
*/
|
|
85
|
+
transitionMode(state, ctx, emit, newMode) {
|
|
86
|
+
if (state.mode !== "idle" && state.mode !== newMode) {
|
|
87
|
+
// Flush remaining buffer as _complete event
|
|
88
|
+
const text = state.buffer;
|
|
89
|
+
state.buffer = "";
|
|
90
|
+
const completeType = state.mode === "thinking" ? "thinking_complete" : "message_complete";
|
|
91
|
+
emit({ ...this.baseFields(ctx), type: completeType, text });
|
|
92
|
+
}
|
|
93
|
+
if (state.mode !== newMode && newMode !== "idle") {
|
|
94
|
+
// Emit _start event for the new mode
|
|
95
|
+
const startType = newMode === "thinking" ? "thinking_start" : "message_start";
|
|
96
|
+
emit({ ...this.baseFields(ctx), type: startType });
|
|
97
|
+
}
|
|
98
|
+
state.mode = newMode;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Process a SessionUpdate from ACP, emitting typed session events.
|
|
102
|
+
*
|
|
103
|
+
* This is the main entry point — replaces the old onTextChunk callback.
|
|
104
|
+
*/
|
|
105
|
+
handleUpdate(ctx, update, emit) {
|
|
106
|
+
const state = this.getState(ctx.sessionId);
|
|
107
|
+
switch (update.sessionUpdate) {
|
|
108
|
+
case "agent_message_chunk": {
|
|
109
|
+
if (update.content.type !== "text")
|
|
110
|
+
break;
|
|
111
|
+
// Transition to message mode if needed
|
|
112
|
+
if (state.mode !== "message") {
|
|
113
|
+
this.transitionMode(state, ctx, emit, "message");
|
|
114
|
+
}
|
|
115
|
+
// Accumulate text and flush at newline boundaries
|
|
116
|
+
state.buffer += update.content.text;
|
|
117
|
+
this.flushBuffer(state, ctx, emit);
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
case "agent_thought_chunk": {
|
|
121
|
+
if (update.content.type !== "text")
|
|
122
|
+
break;
|
|
123
|
+
// Transition to thinking mode if needed
|
|
124
|
+
if (state.mode !== "thinking") {
|
|
125
|
+
this.transitionMode(state, ctx, emit, "thinking");
|
|
126
|
+
}
|
|
127
|
+
// Accumulate and flush at newline boundaries
|
|
128
|
+
state.buffer += update.content.text;
|
|
129
|
+
this.flushBuffer(state, ctx, emit);
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
case "tool_call": {
|
|
133
|
+
// State transition: flush any buffered text
|
|
134
|
+
this.transitionMode(state, ctx, emit, "idle");
|
|
135
|
+
// AC: @session-event-broadcast ac-tool-input-included
|
|
136
|
+
const toolCallId = update.toolCallId;
|
|
137
|
+
const toolName = update.title;
|
|
138
|
+
const toolInput = update.rawInput ?? null;
|
|
139
|
+
// Track for duration calculation
|
|
140
|
+
state.activeToolCalls.set(toolCallId, {
|
|
141
|
+
toolName,
|
|
142
|
+
startTime: Date.now(),
|
|
143
|
+
});
|
|
144
|
+
emit({
|
|
145
|
+
...this.baseFields(ctx),
|
|
146
|
+
type: "tool_call_start",
|
|
147
|
+
tool_call_id: toolCallId,
|
|
148
|
+
tool_name: toolName,
|
|
149
|
+
tool_input: toolInput,
|
|
150
|
+
});
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
case "tool_call_update": {
|
|
154
|
+
const tcId = update.toolCallId;
|
|
155
|
+
const tracked = state.activeToolCalls.get(tcId);
|
|
156
|
+
// Only emit complete when status transitions to completed/failed
|
|
157
|
+
if (update.status && (update.status === "completed" || update.status === "failed")) {
|
|
158
|
+
const durationMs = tracked ? Date.now() - tracked.startTime : 0;
|
|
159
|
+
const toolName = tracked?.toolName ?? "";
|
|
160
|
+
state.activeToolCalls.delete(tcId);
|
|
161
|
+
emit({
|
|
162
|
+
...this.baseFields(ctx),
|
|
163
|
+
type: "tool_call_complete",
|
|
164
|
+
tool_call_id: tcId,
|
|
165
|
+
tool_name: toolName,
|
|
166
|
+
status: update.status,
|
|
167
|
+
duration_ms: durationMs,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
// Other update types (plan, usage_update, etc.) don't produce session events
|
|
173
|
+
default:
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Flush and clean up state for a session (on session end).
|
|
179
|
+
* Emits any remaining buffered text as a _complete event.
|
|
180
|
+
*/
|
|
181
|
+
endSession(ctx, emit) {
|
|
182
|
+
const state = this.sessions.get(ctx.sessionId);
|
|
183
|
+
if (!state)
|
|
184
|
+
return;
|
|
185
|
+
// Flush any remaining content
|
|
186
|
+
if (state.mode !== "idle") {
|
|
187
|
+
const text = state.buffer;
|
|
188
|
+
state.buffer = "";
|
|
189
|
+
const completeType = state.mode === "thinking" ? "thinking_complete" : "message_complete";
|
|
190
|
+
emit({ ...this.baseFields(ctx), type: completeType, text });
|
|
191
|
+
}
|
|
192
|
+
this.sessions.delete(ctx.sessionId);
|
|
193
|
+
}
|
|
194
|
+
/** Check if a session is currently being tracked. */
|
|
195
|
+
hasSession(sessionId) {
|
|
196
|
+
return this.sessions.has(sessionId);
|
|
197
|
+
}
|
|
198
|
+
/** Get the number of tracked sessions. */
|
|
199
|
+
get sessionCount() {
|
|
200
|
+
return this.sessions.size;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=session-event-accumulator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-event-accumulator.js","sourceRoot":"","sources":["../../src/agent-runtime/session-event-accumulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Event Broadcast Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for typed session lifecycle events broadcast over WebSocket.
|
|
5
|
+
* These are the canonical definitions used by the event accumulator (producer).
|
|
6
|
+
* The @kynetic-ai/shared package re-exports equivalent types for consumers
|
|
7
|
+
* (daemon, web-ui).
|
|
8
|
+
*
|
|
9
|
+
* AC: @session-event-broadcast ac-newline-streaming, ac-boundary-flush,
|
|
10
|
+
* ac-per-session-state, ac-tool-input-included, ac-replaces-text-chunks
|
|
11
|
+
*/
|
|
12
|
+
/** Common fields shared by all session event broadcast payloads. */
|
|
13
|
+
export interface SessionEventBase {
|
|
14
|
+
session_id: string;
|
|
15
|
+
agent_id: string;
|
|
16
|
+
task_id: string | null;
|
|
17
|
+
task_title: string | null;
|
|
18
|
+
timestamp: number;
|
|
19
|
+
}
|
|
20
|
+
/** Agent started composing a message. */
|
|
21
|
+
export interface MessageStartEventData extends SessionEventBase {
|
|
22
|
+
type: "message_start";
|
|
23
|
+
}
|
|
24
|
+
/** Flushed text lines from agent message output (newline-boundary streaming). */
|
|
25
|
+
export interface MessageProgressEventData extends SessionEventBase {
|
|
26
|
+
type: "message_progress";
|
|
27
|
+
text: string;
|
|
28
|
+
}
|
|
29
|
+
/** Agent message completed (remaining buffer flushed on state transition). */
|
|
30
|
+
export interface MessageCompleteEventData extends SessionEventBase {
|
|
31
|
+
type: "message_complete";
|
|
32
|
+
text: string;
|
|
33
|
+
}
|
|
34
|
+
/** Agent started emitting thinking/reasoning content. */
|
|
35
|
+
export interface ThinkingStartEventData extends SessionEventBase {
|
|
36
|
+
type: "thinking_start";
|
|
37
|
+
}
|
|
38
|
+
/** Flushed text lines from agent thinking output. */
|
|
39
|
+
export interface ThinkingProgressEventData extends SessionEventBase {
|
|
40
|
+
type: "thinking_progress";
|
|
41
|
+
text: string;
|
|
42
|
+
}
|
|
43
|
+
/** Agent thinking completed (remaining buffer flushed). */
|
|
44
|
+
export interface ThinkingCompleteEventData extends SessionEventBase {
|
|
45
|
+
type: "thinking_complete";
|
|
46
|
+
text: string;
|
|
47
|
+
}
|
|
48
|
+
/** Agent initiated a tool call. Includes tool name and input; output excluded. */
|
|
49
|
+
export interface ToolCallStartEventData extends SessionEventBase {
|
|
50
|
+
type: "tool_call_start";
|
|
51
|
+
tool_call_id: string;
|
|
52
|
+
tool_name: string;
|
|
53
|
+
tool_input: unknown;
|
|
54
|
+
}
|
|
55
|
+
/** Tool call finished. Includes status and duration; output excluded. */
|
|
56
|
+
export interface ToolCallCompleteEventData extends SessionEventBase {
|
|
57
|
+
type: "tool_call_complete";
|
|
58
|
+
tool_call_id: string;
|
|
59
|
+
tool_name: string;
|
|
60
|
+
status: string;
|
|
61
|
+
duration_ms: number;
|
|
62
|
+
}
|
|
63
|
+
/** Union of all typed session event payloads. */
|
|
64
|
+
export type SessionEventData = MessageStartEventData | MessageProgressEventData | MessageCompleteEventData | ThinkingStartEventData | ThinkingProgressEventData | ThinkingCompleteEventData | ToolCallStartEventData | ToolCallCompleteEventData;
|
|
65
|
+
/** All possible `event` field values for session events on the 'agents' topic. */
|
|
66
|
+
export type SessionEventType = SessionEventData["type"];
|
|
67
|
+
//# sourceMappingURL=session-event-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-event-types.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/session-event-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,yCAAyC;AACzC,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,iFAAiF;AACjF,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAChE,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8EAA8E;AAC9E,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAChE,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,yDAAyD;AACzD,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,qDAAqD;AACrD,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IACjE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,2DAA2D;AAC3D,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IACjE,IAAI,EAAE,mBAAmB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,kFAAkF;AAClF,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,IAAI,EAAE,iBAAiB,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,yEAAyE;AACzE,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IACjE,IAAI,EAAE,oBAAoB,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,iDAAiD;AACjD,MAAM,MAAM,gBAAgB,GACxB,qBAAqB,GACrB,wBAAwB,GACxB,wBAAwB,GACxB,sBAAsB,GACtB,yBAAyB,GACzB,yBAAyB,GACzB,sBAAsB,GACtB,yBAAyB,CAAC;AAE9B,kFAAkF;AAClF,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Event Broadcast Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for typed session lifecycle events broadcast over WebSocket.
|
|
5
|
+
* These are the canonical definitions used by the event accumulator (producer).
|
|
6
|
+
* The @kynetic-ai/shared package re-exports equivalent types for consumers
|
|
7
|
+
* (daemon, web-ui).
|
|
8
|
+
*
|
|
9
|
+
* AC: @session-event-broadcast ac-newline-streaming, ac-boundary-flush,
|
|
10
|
+
* ac-per-session-state, ac-tool-input-included, ac-replaces-text-chunks
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=session-event-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-event-types.js","sourceRoot":"","sources":["../../src/agent-runtime/session-event-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import type { DispatchWorkspaceBootstrapState, DispatchWorkspaceBootstrapRoleState, DispatchWorkspaceBootstrapStepResult, DispatchWorkspaceBranchProvenance, DispatchWorkspaceCleanupState as RegistryCleanupState, DispatchWorkspaceHealthState, DispatchWorkspaceIntegrationState as RegistryIntegrationRecord, DispatchWorkspaceIntegrationStatus, DispatchWorkspaceIntegrationOutcome as RegistryIntegrationOutcome, DispatchWorkspaceLifecycleState, DispatchWorkspacePublicationMode as RegistryPublicationMode, DispatchWorkspaceRecord, DispatchWorkspaceRole as RegistryRole } from "../schema/index.js";
|
|
2
|
+
export interface ResolvedDispatchWorkspaceConfig {
|
|
3
|
+
baseBranch: string;
|
|
4
|
+
baseBranchStartPoint: string;
|
|
5
|
+
baseBranchSource: "configured" | "remote-head" | "current-branch" | "default";
|
|
6
|
+
worktreeRoot: string;
|
|
7
|
+
publicationMode: "pull_request" | "manual_merge" | "auto";
|
|
8
|
+
}
|
|
9
|
+
export interface DispatchWorkspaceMetadata {
|
|
10
|
+
workspaceId: string;
|
|
11
|
+
taskRef: string;
|
|
12
|
+
taskSlug: string;
|
|
13
|
+
baseBranch: string;
|
|
14
|
+
baseBranchPoint: string;
|
|
15
|
+
mergeTargetBranch: string;
|
|
16
|
+
integrationTargetBranch: string;
|
|
17
|
+
integrationTargetCommit: string;
|
|
18
|
+
canonicalBranch: string;
|
|
19
|
+
canonicalBranchHead: string;
|
|
20
|
+
branchProvenance: DispatchWorkspaceBranchProvenance;
|
|
21
|
+
publicationMode: DispatchWorkspacePublicationMode;
|
|
22
|
+
integrationState: DispatchWorkspaceIntegrationState;
|
|
23
|
+
integrationOutcome: DispatchWorkspaceIntegrationOutcome;
|
|
24
|
+
integrationUpdatedAt: string;
|
|
25
|
+
worktreeRoot: string;
|
|
26
|
+
workerWorktreeDir: string;
|
|
27
|
+
reviewerWorktreeDir: string | null;
|
|
28
|
+
lifecycleState: DispatchWorkspaceLifecycleState;
|
|
29
|
+
activeRole: RegistryRole | null;
|
|
30
|
+
bootstrapState: DispatchWorkspaceBootstrapState;
|
|
31
|
+
healthState: DispatchWorkspaceHealthState;
|
|
32
|
+
cleanupState: RegistryCleanupState;
|
|
33
|
+
healthStatus: "healthy" | "unhealthy";
|
|
34
|
+
healthReason: string | null;
|
|
35
|
+
bootstrap: DispatchWorkspaceBootstrapState;
|
|
36
|
+
cleanupEligible: boolean;
|
|
37
|
+
cleanupReason: string | null;
|
|
38
|
+
cleanupScheduledAt: string | null;
|
|
39
|
+
cleanupBlockedReason: string | null;
|
|
40
|
+
createdAt: string;
|
|
41
|
+
updatedAt: string;
|
|
42
|
+
lastReconciledAt: string | null;
|
|
43
|
+
lastActiveAt: string | null;
|
|
44
|
+
closedAt: string | null;
|
|
45
|
+
}
|
|
46
|
+
export interface DispatchWorkspaceHealth {
|
|
47
|
+
exists: boolean;
|
|
48
|
+
healthy: boolean;
|
|
49
|
+
reason: string | null;
|
|
50
|
+
metadata: DispatchWorkspaceMetadata | null;
|
|
51
|
+
}
|
|
52
|
+
export type DispatchWorkspaceRole = "worker" | "reviewer";
|
|
53
|
+
export type DispatchWorkspacePublicationMode = RegistryPublicationMode;
|
|
54
|
+
export type DispatchWorkspaceIntegrationState = DispatchWorkspaceIntegrationStatus;
|
|
55
|
+
export type DispatchWorkspaceIntegrationOutcome = RegistryIntegrationOutcome;
|
|
56
|
+
export type { DispatchWorkspaceBootstrapRoleState, DispatchWorkspaceBootstrapStepResult };
|
|
57
|
+
export declare function getDispatchShadowMutationLockPath(projectDir: string): string;
|
|
58
|
+
export declare function normalizeDispatchBootstrapState(bootstrap?: Partial<DispatchWorkspaceBootstrapState> | null): DispatchWorkspaceBootstrapState;
|
|
59
|
+
export interface ProvisionDispatchWorkspaceOptions {
|
|
60
|
+
projectDir: string;
|
|
61
|
+
taskRef: string;
|
|
62
|
+
role?: DispatchWorkspaceRole;
|
|
63
|
+
cleanupState?: ResolveDispatchWorkspaceCleanupStateOptions;
|
|
64
|
+
task?: {
|
|
65
|
+
title?: string;
|
|
66
|
+
slugs?: string[];
|
|
67
|
+
};
|
|
68
|
+
/** Submission linkage from the task, used to adopt an existing branch when no workspace record exists. */
|
|
69
|
+
submissionLinkage?: {
|
|
70
|
+
branch: string | null;
|
|
71
|
+
commit: string;
|
|
72
|
+
remote?: string | null;
|
|
73
|
+
remote_url?: string | null;
|
|
74
|
+
upstream_ref?: string | null;
|
|
75
|
+
review_url?: string | null;
|
|
76
|
+
captured_at: string;
|
|
77
|
+
} | null;
|
|
78
|
+
/**
|
|
79
|
+
* The task status that triggered provisioning. Used to determine
|
|
80
|
+
* whether adoption is required (pending_review, needs_work) vs optional.
|
|
81
|
+
*/
|
|
82
|
+
taskStatus?: string;
|
|
83
|
+
}
|
|
84
|
+
export interface ProvisionedDispatchWorkspace {
|
|
85
|
+
cwd: string;
|
|
86
|
+
metadataPath: string;
|
|
87
|
+
metadata: DispatchWorkspaceMetadata;
|
|
88
|
+
}
|
|
89
|
+
export interface DispatchWorkspaceCleanupState {
|
|
90
|
+
cleanupEligible: boolean;
|
|
91
|
+
cleanupReason: string | null;
|
|
92
|
+
}
|
|
93
|
+
export interface DispatchWorkspaceReapResult {
|
|
94
|
+
taskRef: string;
|
|
95
|
+
action: "none" | "reviewer_cleaned" | "reaped" | "cleanup_blocked";
|
|
96
|
+
blockedReason: string | null;
|
|
97
|
+
}
|
|
98
|
+
export interface ResolveDispatchWorkspaceCleanupStateOptions {
|
|
99
|
+
integrationState?: "pending" | "in_progress" | "merged" | "abandoned" | "reset" | null;
|
|
100
|
+
taskStatus?: "pending" | "in_progress" | "needs_work" | "pending_review" | "blocked" | "completed" | "cancelled" | null;
|
|
101
|
+
}
|
|
102
|
+
export interface ReconcileDispatchWorkspaceLifecycleOptions {
|
|
103
|
+
projectDir: string;
|
|
104
|
+
taskRef: string;
|
|
105
|
+
cleanupState: ResolveDispatchWorkspaceCleanupStateOptions;
|
|
106
|
+
task?: {
|
|
107
|
+
title?: string;
|
|
108
|
+
slugs?: string[];
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export declare class DispatchWorkspaceError extends Error {
|
|
112
|
+
suggestion: string;
|
|
113
|
+
constructor(message: string, suggestion: string);
|
|
114
|
+
}
|
|
115
|
+
export declare function persistDispatchWorkspaceMetadata(projectDir: string, metadata: DispatchWorkspaceMetadata): Promise<string>;
|
|
116
|
+
export declare function resolveDispatchWorkspaceConfig(projectDir: string): Promise<ResolvedDispatchWorkspaceConfig>;
|
|
117
|
+
export declare function resolveDispatchWorkspaceCleanupState(options: ResolveDispatchWorkspaceCleanupStateOptions): DispatchWorkspaceCleanupState;
|
|
118
|
+
/**
|
|
119
|
+
* Determine whether the computed reconciliation state differs from the
|
|
120
|
+
* existing persisted record in any meaningful field. Timestamps are NOT
|
|
121
|
+
* considered meaningful triggers — they are consequences of real changes.
|
|
122
|
+
*
|
|
123
|
+
* Fields compared (meaningful):
|
|
124
|
+
* - canonical_branch_head
|
|
125
|
+
* - lifecycle_state
|
|
126
|
+
* - active_role
|
|
127
|
+
* - health (deep compare, excluding updated_at)
|
|
128
|
+
* - cleanup (deep compare, excluding updated_at)
|
|
129
|
+
* - integration (deep compare, excluding updated_at)
|
|
130
|
+
*
|
|
131
|
+
* AC: @dispatch-workspace-registry ac-10
|
|
132
|
+
*/
|
|
133
|
+
export declare function isWorkspaceRecordDirty(existing: DispatchWorkspaceRecord, computed: {
|
|
134
|
+
canonical_branch_head: string;
|
|
135
|
+
lifecycle_state: DispatchWorkspaceLifecycleState;
|
|
136
|
+
active_role: RegistryRole | null;
|
|
137
|
+
health: DispatchWorkspaceHealthState;
|
|
138
|
+
cleanup: RegistryCleanupState;
|
|
139
|
+
integration: RegistryIntegrationRecord;
|
|
140
|
+
}): boolean;
|
|
141
|
+
export declare function reconcileDispatchWorkspaceRegistry(projectDir: string, taskStatusByRef?: Map<string, ResolveDispatchWorkspaceCleanupStateOptions["taskStatus"]>, activeRoleByTaskRef?: Map<string, RegistryRole>): Promise<void>;
|
|
142
|
+
export declare function reconcileDispatchWorkspaceLifecycle(options: ReconcileDispatchWorkspaceLifecycleOptions): Promise<ProvisionedDispatchWorkspace | null>;
|
|
143
|
+
export declare function cleanupReviewerDispatchWorkspace(projectDir: string, taskRef: string, task?: {
|
|
144
|
+
title?: string;
|
|
145
|
+
slugs?: string[];
|
|
146
|
+
}): Promise<DispatchWorkspaceReapResult>;
|
|
147
|
+
export declare function reapDispatchWorkspace(projectDir: string, taskRef: string, options?: {
|
|
148
|
+
activeTaskRefs?: Iterable<string>;
|
|
149
|
+
task?: {
|
|
150
|
+
title?: string;
|
|
151
|
+
slugs?: string[];
|
|
152
|
+
};
|
|
153
|
+
}): Promise<DispatchWorkspaceReapResult>;
|
|
154
|
+
export declare function reconcileDispatchWorkspaceArtifacts(projectDir: string, options?: {
|
|
155
|
+
activeTaskRefs?: Iterable<string>;
|
|
156
|
+
}): Promise<void>;
|
|
157
|
+
export declare function provisionDispatchWorkspace(options: ProvisionDispatchWorkspaceOptions): Promise<ProvisionedDispatchWorkspace>;
|
|
158
|
+
export declare function markDispatchWorkspaceActive(options: {
|
|
159
|
+
projectDir: string;
|
|
160
|
+
taskRef: string;
|
|
161
|
+
role: DispatchWorkspaceRole;
|
|
162
|
+
}): Promise<ProvisionedDispatchWorkspace | null>;
|
|
163
|
+
export declare function markDispatchWorkspaceIdle(options: {
|
|
164
|
+
projectDir: string;
|
|
165
|
+
taskRef: string;
|
|
166
|
+
taskStatus: ResolveDispatchWorkspaceCleanupStateOptions["taskStatus"] | null;
|
|
167
|
+
}): Promise<ProvisionedDispatchWorkspace | null>;
|
|
168
|
+
export declare function getDispatchWorkspaceHealth(options: ProvisionDispatchWorkspaceOptions): Promise<DispatchWorkspaceHealth>;
|
|
169
|
+
/**
|
|
170
|
+
* Result of workspace discovery attempt for review or fix-cycle tasks.
|
|
171
|
+
*
|
|
172
|
+
* AC: @review-and-fix-cycle-workspace-discovery-before-discard ac-1 through ac-4
|
|
173
|
+
*/
|
|
174
|
+
export interface WorkspaceDiscoveryResult {
|
|
175
|
+
/** Whether a recoverable workspace was found. */
|
|
176
|
+
recovered: boolean;
|
|
177
|
+
/** Source that provided recovery, if any. */
|
|
178
|
+
recoverySource: "registry-state" | "metadata-backed-worktree" | "task-submission-linkage" | "remote-or-review-locator" | null;
|
|
179
|
+
/** Updated health after recovery attempt. */
|
|
180
|
+
health: DispatchWorkspaceHealth;
|
|
181
|
+
/** Diagnostics when recovery fails — task-linked messages with guidance. */
|
|
182
|
+
diagnostics: WorkspaceDiscoveryDiagnostic[];
|
|
183
|
+
/** When multiple branch signals conflict, details of the conflict. */
|
|
184
|
+
conflictingSignals: BranchSignal[] | null;
|
|
185
|
+
}
|
|
186
|
+
export interface WorkspaceDiscoveryDiagnostic {
|
|
187
|
+
taskRef: string;
|
|
188
|
+
code: string;
|
|
189
|
+
message: string;
|
|
190
|
+
suggestion: string;
|
|
191
|
+
}
|
|
192
|
+
export interface BranchSignal {
|
|
193
|
+
source: string;
|
|
194
|
+
branch: string;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Submission linkage shape for discovery. Matches the SubmissionLinkage type
|
|
198
|
+
* from schema/common.ts but defined here to avoid circular imports.
|
|
199
|
+
*/
|
|
200
|
+
interface DiscoverySubmissionLinkage {
|
|
201
|
+
branch: string | null;
|
|
202
|
+
commit: string;
|
|
203
|
+
remote?: string | null;
|
|
204
|
+
remote_url?: string | null;
|
|
205
|
+
upstream_ref?: string | null;
|
|
206
|
+
review_url?: string | null;
|
|
207
|
+
captured_at: string;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Attempt workspace discovery and recovery for a `pending_review` or
|
|
211
|
+
* `needs_work` dispatch entry that has no healthy local workspace candidate.
|
|
212
|
+
*
|
|
213
|
+
* Applies explicit precedence ordering (AC-4):
|
|
214
|
+
* 1. Existing registry state
|
|
215
|
+
* 2. Metadata-backed worktrees
|
|
216
|
+
* 3. Recorded task submission linkage
|
|
217
|
+
* 4. Remote or review-derived discovery
|
|
218
|
+
*
|
|
219
|
+
* If recovery succeeds, the workspace is adopted or re-registered so normal
|
|
220
|
+
* provisioning can proceed (AC-2).
|
|
221
|
+
*
|
|
222
|
+
* If no trustworthy recovery path exists, returns structured diagnostics
|
|
223
|
+
* with task-linked recovery guidance (AC-3).
|
|
224
|
+
*
|
|
225
|
+
* When multiple branch signals exist and cannot be reconciled, blocks with
|
|
226
|
+
* diagnostics rather than guessing (AC-4).
|
|
227
|
+
*
|
|
228
|
+
* AC: @review-and-fix-cycle-workspace-discovery-before-discard ac-1
|
|
229
|
+
* AC: @review-and-fix-cycle-workspace-discovery-before-discard ac-2
|
|
230
|
+
* AC: @review-and-fix-cycle-workspace-discovery-before-discard ac-3
|
|
231
|
+
* AC: @review-and-fix-cycle-workspace-discovery-before-discard ac-4
|
|
232
|
+
*/
|
|
233
|
+
export declare function discoverWorkspaceForReviewOrFixCycle(options: {
|
|
234
|
+
projectDir: string;
|
|
235
|
+
taskRef: string;
|
|
236
|
+
role?: DispatchWorkspaceRole;
|
|
237
|
+
task?: {
|
|
238
|
+
title?: string;
|
|
239
|
+
slugs?: string[];
|
|
240
|
+
submission_linkage?: DiscoverySubmissionLinkage | null;
|
|
241
|
+
review_url?: string;
|
|
242
|
+
};
|
|
243
|
+
}): Promise<WorkspaceDiscoveryResult>;
|
|
244
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/agent-runtime/workspace.ts"],"names":[],"mappings":"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"}
|