@seanmars/tospec 0.23.0 → 0.26.0-beta
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/CHANGELOG.md +281 -0
- package/README.md +27 -9
- package/assets/claude-mod/tospec-dashboard/.claude-plugin/plugin.json +7 -0
- package/assets/claude-mod/tospec-dashboard/hooks/hooks.json +1 -0
- package/assets/claude-mod/tospec-dashboard/hooks/register.ts +695 -0
- package/assets/claude-mod/tospec-dashboard/tests/register.test.ts +448 -0
- package/assets/claude-mod/tospec-dashboard/types/index.d.ts +8 -0
- package/assets/dashboard/app.js +218 -1180
- package/assets/dashboard/index.html +31 -22
- package/assets/dashboard/lib/charts.js +355 -0
- package/assets/dashboard/lib/derive.js +375 -0
- package/assets/dashboard/lib/dom.js +121 -0
- package/assets/dashboard/lib/routes.js +52 -0
- package/assets/dashboard/lib/store.js +326 -0
- package/assets/dashboard/style.css +3103 -664
- package/assets/dashboard/views/alerts.js +170 -0
- package/assets/dashboard/views/change.js +234 -0
- package/assets/dashboard/views/docs.js +214 -0
- package/assets/dashboard/views/home.js +357 -0
- package/assets/dashboard/views/project.js +168 -0
- package/assets/dashboard/views/session.js +270 -0
- package/assets/dashboard/views/sidebar.js +131 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +116 -102
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +213 -100
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/dashboard-relay.d.ts +11 -0
- package/dist/commands/dashboard-relay.d.ts.map +1 -0
- package/dist/commands/dashboard-relay.js +88 -0
- package/dist/commands/dashboard-relay.js.map +1 -0
- package/dist/commands/dashboard.d.ts +69 -100
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +420 -598
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/decision.d.ts +38 -1
- package/dist/commands/decision.d.ts.map +1 -1
- package/dist/commands/decision.js +303 -27
- package/dist/commands/decision.js.map +1 -1
- package/dist/commands/metrics.d.ts +3 -4
- package/dist/commands/metrics.d.ts.map +1 -1
- package/dist/commands/metrics.js +3 -5
- package/dist/commands/metrics.js.map +1 -1
- package/dist/commands/shared-output.d.ts +24 -0
- package/dist/commands/shared-output.d.ts.map +1 -1
- package/dist/commands/shared-output.js +21 -2
- package/dist/commands/shared-output.js.map +1 -1
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +12 -9
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/validate.d.ts +19 -0
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +243 -64
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/workflow/instructions.d.ts +7 -1
- package/dist/commands/workflow/instructions.d.ts.map +1 -1
- package/dist/commands/workflow/instructions.js +299 -81
- package/dist/commands/workflow/instructions.js.map +1 -1
- package/dist/commands/workflow/new-change.d.ts.map +1 -1
- package/dist/commands/workflow/new-change.js +26 -17
- package/dist/commands/workflow/new-change.js.map +1 -1
- package/dist/commands/workflow/prompt-escape.d.ts +25 -0
- package/dist/commands/workflow/prompt-escape.d.ts.map +1 -0
- package/dist/commands/workflow/prompt-escape.js +62 -0
- package/dist/commands/workflow/prompt-escape.js.map +1 -0
- package/dist/commands/workflow/schemas.d.ts.map +1 -1
- package/dist/commands/workflow/schemas.js +34 -16
- package/dist/commands/workflow/schemas.js.map +1 -1
- package/dist/commands/workflow/shared.d.ts +46 -10
- package/dist/commands/workflow/shared.d.ts.map +1 -1
- package/dist/commands/workflow/shared.js +66 -30
- package/dist/commands/workflow/shared.js.map +1 -1
- package/dist/commands/workflow/status.d.ts +5 -2
- package/dist/commands/workflow/status.d.ts.map +1 -1
- package/dist/commands/workflow/status.js +62 -28
- package/dist/commands/workflow/status.js.map +1 -1
- package/dist/core/archive.d.ts +38 -0
- package/dist/core/archive.d.ts.map +1 -1
- package/dist/core/archive.js +492 -75
- package/dist/core/archive.js.map +1 -1
- package/dist/core/artifact-graph/index.d.ts +2 -2
- package/dist/core/artifact-graph/index.d.ts.map +1 -1
- package/dist/core/artifact-graph/index.js +2 -2
- package/dist/core/artifact-graph/index.js.map +1 -1
- package/dist/core/artifact-graph/instruction-loader.d.ts +8 -0
- package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -1
- package/dist/core/artifact-graph/instruction-loader.js +58 -36
- package/dist/core/artifact-graph/instruction-loader.js.map +1 -1
- package/dist/core/artifact-graph/resolver.d.ts +39 -12
- package/dist/core/artifact-graph/resolver.d.ts.map +1 -1
- package/dist/core/artifact-graph/resolver.js +82 -36
- package/dist/core/artifact-graph/resolver.js.map +1 -1
- package/dist/core/artifact-graph/schema.d.ts +24 -0
- package/dist/core/artifact-graph/schema.d.ts.map +1 -1
- package/dist/core/artifact-graph/schema.js +32 -1
- package/dist/core/artifact-graph/schema.js.map +1 -1
- package/dist/core/artifact-graph/stub-detection.d.ts +10 -2
- package/dist/core/artifact-graph/stub-detection.d.ts.map +1 -1
- package/dist/core/artifact-graph/stub-detection.js +18 -11
- package/dist/core/artifact-graph/stub-detection.js.map +1 -1
- package/dist/core/artifact-graph/types.d.ts +2 -2
- package/dist/core/artifact-graph/types.d.ts.map +1 -1
- package/dist/core/artifact-graph/types.js +10 -1
- package/dist/core/artifact-graph/types.js.map +1 -1
- package/dist/core/change-metadata/schema.d.ts.map +1 -1
- package/dist/core/change-metadata/schema.js +18 -4
- package/dist/core/change-metadata/schema.js.map +1 -1
- package/dist/core/change-presenter.d.ts.map +1 -1
- package/dist/core/change-presenter.js +13 -8
- package/dist/core/change-presenter.js.map +1 -1
- package/dist/core/change-status-policy.d.ts.map +1 -1
- package/dist/core/change-status-policy.js +3 -1
- package/dist/core/change-status-policy.js.map +1 -1
- package/dist/core/codex-metrics.d.ts +1 -1
- package/dist/core/codex-metrics.js +1 -1
- package/dist/core/config-schema.d.ts +8 -0
- package/dist/core/config-schema.d.ts.map +1 -1
- package/dist/core/config-schema.js +10 -0
- package/dist/core/config-schema.js.map +1 -1
- package/dist/core/dashboard-activity.d.ts +4 -4
- package/dist/core/dashboard-activity.js +4 -4
- package/dist/core/dashboard-data.d.ts +11 -5
- package/dist/core/dashboard-data.d.ts.map +1 -1
- package/dist/core/dashboard-data.js +54 -28
- package/dist/core/dashboard-data.js.map +1 -1
- package/dist/core/dashboard-hub.d.ts +258 -0
- package/dist/core/dashboard-hub.d.ts.map +1 -0
- package/dist/core/dashboard-hub.js +655 -0
- package/dist/core/dashboard-hub.js.map +1 -0
- package/dist/core/dashboard-routes.d.ts +57 -0
- package/dist/core/dashboard-routes.d.ts.map +1 -0
- package/dist/core/dashboard-routes.js +398 -0
- package/dist/core/dashboard-routes.js.map +1 -0
- package/dist/core/global-config.d.ts +71 -2
- package/dist/core/global-config.d.ts.map +1 -1
- package/dist/core/global-config.js +149 -4
- package/dist/core/global-config.js.map +1 -1
- package/dist/core/id.d.ts +9 -0
- package/dist/core/id.d.ts.map +1 -1
- package/dist/core/id.js +37 -0
- package/dist/core/id.js.map +1 -1
- package/dist/core/init.d.ts +9 -2
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +119 -33
- package/dist/core/init.js.map +1 -1
- package/dist/core/list.d.ts.map +1 -1
- package/dist/core/list.js +69 -45
- package/dist/core/list.js.map +1 -1
- package/dist/core/local-server.d.ts +10 -3
- package/dist/core/local-server.d.ts.map +1 -1
- package/dist/core/local-server.js +25 -5
- package/dist/core/local-server.js.map +1 -1
- package/dist/core/markdown-render.d.ts.map +1 -1
- package/dist/core/markdown-render.js +7 -2
- package/dist/core/markdown-render.js.map +1 -1
- package/dist/core/migrate.d.ts +24 -2
- package/dist/core/migrate.d.ts.map +1 -1
- package/dist/core/migrate.js +335 -59
- package/dist/core/migrate.js.map +1 -1
- package/dist/core/parsers/change-parser.d.ts +20 -1
- package/dist/core/parsers/change-parser.d.ts.map +1 -1
- package/dist/core/parsers/change-parser.js +76 -73
- package/dist/core/parsers/change-parser.js.map +1 -1
- package/dist/core/parsers/markdown-parser.d.ts +24 -0
- package/dist/core/parsers/markdown-parser.d.ts.map +1 -1
- package/dist/core/parsers/markdown-parser.js +65 -10
- package/dist/core/parsers/markdown-parser.js.map +1 -1
- package/dist/core/parsers/requirement-blocks.d.ts +127 -6
- package/dist/core/parsers/requirement-blocks.d.ts.map +1 -1
- package/dist/core/parsers/requirement-blocks.js +349 -56
- package/dist/core/parsers/requirement-blocks.js.map +1 -1
- package/dist/core/parsers/requirement-text.d.ts +25 -1
- package/dist/core/parsers/requirement-text.d.ts.map +1 -1
- package/dist/core/parsers/requirement-text.js +62 -6
- package/dist/core/parsers/requirement-text.js.map +1 -1
- package/dist/core/parsers/spec-structure.d.ts.map +1 -1
- package/dist/core/parsers/spec-structure.js +36 -24
- package/dist/core/parsers/spec-structure.js.map +1 -1
- package/dist/core/project-config.d.ts +9 -2
- package/dist/core/project-config.d.ts.map +1 -1
- package/dist/core/project-config.js +30 -7
- package/dist/core/project-config.js.map +1 -1
- package/dist/core/project-layout.d.ts +26 -0
- package/dist/core/project-layout.d.ts.map +1 -1
- package/dist/core/project-layout.js +51 -1
- package/dist/core/project-layout.js.map +1 -1
- package/dist/core/schema-names.d.ts +17 -0
- package/dist/core/schema-names.d.ts.map +1 -1
- package/dist/core/schema-names.js +24 -0
- package/dist/core/schema-names.js.map +1 -1
- package/dist/core/shared/dashboard-mod.d.ts +24 -0
- package/dist/core/shared/dashboard-mod.d.ts.map +1 -0
- package/dist/core/shared/dashboard-mod.js +44 -0
- package/dist/core/shared/dashboard-mod.js.map +1 -0
- package/dist/core/shared/index.d.ts +2 -1
- package/dist/core/shared/index.d.ts.map +1 -1
- package/dist/core/shared/index.js +2 -1
- package/dist/core/shared/index.js.map +1 -1
- package/dist/core/shared/rules-generation.d.ts +12 -0
- package/dist/core/shared/rules-generation.d.ts.map +1 -1
- package/dist/core/shared/rules-generation.js +26 -2
- package/dist/core/shared/rules-generation.js.map +1 -1
- package/dist/core/shared/skill-generation.d.ts +7 -0
- package/dist/core/shared/skill-generation.d.ts.map +1 -1
- package/dist/core/shared/skill-generation.js +19 -0
- package/dist/core/shared/skill-generation.js.map +1 -1
- package/dist/core/shared/tool-detection.d.ts +10 -1
- package/dist/core/shared/tool-detection.d.ts.map +1 -1
- package/dist/core/shared/tool-detection.js +37 -6
- package/dist/core/shared/tool-detection.js.map +1 -1
- package/dist/core/spec-presenter.d.ts.map +1 -1
- package/dist/core/spec-presenter.js +23 -1
- package/dist/core/spec-presenter.js.map +1 -1
- package/dist/core/specs-apply.d.ts +98 -1
- package/dist/core/specs-apply.d.ts.map +1 -1
- package/dist/core/specs-apply.js +426 -63
- package/dist/core/specs-apply.js.map +1 -1
- package/dist/core/templates/fragments/change-diff.d.ts +37 -0
- package/dist/core/templates/fragments/change-diff.d.ts.map +1 -0
- package/dist/core/templates/fragments/change-diff.js +37 -0
- package/dist/core/templates/fragments/change-diff.js.map +1 -0
- package/dist/core/templates/fragments/sync-fail.d.ts +8 -0
- package/dist/core/templates/fragments/sync-fail.d.ts.map +1 -0
- package/dist/core/templates/fragments/sync-fail.js +8 -0
- package/dist/core/templates/fragments/sync-fail.js.map +1 -0
- package/dist/core/templates/fragments/validate.d.ts +14 -1
- package/dist/core/templates/fragments/validate.d.ts.map +1 -1
- package/dist/core/templates/fragments/validate.js +14 -1
- package/dist/core/templates/fragments/validate.js.map +1 -1
- package/dist/core/templates/fragments/verify.d.ts +2 -2
- package/dist/core/templates/fragments/verify.d.ts.map +1 -1
- package/dist/core/templates/fragments/verify.js +8 -5
- package/dist/core/templates/fragments/verify.js.map +1 -1
- package/dist/core/templates/workflows/apply.d.ts +1 -1
- package/dist/core/templates/workflows/apply.d.ts.map +1 -1
- package/dist/core/templates/workflows/apply.js +29 -10
- package/dist/core/templates/workflows/apply.js.map +1 -1
- package/dist/core/templates/workflows/archive.d.ts.map +1 -1
- package/dist/core/templates/workflows/archive.js +27 -9
- package/dist/core/templates/workflows/archive.js.map +1 -1
- package/dist/core/templates/workflows/decision.d.ts.map +1 -1
- package/dist/core/templates/workflows/decision.js +10 -4
- package/dist/core/templates/workflows/decision.js.map +1 -1
- package/dist/core/templates/workflows/explore.d.ts +2 -2
- package/dist/core/templates/workflows/explore.d.ts.map +1 -1
- package/dist/core/templates/workflows/explore.js +7 -3
- package/dist/core/templates/workflows/explore.js.map +1 -1
- package/dist/core/templates/workflows/grill.d.ts +2 -2
- package/dist/core/templates/workflows/grill.d.ts.map +1 -1
- package/dist/core/templates/workflows/grill.js +5 -4
- package/dist/core/templates/workflows/grill.js.map +1 -1
- package/dist/core/templates/workflows/issue.d.ts.map +1 -1
- package/dist/core/templates/workflows/issue.js +9 -3
- package/dist/core/templates/workflows/issue.js.map +1 -1
- package/dist/core/templates/workflows/propose.d.ts.map +1 -1
- package/dist/core/templates/workflows/propose.js +4 -1
- package/dist/core/templates/workflows/propose.js.map +1 -1
- package/dist/core/templates/workflows/sync.d.ts.map +1 -1
- package/dist/core/templates/workflows/sync.js +25 -11
- package/dist/core/templates/workflows/sync.js.map +1 -1
- package/dist/core/templates/workflows/update.d.ts.map +1 -1
- package/dist/core/templates/workflows/update.js +17 -10
- package/dist/core/templates/workflows/update.js.map +1 -1
- package/dist/core/update.d.ts +5 -0
- package/dist/core/update.d.ts.map +1 -1
- package/dist/core/update.js +69 -29
- package/dist/core/update.js.map +1 -1
- package/dist/core/validation/constants.d.ts +7 -1
- package/dist/core/validation/constants.d.ts.map +1 -1
- package/dist/core/validation/constants.js +16 -2
- package/dist/core/validation/constants.js.map +1 -1
- package/dist/core/validation/purpose-placeholder.d.ts.map +1 -1
- package/dist/core/validation/purpose-placeholder.js +35 -11
- package/dist/core/validation/purpose-placeholder.js.map +1 -1
- package/dist/core/validation/section-validator.d.ts +7 -0
- package/dist/core/validation/section-validator.d.ts.map +1 -1
- package/dist/core/validation/section-validator.js +22 -2
- package/dist/core/validation/section-validator.js.map +1 -1
- package/dist/core/validation/sister-changes.d.ts +93 -0
- package/dist/core/validation/sister-changes.d.ts.map +1 -0
- package/dist/core/validation/sister-changes.js +180 -0
- package/dist/core/validation/sister-changes.js.map +1 -0
- package/dist/core/validation/task-markers.d.ts +9 -0
- package/dist/core/validation/task-markers.d.ts.map +1 -0
- package/dist/core/validation/task-markers.js +71 -0
- package/dist/core/validation/task-markers.js.map +1 -0
- package/dist/core/validation/types.d.ts +58 -0
- package/dist/core/validation/types.d.ts.map +1 -1
- package/dist/core/validation/types.js +22 -0
- package/dist/core/validation/types.js.map +1 -1
- package/dist/core/validation/validator.d.ts +79 -2
- package/dist/core/validation/validator.d.ts.map +1 -1
- package/dist/core/validation/validator.js +565 -84
- package/dist/core/validation/validator.js.map +1 -1
- package/dist/utils/change-metadata.d.ts +62 -5
- package/dist/utils/change-metadata.d.ts.map +1 -1
- package/dist/utils/change-metadata.js +193 -31
- package/dist/utils/change-metadata.js.map +1 -1
- package/dist/utils/change-utils.d.ts +21 -0
- package/dist/utils/change-utils.d.ts.map +1 -1
- package/dist/utils/change-utils.js +168 -53
- package/dist/utils/change-utils.js.map +1 -1
- package/dist/utils/command-line.d.ts +11 -0
- package/dist/utils/command-line.d.ts.map +1 -0
- package/dist/utils/command-line.js +43 -0
- package/dist/utils/command-line.js.map +1 -0
- package/dist/utils/display-width.d.ts +10 -0
- package/dist/utils/display-width.d.ts.map +1 -0
- package/dist/utils/display-width.js +15 -0
- package/dist/utils/display-width.js.map +1 -0
- package/dist/utils/file-system.d.ts +16 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +49 -2
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +11 -5
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/interactive.d.ts.map +1 -1
- package/dist/utils/interactive.js +3 -1
- package/dist/utils/interactive.js.map +1 -1
- package/dist/utils/item-discovery.d.ts +3 -2
- package/dist/utils/item-discovery.d.ts.map +1 -1
- package/dist/utils/item-discovery.js +34 -16
- package/dist/utils/item-discovery.js.map +1 -1
- package/dist/utils/link.d.ts +0 -1
- package/dist/utils/link.d.ts.map +1 -1
- package/dist/utils/link.js +0 -1
- package/dist/utils/link.js.map +1 -1
- package/dist/utils/match.d.ts.map +1 -1
- package/dist/utils/match.js +10 -1
- package/dist/utils/match.js.map +1 -1
- package/dist/utils/option-flags.d.ts +9 -0
- package/dist/utils/option-flags.d.ts.map +1 -0
- package/dist/utils/option-flags.js +12 -0
- package/dist/utils/option-flags.js.map +1 -0
- package/dist/utils/sentence.d.ts +9 -0
- package/dist/utils/sentence.d.ts.map +1 -0
- package/dist/utils/sentence.js +12 -0
- package/dist/utils/sentence.js.map +1 -0
- package/dist/utils/spec-files.d.ts +84 -1
- package/dist/utils/spec-files.d.ts.map +1 -1
- package/dist/utils/spec-files.js +192 -3
- package/dist/utils/spec-files.js.map +1 -1
- package/dist/utils/task-progress.d.ts.map +1 -1
- package/dist/utils/task-progress.js +32 -9
- package/dist/utils/task-progress.js.map +1 -1
- package/dist/utils/timestamp.d.ts +27 -0
- package/dist/utils/timestamp.d.ts.map +1 -1
- package/dist/utils/timestamp.js +37 -0
- package/dist/utils/timestamp.js.map +1 -1
- package/package.json +6 -2
- package/schemas/decision/templates/decision.md +2 -2
- package/schemas/issue/schema.yaml +12 -6
- package/schemas/issue/templates/task.md +1 -1
- package/schemas/sdd/schema.yaml +21 -10
- package/schemas/sdd/templates/proposal.md +1 -1
- package/assets/dashboard/chart.umd.js +0 -14
|
@@ -13,4 +13,21 @@ export declare const DEFAULT_SCHEMA = "sdd";
|
|
|
13
13
|
* change` refuses it by name.
|
|
14
14
|
*/
|
|
15
15
|
export declare const DECISION_SCHEMA_NAME = "decision";
|
|
16
|
+
/**
|
|
17
|
+
* The one test of whether a change may use a schema. Every "Available" list a
|
|
18
|
+
* change command prints filters on it too: listing `decision` there offered a
|
|
19
|
+
* name `assertChangeSchema` then refused.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isChangeSchema(schemaName: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Refuses the decision schema for commands that operate on a change: its
|
|
24
|
+
* artifact belongs in `tospec/decisions/`, so pointed at a change it produces a
|
|
25
|
+
* directory `decision list` never sees and a `decision.md` archive never merges.
|
|
26
|
+
*
|
|
27
|
+
* `templates --schema decision` does not call this — listing that schema's
|
|
28
|
+
* templates is what `decision new` itself needs. Lives here rather than in
|
|
29
|
+
* `workflow/shared.ts` because `createChange` (utils) applies it too, to the
|
|
30
|
+
* schema it reads from `tospec/config.yaml`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function assertChangeSchema(schemaName: string): void;
|
|
16
33
|
//# sourceMappingURL=schema-names.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-names.d.ts","sourceRoot":"","sources":["../../src/core/schema-names.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4DAA4D;AAC5D,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema-names.d.ts","sourceRoot":"","sources":["../../src/core/schema-names.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4DAA4D;AAC5D,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAO3D"}
|
|
@@ -13,4 +13,28 @@ export const DEFAULT_SCHEMA = 'sdd';
|
|
|
13
13
|
* change` refuses it by name.
|
|
14
14
|
*/
|
|
15
15
|
export const DECISION_SCHEMA_NAME = 'decision';
|
|
16
|
+
/**
|
|
17
|
+
* The one test of whether a change may use a schema. Every "Available" list a
|
|
18
|
+
* change command prints filters on it too: listing `decision` there offered a
|
|
19
|
+
* name `assertChangeSchema` then refused.
|
|
20
|
+
*/
|
|
21
|
+
export function isChangeSchema(schemaName) {
|
|
22
|
+
return schemaName !== DECISION_SCHEMA_NAME;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Refuses the decision schema for commands that operate on a change: its
|
|
26
|
+
* artifact belongs in `tospec/decisions/`, so pointed at a change it produces a
|
|
27
|
+
* directory `decision list` never sees and a `decision.md` archive never merges.
|
|
28
|
+
*
|
|
29
|
+
* `templates --schema decision` does not call this — listing that schema's
|
|
30
|
+
* templates is what `decision new` itself needs. Lives here rather than in
|
|
31
|
+
* `workflow/shared.ts` because `createChange` (utils) applies it too, to the
|
|
32
|
+
* schema it reads from `tospec/config.yaml`.
|
|
33
|
+
*/
|
|
34
|
+
export function assertChangeSchema(schemaName) {
|
|
35
|
+
if (!isChangeSchema(schemaName)) {
|
|
36
|
+
throw new Error(`Schema '${DECISION_SCHEMA_NAME}' records an architecture decision, not a change. ` +
|
|
37
|
+
'Use: tospec decision new <topic>');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
16
40
|
//# sourceMappingURL=schema-names.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-names.js","sourceRoot":"","sources":["../../src/core/schema-names.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"schema-names.js","sourceRoot":"","sources":["../../src/core/schema-names.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC;AAEpC;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAE/C;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB;IAC/C,OAAO,UAAU,KAAK,oBAAoB,CAAC;AAC7C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,WAAW,oBAAoB,oDAAoD;YACjF,kCAAkC,CACrC,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tospec-dashboard mod: a Claude Code plugin (shipped in
|
|
3
|
+
* `assets/claude-mod/`) that registers the project with the dashboard hub.
|
|
4
|
+
* Claude Code loads a plugin it finds in a project's `.claude/skills/<name>/`,
|
|
5
|
+
* so init/update place it beside the generated skills.
|
|
6
|
+
*
|
|
7
|
+
* Claude Code only: `.agents/skills/` is read by agents that would find a skill
|
|
8
|
+
* directory with no SKILL.md in it, and nothing else runs function hooks.
|
|
9
|
+
*/
|
|
10
|
+
/** The tool whose skills directory receives the mod. */
|
|
11
|
+
export declare const DASHBOARD_MOD_TOOL_ID = "claude";
|
|
12
|
+
export declare const DASHBOARD_MOD_DIR = "tospec-dashboard";
|
|
13
|
+
/**
|
|
14
|
+
* Replaces `<skillsDir>/tospec-dashboard/` with the shipped mod, its manifest
|
|
15
|
+
* stamped with this tospec's version, or removes it when `install` is false.
|
|
16
|
+
* The stamp is what tells a reader which tospec generated it, as `generatedBy`
|
|
17
|
+
* does for a skill.
|
|
18
|
+
*
|
|
19
|
+
* `install` follows the workflow selection: a profile that selects nothing
|
|
20
|
+
* means tospec contributes nothing to the agent, and a mod left behind would
|
|
21
|
+
* be the one tospec file still loading.
|
|
22
|
+
*/
|
|
23
|
+
export declare function syncDashboardMod(skillsDir: string, version: string, install: boolean): Promise<void>;
|
|
24
|
+
//# sourceMappingURL=dashboard-mod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-mod.d.ts","sourceRoot":"","sources":["../../../src/core/shared/dashboard-mod.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,wDAAwD;AACxD,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAE9C,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AAIpD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAe1G"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tospec-dashboard mod: a Claude Code plugin (shipped in
|
|
3
|
+
* `assets/claude-mod/`) that registers the project with the dashboard hub.
|
|
4
|
+
* Claude Code loads a plugin it finds in a project's `.claude/skills/<name>/`,
|
|
5
|
+
* so init/update place it beside the generated skills.
|
|
6
|
+
*
|
|
7
|
+
* Claude Code only: `.agents/skills/` is read by agents that would find a skill
|
|
8
|
+
* directory with no SKILL.md in it, and nothing else runs function hooks.
|
|
9
|
+
*/
|
|
10
|
+
import * as fs from 'node:fs';
|
|
11
|
+
import * as path from 'node:path';
|
|
12
|
+
import { packageAssetsDir } from '../local-server.js';
|
|
13
|
+
/** The tool whose skills directory receives the mod. */
|
|
14
|
+
export const DASHBOARD_MOD_TOOL_ID = 'claude';
|
|
15
|
+
export const DASHBOARD_MOD_DIR = 'tospec-dashboard';
|
|
16
|
+
const MOD_TESTS_DIR = 'tests';
|
|
17
|
+
/**
|
|
18
|
+
* Replaces `<skillsDir>/tospec-dashboard/` with the shipped mod, its manifest
|
|
19
|
+
* stamped with this tospec's version, or removes it when `install` is false.
|
|
20
|
+
* The stamp is what tells a reader which tospec generated it, as `generatedBy`
|
|
21
|
+
* does for a skill.
|
|
22
|
+
*
|
|
23
|
+
* `install` follows the workflow selection: a profile that selects nothing
|
|
24
|
+
* means tospec contributes nothing to the agent, and a mod left behind would
|
|
25
|
+
* be the one tospec file still loading.
|
|
26
|
+
*/
|
|
27
|
+
export async function syncDashboardMod(skillsDir, version, install) {
|
|
28
|
+
const dest = path.join(skillsDir, DASHBOARD_MOD_DIR);
|
|
29
|
+
await fs.promises.rm(dest, { recursive: true, force: true });
|
|
30
|
+
if (!install)
|
|
31
|
+
return;
|
|
32
|
+
const src = packageAssetsDir(path.join('claude-mod', DASHBOARD_MOD_DIR));
|
|
33
|
+
await fs.promises.cp(src, dest, {
|
|
34
|
+
recursive: true,
|
|
35
|
+
// The mod's own engine tests (`claude plugin test`) stay in the package:
|
|
36
|
+
// in a project they would be one more thing loaded for nothing.
|
|
37
|
+
filter: (file) => path.relative(src, file).split(path.sep)[0] !== MOD_TESTS_DIR,
|
|
38
|
+
});
|
|
39
|
+
const manifestPath = path.join(dest, '.claude-plugin', 'plugin.json');
|
|
40
|
+
const manifest = JSON.parse(await fs.promises.readFile(manifestPath, 'utf-8'));
|
|
41
|
+
manifest.version = version;
|
|
42
|
+
await fs.promises.writeFile(manifestPath, JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=dashboard-mod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard-mod.js","sourceRoot":"","sources":["../../../src/core/shared/dashboard-mod.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,wDAAwD;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAC;AAE9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAEpD,MAAM,aAAa,GAAG,OAAO,CAAC;AAE9B;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAiB,EAAE,OAAe,EAAE,OAAgB;IACzF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACzE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE;QAC9B,SAAS,EAAE,IAAI;QACf,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa;KAChF,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAA4B,CAAC;IAC1G,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/F,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { SKILL_NAMES, LEGACY_SKILL_DIRS, type ToolSkillStatus, type ToolVersionStatus, removeLegacySkillDirs, removeUnselectedSkillDirs, removeLegacyToolSkillLayout, getToolsWithSkillsDir, getToolSkillStatus, getToolStates, extractGeneratedByVersion, getToolVersionStatus, getConfiguredTools, } from './tool-detection.js';
|
|
1
|
+
export { SKILL_NAMES, LEGACY_SKILL_DIRS, type ToolSkillStatus, type ToolVersionStatus, removeLegacySkillDirs, removeUnselectedSkillDirs, removeLegacyToolSkillLayout, removeLegacyCommands, getToolsWithSkillsDir, getToolSkillStatus, getToolStates, extractGeneratedByVersion, getToolVersionStatus, getConfiguredTools, } from './tool-detection.js';
|
|
2
2
|
export { type SkillTemplateEntry, type WorkflowReferenceGap, getSkillTemplates, generateSkillContent, writeSkillDir, findWorkflowReferenceGaps, describeWorkflowReferenceGaps, } from './skill-generation.js';
|
|
3
3
|
export { planWorkflowRules, writeWorkflowRules } from './rules-generation.js';
|
|
4
|
+
export { DASHBOARD_MOD_TOOL_ID, DASHBOARD_MOD_DIR, syncDashboardMod, } from './dashboard-mod.js';
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { SKILL_NAMES, LEGACY_SKILL_DIRS, removeLegacySkillDirs, removeUnselectedSkillDirs, removeLegacyToolSkillLayout, getToolsWithSkillsDir, getToolSkillStatus, getToolStates, extractGeneratedByVersion, getToolVersionStatus, getConfiguredTools, } from './tool-detection.js';
|
|
1
|
+
export { SKILL_NAMES, LEGACY_SKILL_DIRS, removeLegacySkillDirs, removeUnselectedSkillDirs, removeLegacyToolSkillLayout, removeLegacyCommands, getToolsWithSkillsDir, getToolSkillStatus, getToolStates, extractGeneratedByVersion, getToolVersionStatus, getConfiguredTools, } from './tool-detection.js';
|
|
2
2
|
export { getSkillTemplates, generateSkillContent, writeSkillDir, findWorkflowReferenceGaps, describeWorkflowReferenceGaps, } from './skill-generation.js';
|
|
3
3
|
export { planWorkflowRules, writeWorkflowRules } from './rules-generation.js';
|
|
4
|
+
export { DASHBOARD_MOD_TOOL_ID, DASHBOARD_MOD_DIR, syncDashboardMod, } from './dashboard-mod.js';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EAGjB,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAGL,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EAGjB,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC3B,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAGL,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC"}
|
|
@@ -5,6 +5,18 @@
|
|
|
5
5
|
* it. Without the marker there is no way to tell a generated file from an
|
|
6
6
|
* edited one, and `tospec init` silently loses the edit.
|
|
7
7
|
*/
|
|
8
|
+
import type { CommandDiagnostic } from '../../commands/shared-output.js';
|
|
9
|
+
/**
|
|
10
|
+
* An edited rule document blocks init, update and rules alike. Each command's
|
|
11
|
+
* catch would otherwise wrap it in its own generic code (`init_error`,
|
|
12
|
+
* `update_error`, `rules_error`) with the advice folded into `message`, so an
|
|
13
|
+
* agent could neither recognise the one cause nor read the next step from
|
|
14
|
+
* `fix`. `asStatus` passes the diagnostic through unchanged.
|
|
15
|
+
*/
|
|
16
|
+
export declare class RuleConflictError extends Error {
|
|
17
|
+
readonly diagnostic: CommandDiagnostic;
|
|
18
|
+
constructor(conflicts: readonly string[]);
|
|
19
|
+
}
|
|
8
20
|
export interface WorkflowRulePlan {
|
|
9
21
|
toolId: string;
|
|
10
22
|
/** Which managed rule this entry writes; distinguishes a tool's entries. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules-generation.d.ts","sourceRoot":"","sources":["../../../src/core/shared/rules-generation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"rules-generation.d.ts","sourceRoot":"","sources":["../../../src/core/shared/rules-generation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEzE;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IAEvC,YAAY,SAAS,EAAE,SAAS,MAAM,EAAE,EAUvC;CACF;AAuDD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;IAC5C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuCD,8DAA8D;AAC9D,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAoE3G;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,gBAAgB,EAAE,EACxB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -10,6 +10,28 @@ import { promises as fs } from 'node:fs';
|
|
|
10
10
|
import { createHash } from 'node:crypto';
|
|
11
11
|
import { AI_TOOLS, CODEX_TARGET_ID, DECISION_RULE_FILENAME, LEGACY_WORKFLOW_RULE_FILENAME, TOOL_RULES_SUBDIR, WORKFLOW_RULE_FILENAME, } from '../config.js';
|
|
12
12
|
import { FileSystemUtils } from '../../utils/file-system.js';
|
|
13
|
+
import { stripBom } from '../parsers/requirement-text.js';
|
|
14
|
+
/**
|
|
15
|
+
* An edited rule document blocks init, update and rules alike. Each command's
|
|
16
|
+
* catch would otherwise wrap it in its own generic code (`init_error`,
|
|
17
|
+
* `update_error`, `rules_error`) with the advice folded into `message`, so an
|
|
18
|
+
* agent could neither recognise the one cause nor read the next step from
|
|
19
|
+
* `fix`. `asStatus` passes the diagnostic through unchanged.
|
|
20
|
+
*/
|
|
21
|
+
export class RuleConflictError extends Error {
|
|
22
|
+
diagnostic;
|
|
23
|
+
constructor(conflicts) {
|
|
24
|
+
const message = `Workflow rule conflict:\n${conflicts.join('\n')}`;
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = 'RuleConflictError';
|
|
27
|
+
this.diagnostic = {
|
|
28
|
+
severity: 'error',
|
|
29
|
+
code: 'rule_conflict',
|
|
30
|
+
message,
|
|
31
|
+
fix: 'Preserve your edits, remove the conflicting generated files, then rerun. Force does not bypass rule conflicts.',
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
13
35
|
/**
|
|
14
36
|
* The exact text the init-only writer produced. Kept verbatim rather than
|
|
15
37
|
* regenerated from the template: its only job is to recognise files already on
|
|
@@ -80,7 +102,9 @@ export async function planWorkflowRules(projectPath, toolIds) {
|
|
|
80
102
|
const conflicts = [];
|
|
81
103
|
const readIfPresent = async (file) => {
|
|
82
104
|
try {
|
|
83
|
-
|
|
105
|
+
// An editor that saves with a BOM changed no content, so it must not read
|
|
106
|
+
// as an edit. The file is left as is when otherwise unchanged, same as CRLF.
|
|
107
|
+
return normalizeNewlines(stripBom(await fs.readFile(file, 'utf8')));
|
|
84
108
|
}
|
|
85
109
|
catch (error) {
|
|
86
110
|
if (error.code !== 'ENOENT')
|
|
@@ -127,7 +151,7 @@ export async function planWorkflowRules(projectPath, toolIds) {
|
|
|
127
151
|
}
|
|
128
152
|
}
|
|
129
153
|
if (conflicts.length > 0) {
|
|
130
|
-
throw new
|
|
154
|
+
throw new RuleConflictError(conflicts);
|
|
131
155
|
}
|
|
132
156
|
return plan;
|
|
133
157
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules-generation.js","sourceRoot":"","sources":["../../../src/core/shared/rules-generation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,QAAQ,EACR,eAAe,EACf,sBAAsB,EACtB,6BAA6B,EAC7B,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"rules-generation.js","sourceRoot":"","sources":["../../../src/core/shared/rules-generation.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,13 @@ export interface WorkflowReferenceGap {
|
|
|
54
54
|
* prose per profile would fork the installed text from the canonical template.
|
|
55
55
|
*/
|
|
56
56
|
export declare function findWorkflowReferenceGaps(selected: readonly string[]): WorkflowReferenceGap[];
|
|
57
|
+
/**
|
|
58
|
+
* The smallest selection containing `seed` that `findWorkflowReferenceGaps`
|
|
59
|
+
* finds nothing in, in registry order. Grown from the prose rather than kept
|
|
60
|
+
* as a list, so a selection suggested to the user stays gap-free as templates
|
|
61
|
+
* change which siblings they name.
|
|
62
|
+
*/
|
|
63
|
+
export declare function closeWorkflowReferences(seed: readonly string[]): WorkflowId[];
|
|
57
64
|
/**
|
|
58
65
|
* One line per skill that points somewhere the selection does not install,
|
|
59
66
|
* e.g. `tospec-archive refers to tospec-sync`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-generation.d.ts","sourceRoot":"","sources":["../../../src/core/shared/skill-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,4BAA4B,EAC5B,2BAA2B,EAC3B,kCAAkC,EAClC,0BAA0B,EAC1B,6BAA6B,EAC7B,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAOzC,QAAA,MAAM,aAAa;aACf,EAAE,EAAE,SAAS;aAAE,KAAK;;aACpB,EAAE,EAAE,OAAO;aAAE,KAAK;;aAClB,EAAE,EAAE,SAAS;aAAE,KAAK;;aACpB,EAAE,EAAE,OAAO;aAAE,KAAK;;aAClB,EAAE,EAAE,UAAU;aAAE,KAAK;;aACrB,EAAE,EAAE,QAAQ;aAAE,KAAK;;aACnB,EAAE,EAAE,OAAO;aAAE,KAAK;;aAClB,EAAE,EAAE,gBAAgB;aAAE,KAAK;;aAC3B,EAAE,EAAE,MAAM;aAAE,KAAK;;aACjB,EAAE,EAAE,SAAS;aAAE,KAAK;EACd,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAE9D,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAAmC,CAAC;AAEnF,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,IAAI,EAAE,UAAU,CAAC;IACjB,wEAAwE;IACxE,OAAO,EAAE,UAAU,CAAC;CACrB;AAWD;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,oBAAoB,EAAE,CAuBxB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,SAAS,oBAAoB,EAAE,GAAG,MAAM,CAU3F;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AASD,wBAAgB,iBAAiB,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAM1F;AAED,gEAAgE;AAChE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,EACvB,kBAAkB,EAAE,MAAM,EAC1B,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,GACvD,MAAM,CAyBR;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
1
|
+
{"version":3,"file":"skill-generation.d.ts","sourceRoot":"","sources":["../../../src/core/shared/skill-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,2BAA2B,EAC3B,8BAA8B,EAC9B,4BAA4B,EAC5B,2BAA2B,EAC3B,kCAAkC,EAClC,0BAA0B,EAC1B,6BAA6B,EAC7B,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAOzC,QAAA,MAAM,aAAa;aACf,EAAE,EAAE,SAAS;aAAE,KAAK;;aACpB,EAAE,EAAE,OAAO;aAAE,KAAK;;aAClB,EAAE,EAAE,SAAS;aAAE,KAAK;;aACpB,EAAE,EAAE,OAAO;aAAE,KAAK;;aAClB,EAAE,EAAE,UAAU;aAAE,KAAK;;aACrB,EAAE,EAAE,QAAQ;aAAE,KAAK;;aACnB,EAAE,EAAE,OAAO;aAAE,KAAK;;aAClB,EAAE,EAAE,gBAAgB;aAAE,KAAK;;aAC3B,EAAE,EAAE,MAAM;aAAE,KAAK;;aACjB,EAAE,EAAE,SAAS;aAAE,KAAK;EACd,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAE9D,eAAO,MAAM,aAAa,EAAE,SAAS,UAAU,EAAmC,CAAC;AAEnF,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,IAAI,EAAE,UAAU,CAAC;IACjB,wEAAwE;IACxE,OAAO,EAAE,UAAU,CAAC;CACrB;AAWD;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,oBAAoB,EAAE,CAuBxB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,EAAE,CAU7E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,SAAS,oBAAoB,EAAE,GAAG,MAAM,CAU3F;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AASD,wBAAgB,iBAAiB,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAM1F;AAED,gEAAgE;AAChE,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,aAAa,EACvB,kBAAkB,EAAE,MAAM,EAC1B,qBAAqB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,GACvD,MAAM,CAyBR;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -66,6 +66,25 @@ export function findWorkflowReferenceGaps(selected) {
|
|
|
66
66
|
}
|
|
67
67
|
return gaps;
|
|
68
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* The smallest selection containing `seed` that `findWorkflowReferenceGaps`
|
|
71
|
+
* finds nothing in, in registry order. Grown from the prose rather than kept
|
|
72
|
+
* as a list, so a selection suggested to the user stays gap-free as templates
|
|
73
|
+
* change which siblings they name.
|
|
74
|
+
*/
|
|
75
|
+
export function closeWorkflowReferences(seed) {
|
|
76
|
+
const selected = new Set(seed);
|
|
77
|
+
for (;;) {
|
|
78
|
+
const missing = findWorkflowReferenceGaps([...selected])
|
|
79
|
+
.map((gap) => gap.missing)
|
|
80
|
+
.filter((id) => !selected.has(id));
|
|
81
|
+
if (missing.length === 0)
|
|
82
|
+
break;
|
|
83
|
+
for (const id of missing)
|
|
84
|
+
selected.add(id);
|
|
85
|
+
}
|
|
86
|
+
return ALL_WORKFLOWS.filter((id) => selected.has(id));
|
|
87
|
+
}
|
|
69
88
|
/**
|
|
70
89
|
* One line per skill that points somewhere the selection does not install,
|
|
71
90
|
* e.g. `tospec-archive refers to tospec-sync`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-generation.js","sourceRoot":"","sources":["../../../src/core/shared/skill-generation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill-generation.js","sourceRoot":"","sources":["../../../src/core/shared/skill-generation.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,15 @@ export declare function removeUnselectedSkillDirs(skillsDir: string, desiredWork
|
|
|
47
47
|
* removeLegacySkillDirs.
|
|
48
48
|
*/
|
|
49
49
|
export declare function removeLegacyToolSkillLayout(toolBaseDir: string): Promise<number>;
|
|
50
|
+
/**
|
|
51
|
+
* Removes the slash-command entries earlier versions wrote. Every workflow
|
|
52
|
+
* ships as a skill only, and a second entry point listed each one twice.
|
|
53
|
+
*
|
|
54
|
+
* Shared by `init` and `update`, and limited to paths tospec itself wrote:
|
|
55
|
+
* `.cursor/commands/` and `.agents/commands/` also hold the user's own
|
|
56
|
+
* commands, so sweeping either directory whole deletes files tospec never owned.
|
|
57
|
+
*/
|
|
58
|
+
export declare function removeLegacyCommands(projectRoot: string): Promise<number>;
|
|
50
59
|
export declare function getToolsWithSkillsDir(): string[];
|
|
51
60
|
export declare function getToolSkillStatus(projectRoot: string, toolId: string): ToolSkillStatus;
|
|
52
61
|
export declare function getToolStates(projectRoot: string): Map<string, ToolSkillStatus>;
|
|
@@ -60,7 +69,7 @@ export declare function getConfiguredTools(projectRoot: string): string[];
|
|
|
60
69
|
* skills sit there — the right question for `update`/`rules`, where
|
|
61
70
|
* `getToolSkillStatus().configured` is wrong: a profile selecting no workflows
|
|
62
71
|
* makes `update` remove every skill dir, erasing the evidence the tool was set
|
|
63
|
-
* up.
|
|
72
|
+
* up.
|
|
64
73
|
*
|
|
65
74
|
* The workflow rule document is the durable marker: written on every
|
|
66
75
|
* init/update/rules, removed by none. The legacy `rules/tospec/decision.md` is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-detection.d.ts","sourceRoot":"","sources":["../../../src/core/shared/tool-detection.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAA4C,CAAC;AAEtF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,YAAI,eAAe,EAAE,kBAAkB,CAAU,CAAC;AAEhF,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,uEAAuE;IACvE,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,qCAAqC;IACrC,WAAW,EAAE,OAAO,CAAC;CACtB;AAsBD,0DAA0D;AAC1D,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9E;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,SAAS,MAAM,EAAE,GAClC,OAAO,CAAC,MAAM,CAAC,CASjB;AAsBD;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKtF;AAED,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAqBvF;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAQ/E;AAED,gEAAgE;AAChE,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"tool-detection.d.ts","sourceRoot":"","sources":["../../../src/core/shared/tool-detection.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAA4C,CAAC;AAEtF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,YAAI,eAAe,EAAE,kBAAkB,CAAU,CAAC;AAEhF,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,uEAAuE;IACvE,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,qCAAqC;IACrC,WAAW,EAAE,OAAO,CAAC;CACtB;AAsBD,0DAA0D;AAC1D,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9E;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,SAAS,MAAM,EAAE,GAClC,OAAO,CAAC,MAAM,CAAC,CASjB;AAsBD;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKtF;AAYD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO/E;AAED,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAqBvF;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAQ/E;AAED,gEAAgE;AAChE,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoB9E;AAED,gEAAgE;AAChE,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,GACrB,iBAAiB,CAiCnB;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAIhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAS5E"}
|
|
@@ -90,6 +90,31 @@ export async function removeLegacyToolSkillLayout(toolBaseDir) {
|
|
|
90
90
|
path.join(toolBaseDir, 'tospec'), // bare: <tool>/tospec/<workflow>
|
|
91
91
|
]);
|
|
92
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Every command id an earlier version wrote to `.cursor/commands/`. Frozen
|
|
95
|
+
* rather than derived from ALL_WORKFLOWS: a workflow renamed later would
|
|
96
|
+
* otherwise drop its old command file out of the sweep.
|
|
97
|
+
*/
|
|
98
|
+
const LEGACY_CURSOR_COMMAND_IDS = [
|
|
99
|
+
'explore', 'grill', 'propose', 'issue', 'decision',
|
|
100
|
+
'update', 'apply', 'apply-with-tdd', 'sync', 'archive',
|
|
101
|
+
];
|
|
102
|
+
/**
|
|
103
|
+
* Removes the slash-command entries earlier versions wrote. Every workflow
|
|
104
|
+
* ships as a skill only, and a second entry point listed each one twice.
|
|
105
|
+
*
|
|
106
|
+
* Shared by `init` and `update`, and limited to paths tospec itself wrote:
|
|
107
|
+
* `.cursor/commands/` and `.agents/commands/` also hold the user's own
|
|
108
|
+
* commands, so sweeping either directory whole deletes files tospec never owned.
|
|
109
|
+
*/
|
|
110
|
+
export async function removeLegacyCommands(projectRoot) {
|
|
111
|
+
return removeDirs([
|
|
112
|
+
path.join(projectRoot, '.agents', 'commands', 'tospec'),
|
|
113
|
+
path.join(projectRoot, '.claude', 'commands', 'tospec'),
|
|
114
|
+
path.join(projectRoot, '.claude', 'commands', 'tosx'),
|
|
115
|
+
...LEGACY_CURSOR_COMMAND_IDS.map((id) => path.join(projectRoot, '.cursor', 'commands', `tospec-${id}.md`)),
|
|
116
|
+
]);
|
|
117
|
+
}
|
|
93
118
|
export function getToolsWithSkillsDir() {
|
|
94
119
|
return AI_TOOLS.filter((t) => t.skillsDir).map((t) => t.value);
|
|
95
120
|
}
|
|
@@ -126,11 +151,17 @@ export function extractGeneratedByVersion(skillFilePath) {
|
|
|
126
151
|
return null;
|
|
127
152
|
}
|
|
128
153
|
const content = fs.readFileSync(skillFilePath, 'utf-8');
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
154
|
+
// Line-anchored with horizontal whitespace only, the value peeled in code.
|
|
155
|
+
// The old `^\s*…\s*["']?([^"'\n]+)["']?\s*$` let `\s*` run across lines
|
|
156
|
+
// and the value and trailing blanks split a run of spaces every possible
|
|
157
|
+
// way — quadratic on a crafted file, and init/update read every skill.
|
|
158
|
+
// A value continued onto the next line is no longer read; tospec never
|
|
159
|
+
// writes one.
|
|
160
|
+
const line = content.match(/^[ \t]*generatedBy:(.*)$/m);
|
|
161
|
+
if (!line)
|
|
162
|
+
return null;
|
|
163
|
+
const value = line[1].trim().replace(/^["']/, '').replace(/["']$/, '').trim();
|
|
164
|
+
return value || null;
|
|
134
165
|
}
|
|
135
166
|
catch {
|
|
136
167
|
return null;
|
|
@@ -177,7 +208,7 @@ export function getConfiguredTools(projectRoot) {
|
|
|
177
208
|
* skills sit there — the right question for `update`/`rules`, where
|
|
178
209
|
* `getToolSkillStatus().configured` is wrong: a profile selecting no workflows
|
|
179
210
|
* makes `update` remove every skill dir, erasing the evidence the tool was set
|
|
180
|
-
* up.
|
|
211
|
+
* up.
|
|
181
212
|
*
|
|
182
213
|
* The workflow rule document is the durable marker: written on every
|
|
183
214
|
* init/update/rules, removed by none. The legacy `rules/tospec/decision.md` is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-detection.js","sourceRoot":"","sources":["../../../src/core/shared/tool-detection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-detection.js","sourceRoot":"","sources":["../../../src/core/shared/tool-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-presenter.d.ts","sourceRoot":"","sources":["../../src/core/spec-presenter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"spec-presenter.d.ts","sourceRoot":"","sources":["../../src/core/spec-presenter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAQtD,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAkDD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,CAAS;IAI1B,YAAY,QAAQ,CAAC,EAAE,MAAM,EAG5B;IAEK,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDpE;CACF"}
|
|
@@ -4,6 +4,7 @@ import { MarkdownParser } from './parsers/markdown-parser.js';
|
|
|
4
4
|
import { emitSuccess } from '../commands/shared-output.js';
|
|
5
5
|
import { isInteractive } from '../utils/interactive.js';
|
|
6
6
|
import { getSpecIds } from '../utils/item-discovery.js';
|
|
7
|
+
import { optionFlagLabel } from '../utils/option-flags.js';
|
|
7
8
|
const SPECS_DIR = 'tospec/specs';
|
|
8
9
|
function parseSpecFromFile(specPath, specId) {
|
|
9
10
|
const content = readFileSync(specPath, 'utf-8');
|
|
@@ -13,7 +14,9 @@ function parseSpecFromFile(specPath, specId) {
|
|
|
13
14
|
function validateRequirementIndex(spec, requirementOpt) {
|
|
14
15
|
if (!requirementOpt)
|
|
15
16
|
return undefined;
|
|
16
|
-
|
|
17
|
+
// `Number`, not `parseInt`: a caller that skips the CLI's argParser must not
|
|
18
|
+
// get `2abc` truncated to requirement 2.
|
|
19
|
+
const index = Number(requirementOpt);
|
|
17
20
|
if (!Number.isInteger(index) || index < 1 || index > spec.requirements.length) {
|
|
18
21
|
throw new Error(`Requirement ${requirementOpt} not found`);
|
|
19
22
|
}
|
|
@@ -91,7 +94,26 @@ export class SpecPresenter {
|
|
|
91
94
|
}, options.rootOutput);
|
|
92
95
|
return;
|
|
93
96
|
}
|
|
97
|
+
// Here rather than in `show`, so the interactive picker path warns too. A
|
|
98
|
+
// warning, not an error, as `list --specs --type`: the raw spec is still a
|
|
99
|
+
// well-defined answer, and a filter the reader asked for must not vanish
|
|
100
|
+
// without a word.
|
|
101
|
+
const jsonOnly = jsonOnlyFlags(options);
|
|
102
|
+
if (jsonOnly.length > 0) {
|
|
103
|
+
console.error(`Warning: Ignoring flags that apply only with --json: ${jsonOnly.join(', ')}`);
|
|
104
|
+
}
|
|
94
105
|
printSpecTextRaw(specPath);
|
|
95
106
|
}
|
|
96
107
|
}
|
|
108
|
+
/** By value, not presence: a caller other than the CLI may pass `scenarios: true`. */
|
|
109
|
+
function jsonOnlyFlags(options) {
|
|
110
|
+
const flags = [];
|
|
111
|
+
if (options.requirements)
|
|
112
|
+
flags.push(optionFlagLabel('requirements'));
|
|
113
|
+
if (options.scenarios === false)
|
|
114
|
+
flags.push(optionFlagLabel('scenarios', false));
|
|
115
|
+
if (options.requirement !== undefined)
|
|
116
|
+
flags.push(optionFlagLabel('requirement'));
|
|
117
|
+
return flags;
|
|
118
|
+
}
|
|
97
119
|
//# sourceMappingURL=spec-presenter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-presenter.js","sourceRoot":"","sources":["../../src/core/spec-presenter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAG9D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"spec-presenter.js","sourceRoot":"","sources":["../../src/core/spec-presenter.ts"],"names":[],"mappings":"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"}
|