@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
package/dist/core/sdd/state.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type NamingContractState, type ArchitectureState, type BacklogState, type DiscoveryIndexState, type FinalizeQueueState, type FrontendDecisionsState, type FrontendGapsState, type FrontendMapState, type IntegrationContractsState, type RepoMapState, type SourceIndexState, type SkillCatalogState, type SkillRoutingState, type ServiceCatalogState, type TechStackState, type TechDebtState, type UnblockEventsState, type TransitionLogState, type AuditHistoryState } from './types.js';
|
|
2
|
+
import { type BuiltInSkillDefinition, type BuiltInSkillSourceTree } from './default-skills.js';
|
|
2
3
|
export type SddLanguage = 'pt-BR' | 'en-US';
|
|
3
4
|
export type SddLayout = 'legacy' | 'pt-BR' | 'en-US';
|
|
4
5
|
export interface SddRuntimeConfig {
|
|
@@ -23,6 +24,7 @@ export interface SddRuntimeConfig {
|
|
|
23
24
|
autoRender: boolean;
|
|
24
25
|
};
|
|
25
26
|
}
|
|
27
|
+
export declare function buildDefaultSkillRoutingState(): SkillRoutingState;
|
|
26
28
|
export interface SddPaths {
|
|
27
29
|
projectRoot: string;
|
|
28
30
|
memoryRoot: string;
|
|
@@ -89,6 +91,21 @@ export interface SddStateSnapshot {
|
|
|
89
91
|
sourceIndex: SourceIndexState;
|
|
90
92
|
skillRouting: SkillRoutingState;
|
|
91
93
|
}
|
|
94
|
+
export declare function skillSubfoldersForLayout(layout: SddLayout): {
|
|
95
|
+
curated: string;
|
|
96
|
+
bundles: string;
|
|
97
|
+
};
|
|
98
|
+
export declare function defaultFoldersForLayout(layout: SddLayout): SddRuntimeConfig['folders'];
|
|
99
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
100
|
+
export declare function mergeRuntimeConfig(raw: unknown): SddRuntimeConfig;
|
|
101
|
+
export declare function validateRuntimeConfig(config: SddRuntimeConfig): void;
|
|
102
|
+
export declare function defaultRuntimeConfig(): SddRuntimeConfig;
|
|
103
|
+
export declare function fileExists(filePath: string): Promise<boolean>;
|
|
104
|
+
export declare function firstExistingFile(paths: string[]): Promise<string | null>;
|
|
105
|
+
export declare function readYamlObject(filePath: string): Promise<Record<string, unknown>>;
|
|
106
|
+
export declare function isLegacyGeneratedBy(value: unknown): boolean;
|
|
107
|
+
export declare function buildSddConfigDocument(existing: Record<string, unknown>, config: SddRuntimeConfig): Record<string, unknown>;
|
|
108
|
+
export declare function removeSddRuntimeConfigFromLegacySpecConfig(projectRoot: string): Promise<void>;
|
|
92
109
|
export declare function loadProjectSddConfig(projectRoot: string): Promise<SddRuntimeConfig>;
|
|
93
110
|
export declare function upsertProjectSddConfig(projectRoot: string, overrides?: {
|
|
94
111
|
frontendEnabled?: boolean;
|
|
@@ -97,6 +114,12 @@ export declare function upsertProjectSddConfig(projectRoot: string, overrides?:
|
|
|
97
114
|
}): Promise<SddRuntimeConfig>;
|
|
98
115
|
export declare function resolveSddPaths(projectRoot: string, config: SddRuntimeConfig): SddPaths;
|
|
99
116
|
export declare function ensureBaseStructure(paths: SddPaths): Promise<void>;
|
|
117
|
+
export declare function isBuiltInSkillSourceTree(definition: BuiltInSkillDefinition): definition is BuiltInSkillSourceTree;
|
|
118
|
+
export declare function adaptSkillContentForLayout(content: string, paths: SddPaths, config: SddRuntimeConfig): string;
|
|
119
|
+
export declare function listTreeFiles(rootDir: string): Promise<string[]>;
|
|
120
|
+
export declare function resolveBuiltInSourceRoot(paths: SddPaths, sourceRoot: string): Promise<string | null>;
|
|
121
|
+
export declare function materializeBuiltInSkill(paths: SddPaths, config: SddRuntimeConfig, skillId: string, definition: BuiltInSkillDefinition): Promise<void>;
|
|
122
|
+
export declare function ensureCuratedSkillCatalog(filePath: string): Promise<void>;
|
|
100
123
|
export declare function ensureBaseFiles(paths: SddPaths, config: SddRuntimeConfig): Promise<void>;
|
|
101
124
|
export declare function loadStateSnapshot(paths: SddPaths, config: SddRuntimeConfig): Promise<SddStateSnapshot>;
|
|
102
125
|
export declare function loadSkillCatalogState(paths: SddPaths): Promise<SkillCatalogState>;
|
package/dist/core/sdd/state.js
CHANGED
|
@@ -2,12 +2,261 @@ import path from 'node:path';
|
|
|
2
2
|
import { promises as fs } from 'node:fs';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
4
|
import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
|
|
5
|
-
import {
|
|
5
|
+
import { resolveLegacySpecLiveSubpath } from './services/legacy-capability.service.js';
|
|
6
6
|
import { ArchitectureStateSchema, BacklogStateSchema, DiscoveryIndexStateSchema, FinalizeQueueStateSchema, IntegrationContractsStateSchema, FrontendDecisionsStateSchema, UnblockEventsStateSchema, TransitionLogStateSchema, AuditHistoryStateSchema, FrontendGapsStateSchema, FrontendMapStateSchema, RepoMapStateSchema, SourceIndexStateSchema, SkillCatalogStateSchema, SkillRoutingStateSchema, ServiceCatalogStateSchema, TechStackStateSchema, TechDebtStateSchema, NamingContractStateSchema, } from './types.js';
|
|
7
7
|
import { CLI_NAME } from '../branding.js';
|
|
8
|
-
import {
|
|
8
|
+
import { CURRENT_SDD_STATE_VERSION, buildSddContractConfig } from './contract.js';
|
|
9
|
+
import { DEFAULT_CURATED_SKILL_CATALOG, BUILT_IN_SDD_SKILLS, buildCuratedBundlesMarkdown, buildCuratedBundlesCurationData, } from './default-skills.js';
|
|
9
10
|
import { buildSddInternalReadme, PROMPT_00_COMECE_POR_AQUI_MD, PROMPT_01_INGESTAO_DEPOSITO_MD, PROMPT_02_NORMALIZAR_PLANEJAMENTO_MD, PROMPT_03_EXECUCAO_FEATURE_MD, PROMPT_04_CONSOLIDACAO_FINALIZE_MD, PROMPTS_README_MD, TEMPLATE_1_SPEC_MD, TEMPLATE_2_PLAN_MD, TEMPLATE_QUALITY_MD, TEMPLATE_3_TASKS_MD, TEMPLATE_4_CHANGELOG_MD, } from './default-bootstrap-files.js';
|
|
10
11
|
import { SddWriteTransaction } from './transaction.js';
|
|
12
|
+
export function buildDefaultSkillRoutingState() {
|
|
13
|
+
return {
|
|
14
|
+
version: 1,
|
|
15
|
+
default_skills: ['architecture', 'concise-planning', 'context-window-management'],
|
|
16
|
+
routes: [
|
|
17
|
+
{
|
|
18
|
+
domain: 'backend',
|
|
19
|
+
skills: ['devtrack-api', 'architecture', 'api-design-principles'],
|
|
20
|
+
bundles: ['architecture-backend'],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
domain: 'api',
|
|
24
|
+
skills: ['devtrack-api', 'api-design-principles'],
|
|
25
|
+
bundles: ['architecture-backend'],
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
domain: 'nestjs',
|
|
29
|
+
skills: ['devtrack-api', 'architecture'],
|
|
30
|
+
bundles: ['architecture-backend'],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
domain: 'typeorm',
|
|
34
|
+
skills: ['devtrack-api', 'database-design'],
|
|
35
|
+
bundles: ['architecture-backend'],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
domain: 'devtrack',
|
|
39
|
+
skills: ['devtrack-api'],
|
|
40
|
+
bundles: ['architecture-backend'],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
domain: 'python',
|
|
44
|
+
skills: ['api-clean-flask-langgraph', 'architecture'],
|
|
45
|
+
bundles: ['python-agentic-backend'],
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
domain: 'flask',
|
|
49
|
+
skills: ['api-clean-flask-langgraph'],
|
|
50
|
+
bundles: ['python-agentic-backend'],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
domain: 'frontend',
|
|
54
|
+
skills: ['frontend-design', 'react-patterns'],
|
|
55
|
+
bundles: ['frontend-product'],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
domain: 'angular',
|
|
59
|
+
skills: ['frontend-design', 'frontend-security-coder'],
|
|
60
|
+
bundles: ['frontend-product', 'security-quality'],
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
domain: 'flutter',
|
|
64
|
+
skills: ['devtrack-flutter', 'mobile-design', 'frontend-design'],
|
|
65
|
+
bundles: ['frontend-product'],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
domain: 'dart',
|
|
69
|
+
skills: ['devtrack-flutter', 'architecture'],
|
|
70
|
+
bundles: ['frontend-product', 'architecture-backend'],
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
domain: 'cross-platform',
|
|
74
|
+
skills: ['devtrack-flutter', 'mobile-design'],
|
|
75
|
+
bundles: ['frontend-product'],
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
domain: 'flutter-ui',
|
|
79
|
+
skills: ['devtrack-flutter', 'frontend-design'],
|
|
80
|
+
bundles: ['frontend-product'],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
domain: 'flutter-layout',
|
|
84
|
+
skills: ['devtrack-flutter', 'frontend-design'],
|
|
85
|
+
bundles: ['frontend-product'],
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
domain: 'flutter-routing',
|
|
89
|
+
skills: ['devtrack-flutter', 'architecture'],
|
|
90
|
+
bundles: ['frontend-product', 'architecture-backend'],
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
domain: 'flutter-l10n',
|
|
94
|
+
skills: ['devtrack-flutter'],
|
|
95
|
+
bundles: ['frontend-product'],
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
domain: 'flutter-http',
|
|
99
|
+
skills: ['devtrack-flutter', 'frontend-security-coder'],
|
|
100
|
+
bundles: ['frontend-product', 'security-quality'],
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
domain: 'flutter-json',
|
|
104
|
+
skills: ['devtrack-flutter'],
|
|
105
|
+
bundles: ['frontend-product'],
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
domain: 'widget-preview',
|
|
109
|
+
skills: ['devtrack-flutter', 'frontend-design'],
|
|
110
|
+
bundles: ['frontend-product'],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
domain: 'widget-test',
|
|
114
|
+
skills: ['devtrack-flutter'],
|
|
115
|
+
bundles: ['frontend-product'],
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
domain: 'integration-test',
|
|
119
|
+
skills: ['devtrack-flutter'],
|
|
120
|
+
bundles: ['frontend-product'],
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
domain: 'go-router',
|
|
124
|
+
skills: ['devtrack-flutter', 'architecture'],
|
|
125
|
+
bundles: ['frontend-product', 'architecture-backend'],
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
domain: 'arb',
|
|
129
|
+
skills: ['devtrack-flutter'],
|
|
130
|
+
bundles: ['frontend-product'],
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
domain: 'l10n',
|
|
134
|
+
skills: ['devtrack-flutter'],
|
|
135
|
+
bundles: ['frontend-product'],
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
domain: 'admin',
|
|
139
|
+
skills: ['devtrack-angular', 'frontend-design', 'frontend-security-coder'],
|
|
140
|
+
bundles: ['frontend-product', 'security-quality'],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
domain: 'angular-admin',
|
|
144
|
+
skills: ['devtrack-angular', 'frontend-design', 'frontend-security-coder'],
|
|
145
|
+
bundles: ['frontend-product', 'security-quality'],
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
domain: 'backoffice',
|
|
149
|
+
skills: ['devtrack-angular', 'frontend-design', 'frontend-security-coder'],
|
|
150
|
+
bundles: ['frontend-product', 'security-quality'],
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
domain: 'dashboard',
|
|
154
|
+
skills: ['devtrack-angular', 'frontend-design'],
|
|
155
|
+
bundles: ['frontend-product'],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
domain: 'crud',
|
|
159
|
+
skills: ['devtrack-angular', 'architecture'],
|
|
160
|
+
bundles: ['frontend-product', 'architecture-backend'],
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
domain: 'data-grid',
|
|
164
|
+
skills: ['devtrack-angular', 'frontend-design'],
|
|
165
|
+
bundles: ['frontend-product'],
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
domain: 'formly',
|
|
169
|
+
skills: ['frontend-design'],
|
|
170
|
+
bundles: ['frontend-product'],
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
domain: 'ngxs',
|
|
174
|
+
skills: ['architecture'],
|
|
175
|
+
bundles: ['frontend-product', 'architecture-backend'],
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
domain: 'admin-formly',
|
|
179
|
+
skills: ['devtrack-angular', 'frontend-design'],
|
|
180
|
+
bundles: ['frontend-product'],
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
domain: 'admin-state',
|
|
184
|
+
skills: ['devtrack-angular', 'architecture'],
|
|
185
|
+
bundles: ['frontend-product', 'architecture-backend'],
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
domain: 'ngxs-admin',
|
|
189
|
+
skills: ['devtrack-angular', 'architecture'],
|
|
190
|
+
bundles: ['frontend-product', 'architecture-backend'],
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
domain: 'uiux',
|
|
194
|
+
skills: ['frontend-design', 'ui-ux-pro-max'],
|
|
195
|
+
bundles: ['frontend-product'],
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
domain: 'permissions',
|
|
199
|
+
skills: ['devtrack-angular', 'frontend-security-coder'],
|
|
200
|
+
bundles: ['frontend-product', 'security-quality'],
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
domain: 'reports',
|
|
204
|
+
skills: ['devtrack-angular', 'frontend-design'],
|
|
205
|
+
bundles: ['frontend-product'],
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
domain: 'workflow',
|
|
209
|
+
skills: ['devtrack-angular', 'architecture'],
|
|
210
|
+
bundles: ['frontend-product', 'architecture-backend'],
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
domain: 'realtime',
|
|
214
|
+
skills: ['architecture'],
|
|
215
|
+
bundles: ['frontend-product'],
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
domain: 'rtc',
|
|
219
|
+
skills: ['architecture'],
|
|
220
|
+
bundles: ['frontend-product'],
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
domain: 'chat',
|
|
224
|
+
skills: ['frontend-design'],
|
|
225
|
+
bundles: ['frontend-product'],
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
domain: 'admin-realtime',
|
|
229
|
+
skills: ['devtrack-angular', 'architecture'],
|
|
230
|
+
bundles: ['frontend-product'],
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
domain: 'admin-chat',
|
|
234
|
+
skills: ['devtrack-angular', 'frontend-design'],
|
|
235
|
+
bundles: ['frontend-product'],
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
domain: 'mobile',
|
|
239
|
+
skills: ['mobile-design'],
|
|
240
|
+
bundles: ['frontend-product'],
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
domain: 'ionic',
|
|
244
|
+
skills: ['mobile-design'],
|
|
245
|
+
bundles: ['frontend-product'],
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
domain: 'nativescript',
|
|
249
|
+
skills: ['mobile-design'],
|
|
250
|
+
bundles: ['frontend-product'],
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
domain: 'infra',
|
|
254
|
+
skills: ['terraform-specialist', 'docker-expert'],
|
|
255
|
+
bundles: [],
|
|
256
|
+
},
|
|
257
|
+
],
|
|
258
|
+
};
|
|
259
|
+
}
|
|
11
260
|
const LEGACY_LAYOUT_FOLDERS = {
|
|
12
261
|
discovery: 'discovery',
|
|
13
262
|
planning: 'pendencias',
|
|
@@ -38,13 +287,13 @@ const PT_BR_LAYOUT_FOLDERS = {
|
|
|
38
287
|
active: 'execucao',
|
|
39
288
|
archived: 'arquivados',
|
|
40
289
|
};
|
|
41
|
-
function skillSubfoldersForLayout(layout) {
|
|
290
|
+
export function skillSubfoldersForLayout(layout) {
|
|
42
291
|
if (layout === 'pt-BR') {
|
|
43
292
|
return { curated: 'skills', bundles: 'pacotes' };
|
|
44
293
|
}
|
|
45
294
|
return { curated: 'curated', bundles: 'bundles' };
|
|
46
295
|
}
|
|
47
|
-
function defaultFoldersForLayout(layout) {
|
|
296
|
+
export function defaultFoldersForLayout(layout) {
|
|
48
297
|
if (layout === 'pt-BR') {
|
|
49
298
|
return { ...PT_BR_LAYOUT_FOLDERS };
|
|
50
299
|
}
|
|
@@ -95,10 +344,10 @@ const CANONICAL_FOLDER_OPTIONS = {
|
|
|
95
344
|
archived: ['arquivados'],
|
|
96
345
|
},
|
|
97
346
|
};
|
|
98
|
-
function isRecord(value) {
|
|
347
|
+
export function isRecord(value) {
|
|
99
348
|
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
100
349
|
}
|
|
101
|
-
function mergeRuntimeConfig(raw) {
|
|
350
|
+
export function mergeRuntimeConfig(raw) {
|
|
102
351
|
if (!isRecord(raw)) {
|
|
103
352
|
return {
|
|
104
353
|
...DEFAULT_SDD_CONFIG,
|
|
@@ -163,7 +412,7 @@ function mergeRuntimeConfig(raw) {
|
|
|
163
412
|
},
|
|
164
413
|
};
|
|
165
414
|
}
|
|
166
|
-
function validateRuntimeConfig(config) {
|
|
415
|
+
export function validateRuntimeConfig(config) {
|
|
167
416
|
const allowed = CANONICAL_FOLDER_OPTIONS[config.layout];
|
|
168
417
|
const invalidEntries = Object.entries(config.folders).flatMap(([key, value]) => {
|
|
169
418
|
const folderKey = key;
|
|
@@ -179,7 +428,7 @@ function validateRuntimeConfig(config) {
|
|
|
179
428
|
throw new Error(`Configuracao SDD invalida em .sdd/config.yaml: folders fora do canonico para layout ${config.layout}: ${invalidEntries.join('; ')}`);
|
|
180
429
|
}
|
|
181
430
|
}
|
|
182
|
-
function defaultRuntimeConfig() {
|
|
431
|
+
export function defaultRuntimeConfig() {
|
|
183
432
|
return {
|
|
184
433
|
...DEFAULT_SDD_CONFIG,
|
|
185
434
|
folders: { ...DEFAULT_SDD_CONFIG.folders },
|
|
@@ -187,7 +436,7 @@ function defaultRuntimeConfig() {
|
|
|
187
436
|
views: { autoRender: DEFAULT_SDD_CONFIG.views.autoRender },
|
|
188
437
|
};
|
|
189
438
|
}
|
|
190
|
-
async function fileExists(filePath) {
|
|
439
|
+
export async function fileExists(filePath) {
|
|
191
440
|
try {
|
|
192
441
|
await fs.access(filePath);
|
|
193
442
|
return true;
|
|
@@ -199,7 +448,7 @@ async function fileExists(filePath) {
|
|
|
199
448
|
async function ensureDir(dirPath) {
|
|
200
449
|
await fs.mkdir(dirPath, { recursive: true });
|
|
201
450
|
}
|
|
202
|
-
async function firstExistingFile(paths) {
|
|
451
|
+
export async function firstExistingFile(paths) {
|
|
203
452
|
for (const filePath of paths) {
|
|
204
453
|
if (await fileExists(filePath)) {
|
|
205
454
|
return filePath;
|
|
@@ -207,17 +456,27 @@ async function firstExistingFile(paths) {
|
|
|
207
456
|
}
|
|
208
457
|
return null;
|
|
209
458
|
}
|
|
210
|
-
async function readYamlObject(filePath) {
|
|
459
|
+
export async function readYamlObject(filePath) {
|
|
211
460
|
const parsed = parseYaml(await fs.readFile(filePath, 'utf-8'));
|
|
212
461
|
return isRecord(parsed) ? parsed : {};
|
|
213
462
|
}
|
|
214
|
-
|
|
463
|
+
const LEGACY_GENERATED_BY_PREFIXES = [`${'open'}sdd`, `${'open'}spec`];
|
|
464
|
+
export function isLegacyGeneratedBy(value) {
|
|
465
|
+
if (typeof value !== 'string')
|
|
466
|
+
return false;
|
|
467
|
+
return LEGACY_GENERATED_BY_PREFIXES.some((prefix) => new RegExp(`^${prefix}\\s`, 'i').test(value));
|
|
468
|
+
}
|
|
469
|
+
export function buildSddConfigDocument(existing, config) {
|
|
215
470
|
const next = { ...existing };
|
|
216
471
|
delete next.sdd;
|
|
217
472
|
next.version = typeof next.version === 'number' ? next.version : 1;
|
|
218
|
-
|
|
473
|
+
const stateVersion = typeof next.state_version === 'number' ? next.state_version : CURRENT_SDD_STATE_VERSION;
|
|
474
|
+
next.state_version = stateVersion;
|
|
475
|
+
if (stateVersion >= CURRENT_SDD_STATE_VERSION) {
|
|
476
|
+
next.sdd_contract = buildSddContractConfig();
|
|
477
|
+
}
|
|
219
478
|
next.generatedBy =
|
|
220
|
-
typeof next.generatedBy === 'string' && !next.generatedBy
|
|
479
|
+
typeof next.generatedBy === 'string' && !isLegacyGeneratedBy(next.generatedBy)
|
|
221
480
|
? next.generatedBy
|
|
222
481
|
: `${CLI_NAME} sdd init`;
|
|
223
482
|
next.meta_evolution = isRecord(next.meta_evolution)
|
|
@@ -237,10 +496,10 @@ function buildSddConfigDocument(existing, config) {
|
|
|
237
496
|
next.views = { autoRender: config.views.autoRender };
|
|
238
497
|
return next;
|
|
239
498
|
}
|
|
240
|
-
async function
|
|
499
|
+
export async function removeSddRuntimeConfigFromLegacySpecConfig(projectRoot) {
|
|
241
500
|
const legacyConfigPath = await firstExistingFile([
|
|
242
|
-
|
|
243
|
-
|
|
501
|
+
resolveLegacySpecLiveSubpath(projectRoot, 'config.yaml'),
|
|
502
|
+
resolveLegacySpecLiveSubpath(projectRoot, 'config.yml'),
|
|
244
503
|
]);
|
|
245
504
|
if (!legacyConfigPath) {
|
|
246
505
|
return;
|
|
@@ -263,8 +522,8 @@ export async function loadProjectSddConfig(projectRoot) {
|
|
|
263
522
|
return config;
|
|
264
523
|
}
|
|
265
524
|
const legacyConfigPath = await firstExistingFile([
|
|
266
|
-
|
|
267
|
-
|
|
525
|
+
resolveLegacySpecLiveSubpath(projectRoot, 'config.yaml'),
|
|
526
|
+
resolveLegacySpecLiveSubpath(projectRoot, 'config.yml'),
|
|
268
527
|
]);
|
|
269
528
|
if (legacyConfigPath) {
|
|
270
529
|
const legacyRoot = await readYamlObject(legacyConfigPath);
|
|
@@ -289,8 +548,8 @@ export async function upsertProjectSddConfig(projectRoot, overrides) {
|
|
|
289
548
|
}
|
|
290
549
|
else {
|
|
291
550
|
const legacyConfigPath = await firstExistingFile([
|
|
292
|
-
|
|
293
|
-
|
|
551
|
+
resolveLegacySpecLiveSubpath(projectRoot, 'config.yaml'),
|
|
552
|
+
resolveLegacySpecLiveSubpath(projectRoot, 'config.yml'),
|
|
294
553
|
]);
|
|
295
554
|
if (legacyConfigPath) {
|
|
296
555
|
const legacyRoot = await readYamlObject(legacyConfigPath);
|
|
@@ -310,7 +569,7 @@ export async function upsertProjectSddConfig(projectRoot, overrides) {
|
|
|
310
569
|
}
|
|
311
570
|
validateRuntimeConfig(mergedSdd);
|
|
312
571
|
await fs.writeFile(configPath, stringifyYaml(buildSddConfigDocument(rootConfig, mergedSdd)), 'utf-8');
|
|
313
|
-
await
|
|
572
|
+
await removeSddRuntimeConfigFromLegacySpecConfig(projectRoot);
|
|
314
573
|
return mergedSdd;
|
|
315
574
|
}
|
|
316
575
|
export function resolveSddPaths(projectRoot, config) {
|
|
@@ -431,13 +690,13 @@ async function writeFileIfMissing(filePath, content) {
|
|
|
431
690
|
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
432
691
|
await fs.writeFile(filePath, content, 'utf-8');
|
|
433
692
|
}
|
|
434
|
-
function isBuiltInSkillSourceTree(definition) {
|
|
693
|
+
export function isBuiltInSkillSourceTree(definition) {
|
|
435
694
|
return (typeof definition === 'object' &&
|
|
436
695
|
definition !== null &&
|
|
437
696
|
'kind' in definition &&
|
|
438
697
|
definition.kind === 'source-tree');
|
|
439
698
|
}
|
|
440
|
-
function adaptSkillContentForLayout(content, paths, config) {
|
|
699
|
+
export function adaptSkillContentForLayout(content, paths, config) {
|
|
441
700
|
if (config.layout === 'en-US') {
|
|
442
701
|
return content;
|
|
443
702
|
}
|
|
@@ -450,7 +709,7 @@ function adaptSkillContentForLayout(content, paths, config) {
|
|
|
450
709
|
.replaceAll('/attachments/', '/anexos/')
|
|
451
710
|
.replaceAll('/legacy/', '/legado/');
|
|
452
711
|
}
|
|
453
|
-
async function listTreeFiles(rootDir) {
|
|
712
|
+
export async function listTreeFiles(rootDir) {
|
|
454
713
|
async function walk(currentDir, relativePrefix) {
|
|
455
714
|
const entries = await fs.readdir(currentDir, { withFileTypes: true });
|
|
456
715
|
const files = [];
|
|
@@ -474,7 +733,7 @@ async function listTreeFiles(rootDir) {
|
|
|
474
733
|
files.sort((a, b) => a.localeCompare(b));
|
|
475
734
|
return files;
|
|
476
735
|
}
|
|
477
|
-
async function resolveBuiltInSourceRoot(paths, sourceRoot) {
|
|
736
|
+
export async function resolveBuiltInSourceRoot(paths, sourceRoot) {
|
|
478
737
|
const normalized = sourceRoot.trim();
|
|
479
738
|
if (!normalized) {
|
|
480
739
|
return null;
|
|
@@ -495,7 +754,7 @@ async function resolveBuiltInSourceRoot(paths, sourceRoot) {
|
|
|
495
754
|
}
|
|
496
755
|
return null;
|
|
497
756
|
}
|
|
498
|
-
async function materializeBuiltInSkill(paths, config, skillId, definition) {
|
|
757
|
+
export async function materializeBuiltInSkill(paths, config, skillId, definition) {
|
|
499
758
|
if (typeof definition === 'string') {
|
|
500
759
|
const materializedContent = adaptSkillContentForLayout(definition, paths, config);
|
|
501
760
|
await writeFileIfMissing(path.join(paths.skillsCuratedDir, skillId, 'SKILL.md'), materializedContent);
|
|
@@ -523,7 +782,7 @@ async function materializeBuiltInSkill(paths, config, skillId, definition) {
|
|
|
523
782
|
await writeFileIfMissing(targetFile, adaptSkillContentForLayout(content, paths, config));
|
|
524
783
|
}
|
|
525
784
|
}
|
|
526
|
-
async function ensureCuratedSkillCatalog(filePath) {
|
|
785
|
+
export async function ensureCuratedSkillCatalog(filePath) {
|
|
527
786
|
if (!(await fileExists(filePath))) {
|
|
528
787
|
await fs.writeFile(filePath, stringifyYaml(DEFAULT_CURATED_SKILL_CATALOG), 'utf-8');
|
|
529
788
|
return;
|
|
@@ -573,7 +832,8 @@ async function ensureCuratedSkillCatalog(filePath) {
|
|
|
573
832
|
export async function ensureBaseFiles(paths, config) {
|
|
574
833
|
await writeYamlIfMissing(paths.configFile, {
|
|
575
834
|
version: 1,
|
|
576
|
-
state_version:
|
|
835
|
+
state_version: CURRENT_SDD_STATE_VERSION,
|
|
836
|
+
sdd_contract: buildSddContractConfig(),
|
|
577
837
|
generatedBy: `${CLI_NAME} sdd init`,
|
|
578
838
|
meta_evolution: {
|
|
579
839
|
enabled: true,
|
|
@@ -594,7 +854,7 @@ export async function ensureBaseFiles(paths, config) {
|
|
|
594
854
|
});
|
|
595
855
|
await writeYamlIfMissing(paths.stateFiles.backlog, { version: 1, items: [] });
|
|
596
856
|
await writeYamlIfMissing(paths.stateFiles.techDebt, { version: 1, items: [] });
|
|
597
|
-
await writeYamlIfMissing(paths.stateFiles.finalizeQueue, { version: 1, items: [] });
|
|
857
|
+
await writeYamlIfMissing(paths.stateFiles.finalizeQueue, { version: 1, items: [], history: [] });
|
|
598
858
|
await ensureCuratedSkillCatalog(paths.stateFiles.skillCatalog);
|
|
599
859
|
await writeYamlIfMissing(paths.stateFiles.unblockEvents, { version: 1, events: [] });
|
|
600
860
|
await writeYamlIfMissing(paths.stateFiles.transitionLog, { version: 1, events: [] });
|
|
@@ -611,21 +871,7 @@ export async function ensureBaseFiles(paths, config) {
|
|
|
611
871
|
jurisdiction_profiles: [],
|
|
612
872
|
control_catalog: [],
|
|
613
873
|
});
|
|
614
|
-
await writeYamlIfMissing(paths.stateFiles.skillRouting,
|
|
615
|
-
version: 1,
|
|
616
|
-
default_skills: ['architecture', 'concise-planning', 'context-window-management'],
|
|
617
|
-
routes: [
|
|
618
|
-
{ domain: 'backend', skills: ['architecture', 'api-design-principles'], bundles: [] },
|
|
619
|
-
{ domain: 'api', skills: ['api-design-principles', 'api-clean-flask-langgraph'], bundles: ['python-agentic-backend'] },
|
|
620
|
-
{ domain: 'python', skills: ['api-clean-flask-langgraph', 'architecture'], bundles: ['python-agentic-backend'] },
|
|
621
|
-
{ domain: 'flask', skills: ['api-clean-flask-langgraph'], bundles: ['python-agentic-backend'] },
|
|
622
|
-
{ domain: 'nestjs', skills: ['devtrack-api', 'architecture'], bundles: ['architecture-backend'] },
|
|
623
|
-
{ domain: 'typeorm', skills: ['devtrack-api', 'database-design'], bundles: ['architecture-backend'] },
|
|
624
|
-
{ domain: 'devtrack', skills: ['devtrack-api'], bundles: ['architecture-backend'] },
|
|
625
|
-
{ domain: 'frontend', skills: ['frontend-design', 'react-patterns'], bundles: [] },
|
|
626
|
-
{ domain: 'infra', skills: ['terraform-specialist', 'docker-expert'], bundles: [] }
|
|
627
|
-
]
|
|
628
|
-
});
|
|
874
|
+
await writeYamlIfMissing(paths.stateFiles.skillRouting, buildDefaultSkillRoutingState());
|
|
629
875
|
if (config.frontend.enabled) {
|
|
630
876
|
await writeYamlIfMissing(paths.stateFiles.frontendGaps, { version: 1, items: [] });
|
|
631
877
|
await writeYamlIfMissing(paths.stateFiles.frontendMap, { version: 1, routes: [] });
|
|
@@ -642,6 +888,11 @@ export async function ensureBaseFiles(paths, config) {
|
|
|
642
888
|
prompts: 'prompts',
|
|
643
889
|
}));
|
|
644
890
|
await writeFileIfMissing(path.join(paths.skillsBundlesDir, config.layout === 'en-US' ? 'curation-en-us.md' : 'curadoria-pt-br.md'), buildCuratedBundlesMarkdown());
|
|
891
|
+
// EPIC-0072 wave 1 (FEAT-0284) — emit a schema-validated YAML form alongside
|
|
892
|
+
// the Markdown view so consumers can read typed data without scraping headings.
|
|
893
|
+
// The .md remains the human-readable view; the .yaml is the structured contract.
|
|
894
|
+
const curationLayout = config.layout === 'pt-BR' ? 'pt-BR' : 'en-US';
|
|
895
|
+
await writeFileIfMissing(path.join(paths.skillsBundlesDir, config.layout === 'en-US' ? 'curation-en-us.yaml' : 'curadoria-pt-br.yaml'), stringifyYaml(buildCuratedBundlesCurationData(curationLayout)));
|
|
645
896
|
for (const [skillId, definition] of Object.entries(BUILT_IN_SDD_SKILLS)) {
|
|
646
897
|
await materializeBuiltInSkill(paths, config, skillId, definition);
|
|
647
898
|
}
|
|
@@ -707,19 +958,7 @@ export async function loadStateSnapshot(paths, config) {
|
|
|
707
958
|
skillRouting = SkillRoutingStateSchema.parse(await readYaml(paths.stateFiles.skillRouting));
|
|
708
959
|
}
|
|
709
960
|
catch (e) {
|
|
710
|
-
skillRouting =
|
|
711
|
-
version: 1,
|
|
712
|
-
default_skills: ['architecture', 'concise-planning', 'context-window-management'],
|
|
713
|
-
routes: [
|
|
714
|
-
{ domain: 'backend', skills: ['architecture', 'api-design-principles'], bundles: [] },
|
|
715
|
-
{ domain: 'api', skills: ['api-design-principles', 'api-clean-flask-langgraph'], bundles: ['python-agentic-backend'] },
|
|
716
|
-
{ domain: 'python', skills: ['api-clean-flask-langgraph', 'architecture'], bundles: ['python-agentic-backend'] },
|
|
717
|
-
{ domain: 'flask', skills: ['api-clean-flask-langgraph'], bundles: ['python-agentic-backend'] },
|
|
718
|
-
{ domain: 'nestjs', skills: ['devtrack-api', 'architecture'], bundles: ['architecture-backend'] },
|
|
719
|
-
{ domain: 'typeorm', skills: ['devtrack-api', 'database-design'], bundles: ['architecture-backend'] },
|
|
720
|
-
{ domain: 'devtrack', skills: ['devtrack-api'], bundles: ['architecture-backend'] }
|
|
721
|
-
]
|
|
722
|
-
};
|
|
961
|
+
skillRouting = buildDefaultSkillRoutingState();
|
|
723
962
|
}
|
|
724
963
|
let frontendGaps;
|
|
725
964
|
let frontendMap;
|
|
@@ -814,6 +1053,14 @@ export function defaultNamingContractState() {
|
|
|
814
1053
|
'.sdd/discovery/**',
|
|
815
1054
|
'test/core/sdd/fixtures/**',
|
|
816
1055
|
];
|
|
1056
|
+
const legacyPrefix = 'open';
|
|
1057
|
+
const legacySpec = `${legacyPrefix}spec`;
|
|
1058
|
+
const legacySdd = `${legacyPrefix}sdd`;
|
|
1059
|
+
const legacyTitlePrefix = `${legacyPrefix[0].toUpperCase()}${legacyPrefix.slice(1)}`;
|
|
1060
|
+
const legacySpecTitle = `${legacyTitlePrefix}Spec`;
|
|
1061
|
+
const legacySddTitle = `${legacyTitlePrefix}SDD`;
|
|
1062
|
+
const legacySpecCamel = `${legacyPrefix}Spec`;
|
|
1063
|
+
const legacySddCamel = `${legacyPrefix}SDD`;
|
|
817
1064
|
return {
|
|
818
1065
|
version: 1,
|
|
819
1066
|
product_name: 'CodeSDD',
|
|
@@ -830,13 +1077,13 @@ export function defaultNamingContractState() {
|
|
|
830
1077
|
package_name: '@devtrack-solution/codesdd',
|
|
831
1078
|
},
|
|
832
1079
|
forbidden_terms: [
|
|
833
|
-
{ term:
|
|
834
|
-
{ term:
|
|
835
|
-
{ term:
|
|
1080
|
+
{ term: legacySpec, scope: 'all', severity: 'warning', allowlist_paths: [...sharedAllowlist] },
|
|
1081
|
+
{ term: legacySpecTitle, scope: 'all', severity: 'warning', allowlist_paths: [...sharedAllowlist] },
|
|
1082
|
+
{ term: legacySpecCamel, scope: 'all', severity: 'warning', allowlist_paths: [...sharedAllowlist] },
|
|
836
1083
|
],
|
|
837
1084
|
allowlist: [
|
|
838
1085
|
{ path_pattern: '.sdd/archived/**', reason: 'Archived SDD artifacts retain legacy terminology', owner: 'sdd-core' },
|
|
839
|
-
{ path_pattern: '.sdd/sources/legacy/spec-corpus/**', reason: '
|
|
1086
|
+
{ path_pattern: '.sdd/sources/legacy/spec-corpus/**', reason: 'Imported legacy corpus sources', owner: 'sdd-core' },
|
|
840
1087
|
{ path_pattern: 'node_modules/**', reason: 'Third-party dependencies', owner: 'sdd-core' },
|
|
841
1088
|
{ path_pattern: 'dist/**', reason: 'Build output', owner: 'sdd-core' },
|
|
842
1089
|
{ path_pattern: 'coverage/**', reason: 'Test coverage artifacts', owner: 'sdd-core' },
|
|
@@ -844,7 +1091,7 @@ export function defaultNamingContractState() {
|
|
|
844
1091
|
],
|
|
845
1092
|
rename_rules: [
|
|
846
1093
|
{
|
|
847
|
-
from:
|
|
1094
|
+
from: legacySddTitle,
|
|
848
1095
|
to: 'CodeSDD',
|
|
849
1096
|
scope: 'all',
|
|
850
1097
|
phase: 'identity-introduction',
|
|
@@ -853,7 +1100,7 @@ export function defaultNamingContractState() {
|
|
|
853
1100
|
path_globs: ['README.md', 'docs/**', 'src/**', 'test/**', '.sdd/state/**'],
|
|
854
1101
|
},
|
|
855
1102
|
{
|
|
856
|
-
from:
|
|
1103
|
+
from: legacySdd,
|
|
857
1104
|
to: 'codesdd',
|
|
858
1105
|
scope: 'all',
|
|
859
1106
|
phase: 'identity-introduction',
|
|
@@ -862,7 +1109,7 @@ export function defaultNamingContractState() {
|
|
|
862
1109
|
path_globs: ['package.json', 'bin/**', 'src/**', 'test/**', 'docs/**'],
|
|
863
1110
|
},
|
|
864
1111
|
{
|
|
865
|
-
from:
|
|
1112
|
+
from: `@devtrack-solution/${legacySdd}-cli`,
|
|
866
1113
|
to: '@devtrack-solution/codesdd',
|
|
867
1114
|
scope: 'all',
|
|
868
1115
|
phase: 'package-identity',
|
|
@@ -874,7 +1121,7 @@ export function defaultNamingContractState() {
|
|
|
874
1121
|
zero_residue_gate: {
|
|
875
1122
|
enabled: true,
|
|
876
1123
|
enforcement: 'warning',
|
|
877
|
-
terms: [
|
|
1124
|
+
terms: [legacySpec, legacySpecTitle, legacySpecCamel, legacySdd, legacySddTitle, legacySddCamel],
|
|
878
1125
|
allowlist_paths: [...sharedAllowlist],
|
|
879
1126
|
removal_phase: 'compatibility-shutdown',
|
|
880
1127
|
},
|
|
@@ -7,7 +7,7 @@ export function createSddStores(paths) {
|
|
|
7
7
|
discoveryIndex: new YamlFileAdapter(stateFiles.discoveryIndex, DiscoveryIndexStateSchema, () => ({ version: 1, counters: { INS: 0, DEB: 0, RAD: 0, EPIC: 0, FEAT: 0, FGAP: 0, TD: 0 }, records: [] })),
|
|
8
8
|
backlog: new YamlFileAdapter(stateFiles.backlog, BacklogStateSchema, () => ({ version: 1, items: [] })),
|
|
9
9
|
techDebt: new YamlFileAdapter(stateFiles.techDebt, TechDebtStateSchema, () => ({ version: 1, items: [] })),
|
|
10
|
-
finalizeQueue: new YamlFileAdapter(stateFiles.finalizeQueue, FinalizeQueueStateSchema, () => ({ version: 1, items: [] })),
|
|
10
|
+
finalizeQueue: new YamlFileAdapter(stateFiles.finalizeQueue, FinalizeQueueStateSchema, () => ({ version: 1, items: [], history: [] })),
|
|
11
11
|
skillCatalog: new YamlFileAdapter(stateFiles.skillCatalog, SkillCatalogStateSchema, () => ({ version: 1, skills: [], bundles: [] })),
|
|
12
12
|
unblockEvents: new YamlFileAdapter(stateFiles.unblockEvents, UnblockEventsStateSchema, () => ({ version: 1, events: [] })),
|
|
13
13
|
transitionLog: new YamlFileAdapter(stateFiles.transitionLog, TransitionLogStateSchema, () => ({ version: 1, events: [] })),
|
|
@@ -34,7 +34,7 @@ export function createInMemorySddStores() {
|
|
|
34
34
|
discoveryIndex: new InMemoryAdapter(DiscoveryIndexStateSchema, () => ({ version: 1, counters: { INS: 0, DEB: 0, RAD: 0, EPIC: 0, FEAT: 0, FGAP: 0, TD: 0 }, records: [] })),
|
|
35
35
|
backlog: new InMemoryAdapter(BacklogStateSchema, () => ({ version: 1, items: [] })),
|
|
36
36
|
techDebt: new InMemoryAdapter(TechDebtStateSchema, () => ({ version: 1, items: [] })),
|
|
37
|
-
finalizeQueue: new InMemoryAdapter(FinalizeQueueStateSchema, () => ({ version: 1, items: [] })),
|
|
37
|
+
finalizeQueue: new InMemoryAdapter(FinalizeQueueStateSchema, () => ({ version: 1, items: [], history: [] })),
|
|
38
38
|
skillCatalog: new InMemoryAdapter(SkillCatalogStateSchema, () => ({ version: 1, skills: [], bundles: [] })),
|
|
39
39
|
unblockEvents: new InMemoryAdapter(UnblockEventsStateSchema, () => ({ version: 1, events: [] })),
|
|
40
40
|
transitionLog: new InMemoryAdapter(TransitionLogStateSchema, () => ({ version: 1, events: [] })),
|