@devtrack-solution/codesdd 1.2.2 → 1.2.3
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 +160 -28
- package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +1 -1
- 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 +317 -0
- package/.sdd/skills/curated/devtrack-api/references/field-validation-protocol.md +95 -0
- package/.sdd/skills/curated/devtrack-api/references/foundation-layout.md +295 -0
- package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +4 -4
- package/.sdd/skills/curated/devtrack-api/references/imports-lint.md +4 -0
- package/.sdd/skills/curated/devtrack-api/references/testing-validation.md +2 -2
- package/LICENSE +1 -1
- package/README.md +243 -51
- package/bin/codesdd.js +3 -2
- 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 +159 -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 +147 -16
- package/dist/commands/sdd/plugin.d.ts +3 -0
- package/dist/commands/sdd/plugin.js +153 -0
- package/dist/commands/sdd/shared.js +2 -23
- package/dist/commands/sdd/skills.js +7 -0
- package/dist/commands/sdd.js +69 -12
- 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 +10 -1
- package/dist/core/cli-command-quality.d.ts +27 -0
- package/dist/core/cli-command-quality.js +171 -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 +155 -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 +3 -1
- package/dist/core/config-schema.js +26 -1
- package/dist/core/config.d.ts +3 -3
- package/dist/core/config.js +4 -4
- package/dist/core/global-config.d.ts +41 -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/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 +42 -0
- package/dist/core/sdd/check.js +22 -22
- 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 +38 -0
- package/dist/core/sdd/coordination/coordination-adapters.js +139 -1
- package/dist/core/sdd/deepagent-contracts.d.ts +276 -0
- package/dist/core/sdd/deepagent-contracts.js +173 -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 +2 -2
- package/dist/core/sdd/default-bootstrap-files.js +36 -2
- package/dist/core/sdd/default-skills.d.ts +30 -0
- package/dist/core/sdd/default-skills.js +181 -5
- package/dist/core/sdd/devtrack-api-appliance.d.ts +84 -0
- package/dist/core/sdd/devtrack-api-appliance.js +257 -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 +33 -5
- 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/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/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/json-schema.js +100 -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 +431 -43
- package/dist/core/sdd/lenses.d.ts +1 -0
- package/dist/core/sdd/lenses.js +29 -1
- package/dist/core/sdd/migrate-workspace.js +56 -2
- package/dist/core/sdd/migrate.d.ts +1 -1
- package/dist/core/sdd/migrate.js +36 -2
- package/dist/core/sdd/package-structure-gate.d.ts +83 -0
- package/dist/core/sdd/package-structure-gate.js +362 -0
- package/dist/core/sdd/parallel-feat-automation.d.ts +152 -0
- package/dist/core/sdd/parallel-feat-automation.js +212 -0
- package/dist/core/sdd/plugin-broker.d.ts +558 -0
- package/dist/core/sdd/plugin-broker.js +482 -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 +109 -0
- package/dist/core/sdd/plugin-cli.js +198 -0
- package/dist/core/sdd/plugin-evidence.d.ts +275 -0
- package/dist/core/sdd/plugin-evidence.js +307 -0
- package/dist/core/sdd/plugin-manifest.d.ts +164 -0
- package/dist/core/sdd/plugin-manifest.js +215 -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 +311 -0
- package/dist/core/sdd/plugin-registry.js +138 -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 +547 -0
- package/dist/core/sdd/quality-validation.js +239 -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/sanitize.d.ts +30 -1
- package/dist/core/sdd/sanitize.js +23 -23
- package/dist/core/sdd/services/agent-run.service.d.ts +65 -0
- package/dist/core/sdd/services/agent-run.service.js +189 -0
- package/dist/core/sdd/services/breakdown.service.js +2 -1
- package/dist/core/sdd/services/context.service.js +18 -16
- 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 +80 -0
- package/dist/core/sdd/services/finalize.service.js +323 -24
- package/dist/core/sdd/services/frontend-gap.service.js +22 -7
- 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/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 +22 -0
- package/dist/core/sdd/state.js +66 -41
- package/dist/core/sdd/structural-health.d.ts +42 -42
- package/dist/core/sdd/types.d.ts +33 -7
- package/dist/core/sdd/types.js +17 -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/workspace-schemas.d.ts +285 -14
- package/dist/core/sdd/workspace-schemas.js +148 -0
- 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/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 +27 -17
- package/schemas/sdd/1-spec.schema.json +1 -1
- package/schemas/sdd/2-plan.schema.json +73 -1
- 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 +442 -2
- 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/backlog-projection-plan.schema.json +180 -0
- package/schemas/sdd/backlog-provider-contract.schema.json +260 -0
- package/schemas/sdd/codesdd-plugin.schema.json +474 -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 +321 -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 +215 -0
- package/schemas/sdd/parallel-feat-automation-request.schema.json +109 -0
- package/schemas/sdd/plugin-artifact-manifest.schema.json +150 -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 +569 -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 +558 -0
- package/schemas/sdd/plugin-rollback-manifest.schema.json +87 -0
- package/schemas/sdd/plugin-runtime-invocation-plan.schema.json +845 -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 +1228 -0
- package/schemas/sdd/quality-run.schema.json +197 -0
- package/schemas/sdd/quality-scenario.schema.json +252 -0
- package/schemas/sdd/workspace-catalog.schema.json +9841 -22
- 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,358 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { inferNetworkDomainsForModel, requiredCredentialEnvForModel, resolveDeepAgentsModelProvider, } from './model-provider.js';
|
|
3
|
+
const DEFAULT_ENV_ALLOWLIST = [
|
|
4
|
+
'CI',
|
|
5
|
+
'CODESDD_AGENT_PROVIDER',
|
|
6
|
+
'CODESDD_DEEPAGENTS_RUNTIME',
|
|
7
|
+
'CODESDD_DEEPAGENTS_DEFAULT_MODE',
|
|
8
|
+
];
|
|
9
|
+
const SECRET_ENV_TOKENS = ['KEY', 'SECRET', 'TOKEN', 'PASSWORD', 'CREDENTIAL', 'PRIVATE', 'AUTH'];
|
|
10
|
+
const HIGH_RISK_OPERATIONS = new Set([
|
|
11
|
+
'write',
|
|
12
|
+
'execute',
|
|
13
|
+
'network',
|
|
14
|
+
'plugin-apply',
|
|
15
|
+
'finalize',
|
|
16
|
+
'dependency-change',
|
|
17
|
+
'process-spawn',
|
|
18
|
+
]);
|
|
19
|
+
export function createDeepAgentsPolicySnapshot(env = process.env) {
|
|
20
|
+
const envAllowlist = normalizeEnvNames([
|
|
21
|
+
...DEFAULT_ENV_ALLOWLIST,
|
|
22
|
+
...parseCsv(env.CODESDD_AGENT_ENV_ALLOWLIST),
|
|
23
|
+
]);
|
|
24
|
+
const allowedDomains = normalizeDomains(parseCsv(env.CODESDD_AGENT_ALLOWED_DOMAINS));
|
|
25
|
+
const snapshot = {
|
|
26
|
+
provider: (env.CODESDD_AGENT_PROVIDER || 'deepagents').trim() || 'deepagents',
|
|
27
|
+
enabled: parseBooleanFlag(env.CODESDD_DEEPAGENTS_ENABLED, false),
|
|
28
|
+
runtime: parseRuntimeMode(env.CODESDD_DEEPAGENTS_RUNTIME),
|
|
29
|
+
defaultMode: parseDefaultMode(env.CODESDD_DEEPAGENTS_DEFAULT_MODE),
|
|
30
|
+
requireHitl: parseBooleanFlag(env.CODESDD_DEEPAGENTS_REQUIRE_HITL, true),
|
|
31
|
+
networkPolicy: parseNetworkPolicy(env.CODESDD_AGENT_NETWORK_POLICY),
|
|
32
|
+
envAllowlist,
|
|
33
|
+
allowedDomains,
|
|
34
|
+
writeScope: parseCsv(env.CODESDD_AGENT_WRITE_SCOPE),
|
|
35
|
+
model: safeTrim(env.CODESDD_DEEPAGENTS_MODEL),
|
|
36
|
+
plannerModel: safeTrim(env.CODESDD_DEEPAGENTS_PLANNER_MODEL),
|
|
37
|
+
reviewerModel: safeTrim(env.CODESDD_DEEPAGENTS_REVIEWER_MODEL),
|
|
38
|
+
coderModel: safeTrim(env.CODESDD_DEEPAGENTS_CODER_MODEL),
|
|
39
|
+
maxIterations: parsePositiveInteger(env.CODESDD_DEEPAGENTS_MAX_ITERATIONS),
|
|
40
|
+
maxSubagents: parsePositiveInteger(env.CODESDD_DEEPAGENTS_MAX_SUBAGENTS),
|
|
41
|
+
maxParallel: parsePositiveInteger(env.CODESDD_DEEPAGENTS_MAX_PARALLEL),
|
|
42
|
+
sandboxRoot: safeTrim(env.CODESDD_DEEPAGENTS_SANDBOX_ROOT),
|
|
43
|
+
worktreeRoot: safeTrim(env.CODESDD_AGENT_WORKTREE_ROOT),
|
|
44
|
+
};
|
|
45
|
+
return {
|
|
46
|
+
...snapshot,
|
|
47
|
+
configFingerprint: buildDeepAgentsConfigFingerprint(snapshot),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export function evaluateDeepAgentsRuntimeReadiness(snapshot, env = process.env) {
|
|
51
|
+
if (!snapshot.enabled || snapshot.runtime === 'disabled') {
|
|
52
|
+
return {
|
|
53
|
+
status: 'disabled',
|
|
54
|
+
runtime: snapshot.runtime,
|
|
55
|
+
model: snapshot.model,
|
|
56
|
+
credentialPresent: false,
|
|
57
|
+
reasons: ['DeepAgents runtime is disabled by policy.'],
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
if (snapshot.provider.trim().toLowerCase() !== 'deepagents') {
|
|
61
|
+
return {
|
|
62
|
+
status: 'blocked',
|
|
63
|
+
runtime: snapshot.runtime,
|
|
64
|
+
model: snapshot.model,
|
|
65
|
+
credentialPresent: false,
|
|
66
|
+
reasons: ['CODESDD_AGENT_PROVIDER must be deepagents when DeepAgents runtime is enabled.'],
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (snapshot.runtime === 'fake') {
|
|
70
|
+
return {
|
|
71
|
+
status: 'ready',
|
|
72
|
+
runtime: snapshot.runtime,
|
|
73
|
+
model: snapshot.model,
|
|
74
|
+
credentialPresent: false,
|
|
75
|
+
reasons: [],
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const reasons = [];
|
|
79
|
+
if (!snapshot.model) {
|
|
80
|
+
reasons.push('CODESDD_DEEPAGENTS_MODEL is required when runtime is deepagents-js.');
|
|
81
|
+
}
|
|
82
|
+
const providerResolution = resolveDeepAgentsModelProvider(snapshot.model, env);
|
|
83
|
+
reasons.push(...providerResolution.reasons);
|
|
84
|
+
const credentialEnv = providerResolution.credential.credentialEnv;
|
|
85
|
+
const credentialPresent = providerResolution.credential.credentialPresent;
|
|
86
|
+
return {
|
|
87
|
+
status: reasons.length > 0 ? 'blocked' : 'ready',
|
|
88
|
+
runtime: snapshot.runtime,
|
|
89
|
+
model: snapshot.model,
|
|
90
|
+
provider: providerResolution.profile?.provider ?? providerResolution.modelRef?.provider,
|
|
91
|
+
credentialEnv,
|
|
92
|
+
credentialPresent,
|
|
93
|
+
endpointEnv: providerResolution.endpoint.endpointEnv,
|
|
94
|
+
endpointPresent: providerResolution.endpoint.endpointPresent,
|
|
95
|
+
reasons,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export function buildDeepAgentsOperationalPreflight(snapshot, env = process.env) {
|
|
99
|
+
const readiness = evaluateDeepAgentsRuntimeReadiness(snapshot, env);
|
|
100
|
+
const checks = [];
|
|
101
|
+
const reasons = [...readiness.reasons];
|
|
102
|
+
const requiredEnv = new Set();
|
|
103
|
+
const missingEnv = new Set();
|
|
104
|
+
const inferredDomains = inferNetworkDomainsForModel(snapshot.model, env);
|
|
105
|
+
const providerOk = snapshot.provider.trim().toLowerCase() === 'deepagents';
|
|
106
|
+
checks.push({
|
|
107
|
+
id: 'provider',
|
|
108
|
+
status: readiness.status === 'disabled' ? 'skip' : providerOk ? 'pass' : 'fail',
|
|
109
|
+
message: providerOk
|
|
110
|
+
? 'Provider deepagents configurado.'
|
|
111
|
+
: 'CODESDD_AGENT_PROVIDER deve ser deepagents quando runtime estiver habilitado.',
|
|
112
|
+
});
|
|
113
|
+
checks.push({
|
|
114
|
+
id: 'runtime',
|
|
115
|
+
status: readiness.status === 'disabled'
|
|
116
|
+
? 'skip'
|
|
117
|
+
: snapshot.runtime === 'fake' || snapshot.runtime === 'deepagents-js'
|
|
118
|
+
? 'pass'
|
|
119
|
+
: 'fail',
|
|
120
|
+
message: readiness.status === 'disabled'
|
|
121
|
+
? 'Runtime DeepAgents desabilitado.'
|
|
122
|
+
: `Runtime configurado: ${snapshot.runtime}.`,
|
|
123
|
+
});
|
|
124
|
+
if (readiness.status !== 'disabled' && snapshot.runtime === 'deepagents-js') {
|
|
125
|
+
checks.push({
|
|
126
|
+
id: 'model',
|
|
127
|
+
status: snapshot.model ? 'pass' : 'fail',
|
|
128
|
+
message: snapshot.model
|
|
129
|
+
? `Modelo selecionado: ${snapshot.model}.`
|
|
130
|
+
: 'CODESDD_DEEPAGENTS_MODEL e obrigatorio para runtime deepagents-js.',
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
checks.push({
|
|
135
|
+
id: 'model',
|
|
136
|
+
status: 'skip',
|
|
137
|
+
message: 'Modelo nao obrigatorio para runtime desabilitado/fake.',
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
if (readiness.credentialEnv) {
|
|
141
|
+
requiredEnv.add(readiness.credentialEnv);
|
|
142
|
+
if (!readiness.credentialPresent) {
|
|
143
|
+
missingEnv.add(readiness.credentialEnv);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
checks.push({
|
|
147
|
+
id: 'credential',
|
|
148
|
+
status: readiness.status === 'disabled'
|
|
149
|
+
? 'skip'
|
|
150
|
+
: readiness.credentialEnv
|
|
151
|
+
? readiness.credentialPresent
|
|
152
|
+
? 'pass'
|
|
153
|
+
: 'fail'
|
|
154
|
+
: 'skip',
|
|
155
|
+
message: readiness.credentialEnv
|
|
156
|
+
? readiness.credentialPresent
|
|
157
|
+
? `${readiness.credentialEnv} presente.`
|
|
158
|
+
: `${readiness.credentialEnv} ausente.`
|
|
159
|
+
: 'Credencial nao requerida para o perfil atual.',
|
|
160
|
+
});
|
|
161
|
+
if (readiness.endpointEnv) {
|
|
162
|
+
requiredEnv.add(readiness.endpointEnv);
|
|
163
|
+
if (!readiness.endpointPresent) {
|
|
164
|
+
missingEnv.add(readiness.endpointEnv);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
checks.push({
|
|
168
|
+
id: 'endpoint',
|
|
169
|
+
status: readiness.status === 'disabled'
|
|
170
|
+
? 'skip'
|
|
171
|
+
: readiness.endpointEnv
|
|
172
|
+
? readiness.endpointPresent
|
|
173
|
+
? 'pass'
|
|
174
|
+
: 'fail'
|
|
175
|
+
: 'skip',
|
|
176
|
+
message: readiness.endpointEnv
|
|
177
|
+
? readiness.endpointPresent
|
|
178
|
+
? `${readiness.endpointEnv} presente.`
|
|
179
|
+
: `${readiness.endpointEnv} ausente.`
|
|
180
|
+
: 'Endpoint nao obrigatorio para o perfil atual.',
|
|
181
|
+
});
|
|
182
|
+
const networkDecision = evaluateNetworkAccess(inferredDomains, snapshot.networkPolicy, snapshot.allowedDomains);
|
|
183
|
+
if (networkDecision.blocked.length > 0) {
|
|
184
|
+
reasons.push(`Network policy ${snapshot.networkPolicy} bloqueia dominios inferidos: ${networkDecision.blocked.join(', ')}.`);
|
|
185
|
+
}
|
|
186
|
+
checks.push({
|
|
187
|
+
id: 'network',
|
|
188
|
+
status: readiness.status === 'disabled'
|
|
189
|
+
? 'skip'
|
|
190
|
+
: networkDecision.blocked.length === 0
|
|
191
|
+
? 'pass'
|
|
192
|
+
: 'fail',
|
|
193
|
+
message: networkDecision.blocked.length === 0
|
|
194
|
+
? 'Politica de rede cobre os dominios inferidos do provider.'
|
|
195
|
+
: `Dominios bloqueados: ${networkDecision.blocked.join(', ')}.`,
|
|
196
|
+
});
|
|
197
|
+
const status = readiness.status === 'disabled'
|
|
198
|
+
? 'disabled'
|
|
199
|
+
: reasons.length > 0
|
|
200
|
+
? 'blocked'
|
|
201
|
+
: 'ready';
|
|
202
|
+
return {
|
|
203
|
+
status,
|
|
204
|
+
provider: snapshot.provider,
|
|
205
|
+
runtime: snapshot.runtime,
|
|
206
|
+
model: snapshot.model,
|
|
207
|
+
reasons,
|
|
208
|
+
checks,
|
|
209
|
+
required_env: Array.from(requiredEnv).sort(),
|
|
210
|
+
missing_env: Array.from(missingEnv).sort(),
|
|
211
|
+
allowed_domains: [...snapshot.allowedDomains],
|
|
212
|
+
inferred_domains: inferredDomains,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
export function evaluateEnvPassThrough(requestedEnv, allowlist) {
|
|
216
|
+
const allowedSet = new Set(normalizeEnvNames(allowlist));
|
|
217
|
+
const normalizedRequested = normalizeEnvNames(requestedEnv);
|
|
218
|
+
const allowed = [];
|
|
219
|
+
const blocked = [];
|
|
220
|
+
for (const envName of normalizedRequested) {
|
|
221
|
+
if (isSecretEnvName(envName)) {
|
|
222
|
+
blocked.push({ env: envName, reason: 'SECRET_ENV_BLOCKED' });
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
if (!allowedSet.has(envName)) {
|
|
226
|
+
blocked.push({ env: envName, reason: 'ENV_NOT_ALLOWLISTED' });
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
allowed.push(envName);
|
|
230
|
+
}
|
|
231
|
+
return { allowed, blocked };
|
|
232
|
+
}
|
|
233
|
+
export function evaluateNetworkAccess(requestedDomains, policy, allowlist) {
|
|
234
|
+
const requested = normalizeDomains(requestedDomains);
|
|
235
|
+
const approved = normalizeDomains(allowlist);
|
|
236
|
+
if (requested.length === 0) {
|
|
237
|
+
return { allowed: [], blocked: [], policy };
|
|
238
|
+
}
|
|
239
|
+
if (policy === 'disabled') {
|
|
240
|
+
return { allowed: [], blocked: requested, policy };
|
|
241
|
+
}
|
|
242
|
+
if (policy === 'enabled') {
|
|
243
|
+
return { allowed: requested, blocked: [], policy };
|
|
244
|
+
}
|
|
245
|
+
const allowed = [];
|
|
246
|
+
const blocked = [];
|
|
247
|
+
for (const domain of requested) {
|
|
248
|
+
const approvedDomain = approved.some((candidate) => domain === candidate || domain.endsWith(`.${candidate}`));
|
|
249
|
+
if (approvedDomain) {
|
|
250
|
+
allowed.push(domain);
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
blocked.push(domain);
|
|
254
|
+
}
|
|
255
|
+
return { allowed, blocked, policy };
|
|
256
|
+
}
|
|
257
|
+
export function requiresHumanApproval(mode, operation, requireHitl) {
|
|
258
|
+
if (!requireHitl) {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
if (mode === 'apply-sandbox' || mode === 'apply-approved') {
|
|
262
|
+
return true;
|
|
263
|
+
}
|
|
264
|
+
return HIGH_RISK_OPERATIONS.has(operation);
|
|
265
|
+
}
|
|
266
|
+
export function buildDeepAgentsConfigFingerprint(config) {
|
|
267
|
+
const normalized = normalizeForFingerprint(config);
|
|
268
|
+
const payload = JSON.stringify(normalized);
|
|
269
|
+
return createHash('sha256').update(payload).digest('hex');
|
|
270
|
+
}
|
|
271
|
+
function parseDefaultMode(mode) {
|
|
272
|
+
const candidate = (mode || '').trim().toLowerCase();
|
|
273
|
+
switch (candidate) {
|
|
274
|
+
case 'read-only':
|
|
275
|
+
case 'plan':
|
|
276
|
+
case 'validate':
|
|
277
|
+
case 'apply-sandbox':
|
|
278
|
+
case 'apply-approved':
|
|
279
|
+
return candidate;
|
|
280
|
+
default:
|
|
281
|
+
return 'plan';
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
function parseRuntimeMode(value) {
|
|
285
|
+
const normalized = (value || '').trim().toLowerCase();
|
|
286
|
+
if (normalized === 'fake' || normalized === 'deepagents-js') {
|
|
287
|
+
return normalized;
|
|
288
|
+
}
|
|
289
|
+
return 'disabled';
|
|
290
|
+
}
|
|
291
|
+
function parseNetworkPolicy(value) {
|
|
292
|
+
const normalized = (value || '').trim().toLowerCase();
|
|
293
|
+
if (normalized === 'restricted' || normalized === 'enabled') {
|
|
294
|
+
return normalized;
|
|
295
|
+
}
|
|
296
|
+
return 'disabled';
|
|
297
|
+
}
|
|
298
|
+
function parseBooleanFlag(value, fallback) {
|
|
299
|
+
if (typeof value !== 'string') {
|
|
300
|
+
return fallback;
|
|
301
|
+
}
|
|
302
|
+
const normalized = value.trim().toLowerCase();
|
|
303
|
+
if (normalized === '1' || normalized === 'true' || normalized === 'yes') {
|
|
304
|
+
return true;
|
|
305
|
+
}
|
|
306
|
+
if (normalized === '0' || normalized === 'false' || normalized === 'no') {
|
|
307
|
+
return false;
|
|
308
|
+
}
|
|
309
|
+
return fallback;
|
|
310
|
+
}
|
|
311
|
+
function parseCsv(value) {
|
|
312
|
+
return (value || '')
|
|
313
|
+
.split(',')
|
|
314
|
+
.map((entry) => entry.trim())
|
|
315
|
+
.filter(Boolean);
|
|
316
|
+
}
|
|
317
|
+
function normalizeEnvNames(values) {
|
|
318
|
+
return Array.from(new Set(values.map((value) => value.trim().toUpperCase()).filter(Boolean))).sort();
|
|
319
|
+
}
|
|
320
|
+
function normalizeDomains(values) {
|
|
321
|
+
return Array.from(new Set(values
|
|
322
|
+
.map((value) => value.trim().toLowerCase())
|
|
323
|
+
.filter(Boolean)
|
|
324
|
+
.map((value) => value.replace(/^https?:\/\//u, '').replace(/\/.*$/u, '')))).sort();
|
|
325
|
+
}
|
|
326
|
+
function isSecretEnvName(value) {
|
|
327
|
+
return SECRET_ENV_TOKENS.some((token) => value.includes(token));
|
|
328
|
+
}
|
|
329
|
+
function safeTrim(value) {
|
|
330
|
+
const trimmed = (value || '').trim();
|
|
331
|
+
return trimmed || undefined;
|
|
332
|
+
}
|
|
333
|
+
function parsePositiveInteger(value) {
|
|
334
|
+
const trimmed = safeTrim(value);
|
|
335
|
+
if (!trimmed) {
|
|
336
|
+
return undefined;
|
|
337
|
+
}
|
|
338
|
+
const parsed = Number.parseInt(trimmed, 10);
|
|
339
|
+
return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : undefined;
|
|
340
|
+
}
|
|
341
|
+
function normalizeForFingerprint(value) {
|
|
342
|
+
if (Array.isArray(value)) {
|
|
343
|
+
return value.map((entry) => normalizeForFingerprint(entry));
|
|
344
|
+
}
|
|
345
|
+
if (!value || typeof value !== 'object') {
|
|
346
|
+
return value;
|
|
347
|
+
}
|
|
348
|
+
const entries = Object.entries(value)
|
|
349
|
+
.filter(([, entryValue]) => typeof entryValue !== 'undefined')
|
|
350
|
+
.sort(([left], [right]) => left.localeCompare(right));
|
|
351
|
+
const normalized = {};
|
|
352
|
+
for (const [key, entryValue] of entries) {
|
|
353
|
+
normalized[key] = normalizeForFingerprint(entryValue);
|
|
354
|
+
}
|
|
355
|
+
return normalized;
|
|
356
|
+
}
|
|
357
|
+
export { inferNetworkDomainsForModel, requiredCredentialEnvForModel, resolveDeepAgentsModelProvider };
|
|
358
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
const PLACEHOLDER_TOKENS = ['tbd', 'todo', 'pending', 'to define', 'na', 'n/a'];
|
|
2
|
+
const FUTURE_TENSE_COMPLETION_PATTERNS = [
|
|
3
|
+
/\bwill\s+(?:verify|validate|run|execute|confirm|check|ensure)\b/iu,
|
|
4
|
+
/\bwill\s+be\s+(?:verified|validated|run|executed|confirmed|checked|ensured)\b/iu,
|
|
5
|
+
];
|
|
6
|
+
function isPlaceholderValue(value) {
|
|
7
|
+
const normalized = value.trim().toLowerCase();
|
|
8
|
+
return PLACEHOLDER_TOKENS.some((token) => normalized === token || normalized.includes(`${token} `));
|
|
9
|
+
}
|
|
10
|
+
function hasPlaceholderValues(values) {
|
|
11
|
+
return values.some((value) => isPlaceholderValue(value));
|
|
12
|
+
}
|
|
13
|
+
function hasFutureTenseCompletionClaim(value) {
|
|
14
|
+
return FUTURE_TENSE_COMPLETION_PATTERNS.some((pattern) => pattern.test(value));
|
|
15
|
+
}
|
|
16
|
+
function collectFutureTenseCompletionClaims(document) {
|
|
17
|
+
const claims = [];
|
|
18
|
+
for (const entry of document.evidence_log) {
|
|
19
|
+
if (hasFutureTenseCompletionClaim(entry.result)) {
|
|
20
|
+
claims.push(`evidence_log entry "${entry.kind}" uses future-tense completion evidence`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
for (const entry of document.acceptance_matrix) {
|
|
24
|
+
if (hasFutureTenseCompletionClaim(entry.evidence)) {
|
|
25
|
+
claims.push(`acceptance_matrix criterion "${entry.criterion}" uses future-tense completion evidence`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
for (const row of document.requirement_validation_evidence_risk_matrix ?? []) {
|
|
29
|
+
if (hasPlaceholderValues(row.evidence_refs)) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
for (const evidenceRef of row.evidence_refs) {
|
|
33
|
+
if (hasFutureTenseCompletionClaim(evidenceRef)) {
|
|
34
|
+
claims.push(`${row.requirement_ref} evidence_refs use future-tense completion evidence`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return claims;
|
|
39
|
+
}
|
|
40
|
+
export function evaluateQualityWitnessMatrix(document) {
|
|
41
|
+
const matrix = document.requirement_validation_evidence_risk_matrix ?? [];
|
|
42
|
+
const reasons = [];
|
|
43
|
+
reasons.push(...collectFutureTenseCompletionClaims(document));
|
|
44
|
+
if (matrix.length === 0) {
|
|
45
|
+
reasons.push('requirement_validation_evidence_risk_matrix is required and cannot be empty before finalize');
|
|
46
|
+
return reasons;
|
|
47
|
+
}
|
|
48
|
+
const traceabilityRequirements = new Set((document.traceability?.requirements ?? [])
|
|
49
|
+
.map((entry) => (entry.requirement_ref || '').trim())
|
|
50
|
+
.filter(Boolean));
|
|
51
|
+
const matrixRequirements = new Set();
|
|
52
|
+
for (const row of matrix) {
|
|
53
|
+
const requirementRef = row.requirement_ref.trim();
|
|
54
|
+
if (!requirementRef) {
|
|
55
|
+
reasons.push('matrix row has empty requirement_ref');
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
matrixRequirements.add(requirementRef);
|
|
59
|
+
if (row.validation_refs.length === 0 || hasPlaceholderValues(row.validation_refs)) {
|
|
60
|
+
reasons.push(`${requirementRef} must declare concrete validation_refs`);
|
|
61
|
+
}
|
|
62
|
+
if (row.evidence_refs.length === 0 || hasPlaceholderValues(row.evidence_refs)) {
|
|
63
|
+
reasons.push(`${requirementRef} must declare concrete evidence_refs`);
|
|
64
|
+
}
|
|
65
|
+
const residualRisk = (row.residual_risk || '').trim();
|
|
66
|
+
if (residualRisk.length < 10 || isPlaceholderValue(residualRisk)) {
|
|
67
|
+
reasons.push(`${requirementRef} must declare a concrete residual_risk`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
for (const requirementRef of traceabilityRequirements) {
|
|
71
|
+
if (!matrixRequirements.has(requirementRef)) {
|
|
72
|
+
reasons.push(`traceability requirement ${requirementRef} is missing from requirement_validation_evidence_risk_matrix`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return Array.from(new Set(reasons));
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=quality-witness.js.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const reversaDomainSchema: z.ZodEnum<{
|
|
3
|
+
specs: "specs";
|
|
4
|
+
architecture: "architecture";
|
|
5
|
+
rules: "rules";
|
|
6
|
+
data: "data";
|
|
7
|
+
migration: "migration";
|
|
8
|
+
"legacy-analysis": "legacy-analysis";
|
|
9
|
+
screens: "screens";
|
|
10
|
+
microservices: "microservices";
|
|
11
|
+
"equivalence-validation": "equivalence-validation";
|
|
12
|
+
}>;
|
|
13
|
+
export declare const deepAgentsReversaRequestSchema: z.ZodObject<{
|
|
14
|
+
feature_ref: z.ZodString;
|
|
15
|
+
domains: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
16
|
+
specs: "specs";
|
|
17
|
+
architecture: "architecture";
|
|
18
|
+
rules: "rules";
|
|
19
|
+
data: "data";
|
|
20
|
+
migration: "migration";
|
|
21
|
+
"legacy-analysis": "legacy-analysis";
|
|
22
|
+
screens: "screens";
|
|
23
|
+
microservices: "microservices";
|
|
24
|
+
"equivalence-validation": "equivalence-validation";
|
|
25
|
+
}>>>;
|
|
26
|
+
legacy_sources: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
export declare const deepAgentsReversaPlanSchema: z.ZodObject<{
|
|
29
|
+
schema_version: z.ZodLiteral<1>;
|
|
30
|
+
feature_ref: z.ZodString;
|
|
31
|
+
runtime_provider: z.ZodLiteral<"deepagents">;
|
|
32
|
+
status: z.ZodEnum<{
|
|
33
|
+
ready: "ready";
|
|
34
|
+
blocked: "blocked";
|
|
35
|
+
}>;
|
|
36
|
+
fail_closed: z.ZodLiteral<true>;
|
|
37
|
+
reasons: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
38
|
+
canonical_authority: z.ZodObject<{
|
|
39
|
+
governance_system: z.ZodLiteral<"CodeSDD">;
|
|
40
|
+
canonical_state_path: z.ZodLiteral<".sdd/state/**">;
|
|
41
|
+
direct_state_mutation_allowed: z.ZodLiteral<false>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
legacy_input_policy: z.ZodObject<{
|
|
44
|
+
trust_model: z.ZodLiteral<"untrusted">;
|
|
45
|
+
source_attestation_required: z.ZodLiteral<true>;
|
|
46
|
+
accepted_sources: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
47
|
+
rejected_sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
48
|
+
path: z.ZodString;
|
|
49
|
+
reason: z.ZodString;
|
|
50
|
+
}, z.core.$strip>>>;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
routes: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
53
|
+
domain: z.ZodEnum<{
|
|
54
|
+
specs: "specs";
|
|
55
|
+
architecture: "architecture";
|
|
56
|
+
rules: "rules";
|
|
57
|
+
data: "data";
|
|
58
|
+
migration: "migration";
|
|
59
|
+
"legacy-analysis": "legacy-analysis";
|
|
60
|
+
screens: "screens";
|
|
61
|
+
microservices: "microservices";
|
|
62
|
+
"equivalence-validation": "equivalence-validation";
|
|
63
|
+
}>;
|
|
64
|
+
subagent_id: z.ZodString;
|
|
65
|
+
skill_ref: z.ZodString;
|
|
66
|
+
legacy_input_refs: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
67
|
+
evidence_refs: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
68
|
+
quality_refs: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
69
|
+
}, z.core.$strip>>>;
|
|
70
|
+
}, z.core.$strip>;
|
|
71
|
+
export type ReversaDomain = z.infer<typeof reversaDomainSchema>;
|
|
72
|
+
export type DeepAgentsReversaPlanRequest = z.infer<typeof deepAgentsReversaRequestSchema>;
|
|
73
|
+
export type DeepAgentsReversaPlan = z.infer<typeof deepAgentsReversaPlanSchema>;
|
|
74
|
+
export declare function planDeepAgentsReversaSubagents(request: DeepAgentsReversaPlanRequest): DeepAgentsReversaPlan;
|
|
75
|
+
//# sourceMappingURL=reversa-subagents.d.ts.map
|