@devtrack-solution/codesdd 1.2.2 → 1.2.4-rc3
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/.sdd/skills/curated/api-clean-flask-langgraph/SKILL.md +17 -17
- package/.sdd/skills/curated/devtrack-api/SKILL.md +170 -31
- package/.sdd/skills/curated/devtrack-api/agents/claude-code.yaml +8 -0
- package/.sdd/skills/curated/devtrack-api/agents/codex.yaml +8 -0
- package/.sdd/skills/curated/devtrack-api/agents/cursor.yaml +8 -0
- package/.sdd/skills/curated/devtrack-api/agents/gemini.yaml +8 -0
- package/.sdd/skills/curated/devtrack-api/agents/kimi.yaml +8 -0
- package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +4 -2
- package/.sdd/skills/curated/devtrack-api/agents/opencode.yaml +10 -0
- package/.sdd/skills/curated/devtrack-api/references/application-presentation.md +2 -2
- package/.sdd/skills/curated/devtrack-api/references/architecture-governance.md +8 -7
- package/.sdd/skills/curated/devtrack-api/references/consumer-sync-policy.md +93 -0
- package/.sdd/skills/curated/devtrack-api/references/contract-pack.yaml +372 -0
- package/.sdd/skills/curated/devtrack-api/references/domain-modeling.md +13 -13
- package/.sdd/skills/curated/devtrack-api/references/field-validation-protocol.md +95 -0
- package/.sdd/skills/curated/devtrack-api/references/foundation-layout.md +294 -0
- package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +5 -5
- package/.sdd/skills/curated/devtrack-api/references/imports-lint.md +4 -0
- package/.sdd/skills/curated/devtrack-api/references/portable-agent-contract.md +41 -0
- package/.sdd/skills/curated/devtrack-api/references/testing-validation.md +2 -2
- package/.sdd/skills/curated/devtrack-api/references/typeorm-infrastructure.md +7 -9
- package/LICENSE +1 -1
- package/README.md +399 -53
- package/bin/codesdd.js +3 -2
- package/dist/applications/sdd/index.d.ts +16 -0
- package/dist/applications/sdd/index.js +16 -0
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.js +11 -558
- package/dist/cli/program.d.ts +14 -0
- package/dist/cli/program.js +645 -0
- package/dist/commands/change.js +5 -5
- package/dist/commands/completion.d.ts +1 -1
- package/dist/commands/completion.js +9 -2
- package/dist/commands/config.js +320 -20
- package/dist/commands/feedback.js +1 -1
- package/dist/commands/schema.d.ts +63 -0
- package/dist/commands/schema.js +12 -12
- package/dist/commands/sdd/backlog.d.ts +3 -0
- package/dist/commands/sdd/backlog.js +54 -0
- package/dist/commands/sdd/execution.js +489 -28
- package/dist/commands/sdd/plugin.d.ts +3 -0
- package/dist/commands/sdd/plugin.js +158 -0
- package/dist/commands/sdd/shared.d.ts +1 -0
- package/dist/commands/sdd/shared.js +11 -22
- package/dist/commands/sdd/skills.js +7 -0
- package/dist/commands/sdd.js +107 -15
- package/dist/commands/spec.js +9 -9
- package/dist/commands/validate.js +6 -6
- package/dist/commands/workflow/instructions.js +6 -6
- package/dist/commands/workflow/new-change.js +3 -3
- package/dist/commands/workflow/shared.d.ts +1 -1
- package/dist/commands/workflow/shared.js +4 -4
- package/dist/core/archive.js +15 -5
- package/dist/core/artifact-graph/instruction-loader.d.ts +1 -1
- package/dist/core/artifact-graph/instruction-loader.js +3 -3
- package/dist/core/artifact-graph/resolver.d.ts +4 -4
- package/dist/core/artifact-graph/resolver.js +6 -6
- package/dist/core/branding.js +3 -3
- package/dist/core/cli/command-matrix.js +19 -1
- package/dist/core/cli-command-quality.d.ts +27 -0
- package/dist/core/cli-command-quality.js +180 -0
- package/dist/core/command-generation/adapters/costrict.d.ts +1 -1
- package/dist/core/command-generation/adapters/costrict.js +2 -2
- package/dist/core/command-generation/types.d.ts +1 -1
- package/dist/core/completions/command-registry.d.ts +1 -1
- package/dist/core/completions/command-registry.js +200 -12
- package/dist/core/completions/completion-provider.d.ts +14 -1
- package/dist/core/completions/completion-provider.js +29 -1
- package/dist/core/completions/generators/bash-generator.d.ts +1 -1
- package/dist/core/completions/generators/bash-generator.js +20 -12
- package/dist/core/completions/generators/fish-generator.d.ts +9 -1
- package/dist/core/completions/generators/fish-generator.js +39 -25
- package/dist/core/completions/generators/powershell-generator.d.ts +1 -1
- package/dist/core/completions/generators/powershell-generator.js +21 -11
- package/dist/core/completions/generators/zsh-generator.d.ts +3 -6
- package/dist/core/completions/generators/zsh-generator.js +21 -42
- package/dist/core/completions/installers/bash-installer.js +6 -6
- package/dist/core/completions/installers/fish-installer.js +1 -1
- package/dist/core/completions/installers/powershell-installer.js +14 -14
- package/dist/core/completions/installers/zsh-installer.d.ts +7 -1
- package/dist/core/completions/installers/zsh-installer.js +36 -8
- package/dist/core/completions/templates/bash-templates.d.ts +1 -1
- package/dist/core/completions/templates/bash-templates.js +12 -6
- package/dist/core/completions/templates/fish-templates.d.ts +2 -2
- package/dist/core/completions/templates/fish-templates.js +20 -9
- package/dist/core/completions/templates/powershell-templates.d.ts +1 -1
- package/dist/core/completions/templates/powershell-templates.js +13 -4
- package/dist/core/completions/templates/zsh-templates.d.ts +1 -1
- package/dist/core/completions/templates/zsh-templates.js +18 -9
- package/dist/core/config-schema.d.ts +20 -1
- package/dist/core/config-schema.js +70 -2
- package/dist/core/config.d.ts +3 -3
- package/dist/core/config.js +4 -4
- package/dist/core/global-config.d.ts +57 -12
- package/dist/core/global-config.js +344 -27
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +2 -2
- package/dist/core/init.d.ts +6 -1
- package/dist/core/init.js +99 -77
- package/dist/core/legacy-cleanup.d.ts +17 -17
- package/dist/core/legacy-cleanup.js +96 -79
- package/dist/core/list.js +18 -4
- package/dist/core/migration.d.ts +3 -1
- package/dist/core/migration.js +7 -8
- package/dist/core/parsers/change-parser.js +1 -1
- package/dist/core/parsers/markdown-parser.js +2 -2
- package/dist/core/profile-sync-drift.d.ts +1 -1
- package/dist/core/profile-sync-drift.js +13 -13
- package/dist/core/project-config.d.ts +4 -4
- package/dist/core/project-config.js +11 -11
- package/dist/core/schemas/change.schema.d.ts +1 -1
- package/dist/core/schemas/change.schema.js +1 -1
- package/dist/core/schemas/spec.schema.d.ts +1 -1
- package/dist/core/schemas/spec.schema.js +1 -1
- package/dist/core/sdd/adr.js +23 -1
- package/dist/core/sdd/agent-binding.d.ts +346 -0
- package/dist/core/sdd/agent-binding.js +343 -0
- package/dist/core/sdd/agent-runtime-contract.d.ts +204 -0
- package/dist/core/sdd/agent-runtime-contract.js +200 -0
- package/dist/core/sdd/backlog-cli.d.ts +16 -0
- package/dist/core/sdd/backlog-cli.js +146 -0
- package/dist/core/sdd/backlog-conflict-policy.d.ts +58 -0
- package/dist/core/sdd/backlog-conflict-policy.js +230 -0
- package/dist/core/sdd/backlog-projection.d.ts +8 -0
- package/dist/core/sdd/backlog-projection.js +89 -0
- package/dist/core/sdd/backlog-provider-contract.d.ts +252 -0
- package/dist/core/sdd/backlog-provider-contract.js +158 -0
- package/dist/core/sdd/bootstrap.js +2 -2
- package/dist/core/sdd/check.d.ts +44 -0
- package/dist/core/sdd/check.js +62 -24
- package/dist/core/sdd/contract.d.ts +13 -0
- package/dist/core/sdd/contract.js +36 -0
- package/dist/core/sdd/coordination/coordination-adapters.d.ts +53 -8
- package/dist/core/sdd/coordination/coordination-adapters.js +182 -16
- package/dist/core/sdd/coordination/index.d.ts +1 -0
- package/dist/core/sdd/coordination/index.js +1 -0
- package/dist/core/sdd/coordination/redis-runtime.d.ts +131 -0
- package/dist/core/sdd/coordination/redis-runtime.js +698 -0
- package/dist/core/sdd/deepagent-contracts.d.ts +370 -0
- package/dist/core/sdd/deepagent-contracts.js +235 -0
- package/dist/core/sdd/deepagents/adr-governor.d.ts +2 -0
- package/dist/core/sdd/deepagents/adr-governor.js +30 -0
- package/dist/core/sdd/deepagents/backend.d.ts +63 -0
- package/dist/core/sdd/deepagents/backend.js +174 -0
- package/dist/core/sdd/deepagents/codesdd-tools.d.ts +39 -0
- package/dist/core/sdd/deepagents/codesdd-tools.js +83 -0
- package/dist/core/sdd/deepagents/evidence-mapper.d.ts +86 -0
- package/dist/core/sdd/deepagents/evidence-mapper.js +178 -0
- package/dist/core/sdd/deepagents/model-provider.d.ts +53 -0
- package/dist/core/sdd/deepagents/model-provider.js +379 -0
- package/dist/core/sdd/deepagents/policy-enforcement.d.ts +30 -0
- package/dist/core/sdd/deepagents/policy-enforcement.js +90 -0
- package/dist/core/sdd/deepagents/policy.d.ts +75 -0
- package/dist/core/sdd/deepagents/policy.js +358 -0
- package/dist/core/sdd/deepagents/quality-witness.d.ts +3 -0
- package/dist/core/sdd/deepagents/quality-witness.js +77 -0
- package/dist/core/sdd/deepagents/reversa-subagents.d.ts +75 -0
- package/dist/core/sdd/deepagents/reversa-subagents.js +182 -0
- package/dist/core/sdd/deepagents/runtime-factory.d.ts +90 -0
- package/dist/core/sdd/deepagents/runtime-factory.js +231 -0
- package/dist/core/sdd/deepagents/runtime-loader.d.ts +16 -0
- package/dist/core/sdd/deepagents/runtime-loader.js +65 -0
- package/dist/core/sdd/default-bootstrap-files.d.ts +3 -3
- package/dist/core/sdd/default-bootstrap-files.js +50 -10
- package/dist/core/sdd/default-skills.d.ts +30 -0
- package/dist/core/sdd/default-skills.js +288 -8
- package/dist/core/sdd/devtrack-api-appliance.d.ts +91 -0
- package/dist/core/sdd/devtrack-api-appliance.js +280 -0
- package/dist/core/sdd/devtrack-api-architecture.d.ts +31 -0
- package/dist/core/sdd/devtrack-api-architecture.js +608 -0
- package/dist/core/sdd/devtrack-api-import-boundary.d.ts +19 -0
- package/dist/core/sdd/devtrack-api-import-boundary.js +32 -0
- package/dist/core/sdd/diagnose.d.ts +59 -0
- package/dist/core/sdd/diagnose.js +37 -37
- package/dist/core/sdd/docs-sync.js +54 -20
- package/dist/core/sdd/domain/capability-diff.d.ts +63 -0
- package/dist/core/sdd/domain/capability-diff.js +200 -0
- package/dist/core/sdd/domain/change-safety-guardrails.d.ts +74 -0
- package/dist/core/sdd/domain/change-safety-guardrails.js +333 -0
- package/dist/core/sdd/domain/post-active-validation.d.ts +7 -0
- package/dist/core/sdd/domain/post-active-validation.js +61 -0
- package/dist/core/sdd/domain/semantic-intent-classifier.d.ts +29 -0
- package/dist/core/sdd/domain/semantic-intent-classifier.js +117 -0
- package/dist/core/sdd/domain/transition-engine.js +1 -0
- package/dist/core/sdd/entity-reference.d.ts +5 -0
- package/dist/core/sdd/entity-reference.js +22 -0
- package/dist/core/sdd/foundation-artifact-map-validator.d.ts +16 -0
- package/dist/core/sdd/foundation-artifact-map-validator.js +71 -0
- package/dist/core/sdd/foundation-layer-manifest.d.ts +24 -0
- package/dist/core/sdd/foundation-layer-manifest.js +117 -0
- package/dist/core/sdd/governance-backfill.d.ts +31 -0
- package/dist/core/sdd/governance-backfill.js +359 -0
- package/dist/core/sdd/governance-parser.d.ts +21 -0
- package/dist/core/sdd/governance-parser.js +91 -0
- package/dist/core/sdd/governance-schemas.d.ts +245 -0
- package/dist/core/sdd/governance-schemas.js +143 -0
- package/dist/core/sdd/{import-openspec.d.ts → import-legacy-spec.d.ts} +7 -7
- package/dist/core/sdd/{import-openspec.js → import-legacy-spec.js} +21 -29
- package/dist/core/sdd/init.d.ts +3 -0
- package/dist/core/sdd/init.js +6 -3
- package/dist/core/sdd/intent-guard.d.ts +22 -0
- package/dist/core/sdd/intent-guard.js +67 -0
- package/dist/core/sdd/json-schema.js +108 -6
- package/dist/core/sdd/knowledge-graph.d.ts +45 -0
- package/dist/core/sdd/knowledge-graph.js +288 -0
- package/dist/core/sdd/legacy-operations.js +507 -44
- package/dist/core/sdd/lenses.d.ts +1 -0
- package/dist/core/sdd/lenses.js +29 -1
- package/dist/core/sdd/migrate-workspace.js +95 -2
- package/dist/core/sdd/migrate.d.ts +1 -1
- package/dist/core/sdd/migrate.js +36 -2
- package/dist/core/sdd/package-security-gates.d.ts +21 -0
- package/dist/core/sdd/package-security-gates.js +119 -0
- package/dist/core/sdd/package-structure-gate.d.ts +83 -0
- package/dist/core/sdd/package-structure-gate.js +357 -0
- package/dist/core/sdd/parallel-feat-automation.d.ts +330 -0
- package/dist/core/sdd/parallel-feat-automation.js +424 -0
- package/dist/core/sdd/plugin-broker.d.ts +777 -0
- package/dist/core/sdd/plugin-broker.js +492 -0
- package/dist/core/sdd/plugin-certification.d.ts +79 -0
- package/dist/core/sdd/plugin-certification.js +453 -0
- package/dist/core/sdd/plugin-cli.d.ts +139 -0
- package/dist/core/sdd/plugin-cli.js +265 -0
- package/dist/core/sdd/plugin-evidence.d.ts +348 -0
- package/dist/core/sdd/plugin-evidence.js +307 -0
- package/dist/core/sdd/plugin-manifest.d.ts +232 -0
- package/dist/core/sdd/plugin-manifest.js +225 -0
- package/dist/core/sdd/plugin-policy-pack.d.ts +88 -0
- package/dist/core/sdd/plugin-policy-pack.js +236 -0
- package/dist/core/sdd/plugin-policy.d.ts +68 -0
- package/dist/core/sdd/plugin-policy.js +212 -0
- package/dist/core/sdd/plugin-registry.d.ts +447 -0
- package/dist/core/sdd/plugin-registry.js +138 -0
- package/dist/core/sdd/plugin-sdk-contract.d.ts +363 -0
- package/dist/core/sdd/plugin-sdk-contract.js +268 -0
- package/dist/core/sdd/plugin-skill-binding.d.ts +151 -0
- package/dist/core/sdd/plugin-skill-binding.js +339 -0
- package/dist/core/sdd/quality-artifact-manifest-validator.d.ts +28 -0
- package/dist/core/sdd/quality-artifact-manifest-validator.js +167 -0
- package/dist/core/sdd/quality-evidence-renderer.d.ts +65 -0
- package/dist/core/sdd/quality-evidence-renderer.js +218 -0
- package/dist/core/sdd/quality-scenario-runner.d.ts +42 -0
- package/dist/core/sdd/quality-scenario-runner.js +613 -0
- package/dist/core/sdd/quality-validation.d.ts +620 -0
- package/dist/core/sdd/quality-validation.js +239 -0
- package/dist/core/sdd/release-readiness.d.ts +19 -0
- package/dist/core/sdd/release-readiness.js +472 -0
- package/dist/core/sdd/resolve-project-root.d.ts +2 -2
- package/dist/core/sdd/resolve-project-root.js +11 -5
- package/dist/core/sdd/runtime-boundary-contract.d.ts +45 -0
- package/dist/core/sdd/runtime-boundary-contract.js +90 -0
- package/dist/core/sdd/sanitize.d.ts +30 -1
- package/dist/core/sdd/sanitize.js +23 -23
- package/dist/core/sdd/sdk-agent-plugin-quality-gates.d.ts +150 -0
- package/dist/core/sdd/sdk-agent-plugin-quality-gates.js +258 -0
- package/dist/core/sdd/services/agent-run.service.d.ts +97 -0
- package/dist/core/sdd/services/agent-run.service.js +261 -0
- package/dist/core/sdd/services/breakdown.service.js +2 -1
- package/dist/core/sdd/services/capability-diff.service.d.ts +18 -0
- package/dist/core/sdd/services/capability-diff.service.js +26 -0
- package/dist/core/sdd/services/change-safety-preflight.service.d.ts +17 -0
- package/dist/core/sdd/services/change-safety-preflight.service.js +17 -0
- package/dist/core/sdd/services/context.service.d.ts +43 -340
- package/dist/core/sdd/services/context.service.js +341 -25
- package/dist/core/sdd/services/debate.service.js +15 -2
- package/dist/core/sdd/services/feature-lint.service.d.ts +22 -0
- package/dist/core/sdd/services/feature-lint.service.js +105 -5
- package/dist/core/sdd/services/finalize.service.d.ts +105 -0
- package/dist/core/sdd/services/finalize.service.js +499 -38
- package/dist/core/sdd/services/frontend-gap.service.js +22 -7
- package/dist/core/sdd/services/frontend-impact.service.d.ts +1 -1
- package/dist/core/sdd/services/governance-control-plane-runtime-adapters.d.ts +17 -0
- package/dist/core/sdd/services/governance-control-plane-runtime-adapters.js +38 -0
- package/dist/core/sdd/services/governance-control-plane.service.d.ts +66 -0
- package/dist/core/sdd/services/governance-control-plane.service.js +134 -0
- package/dist/core/sdd/services/ingest-deposito.service.js +1 -1
- package/dist/core/sdd/services/legacy-capability.service.d.ts +10 -7
- package/dist/core/sdd/services/legacy-capability.service.js +38 -21
- package/dist/core/sdd/services/mcp-runtime.service.d.ts +123 -8
- package/dist/core/sdd/services/mcp-runtime.service.js +1085 -33
- package/dist/core/sdd/services/onboard.service.js +2 -1
- package/dist/core/sdd/services/rebuild.service.js +6 -1
- package/dist/core/sdd/services/semantic-intent-classifier.service.d.ts +6 -0
- package/dist/core/sdd/services/semantic-intent-classifier.service.js +7 -0
- package/dist/core/sdd/services/skills-sync.service.d.ts +17 -5
- package/dist/core/sdd/services/skills-sync.service.js +55 -2
- package/dist/core/sdd/services/start.service.js +6 -4
- package/dist/core/sdd/skill-bundles-curation-schema.d.ts +66 -0
- package/dist/core/sdd/skill-bundles-curation-schema.js +52 -0
- package/dist/core/sdd/skill-evidence.d.ts +19 -0
- package/dist/core/sdd/skill-evidence.js +38 -0
- package/dist/core/sdd/skill-policy-pool.d.ts +46 -0
- package/dist/core/sdd/skill-policy-pool.js +185 -0
- package/dist/core/sdd/state.d.ts +23 -0
- package/dist/core/sdd/state.js +313 -66
- package/dist/core/sdd/store/sdd-stores.js +2 -2
- package/dist/core/sdd/structural-health.d.ts +55 -55
- package/dist/core/sdd/types.d.ts +60 -19
- package/dist/core/sdd/types.js +21 -0
- package/dist/core/sdd/upgrade-to-codesdd.d.ts +45 -0
- package/dist/core/sdd/upgrade-to-codesdd.js +179 -0
- package/dist/core/sdd/views.js +17 -0
- package/dist/core/sdd/workspace-schemas.d.ts +670 -19
- package/dist/core/sdd/workspace-schemas.js +285 -5
- package/dist/core/sdd/write-manifest.js +22 -4
- package/dist/core/shared/skill-generation.d.ts +1 -1
- package/dist/core/shared/skill-generation.js +15 -15
- package/dist/core/shared/tool-detection.d.ts +3 -3
- package/dist/core/shared/tool-detection.js +14 -14
- package/dist/core/specs-apply.js +6 -6
- package/dist/core/templates/index.d.ts +1 -1
- package/dist/core/templates/index.js +1 -1
- package/dist/core/templates/workflows/apply-change.js +14 -14
- package/dist/core/templates/workflows/archive-change.js +32 -32
- package/dist/core/templates/workflows/bulk-archive-change.js +25 -25
- package/dist/core/templates/workflows/continue-change.js +12 -12
- package/dist/core/templates/workflows/explore.js +29 -29
- package/dist/core/templates/workflows/feedback.js +6 -6
- package/dist/core/templates/workflows/ff-change.js +24 -24
- package/dist/core/templates/workflows/new-change.js +20 -20
- package/dist/core/templates/workflows/onboard.js +33 -33
- package/dist/core/templates/workflows/propose.js +23 -23
- package/dist/core/templates/workflows/sdd.js +8 -8
- package/dist/core/templates/workflows/sync-specs.js +19 -19
- package/dist/core/templates/workflows/verify-change.js +17 -17
- package/dist/core/update.d.ts +2 -2
- package/dist/core/update.js +16 -15
- package/dist/core/validation/constants.d.ts +1 -1
- package/dist/core/validation/constants.js +1 -1
- package/dist/core/view.js +11 -11
- package/dist/domains/sdd/index.d.ts +6 -0
- package/dist/domains/sdd/index.js +6 -0
- package/dist/infrastructures/sdd/index.d.ts +7 -0
- package/dist/infrastructures/sdd/index.js +6 -0
- package/dist/presentations/cli/sdd/index.d.ts +3 -0
- package/dist/presentations/cli/sdd/index.js +3 -0
- package/dist/shared/sdd/index.d.ts +3 -0
- package/dist/shared/sdd/index.js +2 -0
- package/dist/telemetry/config.d.ts +2 -1
- package/dist/telemetry/config.js +17 -8
- package/dist/telemetry/index.d.ts +10 -2
- package/dist/telemetry/index.js +40 -7
- package/dist/ui/ascii-patterns.d.ts +2 -2
- package/dist/ui/ascii-patterns.js +2 -2
- package/dist/ui/welcome-screen.js +2 -2
- package/dist/utils/change-metadata.d.ts +4 -4
- package/dist/utils/change-metadata.js +6 -6
- package/dist/utils/change-utils.d.ts +3 -3
- package/dist/utils/change-utils.js +5 -5
- package/dist/utils/file-system.js +1 -1
- package/dist/utils/interactive.js +1 -1
- package/dist/utils/item-discovery.js +4 -4
- package/dist/utils/legacy-spec-compat.d.ts +2 -0
- package/dist/utils/legacy-spec-compat.js +2 -0
- package/dist/utils/shell-detection.d.ts +1 -0
- package/dist/utils/shell-detection.js +16 -0
- package/package.json +34 -21
- package/schemas/sdd/1-spec.schema.json +1 -1
- package/schemas/sdd/2-plan.schema.json +280 -3
- package/schemas/sdd/3-tasks.schema.json +73 -1
- package/schemas/sdd/4-changelog.schema.json +1 -1
- package/schemas/sdd/5-quality.schema.json +701 -5
- package/schemas/sdd/adr.schema.json +148 -0
- package/schemas/sdd/agent-binding-adapter.schema.json +210 -0
- package/schemas/sdd/agent-binding-resolution.schema.json +338 -0
- package/schemas/sdd/agent-runtime-command-plan.schema.json +212 -0
- package/schemas/sdd/agent-runtime-opencode-run-evidence.schema.json +270 -0
- package/schemas/sdd/backlog-projection-plan.schema.json +180 -0
- package/schemas/sdd/backlog-provider-contract.schema.json +260 -0
- package/schemas/sdd/codesdd-plugin.schema.json +645 -0
- package/schemas/sdd/debate.schema.json +244 -0
- package/schemas/sdd/deepagent-decision-evidence.schema.json +58 -0
- package/schemas/sdd/deepagent-env-contract.schema.json +143 -0
- package/schemas/sdd/deepagent-quality-evidence.schema.json +108 -0
- package/schemas/sdd/deepagent-run-evidence.schema.json +192 -0
- package/schemas/sdd/deepagent-run-plan.schema.json +197 -0
- package/schemas/sdd/deepagent-run-request.schema.json +637 -0
- package/schemas/sdd/deepagent-subagent-evidence.schema.json +110 -0
- package/schemas/sdd/deepagent-tool-call-evidence.schema.json +78 -0
- package/schemas/sdd/discarded.schema.json +127 -0
- package/schemas/sdd/epic.schema.json +147 -0
- package/schemas/sdd/insight.schema.json +136 -0
- package/schemas/sdd/parallel-feat-automation-plan.schema.json +304 -0
- package/schemas/sdd/parallel-feat-automation-request.schema.json +109 -0
- package/schemas/sdd/parallel-feat-scheduler-request.schema.json +116 -0
- package/schemas/sdd/parallel-feat-scheduler-result.schema.json +404 -0
- package/schemas/sdd/plugin-artifact-manifest.schema.json +259 -0
- package/schemas/sdd/plugin-artifact-map.schema.json +223 -0
- package/schemas/sdd/plugin-compliance-index.schema.json +136 -0
- package/schemas/sdd/plugin-dry-run-plan.schema.json +260 -0
- package/schemas/sdd/plugin-evidence-manifest.schema.json +678 -0
- package/schemas/sdd/plugin-language-runtime.schema.json +103 -0
- package/schemas/sdd/plugin-package-governance.schema.json +74 -0
- package/schemas/sdd/plugin-policy-evaluation.schema.json +92 -0
- package/schemas/sdd/plugin-policy-pack-evaluation.schema.json +94 -0
- package/schemas/sdd/plugin-policy-pack.schema.json +196 -0
- package/schemas/sdd/plugin-registry.schema.json +729 -0
- package/schemas/sdd/plugin-rollback-manifest.schema.json +87 -0
- package/schemas/sdd/plugin-runtime-invocation-plan.schema.json +954 -0
- package/schemas/sdd/plugin-skill-binding-resolution.schema.json +305 -0
- package/schemas/sdd/plugin-skill-binding.schema.json +88 -0
- package/schemas/sdd/plugin-validation-manifest.schema.json +123 -0
- package/schemas/sdd/quality-architecture-schema.schema.json +216 -0
- package/schemas/sdd/quality-evidence-bundle.schema.json +1337 -0
- package/schemas/sdd/quality-run.schema.json +197 -0
- package/schemas/sdd/quality-scenario.schema.json +252 -0
- package/schemas/sdd/sdk-agent-plugin-quality-gate-input.schema.json +168 -0
- package/schemas/sdd/sdk-agent-plugin-quality-gate-report.schema.json +160 -0
- package/schemas/sdd/workspace-catalog.schema.json +13232 -35
- package/schemas/spec-driven/schema.yaml +4 -4
- package/schemas/spec-driven/templates/proposal.md +1 -1
- package/dist/utils/openspec-compat.d.ts +0 -2
- package/dist/utils/openspec-compat.js +0 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CLI_COMMAND_MATRIX } from '../cli/command-matrix.js';
|
|
1
2
|
/**
|
|
2
3
|
* Common flags used across multiple commands
|
|
3
4
|
*/
|
|
@@ -26,13 +27,13 @@ const COMMON_FLAGS = {
|
|
|
26
27
|
},
|
|
27
28
|
};
|
|
28
29
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
30
|
+
* Curated command metadata overrides for commands that need richer flag or
|
|
31
|
+
* positional completion than the command matrix can provide by itself.
|
|
31
32
|
*/
|
|
32
|
-
|
|
33
|
+
const COMMAND_METADATA_OVERRIDES = [
|
|
33
34
|
{
|
|
34
35
|
name: 'init',
|
|
35
|
-
description: 'Initialize
|
|
36
|
+
description: 'Initialize CodeSDD in your project',
|
|
36
37
|
acceptsPositional: true,
|
|
37
38
|
positionalType: 'path',
|
|
38
39
|
flags: [
|
|
@@ -43,12 +44,60 @@ export const COMMAND_REGISTRY = [
|
|
|
43
44
|
},
|
|
44
45
|
],
|
|
45
46
|
},
|
|
47
|
+
{
|
|
48
|
+
name: 'reload',
|
|
49
|
+
description: 'Reload CodeSDD project files using the installed CLI version',
|
|
50
|
+
acceptsPositional: true,
|
|
51
|
+
positionalType: 'path',
|
|
52
|
+
flags: [
|
|
53
|
+
{
|
|
54
|
+
name: 'tools',
|
|
55
|
+
description: 'Configure AI tools non-interactively (e.g., "all", "none", or comma-separated tool IDs)',
|
|
56
|
+
takesValue: true,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'force',
|
|
60
|
+
description: 'Auto-cleanup legacy files without prompting',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'profile',
|
|
64
|
+
description: 'Override global config profile (core or custom)',
|
|
65
|
+
takesValue: true,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'lang',
|
|
69
|
+
description: 'SDD language: pt-BR|en-US',
|
|
70
|
+
takesValue: true,
|
|
71
|
+
values: ['pt-BR', 'en-US'],
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'layout',
|
|
75
|
+
description: 'SDD folder layout: en-US|legacy|pt-BR',
|
|
76
|
+
takesValue: true,
|
|
77
|
+
values: ['en-US', 'legacy', 'pt-BR'],
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'no-frontend',
|
|
81
|
+
description: 'Disable frontend module in the SDD bootstrap',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: 'no-render',
|
|
85
|
+
description: 'Do not render Markdown views after reload',
|
|
86
|
+
},
|
|
87
|
+
COMMON_FLAGS.json,
|
|
88
|
+
],
|
|
89
|
+
},
|
|
46
90
|
{
|
|
47
91
|
name: 'update',
|
|
48
|
-
description: 'Update
|
|
92
|
+
description: 'Update CodeSDD instruction files',
|
|
49
93
|
acceptsPositional: true,
|
|
50
94
|
positionalType: 'path',
|
|
51
|
-
flags: [
|
|
95
|
+
flags: [
|
|
96
|
+
{
|
|
97
|
+
name: 'force',
|
|
98
|
+
description: 'Force update even when tools are up to date',
|
|
99
|
+
},
|
|
100
|
+
],
|
|
52
101
|
},
|
|
53
102
|
{
|
|
54
103
|
name: 'list',
|
|
@@ -62,6 +111,13 @@ export const COMMAND_REGISTRY = [
|
|
|
62
111
|
name: 'changes',
|
|
63
112
|
description: 'List changes explicitly (default)',
|
|
64
113
|
},
|
|
114
|
+
{
|
|
115
|
+
name: 'sort',
|
|
116
|
+
description: 'Sort order: recent (default) or name',
|
|
117
|
+
takesValue: true,
|
|
118
|
+
values: ['recent', 'name'],
|
|
119
|
+
},
|
|
120
|
+
COMMON_FLAGS.json,
|
|
65
121
|
],
|
|
66
122
|
},
|
|
67
123
|
{
|
|
@@ -92,7 +148,7 @@ export const COMMAND_REGISTRY = [
|
|
|
92
148
|
COMMON_FLAGS.jsonValidation,
|
|
93
149
|
{
|
|
94
150
|
name: 'concurrency',
|
|
95
|
-
description: 'Max concurrent validations (defaults to env
|
|
151
|
+
description: 'Max concurrent validations (defaults to env CODESDD_CONCURRENCY or 6)',
|
|
96
152
|
takesValue: true,
|
|
97
153
|
},
|
|
98
154
|
COMMON_FLAGS.noInteractive,
|
|
@@ -154,7 +210,7 @@ export const COMMAND_REGISTRY = [
|
|
|
154
210
|
},
|
|
155
211
|
{
|
|
156
212
|
name: 'feedback',
|
|
157
|
-
description: 'Submit feedback about
|
|
213
|
+
description: 'Submit feedback about CodeSDD',
|
|
158
214
|
acceptsPositional: true,
|
|
159
215
|
flags: [
|
|
160
216
|
{
|
|
@@ -166,7 +222,7 @@ export const COMMAND_REGISTRY = [
|
|
|
166
222
|
},
|
|
167
223
|
{
|
|
168
224
|
name: 'change',
|
|
169
|
-
description: 'Manage
|
|
225
|
+
description: 'Manage legacy change proposals (deprecated)',
|
|
170
226
|
flags: [],
|
|
171
227
|
subcommands: [
|
|
172
228
|
{
|
|
@@ -213,7 +269,7 @@ export const COMMAND_REGISTRY = [
|
|
|
213
269
|
},
|
|
214
270
|
{
|
|
215
271
|
name: 'spec',
|
|
216
|
-
description: 'Manage
|
|
272
|
+
description: 'Manage specifications',
|
|
217
273
|
flags: [],
|
|
218
274
|
subcommands: [
|
|
219
275
|
{
|
|
@@ -266,7 +322,7 @@ export const COMMAND_REGISTRY = [
|
|
|
266
322
|
},
|
|
267
323
|
{
|
|
268
324
|
name: 'completion',
|
|
269
|
-
description: 'Manage shell completions for
|
|
325
|
+
description: 'Manage shell completions for CodeSDD CLI',
|
|
270
326
|
flags: [],
|
|
271
327
|
subcommands: [
|
|
272
328
|
{
|
|
@@ -305,7 +361,7 @@ export const COMMAND_REGISTRY = [
|
|
|
305
361
|
},
|
|
306
362
|
{
|
|
307
363
|
name: 'config',
|
|
308
|
-
description: 'View and modify global
|
|
364
|
+
description: 'View and modify global CodeSDD configuration',
|
|
309
365
|
flags: [
|
|
310
366
|
{
|
|
311
367
|
name: 'scope',
|
|
@@ -320,6 +376,20 @@ export const COMMAND_REGISTRY = [
|
|
|
320
376
|
description: 'Show config file location',
|
|
321
377
|
flags: [],
|
|
322
378
|
},
|
|
379
|
+
{
|
|
380
|
+
name: 'init',
|
|
381
|
+
description: 'Initialize ~/.codesdd runtime files and idempotent shell integration',
|
|
382
|
+
flags: [
|
|
383
|
+
COMMON_FLAGS.json,
|
|
384
|
+
],
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
name: 'doctor',
|
|
388
|
+
description: 'Run operational readiness checks for DeepAgents/Azure, cache, and Redis boundary',
|
|
389
|
+
flags: [
|
|
390
|
+
COMMON_FLAGS.json,
|
|
391
|
+
],
|
|
392
|
+
},
|
|
323
393
|
{
|
|
324
394
|
name: 'list',
|
|
325
395
|
description: 'Show all current settings',
|
|
@@ -379,6 +449,51 @@ export const COMMAND_REGISTRY = [
|
|
|
379
449
|
description: 'Configure workflow profile (interactive picker or preset shortcut)',
|
|
380
450
|
flags: [],
|
|
381
451
|
},
|
|
452
|
+
{
|
|
453
|
+
name: 'redis',
|
|
454
|
+
description: 'Inspect and operate the optional Redis runtime backend',
|
|
455
|
+
flags: [],
|
|
456
|
+
subcommands: [
|
|
457
|
+
{
|
|
458
|
+
name: 'status',
|
|
459
|
+
description: 'Show Redis runtime status',
|
|
460
|
+
flags: [
|
|
461
|
+
COMMON_FLAGS.json,
|
|
462
|
+
],
|
|
463
|
+
},
|
|
464
|
+
{
|
|
465
|
+
name: 'ping',
|
|
466
|
+
description: 'Ping Redis using the effective CodeSDD configuration',
|
|
467
|
+
flags: [
|
|
468
|
+
COMMON_FLAGS.json,
|
|
469
|
+
],
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
name: 'bench',
|
|
473
|
+
description: 'Run a short redacted Redis latency benchmark',
|
|
474
|
+
flags: [
|
|
475
|
+
COMMON_FLAGS.json,
|
|
476
|
+
{
|
|
477
|
+
name: 'iterations',
|
|
478
|
+
description: 'Number of benchmark iterations',
|
|
479
|
+
takesValue: true,
|
|
480
|
+
},
|
|
481
|
+
],
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
name: 'flush-namespace',
|
|
485
|
+
description: 'Delete only keys under the effective CodeSDD Redis namespace',
|
|
486
|
+
flags: [
|
|
487
|
+
COMMON_FLAGS.json,
|
|
488
|
+
{
|
|
489
|
+
name: 'yes',
|
|
490
|
+
short: 'y',
|
|
491
|
+
description: 'Confirm namespace-scoped deletion',
|
|
492
|
+
},
|
|
493
|
+
],
|
|
494
|
+
},
|
|
495
|
+
],
|
|
496
|
+
},
|
|
382
497
|
],
|
|
383
498
|
},
|
|
384
499
|
{
|
|
@@ -458,4 +573,77 @@ export const COMMAND_REGISTRY = [
|
|
|
458
573
|
],
|
|
459
574
|
},
|
|
460
575
|
];
|
|
576
|
+
const HIDDEN_OR_INTERNAL_COMMAND_PATHS = new Set([
|
|
577
|
+
'experimental',
|
|
578
|
+
'__complete',
|
|
579
|
+
]);
|
|
580
|
+
function cloneCommandDefinition(command) {
|
|
581
|
+
return {
|
|
582
|
+
...command,
|
|
583
|
+
flags: command.flags.map((flag) => ({ ...flag, values: flag.values ? [...flag.values] : undefined })),
|
|
584
|
+
subcommands: command.subcommands?.map(cloneCommandDefinition),
|
|
585
|
+
};
|
|
586
|
+
}
|
|
587
|
+
function collectLeafCommandPaths(commands, prefix = []) {
|
|
588
|
+
const paths = new Set();
|
|
589
|
+
for (const command of commands) {
|
|
590
|
+
const nextPrefix = [...prefix, command.name];
|
|
591
|
+
if (command.subcommands && command.subcommands.length > 0) {
|
|
592
|
+
for (const childPath of collectLeafCommandPaths(command.subcommands, nextPrefix)) {
|
|
593
|
+
paths.add(childPath);
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
else {
|
|
597
|
+
paths.add(nextPrefix.join(':'));
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
return paths;
|
|
601
|
+
}
|
|
602
|
+
function findOrCreateCommand(commands, name, description) {
|
|
603
|
+
const existing = commands.find((command) => command.name === name);
|
|
604
|
+
if (existing) {
|
|
605
|
+
return existing;
|
|
606
|
+
}
|
|
607
|
+
const created = {
|
|
608
|
+
name,
|
|
609
|
+
description,
|
|
610
|
+
flags: [],
|
|
611
|
+
};
|
|
612
|
+
commands.push(created);
|
|
613
|
+
return created;
|
|
614
|
+
}
|
|
615
|
+
function humanizeCommandPath(commandPath) {
|
|
616
|
+
return `Run ${commandPath.split(':').join(' ')} command`;
|
|
617
|
+
}
|
|
618
|
+
function addCommandPath(commands, commandPath) {
|
|
619
|
+
const segments = commandPath.split(':');
|
|
620
|
+
let currentCommands = commands;
|
|
621
|
+
segments.forEach((segment, index) => {
|
|
622
|
+
const isLeaf = index === segments.length - 1;
|
|
623
|
+
const definition = findOrCreateCommand(currentCommands, segment, isLeaf ? humanizeCommandPath(commandPath) : `Manage ${segments.slice(0, index + 1).join(' ')} commands`);
|
|
624
|
+
if (!isLeaf) {
|
|
625
|
+
definition.subcommands ??= [];
|
|
626
|
+
currentCommands = definition.subcommands;
|
|
627
|
+
}
|
|
628
|
+
});
|
|
629
|
+
}
|
|
630
|
+
function buildCompleteCommandRegistry(baseRegistry) {
|
|
631
|
+
const registry = baseRegistry.map(cloneCommandDefinition);
|
|
632
|
+
const existingLeafPaths = collectLeafCommandPaths(registry);
|
|
633
|
+
for (const entry of CLI_COMMAND_MATRIX) {
|
|
634
|
+
if (HIDDEN_OR_INTERNAL_COMMAND_PATHS.has(entry.commandPath)) {
|
|
635
|
+
continue;
|
|
636
|
+
}
|
|
637
|
+
if (!existingLeafPaths.has(entry.commandPath)) {
|
|
638
|
+
addCommandPath(registry, entry.commandPath);
|
|
639
|
+
existingLeafPaths.add(entry.commandPath);
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
return registry;
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Registry of all visible CodeSDD CLI commands with their flags and metadata.
|
|
646
|
+
* This registry is used to generate shell completion scripts.
|
|
647
|
+
*/
|
|
648
|
+
export const COMMAND_REGISTRY = buildCompleteCommandRegistry(COMMAND_METADATA_OVERRIDES);
|
|
461
649
|
//# sourceMappingURL=command-registry.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Provides dynamic completion suggestions for
|
|
2
|
+
* Provides dynamic completion suggestions for CodeSDD items (changes and specs).
|
|
3
3
|
* Implements a 2-second cache to avoid excessive file system operations during
|
|
4
4
|
* tab completion.
|
|
5
5
|
*/
|
|
@@ -7,8 +7,10 @@ export declare class CompletionProvider {
|
|
|
7
7
|
private readonly cacheTTLMs;
|
|
8
8
|
private readonly projectRoot;
|
|
9
9
|
private readonly cacheTTL;
|
|
10
|
+
private readonly projectFingerprint;
|
|
10
11
|
private changeCache;
|
|
11
12
|
private specCache;
|
|
13
|
+
private schemaCache;
|
|
12
14
|
/**
|
|
13
15
|
* Creates a new completion provider
|
|
14
16
|
*
|
|
@@ -37,6 +39,12 @@ export declare class CompletionProvider {
|
|
|
37
39
|
changeIds: string[];
|
|
38
40
|
specIds: string[];
|
|
39
41
|
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Get all workflow schema names for completion
|
|
44
|
+
*
|
|
45
|
+
* @returns Array of schema names
|
|
46
|
+
*/
|
|
47
|
+
getSchemaNames(): Promise<string[]>;
|
|
40
48
|
/**
|
|
41
49
|
* Clear all cached data
|
|
42
50
|
*/
|
|
@@ -47,6 +55,7 @@ export declare class CompletionProvider {
|
|
|
47
55
|
* @returns Cache status information
|
|
48
56
|
*/
|
|
49
57
|
getCacheStats(): {
|
|
58
|
+
projectFingerprint: string;
|
|
50
59
|
changeCache: {
|
|
51
60
|
valid: boolean;
|
|
52
61
|
age?: number;
|
|
@@ -55,6 +64,10 @@ export declare class CompletionProvider {
|
|
|
55
64
|
valid: boolean;
|
|
56
65
|
age?: number;
|
|
57
66
|
};
|
|
67
|
+
schemaCache: {
|
|
68
|
+
valid: boolean;
|
|
69
|
+
age?: number;
|
|
70
|
+
};
|
|
58
71
|
};
|
|
59
72
|
}
|
|
60
73
|
//# sourceMappingURL=completion-provider.d.ts.map
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { getActiveChangeIds, getSpecIds } from '../../utils/item-discovery.js';
|
|
2
|
+
import { listSchemas } from '../artifact-graph/index.js';
|
|
3
|
+
import { createProjectFingerprint } from '../global-config.js';
|
|
2
4
|
/**
|
|
3
|
-
* Provides dynamic completion suggestions for
|
|
5
|
+
* Provides dynamic completion suggestions for CodeSDD items (changes and specs).
|
|
4
6
|
* Implements a 2-second cache to avoid excessive file system operations during
|
|
5
7
|
* tab completion.
|
|
6
8
|
*/
|
|
@@ -8,8 +10,10 @@ export class CompletionProvider {
|
|
|
8
10
|
cacheTTLMs;
|
|
9
11
|
projectRoot;
|
|
10
12
|
cacheTTL;
|
|
13
|
+
projectFingerprint;
|
|
11
14
|
changeCache = null;
|
|
12
15
|
specCache = null;
|
|
16
|
+
schemaCache = null;
|
|
13
17
|
/**
|
|
14
18
|
* Creates a new completion provider
|
|
15
19
|
*
|
|
@@ -20,6 +24,7 @@ export class CompletionProvider {
|
|
|
20
24
|
this.cacheTTLMs = cacheTTLMs;
|
|
21
25
|
this.projectRoot = projectRoot;
|
|
22
26
|
this.cacheTTL = cacheTTLMs;
|
|
27
|
+
this.projectFingerprint = createProjectFingerprint(projectRoot);
|
|
23
28
|
}
|
|
24
29
|
/**
|
|
25
30
|
* Get all active change IDs for completion
|
|
@@ -73,12 +78,30 @@ export class CompletionProvider {
|
|
|
73
78
|
]);
|
|
74
79
|
return { changeIds, specIds };
|
|
75
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Get all workflow schema names for completion
|
|
83
|
+
*
|
|
84
|
+
* @returns Array of schema names
|
|
85
|
+
*/
|
|
86
|
+
async getSchemaNames() {
|
|
87
|
+
const now = Date.now();
|
|
88
|
+
if (this.schemaCache && now - this.schemaCache.timestamp < this.cacheTTL) {
|
|
89
|
+
return this.schemaCache.data;
|
|
90
|
+
}
|
|
91
|
+
const schemaNames = listSchemas(this.projectRoot);
|
|
92
|
+
this.schemaCache = {
|
|
93
|
+
data: schemaNames,
|
|
94
|
+
timestamp: now,
|
|
95
|
+
};
|
|
96
|
+
return schemaNames;
|
|
97
|
+
}
|
|
76
98
|
/**
|
|
77
99
|
* Clear all cached data
|
|
78
100
|
*/
|
|
79
101
|
clearCache() {
|
|
80
102
|
this.changeCache = null;
|
|
81
103
|
this.specCache = null;
|
|
104
|
+
this.schemaCache = null;
|
|
82
105
|
}
|
|
83
106
|
/**
|
|
84
107
|
* Get cache statistics for debugging
|
|
@@ -88,6 +111,7 @@ export class CompletionProvider {
|
|
|
88
111
|
getCacheStats() {
|
|
89
112
|
const now = Date.now();
|
|
90
113
|
return {
|
|
114
|
+
projectFingerprint: this.projectFingerprint,
|
|
91
115
|
changeCache: {
|
|
92
116
|
valid: this.changeCache !== null && now - this.changeCache.timestamp < this.cacheTTL,
|
|
93
117
|
age: this.changeCache ? now - this.changeCache.timestamp : undefined,
|
|
@@ -96,6 +120,10 @@ export class CompletionProvider {
|
|
|
96
120
|
valid: this.specCache !== null && now - this.specCache.timestamp < this.cacheTTL,
|
|
97
121
|
age: this.specCache ? now - this.specCache.timestamp : undefined,
|
|
98
122
|
},
|
|
123
|
+
schemaCache: {
|
|
124
|
+
valid: this.schemaCache !== null && now - this.schemaCache.timestamp < this.cacheTTL,
|
|
125
|
+
age: this.schemaCache ? now - this.schemaCache.timestamp : undefined,
|
|
126
|
+
},
|
|
99
127
|
};
|
|
100
128
|
}
|
|
101
129
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CompletionGenerator, CommandDefinition } from '../types.js';
|
|
2
2
|
/**
|
|
3
|
-
* Generates Bash completion scripts for the
|
|
3
|
+
* Generates Bash completion scripts for the CodeSDD CLI.
|
|
4
4
|
* Follows Bash completion conventions using complete builtin and COMPREPLY array.
|
|
5
5
|
*/
|
|
6
6
|
export declare class BashGenerator implements CompletionGenerator {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BASH_DYNAMIC_HELPERS } from '../templates/bash-templates.js';
|
|
2
2
|
/**
|
|
3
|
-
* Generates Bash completion scripts for the
|
|
3
|
+
* Generates Bash completion scripts for the CodeSDD CLI.
|
|
4
4
|
* Follows Bash completion conventions using complete builtin and COMPREPLY array.
|
|
5
5
|
*/
|
|
6
6
|
export class BashGenerator {
|
|
@@ -25,10 +25,10 @@ export class BashGenerator {
|
|
|
25
25
|
// Dynamic completion helpers from template
|
|
26
26
|
const helpers = BASH_DYNAMIC_HELPERS;
|
|
27
27
|
// Assemble final script with template literal
|
|
28
|
-
return `# Bash completion script for
|
|
28
|
+
return `# Bash completion script for CodeSDD CLI
|
|
29
29
|
# Auto-generated - do not edit manually
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
_codesdd_completion() {
|
|
32
32
|
local cur prev words cword
|
|
33
33
|
|
|
34
34
|
# Use _init_completion if available (from bash-completion package)
|
|
@@ -47,7 +47,6 @@ _openspec_completion() {
|
|
|
47
47
|
fi
|
|
48
48
|
|
|
49
49
|
local cmd="\${words[1]}"
|
|
50
|
-
local subcmd="\${words[2]}"
|
|
51
50
|
|
|
52
51
|
# Top-level commands
|
|
53
52
|
if [[ $cword -eq 1 ]]; then
|
|
@@ -65,13 +64,13 @@ ${commandCases}
|
|
|
65
64
|
}
|
|
66
65
|
|
|
67
66
|
${helpers}
|
|
68
|
-
complete -F
|
|
67
|
+
complete -F _codesdd_completion codesdd
|
|
69
68
|
`;
|
|
70
69
|
}
|
|
71
70
|
/**
|
|
72
71
|
* Generate completion case logic for a command
|
|
73
72
|
*/
|
|
74
|
-
generateCommandCase(cmd, indent) {
|
|
73
|
+
generateCommandCase(cmd, indent, depth = 2) {
|
|
75
74
|
const lines = [];
|
|
76
75
|
// Handle subcommands
|
|
77
76
|
if (cmd.subcommands && cmd.subcommands.length > 0) {
|
|
@@ -91,16 +90,22 @@ complete -F _openspec_completion openspec
|
|
|
91
90
|
lines.push(`${indent}fi`);
|
|
92
91
|
lines.push('');
|
|
93
92
|
}
|
|
94
|
-
lines.push(`${indent}if [[ $cword -eq
|
|
93
|
+
lines.push(`${indent}if [[ $cword -eq ${depth} ]]; then`);
|
|
95
94
|
lines.push(`${indent} local subcommands="` + cmd.subcommands.map(s => this.escapeCommandName(s.name)).join(' ') + '"');
|
|
96
95
|
lines.push(`${indent} COMPREPLY=($(compgen -W "$subcommands" -- "$cur"))`);
|
|
97
96
|
lines.push(`${indent} return 0`);
|
|
98
97
|
lines.push(`${indent}fi`);
|
|
99
98
|
lines.push('');
|
|
100
|
-
lines.push(`${indent}
|
|
99
|
+
lines.push(`${indent}local subcmd_${depth}="\${words[${depth}]}"`);
|
|
100
|
+
lines.push(`${indent}case "$subcmd_${depth}" in`);
|
|
101
101
|
for (const subcmd of cmd.subcommands) {
|
|
102
102
|
lines.push(`${indent} ${subcmd.name})`);
|
|
103
|
-
|
|
103
|
+
if (subcmd.subcommands && subcmd.subcommands.length > 0) {
|
|
104
|
+
lines.push(...this.generateCommandCase(subcmd, indent + ' ', depth + 1));
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
lines.push(...this.generateArgumentCompletion(subcmd, indent + ' '));
|
|
108
|
+
}
|
|
104
109
|
lines.push(`${indent} ;;`);
|
|
105
110
|
}
|
|
106
111
|
lines.push(`${indent}esac`);
|
|
@@ -145,13 +150,13 @@ complete -F _openspec_completion openspec
|
|
|
145
150
|
const lines = [];
|
|
146
151
|
switch (positionalType) {
|
|
147
152
|
case 'change-id':
|
|
148
|
-
lines.push(`${indent}
|
|
153
|
+
lines.push(`${indent}_codesdd_complete_changes`);
|
|
149
154
|
break;
|
|
150
155
|
case 'spec-id':
|
|
151
|
-
lines.push(`${indent}
|
|
156
|
+
lines.push(`${indent}_codesdd_complete_specs`);
|
|
152
157
|
break;
|
|
153
158
|
case 'change-or-spec-id':
|
|
154
|
-
lines.push(`${indent}
|
|
159
|
+
lines.push(`${indent}_codesdd_complete_items`);
|
|
155
160
|
break;
|
|
156
161
|
case 'shell':
|
|
157
162
|
lines.push(`${indent}local shells="zsh bash fish powershell"`);
|
|
@@ -160,6 +165,9 @@ complete -F _openspec_completion openspec
|
|
|
160
165
|
case 'path':
|
|
161
166
|
lines.push(`${indent}COMPREPLY=($(compgen -f -- "$cur"))`);
|
|
162
167
|
break;
|
|
168
|
+
case 'schema-name':
|
|
169
|
+
lines.push(`${indent}_codesdd_complete_schemas`);
|
|
170
|
+
break;
|
|
163
171
|
}
|
|
164
172
|
return lines;
|
|
165
173
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CompletionGenerator, CommandDefinition } from '../types.js';
|
|
2
2
|
/**
|
|
3
|
-
* Generates Fish completion scripts for the
|
|
3
|
+
* Generates Fish completion scripts for the CodeSDD CLI.
|
|
4
4
|
* Follows Fish completion conventions using the complete command.
|
|
5
5
|
*/
|
|
6
6
|
export declare class FishGenerator implements CompletionGenerator {
|
|
@@ -16,6 +16,14 @@ export declare class FishGenerator implements CompletionGenerator {
|
|
|
16
16
|
* Generate completions for a specific command
|
|
17
17
|
*/
|
|
18
18
|
private generateCommandCompletions;
|
|
19
|
+
/**
|
|
20
|
+
* Generate completions for a command path at any depth.
|
|
21
|
+
*/
|
|
22
|
+
private generateNodeCompletions;
|
|
23
|
+
/**
|
|
24
|
+
* Generate a Fish condition that checks every command segment in a path.
|
|
25
|
+
*/
|
|
26
|
+
private generatePathCondition;
|
|
19
27
|
/**
|
|
20
28
|
* Generate flag completion
|
|
21
29
|
*/
|