@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,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project-level configuration for kspec.
|
|
3
|
+
*
|
|
4
|
+
* Loads kspec.config.yaml from the project root (main branch) before shadow
|
|
5
|
+
* branch detection. All fields are optional with backward-compatible defaults.
|
|
6
|
+
*
|
|
7
|
+
* Priority: env vars > config file > defaults
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import * as fs from "node:fs/promises";
|
|
12
|
+
import * as path from "node:path";
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
import * as YAML from "yaml";
|
|
15
|
+
import { getGitRoot } from "./shadow.js";
|
|
16
|
+
// ── Schema ──────────────────────────────────────────────────────────────
|
|
17
|
+
/**
|
|
18
|
+
* Schema for shadow branch configuration.
|
|
19
|
+
*
|
|
20
|
+
* AC: @config-shadow — shadow.branch, shadow.directory, shadow.remote configurable
|
|
21
|
+
*/
|
|
22
|
+
const ShadowConfigSchema = z
|
|
23
|
+
.object({
|
|
24
|
+
/** Branch name for shadow branch (default: kspec-meta) */
|
|
25
|
+
branch: z.string().optional(),
|
|
26
|
+
/** Worktree directory name (default: .kspec) */
|
|
27
|
+
directory: z.string().optional(),
|
|
28
|
+
/**
|
|
29
|
+
* Remote target for shadow branch. Can be:
|
|
30
|
+
* - Named remote (e.g., "origin", "specs-origin")
|
|
31
|
+
* - Local filesystem path (starts with /, ./, or ~)
|
|
32
|
+
* - Git URL (contains :// or starts with git@)
|
|
33
|
+
*/
|
|
34
|
+
remote: z.string().optional(),
|
|
35
|
+
})
|
|
36
|
+
.strict()
|
|
37
|
+
.optional();
|
|
38
|
+
/**
|
|
39
|
+
* Schema for identity configuration.
|
|
40
|
+
*/
|
|
41
|
+
const IdentityConfigSchema = z
|
|
42
|
+
.object({
|
|
43
|
+
/** Default author for notes/tasks (overridden by KSPEC_AUTHOR env var) */
|
|
44
|
+
author: z.string().optional(),
|
|
45
|
+
})
|
|
46
|
+
.strict()
|
|
47
|
+
.optional();
|
|
48
|
+
/**
|
|
49
|
+
* Schema for validation configuration.
|
|
50
|
+
*
|
|
51
|
+
* AC: @config-validation — validation settings configurable in kspec.config.yaml
|
|
52
|
+
*/
|
|
53
|
+
const ValidationConfigSchema = z
|
|
54
|
+
.object({
|
|
55
|
+
/**
|
|
56
|
+
* When true, dangling references are treated as errors instead of warnings.
|
|
57
|
+
* AC: @config-validation ac-2 ac-3 — strict_refs configurable
|
|
58
|
+
*/
|
|
59
|
+
strict_refs: z.boolean().optional(),
|
|
60
|
+
/**
|
|
61
|
+
* When true, specs missing acceptance criteria are reported as errors not warnings.
|
|
62
|
+
* AC: @config-validation ac-1 — require_acceptance configurable
|
|
63
|
+
*/
|
|
64
|
+
require_acceptance: z.boolean().optional(),
|
|
65
|
+
})
|
|
66
|
+
.strict()
|
|
67
|
+
.optional();
|
|
68
|
+
/**
|
|
69
|
+
* Schema for daemon configuration.
|
|
70
|
+
*
|
|
71
|
+
* AC: @config-daemon — daemon.port, daemon.auto_start configurable
|
|
72
|
+
*/
|
|
73
|
+
const DaemonConfigSchema = z
|
|
74
|
+
.object({
|
|
75
|
+
/** Default port for daemon (default: 3456) */
|
|
76
|
+
port: z.number().int().min(1).max(65535).optional(),
|
|
77
|
+
/** Host to bind to (default: localhost) */
|
|
78
|
+
host: z.string().optional(),
|
|
79
|
+
/**
|
|
80
|
+
* Whether to auto-start daemon when running kspec commands.
|
|
81
|
+
* AC: @config-daemon ac-3 — auto_start configurable
|
|
82
|
+
*/
|
|
83
|
+
auto_start: z.boolean().optional(),
|
|
84
|
+
})
|
|
85
|
+
.strict()
|
|
86
|
+
.optional();
|
|
87
|
+
/**
|
|
88
|
+
* Schema for ralph skill name overrides.
|
|
89
|
+
*
|
|
90
|
+
* Ralph prompts reference skills by invocation name. These default to
|
|
91
|
+
* kspec: namespace core skills but can be overridden per-project for
|
|
92
|
+
* projects that use project-specific skill names.
|
|
93
|
+
*/
|
|
94
|
+
const RalphSkillsSchema = z
|
|
95
|
+
.object({
|
|
96
|
+
/** Skill invocation for task-work (default: /kspec:task-work) */
|
|
97
|
+
task_work: z.string().optional(),
|
|
98
|
+
/** Skill invocation for reflect (default: /kspec:reflect) */
|
|
99
|
+
reflect: z.string().optional(),
|
|
100
|
+
/** Skill invocation for PR review (default: /kspec:review) */
|
|
101
|
+
pr_review: z.string().optional(),
|
|
102
|
+
})
|
|
103
|
+
.strict()
|
|
104
|
+
.optional();
|
|
105
|
+
/**
|
|
106
|
+
* Schema for ralph configuration.
|
|
107
|
+
*/
|
|
108
|
+
const RalphConfigSchema = z
|
|
109
|
+
.object({
|
|
110
|
+
/** Skill invocation name overrides */
|
|
111
|
+
skills: RalphSkillsSchema,
|
|
112
|
+
})
|
|
113
|
+
.strict()
|
|
114
|
+
.optional();
|
|
115
|
+
/**
|
|
116
|
+
* Complete schema for kspec.config.yaml.
|
|
117
|
+
*
|
|
118
|
+
* AC: @project-config ac-4 — unknown fields are ignored via passthrough
|
|
119
|
+
*/
|
|
120
|
+
export const KspecConfigSchema = z
|
|
121
|
+
.object({
|
|
122
|
+
/** Shadow branch configuration */
|
|
123
|
+
shadow: ShadowConfigSchema,
|
|
124
|
+
/** Identity configuration */
|
|
125
|
+
identity: IdentityConfigSchema,
|
|
126
|
+
/** Validation configuration */
|
|
127
|
+
validation: ValidationConfigSchema,
|
|
128
|
+
/** Daemon configuration */
|
|
129
|
+
daemon: DaemonConfigSchema,
|
|
130
|
+
/** Ralph automation configuration */
|
|
131
|
+
ralph: RalphConfigSchema,
|
|
132
|
+
})
|
|
133
|
+
.passthrough(); // AC: ac-4 — ignore unknown fields
|
|
134
|
+
/**
|
|
135
|
+
* Detect the type of a shadow remote string.
|
|
136
|
+
*
|
|
137
|
+
* AC: @config-shadow ac-3 ac-4 ac-5 — remote type detection
|
|
138
|
+
*
|
|
139
|
+
* @param remote Remote string from config
|
|
140
|
+
* @returns Detected type: "path" for filesystem, "url" for git URLs, "named" for git remote names
|
|
141
|
+
*/
|
|
142
|
+
export function detectRemoteType(remote) {
|
|
143
|
+
// AC: ac-4 — Local filesystem path (starts with /, ./, ../, or ~)
|
|
144
|
+
if (remote.startsWith("/") ||
|
|
145
|
+
remote.startsWith("./") ||
|
|
146
|
+
remote.startsWith("../") ||
|
|
147
|
+
remote.startsWith("~")) {
|
|
148
|
+
return "path";
|
|
149
|
+
}
|
|
150
|
+
// AC: ac-5 — Git URL (contains :// or starts with git@)
|
|
151
|
+
if (remote.includes("://") || remote.startsWith("git@")) {
|
|
152
|
+
return "url";
|
|
153
|
+
}
|
|
154
|
+
// AC: ac-3 — Otherwise it's a named remote
|
|
155
|
+
return "named";
|
|
156
|
+
}
|
|
157
|
+
// ── Defaults ────────────────────────────────────────────────────────────
|
|
158
|
+
/**
|
|
159
|
+
* Default configuration values.
|
|
160
|
+
*
|
|
161
|
+
* AC: @project-config ac-1 — these are the current defaults
|
|
162
|
+
*/
|
|
163
|
+
const DEFAULT_CONFIG = {
|
|
164
|
+
shadow: {
|
|
165
|
+
branch: "kspec-meta",
|
|
166
|
+
directory: ".kspec",
|
|
167
|
+
remote: null,
|
|
168
|
+
},
|
|
169
|
+
identity: {
|
|
170
|
+
author: null,
|
|
171
|
+
},
|
|
172
|
+
validation: {
|
|
173
|
+
// AC: @config-validation — defaults preserve existing behavior
|
|
174
|
+
// strict_refs: true = dangling refs are errors (existing behavior)
|
|
175
|
+
// require_acceptance: false = missing AC is warning (existing behavior)
|
|
176
|
+
strict_refs: true,
|
|
177
|
+
require_acceptance: false,
|
|
178
|
+
},
|
|
179
|
+
daemon: {
|
|
180
|
+
port: 3456,
|
|
181
|
+
host: "localhost",
|
|
182
|
+
auto_start: true, // AC: @config-daemon — default auto-start enabled
|
|
183
|
+
},
|
|
184
|
+
ralph: {
|
|
185
|
+
skills: {
|
|
186
|
+
task_work: "/kspec:task-work",
|
|
187
|
+
reflect: "/kspec:reflect",
|
|
188
|
+
pr_review: "/kspec:review",
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
// ── Loading ─────────────────────────────────────────────────────────────
|
|
193
|
+
const CONFIG_FILENAME = "kspec.config.yaml";
|
|
194
|
+
/**
|
|
195
|
+
* Find git root directory, handling KSPEC_SPEC_DIR batch mode.
|
|
196
|
+
*
|
|
197
|
+
* AC: @project-config ac-7 — in batch mode, we need the REAL project root
|
|
198
|
+
*
|
|
199
|
+
* When KSPEC_SPEC_DIR is set (batch atomic mode), the cwd might be the temp
|
|
200
|
+
* directory. We need to find the real project root by checking:
|
|
201
|
+
* 1. If KSPEC_BATCH_PROJECT_ROOT is set, use that (set by batch executor)
|
|
202
|
+
* 2. Otherwise, use git root from cwd
|
|
203
|
+
*
|
|
204
|
+
* AC: @project-config ac-6 — loads from git root, not cwd subdirectory
|
|
205
|
+
*/
|
|
206
|
+
export function findProjectRoot(startDir) {
|
|
207
|
+
// In batch mode, the batch executor should set this to the real root
|
|
208
|
+
// before redirecting KSPEC_SPEC_DIR
|
|
209
|
+
const batchRoot = process.env.KSPEC_BATCH_PROJECT_ROOT;
|
|
210
|
+
if (batchRoot) {
|
|
211
|
+
return batchRoot;
|
|
212
|
+
}
|
|
213
|
+
// Normal mode: find git root
|
|
214
|
+
return getGitRoot(startDir);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Load project configuration from kspec.config.yaml.
|
|
218
|
+
*
|
|
219
|
+
* AC: @project-config ac-1 — no config = all defaults
|
|
220
|
+
* AC: @project-config ac-2 — config parsed and available before shadow detection
|
|
221
|
+
* AC: @project-config ac-3 — invalid YAML = defaults + warning
|
|
222
|
+
* AC: @project-config ac-4 — unknown fields ignored
|
|
223
|
+
* AC: @project-config ac-5 — env vars take precedence
|
|
224
|
+
* AC: @project-config ac-6 — loads from git root
|
|
225
|
+
* AC: @project-config ac-7 — batch mode uses real project root
|
|
226
|
+
*
|
|
227
|
+
* @param startDir Starting directory for git root detection
|
|
228
|
+
*/
|
|
229
|
+
export async function loadProjectConfig(startDir = process.cwd()) {
|
|
230
|
+
const gitRoot = findProjectRoot(startDir);
|
|
231
|
+
if (!gitRoot) {
|
|
232
|
+
// Not in a git repo, use defaults
|
|
233
|
+
return {
|
|
234
|
+
config: resolveConfig(null),
|
|
235
|
+
configPath: null,
|
|
236
|
+
warning: null,
|
|
237
|
+
gitRoot: null,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
const configPath = path.join(gitRoot, CONFIG_FILENAME);
|
|
241
|
+
// Check if config file exists
|
|
242
|
+
try {
|
|
243
|
+
await fs.access(configPath);
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
// AC: ac-1 — no config file, use defaults
|
|
247
|
+
return {
|
|
248
|
+
config: resolveConfig(null),
|
|
249
|
+
configPath: null,
|
|
250
|
+
warning: null,
|
|
251
|
+
gitRoot,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
// Try to load and parse config
|
|
255
|
+
try {
|
|
256
|
+
const content = await fs.readFile(configPath, "utf-8");
|
|
257
|
+
const raw = YAML.parse(content);
|
|
258
|
+
// Validate against schema
|
|
259
|
+
const result = KspecConfigSchema.safeParse(raw);
|
|
260
|
+
if (!result.success) {
|
|
261
|
+
// AC: ac-3 — validation error = defaults + warning
|
|
262
|
+
const issues = result.error.issues
|
|
263
|
+
.map((i) => `${i.path.join(".")}: ${i.message}`)
|
|
264
|
+
.join("; ");
|
|
265
|
+
return {
|
|
266
|
+
config: resolveConfig(null),
|
|
267
|
+
configPath,
|
|
268
|
+
warning: `Config validation failed: ${issues}. Using defaults.`,
|
|
269
|
+
gitRoot,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
// AC: ac-5 — apply env var overrides during resolution
|
|
273
|
+
return {
|
|
274
|
+
config: resolveConfig(result.data),
|
|
275
|
+
configPath,
|
|
276
|
+
warning: null,
|
|
277
|
+
gitRoot,
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
catch (err) {
|
|
281
|
+
// AC: ac-3 — parse error = defaults + warning
|
|
282
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
283
|
+
return {
|
|
284
|
+
config: resolveConfig(null),
|
|
285
|
+
configPath,
|
|
286
|
+
warning: `Failed to parse ${CONFIG_FILENAME}: ${message}. Using defaults.`,
|
|
287
|
+
gitRoot,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Resolve configuration by merging file config with env vars and defaults.
|
|
293
|
+
*
|
|
294
|
+
* Priority: env vars > config file > defaults
|
|
295
|
+
*
|
|
296
|
+
* AC: @project-config ac-5 — env vars take precedence
|
|
297
|
+
*/
|
|
298
|
+
export function resolveConfig(fileConfig) {
|
|
299
|
+
const file = fileConfig || {};
|
|
300
|
+
// Get env var overrides
|
|
301
|
+
const envAuthor = process.env.KSPEC_AUTHOR;
|
|
302
|
+
const envPort = process.env.KSPEC_DAEMON_PORT
|
|
303
|
+
? parseInt(process.env.KSPEC_DAEMON_PORT, 10)
|
|
304
|
+
: undefined;
|
|
305
|
+
const envHost = process.env.KSPEC_DAEMON_HOST;
|
|
306
|
+
// Resolve shadow remote if specified
|
|
307
|
+
const remoteValue = file.shadow?.remote;
|
|
308
|
+
const resolvedRemote = remoteValue
|
|
309
|
+
? { value: remoteValue, type: detectRemoteType(remoteValue) }
|
|
310
|
+
: DEFAULT_CONFIG.shadow.remote;
|
|
311
|
+
return {
|
|
312
|
+
shadow: {
|
|
313
|
+
branch: file.shadow?.branch ?? DEFAULT_CONFIG.shadow.branch,
|
|
314
|
+
directory: file.shadow?.directory ?? DEFAULT_CONFIG.shadow.directory,
|
|
315
|
+
remote: resolvedRemote,
|
|
316
|
+
},
|
|
317
|
+
identity: {
|
|
318
|
+
// AC: ac-5 — env var takes precedence
|
|
319
|
+
author: envAuthor ?? file.identity?.author ?? DEFAULT_CONFIG.identity.author,
|
|
320
|
+
},
|
|
321
|
+
validation: {
|
|
322
|
+
// AC: @config-validation ac-2 ac-3 — strict_refs from config
|
|
323
|
+
strict_refs: file.validation?.strict_refs ?? DEFAULT_CONFIG.validation.strict_refs,
|
|
324
|
+
// AC: @config-validation ac-1 — require_acceptance from config
|
|
325
|
+
require_acceptance: file.validation?.require_acceptance ?? DEFAULT_CONFIG.validation.require_acceptance,
|
|
326
|
+
},
|
|
327
|
+
daemon: {
|
|
328
|
+
// AC: ac-5 — env vars take precedence
|
|
329
|
+
port: (envPort && !isNaN(envPort) ? envPort : undefined) ??
|
|
330
|
+
file.daemon?.port ??
|
|
331
|
+
DEFAULT_CONFIG.daemon.port,
|
|
332
|
+
// AC: @config-daemon ac-5 ac-6 — host from config/env
|
|
333
|
+
host: envHost ?? file.daemon?.host ?? DEFAULT_CONFIG.daemon.host,
|
|
334
|
+
// AC: @config-daemon ac-3 — auto_start from config
|
|
335
|
+
auto_start: file.daemon?.auto_start ?? DEFAULT_CONFIG.daemon.auto_start,
|
|
336
|
+
},
|
|
337
|
+
ralph: {
|
|
338
|
+
skills: {
|
|
339
|
+
task_work: file.ralph?.skills?.task_work ?? DEFAULT_CONFIG.ralph.skills.task_work,
|
|
340
|
+
reflect: file.ralph?.skills?.reflect ?? DEFAULT_CONFIG.ralph.skills.reflect,
|
|
341
|
+
pr_review: file.ralph?.skills?.pr_review ?? DEFAULT_CONFIG.ralph.skills.pr_review,
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Get the default configuration (no file, no env vars).
|
|
348
|
+
* Useful for testing or when config loading fails completely.
|
|
349
|
+
* Returns a deep copy to prevent mutation of shared defaults.
|
|
350
|
+
*/
|
|
351
|
+
export function getDefaultConfig() {
|
|
352
|
+
return {
|
|
353
|
+
shadow: {
|
|
354
|
+
branch: DEFAULT_CONFIG.shadow.branch,
|
|
355
|
+
directory: DEFAULT_CONFIG.shadow.directory,
|
|
356
|
+
remote: DEFAULT_CONFIG.shadow.remote,
|
|
357
|
+
},
|
|
358
|
+
identity: { ...DEFAULT_CONFIG.identity },
|
|
359
|
+
validation: {
|
|
360
|
+
strict_refs: DEFAULT_CONFIG.validation.strict_refs,
|
|
361
|
+
require_acceptance: DEFAULT_CONFIG.validation.require_acceptance,
|
|
362
|
+
},
|
|
363
|
+
daemon: {
|
|
364
|
+
port: DEFAULT_CONFIG.daemon.port,
|
|
365
|
+
host: DEFAULT_CONFIG.daemon.host,
|
|
366
|
+
auto_start: DEFAULT_CONFIG.daemon.auto_start,
|
|
367
|
+
},
|
|
368
|
+
ralph: {
|
|
369
|
+
skills: { ...DEFAULT_CONFIG.ralph.skills },
|
|
370
|
+
},
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/parser/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convention-validation.d.ts","sourceRoot":"","sources":["../../src/parser/convention-validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,mBAAmB,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE;QACL,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;
|
|
1
|
+
{"version":3,"file":"convention-validation.d.ts","sourceRoot":"","sources":["../../src/parser/convention-validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,mBAAmB,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE;QACL,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AAsHD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,GACrB,yBAAyB,GAAG,IAAI,CAyBlC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,UAAU,EAAE,EACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,0BAA0B,CAsC5B"}
|
|
@@ -10,7 +10,7 @@ function validateRegex(content, validation, domain) {
|
|
|
10
10
|
if (!validation.pattern) {
|
|
11
11
|
return {
|
|
12
12
|
domain,
|
|
13
|
-
message:
|
|
13
|
+
message: "Regex validation requires a pattern",
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
try {
|
|
@@ -38,14 +38,14 @@ function validateEnum(content, validation, domain) {
|
|
|
38
38
|
if (!validation.allowed || validation.allowed.length === 0) {
|
|
39
39
|
return {
|
|
40
40
|
domain,
|
|
41
|
-
message:
|
|
41
|
+
message: "Enum validation requires an allowed list",
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
if (!validation.allowed.includes(content.trim())) {
|
|
45
45
|
return {
|
|
46
46
|
domain,
|
|
47
47
|
message: validation.message || `Value not in allowed list`,
|
|
48
|
-
expected: `One of: ${validation.allowed.join(
|
|
48
|
+
expected: `One of: ${validation.allowed.join(", ")}`,
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
return null;
|
|
@@ -54,17 +54,20 @@ function validateEnum(content, validation, domain) {
|
|
|
54
54
|
* Validate content against a range (word count, character count, or line count)
|
|
55
55
|
*/
|
|
56
56
|
function validateRange(content, validation, domain) {
|
|
57
|
-
const unit = validation.unit ||
|
|
57
|
+
const unit = validation.unit || "words";
|
|
58
58
|
let count;
|
|
59
59
|
switch (unit) {
|
|
60
|
-
case
|
|
61
|
-
count = content
|
|
60
|
+
case "words":
|
|
61
|
+
count = content
|
|
62
|
+
.trim()
|
|
63
|
+
.split(/\s+/)
|
|
64
|
+
.filter((w) => w.length > 0).length;
|
|
62
65
|
break;
|
|
63
|
-
case
|
|
66
|
+
case "chars":
|
|
64
67
|
count = content.length;
|
|
65
68
|
break;
|
|
66
|
-
case
|
|
67
|
-
count = content.split(
|
|
69
|
+
case "lines":
|
|
70
|
+
count = content.split("\n").length;
|
|
68
71
|
break;
|
|
69
72
|
default:
|
|
70
73
|
return {
|
|
@@ -77,13 +80,15 @@ function validateRange(content, validation, domain) {
|
|
|
77
80
|
if (min !== undefined && count < min) {
|
|
78
81
|
return {
|
|
79
82
|
domain,
|
|
80
|
-
message: validation.message ||
|
|
83
|
+
message: validation.message ||
|
|
84
|
+
`Content too short: ${count} ${unit}, minimum ${min} ${unit}`,
|
|
81
85
|
};
|
|
82
86
|
}
|
|
83
87
|
if (max !== undefined && count > max) {
|
|
84
88
|
return {
|
|
85
89
|
domain,
|
|
86
|
-
message: validation.message ||
|
|
90
|
+
message: validation.message ||
|
|
91
|
+
`Content too long: ${count} ${unit}, maximum ${max} ${unit}`,
|
|
87
92
|
};
|
|
88
93
|
}
|
|
89
94
|
return null;
|
|
@@ -103,13 +108,13 @@ export function validateConvention(content, convention) {
|
|
|
103
108
|
const { validation } = convention;
|
|
104
109
|
const domain = convention.domain;
|
|
105
110
|
switch (validation.type) {
|
|
106
|
-
case
|
|
111
|
+
case "regex":
|
|
107
112
|
return validateRegex(content, validation, domain);
|
|
108
|
-
case
|
|
113
|
+
case "enum":
|
|
109
114
|
return validateEnum(content, validation, domain);
|
|
110
|
-
case
|
|
115
|
+
case "range":
|
|
111
116
|
return validateRange(content, validation, domain);
|
|
112
|
-
case
|
|
117
|
+
case "prose":
|
|
113
118
|
// Prose conventions are advisory only - no validation
|
|
114
119
|
return null;
|
|
115
120
|
default:
|
|
@@ -139,7 +144,7 @@ export function validateConventions(conventions, contentMap) {
|
|
|
139
144
|
skipped.push(convention.domain);
|
|
140
145
|
continue;
|
|
141
146
|
}
|
|
142
|
-
if (convention.validation.type ===
|
|
147
|
+
if (convention.validation.type === "prose") {
|
|
143
148
|
skipped.push(convention.domain);
|
|
144
149
|
continue;
|
|
145
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convention-validation.js","sourceRoot":"","sources":["../../src/parser/convention-validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2BH;;GAEG;AACH,SAAS,aAAa,CACpB,OAAe,EACf,UAAgC,EAChC,MAAc;IAEd,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO;YACL,MAAM;YACN,OAAO,EAAE,qCAAqC;SAC/C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM;gBACN,OAAO,
|
|
1
|
+
{"version":3,"file":"convention-validation.js","sourceRoot":"","sources":["../../src/parser/convention-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test coverage cache for daemon performance optimization.
|
|
3
|
+
*
|
|
4
|
+
* Caches scanTestCoverage() results to avoid re-scanning test files
|
|
5
|
+
* on every API request. The cache is per-project-directory and supports:
|
|
6
|
+
* - TTL-based expiration (default 60 seconds)
|
|
7
|
+
* - Explicit invalidation for file watcher integration
|
|
8
|
+
*
|
|
9
|
+
* @module coverage-cache
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Get test coverage for a project directory, using cache when available.
|
|
13
|
+
*
|
|
14
|
+
* This is the primary API for daemon routes. It:
|
|
15
|
+
* 1. Returns cached results if valid
|
|
16
|
+
* 2. Returns in-flight scan result if a scan is already in progress
|
|
17
|
+
* 3. Otherwise initiates a new scan and caches the result
|
|
18
|
+
*
|
|
19
|
+
* @param rootDir - Project root directory containing tests/
|
|
20
|
+
* @returns Set of covered AC references (e.g., "@spec-ref ac-1")
|
|
21
|
+
*/
|
|
22
|
+
export declare function getCachedTestCoverage(rootDir: string): Promise<Set<string>>;
|
|
23
|
+
/**
|
|
24
|
+
* Invalidate the test coverage cache for a specific project or all projects.
|
|
25
|
+
*
|
|
26
|
+
* Call this when test files change (via file watcher) to ensure
|
|
27
|
+
* fresh coverage data on next request.
|
|
28
|
+
*
|
|
29
|
+
* @param rootDir - Optional project root directory. If omitted, clears all caches.
|
|
30
|
+
*/
|
|
31
|
+
export declare function invalidateTestCoverageCache(rootDir?: string): void;
|
|
32
|
+
/**
|
|
33
|
+
* Set the cache TTL (for testing purposes).
|
|
34
|
+
*
|
|
35
|
+
* @param ms - TTL in milliseconds
|
|
36
|
+
*/
|
|
37
|
+
export declare function setTestCoverageCacheTTL(ms: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* Reset the cache TTL to default (for testing purposes).
|
|
40
|
+
*/
|
|
41
|
+
export declare function resetTestCoverageCacheTTL(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Get current cache statistics (for debugging/monitoring).
|
|
44
|
+
*/
|
|
45
|
+
export declare function getTestCoverageCacheStats(): {
|
|
46
|
+
entries: number;
|
|
47
|
+
ttlMs: number;
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=coverage-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage-cache.d.ts","sourceRoot":"","sources":["../../src/parser/coverage-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+CH;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAqCtB;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAOlE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAExD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,CAKA"}
|