@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
package/dist/core/list.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/core/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/core/list.ts"],"names":[],"mappings":"AAUA,OAAO,EAAsB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAe1E,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;CAChC;AAkCD,qBAAa,WAAW;IAChB,OAAO,CAAC,UAAU,GAAE,MAAY,EAAE,IAAI,GAAE,SAAS,GAAG,OAAmB,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgOvH;CACF"}
|
package/dist/core/list.js
CHANGED
|
@@ -6,12 +6,22 @@ import { listActiveChangeDirs } from '../utils/item-discovery.js';
|
|
|
6
6
|
import { readFileSync } from 'fs';
|
|
7
7
|
import { join } from 'path';
|
|
8
8
|
import { MarkdownParser } from './parsers/markdown-parser.js';
|
|
9
|
-
import { readChangeMetadata } from '../utils/change-metadata.js';
|
|
9
|
+
import { readChangeMetadata, resolveSchemaForChange } from '../utils/change-metadata.js';
|
|
10
|
+
import { printProjectConfigDiagnostics } from './project-config.js';
|
|
10
11
|
import { RootSelectionError } from './root-selection.js';
|
|
11
12
|
import { asErrorMessage, emitSuccess } from '../commands/shared-output.js';
|
|
12
13
|
/**
|
|
13
|
-
*
|
|
14
|
+
* `unreadable` is its own value rather than a missing key: the counts beside it
|
|
15
|
+
* are placeholders, and a caller treating them as real would report a broken
|
|
16
|
+
* change as one with no tasks.
|
|
14
17
|
*/
|
|
18
|
+
function changeStatus(change) {
|
|
19
|
+
if (change.unreadable)
|
|
20
|
+
return 'unreadable';
|
|
21
|
+
if (change.totalTasks === 0)
|
|
22
|
+
return 'no-tasks';
|
|
23
|
+
return change.completedTasks === change.totalTasks ? 'complete' : 'in-progress';
|
|
24
|
+
}
|
|
15
25
|
function formatRelativeTime(date) {
|
|
16
26
|
const now = new Date();
|
|
17
27
|
const diffMs = now.getTime() - date.getTime();
|
|
@@ -40,15 +50,13 @@ export class ListCommand {
|
|
|
40
50
|
const { sort = 'recent', json = false, root, type } = options;
|
|
41
51
|
if (mode === 'changes') {
|
|
42
52
|
const changesDir = path.join(targetPath, 'tospec', 'changes');
|
|
43
|
-
// Check if changes directory exists
|
|
44
53
|
try {
|
|
45
54
|
await fs.access(changesDir);
|
|
46
55
|
}
|
|
47
56
|
catch {
|
|
48
|
-
// A
|
|
49
|
-
//
|
|
50
|
-
//
|
|
51
|
-
// apart by a caller reading status[].code.
|
|
57
|
+
// A partial install, not "this is not a project" — the root resolver
|
|
58
|
+
// already refused that with no_tospec_root. A distinct code keeps a
|
|
59
|
+
// caller reading status[].code able to tell them apart.
|
|
52
60
|
throw new RootSelectionError('No Tospec changes directory found.', 'changes_dir_missing', { target: 'tospec.changes', fix: "Run 'tospec init' first." });
|
|
53
61
|
}
|
|
54
62
|
const changeDirs = await listActiveChangeDirs(changesDir);
|
|
@@ -61,16 +69,17 @@ export class ListCommand {
|
|
|
61
69
|
}
|
|
62
70
|
return;
|
|
63
71
|
}
|
|
64
|
-
//
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
// schema this version does not have) used to abort the whole command, so
|
|
68
|
-
// `list` answered a project with something broken in it by showing nothing
|
|
69
|
-
// at all — and naming the schema but never the change that declared it.
|
|
70
|
-
// `validate --all` and `status --all` both carry the failure in place
|
|
71
|
-
// instead; this is the third batch command and now does the same.
|
|
72
|
+
// Failures are carried per change, not per sweep: one unreadable
|
|
73
|
+
// `.tospec.yaml` would otherwise make `list` show nothing at all. Same
|
|
74
|
+
// shape as `validate --all` and `status --all`.
|
|
72
75
|
const changes = [];
|
|
73
76
|
const diagnostics = [];
|
|
77
|
+
// Once per sweep, before the per-change reads that would each repeat it.
|
|
78
|
+
printProjectConfigDiagnostics(targetPath);
|
|
79
|
+
// A change from a custom schema carries neither type `--type` matches, so
|
|
80
|
+
// every value of the flag excludes it. Counted and reported rather than
|
|
81
|
+
// forced into a bucket — it genuinely has no type.
|
|
82
|
+
let untypedExcluded = 0;
|
|
74
83
|
for (const changeDir of changeDirs) {
|
|
75
84
|
const changePath = path.join(changesDir, changeDir);
|
|
76
85
|
const lastModified = await getLastModified(changePath);
|
|
@@ -78,6 +87,8 @@ export class ListCommand {
|
|
|
78
87
|
const progress = await getTaskProgressForChange(changesDir, changeDir, targetPath);
|
|
79
88
|
const metadata = readChangeMetadata(changePath, targetPath);
|
|
80
89
|
if (type && metadata?.type !== type) {
|
|
90
|
+
if (!metadata?.type)
|
|
91
|
+
untypedExcluded++;
|
|
81
92
|
continue;
|
|
82
93
|
}
|
|
83
94
|
changes.push({
|
|
@@ -85,13 +96,17 @@ export class ListCommand {
|
|
|
85
96
|
completedTasks: progress.completed,
|
|
86
97
|
totalTasks: progress.total,
|
|
87
98
|
lastModified,
|
|
88
|
-
type: metadata?.type
|
|
99
|
+
type: metadata?.type,
|
|
100
|
+
// The schema `status` will actually run under: a change with no
|
|
101
|
+
// declared schema falls back to the project default there, so
|
|
102
|
+
// reporting `null` here contradicted the status output.
|
|
103
|
+
schema: resolveSchemaForChange(changePath, undefined, targetPath, { metadata }),
|
|
89
104
|
});
|
|
90
105
|
}
|
|
91
106
|
catch (error) {
|
|
92
107
|
// Listed whatever `--type` asked for: the filter reads the metadata
|
|
93
|
-
// that just failed to load, so excluding it
|
|
94
|
-
//
|
|
108
|
+
// that just failed to load, so excluding it hides the one change the
|
|
109
|
+
// user has to fix to see the rest.
|
|
95
110
|
const message = asErrorMessage(error);
|
|
96
111
|
changes.push({ name: changeDir, completedTasks: 0, totalTasks: 0, lastModified, unreadable: message });
|
|
97
112
|
diagnostics.push({
|
|
@@ -103,40 +118,40 @@ export class ListCommand {
|
|
|
103
118
|
});
|
|
104
119
|
}
|
|
105
120
|
}
|
|
106
|
-
//
|
|
121
|
+
// On stderr in both modes, so a `--json` stdout stays one document.
|
|
122
|
+
if (untypedExcluded > 0) {
|
|
123
|
+
const subject = untypedExcluded === 1 ? 'change has' : 'changes have';
|
|
124
|
+
console.error(`Note: ${untypedExcluded} ${subject} no type (custom schema) and cannot match --type; drop --type to see them.`);
|
|
125
|
+
}
|
|
107
126
|
if (sort === 'recent') {
|
|
108
127
|
changes.sort((a, b) => b.lastModified.getTime() - a.lastModified.getTime());
|
|
109
128
|
}
|
|
110
129
|
else {
|
|
111
130
|
changes.sort((a, b) => a.name.localeCompare(b.name));
|
|
112
131
|
}
|
|
113
|
-
// JSON output for programmatic use
|
|
114
132
|
if (json) {
|
|
115
133
|
const jsonOutput = changes.map(c => ({
|
|
116
134
|
name: c.name,
|
|
117
|
-
// `?? null`
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
// not tell "this schema has no type" from "the field was renamed".
|
|
135
|
+
// `?? null` keeps the key present: only sdd and issue map to a type,
|
|
136
|
+
// and JSON.stringify drops an `undefined` value, leaving a caller
|
|
137
|
+
// unable to tell "no type" from "the field was renamed".
|
|
121
138
|
type: c.type ?? null,
|
|
139
|
+
// Without this a custom-schema change has nothing naming what it is,
|
|
140
|
+
// forcing one `tospec status --change <id>` per row. `?? null` as
|
|
141
|
+
// above.
|
|
142
|
+
schema: c.schema ?? null,
|
|
122
143
|
completedTasks: c.completedTasks,
|
|
123
144
|
totalTasks: c.totalTasks,
|
|
124
145
|
lastModified: c.lastModified.toISOString(),
|
|
125
|
-
|
|
126
|
-
// beside it are placeholders, and a caller that treated them as real
|
|
127
|
-
// would report a broken change as one with no tasks.
|
|
128
|
-
status: c.unreadable
|
|
129
|
-
? 'unreadable'
|
|
130
|
-
: c.totalTasks === 0 ? 'no-tasks' : c.completedTasks === c.totalTasks ? 'complete' : 'in-progress'
|
|
146
|
+
status: changeStatus(c)
|
|
131
147
|
}));
|
|
132
148
|
emitSuccess({ changes: jsonOutput, ...(diagnostics.length ? { status: diagnostics } : {}) }, root);
|
|
133
|
-
// The complete envelope still reaches stdout; the exit code
|
|
134
|
-
//
|
|
149
|
+
// The complete envelope still reaches stdout; the exit code says part
|
|
150
|
+
// of it could not be built. Same split as `status --all`.
|
|
135
151
|
if (diagnostics.length)
|
|
136
152
|
process.exitCode = 1;
|
|
137
153
|
return;
|
|
138
154
|
}
|
|
139
|
-
// Display results
|
|
140
155
|
console.log('Changes:');
|
|
141
156
|
const padding = ' ';
|
|
142
157
|
const nameWidth = Math.max(...changes.map(c => c.name.length));
|
|
@@ -157,7 +172,6 @@ export class ListCommand {
|
|
|
157
172
|
}
|
|
158
173
|
return;
|
|
159
174
|
}
|
|
160
|
-
// specs mode
|
|
161
175
|
const specsDir = path.join(targetPath, 'tospec', 'specs');
|
|
162
176
|
try {
|
|
163
177
|
await fs.access(specsDir);
|
|
@@ -183,6 +197,7 @@ export class ListCommand {
|
|
|
183
197
|
return;
|
|
184
198
|
}
|
|
185
199
|
const specs = [];
|
|
200
|
+
const specDiagnostics = [];
|
|
186
201
|
for (const id of specDirs) {
|
|
187
202
|
const specPath = join(specsDir, id, 'spec.md');
|
|
188
203
|
try {
|
|
@@ -191,14 +206,30 @@ export class ListCommand {
|
|
|
191
206
|
const spec = parser.parseSpec(id);
|
|
192
207
|
specs.push({ id, requirementCount: spec.requirements.length });
|
|
193
208
|
}
|
|
194
|
-
catch {
|
|
195
|
-
|
|
196
|
-
specs.push({ id, requirementCount: 0 });
|
|
209
|
+
catch (error) {
|
|
210
|
+
const message = asErrorMessage(error);
|
|
211
|
+
specs.push({ id, requirementCount: 0, unreadable: message });
|
|
212
|
+
specDiagnostics.push({
|
|
213
|
+
severity: 'error',
|
|
214
|
+
code: 'spec_unreadable',
|
|
215
|
+
message: `Spec '${id}' could not be read: ${message}`,
|
|
216
|
+
target: specPath,
|
|
217
|
+
fix: `Fix ${id}'s spec.md, or move the directory out of tospec/specs/.`,
|
|
218
|
+
});
|
|
197
219
|
}
|
|
198
220
|
}
|
|
199
221
|
specs.sort((a, b) => a.id.localeCompare(b.id));
|
|
200
222
|
if (json) {
|
|
201
|
-
|
|
223
|
+
const specOutput = specs.map(s => ({
|
|
224
|
+
id: s.id,
|
|
225
|
+
requirementCount: s.requirementCount,
|
|
226
|
+
status: s.unreadable ? 'unreadable' : 'ok',
|
|
227
|
+
}));
|
|
228
|
+
emitSuccess({ specs: specOutput, ...(specDiagnostics.length ? { status: specDiagnostics } : {}) }, root);
|
|
229
|
+
// The envelope is complete either way; the exit code is what says part of
|
|
230
|
+
// it could not be built. Same split as `list` (changes) and `status --all`.
|
|
231
|
+
if (specDiagnostics.length)
|
|
232
|
+
process.exitCode = 1;
|
|
202
233
|
return;
|
|
203
234
|
}
|
|
204
235
|
console.log('Specs:');
|
|
@@ -206,8 +237,19 @@ export class ListCommand {
|
|
|
206
237
|
const nameWidth = Math.max(...specs.map(s => s.id.length));
|
|
207
238
|
for (const spec of specs) {
|
|
208
239
|
const padded = spec.id.padEnd(nameWidth);
|
|
240
|
+
if (spec.unreadable) {
|
|
241
|
+
console.log(`${padding}${padded} ${'unreadable'.padEnd(12)} ${spec.unreadable}`);
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
209
244
|
console.log(`${padding}${padded} requirements ${spec.requirementCount}`);
|
|
210
245
|
}
|
|
246
|
+
if (specDiagnostics.length) {
|
|
247
|
+
// Said twice on purpose: the table stays pipeable on stdout while the
|
|
248
|
+
// diagnostic still reaches a terminal that only watches stderr.
|
|
249
|
+
for (const diagnostic of specDiagnostics)
|
|
250
|
+
console.error(`Error: ${diagnostic.message}`);
|
|
251
|
+
process.exitCode = 1;
|
|
252
|
+
}
|
|
211
253
|
}
|
|
212
254
|
}
|
|
213
255
|
//# sourceMappingURL=list.js.map
|
package/dist/core/list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/core/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/core/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Plumbing shared by every local web command (`dashboard`, `metrics`).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* `serveAsset` takes its root directory as an argument — the commands serve
|
|
10
|
-
* different asset trees, and parameterising the directory is what lets one
|
|
11
|
-
* implementation serve both.
|
|
4
|
+
* Shared rather than copied per command because several of these are trust
|
|
5
|
+
* boundaries — `isAllowedHostHeader` (DNS rebinding), `serveAsset` (path
|
|
6
|
+
* escape), `assertBindableHost` (bind policy). A second implementation of any of
|
|
7
|
+
* them is a hole that survives fixing the first.
|
|
12
8
|
*/
|
|
13
9
|
import * as http from 'node:http';
|
|
14
10
|
/**
|
|
15
11
|
* Canonical form of a bind address or Host-header name, so the sets below hold
|
|
16
|
-
* addresses rather than spellings
|
|
17
|
-
*
|
|
18
|
-
* `::`, `::0` and `0:0:0:0:0:0:0:0` are one address, and every one of them is
|
|
19
|
-
* something a user can legitimately type after `--host`. Matching spellings
|
|
20
|
-
* means the next one nobody thought to list silently takes the wrong branch —
|
|
21
|
-
* which is how `--allow-remote --host ::0` bound every interface and then 403'd
|
|
22
|
-
* every request that arrived on one.
|
|
23
|
-
*
|
|
24
|
-
* The WHATWG URL parser is the normalizer because it is the only IPv6/IPv4
|
|
25
|
-
* canonicalizer already in Node's core: it collapses every spelling above to
|
|
26
|
-
* `::`, and the brackets it adds back are stripped here.
|
|
12
|
+
* addresses rather than spellings: `::`, `::0` and `0:0:0:0:0:0:0:0` are one
|
|
13
|
+
* address a user may type after `--host`.
|
|
27
14
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
15
|
+
* The WHATWG URL parser is the normalizer because it is Node's only built-in
|
|
16
|
+
* IPv6/IPv4 canonicalizer. An unparseable value is returned lowercased, and
|
|
17
|
+
* every check here treats it as neither loopback nor wildcard.
|
|
31
18
|
*/
|
|
32
19
|
export declare function normalizeHost(host: string): string;
|
|
33
20
|
/**
|
|
@@ -36,97 +23,68 @@ export declare function normalizeHost(host: string): string;
|
|
|
36
23
|
*/
|
|
37
24
|
export declare const LOOPBACK_HOSTS: Set<string>;
|
|
38
25
|
/**
|
|
39
|
-
* Bind addresses
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* `::ffff:0:0` is the IPv4-mapped spelling of the same unspecified address; it
|
|
44
|
-
* is listed because it survives normalization as a distinct string, not because
|
|
45
|
-
* it means anything different.
|
|
26
|
+
* Bind addresses meaning "every interface", canonical forms only. No client
|
|
27
|
+
* sends these as a Host header, which is why `isAllowedHostHeader`'s literal
|
|
28
|
+
* match can never satisfy them. `::ffff:0:0` is listed because it survives
|
|
29
|
+
* normalization as a distinct string.
|
|
46
30
|
*/
|
|
47
31
|
export declare const WILDCARD_HOSTS: Set<string>;
|
|
48
32
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
*
|
|
56
|
-
* header warns about: a guard with one implementation site cannot protect the
|
|
57
|
-
* second caller that never reaches it.
|
|
33
|
+
* A URL a browser can actually open for a server bound to `host`. A wildcard
|
|
34
|
+
* bind has no connectable spelling — `http://0.0.0.0:5620` is not visitable —
|
|
35
|
+
* and `dashboard --list` reconstructs the loopback URL the same way.
|
|
36
|
+
*/
|
|
37
|
+
export declare function connectableUrl(host: string, port: number): string;
|
|
38
|
+
/**
|
|
39
|
+
* The bind guard, shared so a new local server cannot silently bind `0.0.0.0`.
|
|
58
40
|
*
|
|
59
|
-
* `
|
|
60
|
-
*
|
|
61
|
-
* the text used to hard-code "Pass `--allow-remote`", a flag `skill-metrics`
|
|
62
|
-
* does not register, so the one command that could not act on the advice was the
|
|
63
|
-
* one being told to. Making it a parameter means a new local server has to state
|
|
64
|
-
* its own escape hatch rather than silently inherit one it may not have.
|
|
41
|
+
* `remedy` is the caller's: `--allow-remote` is a dashboard flag that
|
|
42
|
+
* `skill-metrics` does not register, so each server states its own escape hatch.
|
|
65
43
|
*/
|
|
66
44
|
export declare function assertBindableHost(host: string, serverName: string, allowRemote: boolean | undefined, remedy: string): void;
|
|
67
45
|
export declare function sendJson(res: http.ServerResponse, status: number, payload: unknown): void;
|
|
68
46
|
/**
|
|
69
|
-
* Absolute path to a shipped asset tree (`assets/<name>`), resolved
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* The depth is load-bearing: compiled to `dist/core/`, two levels up is the
|
|
73
|
-
* package root, which is also what `dist/commands/` yields. Assets are shipped
|
|
74
|
-
* as package `files` and never compiled, so moving this module to a different
|
|
75
|
-
* depth would silently resolve outside the package. Every caller goes through
|
|
76
|
-
* here so that constraint has exactly one home.
|
|
47
|
+
* Absolute path to a shipped asset tree (`assets/<name>`), resolved from this
|
|
48
|
+
* module's own URL. The depth is load-bearing: compiled to `dist/core/`, two
|
|
49
|
+
* levels up is the package root, so moving this module resolves outside it.
|
|
77
50
|
*/
|
|
78
51
|
export declare function packageAssetsDir(name: string): string;
|
|
79
52
|
/**
|
|
80
|
-
* Serves one file from `dir`.
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* request and the rest of the filesystem.
|
|
53
|
+
* Serves one file from `dir`. URL parsing already normalises `..`, but a
|
|
54
|
+
* resolved path outside `dir` is refused regardless: this is the only thing
|
|
55
|
+
* between a crafted request and the rest of the filesystem.
|
|
84
56
|
*/
|
|
85
57
|
export declare function serveAsset(res: http.ServerResponse, dir: string, rawName: string): Promise<void>;
|
|
86
58
|
/**
|
|
87
59
|
* DNS-rebinding guard: only requests whose Host header names loopback (or the
|
|
88
60
|
* explicitly bound non-loopback address) are served. A malicious page can make
|
|
89
61
|
* a victim's browser resolve an attacker domain to 127.0.0.1 and read the
|
|
90
|
-
* server's endpoints; the attacker domain in the Host header
|
|
91
|
-
* away.
|
|
62
|
+
* server's endpoints; the attacker domain in the Host header gives that away.
|
|
92
63
|
*/
|
|
93
64
|
export declare function isAllowedHostHeader(hostHeader: string | undefined, boundHost: string, acceptAnyHost?: boolean): boolean;
|
|
94
65
|
/**
|
|
95
|
-
* The Host-header policy, resolved once at startup rather than
|
|
96
|
-
*
|
|
66
|
+
* The Host-header policy, resolved once at startup rather than per request —
|
|
67
|
+
* see decisions/20260910_150312-allow-remote-wildcard-host-policy.md.
|
|
97
68
|
*
|
|
98
69
|
* A wildcard bind has no Host header that can literally match it, so
|
|
99
|
-
* `--allow-remote --host 0.0.0.0`
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
* Kept out of `isAllowedHostHeader` on purpose. That predicate cannot see
|
|
105
|
-
* whether `--allow-remote` was passed, and burying "wildcard means trust
|
|
106
|
-
* everyone" inside it would make the assumption invisible at the call site.
|
|
70
|
+
* `--allow-remote --host 0.0.0.0` would listen on every interface then 403 every
|
|
71
|
+
* request. Only that combination is relaxed; a concrete address names the host
|
|
72
|
+
* worth accepting. Kept out of `isAllowedHostHeader` so "wildcard means trust
|
|
73
|
+
* everyone" stays visible at the call site.
|
|
107
74
|
*/
|
|
108
75
|
export declare function acceptsAnyHostHeader(boundHost: string, allowRemote?: boolean): boolean;
|
|
109
76
|
/** Resolves once the server is listening, or rejects with the listen error. */
|
|
110
77
|
export declare function listenOnce(server: http.Server, port: number, host: string): Promise<void>;
|
|
111
78
|
/**
|
|
112
|
-
* Binds `basePort`, advancing
|
|
113
|
-
*
|
|
114
|
-
* rule — a predictable port you can keep in your head, that still yields rather
|
|
115
|
-
* than failing when something already holds it.
|
|
79
|
+
* Binds `basePort`, advancing on `EADDRINUSE` until one is free, and returns the
|
|
80
|
+
* port actually bound.
|
|
116
81
|
*
|
|
117
|
-
* `port: 0`
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
* The attempt bound is a backstop, not a policy: without it a machine that
|
|
122
|
-
* refuses every bind for some other reason would spin through 65k ports.
|
|
82
|
+
* `port: 0` passes straight through — the OS picks a free port, so there is
|
|
83
|
+
* nothing to retry. `maxAttempts` stops a machine that refuses every bind from
|
|
84
|
+
* spinning through 65k ports.
|
|
123
85
|
*/
|
|
124
86
|
export declare function listenFrom(server: http.Server, basePort: number, host: string, maxAttempts?: number): Promise<number>;
|
|
125
|
-
/**
|
|
126
|
-
* Builds the platform command that opens `url` in the default browser.
|
|
127
|
-
* Pure (no side effects) so the platform branching is testable without
|
|
128
|
-
* launching anything.
|
|
129
|
-
*/
|
|
87
|
+
/** Pure, so the platform branching is testable without launching anything. */
|
|
130
88
|
export declare function browserOpenCommand(url: string, platform?: NodeJS.Platform): string;
|
|
131
89
|
/** Opens `url` in a browser; a failure only warns (the URL is already printed). */
|
|
132
90
|
export declare function openBrowser(url: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-server.d.ts","sourceRoot":"","sources":["../../src/core/local-server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"local-server.d.ts","sourceRoot":"","sources":["../../src/core/local-server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAYlC;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUlD;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,aAA6C,CAAC;AAEzE;;;;;GAKG;AACH,eAAO,MAAM,cAAc,aAA2C,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASjE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,GAAG,SAAS,EAChC,MAAM,EAAE,MAAM,GACb,IAAI,CAKN;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAGzF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,SAAS,EAAE,MAAM,EACjB,aAAa,UAAQ,GACpB,OAAO,CAaT;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAGtF;AAED,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAczF;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,WAAW,SAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,CAIR;AAED,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ7C"}
|