@kynetic-ai/spec 0.1.2 → 0.4.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 +107 -0
- package/dist/cli/batch-exec.d.ts.map +1 -0
- package/dist/cli/batch-exec.js +706 -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 +141 -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 +58 -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 +534 -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 +547 -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 +1109 -170
- 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 +810 -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 +1267 -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 +56 -0
- package/dist/cli/commands/skill-install.d.ts.map +1 -0
- package/dist/cli/commands/skill-install.js +509 -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 +584 -350
- 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 +225 -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 +483 -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 +237 -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 +402 -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 +457 -0
- package/dist/parser/config.d.ts.map +1 -0
- package/dist/parser/config.js +373 -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 +197 -0
- package/dist/parser/plan-document.d.ts.map +1 -0
- package/dist/parser/plan-document.js +341 -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 +301 -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 +94 -0
- package/dist/ralph/subagent.d.ts.map +1 -0
- package/dist/ralph/subagent.js +193 -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 +97 -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 +8 -2
- package/dist/schema/common.d.ts.map +1 -1
- package/dist/schema/common.js +42 -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 +241 -1
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +810 -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 +55 -0
- package/dist/strings/errors.d.ts.map +1 -1
- package/dist/strings/errors.js +138 -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/triage/actions.d.ts +27 -0
- package/dist/triage/actions.d.ts.map +1 -0
- package/dist/triage/actions.js +95 -0
- package/dist/triage/actions.js.map +1 -0
- package/dist/triage/constants.d.ts +6 -0
- package/dist/triage/constants.d.ts.map +1 -0
- package/dist/triage/constants.js +7 -0
- package/dist/triage/constants.js.map +1 -0
- package/dist/triage/index.d.ts +3 -0
- package/dist/triage/index.d.ts.map +1 -0
- package/dist/triage/index.js +3 -0
- package/dist/triage/index.js.map +1 -0
- 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/create-workflow/SKILL.md +235 -0
- package/plugin/plugins/kspec/skills/help/SKILL.md +42 -0
- package/plugin/plugins/kspec/skills/observations/SKILL.md +143 -0
- package/plugin/plugins/kspec/skills/plan/SKILL.md +343 -0
- package/plugin/plugins/kspec/skills/reflect/SKILL.md +161 -0
- package/plugin/plugins/kspec/skills/review/SKILL.md +193 -0
- package/plugin/plugins/kspec/skills/task-work/SKILL.md +303 -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/plugin/plugins/kspec/skills/triage-automation/SKILL.md +140 -0
- package/plugin/plugins/kspec/skills/triage-inbox/SKILL.md +232 -0
- package/plugin/plugins/kspec/skills/writing-specs/SKILL.md +340 -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/create-workflow/SKILL.md +228 -0
- package/templates/skills/help/SKILL.md +37 -0
- package/templates/skills/manifest.yaml +60 -0
- package/templates/skills/observations/SKILL.md +137 -0
- package/templates/skills/plan/SKILL.md +336 -0
- package/templates/skills/reflect/SKILL.md +155 -0
- package/templates/skills/review/SKILL.md +186 -0
- package/templates/skills/task-work/SKILL.md +296 -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
- package/templates/skills/triage-automation/SKILL.md +134 -0
- package/templates/skills/triage-inbox/SKILL.md +225 -0
- package/templates/skills/writing-specs/SKILL.md +333 -0
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent instruction generation commands.
|
|
3
|
+
*
|
|
4
|
+
* AC: @agent-instruction-gen ac-1 - kspec agents generate creates kspec-agents.md in project root
|
|
5
|
+
* AC: @agent-instruction-gen ac-2 - output includes Finding Information table with row per skill
|
|
6
|
+
* AC: @agent-instruction-gen ac-3 - output includes conventions section listing rules by domain
|
|
7
|
+
* AC: @agent-instruction-gen ac-4 - output contains freshness comment with kspec version and timestamp
|
|
8
|
+
* AC: @agent-instruction-gen ac-5 - kspec agents status reports stale when not regenerated after meta changes
|
|
9
|
+
*
|
|
10
|
+
* AC: @agents-cli ac-1 - kspec agents generate writes kspec-agents.md to project root
|
|
11
|
+
* AC: @agents-cli ac-2 - kspec agents generate --dry-run prints content without writing
|
|
12
|
+
* AC: @agents-cli ac-3 - kspec agents status reports up to date when current
|
|
13
|
+
* AC: @agents-cli ac-4 - kspec agents status reports stale when meta changed
|
|
14
|
+
*
|
|
15
|
+
* AC: @agent-templates ac-1 - template sections included in output in defined order
|
|
16
|
+
* AC: @agent-templates ac-2 - each template section appears in generated output
|
|
17
|
+
* AC: @agent-templates ac-3 - error if template directory missing or empty
|
|
18
|
+
*/
|
|
19
|
+
import * as crypto from "node:crypto";
|
|
20
|
+
import * as fs from "node:fs/promises";
|
|
21
|
+
import { createRequire } from "node:module";
|
|
22
|
+
import * as path from "node:path";
|
|
23
|
+
import { fileURLToPath } from "node:url";
|
|
24
|
+
import chalk from "chalk";
|
|
25
|
+
import { generateConventionsSummary, generateSkillsTable, generateWorkflowsSummary, initContext, loadMetaContext, } from "../../parser/index.js";
|
|
26
|
+
import { errors } from "../../strings/errors.js";
|
|
27
|
+
import { EXIT_CODES } from "../exit-codes.js";
|
|
28
|
+
import { error, output, success } from "../output.js";
|
|
29
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
30
|
+
const __dirname = path.dirname(__filename);
|
|
31
|
+
// Read version from package.json at runtime
|
|
32
|
+
const require = createRequire(import.meta.url);
|
|
33
|
+
const { version } = require("../../../package.json");
|
|
34
|
+
/**
|
|
35
|
+
* File name for generated agent instructions
|
|
36
|
+
*/
|
|
37
|
+
const GENERATED_FILE_NAME = "kspec-agents.md";
|
|
38
|
+
/**
|
|
39
|
+
* Hash file name for tracking freshness
|
|
40
|
+
*/
|
|
41
|
+
const HASH_FILE_NAME = ".kspec-agents-hash";
|
|
42
|
+
/**
|
|
43
|
+
* Templates directory name relative to package root
|
|
44
|
+
*/
|
|
45
|
+
const TEMPLATES_DIR = "templates/agents-sections";
|
|
46
|
+
/**
|
|
47
|
+
* Compute SHA256 hash of content
|
|
48
|
+
*/
|
|
49
|
+
function computeHash(content) {
|
|
50
|
+
return crypto.createHash("sha256").update(content, "utf-8").digest("hex");
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Load template sections from the templates directory.
|
|
54
|
+
* AC: @agent-templates ac-1 - all template sections included in defined order
|
|
55
|
+
* AC: @agent-templates ac-3 - error if directory missing or empty
|
|
56
|
+
*/
|
|
57
|
+
export async function loadTemplateSections(packageRoot) {
|
|
58
|
+
const templatesPath = path.join(packageRoot, TEMPLATES_DIR);
|
|
59
|
+
// Check if templates directory exists
|
|
60
|
+
try {
|
|
61
|
+
await fs.access(templatesPath);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
throw new Error(`Templates directory not found at: ${templatesPath}. ` +
|
|
65
|
+
`Expected templates/agents-sections/ directory with section markdown files.`);
|
|
66
|
+
}
|
|
67
|
+
// Read directory contents
|
|
68
|
+
const entries = await fs.readdir(templatesPath, { withFileTypes: true });
|
|
69
|
+
const mdFiles = entries
|
|
70
|
+
.filter((e) => e.isFile() && e.name.endsWith(".md"))
|
|
71
|
+
.map((e) => e.name)
|
|
72
|
+
.sort(); // Sort to ensure consistent ordering by filename prefix
|
|
73
|
+
if (mdFiles.length === 0) {
|
|
74
|
+
throw new Error(`Templates directory is empty: ${templatesPath}. ` +
|
|
75
|
+
`Expected markdown files for agent instruction sections.`);
|
|
76
|
+
}
|
|
77
|
+
// Load each template in order
|
|
78
|
+
const sections = [];
|
|
79
|
+
for (const filename of mdFiles) {
|
|
80
|
+
const filePath = path.join(templatesPath, filename);
|
|
81
|
+
const content = await fs.readFile(filePath, "utf-8");
|
|
82
|
+
sections.push(content.trim());
|
|
83
|
+
}
|
|
84
|
+
return sections;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get the package root directory (where templates/ is located)
|
|
88
|
+
*/
|
|
89
|
+
export function getPackageRoot() {
|
|
90
|
+
// Navigate from dist/cli/commands/ to package root
|
|
91
|
+
return path.resolve(__dirname, "..", "..", "..");
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Generate a hash of the meta content that affects the generated file.
|
|
95
|
+
* This is used to detect if the generated file is stale.
|
|
96
|
+
*/
|
|
97
|
+
export function computeMetaHash(skills, conventions, workflows, templateSections) {
|
|
98
|
+
// Create a stable representation of the meta content
|
|
99
|
+
// AC: @cross-platform-and-version-robustness ac-4 - includes templates for staleness detection
|
|
100
|
+
const data = {
|
|
101
|
+
skills: skills.map((s) => ({
|
|
102
|
+
id: s.id,
|
|
103
|
+
name: s.name,
|
|
104
|
+
description: s.description,
|
|
105
|
+
})),
|
|
106
|
+
conventions: conventions.map((c) => ({
|
|
107
|
+
domain: c.domain,
|
|
108
|
+
rules: c.rules,
|
|
109
|
+
examples: (c.examples ?? []).map((e) => ({ good: e.good, bad: e.bad })),
|
|
110
|
+
})),
|
|
111
|
+
workflows: workflows.map((w) => ({
|
|
112
|
+
id: w.id,
|
|
113
|
+
trigger: w.trigger,
|
|
114
|
+
description: w.description,
|
|
115
|
+
})),
|
|
116
|
+
};
|
|
117
|
+
if (templateSections && templateSections.length > 0) {
|
|
118
|
+
data.templates = templateSections;
|
|
119
|
+
}
|
|
120
|
+
return computeHash(JSON.stringify(data));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Generate the freshness comment.
|
|
124
|
+
* AC: @agent-instruction-gen ac-4 - freshness comment with kspec version and timestamp
|
|
125
|
+
*/
|
|
126
|
+
function generateFreshnessComment(timestamp) {
|
|
127
|
+
return `<!-- Generated by kspec v${version} at ${timestamp} -->\n<!-- Do not edit manually - regenerate with: kspec agents generate -->\n\n`;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Generate the full kspec-agents.md content
|
|
131
|
+
* AC: @agent-templates ac-1 - template sections included in output in defined order
|
|
132
|
+
* AC: @agent-templates ac-2 - each template section appears in generated output
|
|
133
|
+
*/
|
|
134
|
+
export async function generateAgentsContent(skills, conventions, workflows, timestamp, templateSections) {
|
|
135
|
+
const sections = [];
|
|
136
|
+
// AC: @agent-instruction-gen ac-4 - freshness comment
|
|
137
|
+
sections.push(generateFreshnessComment(timestamp));
|
|
138
|
+
// Header
|
|
139
|
+
sections.push("# kspec Agent Instructions\n");
|
|
140
|
+
sections.push("This file is auto-generated from kspec meta. Include it in your AGENTS.md or similar agent instruction file.\n\n");
|
|
141
|
+
// AC: @agent-instruction-gen ac-2 - Skills table
|
|
142
|
+
// AC: @agent-instruction-gen ac-3 - Conventions section
|
|
143
|
+
// Ensure blank line between each data section for valid markdown
|
|
144
|
+
const dataSections = [
|
|
145
|
+
generateSkillsTable(skills),
|
|
146
|
+
generateConventionsSummary(conventions),
|
|
147
|
+
generateWorkflowsSummary(workflows),
|
|
148
|
+
].filter(Boolean);
|
|
149
|
+
for (const section of dataSections) {
|
|
150
|
+
// Ensure each section is preceded by a blank line
|
|
151
|
+
if (!sections[sections.length - 1]?.endsWith("\n\n")) {
|
|
152
|
+
sections.push("\n");
|
|
153
|
+
}
|
|
154
|
+
sections.push(section);
|
|
155
|
+
}
|
|
156
|
+
// AC: @agent-templates ac-1, ac-2 - Include template sections in order
|
|
157
|
+
if (templateSections.length > 0) {
|
|
158
|
+
sections.push("\n");
|
|
159
|
+
for (const section of templateSections) {
|
|
160
|
+
sections.push(section);
|
|
161
|
+
sections.push("\n\n");
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return sections.join("");
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check the status of the generated agent file.
|
|
168
|
+
* AC: @agent-instruction-gen ac-5 - reports stale when meta has changed
|
|
169
|
+
*/
|
|
170
|
+
async function checkAgentStatus(projectRoot, metaHash) {
|
|
171
|
+
const filePath = path.join(projectRoot, GENERATED_FILE_NAME);
|
|
172
|
+
const hashPath = path.join(projectRoot, ".kspec", HASH_FILE_NAME);
|
|
173
|
+
// Check if file exists
|
|
174
|
+
try {
|
|
175
|
+
await fs.access(filePath);
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return {
|
|
179
|
+
exists: false,
|
|
180
|
+
path: filePath,
|
|
181
|
+
status: "missing",
|
|
182
|
+
metaHash,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
// Check stored hash
|
|
186
|
+
let storedHash;
|
|
187
|
+
let generatedAt;
|
|
188
|
+
try {
|
|
189
|
+
const hashContent = await fs.readFile(hashPath, "utf-8");
|
|
190
|
+
const hashData = JSON.parse(hashContent);
|
|
191
|
+
storedHash = hashData.metaHash;
|
|
192
|
+
generatedAt = hashData.generatedAt;
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// No hash file, treat as stale
|
|
196
|
+
return {
|
|
197
|
+
exists: true,
|
|
198
|
+
path: filePath,
|
|
199
|
+
status: "stale",
|
|
200
|
+
metaHash,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
// Compare hashes
|
|
204
|
+
const isCurrent = storedHash === metaHash;
|
|
205
|
+
return {
|
|
206
|
+
exists: true,
|
|
207
|
+
path: filePath,
|
|
208
|
+
status: isCurrent ? "current" : "stale",
|
|
209
|
+
metaHash,
|
|
210
|
+
storedHash,
|
|
211
|
+
generatedAt,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Register agent instruction generation commands
|
|
216
|
+
*/
|
|
217
|
+
export function registerAgentsCommands(program) {
|
|
218
|
+
const agents = program
|
|
219
|
+
.command("agents")
|
|
220
|
+
.description("Agent instruction generation commands");
|
|
221
|
+
// AC: @agent-instruction-gen ac-1 - kspec agents generate
|
|
222
|
+
// AC: @agent-templates ac-3 - error if template directory missing
|
|
223
|
+
// AC: @trait-dry-run ac-1 through ac-6 - dry-run support
|
|
224
|
+
agents
|
|
225
|
+
.command("generate")
|
|
226
|
+
.description("Generate kspec-agents.md from meta (skills, conventions, workflows)")
|
|
227
|
+
.option("--dry-run", "Show what would be generated without writing files")
|
|
228
|
+
.action(async (options) => {
|
|
229
|
+
try {
|
|
230
|
+
const ctx = await initContext();
|
|
231
|
+
if (!ctx.manifestPath) {
|
|
232
|
+
error(errors.project.noKspecProject);
|
|
233
|
+
process.exit(EXIT_CODES.ERROR);
|
|
234
|
+
}
|
|
235
|
+
// AC: @agent-templates ac-3 - error if templates missing
|
|
236
|
+
const packageRoot = getPackageRoot();
|
|
237
|
+
let templateSections;
|
|
238
|
+
try {
|
|
239
|
+
templateSections = await loadTemplateSections(packageRoot);
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
const message = err instanceof Error ? err.message : "Unknown error loading templates";
|
|
243
|
+
error(message, {
|
|
244
|
+
suggestion: `Verify that ${TEMPLATES_DIR}/ exists with markdown files.`,
|
|
245
|
+
});
|
|
246
|
+
process.exit(EXIT_CODES.ERROR);
|
|
247
|
+
}
|
|
248
|
+
const metaCtx = await loadMetaContext(ctx);
|
|
249
|
+
const dryRun = options.dryRun || false;
|
|
250
|
+
const timestamp = new Date().toISOString();
|
|
251
|
+
// Generate content - now async due to template loading
|
|
252
|
+
const content = await generateAgentsContent(metaCtx.skills, metaCtx.conventions, metaCtx.workflows, timestamp, templateSections);
|
|
253
|
+
// Compute meta hash for freshness tracking (includes templates)
|
|
254
|
+
const metaHash = computeMetaHash(metaCtx.skills, metaCtx.conventions, metaCtx.workflows, templateSections);
|
|
255
|
+
const outputPath = path.join(ctx.rootDir, GENERATED_FILE_NAME);
|
|
256
|
+
const hashPath = path.join(ctx.rootDir, ".kspec", HASH_FILE_NAME);
|
|
257
|
+
// AC: @agent-instruction-gen ac-6 - skip regeneration when content unchanged
|
|
258
|
+
if (!dryRun) {
|
|
259
|
+
const status = await checkAgentStatus(ctx.rootDir, metaHash);
|
|
260
|
+
if (status.status === "current") {
|
|
261
|
+
output({
|
|
262
|
+
path: outputPath,
|
|
263
|
+
status: "current",
|
|
264
|
+
skipped: true,
|
|
265
|
+
}, () => {
|
|
266
|
+
success(`${GENERATED_FILE_NAME} is already up to date`);
|
|
267
|
+
});
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// AC: @trait-dry-run ac-3 - clear indication this is a preview
|
|
272
|
+
if (dryRun) {
|
|
273
|
+
output({
|
|
274
|
+
dry_run: true,
|
|
275
|
+
path: outputPath,
|
|
276
|
+
skills: metaCtx.skills.length,
|
|
277
|
+
conventions: metaCtx.conventions.length,
|
|
278
|
+
workflows: metaCtx.workflows.length,
|
|
279
|
+
templates: templateSections.length,
|
|
280
|
+
content,
|
|
281
|
+
}, () => {
|
|
282
|
+
console.log(chalk.yellow("DRY RUN - No changes made"));
|
|
283
|
+
console.log();
|
|
284
|
+
console.log(chalk.gray(`Would write to: ${outputPath}`));
|
|
285
|
+
console.log();
|
|
286
|
+
console.log(chalk.gray("--- Generated content ---"));
|
|
287
|
+
console.log(content);
|
|
288
|
+
console.log(chalk.gray("--- End content ---"));
|
|
289
|
+
console.log();
|
|
290
|
+
console.log(chalk.yellow("No changes were made. Run without --dry-run to apply."));
|
|
291
|
+
});
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
// AC: @trait-dry-run ac-2 - no files modified in dry run mode
|
|
295
|
+
// Write the generated file
|
|
296
|
+
await fs.writeFile(outputPath, content, "utf-8");
|
|
297
|
+
// Write the hash file for freshness tracking
|
|
298
|
+
await fs.mkdir(path.dirname(hashPath), { recursive: true });
|
|
299
|
+
await fs.writeFile(hashPath, JSON.stringify({
|
|
300
|
+
metaHash,
|
|
301
|
+
generatedAt: timestamp,
|
|
302
|
+
version,
|
|
303
|
+
}, null, 2), "utf-8");
|
|
304
|
+
output({
|
|
305
|
+
path: outputPath,
|
|
306
|
+
skills: metaCtx.skills.length,
|
|
307
|
+
conventions: metaCtx.conventions.length,
|
|
308
|
+
workflows: metaCtx.workflows.length,
|
|
309
|
+
templates: templateSections.length,
|
|
310
|
+
generatedAt: timestamp,
|
|
311
|
+
}, () => {
|
|
312
|
+
success(`Generated ${GENERATED_FILE_NAME}`, {
|
|
313
|
+
skills: metaCtx.skills.length,
|
|
314
|
+
conventions: metaCtx.conventions.length,
|
|
315
|
+
workflows: metaCtx.workflows.length,
|
|
316
|
+
templates: templateSections.length,
|
|
317
|
+
});
|
|
318
|
+
console.log(chalk.gray(` Path: ${outputPath}`));
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
catch (err) {
|
|
322
|
+
error("Failed to generate agent instructions", err);
|
|
323
|
+
process.exit(EXIT_CODES.ERROR);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
// AC: @agent-instruction-gen ac-5 - kspec agents status
|
|
327
|
+
agents
|
|
328
|
+
.command("status")
|
|
329
|
+
.description("Check if kspec-agents.md is up to date with meta")
|
|
330
|
+
.action(async () => {
|
|
331
|
+
try {
|
|
332
|
+
const ctx = await initContext();
|
|
333
|
+
if (!ctx.manifestPath) {
|
|
334
|
+
error(errors.project.noKspecProject);
|
|
335
|
+
process.exit(EXIT_CODES.ERROR);
|
|
336
|
+
}
|
|
337
|
+
const metaCtx = await loadMetaContext(ctx);
|
|
338
|
+
// Load templates for hash computation
|
|
339
|
+
let templateSections = [];
|
|
340
|
+
try {
|
|
341
|
+
templateSections = await loadTemplateSections(getPackageRoot());
|
|
342
|
+
}
|
|
343
|
+
catch (_err) {
|
|
344
|
+
// Templates may not exist in all environments
|
|
345
|
+
}
|
|
346
|
+
// Compute current meta hash (includes templates)
|
|
347
|
+
const metaHash = computeMetaHash(metaCtx.skills, metaCtx.conventions, metaCtx.workflows, templateSections);
|
|
348
|
+
const status = await checkAgentStatus(ctx.rootDir, metaHash);
|
|
349
|
+
output(status, () => {
|
|
350
|
+
switch (status.status) {
|
|
351
|
+
case "missing":
|
|
352
|
+
console.log(chalk.yellow(`${GENERATED_FILE_NAME} does not exist`));
|
|
353
|
+
console.log();
|
|
354
|
+
console.log(chalk.gray("Run 'kspec agents generate' to create it."));
|
|
355
|
+
break;
|
|
356
|
+
case "stale":
|
|
357
|
+
console.log(chalk.yellow(`${GENERATED_FILE_NAME} is stale`));
|
|
358
|
+
console.log();
|
|
359
|
+
console.log(chalk.gray("Meta has changed since the file was generated."));
|
|
360
|
+
console.log(chalk.gray("Run 'kspec agents generate' to regenerate."));
|
|
361
|
+
break;
|
|
362
|
+
case "current":
|
|
363
|
+
console.log(chalk.green(`${GENERATED_FILE_NAME} is up to date`));
|
|
364
|
+
if (status.generatedAt) {
|
|
365
|
+
console.log(chalk.gray(` Generated: ${status.generatedAt}`));
|
|
366
|
+
}
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
catch (err) {
|
|
372
|
+
error("Failed to check agent status", err);
|
|
373
|
+
process.exit(EXIT_CODES.ERROR);
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../src/cli/commands/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kspec batch — execute multiple CLI commands from a JSON payload.
|
|
3
|
+
*
|
|
4
|
+
* Supports atomic mode (default: temp copy, rollback on failure) and
|
|
5
|
+
* immediate mode (per-command commits, no rollback).
|
|
6
|
+
*/
|
|
7
|
+
import type { Command } from "commander";
|
|
8
|
+
/**
|
|
9
|
+
* Register the `kspec batch` command group.
|
|
10
|
+
*
|
|
11
|
+
* AC: @batch-exec ac-stdin — stdin input
|
|
12
|
+
* AC: @batch-exec ac-file — file input
|
|
13
|
+
* AC: @batch-exec ac-inline — inline JSON input
|
|
14
|
+
* AC: @batch-exec ac-default-atomic — atomic mode by default
|
|
15
|
+
* AC: @batch-exec ac-no-atomic-flag — immediate mode
|
|
16
|
+
* AC: @batch-exec ac-continue-implies-immediate — --continue implies --no-atomic
|
|
17
|
+
* AC: @batch-exec ac-json-mode-field — JSON output includes mode field
|
|
18
|
+
*/
|
|
19
|
+
export declare function registerBatchCommand(program: Command): void;
|
|
20
|
+
//# sourceMappingURL=batch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/batch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkFzC;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiK3D"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kspec batch — execute multiple CLI commands from a JSON payload.
|
|
3
|
+
*
|
|
4
|
+
* Supports atomic mode (default: temp copy, rollback on failure) and
|
|
5
|
+
* immediate mode (per-command commits, no rollback).
|
|
6
|
+
*/
|
|
7
|
+
import chalk from "chalk";
|
|
8
|
+
import { parseBatchInput, BatchParseError, executeBatch, } from "../batch-exec.js";
|
|
9
|
+
import { createBatchCommandFilter } from "../command-annotations.js";
|
|
10
|
+
import { extractCommandTree, flattenCommandTree } from "../introspection.js";
|
|
11
|
+
import { isJsonMode, output } from "../output.js";
|
|
12
|
+
import { EXIT_CODES } from "../exit-codes.js";
|
|
13
|
+
/**
|
|
14
|
+
* Format a command signature for display.
|
|
15
|
+
* e.g., "inbox add <text> [--tag <tag...>]"
|
|
16
|
+
*/
|
|
17
|
+
function formatCommandSignature(cmd) {
|
|
18
|
+
const parts = [cmd.fullPath.slice(1).join(" ")]; // Skip root 'kspec'
|
|
19
|
+
// Add positional arguments
|
|
20
|
+
for (const arg of cmd.arguments) {
|
|
21
|
+
if (arg.required) {
|
|
22
|
+
parts.push(`<${arg.name}${arg.variadic ? "..." : ""}>`);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
parts.push(`[${arg.name}${arg.variadic ? "..." : ""}]`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Add options (excluding common ones like --json, --verbose)
|
|
29
|
+
const skipOptions = new Set(["json", "verbose", "help"]);
|
|
30
|
+
const significantOptions = cmd.options.filter((opt) => {
|
|
31
|
+
const match = opt.flags.match(/--([a-zA-Z0-9-]+)/);
|
|
32
|
+
return match && !skipOptions.has(match[1]);
|
|
33
|
+
});
|
|
34
|
+
if (significantOptions.length > 0) {
|
|
35
|
+
parts.push("[options]");
|
|
36
|
+
}
|
|
37
|
+
return parts.join(" ");
|
|
38
|
+
}
|
|
39
|
+
function buildCommandInfo(cmd) {
|
|
40
|
+
return {
|
|
41
|
+
command: cmd.fullPath.slice(1).join(" "), // Skip root 'kspec'
|
|
42
|
+
signature: formatCommandSignature(cmd),
|
|
43
|
+
description: cmd.description,
|
|
44
|
+
mutating: cmd.mutating,
|
|
45
|
+
arguments: cmd.arguments.map((arg) => ({
|
|
46
|
+
name: arg.name,
|
|
47
|
+
description: arg.description,
|
|
48
|
+
required: arg.required,
|
|
49
|
+
variadic: arg.variadic,
|
|
50
|
+
})),
|
|
51
|
+
options: cmd.options.map((opt) => ({
|
|
52
|
+
flags: opt.flags,
|
|
53
|
+
description: opt.description,
|
|
54
|
+
required: opt.mandatory,
|
|
55
|
+
})),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Register the `kspec batch` command group.
|
|
60
|
+
*
|
|
61
|
+
* AC: @batch-exec ac-stdin — stdin input
|
|
62
|
+
* AC: @batch-exec ac-file — file input
|
|
63
|
+
* AC: @batch-exec ac-inline — inline JSON input
|
|
64
|
+
* AC: @batch-exec ac-default-atomic — atomic mode by default
|
|
65
|
+
* AC: @batch-exec ac-no-atomic-flag — immediate mode
|
|
66
|
+
* AC: @batch-exec ac-continue-implies-immediate — --continue implies --no-atomic
|
|
67
|
+
* AC: @batch-exec ac-json-mode-field — JSON output includes mode field
|
|
68
|
+
*/
|
|
69
|
+
export function registerBatchCommand(program) {
|
|
70
|
+
const batchCmd = program
|
|
71
|
+
.command("batch")
|
|
72
|
+
.description("Execute multiple commands from a JSON payload")
|
|
73
|
+
.option("--file <path>", "Read commands from a JSON file")
|
|
74
|
+
.option("--commands <json>", "Inline JSON command array")
|
|
75
|
+
.option("--no-atomic", "Immediate mode: per-command commits, no rollback")
|
|
76
|
+
.option("--continue", "Continue on error (implies --no-atomic)")
|
|
77
|
+
.option("--dry-run", "Validate without executing")
|
|
78
|
+
.addHelpText("after", `
|
|
79
|
+
Examples:
|
|
80
|
+
$ echo '[{"command":"inbox add","args":{"content":"test"}}]' | kspec batch
|
|
81
|
+
$ kspec batch --file commands.json
|
|
82
|
+
$ kspec batch --commands '[{"command":"inbox add","args":{"content":"test"}}]'
|
|
83
|
+
$ kspec batch --no-atomic --commands '[...]'
|
|
84
|
+
$ kspec batch --continue --commands '[...]'
|
|
85
|
+
$ kspec batch --dry-run --commands '[...]'
|
|
86
|
+
$ kspec batch commands # list allowed commands`)
|
|
87
|
+
.action(async (options) => {
|
|
88
|
+
const json = isJsonMode();
|
|
89
|
+
// --continue implies --no-atomic
|
|
90
|
+
// AC: ac-continue-implies-immediate
|
|
91
|
+
let atomic = options.atomic;
|
|
92
|
+
if (options.continue && atomic) {
|
|
93
|
+
if (!json) {
|
|
94
|
+
console.error("Notice: --continue implies immediate mode (--no-atomic)");
|
|
95
|
+
}
|
|
96
|
+
atomic = false;
|
|
97
|
+
}
|
|
98
|
+
// Determine input source
|
|
99
|
+
let source;
|
|
100
|
+
if (options.file) {
|
|
101
|
+
source = { type: "file", path: options.file };
|
|
102
|
+
}
|
|
103
|
+
else if (options.commands) {
|
|
104
|
+
source = { type: "inline", json: options.commands };
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
source = { type: "stdin" };
|
|
108
|
+
}
|
|
109
|
+
// Parse input
|
|
110
|
+
let commands;
|
|
111
|
+
try {
|
|
112
|
+
commands = await parseBatchInput(source);
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
if (err instanceof BatchParseError) {
|
|
116
|
+
if (json) {
|
|
117
|
+
console.log(JSON.stringify({
|
|
118
|
+
success: false,
|
|
119
|
+
error: err.message,
|
|
120
|
+
}, null, 2));
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
console.error(`Error: ${err.message}`);
|
|
124
|
+
}
|
|
125
|
+
process.exit(EXIT_CODES.ERROR);
|
|
126
|
+
}
|
|
127
|
+
throw err;
|
|
128
|
+
}
|
|
129
|
+
// Execute
|
|
130
|
+
const result = await executeBatch(commands, program, {
|
|
131
|
+
atomic,
|
|
132
|
+
continueOnError: options.continue ?? false,
|
|
133
|
+
dryRun: options.dryRun ?? false,
|
|
134
|
+
json,
|
|
135
|
+
});
|
|
136
|
+
// Output
|
|
137
|
+
if (json) {
|
|
138
|
+
console.log(JSON.stringify(result, null, 2));
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
// Human-readable output
|
|
142
|
+
const modeLabel = result.mode === "atomic" ? "atomic" : "immediate";
|
|
143
|
+
if (result.success) {
|
|
144
|
+
console.log(`Batch complete (${modeLabel}): ${result.summary.succeeded}/${result.summary.total} succeeded`);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
console.error(`Batch failed (${modeLabel}): ${result.summary.succeeded}/${result.summary.total} succeeded, ${result.summary.failed} failed`);
|
|
148
|
+
}
|
|
149
|
+
// Show per-command results
|
|
150
|
+
for (const r of result.results) {
|
|
151
|
+
const label = r.id ?? `#${r.index}`;
|
|
152
|
+
if (r.success) {
|
|
153
|
+
console.log(` [${label}] ${r.command}: OK`);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
let errorLine = ` [${label}] ${r.command}: FAILED — ${r.error}`;
|
|
157
|
+
if (r.suggestion) {
|
|
158
|
+
errorLine += ` Did you mean: ${r.suggestion}?`;
|
|
159
|
+
}
|
|
160
|
+
console.error(errorLine);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Show helpful hint only for validation failures (not runtime execution failures)
|
|
164
|
+
if (result.validationFailed) {
|
|
165
|
+
console.error("");
|
|
166
|
+
console.error("Run 'kspec batch commands' for a list of available commands.");
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (!result.success) {
|
|
170
|
+
process.exit(EXIT_CODES.ERROR);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
// Register the `batch commands` subcommand
|
|
174
|
+
batchCmd
|
|
175
|
+
.command("commands")
|
|
176
|
+
.description("List commands allowed in batch mode")
|
|
177
|
+
.action(() => {
|
|
178
|
+
const json = isJsonMode();
|
|
179
|
+
const tree = extractCommandTree(program);
|
|
180
|
+
const allCommands = flattenCommandTree(tree);
|
|
181
|
+
const commandFilter = createBatchCommandFilter();
|
|
182
|
+
// Filter to leaf commands (no subcommands) that pass the batch filter
|
|
183
|
+
const allowedCommands = allCommands.filter((cmd) => {
|
|
184
|
+
// Must be a leaf command (no subcommands)
|
|
185
|
+
if (cmd.subcommands.length > 0)
|
|
186
|
+
return false;
|
|
187
|
+
// Must pass the batch filter (mutating only)
|
|
188
|
+
if (!commandFilter(cmd))
|
|
189
|
+
return false;
|
|
190
|
+
// Exclude batch itself
|
|
191
|
+
if (cmd.name === "batch" || cmd.fullPath.includes("batch"))
|
|
192
|
+
return false;
|
|
193
|
+
return true;
|
|
194
|
+
});
|
|
195
|
+
if (json) {
|
|
196
|
+
const commandInfos = allowedCommands.map(buildCommandInfo);
|
|
197
|
+
output({ commands: commandInfos, total: commandInfos.length });
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
console.log(chalk.bold.cyan("Batch-Allowed Commands"));
|
|
201
|
+
console.log(chalk.gray("─".repeat(60)));
|
|
202
|
+
console.log(chalk.gray("Only mutating commands can be used in batch mode.\n"));
|
|
203
|
+
for (const cmd of allowedCommands) {
|
|
204
|
+
const signature = formatCommandSignature(cmd);
|
|
205
|
+
console.log(chalk.green(signature));
|
|
206
|
+
if (cmd.description) {
|
|
207
|
+
console.log(chalk.gray(` ${cmd.description}`));
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
console.log(chalk.gray(`\n${allowedCommands.length} command(s) available`));
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/cli/commands/batch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone-for-testing.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clone-for-testing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clone-for-testing.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clone-for-testing.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8IzC;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0ErE"}
|