@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
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { FileSystemLockAdapter, InMemoryCoordinationCache, InMemoryCoordinationEventBus, InMemoryCoordinationQueue, MultiTierCoordinationCache, createFilesystemFirstCoordinationAdapters, type CoordinationCacheAdapter, type CoordinationEvent, type CoordinationEventBusAdapter, type CoordinationLockAdapter, type CoordinationQueueAdapter, type SddCoordinationAdapters, } from '../../core/sdd/coordination/coordination-adapters.js';
|
|
2
|
+
export { RedisClientFactory, RedisCoordinationCache, RedisEventBusAdapter, RedisLockAdapter, RedisQueueAdapter, RedisWorkDeduper, buildRedisKey, hashRedisKey, redactRedisUrl, resolveRedisBoundaryConfig, resolveRedisRuntimeConfig, sanitizeRedisError, type RedisOperationalReport, type RedisRuntimeConfig, type RedisRuntimeStatus, } from '../../core/sdd/coordination/redis-runtime.js';
|
|
3
|
+
export { InMemoryAdapter } from '../../core/sdd/store/in-memory-adapter.js';
|
|
4
|
+
export { YamlFileAdapter } from '../../core/sdd/store/yaml-file-adapter.js';
|
|
5
|
+
export { createInMemorySddStores, createSddStores, type SddStores } from '../../core/sdd/store/sdd-stores.js';
|
|
6
|
+
export type { StateStore } from '../../core/sdd/store/state-store.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { FileSystemLockAdapter, InMemoryCoordinationCache, InMemoryCoordinationEventBus, InMemoryCoordinationQueue, MultiTierCoordinationCache, createFilesystemFirstCoordinationAdapters, } from '../../core/sdd/coordination/coordination-adapters.js';
|
|
2
|
+
export { RedisClientFactory, RedisCoordinationCache, RedisEventBusAdapter, RedisLockAdapter, RedisQueueAdapter, RedisWorkDeduper, buildRedisKey, hashRedisKey, redactRedisUrl, resolveRedisBoundaryConfig, resolveRedisRuntimeConfig, sanitizeRedisError, } from '../../core/sdd/coordination/redis-runtime.js';
|
|
3
|
+
export { InMemoryAdapter } from '../../core/sdd/store/in-memory-adapter.js';
|
|
4
|
+
export { YamlFileAdapter } from '../../core/sdd/store/yaml-file-adapter.js';
|
|
5
|
+
export { createInMemorySddStores, createSddStores } from '../../core/sdd/store/sdd-stores.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type { BacklogItem, BacklogState, DiscoveryIndexState, DiscoveryRecord, FinalizeQueueState, FrontendGapsState, FrontendMapState, RepoMapState, ServiceCatalogState, TransitionLogState, } from '../../core/sdd/types.js';
|
|
2
|
+
export { stringifyWorkspaceYamlDocument, workspaceDocumentSchemas, workspaceSchemaForFile, type WorkspaceChangelogDocument, type WorkspaceDocumentFileName, type WorkspacePlanDocument, type WorkspaceQualityDocument, type WorkspaceSpecDocument, type WorkspaceTasksDocument, } from '../../core/sdd/workspace-schemas.js';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -8,9 +8,10 @@ export interface GlobalConfig {
|
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* Get the path to the global config file.
|
|
11
|
-
* Uses ~/.
|
|
11
|
+
* Uses ~/.codesdd/config.toml.
|
|
12
12
|
*/
|
|
13
13
|
export declare function getConfigPath(): string;
|
|
14
|
+
export declare function getLegacyConfigPath(): string;
|
|
14
15
|
/**
|
|
15
16
|
* Read the global config file.
|
|
16
17
|
* Returns an empty object if the file doesn't exist.
|
package/dist/telemetry/config.js
CHANGED
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Global configuration for telemetry state.
|
|
3
|
-
* Stores anonymous ID and notice-seen flag in ~/.
|
|
3
|
+
* Stores anonymous ID and notice-seen flag in ~/.codesdd/config.toml.
|
|
4
|
+
* The legacy XDG JSON path remains a read-only compatibility fallback.
|
|
4
5
|
*/
|
|
5
6
|
import { promises as fs } from 'fs';
|
|
6
7
|
import path from 'path';
|
|
7
|
-
import
|
|
8
|
+
import { getGlobalConfigPath, getLegacyGlobalConfigPath, parseTomlContent, stringifyTomlContent, } from '../core/global-config.js';
|
|
8
9
|
/**
|
|
9
10
|
* Get the path to the global config file.
|
|
10
|
-
* Uses ~/.
|
|
11
|
+
* Uses ~/.codesdd/config.toml.
|
|
11
12
|
*/
|
|
12
13
|
export function getConfigPath() {
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
return getGlobalConfigPath();
|
|
15
|
+
}
|
|
16
|
+
export function getLegacyConfigPath() {
|
|
17
|
+
return getLegacyGlobalConfigPath();
|
|
15
18
|
}
|
|
16
19
|
/**
|
|
17
20
|
* Read the global config file.
|
|
@@ -21,11 +24,17 @@ export async function readConfig() {
|
|
|
21
24
|
const configPath = getConfigPath();
|
|
22
25
|
try {
|
|
23
26
|
const content = await fs.readFile(configPath, 'utf-8');
|
|
24
|
-
return
|
|
27
|
+
return parseTomlContent(content);
|
|
25
28
|
}
|
|
26
29
|
catch (error) {
|
|
27
30
|
if (error.code === 'ENOENT') {
|
|
28
|
-
|
|
31
|
+
try {
|
|
32
|
+
const legacyContent = await fs.readFile(getLegacyConfigPath(), 'utf-8');
|
|
33
|
+
return JSON.parse(legacyContent);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return {};
|
|
37
|
+
}
|
|
29
38
|
}
|
|
30
39
|
// If parse fails or other error, return empty config
|
|
31
40
|
return {};
|
|
@@ -47,7 +56,7 @@ export async function writeConfig(updates) {
|
|
|
47
56
|
if (updates.telemetry && existing.telemetry) {
|
|
48
57
|
merged.telemetry = { ...existing.telemetry, ...updates.telemetry };
|
|
49
58
|
}
|
|
50
|
-
await fs.writeFile(configPath,
|
|
59
|
+
await fs.writeFile(configPath, stringifyTomlContent(merged));
|
|
51
60
|
}
|
|
52
61
|
/**
|
|
53
62
|
* Get the telemetry config section.
|
|
@@ -1,8 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostHog hardcodes `console.error('Error while flushing PostHog', err)` in
|
|
3
|
+
* its core flush path (see @posthog/core posthog-core-stateless.mjs L38).
|
|
4
|
+
* The library exposes no option to disable it, so we filter those specific
|
|
5
|
+
* lines at the console.error layer. Non-PostHog calls pass through unchanged.
|
|
6
|
+
*/
|
|
7
|
+
export declare function __installPosthogErrorSilencer(): void;
|
|
1
8
|
/**
|
|
2
9
|
* Check if telemetry is enabled.
|
|
3
10
|
*
|
|
4
11
|
* Disabled when:
|
|
5
|
-
* -
|
|
12
|
+
* - CODESDD_TELEMETRY=0
|
|
13
|
+
* - CODESDD_TELEMETRY=0 (legacy alias)
|
|
6
14
|
* - DO_NOT_TRACK=1
|
|
7
15
|
* - CI=true (any CI environment)
|
|
8
16
|
*/
|
|
@@ -16,7 +24,7 @@ export declare function getOrCreateAnonymousId(): Promise<string>;
|
|
|
16
24
|
* Track a command execution.
|
|
17
25
|
*
|
|
18
26
|
* @param commandName - The command name (e.g., 'init', 'change:apply')
|
|
19
|
-
* @param version - The
|
|
27
|
+
* @param version - The CodeSDD version
|
|
20
28
|
*/
|
|
21
29
|
export declare function trackCommand(commandName: string, version: string): Promise<void>;
|
|
22
30
|
export declare function trackCommandCompleted(commandName: string, version: string, durationMs: number, status?: 'success' | 'error'): Promise<void>;
|
package/dist/telemetry/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Privacy-first design:
|
|
5
5
|
* - Only tracks command name and version
|
|
6
6
|
* - No arguments, file paths, or content
|
|
7
|
-
* - Opt-out via
|
|
7
|
+
* - Opt-out via CODESDD_TELEMETRY=0, legacy CODESDD_TELEMETRY=0, or DO_NOT_TRACK=1
|
|
8
8
|
* - Auto-disabled in CI environments
|
|
9
9
|
* - Anonymous ID is a random UUID with no relation to the user
|
|
10
10
|
*/
|
|
@@ -14,22 +14,49 @@ import { getTelemetryConfig, updateTelemetryConfig } from './config.js';
|
|
|
14
14
|
// PostHog API key - public key for client-side analytics
|
|
15
15
|
// This is safe to embed as it only allows sending events, not reading data
|
|
16
16
|
const POSTHOG_API_KEY = 'phc_Hthu8YvaIJ9QaFKyTG4TbVwkbd5ktcAFzVTKeMmoW2g';
|
|
17
|
-
//
|
|
18
|
-
const POSTHOG_HOST = 'https://edge.
|
|
17
|
+
// Legacy reverse proxy retained until the telemetry endpoint is renamed.
|
|
18
|
+
const POSTHOG_HOST = 'https://edge.sdd.dev';
|
|
19
19
|
let posthogClient = null;
|
|
20
20
|
let anonymousId = null;
|
|
21
21
|
const SHUTDOWN_TIMEOUT_MS = 200;
|
|
22
|
+
let consoleErrorPatched = false;
|
|
23
|
+
/**
|
|
24
|
+
* PostHog hardcodes `console.error('Error while flushing PostHog', err)` in
|
|
25
|
+
* its core flush path (see @posthog/core posthog-core-stateless.mjs L38).
|
|
26
|
+
* The library exposes no option to disable it, so we filter those specific
|
|
27
|
+
* lines at the console.error layer. Non-PostHog calls pass through unchanged.
|
|
28
|
+
*/
|
|
29
|
+
export function __installPosthogErrorSilencer() {
|
|
30
|
+
installPosthogErrorSilencer();
|
|
31
|
+
}
|
|
32
|
+
function installPosthogErrorSilencer() {
|
|
33
|
+
if (consoleErrorPatched)
|
|
34
|
+
return;
|
|
35
|
+
consoleErrorPatched = true;
|
|
36
|
+
const originalError = console.error.bind(console);
|
|
37
|
+
console.error = (...args) => {
|
|
38
|
+
const first = args[0];
|
|
39
|
+
if (typeof first === 'string' && first.startsWith('Error while flushing PostHog')) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
originalError(...args);
|
|
43
|
+
};
|
|
44
|
+
}
|
|
22
45
|
/**
|
|
23
46
|
* Check if telemetry is enabled.
|
|
24
47
|
*
|
|
25
48
|
* Disabled when:
|
|
26
|
-
* -
|
|
49
|
+
* - CODESDD_TELEMETRY=0
|
|
50
|
+
* - CODESDD_TELEMETRY=0 (legacy alias)
|
|
27
51
|
* - DO_NOT_TRACK=1
|
|
28
52
|
* - CI=true (any CI environment)
|
|
29
53
|
*/
|
|
30
54
|
export function isTelemetryEnabled() {
|
|
31
55
|
// Check explicit opt-out
|
|
32
|
-
if (process.env.
|
|
56
|
+
if (process.env.CODESDD_TELEMETRY === '0') {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
if (process.env.CODESDD_TELEMETRY === '0') {
|
|
33
60
|
return false;
|
|
34
61
|
}
|
|
35
62
|
// Respect DO_NOT_TRACK standard
|
|
@@ -72,11 +99,17 @@ export async function getOrCreateAnonymousId() {
|
|
|
72
99
|
*/
|
|
73
100
|
function getClient() {
|
|
74
101
|
if (!posthogClient) {
|
|
102
|
+
installPosthogErrorSilencer();
|
|
75
103
|
posthogClient = new PostHog(POSTHOG_API_KEY, {
|
|
76
104
|
host: POSTHOG_HOST,
|
|
77
105
|
flushAt: 1, // Send immediately, don't batch
|
|
78
106
|
flushInterval: 0, // No timer-based flushing
|
|
79
107
|
});
|
|
108
|
+
if (typeof posthogClient.on === 'function') {
|
|
109
|
+
posthogClient.on('error', () => {
|
|
110
|
+
// Swallow emitted errors; PostHog logs them via console.error which is filtered.
|
|
111
|
+
});
|
|
112
|
+
}
|
|
80
113
|
}
|
|
81
114
|
return posthogClient;
|
|
82
115
|
}
|
|
@@ -84,7 +117,7 @@ function getClient() {
|
|
|
84
117
|
* Track a command execution.
|
|
85
118
|
*
|
|
86
119
|
* @param commandName - The command name (e.g., 'init', 'change:apply')
|
|
87
|
-
* @param version - The
|
|
120
|
+
* @param version - The CodeSDD version
|
|
88
121
|
*/
|
|
89
122
|
export async function trackCommand(commandName, version) {
|
|
90
123
|
if (!isTelemetryEnabled()) {
|
|
@@ -173,7 +206,7 @@ export async function maybeShowTelemetryNotice() {
|
|
|
173
206
|
return;
|
|
174
207
|
}
|
|
175
208
|
// Display notice
|
|
176
|
-
console.log('Note:
|
|
209
|
+
console.log('Note: CodeSDD collects anonymous usage stats. Opt out: CODESDD_TELEMETRY=0');
|
|
177
210
|
// Mark as seen
|
|
178
211
|
await updateTelemetryConfig({ noticeSeen: true });
|
|
179
212
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ASCII art animation patterns for the welcome screen.
|
|
3
|
-
*
|
|
3
|
+
* CodeSDD logo animation - diamond/rhombus shape with hollow center "O".
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Welcome animation frames -
|
|
6
|
+
* Welcome animation frames - CodeSDD logo building from center
|
|
7
7
|
* 7 rows × 6 columns diamond with hollow center "O"
|
|
8
8
|
* Center bar is 2 cols × 3 rows (rows 3,4,5 cols 3,4)
|
|
9
9
|
* Each frame is an array of strings (lines of ASCII art)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ASCII art animation patterns for the welcome screen.
|
|
3
|
-
*
|
|
3
|
+
* CodeSDD logo animation - diamond/rhombus shape with hollow center "O".
|
|
4
4
|
*/
|
|
5
5
|
// Detect if full Unicode is supported
|
|
6
6
|
const supportsUnicode = process.platform !== 'win32' ||
|
|
@@ -15,7 +15,7 @@ const _ = CHARS.empty;
|
|
|
15
15
|
const F = CHARS.full;
|
|
16
16
|
const D = CHARS.dim;
|
|
17
17
|
/**
|
|
18
|
-
* Welcome animation frames -
|
|
18
|
+
* Welcome animation frames - CodeSDD logo building from center
|
|
19
19
|
* 7 rows × 6 columns diamond with hollow center "O"
|
|
20
20
|
* Center bar is 2 cols × 3 rows (rows 3,4,5 cols 3,4)
|
|
21
21
|
* Each frame is an array of strings (lines of ASCII art)
|
|
@@ -13,8 +13,8 @@ const ART_COLUMN_WIDTH = 24;
|
|
|
13
13
|
*/
|
|
14
14
|
function getWelcomeText() {
|
|
15
15
|
return [
|
|
16
|
-
chalk.white.bold('Welcome to
|
|
17
|
-
chalk.dim('
|
|
16
|
+
chalk.white.bold('Welcome to CodeSDD'),
|
|
17
|
+
chalk.dim('An AI-native spec-driven framework'),
|
|
18
18
|
'',
|
|
19
19
|
chalk.white('This setup will configure:'),
|
|
20
20
|
chalk.dim(' • Agent Skills for AI tools'),
|
|
@@ -17,7 +17,7 @@ export declare class ChangeMetadataError extends Error {
|
|
|
17
17
|
*/
|
|
18
18
|
export declare function validateSchemaName(schemaName: string, projectRoot?: string): string;
|
|
19
19
|
/**
|
|
20
|
-
* Writes change metadata to .
|
|
20
|
+
* Writes change metadata to .sdd.yaml in the change directory.
|
|
21
21
|
*
|
|
22
22
|
* @param changeDir - The path to the change directory
|
|
23
23
|
* @param metadata - The metadata to write
|
|
@@ -26,7 +26,7 @@ export declare function validateSchemaName(schemaName: string, projectRoot?: str
|
|
|
26
26
|
*/
|
|
27
27
|
export declare function writeChangeMetadata(changeDir: string, metadata: ChangeMetadata, projectRoot?: string): void;
|
|
28
28
|
/**
|
|
29
|
-
* Reads change metadata from .
|
|
29
|
+
* Reads change metadata from .sdd.yaml in the change directory.
|
|
30
30
|
*
|
|
31
31
|
* @param changeDir - The path to the change directory
|
|
32
32
|
* @param projectRoot - Optional project root for project-local schema resolution
|
|
@@ -39,8 +39,8 @@ export declare function readChangeMetadata(changeDir: string, projectRoot?: stri
|
|
|
39
39
|
*
|
|
40
40
|
* Resolution order:
|
|
41
41
|
* 1. Explicit schema (if provided)
|
|
42
|
-
* 2. Schema from .
|
|
43
|
-
* 3. Schema from
|
|
42
|
+
* 2. Schema from .sdd.yaml metadata (if exists)
|
|
43
|
+
* 3. Schema from legacy-spec/config.yaml (if exists)
|
|
44
44
|
* 4. Default 'spec-driven'
|
|
45
45
|
*
|
|
46
46
|
* @param changeDir - The path to the change directory
|
|
@@ -4,7 +4,7 @@ import * as yaml from 'yaml';
|
|
|
4
4
|
import { ChangeMetadataSchema } from '../core/artifact-graph/types.js';
|
|
5
5
|
import { listSchemas } from '../core/artifact-graph/resolver.js';
|
|
6
6
|
import { readProjectConfig } from '../core/project-config.js';
|
|
7
|
-
const METADATA_FILENAME = '.
|
|
7
|
+
const METADATA_FILENAME = '.sdd.yaml';
|
|
8
8
|
/**
|
|
9
9
|
* Error thrown when change metadata validation fails.
|
|
10
10
|
*/
|
|
@@ -34,7 +34,7 @@ export function validateSchemaName(schemaName, projectRoot) {
|
|
|
34
34
|
return schemaName;
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
|
-
* Writes change metadata to .
|
|
37
|
+
* Writes change metadata to .sdd.yaml in the change directory.
|
|
38
38
|
*
|
|
39
39
|
* @param changeDir - The path to the change directory
|
|
40
40
|
* @param metadata - The metadata to write
|
|
@@ -61,7 +61,7 @@ export function writeChangeMetadata(changeDir, metadata, projectRoot) {
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
|
-
* Reads change metadata from .
|
|
64
|
+
* Reads change metadata from .sdd.yaml in the change directory.
|
|
65
65
|
*
|
|
66
66
|
* @param changeDir - The path to the change directory
|
|
67
67
|
* @param projectRoot - Optional project root for project-local schema resolution
|
|
@@ -106,8 +106,8 @@ export function readChangeMetadata(changeDir, projectRoot) {
|
|
|
106
106
|
*
|
|
107
107
|
* Resolution order:
|
|
108
108
|
* 1. Explicit schema (if provided)
|
|
109
|
-
* 2. Schema from .
|
|
110
|
-
* 3. Schema from
|
|
109
|
+
* 2. Schema from .sdd.yaml metadata (if exists)
|
|
110
|
+
* 3. Schema from legacy-spec/config.yaml (if exists)
|
|
111
111
|
* 4. Default 'spec-driven'
|
|
112
112
|
*
|
|
113
113
|
* @param changeDir - The path to the change directory
|
|
@@ -115,7 +115,7 @@ export function readChangeMetadata(changeDir, projectRoot) {
|
|
|
115
115
|
* @returns The resolved schema name
|
|
116
116
|
*/
|
|
117
117
|
export function resolveSchemaForChange(changeDir, explicitSchema) {
|
|
118
|
-
// Derive project root from changeDir (changeDir is typically projectRoot/
|
|
118
|
+
// Derive project root from changeDir (changeDir is typically projectRoot/legacy-spec/changes/change-name)
|
|
119
119
|
const projectRoot = path.resolve(changeDir, '../../..');
|
|
120
120
|
// 1. Explicit override wins
|
|
121
121
|
if (explicitSchema) {
|
|
@@ -39,7 +39,7 @@ export declare function validateChangeName(name: string): ValidationResult;
|
|
|
39
39
|
/**
|
|
40
40
|
* Creates a new change directory with metadata file.
|
|
41
41
|
*
|
|
42
|
-
* @param projectRoot - The root directory of
|
|
42
|
+
* @param projectRoot - The root directory of a project with compatibility `legacy-spec/` artifacts
|
|
43
43
|
* @param name - The change name (must be valid kebab-case)
|
|
44
44
|
* @param options - Optional settings for the change
|
|
45
45
|
* @throws Error if the change name is invalid
|
|
@@ -49,12 +49,12 @@ export declare function validateChangeName(name: string): ValidationResult;
|
|
|
49
49
|
* @returns Result containing the resolved schema name
|
|
50
50
|
*
|
|
51
51
|
* @example
|
|
52
|
-
* // Creates
|
|
52
|
+
* // Creates compatibility legacy-spec/changes/add-auth/ with default schema
|
|
53
53
|
* const result = await createChange('/path/to/project', 'add-auth')
|
|
54
54
|
* console.log(result.schema) // 'spec-driven' or value from config
|
|
55
55
|
*
|
|
56
56
|
* @example
|
|
57
|
-
* // Creates
|
|
57
|
+
* // Creates compatibility legacy-spec/changes/add-auth/ with custom schema
|
|
58
58
|
* const result = await createChange('/path/to/project', 'add-auth', { schema: 'my-workflow' })
|
|
59
59
|
* console.log(result.schema) // 'my-workflow'
|
|
60
60
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FileSystemUtils } from './file-system.js';
|
|
2
2
|
import { writeChangeMetadata, validateSchemaName } from './change-metadata.js';
|
|
3
3
|
import { readProjectConfig } from '../core/project-config.js';
|
|
4
|
-
import {
|
|
4
|
+
import { resolveLegacySpecLiveSubpath } from '../core/sdd/services/legacy-capability.service.js';
|
|
5
5
|
const DEFAULT_SCHEMA = 'spec-driven';
|
|
6
6
|
/**
|
|
7
7
|
* Validates that a change name follows kebab-case conventions.
|
|
@@ -59,7 +59,7 @@ export function validateChangeName(name) {
|
|
|
59
59
|
/**
|
|
60
60
|
* Creates a new change directory with metadata file.
|
|
61
61
|
*
|
|
62
|
-
* @param projectRoot - The root directory of
|
|
62
|
+
* @param projectRoot - The root directory of a project with compatibility `legacy-spec/` artifacts
|
|
63
63
|
* @param name - The change name (must be valid kebab-case)
|
|
64
64
|
* @param options - Optional settings for the change
|
|
65
65
|
* @throws Error if the change name is invalid
|
|
@@ -69,12 +69,12 @@ export function validateChangeName(name) {
|
|
|
69
69
|
* @returns Result containing the resolved schema name
|
|
70
70
|
*
|
|
71
71
|
* @example
|
|
72
|
-
* // Creates
|
|
72
|
+
* // Creates compatibility legacy-spec/changes/add-auth/ with default schema
|
|
73
73
|
* const result = await createChange('/path/to/project', 'add-auth')
|
|
74
74
|
* console.log(result.schema) // 'spec-driven' or value from config
|
|
75
75
|
*
|
|
76
76
|
* @example
|
|
77
|
-
* // Creates
|
|
77
|
+
* // Creates compatibility legacy-spec/changes/add-auth/ with custom schema
|
|
78
78
|
* const result = await createChange('/path/to/project', 'add-auth', { schema: 'my-workflow' })
|
|
79
79
|
* console.log(result.schema) // 'my-workflow'
|
|
80
80
|
*/
|
|
@@ -103,7 +103,7 @@ export async function createChange(projectRoot, name, options = {}) {
|
|
|
103
103
|
// Validate the resolved schema
|
|
104
104
|
validateSchemaName(schemaName, projectRoot);
|
|
105
105
|
// Build the change directory path
|
|
106
|
-
const changeDir =
|
|
106
|
+
const changeDir = resolveLegacySpecLiveSubpath(projectRoot, 'changes', name);
|
|
107
107
|
// Check if change already exists
|
|
108
108
|
if (await FileSystemUtils.directoryExists(changeDir)) {
|
|
109
109
|
throw new Error(`Change '${name}' already exists at ${changeDir}`);
|
|
@@ -204,7 +204,7 @@ export class FileSystemUtils {
|
|
|
204
204
|
}
|
|
205
205
|
return await this.ensureWritePermissions(parentDir);
|
|
206
206
|
}
|
|
207
|
-
const testFile = path.join(dirPath, '.
|
|
207
|
+
const testFile = path.join(dirPath, '.sdd-test-' + Date.now() + '-' + Math.random().toString(36).slice(2));
|
|
208
208
|
await fs.writeFile(testFile, '');
|
|
209
209
|
// On Windows, file may be temporarily locked by antivirus or indexing services.
|
|
210
210
|
// Retry unlink with a small delay if it fails.
|
|
@@ -11,7 +11,7 @@ export function resolveNoInteractive(value) {
|
|
|
11
11
|
export function isInteractive(value) {
|
|
12
12
|
if (resolveNoInteractive(value))
|
|
13
13
|
return false;
|
|
14
|
-
if (process.env.
|
|
14
|
+
if (process.env.CODESDD_INTERACTIVE === '0')
|
|
15
15
|
return false;
|
|
16
16
|
// Respect the standard CI environment variable (set by GitHub Actions, GitLab CI, Travis, etc.)
|
|
17
17
|
if ('CI' in process.env)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { promises as fs } from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import {
|
|
3
|
+
import { resolveLegacySpecSubpath } from '../core/sdd/services/legacy-capability.service.js';
|
|
4
4
|
export async function getActiveChangeIds(root = process.cwd()) {
|
|
5
|
-
const changesPath =
|
|
5
|
+
const changesPath = resolveLegacySpecSubpath(root, 'changes');
|
|
6
6
|
try {
|
|
7
7
|
const entries = await fs.readdir(changesPath, { withFileTypes: true });
|
|
8
8
|
const result = [];
|
|
@@ -25,7 +25,7 @@ export async function getActiveChangeIds(root = process.cwd()) {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
export async function getSpecIds(root = process.cwd()) {
|
|
28
|
-
const specsPath =
|
|
28
|
+
const specsPath = resolveLegacySpecSubpath(root, 'specs');
|
|
29
29
|
const result = [];
|
|
30
30
|
try {
|
|
31
31
|
const entries = await fs.readdir(specsPath, { withFileTypes: true });
|
|
@@ -48,7 +48,7 @@ export async function getSpecIds(root = process.cwd()) {
|
|
|
48
48
|
return result.sort();
|
|
49
49
|
}
|
|
50
50
|
export async function getArchivedChangeIds(root = process.cwd()) {
|
|
51
|
-
const archivePath =
|
|
51
|
+
const archivePath = resolveLegacySpecSubpath(root, 'changes', 'archive');
|
|
52
52
|
try {
|
|
53
53
|
const entries = await fs.readdir(archivePath, { withFileTypes: true });
|
|
54
54
|
const result = [];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { IMPORTED_LEGACY_SPEC_DIR, LEGACY_SPEC_DIR, LEGACY_SPEC_CAPABILITY, displayLegacyCapabilityPath, displayLegacySpecPath, resolveLegacyCapabilityDeprecatedLiveRoots, resolveLegacyCapabilityImportedRoot, resolveLegacyCapabilityDeprecatedImportedRoots, resolveLegacyCapabilityImportedDepositoRoot, resolveLegacyCapabilityLiveSubpath, resolveLegacyCapabilityLiveRoot, resolveLegacyCapabilityRoot, resolveLegacyCapabilitySubpath, resolveLegacySpecLiveSubpath, resolveLegacySpecLiveRoot, resolveLegacySpecRoot, resolveLegacySpecSubpath, type LegacyCapabilityDefinition, } from '../core/sdd/services/legacy-capability.service.js';
|
|
2
|
+
//# sourceMappingURL=legacy-spec-compat.d.ts.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { IMPORTED_LEGACY_SPEC_DIR, LEGACY_SPEC_DIR, LEGACY_SPEC_CAPABILITY, displayLegacyCapabilityPath, displayLegacySpecPath, resolveLegacyCapabilityDeprecatedLiveRoots, resolveLegacyCapabilityImportedRoot, resolveLegacyCapabilityDeprecatedImportedRoots, resolveLegacyCapabilityImportedDepositoRoot, resolveLegacyCapabilityLiveSubpath, resolveLegacyCapabilityLiveRoot, resolveLegacyCapabilityRoot, resolveLegacyCapabilitySubpath, resolveLegacySpecLiveSubpath, resolveLegacySpecLiveRoot, resolveLegacySpecRoot, resolveLegacySpecSubpath, } from '../core/sdd/services/legacy-capability.service.js';
|
|
2
|
+
//# sourceMappingURL=legacy-spec-compat.js.map
|
|
@@ -17,4 +17,5 @@ export interface ShellDetectionResult {
|
|
|
17
17
|
* @returns Detection result with supported shell and raw detected name
|
|
18
18
|
*/
|
|
19
19
|
export declare function detectShell(): ShellDetectionResult;
|
|
20
|
+
export declare function resolveShellProfilePath(shell: SupportedShell, homeDir?: string): string | undefined;
|
|
20
21
|
//# sourceMappingURL=shell-detection.d.ts.map
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import os from 'os';
|
|
1
3
|
/**
|
|
2
4
|
* Detects the current user's shell based on environment variables
|
|
3
5
|
*
|
|
@@ -38,4 +40,18 @@ export function detectShell() {
|
|
|
38
40
|
}
|
|
39
41
|
return { shell: undefined, detected: undefined };
|
|
40
42
|
}
|
|
43
|
+
export function resolveShellProfilePath(shell, homeDir = os.homedir()) {
|
|
44
|
+
switch (shell) {
|
|
45
|
+
case 'zsh':
|
|
46
|
+
return path.join(homeDir, '.zshrc');
|
|
47
|
+
case 'bash':
|
|
48
|
+
return path.join(homeDir, '.bashrc');
|
|
49
|
+
case 'fish':
|
|
50
|
+
return path.join(homeDir, '.config', 'fish', 'config.fish');
|
|
51
|
+
case 'powershell':
|
|
52
|
+
return undefined;
|
|
53
|
+
default:
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
41
57
|
//# sourceMappingURL=shell-detection.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devtrack-solution/codesdd",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4-rc3",
|
|
4
4
|
"description": "AI-native system for spec-driven development",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"codesdd",
|
|
@@ -9,23 +9,27 @@
|
|
|
9
9
|
"ai",
|
|
10
10
|
"development"
|
|
11
11
|
],
|
|
12
|
-
"homepage": "https://github.com/devtrack-solution/
|
|
12
|
+
"homepage": "https://github.com/devtrack-solution/codesdd",
|
|
13
13
|
"repository": {
|
|
14
14
|
"type": "git",
|
|
15
|
-
"url": "git+https://github.com/devtrack-solution/
|
|
15
|
+
"url": "git+https://github.com/devtrack-solution/codesdd.git"
|
|
16
16
|
},
|
|
17
17
|
"bugs": {
|
|
18
|
-
"url": "https://github.com/devtrack-solution/
|
|
18
|
+
"url": "https://github.com/devtrack-solution/codesdd/issues"
|
|
19
19
|
},
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"author": "CodeSDD Contributors",
|
|
22
22
|
"type": "module",
|
|
23
|
+
"packageManager": "pnpm@10.33.2",
|
|
23
24
|
"publishConfig": {
|
|
24
|
-
"access": "public"
|
|
25
|
+
"access": "public",
|
|
26
|
+
"provenance": true
|
|
25
27
|
},
|
|
26
28
|
"pnpm": {
|
|
27
29
|
"overrides": {
|
|
28
30
|
"basic-ftp": "5.3.1",
|
|
31
|
+
"@vitest/coverage-v8>test-exclude": "8.0.0",
|
|
32
|
+
"minimatch@10>brace-expansion": "5.0.6",
|
|
29
33
|
"ip-address": "10.1.1",
|
|
30
34
|
"mermaid": "11.15.0",
|
|
31
35
|
"uuid": "^14.0.0"
|
|
@@ -48,6 +52,7 @@
|
|
|
48
52
|
".sdd/skills/curated/devtrack-api/SKILL.md",
|
|
49
53
|
".sdd/skills/curated/devtrack-api/agents/*.yaml",
|
|
50
54
|
".sdd/skills/curated/devtrack-api/references/*.md",
|
|
55
|
+
".sdd/skills/curated/devtrack-api/references/*.yaml",
|
|
51
56
|
"!dist/**/*.test.js",
|
|
52
57
|
"!dist/**/__tests__",
|
|
53
58
|
"!dist/**/*.map"
|
|
@@ -60,13 +65,15 @@
|
|
|
60
65
|
"build": "node build.js",
|
|
61
66
|
"dev": "tsc --watch",
|
|
62
67
|
"dev:cli": "pnpm build && node bin/codesdd.js",
|
|
63
|
-
"test": "vitest run",
|
|
68
|
+
"test": "vitest run --silent=passed-only",
|
|
64
69
|
"test:watch": "vitest",
|
|
65
|
-
"test:e2e": "vitest run test/e2e",
|
|
70
|
+
"test:e2e": "vitest run test/e2e test/cli-e2e --silent=passed-only",
|
|
71
|
+
"test:deepagents-smoke": "vitest run test/e2e/deepagents-agent-run-smoke.test.ts",
|
|
66
72
|
"test:ui": "vitest --ui",
|
|
67
|
-
"test:coverage": "vitest run --coverage",
|
|
68
|
-
"coverage": "vitest run --coverage",
|
|
73
|
+
"test:coverage": "vitest run --coverage --silent=passed-only",
|
|
74
|
+
"coverage": "vitest run --coverage --silent=passed-only",
|
|
69
75
|
"quality": "pnpm run cleanup:install && pnpm run build && pnpm run lint && pnpm run test && pnpm run test:e2e && pnpm run coverage",
|
|
76
|
+
"quality:review": "pnpm run build && pnpm run lint && pnpm run test && pnpm run test:e2e && pnpm run coverage && pnpm run sdd:validate && pnpm run check:pack-version",
|
|
70
77
|
"prepublishOnly": "node build.js",
|
|
71
78
|
"prepare": "node scripts/install-git-hooks.mjs",
|
|
72
79
|
"check:pack-version": "node scripts/pack-version-check.mjs",
|
|
@@ -79,33 +86,39 @@
|
|
|
79
86
|
"sdd:validate": "pnpm run build && pnpm run sdd:schema:check && pnpm run sdd:validate:no-build",
|
|
80
87
|
"release": "pnpm run release:ci",
|
|
81
88
|
"release:ci": "pnpm run check:pack-version && pnpm exec changeset publish",
|
|
89
|
+
"release:sbom": "npm sbom --sbom-format cyclonedx",
|
|
82
90
|
"changeset": "changeset"
|
|
83
91
|
},
|
|
84
92
|
"engines": {
|
|
85
93
|
"node": ">=20.19.0"
|
|
86
94
|
},
|
|
87
95
|
"devDependencies": {
|
|
88
|
-
"@changesets/changelog-github": "^0.
|
|
89
|
-
"@changesets/cli": "^2.
|
|
96
|
+
"@changesets/changelog-github": "^0.7.0",
|
|
97
|
+
"@changesets/cli": "^2.31.0",
|
|
90
98
|
"@mermaid-js/mermaid-cli": "^11.15.0",
|
|
91
99
|
"@vitest/coverage-v8": "^3.2.4",
|
|
92
100
|
"@vitest/ui": "^3.2.4",
|
|
93
|
-
"eslint": "^
|
|
101
|
+
"eslint": "^10.4.0",
|
|
102
|
+
"puppeteer": "24.43.1",
|
|
94
103
|
"ts-morph": "^28.0.0",
|
|
95
|
-
"typescript-eslint": "^8.
|
|
104
|
+
"typescript-eslint": "^8.59.4",
|
|
96
105
|
"vitest": "^3.2.4"
|
|
97
106
|
},
|
|
98
107
|
"dependencies": {
|
|
99
|
-
"@inquirer/core": "^11.1.
|
|
100
|
-
"@inquirer/prompts": "^8.4.
|
|
101
|
-
"@
|
|
108
|
+
"@inquirer/core": "^11.1.10",
|
|
109
|
+
"@inquirer/prompts": "^8.4.3",
|
|
110
|
+
"@langchain/core": "^1.1.48",
|
|
111
|
+
"@langchain/openai": "^1.4.7",
|
|
112
|
+
"@types/node": "^25.9.1",
|
|
102
113
|
"chalk": "^5.6.2",
|
|
103
114
|
"commander": "^14.0.3",
|
|
115
|
+
"deepagents": "^1.10.2",
|
|
104
116
|
"fast-glob": "^3.3.3",
|
|
105
|
-
"ora": "^9.
|
|
106
|
-
"posthog-node": "^5.
|
|
107
|
-
"
|
|
108
|
-
"
|
|
109
|
-
"
|
|
117
|
+
"ora": "^9.4.0",
|
|
118
|
+
"posthog-node": "^5.35.1",
|
|
119
|
+
"redis": "^6.0.0",
|
|
120
|
+
"typescript": "^6.0.3",
|
|
121
|
+
"yaml": "^2.9.0",
|
|
122
|
+
"zod": "^4.4.3"
|
|
110
123
|
}
|
|
111
124
|
}
|