@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
|
@@ -12,8 +12,12 @@ export class ZshInstaller {
|
|
|
12
12
|
* Markers for .zshrc configuration management
|
|
13
13
|
*/
|
|
14
14
|
ZSHRC_MARKERS = {
|
|
15
|
-
start: '#
|
|
16
|
-
end: '#
|
|
15
|
+
start: '# CODESDD:START',
|
|
16
|
+
end: '# CODESDD:END',
|
|
17
|
+
};
|
|
18
|
+
ENV_SOURCE_MARKERS = {
|
|
19
|
+
start: '# CODESDD:ENV:START',
|
|
20
|
+
end: '# CODESDD:ENV:END',
|
|
17
21
|
};
|
|
18
22
|
constructor(homeDir = os.homedir()) {
|
|
19
23
|
this.homeDir = homeDir;
|
|
@@ -51,14 +55,14 @@ export class ZshInstaller {
|
|
|
51
55
|
if (isOhMyZsh) {
|
|
52
56
|
// Oh My Zsh custom completions directory
|
|
53
57
|
return {
|
|
54
|
-
path: path.join(this.homeDir, '.oh-my-zsh', 'custom', 'completions', '
|
|
58
|
+
path: path.join(this.homeDir, '.oh-my-zsh', 'custom', 'completions', '_codesdd'),
|
|
55
59
|
isOhMyZsh: true,
|
|
56
60
|
};
|
|
57
61
|
}
|
|
58
62
|
else {
|
|
59
63
|
// Standard Zsh completions directory
|
|
60
64
|
return {
|
|
61
|
-
path: path.join(this.homeDir, '.zsh', 'completions', '
|
|
65
|
+
path: path.join(this.homeDir, '.zsh', 'completions', '_codesdd'),
|
|
62
66
|
isOhMyZsh: false,
|
|
63
67
|
};
|
|
64
68
|
}
|
|
@@ -99,7 +103,7 @@ export class ZshInstaller {
|
|
|
99
103
|
*/
|
|
100
104
|
generateZshrcConfig(completionsDir) {
|
|
101
105
|
return [
|
|
102
|
-
'#
|
|
106
|
+
'# CodeSDD shell completions configuration',
|
|
103
107
|
`fpath=("${completionsDir}" $fpath)`,
|
|
104
108
|
'autoload -Uz compinit',
|
|
105
109
|
'compinit',
|
|
@@ -114,7 +118,7 @@ export class ZshInstaller {
|
|
|
114
118
|
*/
|
|
115
119
|
async configureZshrc(completionsDir) {
|
|
116
120
|
// Check if auto-configuration is disabled
|
|
117
|
-
if (process.env.
|
|
121
|
+
if (process.env.CODESDD_NO_AUTO_CONFIG === '1') {
|
|
118
122
|
return false;
|
|
119
123
|
}
|
|
120
124
|
try {
|
|
@@ -136,7 +140,31 @@ export class ZshInstaller {
|
|
|
136
140
|
}
|
|
137
141
|
}
|
|
138
142
|
/**
|
|
139
|
-
*
|
|
143
|
+
* Ensure ~/.zshrc sources ~/.codesdd/env.zsh through an idempotent marker block.
|
|
144
|
+
* This block contains only non-secret shell wiring.
|
|
145
|
+
*/
|
|
146
|
+
async ensureCodesddEnvSource(envFilePath) {
|
|
147
|
+
if (process.env.CODESDD_NO_AUTO_CONFIG === '1') {
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
const targetEnvPath = envFilePath ?? path.join(this.homeDir, '.codesdd', 'env.zsh');
|
|
151
|
+
const zshrcPath = this.getZshrcPath();
|
|
152
|
+
const canWrite = await FileSystemUtils.canWriteFile(zshrcPath);
|
|
153
|
+
if (!canWrite) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
const sourceLine = `[[ -f "${targetEnvPath}" ]] && source "${targetEnvPath}"`;
|
|
157
|
+
try {
|
|
158
|
+
await FileSystemUtils.updateFileWithMarkers(zshrcPath, sourceLine, this.ENV_SOURCE_MARKERS.start, this.ENV_SOURCE_MARKERS.end);
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
console.debug(`Unable to configure .zshrc env source block: ${error.message}`);
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if .zshrc has CodeSDD configuration markers
|
|
140
168
|
*
|
|
141
169
|
* @returns true if .zshrc exists and has markers
|
|
142
170
|
*/
|
|
@@ -402,7 +430,7 @@ export class ZshInstaller {
|
|
|
402
430
|
messages.push(`Completion script removed from ${targetPath}`);
|
|
403
431
|
}
|
|
404
432
|
if (zshrcCleaned && !isOhMyZsh) {
|
|
405
|
-
messages.push('Removed
|
|
433
|
+
messages.push('Removed CodeSDD configuration from ~/.zshrc');
|
|
406
434
|
}
|
|
407
435
|
return {
|
|
408
436
|
success: true,
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Static template strings for Bash completion scripts.
|
|
3
3
|
* These are Bash-specific helper functions that never change.
|
|
4
4
|
*/
|
|
5
|
-
export declare const BASH_DYNAMIC_HELPERS = "# Dynamic completion helpers\n\
|
|
5
|
+
export declare const BASH_DYNAMIC_HELPERS = "# Dynamic completion helpers\n\n_codesdd_complete_changes() {\n local changes\n changes=$(codesdd __complete changes 2>/dev/null | cut -f1)\n COMPREPLY=($(compgen -W \"$changes\" -- \"$cur\"))\n}\n\n_codesdd_complete_specs() {\n local specs\n specs=$(codesdd __complete specs 2>/dev/null | cut -f1)\n COMPREPLY=($(compgen -W \"$specs\" -- \"$cur\"))\n}\n\n_codesdd_complete_items() {\n local items\n items=$(codesdd __complete changes 2>/dev/null | cut -f1; codesdd __complete specs 2>/dev/null | cut -f1)\n COMPREPLY=($(compgen -W \"$items\" -- \"$cur\"))\n}\n\n_codesdd_complete_schemas() {\n local schemas\n schemas=$(codesdd __complete schemas 2>/dev/null | cut -f1)\n COMPREPLY=($(compgen -W \"$schemas\" -- \"$cur\"))\n}";
|
|
6
6
|
//# sourceMappingURL=bash-templates.d.ts.map
|
|
@@ -4,21 +4,27 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export const BASH_DYNAMIC_HELPERS = `# Dynamic completion helpers
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
_codesdd_complete_changes() {
|
|
8
8
|
local changes
|
|
9
|
-
changes=$(
|
|
9
|
+
changes=$(codesdd __complete changes 2>/dev/null | cut -f1)
|
|
10
10
|
COMPREPLY=($(compgen -W "$changes" -- "$cur"))
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
_codesdd_complete_specs() {
|
|
14
14
|
local specs
|
|
15
|
-
specs=$(
|
|
15
|
+
specs=$(codesdd __complete specs 2>/dev/null | cut -f1)
|
|
16
16
|
COMPREPLY=($(compgen -W "$specs" -- "$cur"))
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
_codesdd_complete_items() {
|
|
20
20
|
local items
|
|
21
|
-
items=$(
|
|
21
|
+
items=$(codesdd __complete changes 2>/dev/null | cut -f1; codesdd __complete specs 2>/dev/null | cut -f1)
|
|
22
22
|
COMPREPLY=($(compgen -W "$items" -- "$cur"))
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
_codesdd_complete_schemas() {
|
|
26
|
+
local schemas
|
|
27
|
+
schemas=$(codesdd __complete schemas 2>/dev/null | cut -f1)
|
|
28
|
+
COMPREPLY=($(compgen -W "$schemas" -- "$cur"))
|
|
23
29
|
}`;
|
|
24
30
|
//# sourceMappingURL=bash-templates.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* Static template strings for Fish completion scripts.
|
|
3
3
|
* These are Fish-specific helper functions that never change.
|
|
4
4
|
*/
|
|
5
|
-
export declare const FISH_STATIC_HELPERS = "# Helper function to check if a subcommand is present\nfunction
|
|
6
|
-
export declare const FISH_DYNAMIC_HELPERS = "# Dynamic completion helpers\n\nfunction
|
|
5
|
+
export declare const FISH_STATIC_HELPERS = "# Helper function to check if a subcommand is present\nfunction __fish_codesdd_using_subcommand\n set -l cmd (commandline -opc)\n set -e cmd[1]\n for i in $argv\n if contains -- $i $cmd\n return 0\n end\n end\n return 1\nend\n\nfunction __fish_codesdd_no_subcommand\n set -l cmd (commandline -opc)\n test (count $cmd) -eq 1\nend\n\nfunction __fish_codesdd_command_count\n set -l cmd (commandline -opc)\n count $cmd\nend";
|
|
6
|
+
export declare const FISH_DYNAMIC_HELPERS = "# Dynamic completion helpers\n\nfunction __fish_codesdd_changes\n codesdd __complete changes 2>/dev/null | while read -l id desc\n printf '%s\\t%s\\n' \"$id\" \"$desc\"\n end\nend\n\nfunction __fish_codesdd_specs\n codesdd __complete specs 2>/dev/null | while read -l id desc\n printf '%s\\t%s\\n' \"$id\" \"$desc\"\n end\nend\n\nfunction __fish_codesdd_items\n __fish_codesdd_changes\n __fish_codesdd_specs\nend\n\nfunction __fish_codesdd_schemas\n codesdd __complete schemas 2>/dev/null | while read -l id desc\n printf '%s\\t%s\\n' \"$id\" \"$desc\"\n end\nend";
|
|
7
7
|
//# sourceMappingURL=fish-templates.d.ts.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* These are Fish-specific helper functions that never change.
|
|
4
4
|
*/
|
|
5
5
|
export const FISH_STATIC_HELPERS = `# Helper function to check if a subcommand is present
|
|
6
|
-
function
|
|
6
|
+
function __fish_codesdd_using_subcommand
|
|
7
7
|
set -l cmd (commandline -opc)
|
|
8
8
|
set -e cmd[1]
|
|
9
9
|
for i in $argv
|
|
@@ -14,26 +14,37 @@ function __fish_openspec_using_subcommand
|
|
|
14
14
|
return 1
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
function
|
|
17
|
+
function __fish_codesdd_no_subcommand
|
|
18
18
|
set -l cmd (commandline -opc)
|
|
19
19
|
test (count $cmd) -eq 1
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
function __fish_codesdd_command_count
|
|
23
|
+
set -l cmd (commandline -opc)
|
|
24
|
+
count $cmd
|
|
20
25
|
end`;
|
|
21
26
|
export const FISH_DYNAMIC_HELPERS = `# Dynamic completion helpers
|
|
22
27
|
|
|
23
|
-
function
|
|
24
|
-
|
|
28
|
+
function __fish_codesdd_changes
|
|
29
|
+
codesdd __complete changes 2>/dev/null | while read -l id desc
|
|
25
30
|
printf '%s\\t%s\\n' "$id" "$desc"
|
|
26
31
|
end
|
|
27
32
|
end
|
|
28
33
|
|
|
29
|
-
function
|
|
30
|
-
|
|
34
|
+
function __fish_codesdd_specs
|
|
35
|
+
codesdd __complete specs 2>/dev/null | while read -l id desc
|
|
31
36
|
printf '%s\\t%s\\n' "$id" "$desc"
|
|
32
37
|
end
|
|
33
38
|
end
|
|
34
39
|
|
|
35
|
-
function
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
function __fish_codesdd_items
|
|
41
|
+
__fish_codesdd_changes
|
|
42
|
+
__fish_codesdd_specs
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
function __fish_codesdd_schemas
|
|
46
|
+
codesdd __complete schemas 2>/dev/null | while read -l id desc
|
|
47
|
+
printf '%s\\t%s\\n' "$id" "$desc"
|
|
48
|
+
end
|
|
38
49
|
end`;
|
|
39
50
|
//# sourceMappingURL=fish-templates.js.map
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Static template strings for PowerShell completion scripts.
|
|
3
3
|
* These are PowerShell-specific helper functions that never change.
|
|
4
4
|
*/
|
|
5
|
-
export declare const POWERSHELL_DYNAMIC_HELPERS = "# Dynamic completion helpers\n\nfunction Get-
|
|
5
|
+
export declare const POWERSHELL_DYNAMIC_HELPERS = "# Dynamic completion helpers\n\nfunction Get-CodeSDDChanges {\n $output = codesdd __complete changes 2>$null\n if ($output) {\n $output | ForEach-Object {\n ($_ -split \"\\t\")[0]\n }\n }\n}\n\nfunction Get-CodeSDDSpecs {\n $output = codesdd __complete specs 2>$null\n if ($output) {\n $output | ForEach-Object {\n ($_ -split \"\\t\")[0]\n }\n }\n}\n\nfunction Get-CodeSDDSchemas {\n $output = codesdd __complete schemas 2>$null\n if ($output) {\n $output | ForEach-Object {\n ($_ -split \"\\t\")[0]\n }\n }\n}\n";
|
|
6
6
|
//# sourceMappingURL=powershell-templates.d.ts.map
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export const POWERSHELL_DYNAMIC_HELPERS = `# Dynamic completion helpers
|
|
6
6
|
|
|
7
|
-
function Get-
|
|
8
|
-
$output =
|
|
7
|
+
function Get-CodeSDDChanges {
|
|
8
|
+
$output = codesdd __complete changes 2>$null
|
|
9
9
|
if ($output) {
|
|
10
10
|
$output | ForEach-Object {
|
|
11
11
|
($_ -split "\\t")[0]
|
|
@@ -13,8 +13,17 @@ function Get-OpenSpecChanges {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
function Get-
|
|
17
|
-
$output =
|
|
16
|
+
function Get-CodeSDDSpecs {
|
|
17
|
+
$output = codesdd __complete specs 2>$null
|
|
18
|
+
if ($output) {
|
|
19
|
+
$output | ForEach-Object {
|
|
20
|
+
($_ -split "\\t")[0]
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function Get-CodeSDDSchemas {
|
|
26
|
+
$output = codesdd __complete schemas 2>$null
|
|
18
27
|
if ($output) {
|
|
19
28
|
$output | ForEach-Object {
|
|
20
29
|
($_ -split "\\t")[0]
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Static template strings for Zsh completion scripts.
|
|
3
3
|
* These are Zsh-specific helper functions that never change.
|
|
4
4
|
*/
|
|
5
|
-
export declare const ZSH_DYNAMIC_HELPERS = "# Dynamic completion helpers\n\n# Use
|
|
5
|
+
export declare const ZSH_DYNAMIC_HELPERS = "# Dynamic completion helpers\n\n# Use codesdd __complete to get available changes\n_codesdd_complete_changes() {\n local -a changes\n while IFS=$'\\t' read -r id desc; do\n changes+=(\"$id:$desc\")\n done < <(codesdd __complete changes 2>/dev/null)\n _describe \"change\" changes\n}\n\n# Use codesdd __complete to get available specs\n_codesdd_complete_specs() {\n local -a specs\n while IFS=$'\\t' read -r id desc; do\n specs+=(\"$id:$desc\")\n done < <(codesdd __complete specs 2>/dev/null)\n _describe \"spec\" specs\n}\n\n# Get both changes and specs\n_codesdd_complete_items() {\n local -a items\n while IFS=$'\\t' read -r id desc; do\n items+=(\"$id:$desc\")\n done < <(codesdd __complete changes 2>/dev/null)\n while IFS=$'\\t' read -r id desc; do\n items+=(\"$id:$desc\")\n done < <(codesdd __complete specs 2>/dev/null)\n _describe \"item\" items\n}\n\n# Use codesdd __complete to get available workflow schemas\n_codesdd_complete_schemas() {\n local -a schemas\n while IFS=$'\\t' read -r id desc; do\n schemas+=(\"$id:$desc\")\n done < <(codesdd __complete schemas 2>/dev/null)\n _describe \"schema\" schemas\n}";
|
|
6
6
|
//# sourceMappingURL=zsh-templates.d.ts.map
|
|
@@ -4,33 +4,42 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export const ZSH_DYNAMIC_HELPERS = `# Dynamic completion helpers
|
|
6
6
|
|
|
7
|
-
# Use
|
|
8
|
-
|
|
7
|
+
# Use codesdd __complete to get available changes
|
|
8
|
+
_codesdd_complete_changes() {
|
|
9
9
|
local -a changes
|
|
10
10
|
while IFS=$'\\t' read -r id desc; do
|
|
11
11
|
changes+=("$id:$desc")
|
|
12
|
-
done < <(
|
|
12
|
+
done < <(codesdd __complete changes 2>/dev/null)
|
|
13
13
|
_describe "change" changes
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
# Use
|
|
17
|
-
|
|
16
|
+
# Use codesdd __complete to get available specs
|
|
17
|
+
_codesdd_complete_specs() {
|
|
18
18
|
local -a specs
|
|
19
19
|
while IFS=$'\\t' read -r id desc; do
|
|
20
20
|
specs+=("$id:$desc")
|
|
21
|
-
done < <(
|
|
21
|
+
done < <(codesdd __complete specs 2>/dev/null)
|
|
22
22
|
_describe "spec" specs
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
# Get both changes and specs
|
|
26
|
-
|
|
26
|
+
_codesdd_complete_items() {
|
|
27
27
|
local -a items
|
|
28
28
|
while IFS=$'\\t' read -r id desc; do
|
|
29
29
|
items+=("$id:$desc")
|
|
30
|
-
done < <(
|
|
30
|
+
done < <(codesdd __complete changes 2>/dev/null)
|
|
31
31
|
while IFS=$'\\t' read -r id desc; do
|
|
32
32
|
items+=("$id:$desc")
|
|
33
|
-
done < <(
|
|
33
|
+
done < <(codesdd __complete specs 2>/dev/null)
|
|
34
34
|
_describe "item" items
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
# Use codesdd __complete to get available workflow schemas
|
|
38
|
+
_codesdd_complete_schemas() {
|
|
39
|
+
local -a schemas
|
|
40
|
+
while IFS=$'\\t' read -r id desc; do
|
|
41
|
+
schemas+=("$id:$desc")
|
|
42
|
+
done < <(codesdd __complete schemas 2>/dev/null)
|
|
43
|
+
_describe "schema" schemas
|
|
35
44
|
}`;
|
|
36
45
|
//# sourceMappingURL=zsh-templates.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
* Zod schema for global
|
|
3
|
+
* Zod schema for global CodeSDD configuration.
|
|
4
4
|
* Uses passthrough() to preserve unknown fields for forward compatibility.
|
|
5
5
|
*/
|
|
6
6
|
export declare const GlobalConfigSchema: z.ZodObject<{
|
|
@@ -15,6 +15,23 @@ export declare const GlobalConfigSchema: z.ZodObject<{
|
|
|
15
15
|
both: "both";
|
|
16
16
|
}>>>;
|
|
17
17
|
workflows: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
18
|
+
redis: z.ZodOptional<z.ZodObject<{
|
|
19
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
20
|
+
url: z.ZodOptional<z.ZodString>;
|
|
21
|
+
url_env: z.ZodOptional<z.ZodString>;
|
|
22
|
+
namespace: z.ZodOptional<z.ZodString>;
|
|
23
|
+
tls: z.ZodOptional<z.ZodBoolean>;
|
|
24
|
+
connect_timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
command_timeout_ms: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
max_retries: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
fallback: z.ZodOptional<z.ZodEnum<{
|
|
28
|
+
filesystem: "filesystem";
|
|
29
|
+
none: "none";
|
|
30
|
+
}>>;
|
|
31
|
+
cache_default_ttl_ms: z.ZodOptional<z.ZodNumber>;
|
|
32
|
+
lock_ttl_ms: z.ZodOptional<z.ZodNumber>;
|
|
33
|
+
stream_max_len: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
}, z.core.$strip>>;
|
|
18
35
|
}, z.core.$loose>;
|
|
19
36
|
export type GlobalConfigType = z.infer<typeof GlobalConfigSchema>;
|
|
20
37
|
/**
|
|
@@ -83,4 +100,6 @@ export declare function validateConfig(config: unknown): {
|
|
|
83
100
|
success: boolean;
|
|
84
101
|
error?: string;
|
|
85
102
|
};
|
|
103
|
+
export declare function isSensitiveConfigPath(path: string): boolean;
|
|
104
|
+
export declare function redactConfigSecrets(value: unknown, parentPath?: string): unknown;
|
|
86
105
|
//# sourceMappingURL=config-schema.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
* Zod schema for global
|
|
3
|
+
* Zod schema for global CodeSDD configuration.
|
|
4
4
|
* Uses passthrough() to preserve unknown fields for forward compatibility.
|
|
5
5
|
*/
|
|
6
6
|
export const GlobalConfigSchema = z
|
|
@@ -20,6 +20,22 @@ export const GlobalConfigSchema = z
|
|
|
20
20
|
workflows: z
|
|
21
21
|
.array(z.string())
|
|
22
22
|
.optional(),
|
|
23
|
+
redis: z
|
|
24
|
+
.object({
|
|
25
|
+
enabled: z.boolean().optional(),
|
|
26
|
+
url: z.string().min(1).optional(),
|
|
27
|
+
url_env: z.string().min(1).optional(),
|
|
28
|
+
namespace: z.string().min(1).optional(),
|
|
29
|
+
tls: z.boolean().optional(),
|
|
30
|
+
connect_timeout_ms: z.number().int().positive().optional(),
|
|
31
|
+
command_timeout_ms: z.number().int().positive().optional(),
|
|
32
|
+
max_retries: z.number().int().min(0).optional(),
|
|
33
|
+
fallback: z.enum(['filesystem', 'none']).optional(),
|
|
34
|
+
cache_default_ttl_ms: z.number().int().positive().optional(),
|
|
35
|
+
lock_ttl_ms: z.number().int().positive().optional(),
|
|
36
|
+
stream_max_len: z.number().int().positive().optional(),
|
|
37
|
+
})
|
|
38
|
+
.optional(),
|
|
23
39
|
})
|
|
24
40
|
.passthrough();
|
|
25
41
|
/**
|
|
@@ -30,7 +46,8 @@ export const DEFAULT_CONFIG = {
|
|
|
30
46
|
profile: 'core',
|
|
31
47
|
delivery: 'both',
|
|
32
48
|
};
|
|
33
|
-
const KNOWN_TOP_LEVEL_KEYS = new Set([...Object.keys(DEFAULT_CONFIG), 'workflows']);
|
|
49
|
+
const KNOWN_TOP_LEVEL_KEYS = new Set([...Object.keys(DEFAULT_CONFIG), 'workflows', 'redis']);
|
|
50
|
+
const SENSITIVE_KEY_TOKENS = ['key', 'secret', 'token', 'password', 'credential', 'private', 'auth'];
|
|
34
51
|
/**
|
|
35
52
|
* Validate a config key path for CLI set operations.
|
|
36
53
|
* Unknown top-level keys are rejected unless explicitly allowed by the caller.
|
|
@@ -50,6 +67,29 @@ export function validateConfigKeyPath(path) {
|
|
|
50
67
|
}
|
|
51
68
|
return { valid: true };
|
|
52
69
|
}
|
|
70
|
+
if (rootKey === 'redis') {
|
|
71
|
+
if (rawKeys.length !== 2) {
|
|
72
|
+
return { valid: false, reason: 'redis settings support one nested key' };
|
|
73
|
+
}
|
|
74
|
+
const redisKeys = new Set([
|
|
75
|
+
'enabled',
|
|
76
|
+
'url',
|
|
77
|
+
'url_env',
|
|
78
|
+
'namespace',
|
|
79
|
+
'tls',
|
|
80
|
+
'connect_timeout_ms',
|
|
81
|
+
'command_timeout_ms',
|
|
82
|
+
'max_retries',
|
|
83
|
+
'fallback',
|
|
84
|
+
'cache_default_ttl_ms',
|
|
85
|
+
'lock_ttl_ms',
|
|
86
|
+
'stream_max_len',
|
|
87
|
+
]);
|
|
88
|
+
if (!redisKeys.has(rawKeys[1])) {
|
|
89
|
+
return { valid: false, reason: `Unknown redis key "${rawKeys[1]}"` };
|
|
90
|
+
}
|
|
91
|
+
return { valid: true };
|
|
92
|
+
}
|
|
53
93
|
if (rawKeys.length > 1) {
|
|
54
94
|
return { valid: false, reason: `"${rootKey}" does not support nested keys` };
|
|
55
95
|
}
|
|
@@ -210,4 +250,32 @@ export function validateConfig(config) {
|
|
|
210
250
|
return { success: false, error: 'Unknown validation error' };
|
|
211
251
|
}
|
|
212
252
|
}
|
|
253
|
+
export function isSensitiveConfigPath(path) {
|
|
254
|
+
const segments = path
|
|
255
|
+
.split('.')
|
|
256
|
+
.map((segment) => segment.trim().toLowerCase())
|
|
257
|
+
.filter(Boolean);
|
|
258
|
+
if (segments.length >= 2 && segments[0] === 'redis' && segments[segments.length - 1] === 'url') {
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
return segments.some((segment) => SENSITIVE_KEY_TOKENS.some((token) => segment.includes(token)));
|
|
262
|
+
}
|
|
263
|
+
export function redactConfigSecrets(value, parentPath = '') {
|
|
264
|
+
if (Array.isArray(value)) {
|
|
265
|
+
return value.map((entry) => redactConfigSecrets(entry, parentPath));
|
|
266
|
+
}
|
|
267
|
+
if (!value || typeof value !== 'object') {
|
|
268
|
+
return value;
|
|
269
|
+
}
|
|
270
|
+
const redacted = {};
|
|
271
|
+
for (const [key, entryValue] of Object.entries(value)) {
|
|
272
|
+
const path = parentPath ? `${parentPath}.${key}` : key;
|
|
273
|
+
if (isSensitiveConfigPath(path)) {
|
|
274
|
+
redacted[key] = '[REDACTED]';
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
redacted[key] = redactConfigSecrets(entryValue, path);
|
|
278
|
+
}
|
|
279
|
+
return redacted;
|
|
280
|
+
}
|
|
213
281
|
//# sourceMappingURL=config-schema.js.map
|
package/dist/core/config.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
export declare const
|
|
1
|
+
export declare const LEGACY_SPEC_DIR_NAME = "legacy-spec";
|
|
2
|
+
export declare const CODESDD_MARKERS: {
|
|
3
3
|
start: string;
|
|
4
4
|
end: string;
|
|
5
5
|
};
|
|
6
|
-
export interface
|
|
6
|
+
export interface LegacySpecConfig {
|
|
7
7
|
aiTools: string[];
|
|
8
8
|
}
|
|
9
9
|
export interface AIToolOption {
|
package/dist/core/config.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export const
|
|
2
|
-
export const
|
|
3
|
-
start: '<!--
|
|
4
|
-
end: '<!--
|
|
1
|
+
export const LEGACY_SPEC_DIR_NAME = 'legacy-spec';
|
|
2
|
+
export const CODESDD_MARKERS = {
|
|
3
|
+
start: '<!-- CODESDD:START -->',
|
|
4
|
+
end: '<!-- CODESDD:END -->'
|
|
5
5
|
};
|
|
6
6
|
export const AI_TOOLS = [
|
|
7
7
|
{ name: 'Amazon Q Developer', value: 'amazon-q', available: true, successLabel: 'Amazon Q Developer', skillsDir: '.amazonq' },
|
|
@@ -1,35 +1,80 @@
|
|
|
1
|
-
export declare const GLOBAL_CONFIG_DIR_NAME = "
|
|
2
|
-
export declare const GLOBAL_CONFIG_FILE_NAME = "config.
|
|
3
|
-
export declare const GLOBAL_DATA_DIR_NAME = "
|
|
1
|
+
export declare const GLOBAL_CONFIG_DIR_NAME = ".codesdd";
|
|
2
|
+
export declare const GLOBAL_CONFIG_FILE_NAME = "config.toml";
|
|
3
|
+
export declare const GLOBAL_DATA_DIR_NAME = "codesdd";
|
|
4
|
+
export declare const GLOBAL_CACHE_DIR_NAME = "cache";
|
|
5
|
+
export declare const GLOBAL_CACHE_TIERS: readonly ["providers", "projects", "schemas", "deepagents", "plugins"];
|
|
6
|
+
export declare const LEGACY_GLOBAL_CONFIG_DIR_NAME = "codesdd";
|
|
7
|
+
export declare const LEGACY_GLOBAL_CONFIG_FILE_NAME = "config.json";
|
|
4
8
|
export type Profile = 'core' | 'custom';
|
|
5
9
|
export type Delivery = 'both' | 'skills' | 'commands';
|
|
10
|
+
export type RedisFallbackMode = 'filesystem' | 'none';
|
|
11
|
+
export interface RedisGlobalConfig {
|
|
12
|
+
enabled?: boolean;
|
|
13
|
+
url?: string;
|
|
14
|
+
url_env?: string;
|
|
15
|
+
namespace?: string;
|
|
16
|
+
tls?: boolean;
|
|
17
|
+
connect_timeout_ms?: number;
|
|
18
|
+
command_timeout_ms?: number;
|
|
19
|
+
max_retries?: number;
|
|
20
|
+
fallback?: RedisFallbackMode;
|
|
21
|
+
cache_default_ttl_ms?: number;
|
|
22
|
+
lock_ttl_ms?: number;
|
|
23
|
+
stream_max_len?: number;
|
|
24
|
+
}
|
|
6
25
|
export interface GlobalConfig {
|
|
7
26
|
featureFlags?: Record<string, boolean>;
|
|
8
27
|
profile?: Profile;
|
|
9
28
|
delivery?: Delivery;
|
|
10
29
|
workflows?: string[];
|
|
30
|
+
redis?: RedisGlobalConfig;
|
|
11
31
|
}
|
|
32
|
+
export declare function parseTomlContent(content: string): Record<string, unknown>;
|
|
33
|
+
export declare function stringifyTomlContent(value: Record<string, unknown>): string;
|
|
12
34
|
/**
|
|
13
|
-
* Gets the global configuration directory
|
|
14
|
-
*
|
|
15
|
-
* - All platforms: $XDG_CONFIG_HOME/openspec/ if XDG_CONFIG_HOME is set
|
|
16
|
-
* - Unix/macOS fallback: ~/.config/openspec/
|
|
17
|
-
* - Windows fallback: %APPDATA%/openspec/
|
|
35
|
+
* Gets the canonical global runtime/configuration directory.
|
|
36
|
+
* This repository standardizes global runtime state under ~/.codesdd.
|
|
18
37
|
*/
|
|
19
38
|
export declare function getGlobalConfigDir(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Gets the legacy XDG-compatible JSON config directory.
|
|
41
|
+
* This path is kept only for read compatibility with pre-~/.codesdd installs.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getLegacyGlobalConfigDir(): string;
|
|
20
44
|
/**
|
|
21
45
|
* Gets the global data directory path following XDG Base Directory Specification.
|
|
22
46
|
* Used for user data like schema overrides.
|
|
23
47
|
*
|
|
24
|
-
* - All platforms: $XDG_DATA_HOME/
|
|
25
|
-
* - Unix/macOS fallback: ~/.local/share/
|
|
26
|
-
* - Windows fallback: %LOCALAPPDATA%/
|
|
48
|
+
* - All platforms: $XDG_DATA_HOME/legacy-spec/ if XDG_DATA_HOME is set
|
|
49
|
+
* - Unix/macOS fallback: ~/.local/share/legacy-spec/
|
|
50
|
+
* - Windows fallback: %LOCALAPPDATA%/legacy-spec/
|
|
27
51
|
*/
|
|
28
52
|
export declare function getGlobalDataDir(): string;
|
|
29
53
|
/**
|
|
30
|
-
* Gets the path to the global config file.
|
|
54
|
+
* Gets the path to the canonical global config TOML file.
|
|
31
55
|
*/
|
|
32
56
|
export declare function getGlobalConfigPath(): string;
|
|
57
|
+
/**
|
|
58
|
+
* Gets the global cache directory path under ~/.codesdd/cache.
|
|
59
|
+
*/
|
|
60
|
+
export declare function getGlobalCacheDir(): string;
|
|
61
|
+
/**
|
|
62
|
+
* Gets all tier directory paths for the global cache layout.
|
|
63
|
+
*/
|
|
64
|
+
export declare function getGlobalCacheTierDirs(): Record<(typeof GLOBAL_CACHE_TIERS)[number], string>;
|
|
65
|
+
/**
|
|
66
|
+
* Ensures ~/.codesdd/cache and all known tier directories exist.
|
|
67
|
+
*/
|
|
68
|
+
export declare function ensureGlobalCacheLayout(): Record<(typeof GLOBAL_CACHE_TIERS)[number], string>;
|
|
69
|
+
/**
|
|
70
|
+
* Creates a stable project fingerprint for cache partitioning.
|
|
71
|
+
*/
|
|
72
|
+
export declare function createProjectFingerprint(projectRoot: string): string;
|
|
73
|
+
/**
|
|
74
|
+
* Gets the path to the legacy global config JSON file.
|
|
75
|
+
*/
|
|
76
|
+
export declare function getLegacyGlobalConfigPath(): string;
|
|
77
|
+
export declare function readGlobalConfigRaw(): Record<string, unknown>;
|
|
33
78
|
/**
|
|
34
79
|
* Loads the global configuration from disk.
|
|
35
80
|
* Returns default configuration if file doesn't exist or is invalid.
|