@planu/cli 4.13.0 → 5.0.0
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/CHANGELOG.md +64 -1
- package/LICENSE +55 -12
- package/README.md +33 -25
- package/dist/cli/commands/inspect.d.ts +4 -0
- package/dist/cli/commands/inspect.js +144 -0
- package/dist/cli/commands/install.d.ts +19 -12
- package/dist/cli/commands/install.js +148 -102
- package/dist/cli/commands/job.d.ts +3 -0
- package/dist/cli/commands/job.js +120 -0
- package/dist/cli/commands/offline.d.ts +15 -0
- package/dist/cli/commands/offline.js +132 -0
- package/dist/cli/commands/serve.js +4 -0
- package/dist/cli/commands/spec.js +1 -1
- package/dist/cli/commands/storage.d.ts +3 -0
- package/dist/cli/commands/storage.js +102 -0
- package/dist/cli/commands/uninstall.d.ts +10 -0
- package/dist/cli/commands/uninstall.js +93 -7
- package/dist/cli/commands/validate.js +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/router.js +9 -3
- package/dist/config/crash-shield-framework-rules.json +93 -0
- package/dist/config/environment-schema.json +147 -0
- package/dist/config/hardcode-exceptions.json +4 -0
- package/dist/config/native-release-public-key.pem +3 -0
- package/dist/config/native-targets.json +87 -0
- package/dist/config/official-sdd-tools.d.ts +4 -0
- package/dist/config/official-sdd-tools.js +35 -0
- package/dist/config/product-public.d.ts +225 -0
- package/dist/config/product-public.js +147 -0
- package/dist/config/product-public.json +283 -0
- package/dist/config/registries/hosts/codex.json +20 -363
- package/dist/config/release-compatibility.json +13 -0
- package/dist/config/release-policy.json +108 -0
- package/dist/config/runtime-policy.json +55 -0
- package/dist/config/skill-templates/planu-resume-work.md +2 -2
- package/dist/config/skill-templates/planu-validate.md +7 -4
- package/dist/config/subagent-templates/planu-spec-implementer.md +7 -3
- package/dist/config/subagent-templates/planu-validator.md +10 -5
- package/dist/config/technology-registry.json +120 -0
- package/dist/config/version.js +7 -8
- package/dist/core/index.d.ts +1 -1
- package/dist/core/spec-validator.d.ts +4 -4
- package/dist/core/spec-validator.js +1 -1
- package/dist/engine/abortable-process-runner.d.ts +20 -2
- package/dist/engine/abortable-process-runner.js +267 -67
- package/dist/engine/advanced-testing/accessibility-checker.js +12 -14
- package/dist/engine/advanced-testing/mutation-advisor.js +3 -4
- package/dist/engine/advanced-testing/property-based.js +2 -3
- package/dist/engine/advanced-testing/test-data-advisor.js +2 -3
- package/dist/engine/agent-generator.js +2 -1
- package/dist/engine/agent-handoff-store.js +2 -1
- package/dist/engine/agent-prompt-generator.js +7 -5
- package/dist/engine/agent-telemetry.js +2 -1
- package/dist/engine/ai-integration/gemini/extensions-advisor.js +41 -9
- package/dist/engine/ambiguity-detector.js +12 -11
- package/dist/engine/ambiguity-scorer.js +4 -26
- package/dist/engine/analyzer/db-engine.js +2 -3
- package/dist/engine/analyzer/detectors.js +13 -14
- package/dist/engine/analyzer/env-setup.js +9 -10
- package/dist/engine/analyzer-env-scanner/env-example.js +7 -8
- package/dist/engine/api-spec-generator/graphql-parser.js +2 -2
- package/dist/engine/api-validation/graphql-schema-validator.js +2 -1
- package/dist/engine/api-validation/openapi-impl-validator.js +6 -7
- package/dist/engine/architecture-detector.js +10 -8
- package/dist/engine/auth/config.d.ts +1 -1
- package/dist/engine/auth/config.js +4 -3
- package/dist/engine/auth/scope-mapper.js +1 -7
- package/dist/engine/auto-updater/atomic-upgrade.d.ts +8 -0
- package/dist/engine/auto-updater/atomic-upgrade.js +381 -0
- package/dist/engine/auto-updater/config-detector.js +9 -3
- package/dist/engine/auto-updater/config-patcher.d.ts +0 -4
- package/dist/engine/auto-updater/config-patcher.js +10 -15
- package/dist/engine/auto-updater/index.d.ts +3 -1
- package/dist/engine/auto-updater/index.js +44 -30
- package/dist/engine/auto-updater/npm-registry.js +10 -2
- package/dist/engine/auto-updater/release-verifier.d.ts +3 -0
- package/dist/engine/auto-updater/release-verifier.js +112 -0
- package/dist/engine/auto-updater/upgrade-lock.d.ts +6 -0
- package/dist/engine/auto-updater/upgrade-lock.js +28 -0
- package/dist/engine/auto-updater/upgrade-trust-state.d.ts +7 -0
- package/dist/engine/auto-updater/upgrade-trust-state.js +59 -0
- package/dist/engine/autopilot/audit-logger.js +2 -5
- package/dist/engine/autopilot/state-updater.js +4 -4
- package/dist/engine/best-practices-library.js +2 -1
- package/dist/engine/browser-validator.js +2 -1
- package/dist/engine/build-tool-detector.js +3 -2
- package/dist/engine/cascade-hooks/hooks/review-enricher.hook.js +9 -6
- package/dist/engine/cascade-hooks/state-drift-detector.d.ts +3 -3
- package/dist/engine/cascade-hooks/state-drift-detector.js +1 -1
- package/dist/engine/ci-generator/context-builders.js +7 -5
- package/dist/engine/ci-generator/planu-config.js +1 -7
- package/dist/engine/ci-generator/stack-detector.js +0 -2
- package/dist/engine/ci-generator/yaml-builder.js +0 -2
- package/dist/engine/clarification-gate/gate.d.ts +3 -3
- package/dist/engine/claude-config-auditor/rules-auditor.js +4 -3
- package/dist/engine/code-scanner/layer-scanner.js +6 -22
- package/dist/engine/code-transforms/typescript/ast-utils.js +2 -3
- package/dist/engine/complexity-budget/trivial-detector.js +2 -1
- package/dist/engine/compliance-test-generator/index.js +7 -2
- package/dist/engine/compliance-test-generator/test-formatter.js +2 -2
- package/dist/engine/config-health/mcp-config-checker.js +2 -1
- package/dist/engine/config-health/ts-checker-scripts.js +4 -3
- package/dist/engine/config-health/ts-checker.js +3 -2
- package/dist/engine/convention-injector.js +5 -7
- package/dist/engine/convention-scanner/convention-parser.js +3 -2
- package/dist/engine/core-bridge-duplicate-blocks.d.ts +3 -0
- package/dist/engine/core-bridge-duplicate-blocks.js +57 -0
- package/dist/engine/core-bridge-gaps.d.ts +4 -0
- package/dist/engine/core-bridge-gaps.js +75 -0
- package/dist/engine/core-bridge.d.ts +10 -10
- package/dist/engine/core-bridge.js +196 -283
- package/dist/engine/cost-guardrails.d.ts +1 -1
- package/dist/engine/cost-guardrails.js +1 -1
- package/dist/engine/cost-tracking/ledger.js +2 -5
- package/dist/engine/coverage-gap-analyzer.js +10 -1
- package/dist/engine/crash-shield/detectors/framework-detector.d.ts +2 -0
- package/dist/engine/crash-shield/detectors/framework-detector.js +110 -192
- package/dist/engine/crash-shield/detectors/typescript-detector.js +2 -1
- package/dist/engine/criterion-identity.d.ts +1 -0
- package/dist/engine/criterion-identity.js +7 -0
- package/dist/engine/dashboard/data-loader.js +4 -8
- package/dist/engine/dashboard/templates-layout.js +0 -3
- package/dist/engine/dashboard/templates-project.js +1 -13
- package/dist/engine/data-projects-gc/gc-runner.d.ts +7 -0
- package/dist/engine/data-projects-gc/gc-runner.js +113 -3
- package/dist/engine/data-projects-gc/scanner.js +5 -1
- package/dist/engine/decision-store.js +11 -14
- package/dist/engine/deleter/core.js +5 -5
- package/dist/engine/dep-auditor/abandonment-data.js +2 -1
- package/dist/engine/dep-auditor/abandonment-registry.js +3 -1
- package/dist/engine/dep-auditor/cve-fetcher.js +3 -0
- package/dist/engine/dep-auditor/dep-duplicates-detector.js +36 -4
- package/dist/engine/dep-auditor/license-registry.js +2 -0
- package/dist/engine/dependency-evaluator.d.ts +14 -0
- package/dist/engine/dependency-evaluator.js +81 -0
- package/dist/engine/deploy/providers/fly.js +7 -7
- package/dist/engine/deploy/providers/netlify.js +7 -7
- package/dist/engine/deploy/providers/railway.js +10 -12
- package/dist/engine/deploy/providers/vercel.js +7 -9
- package/dist/engine/deprecation-scanner/pattern-loader.js +0 -2
- package/dist/engine/desktop-detector.js +2 -3
- package/dist/engine/detect-duplication.js +2 -1
- package/dist/engine/detectors/advanced-framework-detector/css-state-detector.js +2 -1
- package/dist/engine/detectors/advanced-framework-detector/legacy-detector.js +2 -3
- package/dist/engine/detectors/advanced-framework-detector/modern-detector.js +3 -4
- package/dist/engine/detectors/agent-framework-detector.js +3 -2
- package/dist/engine/detectors/ai-native-detector.js +4 -6
- package/dist/engine/detectors/cache-db-detector.js +4 -3
- package/dist/engine/detectors/cicd-detector.js +4 -3
- package/dist/engine/detectors/deployment-detector.js +11 -12
- package/dist/engine/detectors/frontend-perf-detector.js +14 -9
- package/dist/engine/detectors/library-detector-multilang-a.js +16 -3
- package/dist/engine/detectors/library-detector-node.js +14 -4
- package/dist/engine/detectors/library-detector-python.js +7 -1
- package/dist/engine/detectors/library-detector.js +0 -2
- package/dist/engine/detectors/llm-detector/provider-maps.js +3 -2
- package/dist/engine/detectors/mcp-candidate-detector.js +12 -16
- package/dist/engine/detectors/mfe-detector.js +6 -7
- package/dist/engine/detectors/monitoring-detector.js +4 -3
- package/dist/engine/detectors/otel-detector.js +3 -2
- package/dist/engine/detectors/otel-ecosystem-detectors.d.ts +2 -2
- package/dist/engine/detectors/otel-ecosystem-detectors.js +4 -3
- package/dist/engine/detectors/platform-specialty-detector.js +3 -5
- package/dist/engine/detectors/template-engine-detector.js +3 -4
- package/dist/engine/doc-generator/builders.js +2 -3
- package/dist/engine/doc-generator/mobile-distribution-guide.js +13 -17
- package/dist/engine/doc-generator/portal/dirty-flag-map.d.ts +2 -2
- package/dist/engine/doc-generator/portal/portal-regenerator.js +3 -47
- package/dist/engine/docs-site-generator/data-collector.d.ts +1 -1
- package/dist/engine/docs-site-generator/data-collector.js +7 -28
- package/dist/engine/docs-site-generator/tools-renderer.js +3 -10
- package/dist/engine/domain-detector.js +3 -6
- package/dist/engine/dynamic-knowledge/knowledge-cache.js +3 -4
- package/dist/engine/dynamic-knowledge/knowledge-merger.js +17 -2
- package/dist/engine/dynamic-knowledge/web-researcher.js +15 -14
- package/dist/engine/dynamic-migration-detector/manifest-readers-extended.js +0 -2
- package/dist/engine/e2e-test-generator.js +4 -3
- package/dist/engine/ecosystem-absorber/knowledge-cache.js +2 -1
- package/dist/engine/ecosystem-absorber/platform-crawler.js +2 -2
- package/dist/engine/escalator/retry-counter.js +2 -1
- package/dist/engine/evidence-gates/artifact-reader.d.ts +16 -1
- package/dist/engine/evidence-gates/artifact-reader.js +220 -23
- package/dist/engine/evidence-gates/lifecycle-gate.d.ts +2 -1
- package/dist/engine/evidence-gates/lifecycle-gate.js +58 -3
- package/dist/engine/evidence-gates/reconciliation-freshness.d.ts +11 -0
- package/dist/engine/evidence-gates/reconciliation-freshness.js +72 -0
- package/dist/engine/evidence-index/done-drift.d.ts +1 -1
- package/dist/engine/evidence-index/done-drift.js +40 -18
- package/dist/engine/execution/context.d.ts +19 -0
- package/dist/engine/execution/context.js +130 -0
- package/dist/engine/execution/deadline-io.d.ts +21 -0
- package/dist/engine/execution/deadline-io.js +45 -0
- package/dist/engine/execution/durable-job-heartbeat-runtime.d.ts +4 -0
- package/dist/engine/execution/durable-job-heartbeat-runtime.js +400 -0
- package/dist/engine/execution/job-executor.d.ts +16 -0
- package/dist/engine/execution/job-executor.js +140 -0
- package/dist/engine/execution/job-runtime.d.ts +108 -0
- package/dist/engine/execution/job-runtime.js +328 -0
- package/dist/engine/execution/native-relevance-scorer.d.ts +6 -0
- package/dist/engine/execution/native-relevance-scorer.js +64 -0
- package/dist/engine/execution/native-worker-dispatch.d.ts +3 -0
- package/dist/engine/execution/native-worker-dispatch.js +46 -0
- package/dist/engine/execution/native-worker-protocol.d.ts +6 -0
- package/dist/engine/execution/native-worker-protocol.js +33 -0
- package/dist/engine/execution/native-worker-runtime.d.ts +4 -0
- package/dist/engine/execution/native-worker-runtime.js +177 -0
- package/dist/engine/execution/native-worker-thread.d.ts +2 -0
- package/dist/engine/execution/native-worker-thread.js +66 -0
- package/dist/engine/execution/operation-journal.d.ts +66 -0
- package/dist/engine/execution/operation-journal.js +260 -0
- package/dist/engine/execution/outbox-worker.d.ts +31 -0
- package/dist/engine/execution/outbox-worker.js +192 -0
- package/dist/engine/execution/public-job-sanitizer.d.ts +4 -0
- package/dist/engine/execution/public-job-sanitizer.js +31 -0
- package/dist/engine/execution/validate-job-executor.d.ts +35 -0
- package/dist/engine/execution/validate-job-executor.js +805 -0
- package/dist/engine/execution/validate-job-payload.d.ts +5 -0
- package/dist/engine/execution/validate-job-payload.js +144 -0
- package/dist/engine/execution/validate-job-recovery.d.ts +4 -0
- package/dist/engine/execution/validate-job-recovery.js +47 -0
- package/dist/engine/execution/validate-worker-runtime.d.ts +10 -0
- package/dist/engine/execution/validate-worker-runtime.js +188 -0
- package/dist/engine/execution/validate-worker-thread.d.ts +2 -0
- package/dist/engine/execution/validate-worker-thread.js +64 -0
- package/dist/engine/execution-plan/desktop-distribution.js +3 -7
- package/dist/engine/execution-plan/mobile-distribution.js +4 -9
- package/dist/engine/execution-plan/phases.js +4 -5
- package/dist/engine/execution-plan/plan-utils.js +8 -5
- package/dist/engine/facilitate/context-loader.js +3 -9
- package/dist/engine/figma/code-connect-fetcher.js +9 -8
- package/dist/engine/filesystem-watcher/index.d.ts +3 -3
- package/dist/engine/filesystem-watcher/index.js +5 -5
- package/dist/engine/framework-detector.js +14 -15
- package/dist/engine/git/planu-autocommit.js +8 -7
- package/dist/engine/git/repository-probe.d.ts +3 -0
- package/dist/engine/git/repository-probe.js +13 -0
- package/dist/engine/global-rules-manager.js +2 -2
- package/dist/engine/handoff-artifacts/io.js +2 -3
- package/dist/engine/handoff-artifacts/schemas/red-tests-handoff.js +8 -1
- package/dist/engine/handoff-artifacts/schemas.d.ts +6 -1
- package/dist/engine/handoff-artifacts/schemas.js +38 -0
- package/dist/engine/handoff-packager.d.ts +19 -0
- package/dist/engine/handoff-packager.js +415 -13
- package/dist/engine/hook-generator/stack-hook-templates.js +4 -4
- package/dist/engine/hooks/config-loader.js +1 -1
- package/dist/engine/hooks/context-injector.js +4 -7
- package/dist/engine/hooks/effort-configurator.js +1 -1
- package/dist/engine/hooks/file-watcher.js +1 -14
- package/dist/engine/hooks-reconciler.js +6 -4
- package/dist/engine/impact-detector/test-break-predictor.js +3 -3
- package/dist/engine/impact-detector/tool-registration.js +1 -1
- package/dist/engine/implementation-contract/renderer.js +23 -8
- package/dist/engine/infrastructure/component-mapper.js +5 -7
- package/dist/engine/infrastructure/docker-compose-generator.js +8 -10
- package/dist/engine/infrastructure/index.js +6 -3
- package/dist/engine/infrastructure/kubernetes-generator.js +2 -2
- package/dist/engine/infrastructure/railway-generator.js +10 -8
- package/dist/engine/infrastructure/signal-detector.js +6 -8
- package/dist/engine/infrastructure/terraform-generator.js +6 -8
- package/dist/engine/legal-compliance/detector.js +3 -2
- package/dist/engine/lifecycle-reconciliation-io.d.ts +11 -0
- package/dist/engine/lifecycle-reconciliation-io.js +180 -0
- package/dist/engine/lifecycle-reconciliation.d.ts +16 -0
- package/dist/engine/lifecycle-reconciliation.js +406 -0
- package/dist/engine/local-first/storage-advisor.js +5 -6
- package/dist/engine/local-first/tool-classification.js +2 -0
- package/dist/engine/macos-keychain-native-port.d.ts +10 -0
- package/dist/engine/macos-keychain-native-port.js +38 -0
- package/dist/engine/marketplace-fetcher/cache.js +3 -1
- package/dist/engine/mcp-config/mcp-config-writer.d.ts +2 -2
- package/dist/engine/mcp-config/mcp-config-writer.js +10 -8
- package/dist/engine/migration/db-migrator.js +2 -5
- package/dist/engine/migration/equivalence-mapper.js +12 -13
- package/dist/engine/migration/service-catalogs.js +6 -7
- package/dist/engine/migration/service-migrator-catalogs.js +6 -7
- package/dist/engine/migrations/remove-commercial-state.d.ts +3 -0
- package/dist/engine/migrations/remove-commercial-state.js +343 -0
- package/dist/engine/mobile-detector-ios.js +2 -3
- package/dist/engine/mobile-detector.js +16 -4
- package/dist/engine/model-router/complexity-analyzer.js +4 -7
- package/dist/engine/multi-agent-review/security-analyzer.js +3 -1
- package/dist/engine/multi-app-detector/app-type.js +26 -21
- package/dist/engine/multi-app-detector/core.js +3 -2
- package/dist/engine/multi-teammate-review/disagreement-counter.js +2 -1
- package/dist/engine/multi-teammate-review/panel-orchestrator.js +0 -2
- package/dist/engine/mutation-config-generator.js +10 -7
- package/dist/engine/native-capability-policy.d.ts +4 -0
- package/dist/engine/native-capability-policy.js +24 -0
- package/dist/engine/native-platform.d.ts +3 -0
- package/dist/engine/native-platform.js +44 -0
- package/dist/engine/native-runtime-handshake.d.ts +20 -0
- package/dist/engine/native-runtime-handshake.js +230 -0
- package/dist/engine/network-policy.d.ts +27 -0
- package/dist/engine/network-policy.js +175 -0
- package/dist/engine/next-spec-resolver/dependency-filter.js +2 -22
- package/dist/engine/nfr-profile-detector.js +12 -16
- package/dist/engine/nli-keywords.js +8 -9
- package/dist/engine/oauth/config-guard.js +4 -5
- package/dist/engine/observability/local-execution-spans.d.ts +15 -0
- package/dist/engine/observability/local-execution-spans.js +63 -0
- package/dist/engine/orchestrator/runtime.js +0 -1
- package/dist/engine/package-registry.js +2 -6
- package/dist/engine/performance-analyzer.js +2 -5
- package/dist/engine/permissions-merger/stack-detectors.js +5 -5
- package/dist/engine/planu-core.darwin-arm64.node.manifest.json +39 -0
- package/dist/engine/planu-core.darwin-arm64.node.sbom.json +1310 -0
- package/dist/engine/planu-core.darwin-x64.node.manifest.json +39 -0
- package/dist/engine/planu-core.darwin-x64.node.sbom.json +1310 -0
- package/dist/engine/planu-core.linux-arm64-gnu.node.manifest.json +38 -0
- package/dist/engine/planu-core.linux-arm64-gnu.node.sbom.json +1310 -0
- package/dist/engine/planu-core.linux-arm64-musl.node.manifest.json +38 -0
- package/dist/engine/planu-core.linux-arm64-musl.node.sbom.json +1310 -0
- package/dist/engine/planu-core.linux-x64-gnu.node.manifest.json +38 -0
- package/dist/engine/planu-core.linux-x64-gnu.node.sbom.json +1310 -0
- package/dist/engine/planu-core.linux-x64-musl.node.manifest.json +38 -0
- package/dist/engine/planu-core.linux-x64-musl.node.sbom.json +1310 -0
- package/dist/engine/planu-core.win32-arm64-msvc.node.manifest.json +38 -0
- package/dist/engine/planu-core.win32-arm64-msvc.node.sbom.json +1310 -0
- package/dist/engine/planu-core.win32-x64-msvc.node.manifest.json +38 -0
- package/dist/engine/planu-core.win32-x64-msvc.node.sbom.json +1310 -0
- package/dist/engine/platform-detector/desktop.js +15 -2
- package/dist/engine/platform-detector/extensions.js +2 -1
- package/dist/engine/platform-detector/games.js +2 -1
- package/dist/engine/platform-detector.js +3 -2
- package/dist/engine/platform-engineering/idp-detector.js +2 -1
- package/dist/engine/plugin-installer/stack-matcher.js +9 -17
- package/dist/engine/plugins/lifecycle.js +6 -2
- package/dist/engine/prior-decisions/contradiction-detector.js +60 -30
- package/dist/engine/project-dna/stack-detector.js +15 -17
- package/dist/engine/project-graph/builder.js +11 -0
- package/dist/engine/project-graph/cache.js +1 -1
- package/dist/engine/project-graph/freshness-projection.d.ts +16 -0
- package/dist/engine/project-graph/freshness-projection.js +95 -0
- package/dist/engine/project-graph/index.d.ts +1 -0
- package/dist/engine/project-graph/index.js +1 -0
- package/dist/engine/project-graph/query.js +15 -25
- package/dist/engine/project-health-checker.js +3 -4
- package/dist/engine/project-scanner/stack-detector.js +17 -17
- package/dist/engine/property-test-generator.js +2 -3
- package/dist/engine/qa-gate.d.ts +1 -0
- package/dist/engine/qa-gate.js +6 -4
- package/dist/engine/quality-gates/gate-catalog.js +47 -46
- package/dist/engine/quality-gates/gate-injector.js +9 -4
- package/dist/engine/readiness-checker.d.ts +1 -16
- package/dist/engine/readiness-checker.js +27 -88
- package/dist/engine/registry/core.js +0 -2
- package/dist/engine/registry/loader.js +9 -12
- package/dist/engine/registry/matcher.js +129 -24
- package/dist/engine/resilience-detector/concurrency-detector.js +4 -4
- package/dist/engine/resilience-detector/middleware-detector.js +11 -13
- package/dist/engine/resilience-detector/validation-detector.js +17 -4
- package/dist/engine/reverse-engineer/config-analyzer.js +9 -8
- package/dist/engine/reverse-engineer/orchestrator.js +5 -9
- package/dist/engine/reverse-engineer/test-file-parser.js +6 -3
- package/dist/engine/rules-generator/index.js +6 -5
- package/dist/engine/runtime-policy.d.ts +9 -0
- package/dist/engine/runtime-policy.js +138 -0
- package/dist/engine/runtime-security/checkers/content-security.js +21 -6
- package/dist/engine/runtime-security/checkers/file-permissions.js +0 -2
- package/dist/engine/runtime-security/rate-limiter.js +0 -1
- package/dist/engine/safety/atomic-write-file.js +20 -9
- package/dist/engine/safety/atomic-writer.js +10 -3
- package/dist/engine/safety/contained-project-file.d.ts +3 -0
- package/dist/engine/safety/contained-project-file.js +23 -0
- package/dist/engine/safety/cross-process-lock.d.ts +3 -40
- package/dist/engine/safety/cross-process-lock.js +268 -272
- package/dist/engine/safety/file-mutex.d.ts +2 -9
- package/dist/engine/safety/file-mutex.js +155 -87
- package/dist/engine/safety/health-monitor.js +15 -6
- package/dist/engine/safety/lock-lease-store.d.ts +79 -0
- package/dist/engine/safety/lock-lease-store.js +372 -0
- package/dist/engine/safety/lock-scavenger.d.ts +2 -5
- package/dist/engine/safety/lock-scavenger.js +158 -76
- package/dist/engine/safety/lock-staleness.js +4 -1
- package/dist/engine/safety/obsolete-lock-guard.d.ts +8 -0
- package/dist/engine/safety/obsolete-lock-guard.js +31 -0
- package/dist/engine/safety/transaction.js +3 -3
- package/dist/engine/sandbox/index.js +2 -1
- package/dist/engine/sandbox/runner-detect.js +3 -2
- package/dist/engine/sandbox/runner-docker.js +4 -3
- package/dist/engine/scan-project/module-discoverer.js +3 -2
- package/dist/engine/schema-generator.js +16 -9
- package/dist/engine/scope-boundaries/contradiction-checker.js +63 -1
- package/dist/engine/scope-boundaries/scope-validator.js +45 -7
- package/dist/engine/security-analyzer/criteria-generator.js +2 -3
- package/dist/engine/self-healing/healer.js +4 -4
- package/dist/engine/session/checkpoint-writer.js +0 -9
- package/dist/engine/shared-agent-memory.js +66 -74
- package/dist/engine/skill-adapter/command-rewriter.js +3 -2
- package/dist/engine/skill-adapter/index.js +3 -3
- package/dist/engine/skill-adapter/placeholder-map.js +3 -2
- package/dist/engine/skill-bootstrap/stack-matcher.js +47 -48
- package/dist/engine/skill-generation/stack-content-generator.js +0 -2
- package/dist/engine/skill-generator/workflow-skill-generator.js +2 -1
- package/dist/engine/skill-registry/ttl-refresh.js +3 -1
- package/dist/engine/skills/skills-fetcher.js +3 -6
- package/dist/engine/skills-reconciler.js +19 -39
- package/dist/engine/spec-coverage/test-finder.js +7 -6
- package/dist/engine/spec-diff-engine.js +3 -3
- package/dist/engine/spec-format/acceptance-criteria.d.ts +6 -2
- package/dist/engine/spec-format/acceptance-criteria.js +77 -18
- package/dist/engine/spec-format/markdown-sections.d.ts +14 -0
- package/dist/engine/spec-format/markdown-sections.js +105 -0
- package/dist/engine/spec-format/read-technical-section.js +33 -5
- package/dist/engine/spec-format/technical-md-populator.js +3 -2
- package/dist/engine/spec-format/unified-spec-builder.d.ts +7 -0
- package/dist/engine/spec-format/unified-spec-builder.js +202 -0
- package/dist/engine/spec-generator/api-key-resolver.d.ts +1 -1
- package/dist/engine/spec-generator/api-key-resolver.js +3 -24
- package/dist/engine/spec-generators/issue-extractor.js +9 -3
- package/dist/engine/spec-migrator/canonical-deduplicator.d.ts +18 -0
- package/dist/engine/spec-migrator/canonical-deduplicator.js +479 -0
- package/dist/engine/spec-migrator/drift-detector.js +5 -13
- package/dist/engine/spec-migrator/filesystem-import.d.ts +4 -8
- package/dist/engine/spec-migrator/filesystem-import.js +134 -23
- package/dist/engine/spec-migrator/frontmatter-parser.js +32 -15
- package/dist/engine/spec-migrator/index.d.ts +1 -0
- package/dist/engine/spec-migrator/index.js +1 -0
- package/dist/engine/spec-migrator/planu-canonical-policy.js +10 -1
- package/dist/engine/spec-migrator/strict-planu-cleanup.js +24 -25
- package/dist/engine/spec-registry/adapter.d.ts +0 -5
- package/dist/engine/spec-registry/adapter.js +45 -46
- package/dist/engine/spec-registry/client.js +2 -0
- package/dist/engine/spec-source-sync.js +3 -2
- package/dist/engine/spec-state-machine/transition-spec.d.ts +6 -1
- package/dist/engine/spec-state-machine/transition-spec.js +10 -1
- package/dist/engine/spec-templates/custom-loader.js +2 -3
- package/dist/engine/spec-templates/templates-domain-specific.js +8 -5
- package/dist/engine/spec-templates/templates-perf-integration.js +2 -3
- package/dist/engine/stack-auditor/manifest-reader.js +0 -2
- package/dist/engine/staleness/stale-implementing.js +7 -7
- package/dist/engine/tdd-scaffold-generator.js +24 -11
- package/dist/engine/teammate-router/green-phase-verifier.js +2 -1
- package/dist/engine/teammate-router/red-phase-verifier.js +2 -1
- package/dist/engine/technical-enricher/index.js +16 -8
- package/dist/engine/technical-enricher/render-enriched.d.ts +1 -0
- package/dist/engine/technical-enricher/render-enriched.js +42 -14
- package/dist/engine/technology-registry.d.ts +11 -0
- package/dist/engine/technology-registry.js +142 -0
- package/dist/engine/telemetry/error-reporter.d.ts +1 -2
- package/dist/engine/telemetry/error-reporter.js +11 -18
- package/dist/engine/telemetry/health-checker.js +58 -31
- package/dist/engine/telemetry/index.d.ts +0 -1
- package/dist/engine/telemetry/index.js +0 -1
- package/dist/engine/telemetry/stance.js +3 -2
- package/dist/engine/telemetry/telemetry-client.d.ts +1 -5
- package/dist/engine/telemetry/telemetry-client.js +69 -35
- package/dist/engine/telemetry/telemetry-store.d.ts +3 -3
- package/dist/engine/telemetry/telemetry-store.js +30 -23
- package/dist/engine/test-framework-detector/detectors.js +8 -8
- package/dist/engine/test-framework-detector/strategy.js +8 -9
- package/dist/engine/test-generators/agent-test-templates.js +2 -3
- package/dist/engine/test-generators/contract-test-generator.d.ts +1 -1
- package/dist/engine/test-generators/contract-test-generator.js +9 -202
- package/dist/engine/test-generators/platform-test-templates-b.js +2 -3
- package/dist/engine/test-generators/platform-test-templates.js +2 -5
- package/dist/engine/test-mocks-generator.js +4 -3
- package/dist/engine/test-plan-generator.js +30 -12
- package/dist/engine/test-scaffold-generator/advanced-scaffold.js +4 -5
- package/dist/engine/test-scaffold-generator/unit-scaffold.js +5 -6
- package/dist/engine/text-signal-boundaries.d.ts +2 -0
- package/dist/engine/text-signal-boundaries.js +25 -2
- package/dist/engine/time/relative-date.d.ts +3 -0
- package/dist/engine/time/relative-date.js +16 -0
- package/dist/engine/timing/budget.d.ts +17 -17
- package/dist/engine/timing/budget.js +98 -64
- package/dist/engine/token-optimizer/analytics.d.ts +1 -1
- package/dist/engine/token-optimizer/analytics.js +5 -6
- package/dist/engine/tool-groups/group-manager.js +3 -3
- package/dist/engine/universal-rules/installer.js +1 -1
- package/dist/engine/universal-rules/rules/planu-modes.js +2 -0
- package/dist/engine/universal-rules/rules/planu-release-policy.js +1 -0
- package/dist/engine/update-notifier.js +8 -5
- package/dist/engine/usage-tracker/core.d.ts +2 -2
- package/dist/engine/usage-tracker/core.js +1 -2
- package/dist/engine/usage-tracker/index.d.ts +0 -3
- package/dist/engine/usage-tracker/index.js +0 -3
- package/dist/engine/usage-tracker/stats.d.ts +2 -2
- package/dist/engine/usage-tracker/stats.js +1 -28
- package/dist/engine/validation/approved-spec-portability.d.ts +12 -0
- package/dist/engine/validation/approved-spec-portability.js +107 -0
- package/dist/engine/validation/durable-validation.d.ts +36 -0
- package/dist/engine/validation/durable-validation.js +256 -0
- package/dist/engine/validation/validation-freshness.d.ts +46 -0
- package/dist/engine/validation/validation-freshness.js +567 -0
- package/dist/engine/validation/validation-receipt-codec.d.ts +13 -0
- package/dist/engine/validation/validation-receipt-codec.js +182 -0
- package/dist/engine/validation/validation-receipt.d.ts +62 -0
- package/dist/engine/validation/validation-receipt.js +342 -0
- package/dist/engine/validation/validation-source-digest.d.ts +2 -0
- package/dist/engine/validation/validation-source-digest.js +86 -0
- package/dist/engine/validation/validation-source-policy.d.ts +4 -0
- package/dist/engine/validation/validation-source-policy.js +16 -0
- package/dist/engine/validation/validation-submission.d.ts +37 -0
- package/dist/engine/validation/validation-submission.js +142 -0
- package/dist/engine/validation/validation-worktree.d.ts +21 -0
- package/dist/engine/validation/validation-worktree.js +260 -0
- package/dist/engine/validation-evidence-ledger.js +41 -0
- package/dist/engine/validation-impact-planner.d.ts +14 -2
- package/dist/engine/validation-impact-planner.js +23 -10
- package/dist/engine/validator/dor-dod.d.ts +1 -0
- package/dist/engine/validator/dor-dod.js +5 -3
- package/dist/engine/validator/extractors.d.ts +1 -5
- package/dist/engine/validator/extractors.js +24 -69
- package/dist/engine/validator/spec-compliance-runner.d.ts +13 -25
- package/dist/engine/validator/spec-compliance-runner.js +442 -215
- package/dist/engine/validator/validation-report-writer.js +1 -1
- package/dist/engine/validator.js +37 -23
- package/dist/engine/verify-integrations/index.js +1 -1
- package/dist/engine/version-resolver.js +5 -6
- package/dist/engine/web-fetcher/stack-advisor.js +156 -92
- package/dist/engine/web-fetcher/stack-detector.js +114 -54
- package/dist/engine/workspace-manager.js +3 -2
- package/dist/errors/classified-degradation.d.ts +3 -0
- package/dist/errors/classified-degradation.js +10 -0
- package/dist/errors/degradation-sink.d.ts +3 -0
- package/dist/errors/degradation-sink.js +5 -0
- package/dist/errors/error-taxonomy.d.ts +12 -0
- package/dist/errors/error-taxonomy.js +62 -0
- package/dist/hosts/claude-code/ux/mcp-prompts.js +10 -4
- package/dist/hosts/claude-code/ux/mcp-resources.js +4 -2
- package/dist/hosts/codex/config-scaffold.js +4 -3
- package/dist/hosts/gemini/config-scaffold.js +2 -1
- package/dist/hosts/gemini/multimodal-spec-flow.js +7 -4
- package/dist/index.js +23 -20
- package/dist/resources/patterns.js +3 -1
- package/dist/resources/specs.js +3 -1
- package/dist/resources/templates.js +3 -1
- package/dist/resources/usage-stats-resource.js +2 -18
- package/dist/security/adapters/environment.d.ts +12 -0
- package/dist/security/adapters/environment.js +25 -0
- package/dist/security/adapters/linux-secret-service.d.ts +8 -0
- package/dist/security/adapters/linux-secret-service.js +64 -0
- package/dist/security/adapters/macos-keychain.d.ts +18 -0
- package/dist/security/adapters/macos-keychain.js +90 -0
- package/dist/security/adapters/windows-credential-manager.d.ts +8 -0
- package/dist/security/adapters/windows-credential-manager.js +60 -0
- package/dist/security/redactor.d.ts +5 -0
- package/dist/security/redactor.js +58 -0
- package/dist/security/secret-field.d.ts +5 -0
- package/dist/security/secret-field.js +17 -0
- package/dist/security/secret-migration.d.ts +3 -0
- package/dist/security/secret-migration.js +123 -0
- package/dist/security/secret-provider.d.ts +23 -0
- package/dist/security/secret-provider.js +145 -0
- package/dist/security/secure-json.d.ts +3 -0
- package/dist/security/secure-json.js +29 -0
- package/dist/server/routes/specs.js +10 -0
- package/dist/storage/api-surfaces-store.js +2 -2
- package/dist/storage/approval-operation-lock.d.ts +1 -1
- package/dist/storage/approval-operation-lock.js +5 -3
- package/dist/storage/audit-trail-store.d.ts +1 -1
- package/dist/storage/audit-trail-store.js +48 -62
- package/dist/storage/autopilot-log-store.js +12 -5
- package/dist/storage/base-store.d.ts +9 -9
- package/dist/storage/base-store.js +58 -21
- package/dist/storage/checkpoint-store.js +5 -2
- package/dist/storage/comments-store.js +2 -2
- package/dist/storage/compliance-audit-store.js +5 -2
- package/dist/storage/compliance-gate-config-store.js +7 -4
- package/dist/storage/compliance-store.js +2 -2
- package/dist/storage/context-profile-store.js +2 -2
- package/dist/storage/crash-shield-store.js +8 -4
- package/dist/storage/feedback-remote.d.ts +2 -3
- package/dist/storage/feedback-remote.js +45 -31
- package/dist/storage/feedback-store.js +10 -6
- package/dist/storage/figma-store.js +8 -4
- package/dist/storage/file-mutex.js +9 -1
- package/dist/storage/gaps-log.js +7 -4
- package/dist/storage/global-projects-store.js +4 -2
- package/dist/storage/global-store.d.ts +1 -17
- package/dist/storage/global-store.js +1 -42
- package/dist/storage/ideas-store.js +2 -2
- package/dist/storage/index.d.ts +5 -2
- package/dist/storage/index.js +5 -2
- package/dist/storage/knowledge-store/knowledge.js +27 -33
- package/dist/storage/lessons-store.js +2 -2
- package/dist/storage/migrations/canonical-storage.d.ts +15 -0
- package/dist/storage/migrations/canonical-storage.js +712 -0
- package/dist/storage/oauth-store.js +36 -8
- package/dist/storage/path-resolver.js +16 -3
- package/dist/storage/pr-store.js +2 -2
- package/dist/storage/project-drift-store.js +20 -8
- package/dist/storage/project-identity.d.ts +32 -0
- package/dist/storage/project-identity.js +194 -0
- package/dist/storage/project-resolver.js +14 -7
- package/dist/storage/release-notes-store.js +2 -6
- package/dist/storage/runtime-db.d.ts +195 -0
- package/dist/storage/runtime-db.js +1110 -0
- package/dist/storage/schema-registry.d.ts +5 -0
- package/dist/storage/schema-registry.js +74 -0
- package/dist/storage/sentry-store.js +20 -9
- package/dist/storage/session-state-store.js +12 -5
- package/dist/storage/skill-registry-storage.d.ts +1 -1
- package/dist/storage/skill-registry-storage.js +13 -11
- package/dist/storage/slack-store.js +10 -5
- package/dist/storage/spec-store.d.ts +14 -2
- package/dist/storage/spec-store.js +134 -37
- package/dist/storage/status-store/atomic-status-write.d.ts +5 -0
- package/dist/storage/status-store/atomic-status-write.js +57 -0
- package/dist/storage/status-store/file-lock.js +61 -20
- package/dist/storage/status-store/self-healing.js +13 -8
- package/dist/storage/status-store/version-sync.d.ts +2 -1
- package/dist/storage/status-store/version-sync.js +36 -39
- package/dist/storage/steering-store.js +2 -2
- package/dist/storage/storage-bundle.d.ts +5 -0
- package/dist/storage/storage-bundle.js +117 -0
- package/dist/storage/storage-catalog-validation.d.ts +3 -0
- package/dist/storage/storage-catalog-validation.js +20 -0
- package/dist/storage/storage-catalog.d.ts +25 -0
- package/dist/storage/storage-catalog.js +390 -0
- package/dist/storage/storage-layout.d.ts +24 -0
- package/dist/storage/storage-layout.js +101 -0
- package/dist/storage/storybook-store.js +2 -2
- package/dist/storage/supabase-store.js +24 -6
- package/dist/storage/tdd-policy-store.js +8 -6
- package/dist/storage/tech-debt-store.js +3 -3
- package/dist/storage/technology-selection-store.d.ts +1 -1
- package/dist/storage/technology-selection-store.js +6 -3
- package/dist/storage/token-cache-store.js +3 -3
- package/dist/storage/token-ledger-store.js +13 -8
- package/dist/storage/transition-log.js +7 -4
- package/dist/storage/trash-store.js +15 -6
- package/dist/storage/usage-store.d.ts +1 -5
- package/dist/storage/usage-store.js +0 -35
- package/dist/storage/vector-store/migrator.js +7 -2
- package/dist/storage/vector-store/sqlite-adapter.js +4 -1
- package/dist/storage/webhook-server-store.js +2 -2
- package/dist/tools/api-spec-generator-handler.js +3 -2
- package/dist/tools/auto-update-handler.d.ts +4 -4
- package/dist/tools/auto-update-handler.js +4 -4
- package/dist/tools/browser-validate-handler.js +2 -1
- package/dist/tools/challenge-spec/platform-challenge-scenarios-b.js +8 -5
- package/dist/tools/challenge-spec/resilience-challenge-scenarios.d.ts +2 -1
- package/dist/tools/challenge-spec/resilience-challenge-scenarios.js +10 -7
- package/dist/tools/challenge-spec/scenario-collector.js +1 -1
- package/dist/tools/challenge-spec/scenarios-data.js +1 -1
- package/dist/tools/challenge-spec/scenarios-desktop.js +8 -3
- package/dist/tools/challenge-spec/scenarios-failure.js +7 -2
- package/dist/tools/challenge-spec/scenarios-utils.d.ts +1 -1
- package/dist/tools/challenge-spec/scenarios-utils.js +35 -11
- package/dist/tools/challenge-spec/security-challenge-scenarios.js +3 -3
- package/dist/tools/challenge-spec.js +5 -5
- package/dist/tools/check-readiness.js +1 -1
- package/dist/tools/clarify-requirements/multiple-choice.js +53 -41
- package/dist/tools/comments-handler.js +2 -3
- package/dist/tools/compliance-test-handler.js +2 -2
- package/dist/tools/configure-telemetry.js +41 -13
- package/dist/tools/create-spec/auto-pipeline.js +13 -1
- package/dist/tools/create-spec/autopilot-analyzer.d.ts +1 -1
- package/dist/tools/create-spec/autopilot-analyzer.js +2 -4
- package/dist/tools/create-spec/mcp-tool-contract.d.ts +10 -4
- package/dist/tools/create-spec/mcp-tool-contract.js +7 -36
- package/dist/tools/create-spec/post-creation.d.ts +2 -1
- package/dist/tools/create-spec/post-creation.js +56 -54
- package/dist/tools/create-spec/relevance-scorer.d.ts +1 -1
- package/dist/tools/create-spec/relevance-scorer.js +17 -1
- package/dist/tools/create-spec/spec-builder.js +2 -23
- package/dist/tools/create-spec/spec-created-outbox-consumer.d.ts +14 -0
- package/dist/tools/create-spec/spec-created-outbox-consumer.js +176 -0
- package/dist/tools/create-spec.d.ts +1 -0
- package/dist/tools/create-spec.js +802 -732
- package/dist/tools/define-ui-contract/agent-interaction-contract.js +2 -4
- package/dist/tools/define-ui-contract-desktop/desktop-contract.js +12 -4
- package/dist/tools/define-ui-contract-desktop/native-contract.js +7 -3
- package/dist/tools/define-ui-contract-extensions.js +2 -3
- package/dist/tools/define-ui-contract-mobile.js +5 -9
- package/dist/tools/define-ui-contract-web/component-tree.js +4 -3
- package/dist/tools/define-ui-contract.js +7 -4
- package/dist/tools/deploy/deploy-spec.js +2 -4
- package/dist/tools/deploy/deploy-status.js +2 -4
- package/dist/tools/design-schema/nosql-category-schemas.js +2 -3
- package/dist/tools/design-schema-sql/migrations.js +3 -2
- package/dist/tools/design-schema-sql/tables.js +4 -1
- package/dist/tools/design-schema.js +4 -3
- package/dist/tools/feedback-handler.js +2 -4
- package/dist/tools/gc-data-projects.js +5 -5
- package/dist/tools/generate-execution-plan.js +3 -4
- package/dist/tools/generate-sub-agent.js +2 -1
- package/dist/tools/generate-tests/generators/a11y-tests-generator.js +5 -4
- package/dist/tools/generate-tests/generators/advanced-testing-generator.js +5 -4
- package/dist/tools/generate-tests/generators/concurrency-test-generator/js-templates.js +9 -4
- package/dist/tools/generate-tests/generators/concurrency-test-generator.js +8 -4
- package/dist/tools/generate-tests/generators/database/detectors.js +9 -3
- package/dist/tools/generate-tests/generators/database/index.js +2 -4
- package/dist/tools/generate-tests/generators/event-test-generator.js +5 -4
- package/dist/tools/generate-tests/generators/game-tests-generator.js +2 -1
- package/dist/tools/generate-tests/generators/graphql-test-generator.js +11 -5
- package/dist/tools/generate-tests/generators/grpc-test-generator.js +2 -3
- package/dist/tools/generate-tests/generators/llm-security-test-generator.js +4 -3
- package/dist/tools/generate-tests/generators/local-first-test-generator.js +4 -3
- package/dist/tools/generate-tests/generators/mcp-tests-generator.js +11 -9
- package/dist/tools/generate-tests/generators/microservices/index.js +2 -3
- package/dist/tools/generate-tests/generators/otel-test-generator.js +6 -3
- package/dist/tools/generate-tests/generators/security/detectors.js +2 -5
- package/dist/tools/generate-tests/generators/security/index.js +2 -4
- package/dist/tools/generate-tests/generators/supply-chain-test-generator.js +2 -3
- package/dist/tools/generate-tests/generators/visual-regression-generator.js +14 -17
- package/dist/tools/generate-tests/generators/websocket-test-generator.js +2 -3
- package/dist/tools/generate-tests/test-helpers.js +11 -12
- package/dist/tools/generate-tests-content.js +4 -3
- package/dist/tools/generate-tests.js +7 -4
- package/dist/tools/git/branch-ops.d.ts +1 -1
- package/dist/tools/git/branch-ops.js +3 -2
- package/dist/tools/git/git-helpers.d.ts +0 -2
- package/dist/tools/git/git-helpers.js +7 -7
- package/dist/tools/github-pr-handler.js +10 -3
- package/dist/tools/heal-spec-docs.js +6 -53
- package/dist/tools/hook-generator-handler.js +6 -6
- package/dist/tools/init-constitution/platform-principles.js +4 -2
- package/dist/tools/init-project/agents-md-writer.js +14 -5
- package/dist/tools/init-project/claude-md-generator.js +19 -12
- package/dist/tools/init-project/handler.js +165 -75
- package/dist/tools/init-project/host-assets-writer.d.ts +1 -1
- package/dist/tools/init-project/host-assets-writer.js +30 -3
- package/dist/tools/init-project/lifecycle-helpers.js +3 -5
- package/dist/tools/init-project/lint-scaffolder.d.ts +3 -3
- package/dist/tools/init-project/lint-scaffolder.js +6 -2
- package/dist/tools/init-project/migration-runner.d.ts +8 -1
- package/dist/tools/init-project/migration-runner.js +68 -2
- package/dist/tools/init-project/per-client-files-writer.js +14 -4
- package/dist/tools/init-project/portable-index-reconciler.d.ts +4 -0
- package/dist/tools/init-project/portable-index-reconciler.js +14 -0
- package/dist/tools/init-project/result-builder.js +1 -3
- package/dist/tools/init-project/rules-generator.js +10 -2
- package/dist/tools/init-project/scaffold-writer.d.ts +1 -1
- package/dist/tools/init-project/scaffold-writer.js +17 -15
- package/dist/tools/jobs/handlers.d.ts +15 -0
- package/dist/tools/jobs/handlers.js +158 -0
- package/dist/tools/list-specs.js +39 -59
- package/dist/tools/manage-plugins-handler.js +17 -9
- package/dist/tools/merge-risk-handler.js +2 -2
- package/dist/tools/migrate-tech/advanced-handlers.js +3 -2
- package/dist/tools/migrate-tech/build-tool-handlers.js +3 -2
- package/dist/tools/migrate-tech/core-handlers.js +5 -2
- package/dist/tools/migrate-tech/data-handlers.js +6 -3
- package/dist/tools/migrate-tech-advanced/rollback-handlers.js +3 -2
- package/dist/tools/migrate-tech-advanced/service-handlers.js +5 -2
- package/dist/tools/oauth-handler.js +7 -1
- package/dist/tools/package-handoff.js +2 -0
- package/dist/tools/reconcile-spec.js +0 -27
- package/dist/tools/register-agent-squad-tools.js +2 -2
- package/dist/tools/register-platform-tools/design-stack-tools.js +11 -11
- package/dist/tools/register-platform-tools/lifecycle-infra-tools.js +7 -7
- package/dist/tools/register-sdd-tools.d.ts +1 -1
- package/dist/tools/register-sdd-tools.js +2 -24
- package/dist/tools/register-spec-tools/analysis-tools.js +8 -8
- package/dist/tools/register-spec-tools/core-spec-tools.js +48 -8
- package/dist/tools/registry/auth.js +13 -5
- package/dist/tools/registry/publish.js +7 -4
- package/dist/tools/resolve-project-path.d.ts +2 -2
- package/dist/tools/resolve-project-path.js +7 -7
- package/dist/tools/reverse-engineer/analyzer.js +14 -14
- package/dist/tools/rollback-release.js +3 -2
- package/dist/tools/safe-handler.d.ts +5 -13
- package/dist/tools/safe-handler.js +302 -194
- package/dist/tools/schema-generator-handler.js +2 -1
- package/dist/tools/schemas/index.d.ts +1 -1
- package/dist/tools/schemas/index.js +1 -1
- package/dist/tools/schemas/output-schemas.d.ts +88 -105
- package/dist/tools/schemas/output-schemas.js +12 -122
- package/dist/tools/schemas/plugins-schemas.js +0 -2
- package/dist/tools/schemas/registry.js +0 -2
- package/dist/tools/schemas/skill-registry-schemas.js +0 -2
- package/dist/tools/schemas/spec.d.ts +4 -0
- package/dist/tools/schemas/spec.js +3 -0
- package/dist/tools/schemas/validate-output-schema.d.ts +267 -0
- package/dist/tools/schemas/validate-output-schema.js +219 -0
- package/dist/tools/sentry-handler.js +6 -1
- package/dist/tools/skill-bootstrap-handler.js +7 -4
- package/dist/tools/spec-prompt-handler.js +3 -3
- package/dist/tools/status-handler.js +4 -0
- package/dist/tools/storage-bundle-handler.d.ts +9 -0
- package/dist/tools/storage-bundle-handler.js +29 -0
- package/dist/tools/storage-paths-handler.d.ts +9 -0
- package/dist/tools/storage-paths-handler.js +17 -0
- package/dist/tools/suggest-mcp-server.js +11 -5
- package/dist/tools/suggest-mcps.js +29 -9
- package/dist/tools/suggest-tooling/advanced-testing-catalog.js +4 -5
- package/dist/tools/suggest-tooling/build-tool-catalog.js +2 -1
- package/dist/tools/suggest-tooling/css-framework-catalog.js +13 -7
- package/dist/tools/suggest-tooling/framework-catalog.js +3 -5
- package/dist/tools/suggest-tooling/frontend-perf-catalog.js +2 -6
- package/dist/tools/suggest-tooling/handler.js +10 -4
- package/dist/tools/suggest-tooling/hypermedia-catalog.js +11 -3
- package/dist/tools/suggest-tooling/linting-catalog.js +4 -7
- package/dist/tools/suggest-tooling/llm-security-catalog.js +2 -1
- package/dist/tools/suggest-tooling/local-first-catalog.js +7 -5
- package/dist/tools/suggest-tooling/observability-catalog.js +3 -4
- package/dist/tools/suggest-tooling/otel-catalog.js +4 -1
- package/dist/tools/suggest-tooling/resilience-catalog.js +16 -5
- package/dist/tools/suggest-tooling/skills-catalog.js +10 -9
- package/dist/tools/suggest-tooling/supply-chain-catalog.js +2 -3
- package/dist/tools/supabase-handler.js +2 -1
- package/dist/tools/sync-spec-state-handler.d.ts +1 -1
- package/dist/tools/sync-spec-state-handler.js +1 -1
- package/dist/tools/token-intelligence-handler.js +2 -2
- package/dist/tools/token-recording.js +2 -2
- package/dist/tools/token-savings-handler.js +2 -2
- package/dist/tools/tool-entry.d.ts +4 -4
- package/dist/tools/tool-entry.js +3 -3
- package/dist/tools/tool-registry/core-tools.js +162 -15
- package/dist/tools/tool-registry/group-infra.js +37 -122
- package/dist/tools/tool-registry/group-quality-compliance.js +31 -38
- package/dist/tools/tool-registry/inventory.d.ts +2 -0
- package/dist/tools/tool-registry/inventory.js +2 -0
- package/dist/tools/tool-registry-helpers.d.ts +3 -3
- package/dist/tools/tool-registry-helpers.js +3 -3
- package/dist/tools/tool-usage-report/registered-tools.d.ts +1 -1
- package/dist/tools/tool-usage-report/registered-tools.js +3 -15
- package/dist/tools/update-status/approval-gates.d.ts +13 -0
- package/dist/tools/update-status/approval-gates.js +84 -0
- package/dist/tools/update-status/batch.js +4 -2
- package/dist/tools/update-status/dod-gates.d.ts +6 -24
- package/dist/tools/update-status/dod-gates.js +60 -135
- package/dist/tools/update-status/done-receipt-verifier.d.ts +15 -0
- package/dist/tools/update-status/done-receipt-verifier.js +158 -0
- package/dist/tools/update-status/evidence-gate.js +190 -3
- package/dist/tools/update-status/file-sync.d.ts +2 -1
- package/dist/tools/update-status/file-sync.js +80 -18
- package/dist/tools/update-status/gate-harness.d.ts +7 -0
- package/dist/tools/update-status/gate-harness.js +8 -0
- package/dist/tools/update-status/index.d.ts +2 -0
- package/dist/tools/update-status/index.js +307 -367
- package/dist/tools/update-status/qa-gate.d.ts +1 -1
- package/dist/tools/update-status/qa-gate.js +2 -2
- package/dist/tools/update-status/response-builder.js +3 -3
- package/dist/tools/update-status/side-effects.d.ts +2 -0
- package/dist/tools/update-status/side-effects.js +32 -39
- package/dist/tools/update-status/transition-guard.d.ts +4 -2
- package/dist/tools/update-status/transition-guard.js +89 -25
- package/dist/tools/update-status-actions.d.ts +4 -2
- package/dist/tools/update-status-actions.js +16 -14
- package/dist/tools/update-status-convention-gate.js +24 -23
- package/dist/tools/update-status-reconcile.js +2 -2
- package/dist/tools/usage-report.js +1 -16
- package/dist/tools/usage-stats.js +1 -18
- package/dist/tools/usage-tracking.d.ts +4 -0
- package/dist/tools/usage-tracking.js +20 -0
- package/dist/tools/validate-api-contract-handler.js +3 -3
- package/dist/tools/validate-lint.d.ts +1 -0
- package/dist/tools/validate-lint.js +21 -14
- package/dist/tools/validate.d.ts +4 -1
- package/dist/tools/validate.js +319 -31
- package/dist/transports/http-transport.js +87 -66
- package/dist/transports/mcp-types.d.ts +0 -2
- package/dist/transports/middleware/with-telemetry.js +3 -2
- package/dist/transports/session-context.js +1 -1
- package/dist/types/abortable-process.d.ts +2 -0
- package/dist/types/advanced-framework.js +0 -2
- package/dist/types/atomic-upgrade.d.ts +71 -0
- package/dist/types/atomic-upgrade.js +2 -0
- package/dist/types/cascade-hooks.d.ts +1 -1
- package/dist/types/ci.d.ts +0 -4
- package/dist/types/ci.js +0 -2
- package/dist/types/clarification-token.d.ts +1 -1
- package/dist/types/claude-code-runtime.d.ts +0 -27
- package/dist/types/commercial-migration.d.ts +17 -0
- package/dist/types/commercial-migration.js +2 -0
- package/dist/types/common/primitives.d.ts +0 -2
- package/dist/types/core-bridge.d.ts +81 -10
- package/dist/types/crash-shield-framework-rules.d.ts +24 -0
- package/dist/types/crash-shield-framework-rules.js +2 -0
- package/dist/types/dashboard.d.ts +3 -7
- package/dist/types/data-gc.d.ts +16 -0
- package/dist/types/deploy.js +0 -2
- package/dist/types/docs.d.ts +0 -1
- package/dist/types/durable-job.d.ts +78 -0
- package/dist/types/durable-job.js +2 -0
- package/dist/types/durable-validation.d.ts +158 -0
- package/dist/types/durable-validation.js +166 -0
- package/dist/types/errors/structured-error.d.ts +3 -3
- package/dist/types/estimation.d.ts +4 -0
- package/dist/types/evidence-gates.d.ts +17 -1
- package/dist/types/execution.d.ts +45 -0
- package/dist/types/gemini-integration.d.ts +0 -11
- package/dist/types/handoff-artifacts.d.ts +43 -0
- package/dist/types/hooks-advanced.d.ts +0 -13
- package/dist/types/impact-detection.d.ts +2 -2
- package/dist/types/index.d.ts +4 -6
- package/dist/types/index.js +3 -5
- package/dist/types/infrastructure.js +0 -2
- package/dist/types/kiro-integration.d.ts +0 -6
- package/dist/types/lifecycle.js +0 -2
- package/dist/types/migration/canonical-storage.d.ts +37 -0
- package/dist/types/migration/canonical-storage.js +2 -0
- package/dist/types/migration/index.d.ts +1 -1
- package/dist/types/native-worker.d.ts +48 -0
- package/dist/types/native-worker.js +2 -0
- package/dist/types/network-policy.d.ts +12 -0
- package/dist/types/network-policy.js +2 -0
- package/dist/types/oauth.js +0 -2
- package/dist/types/observability.d.ts +32 -0
- package/dist/types/outbox-worker.d.ts +35 -0
- package/dist/types/outbox-worker.js +11 -0
- package/dist/types/permissions-config.d.ts +0 -27
- package/dist/types/permissions-config.js +0 -2
- package/dist/types/plugin-install.d.ts +0 -11
- package/dist/types/plugin-install.js +0 -2
- package/dist/types/portal.d.ts +1 -0
- package/dist/types/product-public.d.ts +75 -0
- package/dist/types/product-public.js +2 -0
- package/dist/types/project/inputs.d.ts +2 -0
- package/dist/types/project/lint-scaffolder.d.ts +1 -1
- package/dist/types/project/mfe-detection.js +0 -2
- package/dist/types/project/platform-mobile.js +0 -2
- package/dist/types/project/platform-specialty.js +0 -2
- package/dist/types/project-knowledge-graph.d.ts +7 -0
- package/dist/types/runtime-database.d.ts +10 -0
- package/dist/types/runtime-database.js +2 -0
- package/dist/types/runtime-policy.d.ts +51 -0
- package/dist/types/runtime-policy.js +2 -0
- package/dist/types/safety.d.ts +4 -5
- package/dist/types/schema-registry.d.ts +12 -0
- package/dist/types/schema-registry.js +2 -0
- package/dist/types/security.d.ts +52 -0
- package/dist/types/session-safeguard.d.ts +0 -31
- package/dist/types/skill-registry.js +0 -2
- package/dist/types/spec/canonical-repair.d.ts +81 -0
- package/dist/types/spec/canonical-repair.js +2 -0
- package/dist/types/spec/core.d.ts +14 -0
- package/dist/types/spec/index.d.ts +1 -0
- package/dist/types/spec/index.js +1 -0
- package/dist/types/spec/inputs.d.ts +31 -0
- package/dist/types/spec-format.d.ts +24 -0
- package/dist/types/spec-lock-v2.d.ts +13 -7
- package/dist/types/spec-lock-v2.js +1 -1
- package/dist/types/spec-registry.js +0 -2
- package/dist/types/storage-bundle.d.ts +13 -0
- package/dist/types/storage-bundle.js +2 -0
- package/dist/types/storage-catalog.d.ts +18 -0
- package/dist/types/storage-catalog.js +2 -0
- package/dist/types/team-planner.js +0 -2
- package/dist/types/technology-registry.d.ts +35 -0
- package/dist/types/technology-registry.js +2 -0
- package/dist/types/technology-symbols.generated.d.ts +117 -0
- package/dist/types/technology-symbols.generated.js +2 -0
- package/dist/types/telemetry.d.ts +7 -4
- package/dist/types/transport.d.ts +2 -2
- package/dist/types/usage.d.ts +1 -36
- package/dist/types/usage.js +1 -1
- package/dist/types/validate-worker.d.ts +50 -0
- package/dist/types/validate-worker.js +2 -0
- package/dist/types/validation-evidence.d.ts +1 -1
- package/dist/types/validation-receipt.d.ts +104 -0
- package/dist/types/validation-receipt.js +2 -0
- package/dist/types/validation.d.ts +2 -2
- package/package.json +36 -21
- package/planu-native.json +1 -1
- package/planu-plugin.json +23 -40
- package/scripts/lib/pending-release-file.mjs +93 -0
- package/src/i18n/messages/en.json +0 -41
- package/src/i18n/messages/es.json +0 -41
- package/src/i18n/messages/pt.json +0 -41
- package/dist/cli/commands/activate.d.ts +0 -14
- package/dist/cli/commands/activate.js +0 -174
- package/dist/config/license-plans.json +0 -244
- package/dist/config/server-instructions.ts +0 -121
- package/dist/config/version-defaults.ts +0 -76
- package/dist/config/version.ts +0 -18
- package/dist/engine/ai-integration/gemini/settings-generator.d.ts +0 -4
- package/dist/engine/ai-integration/gemini/settings-generator.js +0 -195
- package/dist/engine/ai-integration/kiro/hooks-generator.d.ts +0 -6
- package/dist/engine/ai-integration/kiro/hooks-generator.js +0 -75
- package/dist/engine/hooks/full-spectrum-generator.d.ts +0 -32
- package/dist/engine/hooks/full-spectrum-generator.js +0 -117
- package/dist/engine/license-validator/config-loader.d.ts +0 -5
- package/dist/engine/license-validator/config-loader.js +0 -16
- package/dist/engine/license-validator/core.d.ts +0 -15
- package/dist/engine/license-validator/core.js +0 -151
- package/dist/engine/license-validator/fingerprint.d.ts +0 -3
- package/dist/engine/license-validator/fingerprint.js +0 -17
- package/dist/engine/license-validator/lemon-squeezy.d.ts +0 -5
- package/dist/engine/license-validator/lemon-squeezy.js +0 -55
- package/dist/engine/license-validator.d.ts +0 -5
- package/dist/engine/license-validator.js +0 -6
- package/dist/engine/product-intelligence/index.d.ts +0 -7
- package/dist/engine/product-intelligence/index.js +0 -211
- package/dist/engine/session/auto-save.d.ts +0 -18
- package/dist/engine/session/auto-save.js +0 -98
- package/dist/engine/session/context-snapshot.d.ts +0 -8
- package/dist/engine/session/context-snapshot.js +0 -49
- package/dist/engine/session/memory-sync.d.ts +0 -12
- package/dist/engine/session/memory-sync.js +0 -34
- package/dist/engine/session/session-diff.d.ts +0 -11
- package/dist/engine/session/session-diff.js +0 -42
- package/dist/engine/session/session-merge.d.ts +0 -12
- package/dist/engine/session/session-merge.js +0 -55
- package/dist/engine/session-safeguard/checkpoint-runner.d.ts +0 -4
- package/dist/engine/session-safeguard/checkpoint-runner.js +0 -70
- package/dist/engine/session-safeguard/learnings-buffer.d.ts +0 -16
- package/dist/engine/session-safeguard/learnings-buffer.js +0 -114
- package/dist/engine/session-safeguard/precompaction-drain.d.ts +0 -10
- package/dist/engine/session-safeguard/precompaction-drain.js +0 -82
- package/dist/engine/session-safeguard/unpushed-detector.d.ts +0 -7
- package/dist/engine/session-safeguard/unpushed-detector.js +0 -59
- package/dist/engine/spec-changelog/core.d.ts +0 -16
- package/dist/engine/spec-changelog/core.js +0 -176
- package/dist/engine/spec-changelog/diff.d.ts +0 -18
- package/dist/engine/spec-changelog/diff.js +0 -121
- package/dist/engine/spec-changelog/index.d.ts +0 -3
- package/dist/engine/spec-changelog/index.js +0 -4
- package/dist/engine/telemetry/geo-resolver.d.ts +0 -9
- package/dist/engine/telemetry/geo-resolver.js +0 -43
- package/dist/engine/trial-engine.d.ts +0 -5
- package/dist/engine/trial-engine.js +0 -14
- package/dist/engine/usage-tracker/rate-check.d.ts +0 -7
- package/dist/engine/usage-tracker/rate-check.js +0 -18
- package/dist/engine/usage-tracker/rate-limiter.d.ts +0 -14
- package/dist/engine/usage-tracker/rate-limiter.js +0 -73
- package/dist/engine/usage-tracker/trial.d.ts +0 -27
- package/dist/engine/usage-tracker/trial.js +0 -49
- package/dist/engine/webhook/event-handlers.d.ts +0 -25
- package/dist/engine/webhook/event-handlers.js +0 -89
- package/dist/engine/webhook/index.d.ts +0 -4
- package/dist/engine/webhook/index.js +0 -5
- package/dist/engine/webhook/server.d.ts +0 -12
- package/dist/engine/webhook/server.js +0 -249
- package/dist/engine/webhook/signature.d.ts +0 -16
- package/dist/engine/webhook/signature.js +0 -49
- package/dist/storage/data-dir-discovery.d.ts +0 -31
- package/dist/storage/data-dir-discovery.js +0 -140
- package/dist/storage/license-store.d.ts +0 -6
- package/dist/storage/license-store.js +0 -91
- package/dist/storage/migrations/cwd-to-absolute.d.ts +0 -25
- package/dist/storage/migrations/cwd-to-absolute.js +0 -281
- package/dist/storage/session-store.d.ts +0 -20
- package/dist/storage/session-store.js +0 -128
- package/dist/tools/activate-license.d.ts +0 -6
- package/dist/tools/activate-license.js +0 -132
- package/dist/tools/checkpoint-handler.d.ts +0 -3
- package/dist/tools/checkpoint-handler.js +0 -130
- package/dist/tools/create-spec/adapters/prior-decisions-hint.d.ts +0 -14
- package/dist/tools/create-spec/adapters/prior-decisions-hint.js +0 -30
- package/dist/tools/export-session.d.ts +0 -3
- package/dist/tools/export-session.js +0 -90
- package/dist/tools/init-project/ancestor-data-detector.d.ts +0 -22
- package/dist/tools/init-project/ancestor-data-detector.js +0 -81
- package/dist/tools/license-gate.d.ts +0 -18
- package/dist/tools/license-gate.js +0 -222
- package/dist/tools/license-status.d.ts +0 -3
- package/dist/tools/license-status.js +0 -93
- package/dist/tools/list-sessions.d.ts +0 -3
- package/dist/tools/list-sessions.js +0 -46
- package/dist/tools/planu-session-checkpoint.d.ts +0 -6
- package/dist/tools/planu-session-checkpoint.js +0 -42
- package/dist/tools/restore-session.d.ts +0 -3
- package/dist/tools/restore-session.js +0 -71
- package/dist/tools/spec-history.d.ts +0 -3
- package/dist/tools/spec-history.js +0 -59
- package/dist/tools/update-status/force-done-audit.d.ts +0 -2
- package/dist/tools/update-status/force-done-audit.js +0 -23
- package/dist/tools/webhook.d.ts +0 -6
- package/dist/tools/webhook.js +0 -150
- package/dist/types/changelog.d.ts +0 -49
- package/dist/types/changelog.js +0 -3
- package/dist/types/licensing.d.ts +0 -109
- package/dist/types/licensing.js +0 -4
- package/dist/types/migration/cwd-to-absolute.d.ts +0 -8
- package/dist/types/migration/cwd-to-absolute.js +0 -3
- package/dist/types/product-intelligence.d.ts +0 -60
- package/dist/types/product-intelligence.js +0 -3
- package/dist/types/session.d.ts +0 -84
- package/dist/types/session.js +0 -3
- package/dist/types/webhook.d.ts +0 -62
- package/dist/types/webhook.js +0 -4
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
// tools/tool-registry/group-quality-compliance.ts — Declarative registry: quality & compliance tools.
|
|
3
|
-
//
|
|
4
|
-
// Phase 3 (refactor/registry-phase3): consolidates register-*.ts files for:
|
|
5
|
-
// compliance, compliance-audit, compliance-gate, compliance-test,
|
|
6
|
-
// security, audit-trail, schema-parity, schema-generator,
|
|
7
|
-
// tdd, coverage, eval-skill, ears, spec-lint, readiness, approval,
|
|
8
|
-
// governance, spec-322 (api contract), spec-323 (tdd scaffold), spec-331 (orchestration plan)
|
|
1
|
+
import { technologyValue } from '../../engine/technology-registry.js';
|
|
9
2
|
import { z } from 'zod';
|
|
10
|
-
import {
|
|
3
|
+
import { safeGoverned, safeTracked } from '../safe-handler.js';
|
|
11
4
|
import { projectIdSchema, withProject } from '../tool-registry-helpers.js';
|
|
12
5
|
import { t } from '../../i18n/index.js';
|
|
13
6
|
import { makeDeprecationStub } from './deprecated-stubs.js';
|
|
@@ -276,7 +269,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
276
269
|
outputFormat: z.enum(['html', 'json']).optional().describe(FORMAT_DESCRIBE),
|
|
277
270
|
},
|
|
278
271
|
annotations: { title: 'Generate Compliance Report', readOnlyHint: true },
|
|
279
|
-
},
|
|
272
|
+
}, safeGoverned('generate_compliance_report', (args) => Promise.resolve(handleGenerateComplianceReport(args))));
|
|
280
273
|
s.registerTool('audit_log_export', {
|
|
281
274
|
description: 'Export the project audit trail in CSV, JSON, or JSON-LD format. ' +
|
|
282
275
|
'Supports optional date range filtering. ' +
|
|
@@ -297,7 +290,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
297
290
|
.describe('Optional date range filter for audit entries'),
|
|
298
291
|
},
|
|
299
292
|
annotations: { title: 'Export Audit Log', readOnlyHint: true },
|
|
300
|
-
},
|
|
293
|
+
}, safeGoverned('audit_log_export', async (args) => handleAuditLogExport(args)));
|
|
301
294
|
s.registerTool('data_retention_policy', {
|
|
302
295
|
description: 'Configure the data retention policy for the project. ' +
|
|
303
296
|
'Specifies how long data should be retained and whether auto-deletion is enabled. ' +
|
|
@@ -327,7 +320,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
327
320
|
.describe('Days before deletion to notify (default: 7)'),
|
|
328
321
|
},
|
|
329
322
|
annotations: { title: 'Configure Data Retention Policy', readOnlyHint: false },
|
|
330
|
-
},
|
|
323
|
+
}, safeGoverned('data_retention_policy', async (args) => handleDataRetentionPolicy(args)));
|
|
331
324
|
// ── Compliance gate ───────────────────────────────────────────────────────────
|
|
332
325
|
s.registerTool('configure_compliance_gate', {
|
|
333
326
|
description: 'Configure the compliance gate that runs automatically when a spec is sent to review. ' +
|
|
@@ -336,9 +329,9 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
336
329
|
'Pro feature.',
|
|
337
330
|
inputSchema: ConfigureComplianceGateSchema.shape,
|
|
338
331
|
annotations: { title: 'Configure Compliance Gate', destructiveHint: false },
|
|
339
|
-
},
|
|
332
|
+
}, safeGoverned('configure_compliance_gate', async (args) => handleConfigureComplianceGate(args)));
|
|
340
333
|
s.registerTool('compliance_gate_status', {
|
|
341
|
-
description: 'Check the compliance gate configuration for this project. Returns the current mode and threshold.
|
|
334
|
+
description: 'Check the compliance gate configuration for this project. Returns the current mode and threshold.',
|
|
342
335
|
inputSchema: {
|
|
343
336
|
projectPath: z.string().describe('Absolute path to the project root'),
|
|
344
337
|
},
|
|
@@ -365,12 +358,12 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
365
358
|
.min(1)
|
|
366
359
|
.describe(COMPLIANCE_TEST_FRAMEWORK_DESCRIBE),
|
|
367
360
|
outputFormat: z
|
|
368
|
-
.enum(['jest', 'gherkin', 'markdown'])
|
|
361
|
+
.enum([technologyValue('technology-jest-35e99f'), 'gherkin', 'markdown'])
|
|
369
362
|
.optional()
|
|
370
363
|
.describe(TEST_FORMAT_DESCRIBE),
|
|
371
364
|
},
|
|
372
365
|
annotations: { title: 'Generate Compliance Tests', readOnlyHint: true },
|
|
373
|
-
},
|
|
366
|
+
}, safeGoverned('generate_compliance_tests', async (args) => handleGenerateComplianceTests(args)));
|
|
374
367
|
s.registerTool('compliance_coverage_report', {
|
|
375
368
|
description: 'List all compliance controls for the requested frameworks, showing their IDs, ' +
|
|
376
369
|
'titles, descriptions, and matching keywords. ' +
|
|
@@ -387,7 +380,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
387
380
|
.describe(COMPLIANCE_TEST_FRAMEWORK_DESCRIBE),
|
|
388
381
|
},
|
|
389
382
|
annotations: { title: 'Compliance Coverage Report', readOnlyHint: true },
|
|
390
|
-
},
|
|
383
|
+
}, safeGoverned('compliance_coverage_report', (args) => Promise.resolve(handleComplianceCoverageReport(args))));
|
|
391
384
|
// ── Security ─────────────────────────────────────────────────────────────────
|
|
392
385
|
s.registerTool('security_check', {
|
|
393
386
|
description: t('tools.security_check.description'),
|
|
@@ -405,7 +398,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
405
398
|
.optional()
|
|
406
399
|
.describe('Absolute paths to code files to scan for insecure patterns'),
|
|
407
400
|
},
|
|
408
|
-
},
|
|
401
|
+
}, safeGoverned('security_check', withProject((args) => handleSecurityCheck(args))));
|
|
409
402
|
// ── Audit trail ──────────────────────────────────────────────────────────────
|
|
410
403
|
s.registerTool('audit_trail', {
|
|
411
404
|
description: 'Query the immutable audit log for a project. Supports filtering by specId, userId, eventType, and date range. Returns events with SHA-256 chain integrity status.',
|
|
@@ -437,7 +430,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
437
430
|
.optional()
|
|
438
431
|
.describe('Maximum number of events to return (default: 100, max: 1000).'),
|
|
439
432
|
},
|
|
440
|
-
},
|
|
433
|
+
}, safeGoverned('audit_trail', withProject((args) => handleAuditTrail(args))));
|
|
441
434
|
s.registerTool('generate_attestation', {
|
|
442
435
|
description: 'Generate a compliance attestation document for a specific spec. Includes full audit history, chain integrity verification, and event summary for SOC2/HIPAA/ISO27001 audits.',
|
|
443
436
|
annotations: { readOnlyHint: true },
|
|
@@ -449,7 +442,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
449
442
|
.max(500)
|
|
450
443
|
.describe('Spec ID to generate attestation for (e.g. SPEC-042).'),
|
|
451
444
|
},
|
|
452
|
-
},
|
|
445
|
+
}, safeGoverned('generate_attestation', withProject((args) => handleGenerateAttestation(args))));
|
|
453
446
|
s.registerTool('export_audit_trail', {
|
|
454
447
|
description: 'Export the EU AI Act Article 12 immutable audit trail for every Planu tool invocation. ' +
|
|
455
448
|
'Supports filtering by project, date range, or spec. Verifies SHA-256 chain integrity. ' +
|
|
@@ -485,7 +478,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
485
478
|
.optional()
|
|
486
479
|
.describe('Maximum number of entries to return.'),
|
|
487
480
|
},
|
|
488
|
-
},
|
|
481
|
+
}, safeGoverned('export_audit_trail', (args) => Promise.resolve(handleExportAuditTrail(args))));
|
|
489
482
|
// ── Schema parity ────────────────────────────────────────────────────────────
|
|
490
483
|
s.registerTool('audit_schema_type_parity', {
|
|
491
484
|
description: 'Scans all register-*.ts tool files in the project for mismatches between Zod optional ' +
|
|
@@ -500,7 +493,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
500
493
|
.max(4096)
|
|
501
494
|
.describe('Absolute path to the project root to scan. The auditor will look for src/tools/register-*.ts and src/types/**/*.ts.'),
|
|
502
495
|
},
|
|
503
|
-
},
|
|
496
|
+
}, safeGoverned('audit_schema_type_parity', async (args) => handleAuditSchemaParity(args)));
|
|
504
497
|
s.registerTool('fix_schema_type_parity', {
|
|
505
498
|
description: 'Automatically fixes Zod/TypeScript optional parity issues found by audit_schema_type_parity. ' +
|
|
506
499
|
'Adds "?" to TypeScript type definitions for fields that are marked .optional() in Zod schemas. ' +
|
|
@@ -517,7 +510,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
517
510
|
.default(true)
|
|
518
511
|
.describe('When true (default), shows what would change without writing any files. Set to false to apply the fixes.'),
|
|
519
512
|
},
|
|
520
|
-
},
|
|
513
|
+
}, safeGoverned('fix_schema_type_parity', async (args) => handleFixSchemaParity(args)));
|
|
521
514
|
// ── Schema generator ─────────────────────────────────────────────────────────
|
|
522
515
|
s.registerTool('generate_validation_schema', {
|
|
523
516
|
description: 'Analyze a spec and generate validation schema code (Zod, Yup, or Valibot). ' +
|
|
@@ -528,10 +521,10 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
528
521
|
projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
|
|
529
522
|
specId: SpecIdSchema.describe('Spec ID to analyze (e.g. SPEC-042).'),
|
|
530
523
|
library: z
|
|
531
|
-
.enum(['zod', 'yup', 'valibot', 'all'])
|
|
524
|
+
.enum([technologyValue('technology-zod-4f63cf'), 'yup', 'valibot', 'all'])
|
|
532
525
|
.describe('Schema library. Values: zod, yup, valibot, all.'),
|
|
533
526
|
outputFormat: z
|
|
534
|
-
.enum(['typescript', 'javascript'])
|
|
527
|
+
.enum([technologyValue('technology-typescript-969545'), 'javascript'])
|
|
535
528
|
.describe('Output format. Values: typescript, javascript.'),
|
|
536
529
|
outputPath: z
|
|
537
530
|
.string()
|
|
@@ -612,7 +605,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
612
605
|
.describe('Spec ID to analyze (e.g., "SPEC-001"), or "all" to analyze every spec in the project'),
|
|
613
606
|
},
|
|
614
607
|
annotations: { title: 'Spec Test Coverage', readOnlyHint: true },
|
|
615
|
-
},
|
|
608
|
+
}, safeGoverned('spec_coverage', withProject((args) => handleSpecCoverage(args))));
|
|
616
609
|
// ── Eval skill ───────────────────────────────────────────────────────────────
|
|
617
610
|
s.registerTool('eval_skill', {
|
|
618
611
|
description: 'Evaluate the quality of a Claude skill file against a set of test scenarios. ' +
|
|
@@ -845,7 +838,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
845
838
|
.describe('Evaluation mode: strict (default) requires score >=70; lenient requires >=60'),
|
|
846
839
|
},
|
|
847
840
|
outputSchema: CheckReadinessOutputSchema,
|
|
848
|
-
},
|
|
841
|
+
}, safeGoverned('check_readiness', withProject((args) => handleCheckReadiness(args))));
|
|
849
842
|
// ── SPEC-961: Architecture lint ─────────────────────────────────────────────
|
|
850
843
|
s.registerTool('architecture_lint', {
|
|
851
844
|
description: 'Scan project codebase for Clean Architecture and SOLID principle violations. Reports handler bloat, layer violations, and missing repository patterns.',
|
|
@@ -864,7 +857,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
864
857
|
.describe('Glob patterns to exclude (default: node_modules, .git, dist)'),
|
|
865
858
|
failFast: z.boolean().optional().describe('Stop on first error (default: false)'),
|
|
866
859
|
},
|
|
867
|
-
},
|
|
860
|
+
}, safeGoverned('architecture_lint', withProject((args) => handleArchitectureLint(args))));
|
|
868
861
|
// ── SPEC-962: SOLID check ───────────────────────────────────────────────────
|
|
869
862
|
s.registerTool('solid_check', {
|
|
870
863
|
description: 'Scan project codebase for SOLID principle violations. Reports SRP, OCP, LSP, ISP, and DIP issues with a scored report (0-100) and per-principle breakdown.',
|
|
@@ -877,7 +870,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
877
870
|
.describe('Glob patterns to exclude (default: node_modules, .git, dist)'),
|
|
878
871
|
failFast: z.boolean().optional().describe('Stop on first error (default: false)'),
|
|
879
872
|
},
|
|
880
|
-
},
|
|
873
|
+
}, safeGoverned('solid_check', withProject((args) => handleSolidCheck({
|
|
881
874
|
projectPath: args.projectPath,
|
|
882
875
|
exclude: args.exclude,
|
|
883
876
|
failFast: args.failFast,
|
|
@@ -924,7 +917,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
924
917
|
.optional()
|
|
925
918
|
.describe('Fail on first failing endpoint (default: false)'),
|
|
926
919
|
},
|
|
927
|
-
},
|
|
920
|
+
}, safeGoverned('verify_integrations', withProject((args) => handleVerifyIntegrations({
|
|
928
921
|
projectPath: args.projectPath,
|
|
929
922
|
endpoints: args.endpoints,
|
|
930
923
|
timeout: args.timeout,
|
|
@@ -961,7 +954,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
961
954
|
...projectIdSchema,
|
|
962
955
|
specId: SpecIdSchema.describe('Spec ID to generate handoff package for'),
|
|
963
956
|
},
|
|
964
|
-
},
|
|
957
|
+
}, safeGoverned('package_handoff', withProject((args) => handlePackageHandoff(args))));
|
|
965
958
|
// ── Approval ─────────────────────────────────────────────────────────────────
|
|
966
959
|
s.registerTool('configure_approval_policy', {
|
|
967
960
|
description: 'Define the approval policy for a project: how many approvals are required, ' +
|
|
@@ -987,7 +980,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
987
980
|
.describe('Roles allowed to approve specs. If empty or omitted, any reviewer can approve.'),
|
|
988
981
|
},
|
|
989
982
|
annotations: { title: 'Configure Approval Policy', destructiveHint: false },
|
|
990
|
-
},
|
|
983
|
+
}, safeGoverned('configure_approval_policy', (args) => handleConfigureApprovalPolicy(args)));
|
|
991
984
|
s.registerTool('issue_reviewer_token', {
|
|
992
985
|
description: '[SPEC-722] Issue a signed reviewer token for approve_spec. ' +
|
|
993
986
|
'Must be called from a DIFFERENT session than the one that created the spec. ' +
|
|
@@ -1009,7 +1002,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
1009
1002
|
.describe('Host/agent platform identifier (e.g. "claude-code", "cursor").'),
|
|
1010
1003
|
},
|
|
1011
1004
|
annotations: { title: 'Issue Reviewer Token', destructiveHint: false },
|
|
1012
|
-
},
|
|
1005
|
+
}, safeGoverned('issue_reviewer_token', (args) => handleIssueReviewerToken(args)));
|
|
1013
1006
|
s.registerTool('approve_spec', {
|
|
1014
1007
|
description: '[SPEC-722] Record that a reviewer has approved a spec. ' +
|
|
1015
1008
|
'Requires a signed reviewerToken (from issue_reviewer_token) and the plannerToken ' +
|
|
@@ -1043,7 +1036,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
1043
1036
|
'Allows approval from the same model if the panel was heterogeneous.'),
|
|
1044
1037
|
},
|
|
1045
1038
|
annotations: { title: 'Approve Spec', destructiveHint: true },
|
|
1046
|
-
},
|
|
1039
|
+
}, safeGoverned('approve_spec', (args) => handleApproveSpec(args)));
|
|
1047
1040
|
s.registerTool('request_changes', {
|
|
1048
1041
|
description: 'Request changes on a spec. The spec is moved back to draft and prior approvals are cleared. ' +
|
|
1049
1042
|
'A comment explaining the required changes is mandatory.',
|
|
@@ -1075,7 +1068,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
1075
1068
|
.describe('Role of the reviewer (e.g. "tech-lead", "qa").'),
|
|
1076
1069
|
},
|
|
1077
1070
|
annotations: { title: 'Request Changes', destructiveHint: true },
|
|
1078
|
-
},
|
|
1071
|
+
}, safeGoverned('request_changes', (args) => handleRequestChanges(args)));
|
|
1079
1072
|
s.registerTool('approval_status', {
|
|
1080
1073
|
description: 'Show the current approval status for a spec: who approved, how many are needed, ' +
|
|
1081
1074
|
'time in review, and SLA breach warning if applicable.',
|
|
@@ -1110,7 +1103,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
1110
1103
|
.optional()
|
|
1111
1104
|
.describe('Raw spec content to analyze when specId is not available'),
|
|
1112
1105
|
},
|
|
1113
|
-
},
|
|
1106
|
+
}, safeGoverned('data_governance', withProject((args) => handleDataGovernance(args))));
|
|
1114
1107
|
s.registerTool('legal_compliance_report', {
|
|
1115
1108
|
description: 'Generate a legal compliance report for the project. ' +
|
|
1116
1109
|
'Shows detected legal domains, applicable regulations by country, ' +
|
|
@@ -1120,7 +1113,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
1120
1113
|
inputSchema: {
|
|
1121
1114
|
...projectIdSchema,
|
|
1122
1115
|
},
|
|
1123
|
-
},
|
|
1116
|
+
}, safeGoverned('legal_compliance_report', withProject((args) => handleLegalComplianceReport(args))));
|
|
1124
1117
|
// ── SPEC-322: API Contract Validation ────────────────────────────────────────
|
|
1125
1118
|
s.registerTool('validate_api_contract', {
|
|
1126
1119
|
description: 'Validate an OpenAPI 3.x/Swagger or GraphQL SDL contract against the actual implementation in a project. ' +
|
|
@@ -1144,7 +1137,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
1144
1137
|
.max(4096)
|
|
1145
1138
|
.describe('Absolute path to the API contract file. For OpenAPI: .json or .yaml file. For GraphQL: .graphql, .gql, or .sdl file.'),
|
|
1146
1139
|
contractFormat: z
|
|
1147
|
-
.enum(['openapi', 'graphql', 'auto'])
|
|
1140
|
+
.enum(['openapi', technologyValue('technology-graphql-aed31c'), 'auto'])
|
|
1148
1141
|
.optional()
|
|
1149
1142
|
.describe('Format of the contract file. Valid values: openapi, graphql, auto. auto (default) detects format from the file extension: .json/.yaml → openapi, .graphql/.gql/.sdl → graphql.'),
|
|
1150
1143
|
},
|
|
@@ -14,17 +14,17 @@ interface MaybeProjectArgs {
|
|
|
14
14
|
* Wraps a handler that requires a resolved projectId.
|
|
15
15
|
* Resolves projectId from projectId or projectPath; returns missingProjectIdError if neither.
|
|
16
16
|
*
|
|
17
|
-
* Usage (replaces the 5-line resolveProjectId block in each safeTracked/
|
|
17
|
+
* Usage (replaces the 5-line resolveProjectId block in each safeTracked/safeGoverned callback):
|
|
18
18
|
* ```ts
|
|
19
19
|
* // Before:
|
|
20
|
-
*
|
|
20
|
+
* safeGoverned('tool', async (args) => {
|
|
21
21
|
* const pid = resolveProjectId(args as { projectId?: string; projectPath?: string });
|
|
22
22
|
* if (!pid) return missingProjectIdError;
|
|
23
23
|
* return handleFoo({ ...args, projectId: pid } as FooInput);
|
|
24
24
|
* })
|
|
25
25
|
*
|
|
26
26
|
* // After:
|
|
27
|
-
*
|
|
27
|
+
* safeGoverned('tool', withProject((args) => handleFoo(args as never)))
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
30
|
export declare function withProject<T extends MaybeProjectArgs>(handler: (args: T & {
|
|
@@ -16,17 +16,17 @@ export const projectIdSchema = {
|
|
|
16
16
|
* Wraps a handler that requires a resolved projectId.
|
|
17
17
|
* Resolves projectId from projectId or projectPath; returns missingProjectIdError if neither.
|
|
18
18
|
*
|
|
19
|
-
* Usage (replaces the 5-line resolveProjectId block in each safeTracked/
|
|
19
|
+
* Usage (replaces the 5-line resolveProjectId block in each safeTracked/safeGoverned callback):
|
|
20
20
|
* ```ts
|
|
21
21
|
* // Before:
|
|
22
|
-
*
|
|
22
|
+
* safeGoverned('tool', async (args) => {
|
|
23
23
|
* const pid = resolveProjectId(args as { projectId?: string; projectPath?: string });
|
|
24
24
|
* if (!pid) return missingProjectIdError;
|
|
25
25
|
* return handleFoo({ ...args, projectId: pid } as FooInput);
|
|
26
26
|
* })
|
|
27
27
|
*
|
|
28
28
|
* // After:
|
|
29
|
-
*
|
|
29
|
+
* safeGoverned('tool', withProject((args) => handleFoo(args as never)))
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
32
|
export function withProject(handler) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Returns
|
|
2
|
+
* Returns the live tool inventory captured by the canonical registry.
|
|
3
3
|
*/
|
|
4
4
|
export declare function readRegisteredToolNames(): Promise<string[]>;
|
|
5
5
|
//# sourceMappingURL=registered-tools.d.ts.map
|
|
@@ -1,21 +1,9 @@
|
|
|
1
1
|
// tools/tool-usage-report/registered-tools.ts — SPEC-574
|
|
2
|
-
|
|
3
|
-
import { readFileSync } from 'node:fs';
|
|
4
|
-
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import { dirname, join } from 'node:path';
|
|
6
|
-
function loadLicensePlans() {
|
|
7
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
-
const __dirname = dirname(__filename);
|
|
9
|
-
const configPath = join(__dirname, '../../config/license-plans.json');
|
|
10
|
-
const raw = readFileSync(configPath, 'utf-8');
|
|
11
|
-
return JSON.parse(raw);
|
|
12
|
-
}
|
|
2
|
+
import { readCanonicalToolNames } from '../tool-registry/inventory.js';
|
|
13
3
|
/**
|
|
14
|
-
* Returns
|
|
4
|
+
* Returns the live tool inventory captured by the canonical registry.
|
|
15
5
|
*/
|
|
16
6
|
export function readRegisteredToolNames() {
|
|
17
|
-
|
|
18
|
-
const allTools = new Set([...plans.freeTools, ...plans.proTools, ...plans.alwaysAllowed]);
|
|
19
|
-
return Promise.resolve([...allTools].sort());
|
|
7
|
+
return Promise.resolve(readCanonicalToolNames().sort());
|
|
20
8
|
}
|
|
21
9
|
//# sourceMappingURL=registered-tools.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { FormatGateOutput } from '../../types/spec/inputs.js';
|
|
2
|
+
import type { Spec } from '../../types/spec/core.js';
|
|
3
|
+
export interface ComplianceGateResult {
|
|
4
|
+
skipped: boolean;
|
|
5
|
+
score: number | null;
|
|
6
|
+
issues: string[];
|
|
7
|
+
blocked: boolean;
|
|
8
|
+
}
|
|
9
|
+
/** Run the optional compliance check for a transition into review. */
|
|
10
|
+
export declare function checkComplianceGate(specId: string, projectId: string, projectPath: string | undefined): Promise<ComplianceGateResult>;
|
|
11
|
+
/** Validate canonical spec format before approval, preserving audited bypass warnings. */
|
|
12
|
+
export declare function checkApprovedFormatGate(spec: Spec, newStatus: string, forceApprove?: boolean | undefined): Promise<FormatGateOutput>;
|
|
13
|
+
//# sourceMappingURL=approval-gates.d.ts.map
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { validateSpecFormat } from '../../core/spec-validator.js';
|
|
2
|
+
import { getComplianceGateConfig } from '../../storage/compliance-gate-config-store.js';
|
|
3
|
+
import { formatKeyValue } from '../output-formatter.js';
|
|
4
|
+
import { reportClassifiedDegradation } from '../../errors/classified-degradation.js';
|
|
5
|
+
/** Run the optional compliance check for a transition into review. */
|
|
6
|
+
export async function checkComplianceGate(specId, projectId, projectPath) {
|
|
7
|
+
if (!projectPath) {
|
|
8
|
+
return { skipped: true, score: null, issues: [], blocked: false };
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
const { scoreCompliance } = await import('../../engine/verifier/compliance-scorer.js');
|
|
12
|
+
const result = await scoreCompliance(specId, projectPath);
|
|
13
|
+
if (result.totalCriteria === 0 && result.criteriaDetails.length === 0) {
|
|
14
|
+
return { skipped: true, score: null, issues: [], blocked: false };
|
|
15
|
+
}
|
|
16
|
+
const score = result.score;
|
|
17
|
+
const issues = result.criteriaDetails
|
|
18
|
+
.filter((detail) => detail.status === 'unverified')
|
|
19
|
+
.map((detail) => detail.criterion)
|
|
20
|
+
.slice(0, 5);
|
|
21
|
+
const config = await getComplianceGateConfig(projectId);
|
|
22
|
+
const blocked = (config?.mode ?? 'soft') === 'hard' && score < (config?.threshold ?? 90);
|
|
23
|
+
return { skipped: false, score, issues, blocked };
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
/* reliability-optional: COMPLIANCE_GATE_UNAVAILABLE — optional gate is explicitly skipped */
|
|
27
|
+
reportClassifiedDegradation('COMPLIANCE_GATE_UNAVAILABLE', error);
|
|
28
|
+
return { skipped: true, score: null, issues: [], blocked: false };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/** Validate canonical spec format before approval, preserving audited bypass warnings. */
|
|
32
|
+
export async function checkApprovedFormatGate(spec, newStatus, forceApprove = false) {
|
|
33
|
+
if (newStatus !== 'approved') {
|
|
34
|
+
return { blockResult: null, qualityWarnings: [] };
|
|
35
|
+
}
|
|
36
|
+
let result;
|
|
37
|
+
try {
|
|
38
|
+
result = await validateSpecFormat(spec, {
|
|
39
|
+
readinessMode: 'strict',
|
|
40
|
+
bypassReason: forceApprove ? 'forceApprove' : undefined,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
/* reliability-optional: FORMAT_GATE_UNAVAILABLE — caller receives explicit degraded result */
|
|
45
|
+
reportClassifiedDegradation('FORMAT_GATE_UNAVAILABLE', error);
|
|
46
|
+
return { blockResult: null, qualityWarnings: [] };
|
|
47
|
+
}
|
|
48
|
+
if (result.valid) {
|
|
49
|
+
const qualityWarnings = result.warnings
|
|
50
|
+
.filter((warning) => warning.message.includes('[BYPASSED: forceApprove]'))
|
|
51
|
+
.map((warning) => `[${warning.code}] ${warning.message.replace('[BYPASSED: forceApprove] ', '')} (path: ${warning.path})`);
|
|
52
|
+
return { blockResult: null, qualityWarnings };
|
|
53
|
+
}
|
|
54
|
+
const message = `Spec format validation failed with ${String(result.errors.length)} error(s) — fix before approving, or pass forceApprove: true to bypass with warnings.`;
|
|
55
|
+
const blockResult = {
|
|
56
|
+
content: [
|
|
57
|
+
{
|
|
58
|
+
type: 'text',
|
|
59
|
+
text: formatKeyValue({
|
|
60
|
+
error: 'SPEC_FORMAT_INVALID',
|
|
61
|
+
message,
|
|
62
|
+
errors: result.errors.length,
|
|
63
|
+
warnings: result.warnings.length,
|
|
64
|
+
firstError: result.errors[0]?.message,
|
|
65
|
+
firstErrorPath: result.errors[0]?.path,
|
|
66
|
+
}, 'Spec format invalid'),
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
isError: true,
|
|
70
|
+
structuredContent: {
|
|
71
|
+
error: 'SPEC_FORMAT_INVALID',
|
|
72
|
+
message,
|
|
73
|
+
errors: result.errors,
|
|
74
|
+
warnings: result.warnings,
|
|
75
|
+
code: 422,
|
|
76
|
+
context: { specId: spec.id, errors: result.errors, warnings: result.warnings },
|
|
77
|
+
fixHint: result.errors[0]
|
|
78
|
+
? `Fix: ${result.errors[0].message}. Path: ${result.errors[0].path}. Or pass forceApprove: true.`
|
|
79
|
+
: 'Fix all format errors before approving, or pass forceApprove: true to bypass with warnings.',
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
return { blockResult, qualityWarnings: [] };
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=approval-gates.js.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// tools/update-status/batch.ts — SPEC-1017 batch status transitions
|
|
2
2
|
import { handleUpdateStatus } from './index.js';
|
|
3
3
|
import { resolveProjectIdOrAutoDetect } from '../resolve-project-id.js';
|
|
4
|
+
import { reportClassifiedDegradation } from '../../errors/classified-degradation.js';
|
|
4
5
|
function firstText(result) {
|
|
5
6
|
const first = result.content[0];
|
|
6
7
|
return first?.type === 'text' ? first.text : JSON.stringify(result.structuredContent ?? {});
|
|
@@ -76,8 +77,9 @@ export async function handleUpdateStatusBatch(input) {
|
|
|
76
77
|
const { runStrictPlanuCleanup } = await import('../../engine/spec-migrator/index.js');
|
|
77
78
|
await runStrictPlanuCleanup(resolved.projectPath);
|
|
78
79
|
}
|
|
79
|
-
catch {
|
|
80
|
-
/*
|
|
80
|
+
catch (error) {
|
|
81
|
+
/* reliability-cleanup: POST_BATCH_STRICT_CLEANUP — validation remains fail-closed */
|
|
82
|
+
reportClassifiedDegradation('POST_BATCH_STRICT_CLEANUP', error);
|
|
81
83
|
}
|
|
82
84
|
const text = [
|
|
83
85
|
`Batch status transition complete: ${input.status}`,
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { ToolResult } from '../../types/index.js';
|
|
2
|
-
import type { FormatGateOutput } from '../../types/spec/inputs.js';
|
|
3
2
|
import type { Spec } from '../../types/spec/core.js';
|
|
4
3
|
import type { EscalateResult } from '../../types/escalator.js';
|
|
4
|
+
import type { ValidationFreshnessLease } from '../../engine/validation/validation-freshness.js';
|
|
5
|
+
import { type DoneReceiptVerifier } from './done-receipt-verifier.js';
|
|
6
|
+
export { completedJobPublishesReceipt } from './done-receipt-verifier.js';
|
|
5
7
|
/**
|
|
6
8
|
* The reason why the validate gate blocked a `done` transition.
|
|
7
9
|
* Each reason maps to a specific fix-hint shown to the LLM.
|
|
@@ -79,6 +81,7 @@ export interface DoneGateResult {
|
|
|
79
81
|
* Caller should surface this as a warning in the success response.
|
|
80
82
|
*/
|
|
81
83
|
forcedBypassWarning: string | null;
|
|
84
|
+
freshnessLease: ValidationFreshnessLease | null;
|
|
82
85
|
}
|
|
83
86
|
/**
|
|
84
87
|
* SPEC-725: Check the validation-report artifact gate before marking done.
|
|
@@ -96,30 +99,9 @@ export declare function checkSpecReviewGate(specId: string, projectId: string, _
|
|
|
96
99
|
* When force=true, gates are not blocking but failing items are recorded in
|
|
97
100
|
* the project's force-bypass-log.json for traceability (guard: done ≠ implemented).
|
|
98
101
|
*/
|
|
99
|
-
export declare function checkDoneGates(spec: Spec, specId: string, projectId: string, projectPath: string | undefined,
|
|
100
|
-
export interface ComplianceGateResult {
|
|
101
|
-
skipped: boolean;
|
|
102
|
-
score: number | null;
|
|
103
|
-
issues: string[];
|
|
104
|
-
blocked: boolean;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* SPEC-447: Runs the compliance check when transitioning to 'review'.
|
|
108
|
-
* Never blocks the transition if the compliance engine is unavailable or fails.
|
|
109
|
-
*/
|
|
110
|
-
export declare function checkComplianceGate(specId: string, projectId: string, projectPath: string | undefined): Promise<ComplianceGateResult>;
|
|
102
|
+
export declare function checkDoneGates(spec: Spec, specId: string, projectId: string, projectPath: string | undefined, _force: boolean | undefined, _forceReason?: string, verifyReceipt?: DoneReceiptVerifier): Promise<DoneGateResult>;
|
|
111
103
|
export { checkQaGate } from './qa-gate.js';
|
|
112
|
-
|
|
113
|
-
* SPEC-716 / SPEC-780: Format gate for transition to 'approved'.
|
|
114
|
-
*
|
|
115
|
-
* - newStatus !== 'approved' → returns `{ blockResult: null, qualityWarnings: [] }` (gate inert)
|
|
116
|
-
* - validateSpecFormat returns valid → `{ blockResult: null, qualityWarnings: [] }`
|
|
117
|
-
* - validateSpecFormat returns invalid AND `forceApprove !== true` → `{ blockResult: <SPEC_FORMAT_INVALID>, qualityWarnings: [] }` (block, legacy behavior)
|
|
118
|
-
* - validateSpecFormat returns invalid AND `forceApprove === true` → `{ blockResult: null, qualityWarnings: <serialized errors> }` (proceed; warnings written to spec frontmatter by caller, mirroring SPEC-769 readiness gate)
|
|
119
|
-
*
|
|
120
|
-
* Best-effort: never throws — gate is skipped on unexpected errors.
|
|
121
|
-
*/
|
|
122
|
-
export declare function checkApprovedFormatGate(spec: Spec, newStatus: string, forceApprove?: boolean | undefined): Promise<FormatGateOutput>;
|
|
104
|
+
export { checkApprovedFormatGate, checkComplianceGate, type ComplianceGateResult, } from './approval-gates.js';
|
|
123
105
|
/**
|
|
124
106
|
* Run the validate gate wrapped in withEscalation for bounded retries.
|
|
125
107
|
*
|