@seanmars/tospec 0.19.0-beta.8 → 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 -310
- package/README.md +69 -82
- package/assets/dashboard/app.js +11 -0
- package/assets/dashboard/style.css +7 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +89 -106
- 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 +293 -145
- 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 +190 -313
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/decision.d.ts +38 -27
- package/dist/commands/decision.d.ts.map +1 -1
- package/dist/commands/decision.js +296 -128
- 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 +12 -27
- package/dist/commands/shared-output.d.ts.map +1 -1
- package/dist/commands/shared-output.js +22 -45
- package/dist/commands/shared-output.js.map +1 -1
- package/dist/commands/show.d.ts +4 -7
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +23 -11
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/validate.d.ts +34 -58
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +225 -141
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/workflow/index.d.ts +1 -5
- package/dist/commands/workflow/index.d.ts.map +1 -1
- package/dist/commands/workflow/index.js +1 -5
- package/dist/commands/workflow/index.js.map +1 -1
- package/dist/commands/workflow/instructions.d.ts +14 -24
- package/dist/commands/workflow/instructions.d.ts.map +1 -1
- package/dist/commands/workflow/instructions.js +219 -128
- package/dist/commands/workflow/instructions.js.map +1 -1
- package/dist/commands/workflow/new-change.d.ts +2 -5
- package/dist/commands/workflow/new-change.d.ts.map +1 -1
- package/dist/commands/workflow/new-change.js +69 -32
- package/dist/commands/workflow/new-change.js.map +1 -1
- package/dist/commands/workflow/schemas.d.ts +1 -5
- package/dist/commands/workflow/schemas.d.ts.map +1 -1
- package/dist/commands/workflow/schemas.js +6 -17
- package/dist/commands/workflow/schemas.js.map +1 -1
- package/dist/commands/workflow/shared.d.ts +37 -42
- package/dist/commands/workflow/shared.d.ts.map +1 -1
- package/dist/commands/workflow/shared.js +23 -54
- package/dist/commands/workflow/shared.js.map +1 -1
- package/dist/commands/workflow/status.d.ts +7 -17
- package/dist/commands/workflow/status.d.ts.map +1 -1
- package/dist/commands/workflow/status.js +57 -72
- package/dist/commands/workflow/status.js.map +1 -1
- package/dist/commands/workflow/templates.d.ts +8 -8
- package/dist/commands/workflow/templates.d.ts.map +1 -1
- package/dist/commands/workflow/templates.js +32 -46
- package/dist/commands/workflow/templates.js.map +1 -1
- package/dist/core/archive.d.ts +22 -31
- package/dist/core/archive.d.ts.map +1 -1
- package/dist/core/archive.js +296 -283
- 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 +54 -120
- package/dist/core/artifact-graph/instruction-loader.d.ts.map +1 -1
- package/dist/core/artifact-graph/instruction-loader.js +129 -111
- 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 +36 -81
- package/dist/core/artifact-graph/resolver.d.ts.map +1 -1
- package/dist/core/artifact-graph/resolver.js +60 -101
- 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 +6 -14
- package/dist/core/artifact-graph/stub-detection.d.ts.map +1 -1
- package/dist/core/artifact-graph/stub-detection.js +13 -16
- package/dist/core/artifact-graph/stub-detection.js.map +1 -1
- 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 +16 -27
- package/dist/core/change-presenter.d.ts.map +1 -1
- package/dist/core/change-presenter.js +53 -53
- package/dist/core/change-presenter.js.map +1 -1
- package/dist/core/change-status-policy.d.ts +4 -8
- package/dist/core/change-status-policy.d.ts.map +1 -1
- package/dist/core/change-status-policy.js +9 -17
- 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 +7 -41
- package/dist/core/config-schema.d.ts.map +1 -1
- package/dist/core/config-schema.js +35 -74
- package/dist/core/config-schema.js.map +1 -1
- package/dist/core/config.d.ts +25 -49
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +22 -45
- 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 +35 -22
- package/dist/core/dashboard-data.d.ts.map +1 -1
- package/dist/core/dashboard-data.js +57 -72
- 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 +12 -28
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +90 -168
- package/dist/core/init.js.map +1 -1
- package/dist/core/list.d.ts.map +1 -1
- package/dist/core/list.js +80 -38
- 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 +15 -23
- package/dist/core/markdown-render.d.ts.map +1 -1
- package/dist/core/markdown-render.js +25 -34
- package/dist/core/markdown-render.js.map +1 -1
- package/dist/core/migrate.d.ts +19 -16
- package/dist/core/migrate.d.ts.map +1 -1
- package/dist/core/migrate.js +151 -135
- 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 +23 -30
- 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 +8 -14
- package/dist/core/root-selection.d.ts.map +1 -1
- package/dist/core/root-selection.js +3 -6
- package/dist/core/root-selection.js.map +1 -1
- package/dist/core/rules.d.ts.map +1 -1
- package/dist/core/rules.js +2 -3
- 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.map +1 -1
- package/dist/core/schemas/base.schema.js +6 -12
- package/dist/core/schemas/base.schema.js.map +1 -1
- package/dist/core/schemas/change.schema.d.ts +8 -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/shared/index.d.ts +2 -7
- package/dist/core/shared/index.d.ts.map +1 -1
- package/dist/core/shared/index.js +2 -7
- package/dist/core/shared/index.js.map +1 -1
- package/dist/core/shared/rules-generation.d.ts +5 -15
- package/dist/core/shared/rules-generation.d.ts.map +1 -1
- package/dist/core/shared/rules-generation.js +33 -37
- 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 +35 -76
- package/dist/core/shared/tool-detection.d.ts.map +1 -1
- package/dist/core/shared/tool-detection.js +73 -93
- 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.d.ts.map +1 -1
- package/dist/core/spec-presenter.js +5 -10
- package/dist/core/spec-presenter.js.map +1 -1
- package/dist/core/specs-apply.d.ts +16 -31
- package/dist/core/specs-apply.d.ts.map +1 -1
- package/dist/core/specs-apply.js +146 -195
- 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 +16 -5
- package/dist/core/templates/workflows/archive.js.map +1 -1
- package/dist/core/templates/workflows/decision.js +3 -3
- 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 +10 -36
- package/dist/core/update.d.ts.map +1 -1
- package/dist/core/update.js +59 -126
- 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 -25
- 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 +30 -12
- 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 +42 -68
- package/dist/core/validation/validator.d.ts.map +1 -1
- package/dist/core/validation/validator.js +468 -285
- 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 +24 -76
- package/dist/utils/change-utils.d.ts.map +1 -1
- package/dist/utils/change-utils.js +95 -142
- 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 +10 -20
- package/dist/utils/item-discovery.d.ts.map +1 -1
- package/dist/utils/item-discovery.js +31 -55
- 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/issue/schema.yaml +8 -1
- package/schemas/issue/templates/spec.md +20 -3
- package/schemas/sdd/schema.yaml +20 -1
- package/schemas/sdd/templates/spec.md +20 -3
|
@@ -3,17 +3,12 @@ import path from 'path';
|
|
|
3
3
|
import { frontmatterString } from './frontmatter.js';
|
|
4
4
|
/**
|
|
5
5
|
* Every ticket in the active `tospec/tickets/` index whose frontmatter `change:`
|
|
6
|
-
* names this change,
|
|
7
|
-
*
|
|
8
|
-
* tickets under `tickets/archive/` are excluded.
|
|
6
|
+
* names this change, oldest first (the filename is the `yyyyMMdd_HHmmss` stamp).
|
|
7
|
+
* Non-recursive, so `tickets/archive/` is excluded.
|
|
9
8
|
*
|
|
10
|
-
* Plural because the index can hold more than one: a change
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* ambiguity should; `findTicketPath` picks for those that cannot.
|
|
14
|
-
*
|
|
15
|
-
* Limitation: linear scan of tickets/; fine at repo scale (one ticket per change).
|
|
16
|
-
* Add an index if a project ever accumulates thousands of active changes.
|
|
9
|
+
* Plural because the index can hold more than one: `rm -rf` on a change leaves
|
|
10
|
+
* its ticket behind, and recreating the name adds a second. Callers that can
|
|
11
|
+
* report the ambiguity should; `findTicketPath` picks for the rest.
|
|
17
12
|
*/
|
|
18
13
|
export async function findTicketPaths(root, changeName) {
|
|
19
14
|
const ticketsPath = path.join(root, 'tospec', 'tickets');
|
|
@@ -41,29 +36,20 @@ export async function findTicketPaths(root, changeName) {
|
|
|
41
36
|
return matches.sort((a, b) => path.basename(a).localeCompare(path.basename(b)));
|
|
42
37
|
}
|
|
43
38
|
/**
|
|
44
|
-
* The ticket to treat as this change's, when there is more than one.
|
|
45
|
-
*
|
|
46
39
|
* The newest wins: a second ticket exists because the change was recreated, so
|
|
47
|
-
* the later stamp
|
|
48
|
-
*
|
|
49
|
-
* belonging to the abandoned attempt and left the real one stranded in the
|
|
50
|
-
* active list forever (round 4 report 6).
|
|
40
|
+
* the later stamp describes the change on disk. Taking the first `readdir` entry
|
|
41
|
+
* files the run under the abandoned attempt's ticket.
|
|
51
42
|
*/
|
|
52
43
|
export async function findTicketPath(root, changeName) {
|
|
53
44
|
const matches = await findTicketPaths(root, changeName);
|
|
54
45
|
return matches.length === 0 ? undefined : matches[matches.length - 1];
|
|
55
46
|
}
|
|
56
|
-
/**
|
|
57
|
-
|
|
58
|
-
* and dot-directories. The one rule for "which changes exist": list, archive
|
|
59
|
-
* and status each filtered slightly differently, so a stray `.tmp/` showed up
|
|
60
|
-
* in some listings and not others.
|
|
61
|
-
*/
|
|
62
|
-
export async function listActiveChangeDirs(changesDir) {
|
|
47
|
+
/** Sorted names of the non-dot subdirectories of `dir`; [] when it cannot be read. */
|
|
48
|
+
async function listSubdirectories(dir) {
|
|
63
49
|
try {
|
|
64
|
-
const entries = await fs.readdir(
|
|
50
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
65
51
|
return entries
|
|
66
|
-
.filter((entry) => entry.isDirectory() && !entry.name.startsWith('.')
|
|
52
|
+
.filter((entry) => entry.isDirectory() && !entry.name.startsWith('.'))
|
|
67
53
|
.map((entry) => entry.name)
|
|
68
54
|
.sort();
|
|
69
55
|
}
|
|
@@ -71,43 +57,33 @@ export async function listActiveChangeDirs(changesDir) {
|
|
|
71
57
|
return [];
|
|
72
58
|
}
|
|
73
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* The one rule for "which changes exist". Filtered separately per command, a
|
|
62
|
+
* stray `.tmp/` shows up in some listings and not others.
|
|
63
|
+
*/
|
|
64
|
+
export async function listActiveChangeDirs(changesDir) {
|
|
65
|
+
const names = await listSubdirectories(changesDir);
|
|
66
|
+
return names.filter((name) => name !== 'archive');
|
|
67
|
+
}
|
|
74
68
|
export async function getActiveChangeIds(root = process.cwd()) {
|
|
75
69
|
return listActiveChangeDirs(path.join(root, 'tospec', 'changes'));
|
|
76
70
|
}
|
|
71
|
+
/** A capability directory counts as a spec only once it holds a `spec.md`. */
|
|
77
72
|
export async function getSpecIds(root = process.cwd()) {
|
|
78
73
|
const specsPath = path.join(root, 'tospec', 'specs');
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
continue;
|
|
85
|
-
const specFile = path.join(specsPath, entry.name, 'spec.md');
|
|
86
|
-
try {
|
|
87
|
-
await fs.access(specFile);
|
|
88
|
-
result.push(entry.name);
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
// ignore
|
|
92
|
-
}
|
|
74
|
+
const names = await listSubdirectories(specsPath);
|
|
75
|
+
const present = await Promise.all(names.map(async (name) => {
|
|
76
|
+
try {
|
|
77
|
+
await fs.access(path.join(specsPath, name, 'spec.md'));
|
|
78
|
+
return name;
|
|
93
79
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
return
|
|
80
|
+
catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}));
|
|
84
|
+
return present.filter((name) => name !== null);
|
|
99
85
|
}
|
|
100
86
|
export async function getArchivedChangeIds(root = process.cwd()) {
|
|
101
|
-
|
|
102
|
-
try {
|
|
103
|
-
const entries = await fs.readdir(archivePath, { withFileTypes: true });
|
|
104
|
-
return entries
|
|
105
|
-
.filter((entry) => entry.isDirectory() && !entry.name.startsWith('.'))
|
|
106
|
-
.map((entry) => entry.name)
|
|
107
|
-
.sort();
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
return [];
|
|
111
|
-
}
|
|
87
|
+
return listSubdirectories(path.join(root, 'tospec', 'changes', 'archive'));
|
|
112
88
|
}
|
|
113
89
|
//# sourceMappingURL=item-discovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item-discovery.js","sourceRoot":"","sources":["../../src/utils/item-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD
|
|
1
|
+
{"version":3,"file":"item-discovery.js","sourceRoot":"","sources":["../../src/utils/item-discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/link.d.ts
CHANGED
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* How init/update deliver skill dirs from the canonical `.agents/skills/` into
|
|
3
|
-
* each dependent tool's directory.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* through it and records ordinary files) while POSIX gets a symlink (git records
|
|
9
|
-
* mode 120000 holding the target path). A repository that commits its generated
|
|
10
|
-
* skills therefore ends up with tracked content that depends on which OS last
|
|
11
|
-
* ran the command, and a 120000 blob checked out with `core.symlinks=false`
|
|
12
|
-
* becomes a text file where a skill directory belongs, loading nothing. Live
|
|
13
|
-
* edit propagation is not worth a mixed-platform team trading diffs over it.
|
|
3
|
+
* each dependent tool's directory: a copy, never a link. A link has no
|
|
4
|
+
* cross-platform spelling (Windows junction vs POSIX symlink record differently
|
|
5
|
+
* in git), so a repo committing its generated skills would track content that
|
|
6
|
+
* depends on which OS last ran the command.
|
|
7
|
+
* tospec/decisions/20260914_205300-copy-dependent-skill-dirs-for-cross-platform-teams.md
|
|
14
8
|
*/
|
|
15
9
|
/**
|
|
16
10
|
* Recursively copies a directory, replacing any existing dest. The `rm` first
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* symlink unlinks it and leaves the target intact, so a project whose tool dirs
|
|
22
|
-
* are still links becomes plain copies on the next `tospec update`, with no
|
|
23
|
-
* separate migration step and no risk to the canonical directory.
|
|
11
|
+
* makes it a replace rather than a merge, since `cp` alone leaves files the
|
|
12
|
+
* source no longer generates. It is also the migration off the link era:
|
|
13
|
+
* `fs.rm(recursive)` on a junction or symlink unlinks it and leaves the target
|
|
14
|
+
* intact, so link-based tool dirs become plain copies on the next update.
|
|
24
15
|
*/
|
|
25
16
|
export declare function copyDir(src: string, dest: string): Promise<void>;
|
|
26
17
|
//# sourceMappingURL=link.d.ts.map
|
package/dist/utils/link.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/utils/link.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/utils/link.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtE"}
|
package/dist/utils/link.js
CHANGED
|
@@ -1,27 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* How init/update deliver skill dirs from the canonical `.agents/skills/` into
|
|
3
|
-
* each dependent tool's directory.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* through it and records ordinary files) while POSIX gets a symlink (git records
|
|
9
|
-
* mode 120000 holding the target path). A repository that commits its generated
|
|
10
|
-
* skills therefore ends up with tracked content that depends on which OS last
|
|
11
|
-
* ran the command, and a 120000 blob checked out with `core.symlinks=false`
|
|
12
|
-
* becomes a text file where a skill directory belongs, loading nothing. Live
|
|
13
|
-
* edit propagation is not worth a mixed-platform team trading diffs over it.
|
|
3
|
+
* each dependent tool's directory: a copy, never a link. A link has no
|
|
4
|
+
* cross-platform spelling (Windows junction vs POSIX symlink record differently
|
|
5
|
+
* in git), so a repo committing its generated skills would track content that
|
|
6
|
+
* depends on which OS last ran the command.
|
|
7
|
+
* tospec/decisions/20260914_205300-copy-dependent-skill-dirs-for-cross-platform-teams.md
|
|
14
8
|
*/
|
|
15
9
|
import * as fs from 'node:fs';
|
|
16
10
|
/**
|
|
17
11
|
* Recursively copies a directory, replacing any existing dest. The `rm` first
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* symlink unlinks it and leaves the target intact, so a project whose tool dirs
|
|
23
|
-
* are still links becomes plain copies on the next `tospec update`, with no
|
|
24
|
-
* separate migration step and no risk to the canonical directory.
|
|
12
|
+
* makes it a replace rather than a merge, since `cp` alone leaves files the
|
|
13
|
+
* source no longer generates. It is also the migration off the link era:
|
|
14
|
+
* `fs.rm(recursive)` on a junction or symlink unlinks it and leaves the target
|
|
15
|
+
* intact, so link-based tool dirs become plain copies on the next update.
|
|
25
16
|
*/
|
|
26
17
|
export async function copyDir(src, dest) {
|
|
27
18
|
await fs.promises.rm(dest, { recursive: true, force: true });
|
package/dist/utils/link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/utils/link.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/utils/link.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,IAAY;IACrD,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Requirement-level diffing for `tospec show <change> --diff`.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* which line moved. Pairing each block with its main-spec counterpart is the
|
|
7
|
-
* only way to review a delta without opening two files side by side.
|
|
2
|
+
* Requirement-level diffing for `tospec show <change> --diff`. A MODIFIED block
|
|
3
|
+
* restates the whole requirement, so reading one says nothing about which line
|
|
4
|
+
* moved; pairing it with its main-spec counterpart makes a delta reviewable
|
|
5
|
+
* without opening two files side by side.
|
|
8
6
|
*/
|
|
9
7
|
/** A main-spec requirement block, and how its header matched the delta's. */
|
|
10
8
|
export interface MatchedRequirementBlock {
|
|
@@ -19,29 +17,21 @@ export interface MatchedRequirementBlock {
|
|
|
19
17
|
exact: boolean;
|
|
20
18
|
}
|
|
21
19
|
/**
|
|
22
|
-
*
|
|
23
|
-
* header
|
|
24
|
-
*
|
|
25
|
-
* Delegates to extractRequirementsSection(), which already handles code fences,
|
|
26
|
-
* section boundaries and header parsing. Lookup is exact first, then the shared
|
|
27
|
-
* case/whitespace fold, so a header that differs only in spelling still shows
|
|
28
|
-
* its diff — flagged inexact rather than silently treated as a match.
|
|
20
|
+
* Null when no header matches either way. Exact lookup first, then the shared
|
|
21
|
+
* case/whitespace fold, so a header differing only in spelling still shows its diff
|
|
22
|
+
* — flagged inexact rather than silently treated as a match.
|
|
29
23
|
*/
|
|
30
24
|
export declare function extractRequirementBlock(specContent: string, requirementName: string): MatchedRequirementBlock | null;
|
|
31
25
|
/**
|
|
32
|
-
* A unified diff between a main-spec requirement block and the delta block
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* structuredPatch keeps the unified hunk ranges; the synthetic file headers are
|
|
37
|
-
* omitted because the caller labels the block itself.
|
|
26
|
+
* A unified diff between a main-spec requirement block and the delta block replacing
|
|
27
|
+
* it. A null main block diffs against the empty string, so every line reads as an
|
|
28
|
+
* addition. File headers are omitted because the caller labels the block itself.
|
|
38
29
|
*/
|
|
39
30
|
export declare function diffRequirementBlock(baseBlock: string | null, deltaBlock: string, label: string): string;
|
|
40
31
|
/**
|
|
41
|
-
* Maps a RENAMED TO name (folded) back to the original main-spec name.
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* block a later MODIFIED C actually replaces in the main spec.
|
|
32
|
+
* Maps a RENAMED TO name (folded) back to the original main-spec name. Renames apply
|
|
33
|
+
* in source order, so a chain A -> B -> C maps C back to A: the block a later
|
|
34
|
+
* MODIFIED C actually replaces.
|
|
45
35
|
*/
|
|
46
36
|
export declare function buildRenameMap(renames: Array<{
|
|
47
37
|
from: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirement-diff.d.ts","sourceRoot":"","sources":["../../src/utils/requirement-diff.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"requirement-diff.d.ts","sourceRoot":"","sources":["../../src/utils/requirement-diff.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GACtB,uBAAuB,GAAG,IAAI,CAiBhC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,CAMR;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAShG"}
|
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Requirement-level diffing for `tospec show <change> --diff`.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* which line moved. Pairing each block with its main-spec counterpart is the
|
|
7
|
-
* only way to review a delta without opening two files side by side.
|
|
2
|
+
* Requirement-level diffing for `tospec show <change> --diff`. A MODIFIED block
|
|
3
|
+
* restates the whole requirement, so reading one says nothing about which line
|
|
4
|
+
* moved; pairing it with its main-spec counterpart makes a delta reviewable
|
|
5
|
+
* without opening two files side by side.
|
|
8
6
|
*/
|
|
9
7
|
import { formatPatch, OMIT_HEADERS, structuredPatch } from 'diff';
|
|
10
8
|
import { extractRequirementsSection, foldRequirementName, normalizeRequirementName, } from '../core/parsers/requirement-blocks.js';
|
|
11
9
|
/**
|
|
12
|
-
*
|
|
13
|
-
* header
|
|
14
|
-
*
|
|
15
|
-
* Delegates to extractRequirementsSection(), which already handles code fences,
|
|
16
|
-
* section boundaries and header parsing. Lookup is exact first, then the shared
|
|
17
|
-
* case/whitespace fold, so a header that differs only in spelling still shows
|
|
18
|
-
* its diff — flagged inexact rather than silently treated as a match.
|
|
10
|
+
* Null when no header matches either way. Exact lookup first, then the shared
|
|
11
|
+
* case/whitespace fold, so a header differing only in spelling still shows its diff
|
|
12
|
+
* — flagged inexact rather than silently treated as a match.
|
|
19
13
|
*/
|
|
20
14
|
export function extractRequirementBlock(specContent, requirementName) {
|
|
21
15
|
const parts = extractRequirementsSection(specContent);
|
|
@@ -34,12 +28,9 @@ export function extractRequirementBlock(specContent, requirementName) {
|
|
|
34
28
|
return folded;
|
|
35
29
|
}
|
|
36
30
|
/**
|
|
37
|
-
* A unified diff between a main-spec requirement block and the delta block
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* structuredPatch keeps the unified hunk ranges; the synthetic file headers are
|
|
42
|
-
* omitted because the caller labels the block itself.
|
|
31
|
+
* A unified diff between a main-spec requirement block and the delta block replacing
|
|
32
|
+
* it. A null main block diffs against the empty string, so every line reads as an
|
|
33
|
+
* addition. File headers are omitted because the caller labels the block itself.
|
|
43
34
|
*/
|
|
44
35
|
export function diffRequirementBlock(baseBlock, deltaBlock, label) {
|
|
45
36
|
const base = ensureTrailingNewline(baseBlock ?? '');
|
|
@@ -51,10 +42,9 @@ function ensureTrailingNewline(s) {
|
|
|
51
42
|
return s.endsWith('\n') ? s : s + '\n';
|
|
52
43
|
}
|
|
53
44
|
/**
|
|
54
|
-
* Maps a RENAMED TO name (folded) back to the original main-spec name.
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* block a later MODIFIED C actually replaces in the main spec.
|
|
45
|
+
* Maps a RENAMED TO name (folded) back to the original main-spec name. Renames apply
|
|
46
|
+
* in source order, so a chain A -> B -> C maps C back to A: the block a later
|
|
47
|
+
* MODIFIED C actually replaces.
|
|
58
48
|
*/
|
|
59
49
|
export function buildRenameMap(renames) {
|
|
60
50
|
const map = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requirement-diff.js","sourceRoot":"","sources":["../../src/utils/requirement-diff.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"requirement-diff.js","sourceRoot":"","sources":["../../src/utils/requirement-diff.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAClE,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,uCAAuC,CAAC;AAe/C;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAmB,EACnB,eAAuB;IAEvB,MAAM,KAAK,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,MAAM,GAAmC,IAAI,CAAC;IAElD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC;YAC1D,MAAM,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,SAAwB,EACxB,UAAkB,EAClB,KAAa;IAEb,MAAM,IAAI,GAAG,qBAAqB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAEzD,OAAO,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,qBAAqB,CAAC,CAAS;IACtC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAA4C;IACzE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjB,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,31 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Every `spec.md` under a change's `specs/` directory, at any depth.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Recursive even though the supported layout is exactly
|
|
5
5
|
* `specs/<capability>/spec.md`: the merge path reads one level, so anything
|
|
6
|
-
* deeper
|
|
7
|
-
*
|
|
8
|
-
* merge path and the discovery path each answered "is there a delta spec here"
|
|
9
|
-
* on their own, and disagreed silently.
|
|
10
|
-
*
|
|
11
|
-
* Shared so that answer has exactly one definition. See
|
|
6
|
+
* deeper would be applied by nobody, and finding it lets the validator report it
|
|
7
|
+
* and archive refuse.
|
|
12
8
|
* tospec/decisions/20260730_014309-delta-spec-layout-one-level.md
|
|
13
|
-
*
|
|
14
|
-
* Returns absolute paths, sorted by code point for deterministic issue ordering
|
|
15
|
-
* (not localeCompare — that follows the process ICU locale and would order
|
|
16
|
-
* differently on CI than locally).
|
|
17
9
|
*/
|
|
18
10
|
export declare function findSpecFiles(specsDir: string): Promise<string[]>;
|
|
19
11
|
/**
|
|
20
|
-
* Every `*.md` under a change's `specs/` directory, at any depth
|
|
21
|
-
* {@link findSpecFiles}
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* catches (wrong depth, dot-directory) when the mistake is a wrong *basename*
|
|
25
|
-
* instead: `specs/<capability>/spec.md`'s wrong-basename sibling is invisible
|
|
26
|
-
* to `findSpecFiles`, which drops it before any guard loop runs. The merge
|
|
27
|
-
* path (`findSpecUpdates`) must keep reading only `spec.md` — this walker is
|
|
28
|
-
* for validation to report the file, not for merge to read it.
|
|
12
|
+
* Every `*.md` under a change's `specs/` directory, at any depth. Unlike
|
|
13
|
+
* {@link findSpecFiles} the basename is not filtered, so the validator can
|
|
14
|
+
* report a file whose mistake is a wrong *basename*. The merge path
|
|
15
|
+
* (`findSpecUpdates`) must keep reading only `spec.md`.
|
|
29
16
|
*/
|
|
30
17
|
export declare function findAllMarkdownFiles(specsDir: string): Promise<string[]>;
|
|
31
18
|
//# sourceMappingURL=spec-files.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-files.d.ts","sourceRoot":"","sources":["../../src/utils/spec-files.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spec-files.d.ts","sourceRoot":"","sources":["../../src/utils/spec-files.ts"],"names":[],"mappings":"AAiCA;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEvE;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAE9E"}
|
package/dist/utils/spec-files.js
CHANGED
|
@@ -1,78 +1,53 @@
|
|
|
1
1
|
import { promises as fs } from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* deeper is a file that would be applied by nobody. Finding it is what lets the
|
|
9
|
-
* validator report it and archive refuse — the original defect was that the
|
|
10
|
-
* merge path and the discovery path each answered "is there a delta spec here"
|
|
11
|
-
* on their own, and disagreed silently.
|
|
12
|
-
*
|
|
13
|
-
* Shared so that answer has exactly one definition. See
|
|
14
|
-
* tospec/decisions/20260730_014309-delta-spec-layout-one-level.md
|
|
15
|
-
*
|
|
16
|
-
* Returns absolute paths, sorted by code point for deterministic issue ordering
|
|
17
|
-
* (not localeCompare — that follows the process ICU locale and would order
|
|
18
|
-
* differently on CI than locally).
|
|
4
|
+
* Absolute paths of every accepted file under `dir`, at any depth, sorted by
|
|
5
|
+
* code point — not localeCompare, which follows the process ICU locale and
|
|
6
|
+
* would order issues differently on CI than locally. A missing or unreadable
|
|
7
|
+
* directory means "no files".
|
|
19
8
|
*/
|
|
20
|
-
|
|
9
|
+
async function findFiles(dir, accept) {
|
|
21
10
|
const results = [];
|
|
22
|
-
const walk = async (
|
|
11
|
+
const walk = async (current) => {
|
|
23
12
|
let entries;
|
|
24
13
|
try {
|
|
25
|
-
entries = await fs.readdir(
|
|
14
|
+
entries = await fs.readdir(current, { withFileTypes: true });
|
|
26
15
|
}
|
|
27
16
|
catch {
|
|
28
|
-
// A missing or unreadable specs/ means "no delta specs" to every caller.
|
|
29
17
|
return;
|
|
30
18
|
}
|
|
31
19
|
for (const entry of entries) {
|
|
32
|
-
const full = path.join(
|
|
20
|
+
const full = path.join(current, entry.name);
|
|
33
21
|
if (entry.isDirectory()) {
|
|
34
22
|
await walk(full);
|
|
35
23
|
}
|
|
36
|
-
else if (entry.isFile() && entry.name
|
|
24
|
+
else if (entry.isFile() && accept(entry.name)) {
|
|
37
25
|
results.push(full);
|
|
38
26
|
}
|
|
39
27
|
}
|
|
40
28
|
};
|
|
41
|
-
await walk(
|
|
29
|
+
await walk(dir);
|
|
42
30
|
return results.sort();
|
|
43
31
|
}
|
|
44
32
|
/**
|
|
45
|
-
* Every
|
|
46
|
-
* {@link findSpecFiles}, basename is not filtered.
|
|
33
|
+
* Every `spec.md` under a change's `specs/` directory, at any depth.
|
|
47
34
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
|
|
35
|
+
* Recursive even though the supported layout is exactly
|
|
36
|
+
* `specs/<capability>/spec.md`: the merge path reads one level, so anything
|
|
37
|
+
* deeper would be applied by nobody, and finding it lets the validator report it
|
|
38
|
+
* and archive refuse.
|
|
39
|
+
* tospec/decisions/20260730_014309-delta-spec-layout-one-level.md
|
|
40
|
+
*/
|
|
41
|
+
export async function findSpecFiles(specsDir) {
|
|
42
|
+
return findFiles(specsDir, (name) => name === 'spec.md');
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Every `*.md` under a change's `specs/` directory, at any depth. Unlike
|
|
46
|
+
* {@link findSpecFiles} the basename is not filtered, so the validator can
|
|
47
|
+
* report a file whose mistake is a wrong *basename*. The merge path
|
|
48
|
+
* (`findSpecUpdates`) must keep reading only `spec.md`.
|
|
54
49
|
*/
|
|
55
50
|
export async function findAllMarkdownFiles(specsDir) {
|
|
56
|
-
|
|
57
|
-
const walk = async (dir) => {
|
|
58
|
-
let entries;
|
|
59
|
-
try {
|
|
60
|
-
entries = await fs.readdir(dir, { withFileTypes: true });
|
|
61
|
-
}
|
|
62
|
-
catch {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
for (const entry of entries) {
|
|
66
|
-
const full = path.join(dir, entry.name);
|
|
67
|
-
if (entry.isDirectory()) {
|
|
68
|
-
await walk(full);
|
|
69
|
-
}
|
|
70
|
-
else if (entry.isFile() && entry.name.toLowerCase().endsWith('.md')) {
|
|
71
|
-
results.push(full);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
await walk(specsDir);
|
|
76
|
-
return results.sort();
|
|
51
|
+
return findFiles(specsDir, (name) => name.toLowerCase().endsWith('.md'));
|
|
77
52
|
}
|
|
78
53
|
//# sourceMappingURL=spec-files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-files.js","sourceRoot":"","sources":["../../src/utils/spec-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B
|
|
1
|
+
{"version":3,"file":"spec-files.js","sourceRoot":"","sources":["../../src/utils/spec-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;GAKG;AACH,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,MAAiC;IACrE,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,MAAM,IAAI,GAAG,KAAK,EAAE,OAAe,EAAiB,EAAE;QACpD,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,QAAgB;IACzD,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -13,18 +13,14 @@ export interface TaskItem extends ParsedTask {
|
|
|
13
13
|
}
|
|
14
14
|
export declare function parseTasksFromContent(content: string): ParsedTask[];
|
|
15
15
|
/**
|
|
16
|
-
* Absolute paths of the files holding a change's tracked tasks
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* no longer blind to nested `tasks.md` files (#1202). Falls back to a single
|
|
20
|
-
* top-level `tasks.md` when the schema is unresolvable, no tracked-tasks
|
|
21
|
-
* artifact is found, or the glob matches no file.
|
|
16
|
+
* Absolute paths of the files holding a change's tracked tasks, through the same
|
|
17
|
+
* `resolveArtifactOutputs` glob resolution `tospec status` uses. Falls back to a
|
|
18
|
+
* single top-level `tasks.md` when nothing resolves.
|
|
22
19
|
*/
|
|
23
20
|
export declare function resolveTaskFiles(changeDir: string, projectRoot: string): string[];
|
|
24
21
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* throwing.
|
|
22
|
+
* Every task of a change, in file order. Files that cannot be read contribute
|
|
23
|
+
* nothing rather than throwing.
|
|
28
24
|
*/
|
|
29
25
|
export declare function listTasksForChange(changesDir: string, changeName: string, projectRoot: string): Promise<TaskItem[]>;
|
|
30
26
|
/** Computes a change's task progress across its tracked task files. Never throws. */
|
|
@@ -36,5 +32,11 @@ export declare function getTaskProgressForChange(changesDir: string, changeName:
|
|
|
36
32
|
* 409, which is what a stale client sees when the file moved under it.
|
|
37
33
|
*/
|
|
38
34
|
export declare function setTaskDone(file: string, line: number, done: boolean): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* "Tasks done", not "Complete": this counts checkboxes, while `tospec status`
|
|
37
|
+
* answers whether the change's artifacts exist. A change with only a finished
|
|
38
|
+
* `tasks.md` read as `✓ Complete` in `list` and `1/4 artifacts complete` in
|
|
39
|
+
* `status`, and the word was what made them look contradictory.
|
|
40
|
+
*/
|
|
39
41
|
export declare function formatTaskStatus(progress: TaskProgress): string;
|
|
40
42
|
//# sourceMappingURL=task-progress.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-progress.d.ts","sourceRoot":"","sources":["../../src/utils/task-progress.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"task-progress.d.ts","sourceRoot":"","sources":["../../src/utils/task-progress.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC1C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAoBnE;AA8BD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAOjF;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAarB;AAED,qFAAqF;AACrF,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAGvB;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB1F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAI/D"}
|