@kynetic-ai/spec 0.1.2 → 0.3.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 +250 -17
- package/dist/acp/client.d.ts +18 -4
- package/dist/acp/client.d.ts.map +1 -1
- package/dist/acp/client.js +44 -26
- package/dist/acp/client.js.map +1 -1
- package/dist/acp/framing.d.ts +2 -2
- package/dist/acp/framing.d.ts.map +1 -1
- package/dist/acp/framing.js +37 -29
- package/dist/acp/framing.js.map +1 -1
- package/dist/acp/index.d.ts +6 -7
- package/dist/acp/index.d.ts.map +1 -1
- package/dist/acp/index.js +3 -3
- package/dist/acp/index.js.map +1 -1
- package/dist/acp/types.d.ts +5 -5
- package/dist/acp/types.d.ts.map +1 -1
- package/dist/acp/types.js +18 -18
- package/dist/acp/types.js.map +1 -1
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/adapters.js +24 -13
- package/dist/agents/adapters.js.map +1 -1
- package/dist/agents/index.d.ts +2 -2
- package/dist/agents/index.js +2 -2
- package/dist/agents/spawner.d.ts +4 -4
- package/dist/agents/spawner.d.ts.map +1 -1
- package/dist/agents/spawner.js +6 -6
- package/dist/agents/spawner.js.map +1 -1
- package/dist/cli/batch-context.d.ts +43 -0
- package/dist/cli/batch-context.d.ts.map +1 -0
- package/dist/cli/batch-context.js +93 -0
- package/dist/cli/batch-context.js.map +1 -0
- package/dist/cli/batch-exec.d.ts +116 -0
- package/dist/cli/batch-exec.d.ts.map +1 -0
- package/dist/cli/batch-exec.js +694 -0
- package/dist/cli/batch-exec.js.map +1 -0
- package/dist/cli/batch.d.ts +4 -2
- package/dist/cli/batch.d.ts.map +1 -1
- package/dist/cli/batch.js +15 -14
- package/dist/cli/batch.js.map +1 -1
- package/dist/cli/command-annotations.d.ts +23 -0
- package/dist/cli/command-annotations.d.ts.map +1 -0
- package/dist/cli/command-annotations.js +27 -0
- package/dist/cli/command-annotations.js.map +1 -0
- package/dist/cli/commands/agents.d.ts +46 -0
- package/dist/cli/commands/agents.d.ts.map +1 -0
- package/dist/cli/commands/agents.js +377 -0
- package/dist/cli/commands/agents.js.map +1 -0
- package/dist/cli/commands/batch.d.ts +20 -0
- package/dist/cli/commands/batch.d.ts.map +1 -0
- package/dist/cli/commands/batch.js +214 -0
- package/dist/cli/commands/batch.js.map +1 -0
- package/dist/cli/commands/clone-for-testing.d.ts +1 -1
- package/dist/cli/commands/clone-for-testing.d.ts.map +1 -1
- package/dist/cli/commands/clone-for-testing.js +37 -47
- package/dist/cli/commands/clone-for-testing.js.map +1 -1
- package/dist/cli/commands/derive.d.ts +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +140 -88
- package/dist/cli/commands/derive.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +11 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +152 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/export.d.ts +12 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +134 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/help.d.ts +1 -1
- package/dist/cli/commands/help.d.ts.map +1 -1
- package/dist/cli/commands/help.js +163 -37
- package/dist/cli/commands/help.js.map +1 -1
- package/dist/cli/commands/inbox.d.ts +1 -1
- package/dist/cli/commands/inbox.d.ts.map +1 -1
- package/dist/cli/commands/inbox.js +178 -56
- package/dist/cli/commands/inbox.js.map +1 -1
- package/dist/cli/commands/index.d.ts +31 -19
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +31 -19
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts +5 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +108 -57
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/item.d.ts +1 -1
- package/dist/cli/commands/item.d.ts.map +1 -1
- package/dist/cli/commands/item.js +557 -274
- package/dist/cli/commands/item.js.map +1 -1
- package/dist/cli/commands/link.d.ts +1 -1
- package/dist/cli/commands/link.d.ts.map +1 -1
- package/dist/cli/commands/link.js +55 -46
- package/dist/cli/commands/link.js.map +1 -1
- package/dist/cli/commands/log.d.ts +1 -1
- package/dist/cli/commands/log.d.ts.map +1 -1
- package/dist/cli/commands/log.js +57 -51
- package/dist/cli/commands/log.js.map +1 -1
- package/dist/cli/commands/merge-driver.d.ts +19 -0
- package/dist/cli/commands/merge-driver.d.ts.map +1 -0
- package/dist/cli/commands/merge-driver.js +398 -0
- package/dist/cli/commands/merge-driver.js.map +1 -0
- package/dist/cli/commands/meta.d.ts +1 -1
- package/dist/cli/commands/meta.d.ts.map +1 -1
- package/dist/cli/commands/meta.js +533 -399
- package/dist/cli/commands/meta.js.map +1 -1
- package/dist/cli/commands/module.d.ts +1 -1
- package/dist/cli/commands/module.d.ts.map +1 -1
- package/dist/cli/commands/module.js +30 -25
- package/dist/cli/commands/module.js.map +1 -1
- package/dist/cli/commands/plan-import.d.ts +11 -0
- package/dist/cli/commands/plan-import.d.ts.map +1 -0
- package/dist/cli/commands/plan-import.js +516 -0
- package/dist/cli/commands/plan-import.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +10 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +421 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/ralph.d.ts +1 -1
- package/dist/cli/commands/ralph.d.ts.map +1 -1
- package/dist/cli/commands/ralph.js +1097 -169
- package/dist/cli/commands/ralph.js.map +1 -1
- package/dist/cli/commands/refs.d.ts +13 -0
- package/dist/cli/commands/refs.d.ts.map +1 -0
- package/dist/cli/commands/refs.js +283 -0
- package/dist/cli/commands/refs.js.map +1 -0
- package/dist/cli/commands/search.d.ts +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +199 -37
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/serve.d.ts +10 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +491 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/session.d.ts +25 -6
- package/dist/cli/commands/session.d.ts.map +1 -1
- package/dist/cli/commands/session.js +811 -127
- package/dist/cli/commands/session.js.map +1 -1
- package/dist/cli/commands/setup-seeding.d.ts +81 -0
- package/dist/cli/commands/setup-seeding.d.ts.map +1 -0
- package/dist/cli/commands/setup-seeding.js +292 -0
- package/dist/cli/commands/setup-seeding.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +77 -3
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +1233 -274
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/shadow.d.ts +1 -1
- package/dist/cli/commands/shadow.d.ts.map +1 -1
- package/dist/cli/commands/shadow.js +70 -50
- package/dist/cli/commands/shadow.js.map +1 -1
- package/dist/cli/commands/skill-crud.d.ts +58 -0
- package/dist/cli/commands/skill-crud.d.ts.map +1 -0
- package/dist/cli/commands/skill-crud.js +753 -0
- package/dist/cli/commands/skill-crud.js.map +1 -0
- package/dist/cli/commands/skill-diff.d.ts +27 -0
- package/dist/cli/commands/skill-diff.d.ts.map +1 -0
- package/dist/cli/commands/skill-diff.js +840 -0
- package/dist/cli/commands/skill-diff.js.map +1 -0
- package/dist/cli/commands/skill-install.d.ts +53 -0
- package/dist/cli/commands/skill-install.d.ts.map +1 -0
- package/dist/cli/commands/skill-install.js +452 -0
- package/dist/cli/commands/skill-install.js.map +1 -0
- package/dist/cli/commands/skill.d.ts +20 -0
- package/dist/cli/commands/skill.d.ts.map +1 -0
- package/dist/cli/commands/skill.js +36 -0
- package/dist/cli/commands/skill.js.map +1 -0
- package/dist/cli/commands/task.d.ts +1 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +569 -346
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/tasks.d.ts +26 -1
- package/dist/cli/commands/tasks.d.ts.map +1 -1
- package/dist/cli/commands/tasks.js +227 -122
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/commands/trait.d.ts +1 -1
- package/dist/cli/commands/trait.d.ts.map +1 -1
- package/dist/cli/commands/trait.js +166 -101
- package/dist/cli/commands/trait.js.map +1 -1
- package/dist/cli/commands/triage.d.ts +7 -0
- package/dist/cli/commands/triage.d.ts.map +1 -0
- package/dist/cli/commands/triage.js +569 -0
- package/dist/cli/commands/triage.js.map +1 -0
- package/dist/cli/commands/util.d.ts +7 -0
- package/dist/cli/commands/util.d.ts.map +1 -0
- package/dist/cli/commands/util.js +30 -0
- package/dist/cli/commands/util.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +264 -83
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts +16 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +851 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/exit-codes.d.ts +7 -0
- package/dist/cli/exit-codes.d.ts.map +1 -1
- package/dist/cli/exit-codes.js +26 -18
- package/dist/cli/exit-codes.js.map +1 -1
- package/dist/cli/help/content.d.ts.map +1 -1
- package/dist/cli/help/content.js +86 -71
- package/dist/cli/help/content.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +131 -19
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/introspection.d.ts +6 -2
- package/dist/cli/introspection.d.ts.map +1 -1
- package/dist/cli/introspection.js +11 -8
- package/dist/cli/introspection.js.map +1 -1
- package/dist/cli/output.d.ts +64 -4
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +235 -85
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/parse-utils.d.ts +21 -0
- package/dist/cli/parse-utils.d.ts.map +1 -0
- package/dist/cli/parse-utils.js +32 -0
- package/dist/cli/parse-utils.js.map +1 -0
- package/dist/cli/pid-utils.d.ts +72 -0
- package/dist/cli/pid-utils.d.ts.map +1 -0
- package/dist/cli/pid-utils.js +174 -0
- package/dist/cli/pid-utils.js.map +1 -0
- package/dist/cli/suggest.d.ts.map +1 -1
- package/dist/cli/suggest.js +1 -2
- package/dist/cli/suggest.js.map +1 -1
- package/dist/cli/validators.d.ts +43 -0
- package/dist/cli/validators.d.ts.map +1 -0
- package/dist/cli/validators.js +84 -0
- package/dist/cli/validators.js.map +1 -0
- package/dist/daemon/index.ts +52 -0
- package/dist/daemon/middleware/project-context.ts +126 -0
- package/dist/daemon/pid.ts +179 -0
- package/dist/daemon/project-context.ts +343 -0
- package/dist/daemon/routes/inbox.ts +164 -0
- package/dist/daemon/routes/items.ts +322 -0
- package/dist/daemon/routes/meta.ts +118 -0
- package/dist/daemon/routes/projects.ts +162 -0
- package/dist/daemon/routes/tasks.ts +327 -0
- package/dist/daemon/routes/triage.ts +468 -0
- package/dist/daemon/routes/validation.ts +248 -0
- package/dist/daemon/server.ts +408 -0
- package/dist/daemon/watcher.ts +195 -0
- package/dist/daemon/websocket/handler.ts +138 -0
- package/dist/daemon/websocket/heartbeat.ts +71 -0
- package/dist/daemon/websocket/pubsub.ts +125 -0
- package/dist/daemon/websocket/types.ts +66 -0
- package/dist/export/html.d.ts +19 -0
- package/dist/export/html.d.ts.map +1 -0
- package/dist/export/html.js +239 -0
- package/dist/export/html.js.map +1 -0
- package/dist/export/index.d.ts +10 -0
- package/dist/export/index.d.ts.map +1 -0
- package/dist/export/index.js +10 -0
- package/dist/export/index.js.map +1 -0
- package/dist/export/json.d.ts +24 -0
- package/dist/export/json.d.ts.map +1 -0
- package/dist/export/json.js +198 -0
- package/dist/export/json.js.map +1 -0
- package/dist/export/triage.d.ts +51 -0
- package/dist/export/triage.d.ts.map +1 -0
- package/dist/export/triage.js +83 -0
- package/dist/export/triage.js.map +1 -0
- package/dist/export/types.d.ts +122 -0
- package/dist/export/types.d.ts.map +1 -0
- package/dist/export/types.js +9 -0
- package/dist/export/types.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/lib/claude-plugin-registry.d.ts +66 -0
- package/dist/lib/claude-plugin-registry.d.ts.map +1 -0
- package/dist/lib/claude-plugin-registry.js +318 -0
- package/dist/lib/claude-plugin-registry.js.map +1 -0
- package/dist/merge/arrays.d.ts +87 -0
- package/dist/merge/arrays.d.ts.map +1 -0
- package/dist/merge/arrays.js +164 -0
- package/dist/merge/arrays.js.map +1 -0
- package/dist/merge/file-type.d.ts +32 -0
- package/dist/merge/file-type.d.ts.map +1 -0
- package/dist/merge/file-type.js +70 -0
- package/dist/merge/file-type.js.map +1 -0
- package/dist/merge/index.d.ts +14 -0
- package/dist/merge/index.d.ts.map +1 -0
- package/dist/merge/index.js +11 -0
- package/dist/merge/index.js.map +1 -0
- package/dist/merge/objects.d.ts +46 -0
- package/dist/merge/objects.d.ts.map +1 -0
- package/dist/merge/objects.js +193 -0
- package/dist/merge/objects.js.map +1 -0
- package/dist/merge/parse.d.ts +23 -0
- package/dist/merge/parse.d.ts.map +1 -0
- package/dist/merge/parse.js +78 -0
- package/dist/merge/parse.js.map +1 -0
- package/dist/merge/resolve.d.ts +66 -0
- package/dist/merge/resolve.d.ts.map +1 -0
- package/dist/merge/resolve.js +189 -0
- package/dist/merge/resolve.js.map +1 -0
- package/dist/merge/types.d.ts +82 -0
- package/dist/merge/types.d.ts.map +1 -0
- package/dist/merge/types.js +8 -0
- package/dist/merge/types.js.map +1 -0
- package/dist/parser/agent-data-sections.d.ts +53 -0
- package/dist/parser/agent-data-sections.d.ts.map +1 -0
- package/dist/parser/agent-data-sections.js +118 -0
- package/dist/parser/agent-data-sections.js.map +1 -0
- package/dist/parser/alignment.d.ts +4 -4
- package/dist/parser/alignment.d.ts.map +1 -1
- package/dist/parser/alignment.js +27 -22
- package/dist/parser/alignment.js.map +1 -1
- package/dist/parser/assess.d.ts +5 -5
- package/dist/parser/assess.d.ts.map +1 -1
- package/dist/parser/assess.js +36 -32
- package/dist/parser/assess.js.map +1 -1
- package/dist/parser/config.d.ts +351 -0
- package/dist/parser/config.d.ts.map +1 -0
- package/dist/parser/config.js +326 -0
- package/dist/parser/config.js.map +1 -0
- package/dist/parser/convention-validation.d.ts +1 -1
- package/dist/parser/convention-validation.d.ts.map +1 -1
- package/dist/parser/convention-validation.js +21 -16
- package/dist/parser/convention-validation.js.map +1 -1
- package/dist/parser/coverage-cache.d.ts +49 -0
- package/dist/parser/coverage-cache.d.ts.map +1 -0
- package/dist/parser/coverage-cache.js +123 -0
- package/dist/parser/coverage-cache.js.map +1 -0
- package/dist/parser/daemon-status.d.ts +37 -0
- package/dist/parser/daemon-status.d.ts.map +1 -0
- package/dist/parser/daemon-status.js +67 -0
- package/dist/parser/daemon-status.js.map +1 -0
- package/dist/parser/doctor.d.ts +107 -0
- package/dist/parser/doctor.d.ts.map +1 -0
- package/dist/parser/doctor.js +366 -0
- package/dist/parser/doctor.js.map +1 -0
- package/dist/parser/fix.d.ts +1 -1
- package/dist/parser/fix.d.ts.map +1 -1
- package/dist/parser/fix.js +31 -27
- package/dist/parser/fix.js.map +1 -1
- package/dist/parser/index.d.ts +16 -11
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +16 -11
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/items.d.ts +8 -2
- package/dist/parser/items.d.ts.map +1 -1
- package/dist/parser/items.js +71 -35
- package/dist/parser/items.js.map +1 -1
- package/dist/parser/meta.d.ts +167 -9
- package/dist/parser/meta.d.ts.map +1 -1
- package/dist/parser/meta.js +379 -46
- package/dist/parser/meta.js.map +1 -1
- package/dist/parser/plan-document.d.ts +189 -0
- package/dist/parser/plan-document.d.ts.map +1 -0
- package/dist/parser/plan-document.js +340 -0
- package/dist/parser/plan-document.js.map +1 -0
- package/dist/parser/plans.d.ts +59 -0
- package/dist/parser/plans.d.ts.map +1 -0
- package/dist/parser/plans.js +239 -0
- package/dist/parser/plans.js.map +1 -0
- package/dist/parser/refs.d.ts +22 -9
- package/dist/parser/refs.d.ts.map +1 -1
- package/dist/parser/refs.js +102 -50
- package/dist/parser/refs.js.map +1 -1
- package/dist/parser/setup-status.d.ts +71 -0
- package/dist/parser/setup-status.d.ts.map +1 -0
- package/dist/parser/setup-status.js +269 -0
- package/dist/parser/setup-status.js.map +1 -0
- package/dist/parser/shadow.d.ts +150 -19
- package/dist/parser/shadow.d.ts.map +1 -1
- package/dist/parser/shadow.js +548 -187
- package/dist/parser/shadow.js.map +1 -1
- package/dist/parser/skill-render.d.ts +317 -0
- package/dist/parser/skill-render.d.ts.map +1 -0
- package/dist/parser/skill-render.js +943 -0
- package/dist/parser/skill-render.js.map +1 -0
- package/dist/parser/traits.d.ts +3 -3
- package/dist/parser/traits.d.ts.map +1 -1
- package/dist/parser/traits.js +2 -2
- package/dist/parser/traits.js.map +1 -1
- package/dist/parser/validate-skills.d.ts +32 -0
- package/dist/parser/validate-skills.d.ts.map +1 -0
- package/dist/parser/validate-skills.js +202 -0
- package/dist/parser/validate-skills.js.map +1 -0
- package/dist/parser/validate.d.ts +45 -3
- package/dist/parser/validate.d.ts.map +1 -1
- package/dist/parser/validate.js +622 -105
- package/dist/parser/validate.js.map +1 -1
- package/dist/parser/yaml.d.ts +83 -19
- package/dist/parser/yaml.d.ts.map +1 -1
- package/dist/parser/yaml.js +478 -173
- package/dist/parser/yaml.js.map +1 -1
- package/dist/ralph/cli-renderer.d.ts +8 -1
- package/dist/ralph/cli-renderer.d.ts.map +1 -1
- package/dist/ralph/cli-renderer.js +105 -34
- package/dist/ralph/cli-renderer.js.map +1 -1
- package/dist/ralph/events.d.ts +10 -10
- package/dist/ralph/events.d.ts.map +1 -1
- package/dist/ralph/events.js +277 -98
- package/dist/ralph/events.js.map +1 -1
- package/dist/ralph/index.d.ts +5 -2
- package/dist/ralph/index.d.ts.map +1 -1
- package/dist/ralph/index.js +9 -3
- package/dist/ralph/index.js.map +1 -1
- package/dist/ralph/loop-errors.d.ts +83 -0
- package/dist/ralph/loop-errors.d.ts.map +1 -0
- package/dist/ralph/loop-errors.js +150 -0
- package/dist/ralph/loop-errors.js.map +1 -0
- package/dist/ralph/subagent.d.ts +83 -0
- package/dist/ralph/subagent.d.ts.map +1 -0
- package/dist/ralph/subagent.js +174 -0
- package/dist/ralph/subagent.js.map +1 -0
- package/dist/ralph/wrap-up.d.ts +125 -0
- package/dist/ralph/wrap-up.d.ts.map +1 -0
- package/dist/ralph/wrap-up.js +270 -0
- package/dist/ralph/wrap-up.js.map +1 -0
- package/dist/schema/batch.d.ts +95 -0
- package/dist/schema/batch.d.ts.map +1 -0
- package/dist/schema/batch.js +24 -0
- package/dist/schema/batch.js.map +1 -0
- package/dist/schema/common.d.ts +2 -2
- package/dist/schema/common.d.ts.map +1 -1
- package/dist/schema/common.js +34 -31
- package/dist/schema/common.js.map +1 -1
- package/dist/schema/inbox.d.ts +12 -12
- package/dist/schema/inbox.js +4 -4
- package/dist/schema/inbox.js.map +1 -1
- package/dist/schema/index.d.ts +8 -5
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +8 -5
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/meta.d.ts +1454 -27
- package/dist/schema/meta.d.ts.map +1 -1
- package/dist/schema/meta.js +198 -21
- package/dist/schema/meta.js.map +1 -1
- package/dist/schema/plan.d.ts +285 -0
- package/dist/schema/plan.d.ts.map +1 -0
- package/dist/schema/plan.js +81 -0
- package/dist/schema/plan.js.map +1 -0
- package/dist/schema/spec.d.ts +72 -33
- package/dist/schema/spec.d.ts.map +1 -1
- package/dist/schema/spec.js +22 -9
- package/dist/schema/spec.js.map +1 -1
- package/dist/schema/task.d.ts +172 -161
- package/dist/schema/task.d.ts.map +1 -1
- package/dist/schema/task.js +21 -12
- package/dist/schema/task.js.map +1 -1
- package/dist/schema/triage.d.ts +266 -0
- package/dist/schema/triage.d.ts.map +1 -0
- package/dist/schema/triage.js +134 -0
- package/dist/schema/triage.js.map +1 -0
- package/dist/sessions/index.d.ts +2 -2
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +3 -3
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/store.d.ts +233 -1
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +628 -31
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +10 -10
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js +10 -9
- package/dist/sessions/types.js.map +1 -1
- package/dist/strings/errors.d.ts +51 -0
- package/dist/strings/errors.d.ts.map +1 -1
- package/dist/strings/errors.js +136 -106
- package/dist/strings/errors.js.map +1 -1
- package/dist/strings/guidance.d.ts.map +1 -1
- package/dist/strings/guidance.js +16 -16
- package/dist/strings/guidance.js.map +1 -1
- package/dist/strings/index.d.ts +4 -4
- package/dist/strings/index.d.ts.map +1 -1
- package/dist/strings/index.js +4 -4
- package/dist/strings/index.js.map +1 -1
- package/dist/strings/labels.d.ts +4 -0
- package/dist/strings/labels.d.ts.map +1 -1
- package/dist/strings/labels.js +45 -41
- package/dist/strings/labels.js.map +1 -1
- package/dist/strings/validation.d.ts.map +1 -1
- package/dist/strings/validation.js +71 -71
- package/dist/strings/validation.js.map +1 -1
- package/dist/utils/commit.d.ts +1 -1
- package/dist/utils/commit.d.ts.map +1 -1
- package/dist/utils/commit.js +28 -26
- package/dist/utils/commit.js.map +1 -1
- package/dist/utils/git.d.ts +1 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +40 -38
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/grep.js +11 -11
- package/dist/utils/grep.js.map +1 -1
- package/dist/utils/index.d.ts +7 -7
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -4
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/time.d.ts.map +1 -1
- package/dist/utils/time.js +10 -10
- package/dist/utils/time.js.map +1 -1
- package/package.json +28 -5
- package/plugin/.claude-plugin/marketplace.json +17 -0
- package/plugin/.claude-plugin/plugin.json +5 -0
- package/plugin/plugins/kspec/skills/help/SKILL.md +42 -0
- package/plugin/plugins/kspec/skills/triage/SKILL.md +206 -0
- package/plugin/plugins/kspec/skills/triage/docs/automation.md +120 -0
- package/plugin/plugins/kspec/skills/triage/docs/inbox.md +144 -0
- package/plugin/plugins/kspec/skills/triage/docs/observations.md +85 -0
- package/templates/agents-sections/01-quick-start.md +22 -0
- package/templates/agents-sections/02-shadow-branch.md +34 -0
- package/templates/agents-sections/03-task-lifecycle.md +48 -0
- package/templates/agents-sections/04-pr-workflow.md +17 -0
- package/templates/agents-sections/05-commit-convention.md +27 -0
- package/templates/agents-sections/06-ralph-loop.md +45 -0
- package/templates/hooks/pre-commit +34 -0
- package/templates/skills/help/SKILL.md +37 -0
- package/templates/skills/manifest.yaml +15 -0
- package/templates/skills/triage/SKILL.md +199 -0
- package/templates/skills/triage/docs/automation.md +120 -0
- package/templates/skills/triage/docs/inbox.md +144 -0
- package/templates/skills/triage/docs/observations.md +85 -0
|
@@ -0,0 +1,491 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kspec serve commands - daemon server lifecycle management
|
|
3
|
+
* AC: @cli-serve-commands
|
|
4
|
+
*/
|
|
5
|
+
import { spawn, execSync } from 'child_process';
|
|
6
|
+
import { existsSync, readdirSync, statSync } from 'fs';
|
|
7
|
+
import { join, dirname } from 'path';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
import { error, info, output, success, warn, isJsonMode } from '../output.js';
|
|
10
|
+
import { EXIT_CODES } from '../exit-codes.js';
|
|
11
|
+
import { PidFileManager } from '../pid-utils.js';
|
|
12
|
+
import { loadProjectConfig } from '../../parser/config.js';
|
|
13
|
+
/**
|
|
14
|
+
* Check if Bun runtime is available.
|
|
15
|
+
* Daemon requires Bun to run TypeScript directly.
|
|
16
|
+
*/
|
|
17
|
+
function isBunAvailable() {
|
|
18
|
+
try {
|
|
19
|
+
execSync('bun --version', { stdio: 'pipe' });
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
27
|
+
const __dirname = dirname(__filename);
|
|
28
|
+
/**
|
|
29
|
+
* Check if daemon dist files are stale (source newer than dist)
|
|
30
|
+
* Returns true if rebuild is recommended
|
|
31
|
+
*/
|
|
32
|
+
function checkDaemonStaleness() {
|
|
33
|
+
// __dirname is dist/cli/commands, go up 3 levels to package root, then into packages/daemon/src
|
|
34
|
+
const sourceDir = join(__dirname, '../../../packages/daemon/src');
|
|
35
|
+
// dist/daemon is 2 levels up from __dirname
|
|
36
|
+
const distDir = join(__dirname, '../../daemon');
|
|
37
|
+
if (!existsSync(sourceDir) || !existsSync(distDir))
|
|
38
|
+
return false;
|
|
39
|
+
try {
|
|
40
|
+
const getNewestMtime = (dir) => {
|
|
41
|
+
const files = readdirSync(dir, { withFileTypes: true });
|
|
42
|
+
let newest = 0;
|
|
43
|
+
for (const f of files) {
|
|
44
|
+
const fullPath = join(dir, f.name);
|
|
45
|
+
if (f.isDirectory()) {
|
|
46
|
+
newest = Math.max(newest, getNewestMtime(fullPath));
|
|
47
|
+
}
|
|
48
|
+
else if (f.name.endsWith('.ts')) {
|
|
49
|
+
newest = Math.max(newest, statSync(fullPath).mtimeMs);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return newest;
|
|
53
|
+
};
|
|
54
|
+
const newestSource = getNewestMtime(sourceDir);
|
|
55
|
+
const newestDist = getNewestMtime(distDir);
|
|
56
|
+
return newestSource > newestDist;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false; // Don't warn if check fails
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Register serve commands
|
|
64
|
+
*/
|
|
65
|
+
export function registerServeCommands(program) {
|
|
66
|
+
const serve = program
|
|
67
|
+
.command('serve')
|
|
68
|
+
.description('Manage the kspec daemon server');
|
|
69
|
+
// AC: @cli-serve-commands ac-1, ac-2, ac-3
|
|
70
|
+
// AC: @config-daemon ac-1, ac-2 — port from config, CLI flag overrides
|
|
71
|
+
serve
|
|
72
|
+
.command('start', { isDefault: true })
|
|
73
|
+
.description('Start the daemon server')
|
|
74
|
+
.option('-d, --daemon', 'Run in background (detached mode)')
|
|
75
|
+
.option('-p, --port <port>', 'Server port (uses config daemon.port if not specified)')
|
|
76
|
+
.option('--kspec-dir <dir>', 'Path to .kspec directory', join(process.cwd(), '.kspec'))
|
|
77
|
+
.option('--json', 'Output as JSON')
|
|
78
|
+
.action(async (opts) => {
|
|
79
|
+
try {
|
|
80
|
+
await startServer(opts);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
if (isJsonMode()) {
|
|
84
|
+
output({ error: err instanceof Error ? err.message : String(err) });
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
error(`Failed to start server: ${err instanceof Error ? err.message : String(err)}`);
|
|
88
|
+
}
|
|
89
|
+
process.exit(EXIT_CODES.ERROR);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
// AC: @cli-serve-commands ac-4, ac-5
|
|
93
|
+
serve
|
|
94
|
+
.command('stop')
|
|
95
|
+
.description('Stop the daemon server')
|
|
96
|
+
.option('--kspec-dir <dir>', 'Path to .kspec directory', join(process.cwd(), '.kspec'))
|
|
97
|
+
.option('--json', 'Output as JSON')
|
|
98
|
+
.action(async (opts) => {
|
|
99
|
+
try {
|
|
100
|
+
await stopServer(opts);
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
if (isJsonMode()) {
|
|
104
|
+
output({ error: err instanceof Error ? err.message : String(err) });
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
error(`Failed to stop server: ${err instanceof Error ? err.message : String(err)}`);
|
|
108
|
+
}
|
|
109
|
+
process.exit(EXIT_CODES.ERROR);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
// AC: @cli-serve-commands ac-6
|
|
113
|
+
serve
|
|
114
|
+
.command('status')
|
|
115
|
+
.description('Check daemon server status')
|
|
116
|
+
.option('--kspec-dir <dir>', 'Path to .kspec directory', join(process.cwd(), '.kspec'))
|
|
117
|
+
.option('--json', 'Output as JSON')
|
|
118
|
+
.action(async (opts) => {
|
|
119
|
+
try {
|
|
120
|
+
await statusServer(opts);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
if (isJsonMode()) {
|
|
124
|
+
output({ error: err instanceof Error ? err.message : String(err) });
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
error(`Failed to check status: ${err instanceof Error ? err.message : String(err)}`);
|
|
128
|
+
}
|
|
129
|
+
process.exit(EXIT_CODES.ERROR);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
// AC: @cli-serve-commands ac-7
|
|
133
|
+
serve
|
|
134
|
+
.command('restart')
|
|
135
|
+
.description('Restart the daemon server')
|
|
136
|
+
.option('--kspec-dir <dir>', 'Path to .kspec directory', join(process.cwd(), '.kspec'))
|
|
137
|
+
.option('--json', 'Output as JSON')
|
|
138
|
+
.action(async (opts) => {
|
|
139
|
+
try {
|
|
140
|
+
await restartServer(opts);
|
|
141
|
+
}
|
|
142
|
+
catch (err) {
|
|
143
|
+
if (isJsonMode()) {
|
|
144
|
+
output({ error: err instanceof Error ? err.message : String(err) });
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
error(`Failed to restart server: ${err instanceof Error ? err.message : String(err)}`);
|
|
148
|
+
}
|
|
149
|
+
process.exit(EXIT_CODES.ERROR);
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Start the daemon server
|
|
155
|
+
* AC: @cli-serve-commands ac-1 (foreground), ac-2 (daemon), ac-3 (port), ac-10 (port error)
|
|
156
|
+
* AC: @config-daemon ac-1 — port from config, ac-2 — CLI flag overrides config
|
|
157
|
+
*/
|
|
158
|
+
async function startServer(opts) {
|
|
159
|
+
const jsonMode = isJsonMode();
|
|
160
|
+
// AC: @config-daemon ac-1, ac-2 — load config for default port, CLI flag overrides
|
|
161
|
+
const { config } = await loadProjectConfig();
|
|
162
|
+
const configPort = config.daemon.port;
|
|
163
|
+
// AC: @config-daemon ac-2 — CLI flag takes precedence over config
|
|
164
|
+
const port = opts.port ? parseInt(opts.port, 10) : configPort;
|
|
165
|
+
// AC: @cli-serve-commands ac-10
|
|
166
|
+
if (isNaN(port) || port < 1 || port > 65535) {
|
|
167
|
+
if (jsonMode) {
|
|
168
|
+
output({
|
|
169
|
+
error: 'Invalid port number. Must be between 1 and 65535.',
|
|
170
|
+
hint: 'Try: kspec serve --port <PORT>',
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
error('Invalid port number. Must be between 1 and 65535.');
|
|
175
|
+
error('Try: kspec serve --port <PORT>');
|
|
176
|
+
}
|
|
177
|
+
process.exit(EXIT_CODES.VALIDATION_FAILED);
|
|
178
|
+
}
|
|
179
|
+
const pidManager = new PidFileManager();
|
|
180
|
+
// Check if already running
|
|
181
|
+
if (pidManager.isDaemonRunning()) {
|
|
182
|
+
const pid = pidManager.readPid();
|
|
183
|
+
const existingPort = pidManager.readPort();
|
|
184
|
+
if (isJsonMode()) {
|
|
185
|
+
output({ running: true, pid, port: existingPort, message: 'Daemon already running' });
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
warn(`Daemon already running on port ${existingPort}`);
|
|
189
|
+
}
|
|
190
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
191
|
+
}
|
|
192
|
+
// Get path to daemon entry point
|
|
193
|
+
// Daemon source is bundled at dist/daemon/index.ts (relative to package root)
|
|
194
|
+
// __dirname is dist/cli/commands, so go up 2 levels to dist/, then into daemon/
|
|
195
|
+
// Note: Daemon is TypeScript source - requires Bun runtime
|
|
196
|
+
const daemonBinary = join(__dirname, '../../daemon/index.ts');
|
|
197
|
+
if (!existsSync(daemonBinary)) {
|
|
198
|
+
if (isJsonMode()) {
|
|
199
|
+
output({ error: `Daemon binary not found at ${daemonBinary}`, hint: 'Ensure the kspec package is properly installed' });
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
error(`Daemon binary not found at: ${daemonBinary}`);
|
|
203
|
+
error('Ensure the kspec package is properly installed');
|
|
204
|
+
}
|
|
205
|
+
process.exit(EXIT_CODES.ERROR);
|
|
206
|
+
}
|
|
207
|
+
// Daemon requires Bun to run TypeScript directly
|
|
208
|
+
if (!isBunAvailable()) {
|
|
209
|
+
if (isJsonMode()) {
|
|
210
|
+
output({ error: 'Bun runtime not found', hint: 'Install Bun: https://bun.sh/docs/installation' });
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
error('Bun runtime is required for the daemon server');
|
|
214
|
+
error('Install Bun: https://bun.sh/docs/installation');
|
|
215
|
+
}
|
|
216
|
+
process.exit(EXIT_CODES.ERROR);
|
|
217
|
+
}
|
|
218
|
+
// Check for stale daemon build (dev experience improvement)
|
|
219
|
+
if (checkDaemonStaleness() && !jsonMode) {
|
|
220
|
+
warn('Warning: dist/daemon/ may be stale (source files are newer).');
|
|
221
|
+
warn(' Run "npm run build:daemon" to update.');
|
|
222
|
+
}
|
|
223
|
+
// AC: @cli-serve-commands ac-2 - background mode
|
|
224
|
+
if (opts.daemon) {
|
|
225
|
+
const runtime = 'bun';
|
|
226
|
+
// Spawn detached process
|
|
227
|
+
// Set BUN_ENV=production to prevent Bun dev mode HTML transformation
|
|
228
|
+
// which can cause asset hash mismatches in the web UI
|
|
229
|
+
const child = spawn(runtime, [daemonBinary, '--port', String(port), '--kspec-dir', opts.kspecDir], {
|
|
230
|
+
detached: true,
|
|
231
|
+
stdio: 'ignore', // TODO: redirect to log file when logging implemented
|
|
232
|
+
cwd: process.cwd(),
|
|
233
|
+
env: { ...process.env, BUN_ENV: 'production' },
|
|
234
|
+
});
|
|
235
|
+
// Detach from parent
|
|
236
|
+
child.unref();
|
|
237
|
+
// Poll for PID file with timeout (max 5 seconds)
|
|
238
|
+
const maxWait = 5000;
|
|
239
|
+
const startTime = Date.now();
|
|
240
|
+
let pid = null;
|
|
241
|
+
while (Date.now() - startTime < maxWait) {
|
|
242
|
+
pid = pidManager.readPid();
|
|
243
|
+
if (pid && pidManager.isDaemonRunning()) {
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
247
|
+
}
|
|
248
|
+
if (pid && pidManager.isDaemonRunning()) {
|
|
249
|
+
if (isJsonMode()) {
|
|
250
|
+
output({ running: true, pid, port });
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
success(`Daemon started with PID ${pid} on port ${port}`);
|
|
254
|
+
output({ running: true, pid, port });
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
if (isJsonMode()) {
|
|
259
|
+
output({ error: 'Daemon failed to start within 5 seconds' });
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
error('Daemon failed to start within 5 seconds');
|
|
263
|
+
}
|
|
264
|
+
process.exit(EXIT_CODES.ERROR);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
// AC: @cli-serve-commands ac-1 - foreground mode
|
|
269
|
+
if (!isJsonMode()) {
|
|
270
|
+
info(`Starting server in foreground on port ${port}...`);
|
|
271
|
+
info('Press Ctrl+C to stop');
|
|
272
|
+
}
|
|
273
|
+
const runtime = 'bun';
|
|
274
|
+
// Set BUN_ENV=production to prevent Bun dev mode HTML transformation
|
|
275
|
+
const child = spawn(runtime, [daemonBinary, '--port', String(port), '--kspec-dir', opts.kspecDir], {
|
|
276
|
+
stdio: 'inherit',
|
|
277
|
+
cwd: process.cwd(),
|
|
278
|
+
env: { ...process.env, BUN_ENV: 'production' },
|
|
279
|
+
});
|
|
280
|
+
// Handle Ctrl+C - forward SIGTERM to child for graceful shutdown
|
|
281
|
+
process.on('SIGINT', () => {
|
|
282
|
+
if (!isJsonMode()) {
|
|
283
|
+
info('\nStopping server...');
|
|
284
|
+
}
|
|
285
|
+
child.kill('SIGTERM');
|
|
286
|
+
// Wait for graceful shutdown (max 5 seconds)
|
|
287
|
+
const shutdownTimeout = setTimeout(() => {
|
|
288
|
+
child.kill('SIGKILL'); // Force kill if not stopped
|
|
289
|
+
}, 5000);
|
|
290
|
+
child.on('exit', () => {
|
|
291
|
+
clearTimeout(shutdownTimeout);
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
// Wait for process to exit
|
|
295
|
+
child.on('exit', (code) => {
|
|
296
|
+
process.exit(code ?? 0);
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Stop the daemon server
|
|
302
|
+
* AC: @cli-serve-commands ac-4 (stop), ac-5 (idempotent)
|
|
303
|
+
*/
|
|
304
|
+
async function stopServer(opts) {
|
|
305
|
+
if (isJsonMode()) {
|
|
306
|
+
}
|
|
307
|
+
const pidManager = new PidFileManager();
|
|
308
|
+
if (!pidManager.isDaemonRunning()) {
|
|
309
|
+
// AC: @cli-serve-commands ac-5
|
|
310
|
+
if (isJsonMode()) {
|
|
311
|
+
output({ running: false });
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
info('Daemon not running');
|
|
315
|
+
output({ running: false });
|
|
316
|
+
}
|
|
317
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
318
|
+
}
|
|
319
|
+
const pid = pidManager.readPid();
|
|
320
|
+
if (!pid) {
|
|
321
|
+
if (isJsonMode()) {
|
|
322
|
+
output({ error: 'Failed to read PID file' });
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
error('Failed to read PID file');
|
|
326
|
+
}
|
|
327
|
+
process.exit(EXIT_CODES.ERROR);
|
|
328
|
+
}
|
|
329
|
+
// AC: @cli-serve-commands ac-4
|
|
330
|
+
if (!isJsonMode()) {
|
|
331
|
+
info(`Stopping daemon (PID ${pid})...`);
|
|
332
|
+
}
|
|
333
|
+
try {
|
|
334
|
+
// Send SIGTERM
|
|
335
|
+
process.kill(pid, 'SIGTERM');
|
|
336
|
+
// Wait for clean shutdown (max 5 seconds)
|
|
337
|
+
const maxWait = 5000;
|
|
338
|
+
const startTime = Date.now();
|
|
339
|
+
while (Date.now() - startTime < maxWait) {
|
|
340
|
+
if (!pidManager.isDaemonRunning()) {
|
|
341
|
+
break;
|
|
342
|
+
}
|
|
343
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
344
|
+
}
|
|
345
|
+
if (pidManager.isDaemonRunning()) {
|
|
346
|
+
if (!isJsonMode()) {
|
|
347
|
+
warn(`Daemon did not stop gracefully, forcing...`);
|
|
348
|
+
}
|
|
349
|
+
process.kill(pid, 'SIGKILL');
|
|
350
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
351
|
+
}
|
|
352
|
+
if (isJsonMode()) {
|
|
353
|
+
output({ stopped: true, pid });
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
success('Daemon stopped');
|
|
357
|
+
output({ stopped: true, pid });
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
catch (err) {
|
|
361
|
+
if (isJsonMode()) {
|
|
362
|
+
output({ error: err instanceof Error ? err.message : String(err) });
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
error(`Failed to stop daemon: ${err instanceof Error ? err.message : String(err)}`);
|
|
366
|
+
}
|
|
367
|
+
process.exit(EXIT_CODES.ERROR);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Check daemon server status
|
|
372
|
+
* AC: @cli-serve-commands ac-6, @multi-directory-daemon ac-12
|
|
373
|
+
*/
|
|
374
|
+
async function statusServer(opts) {
|
|
375
|
+
if (isJsonMode()) {
|
|
376
|
+
}
|
|
377
|
+
const pidManager = new PidFileManager();
|
|
378
|
+
const running = pidManager.isDaemonRunning();
|
|
379
|
+
const pid = pidManager.readPid();
|
|
380
|
+
// Read port from global config (AC: @multi-directory-daemon ac-13)
|
|
381
|
+
let port = null;
|
|
382
|
+
if (running) {
|
|
383
|
+
try {
|
|
384
|
+
port = pidManager.readPort();
|
|
385
|
+
}
|
|
386
|
+
catch {
|
|
387
|
+
// Port file might not exist or be invalid
|
|
388
|
+
port = null;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
// AC: @multi-directory-daemon ac-12 - Fetch list of registered projects and uptime
|
|
392
|
+
let projects = [];
|
|
393
|
+
let uptime = null;
|
|
394
|
+
if (running && port) {
|
|
395
|
+
try {
|
|
396
|
+
const response = await fetch(`http://localhost:${port}/api/projects`);
|
|
397
|
+
if (response.ok) {
|
|
398
|
+
const data = await response.json();
|
|
399
|
+
projects = data.projects || [];
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
catch {
|
|
403
|
+
// If daemon is not responding, continue without projects list
|
|
404
|
+
// This can happen if daemon is still starting up or network issues
|
|
405
|
+
}
|
|
406
|
+
// Fetch uptime from health endpoint
|
|
407
|
+
try {
|
|
408
|
+
const healthResponse = await fetch(`http://localhost:${port}/api/health`);
|
|
409
|
+
if (healthResponse.ok) {
|
|
410
|
+
const healthData = await healthResponse.json();
|
|
411
|
+
uptime = healthData.uptime;
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
catch {
|
|
415
|
+
// If health endpoint fails, continue without uptime
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
const status = {
|
|
419
|
+
running,
|
|
420
|
+
pid: pid ?? null,
|
|
421
|
+
port,
|
|
422
|
+
uptime,
|
|
423
|
+
projects,
|
|
424
|
+
};
|
|
425
|
+
if (isJsonMode()) {
|
|
426
|
+
output(status);
|
|
427
|
+
}
|
|
428
|
+
else {
|
|
429
|
+
if (running) {
|
|
430
|
+
output(`Daemon running (PID: ${pid})`);
|
|
431
|
+
if (port) {
|
|
432
|
+
output(` Port: ${port}`);
|
|
433
|
+
}
|
|
434
|
+
// AC: @multi-directory-daemon ac-12 - Show uptime
|
|
435
|
+
if (uptime !== null) {
|
|
436
|
+
const hours = Math.floor(uptime / 3600);
|
|
437
|
+
const minutes = Math.floor((uptime % 3600) / 60);
|
|
438
|
+
const seconds = Math.floor(uptime % 60);
|
|
439
|
+
if (hours > 0) {
|
|
440
|
+
output(` Uptime: ${hours}h ${minutes}m ${seconds}s`);
|
|
441
|
+
}
|
|
442
|
+
else if (minutes > 0) {
|
|
443
|
+
output(` Uptime: ${minutes}m ${seconds}s`);
|
|
444
|
+
}
|
|
445
|
+
else {
|
|
446
|
+
output(` Uptime: ${seconds}s`);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
// AC: @multi-directory-daemon ac-12 - Show registered projects
|
|
450
|
+
if (projects.length > 0) {
|
|
451
|
+
output(`\nRegistered projects (${projects.length}):`);
|
|
452
|
+
for (const project of projects) {
|
|
453
|
+
output(` ${project.path} (watcher: ${project.watcherStatus})`);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
output(`\nNo projects registered`);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
output('Daemon not running');
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Restart the daemon server
|
|
467
|
+
* AC: @cli-serve-commands ac-7
|
|
468
|
+
*/
|
|
469
|
+
async function restartServer(opts) {
|
|
470
|
+
const pidManager = new PidFileManager();
|
|
471
|
+
// AC: @cli-serve-commands ac-7 - preserve port across restarts
|
|
472
|
+
// Try to read port from existing daemon, otherwise startServer will use config default
|
|
473
|
+
let port;
|
|
474
|
+
try {
|
|
475
|
+
port = pidManager.readPort().toString();
|
|
476
|
+
}
|
|
477
|
+
catch {
|
|
478
|
+
// Port file doesn't exist or is invalid, let startServer use config
|
|
479
|
+
}
|
|
480
|
+
if (pidManager.isDaemonRunning()) {
|
|
481
|
+
if (!isJsonMode()) {
|
|
482
|
+
info('Stopping daemon...');
|
|
483
|
+
}
|
|
484
|
+
await stopServer(opts);
|
|
485
|
+
}
|
|
486
|
+
if (!isJsonMode()) {
|
|
487
|
+
info('Starting daemon...');
|
|
488
|
+
}
|
|
489
|
+
await startServer({ daemon: true, port, kspecDir: opts.kspecDir });
|
|
490
|
+
}
|
|
491
|
+
//# sourceMappingURL=serve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Provides context for starting/resuming work sessions.
|
|
5
5
|
*/
|
|
6
|
-
import { Command } from
|
|
7
|
-
import { type KspecContext } from
|
|
8
|
-
import type { SessionContext as StoredSessionContext } from
|
|
9
|
-
import { type GitWorkingTree } from
|
|
6
|
+
import type { Command } from "commander";
|
|
7
|
+
import { type KspecContext } from "../../parser/index.js";
|
|
8
|
+
import type { SessionContext as StoredSessionContext } from "../../schema/index.js";
|
|
9
|
+
import { type GitWorkingTree } from "../../utils/index.js";
|
|
10
10
|
export interface CheckpointResult {
|
|
11
11
|
/** Whether session can end cleanly */
|
|
12
12
|
ok: boolean;
|
|
@@ -18,7 +18,7 @@ export interface CheckpointResult {
|
|
|
18
18
|
instructions: string[];
|
|
19
19
|
}
|
|
20
20
|
export interface CheckpointIssue {
|
|
21
|
-
type:
|
|
21
|
+
type: "uncommitted_changes" | "in_progress_task" | "incomplete_todo";
|
|
22
22
|
description: string;
|
|
23
23
|
details?: Record<string, unknown>;
|
|
24
24
|
}
|
|
@@ -66,6 +66,7 @@ export interface ActiveTaskSummary {
|
|
|
66
66
|
export interface NoteSummary {
|
|
67
67
|
task_ref: string;
|
|
68
68
|
task_title: string;
|
|
69
|
+
task_status: "in_progress" | "pending_review" | "needs_work" | "completed";
|
|
69
70
|
note_ulid: string;
|
|
70
71
|
created_at: string;
|
|
71
72
|
author: string | null;
|
|
@@ -97,7 +98,7 @@ export interface CompletedTaskSummary {
|
|
|
97
98
|
title: string;
|
|
98
99
|
completed_at: string;
|
|
99
100
|
closed_reason: string | null;
|
|
100
|
-
origin?:
|
|
101
|
+
origin?: "manual" | "derived" | "observation_promotion";
|
|
101
102
|
}
|
|
102
103
|
export interface CommitSummary {
|
|
103
104
|
hash: string;
|
|
@@ -109,6 +110,7 @@ export interface CommitSummary {
|
|
|
109
110
|
export interface SessionStats {
|
|
110
111
|
total_tasks: number;
|
|
111
112
|
in_progress: number;
|
|
113
|
+
needs_work: number;
|
|
112
114
|
pending_review: number;
|
|
113
115
|
ready: number;
|
|
114
116
|
blocked: number;
|
|
@@ -134,6 +136,23 @@ export interface SessionOptions {
|
|
|
134
136
|
* Gather session context data
|
|
135
137
|
*/
|
|
136
138
|
export declare function gatherSessionContext(ctx: KspecContext, options: SessionOptions): Promise<SessionContext>;
|
|
139
|
+
/**
|
|
140
|
+
* Stats for tasks completed/started within a time window.
|
|
141
|
+
* Used by ralph to track task completions per iteration.
|
|
142
|
+
*/
|
|
143
|
+
export interface IterationStats {
|
|
144
|
+
/** Number of tasks completed since the given time */
|
|
145
|
+
tasks_completed: number;
|
|
146
|
+
/** Number of tasks started since the given time */
|
|
147
|
+
tasks_started: number;
|
|
148
|
+
/** References of completed tasks */
|
|
149
|
+
completed_refs: string[];
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Get iteration stats - tasks completed/started since a given time.
|
|
153
|
+
* AC: @ralph-task-limit ac-detection
|
|
154
|
+
*/
|
|
155
|
+
export declare function getIterationStats(ctx: KspecContext, since: Date): Promise<IterationStats>;
|
|
137
156
|
export interface CheckpointOptions {
|
|
138
157
|
force?: boolean;
|
|
139
158
|
/** Set when stop hook is already active (retry after previous block) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/session.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/session.ts"],"names":[],"mappings":"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"}
|