@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
|
@@ -7,8 +7,8 @@ export interface GlobalConfig {
|
|
|
7
7
|
workflows?: string[];
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* Options for resolving a user-level path.
|
|
11
|
-
*
|
|
10
|
+
* Options for resolving a user-level path. All three are injectable so a foreign
|
|
11
|
+
* platform's answer is assertable from whichever host runs the tests.
|
|
12
12
|
*/
|
|
13
13
|
export interface GlobalPathOptions {
|
|
14
14
|
env?: NodeJS.ProcessEnv;
|
|
@@ -16,74 +16,45 @@ export interface GlobalPathOptions {
|
|
|
16
16
|
homedir?: string;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
* The single user-level tospec directory
|
|
19
|
+
* The single user-level tospec directory on every platform:
|
|
20
|
+
* `$XDG_CONFIG_HOME/tospec/`, else `~/.config/tospec/`.
|
|
20
21
|
*
|
|
21
|
-
* -
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* Deliberately platform-uniform: %APPDATA% is not consulted, so config, schema
|
|
25
|
-
* overrides and the dashboard registry cannot end up in three different trees on
|
|
26
|
-
* Windows. Anyone who wants the roaming behaviour back — %APPDATA% is synced
|
|
27
|
-
* across domain-joined machines and the home directory is not — sets
|
|
28
|
-
* XDG_CONFIG_HOME to it.
|
|
22
|
+
* Platform-uniform on purpose: %APPDATA% is not consulted, so config, schema
|
|
23
|
+
* overrides and the dashboard registry cannot land in three different trees on
|
|
24
|
+
* Windows. Point XDG_CONFIG_HOME at %APPDATA% for the roaming behaviour.
|
|
29
25
|
*/
|
|
30
26
|
export declare function getGlobalConfigDir(options?: GlobalPathOptions): string;
|
|
31
27
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
* - macOS/Linux: ~/.local/share/tospec/
|
|
36
|
-
* - Windows: %LOCALAPPDATA%/tospec/
|
|
28
|
+
* Where schema overrides lived before moving under the config directory:
|
|
29
|
+
* `~/.local/share/tospec/`, or `%LOCALAPPDATA%/tospec/` on Windows.
|
|
37
30
|
*
|
|
38
|
-
* XDG_DATA_HOME is
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* move files out of a location we are still honouring.
|
|
31
|
+
* XDG_DATA_HOME is *not* consulted: it still names a live schema override (see
|
|
32
|
+
* getUserSchemasDir), so reading it as "legacy" would migrate files out of a
|
|
33
|
+
* location tospec still honours.
|
|
42
34
|
*/
|
|
43
35
|
export declare function getLegacyDataDir(options?: GlobalPathOptions): string;
|
|
44
36
|
/**
|
|
45
|
-
* Where config lived before it moved under ~/.config
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
* On macOS/Linux — and on any platform with XDG_CONFIG_HOME set — the old
|
|
50
|
-
* resolver already produced today's answer, so "legacy" is the current
|
|
51
|
-
* directory and every caller degenerates into a no-op without needing to ask
|
|
52
|
-
* which platform it is on.
|
|
37
|
+
* Where config lived before it moved under ~/.config; only the migration and the
|
|
38
|
+
* read fallback consult it. On macOS/Linux, and anywhere XDG_CONFIG_HOME is set,
|
|
39
|
+
* the old resolver already produced today's answer, so every caller degenerates
|
|
40
|
+
* into a no-op.
|
|
53
41
|
*/
|
|
54
42
|
export declare function getLegacyConfigDir(options?: GlobalPathOptions): string;
|
|
55
|
-
/**
|
|
56
|
-
* Gets the path to the global config file.
|
|
57
|
-
*/
|
|
58
43
|
export declare function getGlobalConfigPath(): string;
|
|
59
44
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* stops firing as soon as anything saves.
|
|
65
|
-
*
|
|
66
|
-
* Takes resolved directories rather than reading them itself so the on-disk
|
|
67
|
-
* behaviour is testable without a platform whose legacy path differs.
|
|
45
|
+
* Falls back to `legacyConfigDir` while an install has not been migrated:
|
|
46
|
+
* migration only runs on init/update, so without this a user who upgrades and
|
|
47
|
+
* runs anything else silently drops to the default profile. Writes always go to
|
|
48
|
+
* `configDir`, so the fallback stops firing as soon as anything saves.
|
|
68
49
|
*/
|
|
69
50
|
export declare function loadGlobalConfigFrom(configDir: string, legacyConfigDir: string): GlobalConfig;
|
|
70
51
|
/**
|
|
71
|
-
* The config file a read actually lands on
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* different files, and using the wrong one labels every explicit value
|
|
75
|
-
* "(default)".
|
|
52
|
+
* The config file a read actually lands on, as opposed to getGlobalConfigPath,
|
|
53
|
+
* which names where config is *written*. During the fallback window those are
|
|
54
|
+
* different files, and the wrong one labels every explicit value "(default)".
|
|
76
55
|
*/
|
|
77
56
|
export declare function getEffectiveConfigPath(): string;
|
|
78
|
-
/**
|
|
79
|
-
* Loads the global configuration from disk.
|
|
80
|
-
* Returns default configuration if file doesn't exist or is invalid.
|
|
81
|
-
* Merges loaded config with defaults to ensure new fields are available.
|
|
82
|
-
*/
|
|
57
|
+
/** Merged over the defaults; a missing or invalid file yields the defaults. */
|
|
83
58
|
export declare function getGlobalConfig(): GlobalConfig;
|
|
84
|
-
/**
|
|
85
|
-
* Saves the global configuration to disk.
|
|
86
|
-
* Creates the config directory if it doesn't exist.
|
|
87
|
-
*/
|
|
88
59
|
export declare function saveGlobalConfig(config: GlobalConfig): void;
|
|
89
60
|
//# sourceMappingURL=global-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-config.d.ts","sourceRoot":"","sources":["../../src/core/global-config.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAC/C,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AACrD,eAAO,MAAM,oBAAoB,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"global-config.d.ts","sourceRoot":"","sources":["../../src/core/global-config.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAC/C,eAAO,MAAM,uBAAuB,gBAAgB,CAAC;AACrD,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAIxC,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAMD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAY1E;AASD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAiBxE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAa1E;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AA4BD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,YAAY,CAG7F;AAaD;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAS3D"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
3
|
import * as os from 'node:os';
|
|
4
|
-
|
|
4
|
+
import { stripBom } from './parsers/requirement-text.js';
|
|
5
5
|
export const GLOBAL_CONFIG_DIR_NAME = 'tospec';
|
|
6
6
|
export const GLOBAL_CONFIG_FILE_NAME = 'config.json';
|
|
7
7
|
export const GLOBAL_DATA_DIR_NAME = 'tospec';
|
|
@@ -9,21 +9,17 @@ const DEFAULT_CONFIG = {
|
|
|
9
9
|
profile: 'core',
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
|
-
* The single user-level tospec directory
|
|
12
|
+
* The single user-level tospec directory on every platform:
|
|
13
|
+
* `$XDG_CONFIG_HOME/tospec/`, else `~/.config/tospec/`.
|
|
13
14
|
*
|
|
14
|
-
* -
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* Deliberately platform-uniform: %APPDATA% is not consulted, so config, schema
|
|
18
|
-
* overrides and the dashboard registry cannot end up in three different trees on
|
|
19
|
-
* Windows. Anyone who wants the roaming behaviour back — %APPDATA% is synced
|
|
20
|
-
* across domain-joined machines and the home directory is not — sets
|
|
21
|
-
* XDG_CONFIG_HOME to it.
|
|
15
|
+
* Platform-uniform on purpose: %APPDATA% is not consulted, so config, schema
|
|
16
|
+
* overrides and the dashboard registry cannot land in three different trees on
|
|
17
|
+
* Windows. Point XDG_CONFIG_HOME at %APPDATA% for the roaming behaviour.
|
|
22
18
|
*/
|
|
23
19
|
export function getGlobalConfigDir(options = {}) {
|
|
24
20
|
const env = options.env ?? process.env;
|
|
25
21
|
const platform = options.platform ?? os.platform();
|
|
26
|
-
// XDG_CONFIG_HOME
|
|
22
|
+
// XDG_CONFIG_HOME wins on every platform when explicitly set.
|
|
27
23
|
const xdgConfigHome = env.XDG_CONFIG_HOME;
|
|
28
24
|
if (xdgConfigHome) {
|
|
29
25
|
return joinGlobalPath(platform, xdgConfigHome, GLOBAL_CONFIG_DIR_NAME);
|
|
@@ -38,42 +34,34 @@ function joinGlobalPath(platform, ...segments) {
|
|
|
38
34
|
: path.posix.join(...segments);
|
|
39
35
|
}
|
|
40
36
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* - macOS/Linux: ~/.local/share/tospec/
|
|
45
|
-
* - Windows: %LOCALAPPDATA%/tospec/
|
|
37
|
+
* Where schema overrides lived before moving under the config directory:
|
|
38
|
+
* `~/.local/share/tospec/`, or `%LOCALAPPDATA%/tospec/` on Windows.
|
|
46
39
|
*
|
|
47
|
-
* XDG_DATA_HOME is
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* move files out of a location we are still honouring.
|
|
40
|
+
* XDG_DATA_HOME is *not* consulted: it still names a live schema override (see
|
|
41
|
+
* getUserSchemasDir), so reading it as "legacy" would migrate files out of a
|
|
42
|
+
* location tospec still honours.
|
|
51
43
|
*/
|
|
52
44
|
export function getLegacyDataDir(options = {}) {
|
|
53
45
|
const env = options.env ?? process.env;
|
|
54
46
|
const platform = options.platform ?? os.platform();
|
|
55
47
|
const homedir = options.homedir ?? os.homedir();
|
|
56
48
|
if (platform === 'win32') {
|
|
57
|
-
// Windows:
|
|
49
|
+
// Windows: %LOCALAPPDATA%.
|
|
58
50
|
const localAppData = env.LOCALAPPDATA;
|
|
59
51
|
if (localAppData) {
|
|
60
52
|
return joinGlobalPath(platform, localAppData, GLOBAL_DATA_DIR_NAME);
|
|
61
53
|
}
|
|
62
|
-
//
|
|
54
|
+
// Windows without LOCALAPPDATA.
|
|
63
55
|
return joinGlobalPath(platform, homedir, 'AppData', 'Local', GLOBAL_DATA_DIR_NAME);
|
|
64
56
|
}
|
|
65
|
-
// Unix/macOS
|
|
57
|
+
// Unix/macOS: ~/.local/share.
|
|
66
58
|
return joinGlobalPath(platform, homedir, '.local', 'share', GLOBAL_DATA_DIR_NAME);
|
|
67
59
|
}
|
|
68
60
|
/**
|
|
69
|
-
* Where config lived before it moved under ~/.config
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
* On macOS/Linux — and on any platform with XDG_CONFIG_HOME set — the old
|
|
74
|
-
* resolver already produced today's answer, so "legacy" is the current
|
|
75
|
-
* directory and every caller degenerates into a no-op without needing to ask
|
|
76
|
-
* which platform it is on.
|
|
61
|
+
* Where config lived before it moved under ~/.config; only the migration and the
|
|
62
|
+
* read fallback consult it. On macOS/Linux, and anywhere XDG_CONFIG_HOME is set,
|
|
63
|
+
* the old resolver already produced today's answer, so every caller degenerates
|
|
64
|
+
* into a no-op.
|
|
77
65
|
*/
|
|
78
66
|
export function getLegacyConfigDir(options = {}) {
|
|
79
67
|
const env = options.env ?? process.env;
|
|
@@ -87,31 +75,29 @@ export function getLegacyConfigDir(options = {}) {
|
|
|
87
75
|
? joinGlobalPath(platform, appData, GLOBAL_CONFIG_DIR_NAME)
|
|
88
76
|
: joinGlobalPath(platform, homedir, 'AppData', 'Roaming', GLOBAL_CONFIG_DIR_NAME);
|
|
89
77
|
}
|
|
90
|
-
/**
|
|
91
|
-
* Gets the path to the global config file.
|
|
92
|
-
*/
|
|
93
78
|
export function getGlobalConfigPath() {
|
|
94
79
|
return path.join(getGlobalConfigDir(), GLOBAL_CONFIG_FILE_NAME);
|
|
95
80
|
}
|
|
96
81
|
function readConfigFile(configPath) {
|
|
97
82
|
try {
|
|
98
83
|
const content = fs.readFileSync(configPath, 'utf-8');
|
|
99
|
-
|
|
100
|
-
//
|
|
101
|
-
//
|
|
102
|
-
//
|
|
103
|
-
|
|
104
|
-
//
|
|
84
|
+
// A BOM is not JSON whitespace, so `JSON.parse` throws on it before reaching
|
|
85
|
+
// the opening brace and the file is reported as invalid when it is not. The
|
|
86
|
+
// yaml reader tolerates one natively, so without this the two config formats
|
|
87
|
+
// disagree about the same edit in the same Windows editor.
|
|
88
|
+
const parsed = JSON.parse(stripBom(content));
|
|
89
|
+
// Valid JSON is not usable config: `[1,2,3]` and `"hello"` parse without a
|
|
90
|
+
// SyntaxError, and spreading either yields an index-keyed object that would
|
|
91
|
+
// be returned as configuration.
|
|
105
92
|
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
|
|
106
93
|
console.error(`Warning: ${configPath} is not a JSON object, using defaults`);
|
|
107
94
|
return { ...DEFAULT_CONFIG };
|
|
108
95
|
}
|
|
109
|
-
//
|
|
110
|
-
// older config versions pass through harmlessly.
|
|
96
|
+
// Loaded values win; unknown keys from older versions pass through.
|
|
111
97
|
return { ...DEFAULT_CONFIG, ...parsed };
|
|
112
98
|
}
|
|
113
99
|
catch (error) {
|
|
114
|
-
//
|
|
100
|
+
// A missing file is the normal case and says nothing.
|
|
115
101
|
if (error instanceof SyntaxError) {
|
|
116
102
|
console.error(`Warning: Invalid JSON in ${configPath}, using defaults`);
|
|
117
103
|
}
|
|
@@ -119,20 +105,16 @@ function readConfigFile(configPath) {
|
|
|
119
105
|
}
|
|
120
106
|
}
|
|
121
107
|
/**
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
* stops firing as soon as anything saves.
|
|
127
|
-
*
|
|
128
|
-
* Takes resolved directories rather than reading them itself so the on-disk
|
|
129
|
-
* behaviour is testable without a platform whose legacy path differs.
|
|
108
|
+
* Falls back to `legacyConfigDir` while an install has not been migrated:
|
|
109
|
+
* migration only runs on init/update, so without this a user who upgrades and
|
|
110
|
+
* runs anything else silently drops to the default profile. Writes always go to
|
|
111
|
+
* `configDir`, so the fallback stops firing as soon as anything saves.
|
|
130
112
|
*/
|
|
131
113
|
export function loadGlobalConfigFrom(configDir, legacyConfigDir) {
|
|
132
114
|
const configPath = resolveConfigPath(configDir, legacyConfigDir);
|
|
133
115
|
return fs.existsSync(configPath) ? readConfigFile(configPath) : { ...DEFAULT_CONFIG };
|
|
134
116
|
}
|
|
135
|
-
/**
|
|
117
|
+
/** The single owner of the current-then-legacy precedence. */
|
|
136
118
|
function resolveConfigPath(configDir, legacyConfigDir) {
|
|
137
119
|
const configPath = path.join(configDir, GLOBAL_CONFIG_FILE_NAME);
|
|
138
120
|
if (fs.existsSync(configPath)) {
|
|
@@ -142,31 +124,20 @@ function resolveConfigPath(configDir, legacyConfigDir) {
|
|
|
142
124
|
return legacyPath !== configPath && fs.existsSync(legacyPath) ? legacyPath : configPath;
|
|
143
125
|
}
|
|
144
126
|
/**
|
|
145
|
-
* The config file a read actually lands on
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
* different files, and using the wrong one labels every explicit value
|
|
149
|
-
* "(default)".
|
|
127
|
+
* The config file a read actually lands on, as opposed to getGlobalConfigPath,
|
|
128
|
+
* which names where config is *written*. During the fallback window those are
|
|
129
|
+
* different files, and the wrong one labels every explicit value "(default)".
|
|
150
130
|
*/
|
|
151
131
|
export function getEffectiveConfigPath() {
|
|
152
132
|
return resolveConfigPath(getGlobalConfigDir(), getLegacyConfigDir());
|
|
153
133
|
}
|
|
154
|
-
/**
|
|
155
|
-
* Loads the global configuration from disk.
|
|
156
|
-
* Returns default configuration if file doesn't exist or is invalid.
|
|
157
|
-
* Merges loaded config with defaults to ensure new fields are available.
|
|
158
|
-
*/
|
|
134
|
+
/** Merged over the defaults; a missing or invalid file yields the defaults. */
|
|
159
135
|
export function getGlobalConfig() {
|
|
160
136
|
return loadGlobalConfigFrom(getGlobalConfigDir(), getLegacyConfigDir());
|
|
161
137
|
}
|
|
162
|
-
/**
|
|
163
|
-
* Saves the global configuration to disk.
|
|
164
|
-
* Creates the config directory if it doesn't exist.
|
|
165
|
-
*/
|
|
166
138
|
export function saveGlobalConfig(config) {
|
|
167
139
|
const configDir = getGlobalConfigDir();
|
|
168
140
|
const configPath = getGlobalConfigPath();
|
|
169
|
-
// Create directory if it doesn't exist
|
|
170
141
|
if (!fs.existsSync(configDir)) {
|
|
171
142
|
fs.mkdirSync(configDir, { recursive: true });
|
|
172
143
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global-config.js","sourceRoot":"","sources":["../../src/core/global-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"global-config.js","sourceRoot":"","sources":["../../src/core/global-config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/init.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Init Command
|
|
3
|
-
*
|
|
4
|
-
* Sets up tospec Agent Skills for Claude Code and Codex.
|
|
5
|
-
*/
|
|
1
|
+
/** Sets up tospec Agent Skills for Claude Code and Codex. */
|
|
6
2
|
type InitCommandOptions = {
|
|
7
3
|
tools?: string;
|
|
8
4
|
force?: boolean;
|
|
@@ -21,18 +17,13 @@ export declare class InitCommand {
|
|
|
21
17
|
private readonly json;
|
|
22
18
|
constructor(options?: InitCommandOptions);
|
|
23
19
|
/**
|
|
24
|
-
* Progress prose, suppressed under `--json
|
|
25
|
-
*
|
|
26
|
-
* The setup report is a narrative of work the final JSON document already
|
|
27
|
-
* states; printing both would put two things on stdout where the envelope
|
|
28
|
-
* contract allows one.
|
|
20
|
+
* Progress prose, suppressed under `--json`: the envelope contract allows only
|
|
21
|
+
* one document on stdout.
|
|
29
22
|
*/
|
|
30
23
|
private say;
|
|
31
24
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* is commentary the JSON document already carries, but a warning has no other
|
|
35
|
-
* carrier and dropping it leaves `--json` less informed than a human.
|
|
25
|
+
* Unlike `say`, a warning has no other carrier — dropping it under `--json`
|
|
26
|
+
* would leave an agent caller less informed than a human.
|
|
36
27
|
*/
|
|
37
28
|
private warn;
|
|
38
29
|
/** Emitted alongside the success payload; empty means the key is omitted. */
|
|
@@ -40,15 +31,11 @@ export declare class InitCommand {
|
|
|
40
31
|
execute(targetPath: string): Promise<void>;
|
|
41
32
|
private validate;
|
|
42
33
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* the answer. Derived from the table so a future dependency documents itself.
|
|
34
|
+
* A row can arrive uninvited by being required by another, which has to be
|
|
35
|
+
* said *before* the prompt to inform the answer. Derived from the table so a
|
|
36
|
+
* future dependency documents itself.
|
|
47
37
|
*
|
|
48
|
-
*
|
|
49
|
-
* `--tools` or `--interactive=false` has no answer to inform, so the same
|
|
50
|
-
* lines there are just an unprompted paragraph about targets the user may not
|
|
51
|
-
* have picked — `tospec init --tools agents` explaining Claude Code.
|
|
38
|
+
* Prompt path only: a `--tools` run has no answer to inform.
|
|
52
39
|
*/
|
|
53
40
|
private discloseToolDependencies;
|
|
54
41
|
private canPromptInteractively;
|
|
@@ -57,12 +44,9 @@ export declare class InitCommand {
|
|
|
57
44
|
private resolveToolsArg;
|
|
58
45
|
private validateTools;
|
|
59
46
|
/**
|
|
60
|
-
* Anchoring runs on every init, not only the first
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* extendMode differs only in staying quiet — the work itself is identical, so
|
|
65
|
-
* it is a pair of guards rather than a second copy of the loop.
|
|
47
|
+
* Anchoring runs on every init, not only the first, so a project predating the
|
|
48
|
+
* rule reaches the same state without a migration step. `extendMode` differs
|
|
49
|
+
* only in staying quiet.
|
|
66
50
|
*/
|
|
67
51
|
private createDirectoryStructure;
|
|
68
52
|
private generateSkillsAndCommands;
|
package/dist/core/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/core/init.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/core/init.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAiD7D,KAAK,kBAAkB,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAA8B,CAAC;AAExF,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAE/B,YAAY,OAAO,GAAE,kBAAuB,EAM3C;IAED;;;OAGG;IACH,OAAO,CAAC,GAAG;IAIX;;;OAGG;IACH,OAAO,CAAC,IAAI;IAQZ,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;IAElD,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4G/C;YAEa,QAAQ;IAMtB;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,sBAAsB;YAYhB,gBAAgB;IAoG9B,OAAO,CAAC,eAAe;IAyDvB,OAAO,CAAC,aAAa;IAkCrB;;;;OAIG;YACW,wBAAwB;YAcxB,yBAAyB;YAmFzB,YAAY;IAgB1B,OAAO,CAAC,qBAAqB;YA6Ff,oBAAoB;CAoBnC"}
|