@seanmars/tospec 0.19.0-beta.7 → 0.20.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/CHANGELOG.md +60 -231
- package/README.md +69 -82
- package/assets/dashboard/app.js +14 -3
- package/assets/dashboard/style.css +7 -0
- package/assets/rules/tospec/decision.md +3 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +227 -86
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/config.d.ts +9 -17
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +366 -107
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/dashboard.d.ts +57 -99
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +224 -282
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/decision.d.ts +41 -19
- package/dist/commands/decision.d.ts.map +1 -1
- package/dist/commands/decision.js +385 -79
- package/dist/commands/decision.js.map +1 -1
- package/dist/commands/metrics.d.ts +28 -51
- package/dist/commands/metrics.d.ts.map +1 -1
- package/dist/commands/metrics.js +62 -93
- package/dist/commands/metrics.js.map +1 -1
- package/dist/commands/shared-output.d.ts +18 -21
- package/dist/commands/shared-output.d.ts.map +1 -1
- package/dist/commands/shared-output.js +49 -23
- package/dist/commands/shared-output.js.map +1 -1
- package/dist/commands/show.d.ts +7 -0
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +29 -7
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/validate.d.ts +43 -45
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +262 -129
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/workflow/index.d.ts +6 -10
- package/dist/commands/workflow/index.d.ts.map +1 -1
- package/dist/commands/workflow/index.js +6 -10
- package/dist/commands/workflow/index.js.map +1 -1
- package/dist/commands/workflow/instructions.d.ts +21 -8
- package/dist/commands/workflow/instructions.d.ts.map +1 -1
- package/dist/commands/workflow/instructions.js +254 -95
- package/dist/commands/workflow/instructions.js.map +1 -1
- package/dist/commands/workflow/new-change.d.ts +4 -5
- package/dist/commands/workflow/new-change.d.ts.map +1 -1
- package/dist/commands/workflow/new-change.js +90 -25
- package/dist/commands/workflow/new-change.js.map +1 -1
- package/dist/commands/workflow/schemas.d.ts +3 -5
- package/dist/commands/workflow/schemas.d.ts.map +1 -1
- package/dist/commands/workflow/schemas.js +37 -11
- package/dist/commands/workflow/schemas.js.map +1 -1
- package/dist/commands/workflow/shared.d.ts +48 -21
- package/dist/commands/workflow/shared.d.ts.map +1 -1
- package/dist/commands/workflow/shared.js +36 -33
- package/dist/commands/workflow/shared.js.map +1 -1
- package/dist/commands/workflow/status.d.ts +10 -6
- package/dist/commands/workflow/status.d.ts.map +1 -1
- package/dist/commands/workflow/status.js +81 -42
- package/dist/commands/workflow/status.js.map +1 -1
- package/dist/commands/workflow/templates.d.ts +10 -3
- package/dist/commands/workflow/templates.d.ts.map +1 -1
- package/dist/commands/workflow/templates.js +39 -40
- package/dist/commands/workflow/templates.js.map +1 -1
- package/dist/core/archive.d.ts +26 -21
- package/dist/core/archive.d.ts.map +1 -1
- package/dist/core/archive.js +378 -235
- package/dist/core/archive.js.map +1 -1
- package/dist/core/artifact-graph/graph.d.ts +25 -42
- package/dist/core/artifact-graph/graph.d.ts.map +1 -1
- package/dist/core/artifact-graph/graph.js +45 -63
- package/dist/core/artifact-graph/graph.js.map +1 -1
- package/dist/core/artifact-graph/index.d.ts +1 -1
- package/dist/core/artifact-graph/index.d.ts.map +1 -1
- package/dist/core/artifact-graph/index.js +1 -1
- package/dist/core/artifact-graph/index.js.map +1 -1
- package/dist/core/artifact-graph/instruction-loader.d.ts +97 -103
- package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -1
- package/dist/core/artifact-graph/instruction-loader.js +146 -119
- package/dist/core/artifact-graph/instruction-loader.js.map +1 -1
- package/dist/core/artifact-graph/outputs.d.ts +9 -23
- package/dist/core/artifact-graph/outputs.d.ts.map +1 -1
- package/dist/core/artifact-graph/outputs.js +45 -38
- package/dist/core/artifact-graph/outputs.js.map +1 -1
- package/dist/core/artifact-graph/resolver.d.ts +44 -63
- package/dist/core/artifact-graph/resolver.d.ts.map +1 -1
- package/dist/core/artifact-graph/resolver.js +85 -86
- package/dist/core/artifact-graph/resolver.js.map +1 -1
- package/dist/core/artifact-graph/schema.d.ts +0 -6
- package/dist/core/artifact-graph/schema.d.ts.map +1 -1
- package/dist/core/artifact-graph/schema.js +7 -32
- package/dist/core/artifact-graph/schema.js.map +1 -1
- package/dist/core/artifact-graph/state.d.ts +1 -8
- package/dist/core/artifact-graph/state.d.ts.map +1 -1
- package/dist/core/artifact-graph/state.js +2 -17
- package/dist/core/artifact-graph/state.js.map +1 -1
- package/dist/core/artifact-graph/stub-detection.d.ts +12 -0
- package/dist/core/artifact-graph/stub-detection.d.ts.map +1 -0
- package/dist/core/artifact-graph/stub-detection.js +39 -0
- package/dist/core/artifact-graph/stub-detection.js.map +1 -0
- package/dist/core/artifact-graph/types.d.ts +4 -0
- package/dist/core/artifact-graph/types.d.ts.map +1 -1
- package/dist/core/artifact-graph/types.js +30 -10
- package/dist/core/artifact-graph/types.js.map +1 -1
- package/dist/core/available-tools.d.ts +3 -12
- package/dist/core/available-tools.d.ts.map +1 -1
- package/dist/core/available-tools.js +4 -13
- package/dist/core/available-tools.js.map +1 -1
- package/dist/core/change-metadata/schema.d.ts +1 -1
- package/dist/core/change-metadata/schema.d.ts.map +1 -1
- package/dist/core/change-metadata/schema.js +10 -7
- package/dist/core/change-metadata/schema.js.map +1 -1
- package/dist/core/change-presenter.d.ts +23 -18
- package/dist/core/change-presenter.d.ts.map +1 -1
- package/dist/core/change-presenter.js +102 -43
- package/dist/core/change-presenter.js.map +1 -1
- package/dist/core/change-status-policy.d.ts +8 -1
- package/dist/core/change-status-policy.d.ts.map +1 -1
- package/dist/core/change-status-policy.js +25 -1
- package/dist/core/change-status-policy.js.map +1 -1
- package/dist/core/codex-metrics.d.ts +25 -45
- package/dist/core/codex-metrics.d.ts.map +1 -1
- package/dist/core/codex-metrics.js +44 -88
- package/dist/core/codex-metrics.js.map +1 -1
- package/dist/core/codex-residue.d.ts +14 -15
- package/dist/core/codex-residue.d.ts.map +1 -1
- package/dist/core/codex-residue.js +18 -22
- package/dist/core/codex-residue.js.map +1 -1
- package/dist/core/command-generation/adapters/claude.d.ts +2 -9
- package/dist/core/command-generation/adapters/claude.d.ts.map +1 -1
- package/dist/core/command-generation/adapters/claude.js +2 -12
- package/dist/core/command-generation/adapters/claude.js.map +1 -1
- package/dist/core/command-generation/adapters/index.d.ts +1 -9
- package/dist/core/command-generation/adapters/index.d.ts.map +1 -1
- package/dist/core/command-generation/adapters/index.js +1 -9
- package/dist/core/command-generation/adapters/index.js.map +1 -1
- package/dist/core/command-generation/generator.d.ts +0 -17
- package/dist/core/command-generation/generator.d.ts.map +1 -1
- package/dist/core/command-generation/generator.js +0 -17
- package/dist/core/command-generation/generator.js.map +1 -1
- package/dist/core/command-generation/index.d.ts +2 -5
- package/dist/core/command-generation/index.d.ts.map +1 -1
- package/dist/core/command-generation/index.js +0 -9
- package/dist/core/command-generation/index.js.map +1 -1
- package/dist/core/command-generation/types.d.ts +10 -36
- package/dist/core/command-generation/types.d.ts.map +1 -1
- package/dist/core/command-generation/types.js +0 -6
- package/dist/core/command-generation/types.js.map +1 -1
- package/dist/core/command-generation/yaml.d.ts +3 -18
- package/dist/core/command-generation/yaml.d.ts.map +1 -1
- package/dist/core/command-generation/yaml.js +5 -23
- package/dist/core/command-generation/yaml.js.map +1 -1
- package/dist/core/config-prompts.d.ts +2 -4
- package/dist/core/config-prompts.d.ts.map +1 -1
- package/dist/core/config-prompts.js +2 -7
- package/dist/core/config-prompts.js.map +1 -1
- package/dist/core/config-schema.d.ts +8 -53
- package/dist/core/config-schema.d.ts.map +1 -1
- package/dist/core/config-schema.js +49 -62
- package/dist/core/config-schema.js.map +1 -1
- package/dist/core/config.d.ts +39 -26
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +36 -22
- package/dist/core/config.js.map +1 -1
- package/dist/core/dashboard-activity.d.ts +7 -9
- package/dist/core/dashboard-activity.d.ts.map +1 -1
- package/dist/core/dashboard-activity.js +26 -24
- package/dist/core/dashboard-activity.js.map +1 -1
- package/dist/core/dashboard-data.d.ts +40 -22
- package/dist/core/dashboard-data.d.ts.map +1 -1
- package/dist/core/dashboard-data.js +62 -70
- package/dist/core/dashboard-data.js.map +1 -1
- package/dist/core/global-config.d.ts +24 -53
- package/dist/core/global-config.d.ts.map +1 -1
- package/dist/core/global-config.js +38 -67
- package/dist/core/global-config.js.map +1 -1
- package/dist/core/init.d.ts +25 -19
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +168 -181
- package/dist/core/init.js.map +1 -1
- package/dist/core/list.d.ts +1 -1
- package/dist/core/list.d.ts.map +1 -1
- package/dist/core/list.js +121 -28
- package/dist/core/list.js.map +1 -1
- package/dist/core/local-server.d.ts +41 -83
- package/dist/core/local-server.d.ts.map +1 -1
- package/dist/core/local-server.js +53 -98
- package/dist/core/local-server.js.map +1 -1
- package/dist/core/markdown-render.d.ts +25 -0
- package/dist/core/markdown-render.d.ts.map +1 -0
- package/dist/core/markdown-render.js +94 -0
- package/dist/core/markdown-render.js.map +1 -0
- package/dist/core/migrate.d.ts +29 -14
- package/dist/core/migrate.d.ts.map +1 -1
- package/dist/core/migrate.js +184 -122
- package/dist/core/migrate.js.map +1 -1
- package/dist/core/parsers/change-parser.d.ts +7 -10
- package/dist/core/parsers/change-parser.d.ts.map +1 -1
- package/dist/core/parsers/change-parser.js +48 -56
- package/dist/core/parsers/change-parser.js.map +1 -1
- package/dist/core/parsers/markdown-parser.d.ts +8 -9
- package/dist/core/parsers/markdown-parser.d.ts.map +1 -1
- package/dist/core/parsers/markdown-parser.js +31 -22
- package/dist/core/parsers/markdown-parser.js.map +1 -1
- package/dist/core/parsers/requirement-blocks.d.ts +43 -15
- package/dist/core/parsers/requirement-blocks.d.ts.map +1 -1
- package/dist/core/parsers/requirement-blocks.js +142 -70
- package/dist/core/parsers/requirement-blocks.js.map +1 -1
- package/dist/core/parsers/requirement-text.d.ts +73 -79
- package/dist/core/parsers/requirement-text.d.ts.map +1 -1
- package/dist/core/parsers/requirement-text.js +137 -79
- 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 +10 -6
- package/dist/core/parsers/spec-structure.js.map +1 -1
- package/dist/core/profiles.d.ts +3 -10
- package/dist/core/profiles.d.ts.map +1 -1
- package/dist/core/profiles.js +5 -12
- package/dist/core/profiles.js.map +1 -1
- package/dist/core/project-config.d.ts +43 -44
- package/dist/core/project-config.d.ts.map +1 -1
- package/dist/core/project-config.js +107 -82
- package/dist/core/project-config.js.map +1 -1
- package/dist/core/project-layout.d.ts +9 -17
- package/dist/core/project-layout.d.ts.map +1 -1
- package/dist/core/project-layout.js +16 -26
- package/dist/core/project-layout.js.map +1 -1
- package/dist/core/root-selection.d.ts +11 -7
- package/dist/core/root-selection.d.ts.map +1 -1
- package/dist/core/root-selection.js +7 -8
- package/dist/core/root-selection.js.map +1 -1
- package/dist/core/rules.d.ts +6 -1
- package/dist/core/rules.d.ts.map +1 -1
- package/dist/core/rules.js +23 -2
- package/dist/core/rules.js.map +1 -1
- package/dist/core/schema-names.d.ts +16 -0
- package/dist/core/schema-names.d.ts.map +1 -0
- package/dist/core/schema-names.js +16 -0
- package/dist/core/schema-names.js.map +1 -0
- package/dist/core/schemas/base.schema.d.ts +3 -0
- package/dist/core/schemas/base.schema.d.ts.map +1 -1
- package/dist/core/schemas/base.schema.js +22 -6
- package/dist/core/schemas/base.schema.js.map +1 -1
- package/dist/core/schemas/change.schema.d.ts +16 -0
- package/dist/core/schemas/change.schema.d.ts.map +1 -1
- package/dist/core/schemas/change.schema.js +41 -10
- package/dist/core/schemas/change.schema.js.map +1 -1
- package/dist/core/schemas/spec.schema.d.ts +2 -0
- package/dist/core/schemas/spec.schema.d.ts.map +1 -1
- package/dist/core/shared/index.d.ts +3 -8
- package/dist/core/shared/index.d.ts.map +1 -1
- package/dist/core/shared/index.js +3 -8
- package/dist/core/shared/index.js.map +1 -1
- package/dist/core/shared/rules-generation.d.ts +19 -8
- package/dist/core/shared/rules-generation.d.ts.map +1 -1
- package/dist/core/shared/rules-generation.js +117 -50
- package/dist/core/shared/rules-generation.js.map +1 -1
- package/dist/core/shared/skill-generation.d.ts +28 -43
- package/dist/core/shared/skill-generation.d.ts.map +1 -1
- package/dist/core/shared/skill-generation.js +82 -51
- package/dist/core/shared/skill-generation.js.map +1 -1
- package/dist/core/shared/tool-detection.d.ts +39 -61
- package/dist/core/shared/tool-detection.d.ts.map +1 -1
- package/dist/core/shared/tool-detection.js +88 -80
- package/dist/core/shared/tool-detection.js.map +1 -1
- package/dist/core/skill-metrics.d.ts +36 -63
- package/dist/core/skill-metrics.d.ts.map +1 -1
- package/dist/core/skill-metrics.js +34 -73
- package/dist/core/skill-metrics.js.map +1 -1
- package/dist/core/spec-presenter.js +6 -6
- package/dist/core/spec-presenter.js.map +1 -1
- package/dist/core/specs-apply.d.ts +22 -23
- package/dist/core/specs-apply.d.ts.map +1 -1
- package/dist/core/specs-apply.js +166 -193
- package/dist/core/specs-apply.js.map +1 -1
- package/dist/core/templates/fragments/interview.d.ts +2 -6
- package/dist/core/templates/fragments/interview.d.ts.map +1 -1
- package/dist/core/templates/fragments/interview.js +2 -6
- package/dist/core/templates/fragments/interview.js.map +1 -1
- package/dist/core/templates/fragments/next-step.d.ts +4 -8
- package/dist/core/templates/fragments/next-step.d.ts.map +1 -1
- package/dist/core/templates/fragments/next-step.js +4 -8
- package/dist/core/templates/fragments/next-step.js.map +1 -1
- package/dist/core/templates/fragments/validate.d.ts +13 -0
- package/dist/core/templates/fragments/validate.d.ts.map +1 -0
- package/dist/core/templates/fragments/validate.js +13 -0
- package/dist/core/templates/fragments/validate.js.map +1 -0
- package/dist/core/templates/fragments/verify.d.ts +9 -12
- package/dist/core/templates/fragments/verify.d.ts.map +1 -1
- package/dist/core/templates/fragments/verify.js +9 -12
- package/dist/core/templates/fragments/verify.js.map +1 -1
- package/dist/core/templates/index.d.ts +0 -6
- package/dist/core/templates/index.d.ts.map +1 -1
- package/dist/core/templates/index.js +0 -7
- package/dist/core/templates/index.js.map +1 -1
- package/dist/core/templates/skill-templates.d.ts +1 -5
- package/dist/core/templates/skill-templates.d.ts.map +1 -1
- package/dist/core/templates/skill-templates.js +0 -5
- package/dist/core/templates/skill-templates.js.map +1 -1
- package/dist/core/templates/types.d.ts +3 -7
- package/dist/core/templates/types.d.ts.map +1 -1
- package/dist/core/templates/types.js +0 -3
- package/dist/core/templates/types.js.map +1 -1
- package/dist/core/templates/workflows/apply.d.ts +3 -9
- package/dist/core/templates/workflows/apply.d.ts.map +1 -1
- package/dist/core/templates/workflows/apply.js +11 -13
- package/dist/core/templates/workflows/apply.js.map +1 -1
- package/dist/core/templates/workflows/archive.d.ts +0 -6
- package/dist/core/templates/workflows/archive.d.ts.map +1 -1
- package/dist/core/templates/workflows/archive.js +19 -6
- package/dist/core/templates/workflows/archive.js.map +1 -1
- package/dist/core/templates/workflows/decision.js +4 -4
- package/dist/core/templates/workflows/decision.js.map +1 -1
- package/dist/core/templates/workflows/explore.js +1 -1
- package/dist/core/templates/workflows/grill.d.ts.map +1 -1
- package/dist/core/templates/workflows/grill.js +0 -2
- package/dist/core/templates/workflows/grill.js.map +1 -1
- package/dist/core/templates/workflows/issue.d.ts +0 -6
- package/dist/core/templates/workflows/issue.d.ts.map +1 -1
- package/dist/core/templates/workflows/issue.js +3 -2
- package/dist/core/templates/workflows/issue.js.map +1 -1
- package/dist/core/templates/workflows/propose.d.ts +0 -6
- package/dist/core/templates/workflows/propose.d.ts.map +1 -1
- package/dist/core/templates/workflows/propose.js +2 -2
- package/dist/core/templates/workflows/propose.js.map +1 -1
- package/dist/core/templates/workflows/sync.d.ts +2 -8
- package/dist/core/templates/workflows/sync.d.ts.map +1 -1
- package/dist/core/templates/workflows/sync.js +4 -3
- package/dist/core/templates/workflows/sync.js.map +1 -1
- package/dist/core/templates/workflows/update.d.ts +0 -6
- package/dist/core/templates/workflows/update.d.ts.map +1 -1
- package/dist/core/templates/workflows/update.js +9 -2
- package/dist/core/templates/workflows/update.js.map +1 -1
- package/dist/core/update.d.ts +23 -23
- package/dist/core/update.d.ts.map +1 -1
- package/dist/core/update.js +139 -118
- package/dist/core/update.js.map +1 -1
- package/dist/core/user-state-migration.d.ts +13 -15
- package/dist/core/user-state-migration.d.ts.map +1 -1
- package/dist/core/user-state-migration.js +16 -20
- package/dist/core/user-state-migration.js.map +1 -1
- package/dist/core/validation/constants.d.ts +4 -10
- package/dist/core/validation/constants.d.ts.map +1 -1
- package/dist/core/validation/constants.js +25 -20
- package/dist/core/validation/constants.js.map +1 -1
- package/dist/core/validation/prose-length.d.ts +15 -0
- package/dist/core/validation/prose-length.d.ts.map +1 -0
- package/dist/core/validation/prose-length.js +29 -0
- package/dist/core/validation/prose-length.js.map +1 -0
- package/dist/core/validation/purpose-placeholder.d.ts +9 -16
- package/dist/core/validation/purpose-placeholder.d.ts.map +1 -1
- package/dist/core/validation/purpose-placeholder.js +30 -44
- package/dist/core/validation/purpose-placeholder.js.map +1 -1
- package/dist/core/validation/section-validator.d.ts +4 -4
- package/dist/core/validation/section-validator.d.ts.map +1 -1
- package/dist/core/validation/section-validator.js +43 -7
- package/dist/core/validation/section-validator.js.map +1 -1
- package/dist/core/validation/task-numbering.d.ts +6 -3
- package/dist/core/validation/task-numbering.d.ts.map +1 -1
- package/dist/core/validation/task-numbering.js +23 -11
- package/dist/core/validation/task-numbering.js.map +1 -1
- package/dist/core/validation/types.d.ts +18 -0
- package/dist/core/validation/types.d.ts.map +1 -1
- package/dist/core/validation/types.js +12 -1
- package/dist/core/validation/types.js.map +1 -1
- package/dist/core/validation/validator.d.ts +43 -63
- package/dist/core/validation/validator.d.ts.map +1 -1
- package/dist/core/validation/validator.js +500 -267
- package/dist/core/validation/validator.js.map +1 -1
- package/dist/prompts/searchable-multi-select.d.ts +3 -8
- package/dist/prompts/searchable-multi-select.d.ts.map +1 -1
- package/dist/prompts/searchable-multi-select.js +16 -39
- package/dist/prompts/searchable-multi-select.js.map +1 -1
- package/dist/utils/change-metadata.d.ts +11 -50
- package/dist/utils/change-metadata.d.ts.map +1 -1
- package/dist/utils/change-metadata.js +48 -67
- package/dist/utils/change-metadata.js.map +1 -1
- package/dist/utils/change-utils.d.ts +30 -54
- package/dist/utils/change-utils.d.ts.map +1 -1
- package/dist/utils/change-utils.js +133 -91
- package/dist/utils/change-utils.js.map +1 -1
- package/dist/utils/file-lock.d.ts +39 -0
- package/dist/utils/file-lock.d.ts.map +1 -0
- package/dist/utils/file-lock.js +149 -0
- package/dist/utils/file-lock.js.map +1 -0
- package/dist/utils/file-system.d.ts +12 -32
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +16 -40
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/frontmatter.d.ts +7 -11
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +11 -11
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/interactive.d.ts +4 -9
- package/dist/utils/interactive.d.ts.map +1 -1
- package/dist/utils/interactive.js +2 -4
- package/dist/utils/interactive.js.map +1 -1
- package/dist/utils/item-discovery.d.ts +15 -10
- package/dist/utils/item-discovery.d.ts.map +1 -1
- package/dist/utils/item-discovery.js +42 -47
- package/dist/utils/item-discovery.js.map +1 -1
- package/dist/utils/link.d.ts +9 -18
- package/dist/utils/link.d.ts.map +1 -1
- package/dist/utils/link.js +9 -18
- package/dist/utils/link.js.map +1 -1
- package/dist/utils/requirement-diff.d.ts +13 -23
- package/dist/utils/requirement-diff.d.ts.map +1 -1
- package/dist/utils/requirement-diff.js +13 -23
- package/dist/utils/requirement-diff.js.map +1 -1
- package/dist/utils/spec-files.d.ts +7 -20
- package/dist/utils/spec-files.d.ts.map +1 -1
- package/dist/utils/spec-files.js +26 -51
- package/dist/utils/spec-files.js.map +1 -1
- package/dist/utils/task-progress.d.ts +11 -9
- package/dist/utils/task-progress.d.ts.map +1 -1
- package/dist/utils/task-progress.js +53 -32
- package/dist/utils/task-progress.js.map +1 -1
- package/dist/utils/timestamp.d.ts +5 -8
- package/dist/utils/timestamp.d.ts.map +1 -1
- package/dist/utils/timestamp.js +5 -8
- package/dist/utils/timestamp.js.map +1 -1
- package/package.json +2 -3
- package/schemas/decision/templates/decision.md +3 -1
- package/schemas/decision/templates/index.md +2 -2
- package/schemas/issue/schema.yaml +8 -1
- package/schemas/issue/templates/spec.md +27 -2
- package/schemas/sdd/schema.yaml +20 -1
- package/schemas/sdd/templates/spec.md +27 -2
- /package/assets/rules/tospec/{single-sourc-of-truth.md → single-source-of-truth.md} +0 -0
|
@@ -1,65 +1,161 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Generates enriched instructions for creating artifacts or applying tasks.
|
|
5
|
-
* Includes both artifact instructions and apply instructions.
|
|
2
|
+
* `tospec instructions` — enriched briefs for creating an artifact, or for the
|
|
3
|
+
* apply phase.
|
|
6
4
|
*/
|
|
7
5
|
import path from 'path';
|
|
8
6
|
import * as fs from 'fs';
|
|
9
7
|
import { loadChangeContext, generateInstructions, resolveSchema, resolveArtifactOutputs, } from '../../core/artifact-graph/index.js';
|
|
10
8
|
import { getChangeDir, resolveCurrentPlanningHomeSync, } from '../../core/planning-home.js';
|
|
11
9
|
import { resolveRootForCommand, toPlanningHome, toRootOutput, } from '../../core/root-selection.js';
|
|
12
|
-
import {
|
|
13
|
-
import { parseTasksFromContent } from '../../utils/task-progress.js';
|
|
14
|
-
import { validateChangeExists, validateSchemaExists, } from './shared.js';
|
|
10
|
+
import { APPLY_RULES_KEY, readProjectConfigWithDiagnostics } from '../../core/project-config.js';
|
|
11
|
+
import { parseTasksFromContent, resolveTaskFiles } from '../../utils/task-progress.js';
|
|
12
|
+
import { validateChangeExists, validateSchemaExists, assertChangeSchema, } from './shared.js';
|
|
15
13
|
import { emitSuccess } from '../shared-output.js';
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
/**
|
|
15
|
+
* The `--json` null-shape. This command's success payload is flat, so there is
|
|
16
|
+
* no wrapper key to null; `instruction` is the one key both success shapes
|
|
17
|
+
* (artifact and apply) carry.
|
|
18
|
+
*
|
|
19
|
+
* Exported so the commander-level shape table and this command's catch block
|
|
20
|
+
* cannot drift apart.
|
|
21
|
+
*/
|
|
22
|
+
export const INSTRUCTIONS_FAILURE_PAYLOAD = {
|
|
23
|
+
instruction: null,
|
|
24
|
+
root: null,
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* The one argument this command accepts that is not a schema artifact. Exported
|
|
28
|
+
* so the CLI's dispatch and the "valid arguments" list read one value.
|
|
29
|
+
*/
|
|
30
|
+
export const APPLY_ARGUMENT = 'apply';
|
|
31
|
+
async function resolveInstructionsTarget(options) {
|
|
32
|
+
// No implicit root, as `status`: "Change 'x' not found. No changes exist."
|
|
33
|
+
// about a directory that is no project sends the agent to `new change`
|
|
34
|
+
// instead of `init`.
|
|
35
|
+
const root = await resolveRootForCommand(options, {
|
|
36
|
+
json: options.json,
|
|
37
|
+
allowImplicitRoot: false,
|
|
38
|
+
failurePayload: INSTRUCTIONS_FAILURE_PAYLOAD,
|
|
39
|
+
});
|
|
21
40
|
if (!root) {
|
|
22
|
-
return;
|
|
41
|
+
return null;
|
|
23
42
|
}
|
|
24
|
-
const planningHome = toPlanningHome(root);
|
|
25
43
|
const projectRoot = root.path;
|
|
26
|
-
const changeName = await validateChangeExists(options.change, projectRoot, root.changesDir, { newChangeHint: 'tospec new change <name>' });
|
|
27
|
-
// Validate schema if explicitly provided
|
|
28
44
|
if (options.schema) {
|
|
29
45
|
validateSchemaExists(options.schema, projectRoot);
|
|
46
|
+
assertChangeSchema(options.schema);
|
|
30
47
|
}
|
|
31
|
-
|
|
48
|
+
const changeName = await validateChangeExists(options.change, projectRoot, root.changesDir, {
|
|
49
|
+
newChangeHint: 'tospec new change <name>',
|
|
50
|
+
});
|
|
51
|
+
return { root, planningHome: toPlanningHome(root), projectRoot, changeName };
|
|
52
|
+
}
|
|
53
|
+
export async function instructionsCommand(artifactId, options) {
|
|
54
|
+
const target = await resolveInstructionsTarget(options);
|
|
55
|
+
if (!target) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const { root, planningHome, projectRoot, changeName } = target;
|
|
59
|
+
// The schema comes from the change's metadata when not given.
|
|
32
60
|
const context = loadChangeContext(projectRoot, changeName, options.schema, {
|
|
33
61
|
changeDir: getChangeDir(planningHome, changeName),
|
|
34
62
|
planningHome,
|
|
35
63
|
});
|
|
64
|
+
// Includes `apply`: the schema's artifacts alone omit the one valid argument
|
|
65
|
+
// that is not an artifact.
|
|
66
|
+
const validArgumentList = () => [...context.graph.getAllArtifacts().map((a) => a.id), APPLY_ARGUMENT].join('\n ');
|
|
36
67
|
if (!artifactId) {
|
|
37
|
-
|
|
38
|
-
throw new Error(`Missing required argument <artifact>. Valid artifacts:\n ${validIds.join('\n ')}`);
|
|
68
|
+
throw new Error(`Missing required argument <artifact>. Valid arguments:\n ${validArgumentList()}`);
|
|
39
69
|
}
|
|
40
70
|
const artifact = context.graph.getArtifact(artifactId);
|
|
41
71
|
if (!artifact) {
|
|
42
|
-
|
|
43
|
-
throw new Error(`Artifact '${artifactId}' not found in schema '${context.schemaName}'. Valid artifacts:\n ${validIds.join('\n ')}`);
|
|
72
|
+
throw new Error(`Artifact '${artifactId}' not found in schema '${context.schemaName}'. Valid arguments:\n ${validArgumentList()}`);
|
|
44
73
|
}
|
|
45
|
-
//
|
|
46
|
-
|
|
74
|
+
// Never throws: a missing or unparseable config comes back null with the
|
|
75
|
+
// reason in `diagnostics`.
|
|
76
|
+
const { config: projectConfig, diagnostics: configDiagnostics } = readProjectConfigWithDiagnostics(root.path);
|
|
47
77
|
const instructions = generateInstructions(context, artifactId, projectRoot, {
|
|
48
78
|
projectConfig,
|
|
79
|
+
configDiagnostics,
|
|
49
80
|
});
|
|
50
81
|
const isBlocked = instructions.dependencies.some((d) => !d.done);
|
|
82
|
+
// `status` says "skipped" for this artifact, so a brief that reads as a
|
|
83
|
+
// plain "write it" sends an agent into the contradiction `validate` rejects
|
|
84
|
+
// (marker set, spec files present). Said first, in both output modes.
|
|
85
|
+
const isSkipped = context.skippedArtifacts?.has(artifactId) ?? false;
|
|
51
86
|
if (options.json) {
|
|
52
|
-
|
|
87
|
+
// `configWarnings` becomes `status[]`, the envelope field every command
|
|
88
|
+
// reports non-fatal trouble in.
|
|
89
|
+
const { configWarnings, ...payload } = instructions;
|
|
90
|
+
// First, ahead of any config warning: it is the one entry telling an agent
|
|
91
|
+
// not to write the artifact yet. The alternative is inferring it from
|
|
92
|
+
// `dependencies[].done`.
|
|
93
|
+
const status = [
|
|
94
|
+
...skippedDiagnostics(instructions, changeName, isSkipped),
|
|
95
|
+
...blockedDiagnostics(instructions, changeName),
|
|
96
|
+
...(configWarnings ?? []).map(({ code, message }) => ({
|
|
97
|
+
severity: 'warning',
|
|
98
|
+
code,
|
|
99
|
+
message,
|
|
100
|
+
})),
|
|
101
|
+
];
|
|
102
|
+
emitSuccess({
|
|
103
|
+
...payload,
|
|
104
|
+
...(status.length ? { status } : {}),
|
|
105
|
+
}, toRootOutput(root));
|
|
53
106
|
return;
|
|
54
107
|
}
|
|
55
|
-
printInstructionsText(instructions, isBlocked);
|
|
108
|
+
printInstructionsText(instructions, isBlocked, { skipped: isSkipped });
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* The "declared away" warning, as a `status[]` entry — the JSON half of the
|
|
112
|
+
* `<warning>` block the human output prints. Empty unless the change's
|
|
113
|
+
* metadata skips this artifact.
|
|
114
|
+
*/
|
|
115
|
+
function skippedDiagnostics(instructions, changeName, skipped) {
|
|
116
|
+
if (!skipped)
|
|
117
|
+
return [];
|
|
118
|
+
return [
|
|
119
|
+
{
|
|
120
|
+
severity: 'warning',
|
|
121
|
+
code: 'artifact_skipped',
|
|
122
|
+
message: skippedArtifactMessage(instructions.artifactId, changeName),
|
|
123
|
+
fix: `Remove skip_specs from the change's .tospec.yaml before writing ${instructions.artifactId}.`,
|
|
124
|
+
},
|
|
125
|
+
];
|
|
126
|
+
}
|
|
127
|
+
function skippedArtifactMessage(artifactId, changeName) {
|
|
128
|
+
return `Change '${changeName}' declared '${artifactId}' away (skip_specs: true in .tospec.yaml). Writing it now leaves the marker contradicting the files, which validation rejects.`;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* The unmet-dependency warning, as a `status[]` entry — the JSON half of the
|
|
132
|
+
* `<warning>` block the human output prints. Empty when nothing is missing, so
|
|
133
|
+
* the caller can concatenate it unconditionally.
|
|
134
|
+
*/
|
|
135
|
+
function blockedDiagnostics(instructions, changeName) {
|
|
136
|
+
const missing = instructions.dependencies.filter((d) => !d.done).map((d) => d.id);
|
|
137
|
+
if (missing.length === 0)
|
|
138
|
+
return [];
|
|
139
|
+
return [
|
|
140
|
+
{
|
|
141
|
+
severity: 'warning',
|
|
142
|
+
code: 'artifact_blocked',
|
|
143
|
+
message: `Artifact '${instructions.artifactId}' has unmet dependencies: ${missing.join(', ')}. Complete them first or proceed with caution.`,
|
|
144
|
+
fix: `Run: tospec instructions ${missing[0]} --change ${changeName}`,
|
|
145
|
+
},
|
|
146
|
+
];
|
|
56
147
|
}
|
|
57
|
-
export function printInstructionsText(instructions, isBlocked) {
|
|
58
|
-
const { artifactId, changeName, schemaName, changeDir, resolvedOutputPath, description, instruction, context, rules, template, dependencies, unlocks, } = instructions;
|
|
59
|
-
// Opening tag
|
|
148
|
+
export function printInstructionsText(instructions, isBlocked, flags = {}) {
|
|
149
|
+
const { artifactId, changeName, schemaName, changeDir, resolvedOutputPath, description, instruction, context, rules, template, validation, dependencies, unlocks, changeMetadata, } = instructions;
|
|
60
150
|
console.log(`<artifact id="${artifactId}" change="${changeName}" schema="${schemaName}">`);
|
|
61
151
|
console.log();
|
|
62
|
-
|
|
152
|
+
if (flags.skipped) {
|
|
153
|
+
console.log('<warning>');
|
|
154
|
+
console.log(skippedArtifactMessage(artifactId, changeName));
|
|
155
|
+
console.log(`Remove skip_specs from the change's .tospec.yaml before writing ${artifactId}.`);
|
|
156
|
+
console.log('</warning>');
|
|
157
|
+
console.log();
|
|
158
|
+
}
|
|
63
159
|
if (isBlocked) {
|
|
64
160
|
const missing = dependencies.filter((d) => !d.done).map((d) => d.id);
|
|
65
161
|
console.log('<warning>');
|
|
@@ -68,13 +164,29 @@ export function printInstructionsText(instructions, isBlocked) {
|
|
|
68
164
|
console.log('</warning>');
|
|
69
165
|
console.log();
|
|
70
166
|
}
|
|
71
|
-
// Task directive
|
|
72
167
|
console.log('<task>');
|
|
73
168
|
console.log(`Create the ${artifactId} artifact for change "${changeName}".`);
|
|
74
169
|
console.log(description);
|
|
75
170
|
console.log('</task>');
|
|
76
171
|
console.log();
|
|
77
|
-
//
|
|
172
|
+
// What `tospec new change` recorded, same as the JSON payload's
|
|
173
|
+
// `changeMetadata`: without it the text reader never learns the goal or which
|
|
174
|
+
// ADRs drove the change.
|
|
175
|
+
const decisions = changeMetadata.decisions ?? [];
|
|
176
|
+
if (changeMetadata.goal || decisions.length > 0) {
|
|
177
|
+
console.log('<change_context>');
|
|
178
|
+
if (changeMetadata.goal) {
|
|
179
|
+
console.log(`Goal: ${changeMetadata.goal}`);
|
|
180
|
+
}
|
|
181
|
+
if (decisions.length > 0) {
|
|
182
|
+
console.log('Decisions driving this change (read them under tospec/decisions/):');
|
|
183
|
+
for (const file of decisions) {
|
|
184
|
+
console.log(`- ${file}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
console.log('</change_context>');
|
|
188
|
+
console.log();
|
|
189
|
+
}
|
|
78
190
|
if (context) {
|
|
79
191
|
console.log('<project_context>');
|
|
80
192
|
console.log('<!-- This is background information for you. Do NOT include this in your output. -->');
|
|
@@ -82,7 +194,6 @@ export function printInstructionsText(instructions, isBlocked) {
|
|
|
82
194
|
console.log('</project_context>');
|
|
83
195
|
console.log();
|
|
84
196
|
}
|
|
85
|
-
// Rules (AI constraint - do not include in output)
|
|
86
197
|
if (rules && rules.length > 0) {
|
|
87
198
|
console.log('<rules>');
|
|
88
199
|
console.log('<!-- These are constraints for you to follow. Do NOT include this in your output. -->');
|
|
@@ -92,7 +203,6 @@ export function printInstructionsText(instructions, isBlocked) {
|
|
|
92
203
|
console.log('</rules>');
|
|
93
204
|
console.log();
|
|
94
205
|
}
|
|
95
|
-
// Dependencies (files to read for context)
|
|
96
206
|
if (dependencies.length > 0) {
|
|
97
207
|
console.log('<dependencies>');
|
|
98
208
|
console.log('Read the current contents of these files before creating this artifact (re-read them from disk even if you saw them earlier - they may have been edited since):');
|
|
@@ -108,46 +218,48 @@ export function printInstructionsText(instructions, isBlocked) {
|
|
|
108
218
|
console.log('</dependencies>');
|
|
109
219
|
console.log();
|
|
110
220
|
}
|
|
111
|
-
// Output location
|
|
112
221
|
console.log('<output>');
|
|
113
222
|
console.log(`Write to: ${resolvedOutputPath}`);
|
|
114
223
|
console.log('</output>');
|
|
115
224
|
console.log();
|
|
116
|
-
// Instruction (guidance)
|
|
117
225
|
if (instruction) {
|
|
118
226
|
console.log('<instruction>');
|
|
119
227
|
console.log(instruction.trim());
|
|
120
228
|
console.log('</instruction>');
|
|
121
229
|
console.log();
|
|
122
230
|
}
|
|
123
|
-
// Template
|
|
124
231
|
console.log('<template>');
|
|
125
232
|
console.log('<!-- Use this as the structure for your output file. Fill in the sections. -->');
|
|
126
233
|
console.log(template.trim());
|
|
127
234
|
console.log('</template>');
|
|
128
235
|
console.log();
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
236
|
+
// The schema's own acceptance criteria, present only when it declares some:
|
|
237
|
+
// an empty block would claim there are none.
|
|
238
|
+
if (validation) {
|
|
239
|
+
console.log('<success_criteria>');
|
|
240
|
+
if (validation.requiredSections.length > 0) {
|
|
241
|
+
console.log(`Required sections: ${validation.requiredSections.map((s) => `## ${s}`).join(', ')}`);
|
|
242
|
+
}
|
|
243
|
+
for (const [section, minLength] of Object.entries(validation.minSectionLength)) {
|
|
244
|
+
console.log(`Section "${section}" must be at least ${minLength} characters.`);
|
|
245
|
+
}
|
|
246
|
+
for (const [section, maxLength] of Object.entries(validation.maxSectionLength ?? {})) {
|
|
247
|
+
console.log(`Section "${section}" should stay under ${maxLength} characters.`);
|
|
248
|
+
}
|
|
249
|
+
console.log('</success_criteria>');
|
|
250
|
+
console.log();
|
|
251
|
+
}
|
|
135
252
|
if (unlocks.length > 0) {
|
|
136
253
|
console.log('<unlocks>');
|
|
137
254
|
console.log(`Completing this artifact enables: ${unlocks.join(', ')}`);
|
|
138
255
|
console.log('</unlocks>');
|
|
139
256
|
console.log();
|
|
140
257
|
}
|
|
141
|
-
// Closing tag
|
|
142
258
|
console.log('</artifact>');
|
|
143
259
|
}
|
|
144
|
-
// -----------------------------------------------------------------------------
|
|
145
|
-
// Apply Instructions Command
|
|
146
|
-
// -----------------------------------------------------------------------------
|
|
147
260
|
/**
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
* (see skill-generation.ts for the generated list).
|
|
261
|
+
* The planning skill that produces a schema's artifacts, so blocked-state
|
|
262
|
+
* instructions point at a skill that exists.
|
|
151
263
|
*/
|
|
152
264
|
function planningSkillFor(schemaName) {
|
|
153
265
|
if (schemaName === 'issue')
|
|
@@ -157,39 +269,50 @@ function planningSkillFor(schemaName) {
|
|
|
157
269
|
return 'tospec-propose (sdd) or tospec-issue (issue)';
|
|
158
270
|
}
|
|
159
271
|
/**
|
|
160
|
-
*
|
|
272
|
+
* How to name the tracked task file in a message to the user. `path.basename`
|
|
273
|
+
* alone turns a glob (`tasks/*.md`) into a bare `*.md`, which names no file, so
|
|
274
|
+
* a glob keeps the `tracks` value as the schema authored it.
|
|
275
|
+
*/
|
|
276
|
+
function describeTracksFile(tracksFile) {
|
|
277
|
+
return /[*?[\]]/.test(tracksFile) ? tracksFile : path.basename(tracksFile);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
161
280
|
* Shares `parseTasksFromContent` with task progress so the apply instructions
|
|
162
281
|
* and the reported `x/y` can never disagree about what counts as a task.
|
|
163
282
|
*/
|
|
164
283
|
function parseTasksFile(content) {
|
|
165
|
-
return parseTasksFromContent(content).map((task, i) =>
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
284
|
+
return parseTasksFromContent(content).map((task, i) => {
|
|
285
|
+
// The number the file gives the task, not this array's index: they diverge
|
|
286
|
+
// the moment a slice starts at 2.1 or a task is deleted, and the id is what
|
|
287
|
+
// a caller quotes back. Falls back to the ordinal when there is none.
|
|
288
|
+
const numbered = /^(\d+(?:\.\d+)*)\s+(.*)$/.exec(task.text);
|
|
289
|
+
return {
|
|
290
|
+
id: numbered?.[1] ?? `${i + 1}`,
|
|
291
|
+
// Without that number, since `id` carries it and a consumer joining the
|
|
292
|
+
// two would render "1.1 1.1 Write a failing test".
|
|
293
|
+
description: numbered?.[2] ?? task.text,
|
|
294
|
+
done: task.done,
|
|
295
|
+
};
|
|
296
|
+
});
|
|
170
297
|
}
|
|
171
298
|
/**
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
* required artifacts, tracking file, and instruction.
|
|
299
|
+
* Apply instructions for a change, from the schema's `apply` block: required
|
|
300
|
+
* artifacts, tracking file, and instruction.
|
|
175
301
|
*/
|
|
176
302
|
export async function generateApplyInstructions(projectRoot, changeName, schemaName, options = {}) {
|
|
177
303
|
const planningHome = options.planningHome ?? resolveCurrentPlanningHomeSync({ startPath: projectRoot });
|
|
178
|
-
//
|
|
304
|
+
// The schema comes from the change's metadata when not given.
|
|
179
305
|
const context = loadChangeContext(projectRoot, changeName, schemaName, {
|
|
180
306
|
changeDir: getChangeDir(planningHome, changeName),
|
|
181
307
|
planningHome,
|
|
182
308
|
});
|
|
183
309
|
const changeDir = context.changeDir;
|
|
184
|
-
// Get the full schema to access the apply phase configuration
|
|
185
310
|
const schema = resolveSchema(context.schemaName, projectRoot);
|
|
186
311
|
const applyConfig = schema.apply;
|
|
187
|
-
//
|
|
188
|
-
// Fallback: if no apply block, require all artifacts
|
|
312
|
+
// No apply block: require every artifact.
|
|
189
313
|
const requiredArtifactIds = applyConfig?.requires ?? schema.artifacts.map((a) => a.id);
|
|
190
314
|
const tracksFile = applyConfig?.tracks ?? null;
|
|
191
315
|
const schemaInstruction = applyConfig?.instruction ?? null;
|
|
192
|
-
// Check which required artifacts are missing
|
|
193
316
|
const missingArtifacts = [];
|
|
194
317
|
for (const artifactId of requiredArtifactIds) {
|
|
195
318
|
const artifact = schema.artifacts.find((a) => a.id === artifactId);
|
|
@@ -197,7 +320,6 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
|
|
|
197
320
|
missingArtifacts.push(artifactId);
|
|
198
321
|
}
|
|
199
322
|
}
|
|
200
|
-
// Build context files from all existing artifacts in schema
|
|
201
323
|
const contextFiles = {};
|
|
202
324
|
for (const artifact of schema.artifacts) {
|
|
203
325
|
const outputs = resolveArtifactOutputs(changeDir, artifact.generates);
|
|
@@ -205,22 +327,22 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
|
|
|
205
327
|
contextFiles[artifact.id] = outputs;
|
|
206
328
|
}
|
|
207
329
|
}
|
|
208
|
-
//
|
|
330
|
+
// Through `resolveTaskFiles`, the resolver `list`, the dashboard and archive's
|
|
331
|
+
// completeness gate share: `apply.tracks` names an artifact by its `generates`
|
|
332
|
+
// value, which may be a glob (`tasks/*.md`). Treated as a literal path it
|
|
333
|
+
// finds no file, so a multi-file schema reports `blocked` and `0/0`.
|
|
209
334
|
let tasks = [];
|
|
210
335
|
let tracksFileExists = false;
|
|
211
336
|
if (tracksFile) {
|
|
212
|
-
const
|
|
213
|
-
tracksFileExists =
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
tasks = parseTasksFile(tasksContent);
|
|
337
|
+
const trackedFiles = resolveTaskFiles(changeDir, projectRoot).filter((file) => fs.existsSync(file));
|
|
338
|
+
tracksFileExists = trackedFiles.length > 0;
|
|
339
|
+
for (const file of trackedFiles) {
|
|
340
|
+
tasks.push(...parseTasksFile(await fs.promises.readFile(file, 'utf-8')));
|
|
217
341
|
}
|
|
218
342
|
}
|
|
219
|
-
// Calculate progress
|
|
220
343
|
const total = tasks.length;
|
|
221
344
|
const complete = tasks.filter((t) => t.done).length;
|
|
222
345
|
const remaining = total - complete;
|
|
223
|
-
// Determine state and instruction
|
|
224
346
|
let state;
|
|
225
347
|
let instruction;
|
|
226
348
|
const planningSkill = planningSkillFor(context.schemaName);
|
|
@@ -229,14 +351,12 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
|
|
|
229
351
|
instruction = `Cannot apply this change yet. Missing artifacts: ${missingArtifacts.join(', ')}.\nStop and send the user back to ${planningSkill} to create the missing artifacts first.`;
|
|
230
352
|
}
|
|
231
353
|
else if (tracksFile && !tracksFileExists) {
|
|
232
|
-
|
|
233
|
-
const tracksFilename = path.basename(tracksFile);
|
|
354
|
+
const tracksFilename = describeTracksFile(tracksFile);
|
|
234
355
|
state = 'blocked';
|
|
235
356
|
instruction = `The ${tracksFilename} file is missing and must be created.\nStop and send the user back to ${planningSkill} to generate the tracking file.`;
|
|
236
357
|
}
|
|
237
358
|
else if (tracksFile && tracksFileExists && total === 0) {
|
|
238
|
-
|
|
239
|
-
const tracksFilename = path.basename(tracksFile);
|
|
359
|
+
const tracksFilename = describeTracksFile(tracksFile);
|
|
240
360
|
state = 'blocked';
|
|
241
361
|
instruction = `The ${tracksFilename} file exists but contains no tasks.\nAdd tasks to ${tracksFilename} or stop and send the user back to ${planningSkill} to regenerate it.`;
|
|
242
362
|
}
|
|
@@ -245,7 +365,6 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
|
|
|
245
365
|
instruction = 'All tasks are complete! This change is ready to be archived.\nConsider running tests and reviewing the changes before archiving.';
|
|
246
366
|
}
|
|
247
367
|
else if (!tracksFile) {
|
|
248
|
-
// No tracking file configured in schema - ready to apply
|
|
249
368
|
state = 'ready';
|
|
250
369
|
instruction = schemaInstruction?.trim() ?? 'All required artifacts complete. Proceed with implementation.';
|
|
251
370
|
}
|
|
@@ -253,6 +372,22 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
|
|
|
253
372
|
state = 'ready';
|
|
254
373
|
instruction = schemaInstruction?.trim() ?? 'Read context files, work through pending tasks, mark complete as you go.\nPause if you hit blockers or need clarification.';
|
|
255
374
|
}
|
|
375
|
+
// Absent artifacts `apply.requires` does not insist on: reported, not
|
|
376
|
+
// blocking. sdd's apply requires only `tasks`, so a change missing
|
|
377
|
+
// proposal/design/specs reaches `ready` while its instruction still refers
|
|
378
|
+
// to them.
|
|
379
|
+
const missingContext = schema.artifacts
|
|
380
|
+
.filter((artifact) => !contextFiles[artifact.id] && !missingArtifacts.includes(artifact.id))
|
|
381
|
+
.map((artifact) => artifact.id);
|
|
382
|
+
if (missingContext.length > 0 && state !== 'blocked') {
|
|
383
|
+
instruction += `
|
|
384
|
+
|
|
385
|
+
Not present in this change: ${missingContext.join(', ')}. Ignore any part of the above that refers to them.`;
|
|
386
|
+
}
|
|
387
|
+
// The project's own context and rules, as every artifact's instructions carry.
|
|
388
|
+
const { config: projectConfig, diagnostics: configWarnings } = readProjectConfigWithDiagnostics(projectRoot);
|
|
389
|
+
const configContext = projectConfig?.context?.trim() || undefined;
|
|
390
|
+
const applyRules = projectConfig?.rules?.[APPLY_RULES_KEY];
|
|
256
391
|
return {
|
|
257
392
|
changeName,
|
|
258
393
|
changeDir,
|
|
@@ -262,37 +397,63 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
|
|
|
262
397
|
tasks,
|
|
263
398
|
state,
|
|
264
399
|
missingArtifacts: missingArtifacts.length > 0 ? missingArtifacts : undefined,
|
|
400
|
+
missingContext: missingContext.length > 0 ? missingContext : undefined,
|
|
265
401
|
instruction,
|
|
402
|
+
...(configContext ? { context: configContext } : {}),
|
|
403
|
+
...(applyRules?.length ? { rules: applyRules } : {}),
|
|
404
|
+
...(configWarnings.length ? { configWarnings } : {}),
|
|
266
405
|
};
|
|
267
406
|
}
|
|
268
407
|
export async function applyInstructionsCommand(options) {
|
|
269
|
-
const
|
|
270
|
-
if (!
|
|
408
|
+
const target = await resolveInstructionsTarget(options);
|
|
409
|
+
if (!target) {
|
|
271
410
|
return;
|
|
272
411
|
}
|
|
273
|
-
const planningHome =
|
|
274
|
-
const projectRoot = root.path;
|
|
275
|
-
const changeName = await validateChangeExists(options.change, projectRoot, root.changesDir, { newChangeHint: 'tospec new change <name>' });
|
|
276
|
-
// Validate schema if explicitly provided
|
|
277
|
-
if (options.schema) {
|
|
278
|
-
validateSchemaExists(options.schema, projectRoot);
|
|
279
|
-
}
|
|
280
|
-
// generateApplyInstructions uses loadChangeContext which auto-detects schema
|
|
412
|
+
const { root, planningHome, projectRoot, changeName } = target;
|
|
281
413
|
const instructions = await generateApplyInstructions(projectRoot, changeName, options.schema, {
|
|
282
414
|
planningHome,
|
|
283
415
|
});
|
|
284
416
|
if (options.json) {
|
|
285
|
-
|
|
417
|
+
// As in the artifact payload: `configWarnings` becomes the envelope's
|
|
418
|
+
// `status[]`, not a field of its own.
|
|
419
|
+
const { configWarnings, ...payload } = instructions;
|
|
420
|
+
emitSuccess({
|
|
421
|
+
...payload,
|
|
422
|
+
...(configWarnings?.length
|
|
423
|
+
? {
|
|
424
|
+
status: configWarnings.map(({ code, message }) => ({
|
|
425
|
+
severity: 'warning',
|
|
426
|
+
code,
|
|
427
|
+
message,
|
|
428
|
+
})),
|
|
429
|
+
}
|
|
430
|
+
: {}),
|
|
431
|
+
}, toRootOutput(root));
|
|
286
432
|
return;
|
|
287
433
|
}
|
|
288
434
|
printApplyInstructionsText(instructions);
|
|
289
435
|
}
|
|
290
436
|
export function printApplyInstructionsText(instructions) {
|
|
291
|
-
const { changeName, schemaName, contextFiles, progress, tasks, state, missingArtifacts, instruction } = instructions;
|
|
437
|
+
const { changeName, schemaName, contextFiles, progress, tasks, state, missingArtifacts, instruction, context, rules, } = instructions;
|
|
292
438
|
console.log(`## Apply: ${changeName}`);
|
|
293
439
|
console.log(`Schema: ${schemaName}`);
|
|
294
440
|
console.log();
|
|
295
|
-
//
|
|
441
|
+
// The same tags the artifact instructions use, so an agent reading either
|
|
442
|
+
// treats project constraints the same way.
|
|
443
|
+
if (context) {
|
|
444
|
+
console.log('<project_context>');
|
|
445
|
+
console.log(context);
|
|
446
|
+
console.log('</project_context>');
|
|
447
|
+
console.log();
|
|
448
|
+
}
|
|
449
|
+
if (rules && rules.length > 0) {
|
|
450
|
+
console.log('<rules>');
|
|
451
|
+
for (const rule of rules) {
|
|
452
|
+
console.log(`- ${rule}`);
|
|
453
|
+
}
|
|
454
|
+
console.log('</rules>');
|
|
455
|
+
console.log();
|
|
456
|
+
}
|
|
296
457
|
if (state === 'blocked' && missingArtifacts) {
|
|
297
458
|
console.log('### ⚠️ Blocked');
|
|
298
459
|
console.log();
|
|
@@ -300,7 +461,6 @@ export function printApplyInstructionsText(instructions) {
|
|
|
300
461
|
console.log(`Use the ${planningSkillFor(schemaName)} skill to create these first.`);
|
|
301
462
|
console.log();
|
|
302
463
|
}
|
|
303
|
-
// Context files (dynamically from schema)
|
|
304
464
|
const contextFileEntries = Object.entries(contextFiles);
|
|
305
465
|
if (contextFileEntries.length > 0) {
|
|
306
466
|
console.log('### Context Files');
|
|
@@ -311,7 +471,6 @@ export function printApplyInstructionsText(instructions) {
|
|
|
311
471
|
}
|
|
312
472
|
console.log();
|
|
313
473
|
}
|
|
314
|
-
// Progress (only show if we have tracking)
|
|
315
474
|
if (progress.total > 0 || tasks.length > 0) {
|
|
316
475
|
console.log('### Progress');
|
|
317
476
|
if (state === 'all_done') {
|
|
@@ -322,16 +481,16 @@ export function printApplyInstructionsText(instructions) {
|
|
|
322
481
|
}
|
|
323
482
|
console.log();
|
|
324
483
|
}
|
|
325
|
-
// Tasks
|
|
326
484
|
if (tasks.length > 0) {
|
|
327
485
|
console.log('### Tasks');
|
|
328
486
|
for (const task of tasks) {
|
|
329
487
|
const checkbox = task.done ? '[x]' : '[ ]';
|
|
330
|
-
|
|
488
|
+
// Joined again here: the number is stored apart only so a caller can
|
|
489
|
+
// address a task by it.
|
|
490
|
+
console.log(`- ${checkbox} ${task.id} ${task.description}`);
|
|
331
491
|
}
|
|
332
492
|
console.log();
|
|
333
493
|
}
|
|
334
|
-
// Instruction
|
|
335
494
|
console.log('### Instruction');
|
|
336
495
|
console.log(instruction);
|
|
337
496
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../../src/commands/workflow/instructions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../../src/commands/workflow/instructions.ts"],"names":[],"mappings":"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"}
|