agentic-qe 3.14.2 → 3.14.4
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/.claude/agents/v3/qe-coverage-specialist.md +1 -1
- package/.claude/agents/v3/qe-fleet-commander.md +1 -1
- package/.claude/agents/v3/qe-pentest-validator.md +1 -1
- package/.claude/agents/v3/qe-queen-coordinator.md +1 -1
- package/.claude/agents/v3/qe-risk-assessor.md +1 -1
- package/.claude/agents/v3/qe-root-cause-analyzer.md +1 -1
- package/.claude/agents/v3/qe-security-auditor.md +1 -1
- package/.claude/agents/v3/qe-test-architect.md +1 -1
- package/.claude/commands/aqe-costs.md +10 -10
- package/.claude/helpers/advisor-call.cjs +3 -3
- package/.claude/helpers/v3/advisor-call.cjs +3 -3
- package/.claude/skills/.validation/examples/chaos-engineering-output.example.json +1 -1
- package/.claude/skills/.validation/examples/performance-testing-output.example.json +1 -1
- package/.claude/skills/.validation/examples/security-testing-output.example.json +1 -1
- package/.claude/skills/.validation/examples/testability-scoring-output.example.json +1 -1
- package/.claude/skills/.validation/schemas/skill-eval.schema.json +4 -1
- package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +1 -1
- package/.claude/skills/.validation/schemas/skill-output.template.json +1 -1
- package/.claude/skills/.validation/templates/eval.template.yaml +1 -1
- package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +1 -1
- package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +1 -1
- package/.claude/skills/.validation/test-data/sample-output.json +1 -1
- package/.claude/skills/a11y-ally/SKILL.md +1 -1
- package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +1 -1
- package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +1 -1
- package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +1 -1
- package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +1 -1
- package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +1 -1
- package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +1 -1
- package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +1 -1
- package/.claude/skills/contract-testing/evals/contract-testing.yaml +1 -1
- package/.claude/skills/database-testing/evals/database-testing.yaml +1 -1
- package/.claude/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +1 -1
- package/.claude/skills/localization-testing/evals/localization-testing.yaml +1 -1
- package/.claude/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +1 -1
- package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +1 -1
- package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +1 -1
- package/.claude/skills/mutation-testing/test-data/sample-output.json +1 -1
- package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +1 -1
- package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +1 -1
- package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +1 -1
- package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +1 -1
- package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +1 -1
- package/.claude/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +1 -1
- package/.claude/skills/pentest-validation/evals/pentest-validation.yaml +1 -1
- package/.claude/skills/performance-testing/evals/performance-testing.yaml +1 -1
- package/.claude/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +1 -1
- package/.claude/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +1 -1
- package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +1 -1
- package/.claude/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +1 -1
- package/.claude/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +1 -1
- package/.claude/skills/qe-browser/evals/qe-browser.yaml +1 -1
- package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +1 -1
- package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +1 -1
- package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +1 -1
- package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +1 -1
- package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +2 -2
- package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +1 -1
- package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +1 -1
- package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +1 -1
- package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +1 -1
- package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +1 -1
- package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +1 -1
- package/.claude/skills/regression-testing/evals/regression-testing.yaml +1 -1
- package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +1 -1
- package/.claude/skills/security-testing/evals/security-testing.yaml +1 -1
- package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +1 -1
- package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +1 -1
- package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +1 -1
- package/.claude/skills/skills-manifest.json +1 -1
- package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +1 -1
- package/.claude/skills/test-data-management/evals/test-data-management.yaml +1 -1
- package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +1 -1
- package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +1 -1
- package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +1 -1
- package/.claude/skills/validation-pipeline/evals/validation-pipeline.yaml +1 -1
- package/.claude/skills/verification-quality/evals/verification-quality.yaml +1 -1
- package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +1 -1
- package/.claude/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +1 -1
- package/.opencode/agents/collective-intelligence-coordinator.yaml +1 -1
- package/.opencode/agents/ddd-domain-expert.yaml +1 -1
- package/.opencode/agents/memory-specialist.yaml +1 -1
- package/.opencode/agents/performance-engineer.yaml +1 -1
- package/.opencode/agents/qe-accessibility-auditor.yaml +1 -1
- package/.opencode/agents/qe-api-contract-validator.yaml +1 -1
- package/.opencode/agents/qe-bdd-generator.yaml +1 -1
- package/.opencode/agents/qe-chaos-engineer.yaml +1 -1
- package/.opencode/agents/qe-code-complexity.yaml +1 -1
- package/.opencode/agents/qe-code-intelligence.yaml +1 -1
- package/.opencode/agents/qe-coverage-analyzer.yaml +1 -1
- package/.opencode/agents/qe-defect-predictor.yaml +1 -1
- package/.opencode/agents/qe-dependency-mapper.yaml +1 -1
- package/.opencode/agents/qe-deployment-advisor.yaml +1 -1
- package/.opencode/agents/qe-devils-advocate.yaml +1 -1
- package/.opencode/agents/qe-flaky-hunter.yaml +1 -1
- package/.opencode/agents/qe-fleet-commander.yaml +1 -1
- package/.opencode/agents/qe-gap-detector.yaml +1 -1
- package/.opencode/agents/qe-graphql-tester.yaml +1 -1
- package/.opencode/agents/qe-impact-analyzer.yaml +1 -1
- package/.opencode/agents/qe-integration-architect.yaml +1 -1
- package/.opencode/agents/qe-integration-tester.yaml +1 -1
- package/.opencode/agents/qe-kg-builder.yaml +1 -1
- package/.opencode/agents/qe-learning-coordinator.yaml +1 -1
- package/.opencode/agents/qe-load-tester.yaml +1 -1
- package/.opencode/agents/qe-message-broker-tester.yaml +1 -1
- package/.opencode/agents/qe-metrics-optimizer.yaml +1 -1
- package/.opencode/agents/qe-middleware-validator.yaml +1 -1
- package/.opencode/agents/qe-mutation-tester.yaml +1 -1
- package/.opencode/agents/qe-odata-contract-tester.yaml +1 -1
- package/.opencode/agents/qe-parallel-executor.yaml +1 -1
- package/.opencode/agents/qe-pattern-learner.yaml +1 -1
- package/.opencode/agents/qe-pentest-validator.yaml +1 -1
- package/.opencode/agents/qe-performance-tester.yaml +1 -1
- package/.opencode/agents/qe-product-factors-assessor.yaml +1 -1
- package/.opencode/agents/qe-property-tester.yaml +1 -1
- package/.opencode/agents/qe-quality-criteria-recommender.yaml +1 -1
- package/.opencode/agents/qe-quality-gate.yaml +1 -1
- package/.opencode/agents/qe-queen-coordinator.yaml +1 -1
- package/.opencode/agents/qe-qx-partner.yaml +1 -1
- package/.opencode/agents/qe-regression-analyzer.yaml +1 -1
- package/.opencode/agents/qe-requirements-validator.yaml +1 -1
- package/.opencode/agents/qe-responsive-tester.yaml +1 -1
- package/.opencode/agents/qe-retry-handler.yaml +1 -1
- package/.opencode/agents/qe-risk-assessor.yaml +1 -1
- package/.opencode/agents/qe-root-cause-analyzer.yaml +1 -1
- package/.opencode/agents/qe-sap-idoc-tester.yaml +1 -1
- package/.opencode/agents/qe-sap-rfc-tester.yaml +1 -1
- package/.opencode/agents/qe-security-auditor.yaml +1 -1
- package/.opencode/agents/qe-security-scanner.yaml +1 -1
- package/.opencode/agents/qe-soap-tester.yaml +1 -1
- package/.opencode/agents/qe-sod-analyzer.yaml +1 -1
- package/.opencode/agents/qe-tdd-specialist.yaml +1 -1
- package/.opencode/agents/qe-test-generator.yaml +1 -1
- package/.opencode/agents/qe-test-idea-rewriter.yaml +1 -1
- package/.opencode/agents/qe-transfer-specialist.yaml +1 -1
- package/.opencode/agents/qe-visual-tester.yaml +1 -1
- package/.opencode/agents/security-architect.yaml +1 -1
- package/.opencode/agents/security-auditor.yaml +1 -1
- package/CHANGELOG.md +183 -0
- package/README.md +7 -2
- package/assets/agents/v3/helpers/advisor-call.cjs +3 -3
- package/assets/agents/v3/qe-coverage-specialist.md +1 -1
- package/assets/agents/v3/qe-fleet-commander.md +1 -1
- package/assets/agents/v3/qe-pentest-validator.md +1 -1
- package/assets/agents/v3/qe-queen-coordinator.md +1 -1
- package/assets/agents/v3/qe-risk-assessor.md +1 -1
- package/assets/agents/v3/qe-root-cause-analyzer.md +1 -1
- package/assets/agents/v3/qe-security-auditor.md +1 -1
- package/assets/agents/v3/qe-test-architect.md +1 -1
- package/assets/skills/.validation/examples/chaos-engineering-output.example.json +1 -1
- package/assets/skills/.validation/examples/performance-testing-output.example.json +1 -1
- package/assets/skills/.validation/examples/security-testing-output.example.json +1 -1
- package/assets/skills/.validation/examples/testability-scoring-output.example.json +1 -1
- package/assets/skills/.validation/schemas/skill-eval.schema.json +4 -1
- package/assets/skills/.validation/schemas/skill-frontmatter.schema.json +1 -1
- package/assets/skills/.validation/schemas/skill-output.template.json +1 -1
- package/assets/skills/.validation/templates/eval.template.yaml +1 -1
- package/assets/skills/.validation/templates/security-testing-eval.template.yaml +1 -1
- package/assets/skills/.validation/templates/skill-frontmatter.example.yaml +1 -1
- package/assets/skills/.validation/test-data/sample-output.json +1 -1
- package/assets/skills/a11y-ally/SKILL.md +1 -1
- package/assets/skills/a11y-ally/evals/a11y-ally.yaml +1 -1
- package/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +1 -1
- package/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +1 -1
- package/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +1 -1
- package/assets/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +1 -1
- package/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +1 -1
- package/assets/skills/compliance-testing/evals/compliance-testing.yaml +1 -1
- package/assets/skills/contract-testing/evals/contract-testing.yaml +1 -1
- package/assets/skills/database-testing/evals/database-testing.yaml +1 -1
- package/assets/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +1 -1
- package/assets/skills/localization-testing/evals/localization-testing.yaml +1 -1
- package/assets/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +1 -1
- package/assets/skills/mobile-testing/evals/mobile-testing.yaml +1 -1
- package/assets/skills/mutation-testing/evals/mutation-testing.yaml +1 -1
- package/assets/skills/mutation-testing/test-data/sample-output.json +1 -1
- package/assets/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +1 -1
- package/assets/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +1 -1
- package/assets/skills/n8n-security-testing/evals/n8n-security-testing.yaml +1 -1
- package/assets/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +1 -1
- package/assets/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +1 -1
- package/assets/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +1 -1
- package/assets/skills/pentest-validation/evals/pentest-validation.yaml +1 -1
- package/assets/skills/performance-testing/evals/performance-testing.yaml +1 -1
- package/assets/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +1 -1
- package/assets/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +1 -1
- package/assets/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +1 -1
- package/assets/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +1 -1
- package/assets/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +1 -1
- package/assets/skills/qe-browser/evals/qe-browser.yaml +1 -1
- package/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +1 -1
- package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +1 -1
- package/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +1 -1
- package/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +1 -1
- package/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +2 -2
- package/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +1 -1
- package/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +1 -1
- package/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +1 -1
- package/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +1 -1
- package/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +1 -1
- package/assets/skills/quality-metrics/evals/quality-metrics.yaml +1 -1
- package/assets/skills/regression-testing/evals/regression-testing.yaml +1 -1
- package/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +1 -1
- package/assets/skills/security-testing/evals/security-testing.yaml +1 -1
- package/assets/skills/security-visual-testing/evals/security-visual-testing.yaml +1 -1
- package/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +1 -1
- package/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +1 -1
- package/assets/skills/skills-manifest.json +1 -1
- package/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +1 -1
- package/assets/skills/test-data-management/evals/test-data-management.yaml +1 -1
- package/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +1 -1
- package/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +1 -1
- package/assets/skills/testability-scoring/evals/testability-scoring.yaml +1 -1
- package/assets/skills/validation-pipeline/evals/validation-pipeline.yaml +1 -1
- package/assets/skills/verification-quality/evals/verification-quality.yaml +1 -1
- package/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +1 -1
- package/assets/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +1 -1
- package/dist/cli/bundle.js +7 -7
- package/dist/cli/chunks/adapter-TNNNJRDG.js +2 -0
- package/dist/cli/chunks/{agent-booster-wasm-SD5N32MX.js → agent-booster-wasm-5PC7D2FW.js} +2 -2
- package/dist/cli/chunks/{agent-handler-OZRSJM7F.js → agent-handler-RDNTK4CA.js} +2 -2
- package/dist/cli/chunks/{agent-memory-branch-NYTRANRN.js → agent-memory-branch-NAAMBWIR.js} +2 -2
- package/dist/cli/chunks/aqe-learning-engine-5ZRMYJLB.js +2 -0
- package/dist/cli/chunks/{arena-EX3SC2DP.js → arena-HXTWJ5YY.js} +4 -4
- package/dist/cli/chunks/{arena-FOTVSRK4.js → arena-KXFHRWX4.js} +2 -2
- package/dist/cli/chunks/{audit-Q5GHSUQY.js → audit-YSGA7UWT.js} +3 -3
- package/dist/cli/chunks/base-KWZHOPSH.js +2 -0
- package/dist/cli/chunks/{better-sqlite3-S7M5R2HS.js → better-sqlite3-UICJZIDG.js} +2 -2
- package/dist/cli/chunks/brain-handler-ET6YAP4B.js +90 -0
- package/dist/cli/chunks/{branch-enumerator-RWAXTGEU.js → branch-enumerator-SS7UNVIA.js} +2 -2
- package/dist/cli/chunks/{browser-IGDESJGF.js → browser-77GI6KBE.js} +2 -2
- package/dist/cli/chunks/browser-workflow-2FZTKDUL.js +2 -0
- package/dist/cli/chunks/{chunk-U54OOA24.js → chunk-2JW3BCGG.js} +1 -1
- package/dist/cli/chunks/{chunk-LML5VTFK.js → chunk-33YYYWBQ.js} +1 -1
- package/dist/cli/chunks/{chunk-P64DMQ2C.js → chunk-34WO57CW.js} +1 -1
- package/dist/cli/chunks/{chunk-57TNBR2P.js → chunk-3QHGWY7T.js} +2 -2
- package/dist/cli/chunks/chunk-3TW5W5LX.js +2 -0
- package/dist/cli/chunks/{chunk-S4MR6RTE.js → chunk-3UPAMMCB.js} +1 -1
- package/dist/cli/chunks/{chunk-5WJUNRTY.js → chunk-3VOQRIQM.js} +2 -2
- package/dist/cli/chunks/{chunk-4RT7I7PI.js → chunk-3X3DJZJJ.js} +1 -1
- package/dist/cli/chunks/{chunk-RFNEHNJV.js → chunk-4MHXCAG2.js} +1 -1
- package/dist/cli/chunks/{chunk-PMUBG2RU.js → chunk-4OYFXLBK.js} +2 -2
- package/dist/cli/chunks/{chunk-W2FLULF4.js → chunk-55RWDRJD.js} +3 -3
- package/dist/cli/chunks/chunk-5R3QL7WN.js +14 -0
- package/dist/cli/chunks/{chunk-RHJVDCLV.js → chunk-5SJHQ2CO.js} +2 -2
- package/dist/cli/chunks/{chunk-HBTC4L53.js → chunk-5YPYDPBJ.js} +2 -2
- package/dist/cli/chunks/chunk-5Z6XZV7K.js +65 -0
- package/dist/cli/chunks/{chunk-6EHN7Q2Q.js → chunk-64PFWE2F.js} +2 -2
- package/dist/cli/chunks/{chunk-KFXZDQ5J.js → chunk-6CQN24ZK.js} +1 -1
- package/dist/cli/chunks/{chunk-WVY22NHZ.js → chunk-6J62K3SW.js} +2 -2
- package/dist/cli/chunks/{chunk-TLPL3EQY.js → chunk-6KJABXAR.js} +2 -2
- package/dist/cli/chunks/{chunk-PZKZY6PB.js → chunk-6QYNWR7U.js} +2 -2
- package/dist/cli/chunks/{chunk-A7N3YUDJ.js → chunk-6TPKK7LD.js} +2 -2
- package/dist/cli/chunks/{chunk-RYJHREYS.js → chunk-6UWGMOND.js} +2 -2
- package/dist/cli/chunks/{chunk-XPLSLHRB.js → chunk-6VRA2QGL.js} +1 -1
- package/dist/cli/chunks/{chunk-Q3JHS3UD.js → chunk-7D777LTF.js} +2 -2
- package/dist/cli/chunks/chunk-7ZIOFPL3.js +2 -0
- package/dist/cli/chunks/chunk-A4FYONNU.js +2 -0
- package/dist/cli/chunks/{chunk-7AFBNU6K.js → chunk-AIHDEEJO.js} +2 -2
- package/dist/cli/chunks/{chunk-L2F7FVIU.js → chunk-AUXFKCQL.js} +2 -2
- package/dist/cli/chunks/{chunk-67A6PEZM.js → chunk-AWWNB2T7.js} +2 -2
- package/dist/cli/chunks/{chunk-DVHWLAEO.js → chunk-BDESSCVR.js} +3 -3
- package/dist/cli/chunks/{chunk-JQ2ZD3WO.js → chunk-BFP7KO7P.js} +2 -2
- package/dist/cli/chunks/{chunk-N5ZRUOMR.js → chunk-BGE6FOLM.js} +2 -2
- package/dist/cli/chunks/{chunk-BWRHOIYC.js → chunk-BOARZKU3.js} +2 -2
- package/dist/cli/chunks/{chunk-CTCQOYBS.js → chunk-BOZZYWCR.js} +1 -1
- package/dist/cli/chunks/{chunk-NHHWLJQF.js → chunk-C2WU3533.js} +1 -1
- package/dist/cli/chunks/{chunk-5EHLGOWW.js → chunk-CDHQFHRP.js} +2 -2
- package/dist/cli/chunks/chunk-CDKG6EI7.js +16 -0
- package/dist/cli/chunks/{chunk-RGH3WGWD.js → chunk-CIKSHTEQ.js} +3 -3
- package/dist/cli/chunks/{chunk-K574FLVB.js → chunk-CIZ5JPDC.js} +2 -2
- package/dist/cli/chunks/{chunk-LWUJQGCS.js → chunk-CLTMDCSE.js} +2 -2
- package/dist/cli/chunks/{chunk-GHQ5PUOV.js → chunk-CNG6GQEZ.js} +2 -2
- package/dist/cli/chunks/{chunk-3C2K4YMS.js → chunk-CSU5NYOX.js} +3 -3
- package/dist/cli/chunks/chunk-CU46J64M.js +4 -0
- package/dist/cli/chunks/{chunk-EH5OCHAJ.js → chunk-CXQPR5MY.js} +1 -1
- package/dist/cli/chunks/chunk-DA5K5754.js +96 -0
- package/dist/cli/chunks/{chunk-FVGTINVR.js → chunk-DAEFDCJ4.js} +81 -65
- package/dist/cli/chunks/{chunk-MH73D5TN.js → chunk-DEYLEDJN.js} +2 -2
- package/dist/cli/chunks/{chunk-7FWP7CZY.js → chunk-DFZCKIGY.js} +3 -3
- package/dist/cli/chunks/{chunk-QXTW7XCS.js → chunk-DHJPWQBR.js} +2 -2
- package/dist/cli/chunks/{chunk-NAZVPZJS.js → chunk-DOTK76IJ.js} +2 -2
- package/dist/cli/chunks/{chunk-RCI64RIJ.js → chunk-DPFRKBOG.js} +2 -2
- package/dist/cli/chunks/{chunk-WMW47QMR.js → chunk-EDJ3O7RH.js} +2 -2
- package/dist/cli/chunks/{chunk-4K27ESCA.js → chunk-EKQ673SA.js} +1 -1
- package/dist/cli/chunks/chunk-F3SBRQC6.js +2 -0
- package/dist/cli/chunks/{chunk-4N44UJGI.js → chunk-FGYMFUE2.js} +2 -2
- package/dist/cli/chunks/chunk-FLYOJOKN.js +2 -0
- package/dist/cli/chunks/{chunk-W4OQYLYO.js → chunk-FRH6VAUS.js} +1 -1
- package/dist/cli/chunks/{chunk-VOYJJ3KA.js → chunk-FWGOHAAB.js} +2 -2
- package/dist/cli/chunks/{chunk-D4RCV4LY.js → chunk-G6T45OIC.js} +2 -2
- package/dist/cli/chunks/{chunk-2EHFEMRU.js → chunk-GPLQ6DOK.js} +2 -2
- package/dist/cli/chunks/{chunk-RVCWSAXI.js → chunk-HDSAM2RE.js} +2 -2
- package/dist/cli/chunks/chunk-HIVA55CJ.js +2 -0
- package/dist/cli/chunks/{chunk-6F4WHN7D.js → chunk-HIYXCDEP.js} +1 -1
- package/dist/cli/chunks/{chunk-NRR23SJV.js → chunk-HUWNIPZ5.js} +1 -1
- package/dist/cli/chunks/{chunk-4M6A3PVJ.js → chunk-HV2J7KKQ.js} +2 -2
- package/dist/cli/chunks/{chunk-CJHVOBJY.js → chunk-IFCLB7FJ.js} +1 -1
- package/dist/cli/chunks/{chunk-Q335R4MR.js → chunk-IPR4QP3H.js} +2 -2
- package/dist/cli/chunks/{chunk-HZMLNM2T.js → chunk-ISDMD6EU.js} +178 -175
- package/dist/cli/chunks/chunk-J6GNQS62.js +5 -0
- package/dist/cli/chunks/{chunk-3DFFFXXO.js → chunk-JBNEE5UH.js} +2 -2
- package/dist/cli/chunks/chunk-JZ3ORVZ3.js +54 -0
- package/dist/cli/chunks/{chunk-T4C56HBW.js → chunk-KCZR45PA.js} +2 -2
- package/dist/cli/chunks/chunk-KGT36Z42.js +14 -0
- package/dist/cli/chunks/{chunk-JIUF6NV6.js → chunk-KHFNNVJA.js} +2 -2
- package/dist/cli/chunks/{chunk-7SK6IMGZ.js → chunk-KPA7MZ6C.js} +2 -2
- package/dist/cli/chunks/{chunk-G2CLZVYI.js → chunk-KSKEF7LZ.js} +3 -3
- package/dist/cli/chunks/{chunk-6LMLN5R2.js → chunk-M2JBBZQB.js} +2 -2
- package/dist/cli/chunks/{chunk-UHTAI4ZB.js → chunk-M4WJKGVK.js} +1 -1
- package/dist/cli/chunks/{chunk-KZOBLLXW.js → chunk-M5QUBZY6.js} +2 -2
- package/dist/cli/chunks/{chunk-42WUDDUU.js → chunk-MCUJEZT6.js} +2 -2
- package/dist/cli/chunks/{chunk-ZFGND4QK.js → chunk-MDWCE7YW.js} +1 -1
- package/dist/cli/chunks/{chunk-TYVQNYXX.js → chunk-MEGDYJPV.js} +7 -7
- package/dist/cli/chunks/chunk-MIQTXNBG.js +4 -0
- package/dist/cli/chunks/{chunk-PFXX5Q32.js → chunk-MNW6QGNJ.js} +2 -2
- package/dist/cli/chunks/{chunk-IVGVOGIZ.js → chunk-MOBNBMFW.js} +1 -1
- package/dist/cli/chunks/{chunk-NWFIJNEB.js → chunk-MTZH7AHC.js} +1 -1
- package/dist/cli/chunks/chunk-MVNP7GIR.js +2 -0
- package/dist/cli/chunks/chunk-MVPCNSPY.js +2 -0
- package/dist/cli/chunks/chunk-NA7B2QYB.js +2 -0
- package/dist/cli/chunks/{chunk-E3Q7WNJD.js → chunk-NDPFGIMJ.js} +3 -3
- package/dist/cli/chunks/{chunk-GHUPID5E.js → chunk-NJBGXDQ7.js} +1 -1
- package/dist/cli/chunks/chunk-OBAP2TXZ.js +2 -0
- package/dist/cli/chunks/{chunk-OBCKP3G4.js → chunk-OCWWP5PL.js} +4 -4
- package/dist/cli/chunks/{chunk-CJCT452S.js → chunk-ODKLFVYC.js} +2 -2
- package/dist/cli/chunks/{chunk-YN6W2XIT.js → chunk-ONII3572.js} +4 -4
- package/dist/cli/chunks/{chunk-QW4LN5NK.js → chunk-OSLYSG3B.js} +2 -2
- package/dist/cli/chunks/{chunk-HZ6NEJMO.js → chunk-OULHKEVH.js} +2 -2
- package/dist/cli/chunks/{chunk-CG2MUD7U.js → chunk-PAWXJ73E.js} +1 -1
- package/dist/cli/chunks/chunk-PEPFCPES.js +2 -0
- package/dist/cli/chunks/{chunk-UIGEUEBT.js → chunk-PFR4G3DJ.js} +2 -2
- package/dist/cli/chunks/chunk-PO3IXGMQ.js +2 -0
- package/dist/cli/chunks/{chunk-6SZKLWZT.js → chunk-PZJOPURC.js} +5 -5
- package/dist/cli/chunks/{chunk-ARMZYHYL.js → chunk-Q5DO24IJ.js} +2 -2
- package/dist/cli/chunks/chunk-QGIU2WRL.js +2 -0
- package/dist/cli/chunks/{chunk-N3RN4QTC.js → chunk-R4VL6E65.js} +2 -2
- package/dist/cli/chunks/{chunk-MWQTACNA.js → chunk-R5NE6B2M.js} +2 -2
- package/dist/cli/chunks/{chunk-T46LOLW3.js → chunk-RJCYCLZV.js} +2 -2
- package/dist/cli/chunks/{chunk-CH2TQCV5.js → chunk-SGYJ4NFZ.js} +1 -1
- package/dist/cli/chunks/{chunk-NG2UVPTW.js → chunk-SRKETSFF.js} +1 -1
- package/dist/cli/chunks/{chunk-QFUX7ELG.js → chunk-STJCATGN.js} +2 -2
- package/dist/cli/chunks/{chunk-CIESXO73.js → chunk-STM3UDNO.js} +1 -1
- package/dist/cli/chunks/{chunk-C7AXRI7E.js → chunk-T6BVLVI5.js} +1 -1
- package/dist/cli/chunks/{chunk-HSJ5FQCF.js → chunk-TDZ53WO2.js} +2 -2
- package/dist/cli/chunks/{chunk-YF5OP6CR.js → chunk-TPGED2IF.js} +2 -2
- package/dist/cli/chunks/{chunk-2TG24LYQ.js → chunk-TSRSV3LD.js} +1 -1
- package/dist/cli/chunks/{chunk-6VKJAMZY.js → chunk-TT23RRB7.js} +1 -1
- package/dist/cli/chunks/{chunk-WXMSRBQF.js → chunk-TWAWHOP7.js} +2 -2
- package/dist/cli/chunks/{chunk-ZCDXJ27H.js → chunk-U5K45TFH.js} +1 -1
- package/dist/cli/chunks/{chunk-3WV4H33V.js → chunk-UDHKLT4C.js} +1 -1
- package/dist/cli/chunks/{chunk-VNAKBHJI.js → chunk-UEM7ZF5K.js} +2 -2
- package/dist/cli/chunks/{chunk-4ZUZDFAA.js → chunk-UGVHCMUN.js} +6 -6
- package/dist/cli/chunks/{chunk-NNOMDM4N.js → chunk-V3QLFNA2.js} +2 -2
- package/dist/cli/chunks/{chunk-S7N4BKI3.js → chunk-VD6QRULW.js} +2 -2
- package/dist/cli/chunks/{chunk-WBH4C4BG.js → chunk-VIHTL3U2.js} +2 -2
- package/dist/cli/chunks/chunk-W7BWUTVV.js +2 -0
- package/dist/cli/chunks/{chunk-IWFL6EFI.js → chunk-WLG5AJ4N.js} +2 -2
- package/dist/cli/chunks/{chunk-KEEBUVGV.js → chunk-XC7DYDSY.js} +8 -8
- package/dist/cli/chunks/{chunk-F2KRT2II.js → chunk-XJ7QNVI5.js} +3 -3
- package/dist/cli/chunks/chunk-XRT2WRMS.js +2 -0
- package/dist/cli/chunks/{chunk-ADK7DF3G.js → chunk-XRYF6JV7.js} +2 -2
- package/dist/cli/chunks/{chunk-PWEIDHT7.js → chunk-XWMZ6D6N.js} +2 -2
- package/dist/cli/chunks/{chunk-ICKLBATY.js → chunk-Y3MW3YBC.js} +2 -2
- package/dist/cli/chunks/chunk-YNXS6CGV.js +2 -0
- package/dist/cli/chunks/{chunk-PVHO6KLB.js → chunk-Z3RHREWF.js} +1 -1
- package/dist/cli/chunks/{chunk-EAJK25IS.js → chunk-ZBAKA4YB.js} +1 -1
- package/dist/cli/chunks/chunk-ZBJ4XOOV.js +180 -0
- package/dist/cli/chunks/chunk-ZBQY5GLF.js +11 -0
- package/dist/cli/chunks/{chunk-R5RNOLHI.js → chunk-ZJ26AQA5.js} +1 -1
- package/dist/cli/chunks/{chunk-KPFG4OIM.js → chunk-ZNEMGX5O.js} +1 -1
- package/dist/cli/chunks/{chunk-2H5YJ5ZK.js → chunk-ZNPKDCZR.js} +2 -2
- package/dist/cli/chunks/{chunk-DW6ZMNMR.js → chunk-ZZDIMOOV.js} +2 -2
- package/dist/cli/chunks/ci-464KPQNP.js +81 -0
- package/dist/cli/chunks/ci-output-I7FX2RSO.js +2 -0
- package/dist/cli/chunks/{circuit-breaker-4WST3QSA.js → circuit-breaker-3FW237WW.js} +2 -2
- package/dist/cli/chunks/{claude-flow-setup-KB4TKMYI.js → claude-flow-setup-6JKMBPGU.js} +2 -2
- package/dist/cli/chunks/client-7E4LM2WW.js +2 -0
- package/dist/cli/chunks/{cline-installer-W2ZHQ6WM.js → cline-installer-UWFHT6VY.js} +2 -2
- package/dist/cli/chunks/{code-TF2AVR5D.js → code-KQSUT3FS.js} +29 -29
- package/dist/cli/chunks/{code-index-extractor-RMDRUVQJ.js → code-index-extractor-PABBNUSC.js} +2 -2
- package/dist/cli/chunks/{codex-installer-VSTRHJHV.js → codex-installer-CQ24DTP5.js} +2 -2
- package/dist/cli/chunks/{completions-3Q37QVFR.js → completions-7RWHAUAR.js} +2 -2
- package/dist/cli/chunks/complexity-analyzer-XPOAF33E.js +2 -0
- package/dist/cli/chunks/{continuedev-installer-VTEXM455.js → continuedev-installer-V4F2FIZP.js} +2 -2
- package/dist/cli/chunks/{copilot-installer-AGY7DQUS.js → copilot-installer-JMICURQB.js} +2 -2
- package/dist/cli/chunks/core-handlers-IFG3757P.js +2 -0
- package/dist/cli/chunks/cost-tracker-5OFHEYFJ.js +2 -0
- package/dist/cli/chunks/{coverage-TT64IOS4.js → coverage-QKN57JDS.js} +3 -3
- package/dist/cli/chunks/cross-domain-router-EK7W4PGP.js +2 -0
- package/dist/cli/chunks/{cursor-installer-OVOJIOHN.js → cursor-installer-GBJ7YXSM.js} +2 -2
- package/dist/cli/chunks/{daemon-DMFZMXKA.js → daemon-GKP7CMEK.js} +3 -3
- package/dist/cli/chunks/{daemon-XCULEHWY.js → daemon-IAVSO6HK.js} +4 -4
- package/dist/cli/chunks/{dag-attention-scheduler-WW2RX4B5.js → dag-attention-scheduler-S225TCI7.js} +2 -2
- package/dist/cli/chunks/{detect-QNWIM232.js → detect-IUYH422U.js} +2 -2
- package/dist/cli/chunks/{dist-node-6GQIY3CG.js → dist-node-2YRE6A7C.js} +2 -2
- package/dist/cli/chunks/{domain-handler-6RJPDELX.js → domain-handler-PL2TZC6H.js} +2 -2
- package/dist/cli/chunks/domain-plugins-HCGLXKIT.js +2 -0
- package/dist/cli/chunks/{domain-transfer-WK524LBS.js → domain-transfer-KQJRUPXA.js} +2 -2
- package/dist/cli/chunks/dream-NFSCSLY7.js +2 -0
- package/dist/cli/chunks/{embed-and-insert-pattern-SO6GWJW7.js → embed-and-insert-pattern-ZPAG7235.js} +2 -2
- package/dist/cli/chunks/eval-WCK7KNFN.js +17 -0
- package/dist/cli/chunks/{experience-capture-middleware-BCCJ35OX.js → experience-capture-middleware-2MSQWSAR.js} +3 -3
- package/dist/cli/chunks/{fast-paths-CATDDBEU.js → fast-paths-VYOSIBKF.js} +2 -2
- package/dist/cli/chunks/{feature-flags-BUXNAORY.js → feature-flags-UJRHFBRX.js} +2 -2
- package/dist/cli/chunks/{feature-flags-KNNWWP5G.js → feature-flags-WCFUKHNQ.js} +2 -2
- package/dist/cli/chunks/{file-discovery-S4HF3O7D.js → file-discovery-JDGL4ZWS.js} +2 -2
- package/dist/cli/chunks/fleet-ROXVMZ2F.js +43 -0
- package/dist/cli/chunks/{gnn-wrapper-G7ABZUG7.js → gnn-wrapper-NIO4ZCO3.js} +2 -2
- package/dist/cli/chunks/{heartbeat-handler-UFMELIWT.js → heartbeat-handler-PI42WD3C.js} +4 -4
- package/dist/cli/chunks/heartbeat-scheduler-ZATCDJDK.js +2 -0
- package/dist/cli/chunks/hnsw-adapter-WXQABRCA.js +2 -0
- package/dist/cli/chunks/hnsw-index-TPSWLEA5.js +2 -0
- package/dist/cli/chunks/{hnsw-legacy-bridge-YIILSRXI.js → hnsw-legacy-bridge-YLC7SPK2.js} +2 -2
- package/dist/cli/chunks/{hnswlib-node-TSVRMXDH.js → hnswlib-node-LG6OS3B7.js} +2 -2
- package/dist/cli/chunks/{hooks-OHQPNK74.js → hooks-WVALP5GX.js} +10 -10
- package/dist/cli/chunks/{hypergraph-engine-LY7PJDSL.js → hypergraph-engine-GJEMW3EG.js} +2 -2
- package/dist/cli/chunks/{hypergraph-handler-YGDYZO6H.js → hypergraph-handler-BLF6LXEV.js} +3 -3
- package/dist/cli/chunks/impact-analyzer-HNIU45P5.js +2 -0
- package/dist/cli/chunks/{init-handler-MTK65LI3.js → init-handler-K25RWRYY.js} +6 -6
- package/dist/cli/chunks/init-wizard-JUIPBMHG.js +2 -0
- package/dist/cli/chunks/kernel-5BOZQ754.js +2 -0
- package/dist/cli/chunks/{kilocode-installer-3IICU4RS.js → kilocode-installer-BXN6WZ7G.js} +2 -2
- package/dist/cli/chunks/{kiro-installer-MXOVQYQA.js → kiro-installer-PM362DLN.js} +12 -12
- package/dist/cli/chunks/knowledge-graph-EWDAENWM.js +2 -0
- package/dist/cli/chunks/learning-CPERDDRG.js +122 -0
- package/dist/cli/chunks/llm-router-GOAV5FPI.js +37 -0
- package/dist/cli/chunks/llm-router-service-3YT7JGBS.js +2 -0
- package/dist/cli/chunks/{load-F4PVAMXQ.js → load-2BG6SHAK.js} +2 -2
- package/dist/cli/chunks/load-test-BP2CPLIV.js +2 -0
- package/dist/cli/chunks/{mcp-DUYJUEME.js → mcp-5TTB37DC.js} +2 -2
- package/dist/cli/chunks/{memory-XTTYORAS.js → memory-4NHBYT6S.js} +5 -5
- package/dist/cli/chunks/memory-backend-4PYQBPRM.js +2 -0
- package/dist/cli/chunks/memory-handlers-2B27NITS.js +2 -0
- package/dist/cli/chunks/multi-model-executor-KCWSGCDT.js +14 -0
- package/dist/cli/chunks/{opencode-installer-33ULBU2F.js → opencode-installer-ATZLLK74.js} +2 -2
- package/dist/cli/chunks/{orchestrator-34ZJEKTJ.js → orchestrator-RKB7XJRG.js} +19 -19
- package/dist/cli/chunks/pattern-null-store-OYOQOV2O.js +2 -0
- package/dist/cli/chunks/{pattern-usage-recorder-GZ2M3F2E.js → pattern-usage-recorder-7VE4XDAI.js} +2 -2
- package/dist/cli/chunks/pipeline-LQZSNDD2.js +19 -0
- package/dist/cli/chunks/{platform-VKJFJIAW.js → platform-OD5H5U6G.js} +2 -2
- package/dist/cli/chunks/{plugin-5C5UBQUQ.js → plugin-EJ6K2MGU.js} +2 -2
- package/dist/cli/chunks/{prime-radiant-advanced-wasm-KO2PQI3D.js → prime-radiant-advanced-wasm-OIHTKJMN.js} +2 -2
- package/dist/cli/chunks/protocol-executor-3ATJTXWG.js +2 -0
- package/dist/cli/chunks/{protocol-handler-ZF74NIKA.js → protocol-handler-NRBROAU7.js} +2 -2
- package/dist/cli/chunks/{prove-MO5TQQU4.js → prove-EJOGEGD3.js} +2 -2
- package/dist/cli/chunks/qe-reasoning-bank-LLMYZT4X.js +2 -0
- package/dist/cli/chunks/{quality-EYIN6AER.js → quality-E55UC73D.js} +2 -2
- package/dist/cli/chunks/{quality-gate-V6OQM57O.js → quality-gate-OIQATNT3.js} +3 -3
- package/dist/cli/chunks/queen-coordinator-RN7L6KG5.js +2 -0
- package/dist/cli/chunks/{real-embeddings-AR7TZX7U.js → real-embeddings-FPFFNOSZ.js} +2 -2
- package/dist/cli/chunks/ref-validation-OPO6J7OL.js +2 -0
- package/dist/cli/chunks/{roocode-installer-46E626VZ.js → roocode-installer-ODY5KRWU.js} +2 -2
- package/dist/cli/chunks/router-MDHITQ2V.js +2 -0
- package/dist/cli/chunks/routing-feedback-5XLNJ3Y3.js +2 -0
- package/dist/cli/chunks/{routing-handler-ZNRVW6QW.js → routing-handler-KQM6VWLC.js} +4 -4
- package/dist/cli/chunks/{ruvector-commands-4L2CQMWS.js → ruvector-commands-U2GVV6PF.js} +2 -2
- package/dist/cli/chunks/rvf-dual-writer-JBW4O3II.js +2 -0
- package/dist/cli/chunks/rvf-migration-adapter-BPPQL4XJ.js +2 -0
- package/dist/cli/chunks/{rvf-migration-coordinator-H4RVGBIA.js → rvf-migration-coordinator-V2GHCJKN.js} +2 -2
- package/dist/cli/chunks/rvf-native-adapter-S4562CG5.js +2 -0
- package/dist/cli/chunks/rvf-store-integrity-KMIHD3LP.js +2 -0
- package/dist/cli/chunks/safe-db-FIRHSXVF.js +2 -0
- package/dist/cli/chunks/schedule-RVXFB4HK.js +2 -0
- package/dist/cli/chunks/scheduler-IKKAMAOO.js +2 -0
- package/dist/cli/chunks/security-P5NM353C.js +13 -0
- package/dist/cli/chunks/{shared-rvf-adapter-M6NNIZ5W.js → shared-rvf-adapter-LVIUOO4S.js} +2 -2
- package/dist/cli/chunks/{shared-rvf-dual-writer-LHMFCYVE.js → shared-rvf-dual-writer-2CSG7C4W.js} +2 -2
- package/dist/cli/chunks/sqlite-persistence-SQ3HCUQ7.js +2 -0
- package/dist/cli/chunks/{status-handler-GMIOXQIE.js → status-handler-6TU6O37R.js} +2 -2
- package/dist/cli/chunks/{structural-health-YZXHVHM6.js → structural-health-KBIJSTXJ.js} +2 -2
- package/dist/cli/chunks/{sync-GMPCPV5L.js → sync-LNHI5SB7.js} +2 -2
- package/dist/cli/chunks/{sync-N56UQGCS.js → sync-UHOX6RJW.js} +2 -2
- package/dist/cli/chunks/task-handler-AVDHMLGI.js +49 -0
- package/dist/cli/chunks/task-handlers-KYK4VTRA.js +9 -0
- package/dist/cli/chunks/{test-GQNCKRSP.js → test-DHAAI3DU.js} +11 -11
- package/dist/cli/chunks/test-scheduling-XDBZ3QC2.js +15 -0
- package/dist/cli/chunks/{token-bootstrap-76SRNXGG.js → token-bootstrap-GUTTLPZX.js} +2 -2
- package/dist/cli/chunks/{token-usage-O7CZDP5Q.js → token-usage-Q2YG5YQN.js} +2 -2
- package/dist/cli/chunks/{transformers-LTU4LSSC.js → transformers-F5UQTQCY.js} +2 -2
- package/dist/cli/chunks/{tree-sitter-wasm-parser-NQSQCMBM.js → tree-sitter-wasm-parser-DEGOHS6F.js} +2 -2
- package/dist/cli/chunks/types-JQ7EQO5Q.js +2 -0
- package/dist/cli/chunks/unified-memory-CXHLHB5I.js +2 -0
- package/dist/cli/chunks/unified-memory-hnsw-I7WAE54M.js +2 -0
- package/dist/cli/chunks/unified-persistence-6CPF65WI.js +2 -0
- package/dist/cli/chunks/{upgrade-OQWRBZ3R.js → upgrade-TJRVGHGD.js} +2 -2
- package/dist/cli/chunks/{validate-TH5SRP3E.js → validate-BWPCVHBN.js} +2 -2
- package/dist/cli/chunks/{validate-swarm-UITL2JUS.js → validate-swarm-QVVKCQLP.js} +2 -2
- package/dist/cli/chunks/{vibium-O6PRAG4J.js → vibium-ZFATIWHO.js} +2 -2
- package/dist/cli/chunks/visual-security-GNPHME5H.js +2 -0
- package/dist/cli/chunks/{web-tree-sitter-XBFBY4OF.js → web-tree-sitter-KPLY7ONR.js} +2 -2
- package/dist/cli/chunks/{windsurf-installer-DVT5NRNY.js → windsurf-installer-H7XM7ISA.js} +2 -2
- package/dist/cli/chunks/{witness-chain-VRSH2F36.js → witness-chain-RRN6NDCH.js} +2 -2
- package/dist/cli/chunks/witness-chain-VT4UHHBR.js +2 -0
- package/dist/cli/chunks/{witness-key-manager-GFHRDKQ4.js → witness-key-manager-DFRL42GE.js} +2 -2
- package/dist/cli/chunks/workflow-2ZQO6WYI.js +51 -0
- package/dist/cli/chunks/workflow-orchestrator-DB3HIECD.js +2 -0
- package/dist/cli/chunks/{wrappers-5LLLT7GM.js → wrappers-SUS6XEJD.js} +2 -2
- package/dist/cli/commands/ci.js +54 -28
- package/dist/cli/commands/code.js +6 -0
- package/dist/cli/commands/eval.js +3 -2
- package/dist/cli/commands/fleet.js +35 -16
- package/dist/cli/commands/learning-snapshot.d.ts +38 -0
- package/dist/cli/commands/learning-snapshot.js +171 -0
- package/dist/cli/commands/learning.js +16 -64
- package/dist/cli/commands/llm-router.js +13 -12
- package/dist/cli/commands/pipeline.js +9 -0
- package/dist/cli/commands/security.js +167 -100
- package/dist/cli/commands/test.js +1 -0
- package/dist/cli/commands/workflow.js +9 -1
- package/dist/cli/handlers/task-handler.js +19 -9
- package/dist/cli/helpers/domain-plugins.d.ts +5 -0
- package/dist/cli/helpers/domain-plugins.js +11 -0
- package/dist/cli/index.js +17 -8
- package/dist/cli/utils/ci-config.d.ts +3 -0
- package/dist/cli/utils/ci-output.d.ts +17 -0
- package/dist/cli/utils/ci-output.js +34 -2
- package/dist/context/sources/git-source.d.ts +2 -0
- package/dist/context/sources/git-source.js +9 -2
- package/dist/coordination/cancelled-task-settlement.d.ts +11 -0
- package/dist/coordination/cancelled-task-settlement.js +15 -0
- package/dist/coordination/consensus/providers/claude-provider.d.ts +2 -2
- package/dist/coordination/consensus/providers/claude-provider.js +18 -25
- package/dist/coordination/consensus/providers/gemini-provider.d.ts +14 -4
- package/dist/coordination/consensus/providers/gemini-provider.js +39 -36
- package/dist/coordination/consensus/providers/ollama-provider.d.ts +8 -7
- package/dist/coordination/consensus/providers/ollama-provider.js +16 -18
- package/dist/coordination/consensus/providers/openai-provider.d.ts +14 -4
- package/dist/coordination/consensus/providers/openai-provider.js +36 -34
- package/dist/coordination/consensus/providers/openrouter-provider.d.ts +5 -5
- package/dist/coordination/consensus/providers/openrouter-provider.js +64 -37
- package/dist/coordination/handlers/handler-types.d.ts +3 -0
- package/dist/coordination/handlers/quality-handlers.js +10 -0
- package/dist/coordination/handlers/security-handlers.js +168 -72
- package/dist/coordination/handlers/test-execution-handlers.js +39 -43
- package/dist/coordination/interfaces.d.ts +2 -2
- package/dist/coordination/protocol-executor.js +68 -9
- package/dist/coordination/protocols/security-audit.d.ts +3 -0
- package/dist/coordination/protocols/security-audit.js +61 -39
- package/dist/coordination/queen-coordinator.js +10 -4
- package/dist/coordination/queen-event-handlers.js +17 -0
- package/dist/coordination/queen-task-management.js +25 -0
- package/dist/coordination/queen-types.d.ts +2 -0
- package/dist/coordination/result-saver.js +36 -5
- package/dist/coordination/task-executor.d.ts +3 -1
- package/dist/coordination/task-executor.js +8 -8
- package/dist/coordination/workflow-composition.d.ts +19 -0
- package/dist/coordination/workflow-composition.js +114 -0
- package/dist/coordination/workflow-orchestrator.d.ts +3 -2
- package/dist/coordination/workflow-orchestrator.js +219 -85
- package/dist/coordination/workflow-types.d.ts +30 -1
- package/dist/coordination/yaml-pipeline-loader.js +9 -5
- package/dist/domains/chaos-resilience/services/chaos-engineer.js +2 -7
- package/dist/domains/code-intelligence/services/knowledge-graph.js +2 -7
- package/dist/domains/code-intelligence/services/metric-collector/test-counter.js +9 -40
- package/dist/domains/constants.d.ts +1 -6
- package/dist/domains/constants.js +2 -6
- package/dist/domains/contract-testing/services/contract-validator.js +2 -7
- package/dist/domains/coverage-analysis/services/coverage-analyzer.js +2 -12
- package/dist/domains/coverage-analysis/services/gap-detector.js +2 -7
- package/dist/domains/defect-intelligence/services/defect-predictor.js +2 -12
- package/dist/domains/defect-intelligence/services/root-cause-analyzer.js +2 -7
- package/dist/domains/learning-optimization/services/learning-coordinator.js +2 -7
- package/dist/domains/quality-assessment/services/deployment-advisor.js +2 -7
- package/dist/domains/quality-assessment/services/quality-analyzer.js +2 -7
- package/dist/domains/requirements-validation/services/requirements-validator.js +2 -7
- package/dist/domains/security-compliance/interfaces.d.ts +5 -0
- package/dist/domains/security-compliance/interfaces.js +0 -6
- package/dist/domains/security-compliance/scan-discovery.d.ts +12 -0
- package/dist/domains/security-compliance/scan-discovery.js +105 -0
- package/dist/domains/security-compliance/scan-evidence.d.ts +57 -0
- package/dist/domains/security-compliance/scan-evidence.js +2 -0
- package/dist/domains/security-compliance/services/scanners/sast-scanner.d.ts +3 -2
- package/dist/domains/security-compliance/services/scanners/sast-scanner.js +112 -72
- package/dist/domains/security-compliance/services/semgrep-integration.d.ts +9 -2
- package/dist/domains/security-compliance/services/semgrep-integration.js +68 -20
- package/dist/domains/test-execution/services/flaky-detector.js +46 -5
- package/dist/domains/test-execution/services/retry-handler.js +38 -20
- package/dist/domains/test-execution/services/test-executor.js +84 -29
- package/dist/domains/test-generation/services/test-generator.js +2 -7
- package/dist/domains/visual-accessibility/services/visual-tester.js +2 -7
- package/dist/init/init-wizard-hooks.js +2 -2
- package/dist/init/init-wizard-steps.js +1 -1
- package/dist/init/kiro-installer.js +9 -8
- package/dist/init/opencode-installer.js +1 -1
- package/dist/init/phases/07-hooks.js +4 -2
- package/dist/init/phases/12-verification.js +1 -1
- package/dist/init/settings-merge.d.ts +10 -3
- package/dist/init/settings-merge.js +40 -9
- package/dist/integrations/agentic-flow/model-router/types.js +6 -8
- package/dist/integrations/agentic-flow/reasoning-bank/index.js +3 -20
- package/dist/integrations/coherence/engines/cohomology-adapter.js +100 -30
- package/dist/integrations/ruvector/brain-exporter.js +9 -15
- package/dist/integrations/ruvector/brain-rvf-exporter.js +17 -30
- package/dist/integrations/ruvector/brain-shared.d.ts +5 -1
- package/dist/integrations/ruvector/brain-shared.js +70 -4
- package/dist/integrations/ruvector/rvf-dual-writer.js +36 -15
- package/dist/integrations/ruvector/rvf-store-integrity.d.ts +14 -9
- package/dist/integrations/ruvector/rvf-store-integrity.js +39 -9
- package/dist/integrations/ruvector/shared-rvf-adapter.js +20 -23
- package/dist/kernel/memory-factory.js +14 -4
- package/dist/kernel/project-root.js +10 -8
- package/dist/kernel/unified-memory.js +1 -1
- package/dist/learning/local-judge-client.d.ts +6 -5
- package/dist/learning/local-judge-client.js +7 -6
- package/dist/learning/pattern-store.js +29 -11
- package/dist/mcp/bundle.js +548 -527
- package/dist/mcp/handlers/domain-handler-configs.d.ts +22 -1
- package/dist/mcp/handlers/domain-handler-configs.js +50 -19
- package/dist/mcp/handlers/domain-handlers.d.ts +7 -5
- package/dist/mcp/handlers/domain-handlers.js +7 -5
- package/dist/mcp/handlers/index.d.ts +1 -1
- package/dist/mcp/handlers/index.js +1 -1
- package/dist/mcp/handlers/pipeline-handlers.d.ts +31 -1
- package/dist/mcp/handlers/pipeline-handlers.js +63 -0
- package/dist/mcp/handlers/task-handlers.d.ts +1 -0
- package/dist/mcp/handlers/task-handlers.js +12 -4
- package/dist/mcp/protocol-server.d.ts +2 -0
- package/dist/mcp/protocol-server.js +112 -53
- package/dist/mcp/security/sampling-server.js +2 -1
- package/dist/mcp/tool-annotations.js +1 -1
- package/dist/mcp/tools/test-execution/schedule.js +7 -0
- package/dist/mcp/types.d.ts +10 -1
- package/dist/optimization/session-cache.d.ts +5 -0
- package/dist/optimization/session-cache.js +23 -0
- package/dist/routing/advisor/multi-model-executor.d.ts +4 -1
- package/dist/routing/advisor/multi-model-executor.js +8 -1
- package/dist/routing/free-tier/ladder.d.ts +2 -1
- package/dist/routing/free-tier/ladder.js +3 -2
- package/dist/routing/security/cyber-pin.d.ts +35 -11
- package/dist/routing/security/cyber-pin.js +76 -14
- package/dist/routing/value-score.js +1 -1
- package/dist/shared/git/index.d.ts +1 -0
- package/dist/shared/git/index.js +1 -0
- package/dist/shared/git/ref-validation.d.ts +20 -0
- package/dist/shared/git/ref-validation.js +43 -0
- package/dist/shared/llm/anthropic-params.d.ts +40 -0
- package/dist/shared/llm/anthropic-params.js +51 -0
- package/dist/shared/llm/cost-tracker.d.ts +15 -2
- package/dist/shared/llm/cost-tracker.js +62 -10
- package/dist/shared/llm/index.d.ts +2 -2
- package/dist/shared/llm/index.js +2 -2
- package/dist/shared/llm/interfaces.d.ts +1 -1
- package/dist/shared/llm/metrics/cost-metrics.js +5 -4
- package/dist/shared/llm/model-mapping.js +131 -0
- package/dist/shared/llm/model-registry.d.ts +37 -11
- package/dist/shared/llm/model-registry.js +393 -18
- package/dist/shared/llm/openai-params.d.ts +35 -0
- package/dist/shared/llm/openai-params.js +54 -0
- package/dist/shared/llm/provider-manager.js +4 -3
- package/dist/shared/llm/providers/azure-openai.d.ts +11 -0
- package/dist/shared/llm/providers/azure-openai.js +26 -15
- package/dist/shared/llm/providers/bedrock.js +11 -19
- package/dist/shared/llm/providers/claude.js +6 -29
- package/dist/shared/llm/providers/codex.js +4 -3
- package/dist/shared/llm/providers/gemini.d.ts +3 -2
- package/dist/shared/llm/providers/gemini.js +19 -10
- package/dist/shared/llm/providers/ollama.d.ts +2 -0
- package/dist/shared/llm/providers/ollama.js +30 -20
- package/dist/shared/llm/providers/openai.js +10 -17
- package/dist/shared/llm/providers/openrouter.d.ts +1 -1
- package/dist/shared/llm/providers/openrouter.js +57 -21
- package/dist/shared/llm/router/agent-router-config.js +33 -32
- package/dist/shared/llm/router/hybrid-router.d.ts +4 -0
- package/dist/shared/llm/router/hybrid-router.js +95 -35
- package/dist/shared/llm/router/routing-rules.js +9 -8
- package/dist/shared/llm/router/types.d.ts +9 -2
- package/dist/shared/llm/router/types.js +81 -13
- package/dist/shared/llm/translation/message-formatter.js +4 -23
- package/dist/shared/test-runner-verdict.d.ts +29 -0
- package/dist/shared/test-runner-verdict.js +43 -0
- package/dist/shared/vitest-json-report.d.ts +45 -0
- package/dist/shared/vitest-json-report.js +80 -0
- package/dist/test-scheduling/executors/vitest-executor.d.ts +7 -2
- package/dist/test-scheduling/executors/vitest-executor.js +174 -52
- package/dist/test-scheduling/git-aware/test-selector.js +3 -0
- package/dist/test-scheduling/phase-scheduler.d.ts +1 -0
- package/dist/test-scheduling/phase-scheduler.js +23 -1
- package/dist/validation/frontier-judge.d.ts +7 -4
- package/dist/validation/frontier-judge.js +11 -6
- package/package.json +6 -6
- package/dist/cli/chunks/adapter-OJF6LAJV.js +0 -2
- package/dist/cli/chunks/aqe-learning-engine-FGT474XB.js +0 -2
- package/dist/cli/chunks/base-HH765JFV.js +0 -2
- package/dist/cli/chunks/brain-handler-5FSA46R5.js +0 -90
- package/dist/cli/chunks/browser-workflow-NPM4FUPI.js +0 -2
- package/dist/cli/chunks/chunk-2LKAMMMI.js +0 -2
- package/dist/cli/chunks/chunk-4AKGBUYD.js +0 -4
- package/dist/cli/chunks/chunk-4MH22236.js +0 -2
- package/dist/cli/chunks/chunk-4PH7O5ZH.js +0 -2
- package/dist/cli/chunks/chunk-4UCMTYFQ.js +0 -65
- package/dist/cli/chunks/chunk-DRO5NJZA.js +0 -11
- package/dist/cli/chunks/chunk-FPHPP5TQ.js +0 -2
- package/dist/cli/chunks/chunk-FREF6Y4L.js +0 -14
- package/dist/cli/chunks/chunk-G6AV2HGY.js +0 -54
- package/dist/cli/chunks/chunk-GJAWEUIN.js +0 -16
- package/dist/cli/chunks/chunk-IUNMW454.js +0 -2
- package/dist/cli/chunks/chunk-JDXLCNKV.js +0 -2
- package/dist/cli/chunks/chunk-OC2CKU7I.js +0 -2
- package/dist/cli/chunks/chunk-OX6T26CD.js +0 -180
- package/dist/cli/chunks/chunk-PHHXHG2W.js +0 -2
- package/dist/cli/chunks/chunk-SEHCX4NH.js +0 -2
- package/dist/cli/chunks/chunk-TENYL5TI.js +0 -14
- package/dist/cli/chunks/chunk-U2AY57XZ.js +0 -5
- package/dist/cli/chunks/chunk-UYTWDS2R.js +0 -2
- package/dist/cli/chunks/chunk-VSYBMNIR.js +0 -2
- package/dist/cli/chunks/chunk-WBMRADQP.js +0 -81
- package/dist/cli/chunks/chunk-ZWRQ5VAU.js +0 -2
- package/dist/cli/chunks/chunk-ZYLSOBOR.js +0 -2
- package/dist/cli/chunks/ci-NTRH7PAW.js +0 -81
- package/dist/cli/chunks/ci-output-F57RSD35.js +0 -2
- package/dist/cli/chunks/client-GPZEC54E.js +0 -2
- package/dist/cli/chunks/complexity-analyzer-3FNFLACD.js +0 -2
- package/dist/cli/chunks/core-handlers-YMGHYIBR.js +0 -2
- package/dist/cli/chunks/cost-tracker-LTZAQBX7.js +0 -2
- package/dist/cli/chunks/cross-domain-router-ECBNTGYJ.js +0 -2
- package/dist/cli/chunks/dream-EHGKCFWH.js +0 -2
- package/dist/cli/chunks/eval-GL544IPO.js +0 -17
- package/dist/cli/chunks/fleet-DQVQQONW.js +0 -43
- package/dist/cli/chunks/heartbeat-scheduler-UFEL2CBW.js +0 -2
- package/dist/cli/chunks/hnsw-adapter-BLSD45CX.js +0 -2
- package/dist/cli/chunks/hnsw-index-A3RZODEN.js +0 -2
- package/dist/cli/chunks/impact-analyzer-OXHD3FOH.js +0 -2
- package/dist/cli/chunks/init-wizard-PKZL7QBU.js +0 -2
- package/dist/cli/chunks/kernel-XWPM72UJ.js +0 -2
- package/dist/cli/chunks/knowledge-graph-FRKR5XWI.js +0 -2
- package/dist/cli/chunks/learning-EV5LSOOM.js +0 -122
- package/dist/cli/chunks/llm-router-7LYDJUOT.js +0 -37
- package/dist/cli/chunks/llm-router-service-R7A5HHDM.js +0 -2
- package/dist/cli/chunks/load-test-5IKDWSYL.js +0 -2
- package/dist/cli/chunks/memory-backend-7VW5QCMO.js +0 -2
- package/dist/cli/chunks/memory-handlers-VZH3R2TQ.js +0 -2
- package/dist/cli/chunks/multi-model-executor-R6XCTMCF.js +0 -14
- package/dist/cli/chunks/pattern-null-store-BU6LCB2W.js +0 -2
- package/dist/cli/chunks/pipeline-SR5OTY45.js +0 -19
- package/dist/cli/chunks/protocol-executor-BSP5LWJN.js +0 -2
- package/dist/cli/chunks/qe-reasoning-bank-J2RC7P25.js +0 -2
- package/dist/cli/chunks/queen-coordinator-XI5AJV2V.js +0 -2
- package/dist/cli/chunks/router-VXQYYA3D.js +0 -2
- package/dist/cli/chunks/routing-feedback-HZQTASFF.js +0 -2
- package/dist/cli/chunks/rvf-dual-writer-BDTLLJER.js +0 -2
- package/dist/cli/chunks/rvf-migration-adapter-IB343MDN.js +0 -2
- package/dist/cli/chunks/rvf-native-adapter-Y7SN7LHU.js +0 -2
- package/dist/cli/chunks/rvf-store-integrity-OJGWWPLL.js +0 -2
- package/dist/cli/chunks/safe-db-2VTKKBJU.js +0 -2
- package/dist/cli/chunks/schedule-QJ4CFGJY.js +0 -2
- package/dist/cli/chunks/scheduler-2NHDQPC3.js +0 -2
- package/dist/cli/chunks/security-JF3BVNRO.js +0 -14
- package/dist/cli/chunks/sqlite-persistence-NVVAPZN3.js +0 -2
- package/dist/cli/chunks/task-handler-VTNRGAXP.js +0 -49
- package/dist/cli/chunks/task-handlers-FYSDH55N.js +0 -9
- package/dist/cli/chunks/test-scheduling-GPRXSIRP.js +0 -15
- package/dist/cli/chunks/types-OP6IWE6N.js +0 -2
- package/dist/cli/chunks/unified-memory-DSTIEDSH.js +0 -2
- package/dist/cli/chunks/unified-memory-hnsw-KBV3P4OS.js +0 -2
- package/dist/cli/chunks/unified-persistence-XKCOUBKY.js +0 -2
- package/dist/cli/chunks/visual-security-TTWSPZTZ.js +0 -2
- package/dist/cli/chunks/witness-chain-2KY73HPN.js +0 -2
- package/dist/cli/chunks/workflow-HAZ6YKOG.js +0 -51
- package/dist/cli/chunks/workflow-orchestrator-UK56AVOT.js +0 -2
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { Command } from 'commander';
|
|
7
7
|
import chalk from 'chalk';
|
|
8
|
-
import {
|
|
8
|
+
import { discoverSecurityFiles } from '../../domains/security-compliance/scan-discovery.js';
|
|
9
|
+
import { FilePath } from '../../shared/value-objects/index.js';
|
|
9
10
|
import { writeOutput, toJSON, toSARIF, securityToMarkdown } from '../utils/ci-output.js';
|
|
10
11
|
export function createSecurityCommand(context, cleanupAndExit, ensureInitialized) {
|
|
11
12
|
const securityCmd = new Command('security')
|
|
@@ -84,126 +85,192 @@ export function createSecurityCommand(context, cleanupAndExit, ensureInitialized
|
|
|
84
85
|
}
|
|
85
86
|
return; // Don't fall through to SAST/DAST path
|
|
86
87
|
}
|
|
88
|
+
const format = options.format;
|
|
89
|
+
const runSAST = options.sast || (!options.dast && !options.compliance);
|
|
90
|
+
const frameworks = options.compliance
|
|
91
|
+
? options.compliance.split(',').map((value) => value.trim()).filter(Boolean)
|
|
92
|
+
: [];
|
|
93
|
+
const scanResult = {
|
|
94
|
+
vulnerabilities: [], target: options.target,
|
|
95
|
+
scanType: [runSAST && 'SAST', options.dast && 'DAST', frameworks.length > 0 && 'Compliance'].filter(Boolean).join('+'),
|
|
96
|
+
checks: [], status: 'not-run',
|
|
97
|
+
};
|
|
98
|
+
const checks = scanResult.checks;
|
|
87
99
|
try {
|
|
88
|
-
const format = options.format;
|
|
89
|
-
if (format === 'text') {
|
|
90
|
-
console.log(chalk.blue(`\n Running security scan on ${options.target}...\n`));
|
|
91
|
-
}
|
|
92
100
|
const securityAPI = await context.kernel.getDomainAPIAsync('security-compliance');
|
|
93
101
|
if (!securityAPI) {
|
|
94
|
-
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const path = await import('path');
|
|
98
|
-
const targetPath = path.resolve(options.target);
|
|
99
|
-
// Fix #280: Use shared file discovery supporting all languages
|
|
100
|
-
const files = walkSourceFiles(targetPath, { includeTests: true });
|
|
101
|
-
if (files.length === 0) {
|
|
102
|
-
console.log(chalk.yellow('No files found to scan'));
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
if (format === 'text') {
|
|
106
|
-
console.log(chalk.gray(` Scanning ${files.length} files...\n`));
|
|
102
|
+
checks.push({ name: scanResult.scanType, status: 'failed', reason: 'Security domain not available' });
|
|
107
103
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
console.log(chalk.yellow(` ! Found ${vulns.length} potential issues:`));
|
|
128
|
-
for (const v of vulns.slice(0, 10)) {
|
|
129
|
-
const color = v.severity === 'high' ? chalk.red : v.severity === 'medium' ? chalk.yellow : chalk.gray;
|
|
130
|
-
console.log(color(` [${v.severity}] ${v.type}: ${v.file}:${v.line}`));
|
|
131
|
-
console.log(chalk.gray(` ${v.message}`));
|
|
104
|
+
else {
|
|
105
|
+
if (runSAST) {
|
|
106
|
+
const { files, discovery } = await discoverSecurityFiles(options.target);
|
|
107
|
+
scanResult.discovery = discovery;
|
|
108
|
+
if (files.length === 0) {
|
|
109
|
+
checks.push({ name: 'SAST', status: 'not-run', reason: 'No analyzable input was discovered; no SAST scan ran.' });
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
try {
|
|
113
|
+
const sastResult = await securityAPI.runSASTScan(files.map(file => FilePath.create(file)));
|
|
114
|
+
if (sastResult.success && sastResult.value) {
|
|
115
|
+
const result = sastResult.value;
|
|
116
|
+
scanResult.vulnerabilities = result.vulnerabilities.map(formatVulnerability);
|
|
117
|
+
scanResult.coverage = result.evidence ? result.coverage : undefined;
|
|
118
|
+
scanResult.evidence = result.evidence;
|
|
119
|
+
checks.push({
|
|
120
|
+
name: 'SAST', status: result.evidence?.completeness ?? 'unverified',
|
|
121
|
+
...(!result.evidence ? { reason: 'The scanner returned no execution receipts.' } : {}),
|
|
122
|
+
});
|
|
132
123
|
}
|
|
133
|
-
|
|
134
|
-
|
|
124
|
+
else {
|
|
125
|
+
checks.push({ name: 'SAST', status: 'failed', reason: !sastResult.success ? securityFailureReason('SAST scan', sastResult.error) : 'SAST scan returned no result' });
|
|
135
126
|
}
|
|
136
127
|
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
checks.push({ name: 'SAST', status: 'failed', reason: securityFailureReason('SAST scan', error) });
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (discovery.status !== 'complete') {
|
|
133
|
+
checks.push({ name: 'Source discovery', status: discovery.status, reason: 'Requested source discovery did not complete; inspect discovery issues.' });
|
|
137
134
|
}
|
|
138
135
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
console.log(chalk.blue(` Compliance Check (${frameworks.join(', ')}):`));
|
|
150
|
-
// Run compliance check for each framework
|
|
151
|
-
const compResults = await Promise.all(frameworks.map((f) => securityAPI.runComplianceCheck(f.trim())));
|
|
152
|
-
const compResult = compResults[0]; // Primary result for display
|
|
153
|
-
if (compResult.success && compResult.value) {
|
|
154
|
-
const result = compResult.value;
|
|
155
|
-
scanResult.compliance = result;
|
|
156
|
-
if (format === 'text') {
|
|
157
|
-
if (result.compliant) {
|
|
158
|
-
console.log(chalk.green(' * Compliant with all frameworks'));
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
console.log(chalk.yellow(' ! Compliance issues found:'));
|
|
162
|
-
for (const issue of (result.issues || []).slice(0, 5)) {
|
|
163
|
-
console.log(chalk.yellow(` [${issue.framework}] ${issue.issue}`));
|
|
136
|
+
if (frameworks.length > 0) {
|
|
137
|
+
const issues = [];
|
|
138
|
+
let compliant = true;
|
|
139
|
+
for (const framework of frameworks) {
|
|
140
|
+
try {
|
|
141
|
+
const outcome = await securityAPI.runComplianceCheck(framework);
|
|
142
|
+
if (!outcome.success || !outcome.value) {
|
|
143
|
+
compliant = false;
|
|
144
|
+
checks.push({ name: `Compliance:${framework}`, status: 'failed', reason: !outcome.success ? securityFailureReason('Compliance check', outcome.error) : 'Compliance check returned no result' });
|
|
145
|
+
continue;
|
|
164
146
|
}
|
|
147
|
+
const report = outcome.value;
|
|
148
|
+
const legacy = report;
|
|
149
|
+
const violations = report.violations ?? [];
|
|
150
|
+
const skipped = report.skippedRules ?? [];
|
|
151
|
+
const passed = report.passedRules ?? [];
|
|
152
|
+
const measured = Array.isArray(report.violations) && Array.isArray(report.passedRules) && Array.isArray(report.skippedRules);
|
|
153
|
+
const status = !measured ? 'unverified' : skipped.length > 0 ? 'partial' : passed.length + violations.length > 0 ? 'complete' : 'none';
|
|
154
|
+
checks.push({ name: `Compliance:${framework}`, status, ...(skipped.length ? { reason: `${skipped.length} compliance rules were skipped.` } : {}) });
|
|
155
|
+
issues.push(...violations.map(violation => ({ framework, issue: violation.details })));
|
|
156
|
+
if (legacy.issues)
|
|
157
|
+
issues.push(...legacy.issues);
|
|
158
|
+
if (status !== 'complete' || violations.length > 0 || legacy.compliant === false)
|
|
159
|
+
compliant = false;
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
compliant = false;
|
|
163
|
+
checks.push({ name: `Compliance:${framework}`, status: 'failed', reason: securityFailureReason('Compliance check', error) });
|
|
165
164
|
}
|
|
166
165
|
}
|
|
166
|
+
scanResult.compliance = { compliant, issues };
|
|
167
167
|
}
|
|
168
|
-
else if (format === 'text') {
|
|
169
|
-
console.log(chalk.red(` x Compliance check failed: ${compResult.error?.message || 'Unknown error'}`));
|
|
170
|
-
}
|
|
171
|
-
if (format === 'text')
|
|
172
|
-
console.log('');
|
|
173
168
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
console.log(chalk.gray('Note: DAST requires running application URLs. Use --target with URLs for DAST scanning.'));
|
|
169
|
+
if (options.dast) {
|
|
170
|
+
checks.push({ name: 'DAST', status: 'not-run', reason: 'This CLI command does not execute DAST. A running application URL and DAST execution path are required.' });
|
|
177
171
|
}
|
|
178
|
-
|
|
179
|
-
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
checks.push({ name: scanResult.scanType, status: 'failed', reason: securityFailureReason('Security scan', error) });
|
|
175
|
+
}
|
|
176
|
+
scanResult.status = summarizeChecks(checks);
|
|
177
|
+
try {
|
|
178
|
+
if (format === 'json')
|
|
180
179
|
writeOutput(toJSON(scanResult), options.output);
|
|
181
|
-
|
|
182
|
-
else if (format === 'sarif') {
|
|
180
|
+
else if (format === 'sarif')
|
|
183
181
|
writeOutput(toSARIF(scanResult), options.output);
|
|
184
|
-
|
|
185
|
-
else if (format === 'markdown') {
|
|
182
|
+
else if (format === 'markdown')
|
|
186
183
|
writeOutput(securityToMarkdown(scanResult), options.output);
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
console.log(chalk.green(' Security scan complete\n'));
|
|
190
|
-
}
|
|
191
|
-
// Exit codes: 1 = critical/high vulns, 2 = medium-only vulns, 0 = low/none
|
|
192
|
-
const hasHighSeverity = scanResult.vulnerabilities.some(v => v.severity === 'high' || v.severity === 'critical');
|
|
193
|
-
const hasMediumSeverity = scanResult.vulnerabilities.some(v => v.severity === 'medium');
|
|
194
|
-
if (hasHighSeverity) {
|
|
195
|
-
await cleanupAndExit(1);
|
|
196
|
-
}
|
|
197
|
-
else if (hasMediumSeverity) {
|
|
198
|
-
await cleanupAndExit(2);
|
|
199
|
-
}
|
|
200
|
-
await cleanupAndExit(0);
|
|
184
|
+
else
|
|
185
|
+
printSecurityResult(scanResult);
|
|
201
186
|
}
|
|
202
|
-
catch (
|
|
203
|
-
console.error(chalk.red('
|
|
204
|
-
|
|
187
|
+
catch (error) {
|
|
188
|
+
console.error(chalk.red('Failed to write security report:'), error);
|
|
189
|
+
return cleanupAndExit(1);
|
|
205
190
|
}
|
|
191
|
+
// Incomplete execution never has a clean exit, even if it found no vulnerabilities.
|
|
192
|
+
if (scanResult.status !== 'complete' || scanResult.compliance?.compliant === false)
|
|
193
|
+
return cleanupAndExit(1);
|
|
194
|
+
if (scanResult.vulnerabilities.some(v => v.severity === 'high' || v.severity === 'critical'))
|
|
195
|
+
return cleanupAndExit(1);
|
|
196
|
+
if (scanResult.vulnerabilities.some(v => v.severity === 'medium'))
|
|
197
|
+
return cleanupAndExit(2);
|
|
198
|
+
return cleanupAndExit(0);
|
|
206
199
|
});
|
|
207
200
|
return securityCmd;
|
|
208
201
|
}
|
|
202
|
+
/** Provider exceptions can contain credentials or source; expose only an operation and errno. */
|
|
203
|
+
function securityFailureReason(operation, error) {
|
|
204
|
+
const code = error && typeof error === 'object' && 'code' in error ? error.code : undefined;
|
|
205
|
+
return typeof code === 'string' && /^[A-Z0-9_]{1,32}$/.test(code)
|
|
206
|
+
? `${operation} failed (${code}).`
|
|
207
|
+
: `${operation} failed.`;
|
|
208
|
+
}
|
|
209
|
+
function summarizeChecks(checks) {
|
|
210
|
+
if (checks.length === 0)
|
|
211
|
+
return 'not-run';
|
|
212
|
+
if (checks.every(check => check.status === 'complete'))
|
|
213
|
+
return 'complete';
|
|
214
|
+
if (checks.some(check => check.status === 'partial' || check.status === 'complete'))
|
|
215
|
+
return 'partial';
|
|
216
|
+
if (checks.some(check => check.status === 'failed'))
|
|
217
|
+
return 'failed';
|
|
218
|
+
if (checks.some(check => check.status === 'unverified'))
|
|
219
|
+
return 'unverified';
|
|
220
|
+
if (checks.some(check => check.status === 'none'))
|
|
221
|
+
return 'none';
|
|
222
|
+
return 'not-run';
|
|
223
|
+
}
|
|
224
|
+
function formatVulnerability(value) {
|
|
225
|
+
if ('location' in value) {
|
|
226
|
+
return {
|
|
227
|
+
severity: value.severity, type: value.title || value.category,
|
|
228
|
+
file: value.location.file, line: value.location.line ?? 1,
|
|
229
|
+
message: value.description,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
return value;
|
|
233
|
+
}
|
|
234
|
+
function printSecurityResult(result) {
|
|
235
|
+
console.log(chalk.blue(`\n Security scan on ${result.target}\n`));
|
|
236
|
+
for (const check of result.checks ?? []) {
|
|
237
|
+
const color = check.status === 'complete' ? chalk.green : chalk.yellow;
|
|
238
|
+
console.log(color(` ${check.name}: ${check.status}${check.reason ? ` — ${check.reason}` : ''}`));
|
|
239
|
+
}
|
|
240
|
+
if (result.coverage) {
|
|
241
|
+
console.log(` Analyzed ${result.coverage.filesScanned} files, ${result.coverage.linesScanned} lines; ${result.coverage.rulesApplied} rules applied${result.coverage.rulesAppliedScope ? ` (${result.coverage.rulesAppliedScope})` : ''}.`);
|
|
242
|
+
}
|
|
243
|
+
if (result.vulnerabilities.length === 0) {
|
|
244
|
+
console.log(result.status === 'complete'
|
|
245
|
+
? ' No vulnerabilities found in completed checks.'
|
|
246
|
+
: ' No vulnerabilities reported; requested analysis is incomplete or unverified.');
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
console.log(chalk.yellow(` Found ${result.vulnerabilities.length} potential issues:`));
|
|
250
|
+
for (const vulnerability of result.vulnerabilities.slice(0, 10)) {
|
|
251
|
+
console.log(` [${vulnerability.severity}] ${vulnerability.type}: ${vulnerability.file}:${vulnerability.line}`);
|
|
252
|
+
console.log(` ${vulnerability.message}`);
|
|
253
|
+
}
|
|
254
|
+
if (result.vulnerabilities.length > 10)
|
|
255
|
+
console.log(` ... and ${result.vulnerabilities.length - 10} more`);
|
|
256
|
+
}
|
|
257
|
+
if (result.compliance) {
|
|
258
|
+
console.log(` Compliance: ${result.compliance.compliant ? 'compliant in completed checks' : 'failed or incomplete'}`);
|
|
259
|
+
for (const issue of result.compliance.issues ?? [])
|
|
260
|
+
console.log(` [${issue.framework}] ${issue.issue}`);
|
|
261
|
+
}
|
|
262
|
+
const limitations = [
|
|
263
|
+
...(result.evidence?.limitations ?? []),
|
|
264
|
+
...(result.evidence?.engines.flatMap(engine => engine.status === 'completed' ? [] : [`${engine.id}: ${engine.status}`, ...engine.errors]) ?? []),
|
|
265
|
+
...(result.evidence?.files.filter(file => file.status !== 'analyzed' && file.status !== 'excluded').map(file => `${file.path}: ${file.status}${file.reason ? ` (${file.reason})` : ''}`) ?? []),
|
|
266
|
+
...(result.discovery?.issues.map(issue => `${issue.path}: ${issue.reason}`) ?? []),
|
|
267
|
+
];
|
|
268
|
+
for (const limitation of limitations.slice(0, 10))
|
|
269
|
+
console.log(chalk.yellow(` ${limitation}`));
|
|
270
|
+
if (limitations.length > 10)
|
|
271
|
+
console.log(` ... ${limitations.length - 10} additional limitations; use JSON, Markdown, or SARIF for full receipts.`);
|
|
272
|
+
if (result.evidence)
|
|
273
|
+
console.log(' Scope: completed checks of the declared required engines; this is not full SAST assurance.');
|
|
274
|
+
console.log(`\n Security analysis: ${result.status}\n`);
|
|
275
|
+
}
|
|
209
276
|
//# sourceMappingURL=security.js.map
|
|
@@ -179,6 +179,7 @@ export function createTestCommand(context, cleanupAndExit, ensureInitialized) {
|
|
|
179
179
|
}
|
|
180
180
|
else {
|
|
181
181
|
console.log(chalk.red(`Failed: ${result.error?.message || 'Unknown error'}`));
|
|
182
|
+
await cleanupAndExit(1);
|
|
182
183
|
}
|
|
183
184
|
}
|
|
184
185
|
else if (action === 'schedule') {
|
|
@@ -29,7 +29,6 @@ export function createWorkflowCommand(context, cleanupAndExit, ensureInitialized
|
|
|
29
29
|
.action(async (file, options) => {
|
|
30
30
|
if (!await ensureInitialized())
|
|
31
31
|
return;
|
|
32
|
-
const fs = await import('fs');
|
|
33
32
|
const pathModule = await import('path');
|
|
34
33
|
const filePath = pathModule.resolve(file);
|
|
35
34
|
try {
|
|
@@ -123,6 +122,9 @@ export function createWorkflowCommand(context, cleanupAndExit, ensureInitialized
|
|
|
123
122
|
console.log(chalk.yellow(`Workflow ${finalStatus.status}`));
|
|
124
123
|
}
|
|
125
124
|
}
|
|
125
|
+
console.log('');
|
|
126
|
+
await cleanupAndExit(finalStatus?.status === 'completed' ? 0 : 1);
|
|
127
|
+
return;
|
|
126
128
|
}
|
|
127
129
|
else {
|
|
128
130
|
console.log(chalk.green('Workflow execution started'));
|
|
@@ -424,6 +426,12 @@ export function createWorkflowCommand(context, cleanupAndExit, ensureInitialized
|
|
|
424
426
|
if (status.error) {
|
|
425
427
|
console.log(chalk.red(`\n Error: ${status.error}`));
|
|
426
428
|
}
|
|
429
|
+
for (const receipt of status.parallelCompositionReceipts ?? []) {
|
|
430
|
+
console.log(` Composition ${receipt.groupId}: ${receipt.disposition}`);
|
|
431
|
+
for (const conflict of receipt.conflicts) {
|
|
432
|
+
console.log(` ${conflict.kind}: ${conflict.stepA}.${conflict.pathA} / ${conflict.stepB}.${conflict.pathB}`);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
427
435
|
if (options.verbose && status.stepResults.size > 0) {
|
|
428
436
|
console.log(chalk.cyan('\n Step Results:'));
|
|
429
437
|
for (const [stepId, result] of status.stepResults) {
|
|
@@ -68,7 +68,7 @@ export class TaskHandler {
|
|
|
68
68
|
}
|
|
69
69
|
async executeSubmit(type, options, context) {
|
|
70
70
|
if (!await this.ensureInitialized())
|
|
71
|
-
return;
|
|
71
|
+
return this.cleanupAndExit(1);
|
|
72
72
|
try {
|
|
73
73
|
const taskType = type;
|
|
74
74
|
const payload = parseJsonOption(options.payload, 'payload');
|
|
@@ -112,9 +112,9 @@ export class TaskHandler {
|
|
|
112
112
|
waitSpinner.succeed('Task completed successfully');
|
|
113
113
|
completed = true;
|
|
114
114
|
}
|
|
115
|
-
else if (taskStatus.status === 'failed') {
|
|
116
|
-
waitSpinner.fail(`Task
|
|
117
|
-
|
|
115
|
+
else if (taskStatus.status === 'failed' || taskStatus.status === 'cancelled') {
|
|
116
|
+
waitSpinner.fail(`Task ${taskStatus.status}: ${taskStatus.error || 'No successful result'}`);
|
|
117
|
+
return this.cleanupAndExit(1);
|
|
118
118
|
}
|
|
119
119
|
else {
|
|
120
120
|
// Update spinner with progress info
|
|
@@ -127,11 +127,13 @@ export class TaskHandler {
|
|
|
127
127
|
}
|
|
128
128
|
if (!completed) {
|
|
129
129
|
waitSpinner.fail('Task timed out');
|
|
130
|
+
return this.cleanupAndExit(1);
|
|
130
131
|
}
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
134
|
else {
|
|
134
135
|
console.log(chalk.red(` Error: ${result.error.message}`));
|
|
136
|
+
return this.cleanupAndExit(1);
|
|
135
137
|
}
|
|
136
138
|
console.log('');
|
|
137
139
|
}
|
|
@@ -142,7 +144,7 @@ export class TaskHandler {
|
|
|
142
144
|
}
|
|
143
145
|
async executeList(options, context) {
|
|
144
146
|
if (!await this.ensureInitialized())
|
|
145
|
-
return;
|
|
147
|
+
return this.cleanupAndExit(1);
|
|
146
148
|
try {
|
|
147
149
|
const tasks = context.queen.listTasks({
|
|
148
150
|
status: options.status,
|
|
@@ -155,6 +157,7 @@ export class TaskHandler {
|
|
|
155
157
|
taskId: task.taskId,
|
|
156
158
|
type: task.task.type,
|
|
157
159
|
status: task.status,
|
|
160
|
+
cancellationResultPending: task.cancellationResultPending,
|
|
158
161
|
priority: task.task.priority,
|
|
159
162
|
domain: task.assignedDomain || null,
|
|
160
163
|
startedAt: task.startedAt?.toISOString() || null,
|
|
@@ -189,11 +192,14 @@ export class TaskHandler {
|
|
|
189
192
|
}
|
|
190
193
|
async executeCancel(taskId, context) {
|
|
191
194
|
if (!await this.ensureInitialized())
|
|
192
|
-
return;
|
|
195
|
+
return this.cleanupAndExit(1);
|
|
193
196
|
try {
|
|
194
197
|
const result = await context.queen.cancelTask(taskId);
|
|
195
198
|
if (result.success) {
|
|
196
|
-
console.log(chalk.green(`\n
|
|
199
|
+
console.log(chalk.green(`\n Cancellation requested: ${taskId}\n`));
|
|
200
|
+
if (context.queen.getTaskStatus(taskId)?.cancellationResultPending) {
|
|
201
|
+
console.log(chalk.yellow(' Task result pending; work may continue.'));
|
|
202
|
+
}
|
|
197
203
|
}
|
|
198
204
|
else {
|
|
199
205
|
console.log(chalk.red(`\n Failed to cancel task: ${result.error.message}\n`));
|
|
@@ -206,12 +212,12 @@ export class TaskHandler {
|
|
|
206
212
|
}
|
|
207
213
|
async executeTaskStatus(taskId, options, context) {
|
|
208
214
|
if (!await this.ensureInitialized())
|
|
209
|
-
return;
|
|
215
|
+
return this.cleanupAndExit(1);
|
|
210
216
|
try {
|
|
211
217
|
const task = context.queen.getTaskStatus(taskId);
|
|
212
218
|
if (!task) {
|
|
213
219
|
console.log(chalk.red(`\n Task not found: ${taskId}\n`));
|
|
214
|
-
return;
|
|
220
|
+
return this.cleanupAndExit(1);
|
|
215
221
|
}
|
|
216
222
|
const format = (options.format || 'text');
|
|
217
223
|
if (format === 'json') {
|
|
@@ -219,6 +225,7 @@ export class TaskHandler {
|
|
|
219
225
|
taskId,
|
|
220
226
|
type: task.task.type,
|
|
221
227
|
status: task.status,
|
|
228
|
+
cancellationResultPending: task.cancellationResultPending,
|
|
222
229
|
priority: task.task.priority,
|
|
223
230
|
domain: task.assignedDomain || null,
|
|
224
231
|
agents: task.assignedAgents,
|
|
@@ -237,6 +244,9 @@ export class TaskHandler {
|
|
|
237
244
|
console.log(chalk.blue(`\n Task: ${taskId}\n`));
|
|
238
245
|
console.log(` Type: ${task.task.type}`);
|
|
239
246
|
console.log(` Status: ${getStatusColor(task.status)}`);
|
|
247
|
+
if (task.cancellationResultPending) {
|
|
248
|
+
console.log(chalk.yellow(' Task result pending; work may continue.'));
|
|
249
|
+
}
|
|
240
250
|
console.log(` Priority: ${task.task.priority}`);
|
|
241
251
|
if (task.assignedDomain) {
|
|
242
252
|
console.log(` Domain: ${task.assignedDomain}`);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DomainPlugin, PluginLoader } from '../../kernel/interfaces.js';
|
|
2
|
+
import type { DomainName } from '../../shared/types/index.js';
|
|
3
|
+
/** Supply the Queen with the actual plugin instances that execute CLI tasks. */
|
|
4
|
+
export declare function loadCLIDomainPlugins(loader: PluginLoader): Promise<Map<DomainName, DomainPlugin>>;
|
|
5
|
+
//# sourceMappingURL=domain-plugins.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Supply the Queen with the actual plugin instances that execute CLI tasks. */
|
|
2
|
+
export async function loadCLIDomainPlugins(loader) {
|
|
3
|
+
await loader.loadAll();
|
|
4
|
+
const plugins = new Map();
|
|
5
|
+
for (const domain of loader.getLoaded()) {
|
|
6
|
+
// load() returns the cached instance after loadAll(), including dependencies.
|
|
7
|
+
plugins.set(domain, await loader.load(domain));
|
|
8
|
+
}
|
|
9
|
+
return plugins;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=domain-plugins.js.map
|
package/dist/cli/index.js
CHANGED
|
@@ -98,6 +98,7 @@ async function autoInitialize() {
|
|
|
98
98
|
const { WorkflowOrchestrator } = await import('../coordination/workflow-orchestrator.js');
|
|
99
99
|
const { createQueenCoordinator } = await import('../coordination/queen-coordinator.js');
|
|
100
100
|
const { createPersistentScheduler } = await import('./scheduler/index.js');
|
|
101
|
+
const { loadCLIDomainPlugins } = await import('./helpers/domain-plugins.js');
|
|
101
102
|
context.kernel = new QEKernelImpl({
|
|
102
103
|
maxConcurrentAgents: 15,
|
|
103
104
|
memoryBackend: 'sqlite',
|
|
@@ -105,10 +106,11 @@ async function autoInitialize() {
|
|
|
105
106
|
lazyLoading: true,
|
|
106
107
|
enabledDomains: [...ALL_DOMAINS],
|
|
107
108
|
// CLI commands are short-lived and don't benefit from the bridge's
|
|
108
|
-
// event-driven domain reactions.
|
|
109
|
+
// event-driven domain reactions.
|
|
109
110
|
enableExperienceBridge: false,
|
|
110
111
|
});
|
|
111
112
|
await context.kernel.initialize();
|
|
113
|
+
const domainPlugins = await loadCLIDomainPlugins(context.kernel.plugins);
|
|
112
114
|
context.router = new CrossDomainEventRouter(context.kernel.eventBus);
|
|
113
115
|
await context.router.initialize();
|
|
114
116
|
const getDomainAPI = (domain) => {
|
|
@@ -119,7 +121,7 @@ async function autoInitialize() {
|
|
|
119
121
|
await context.workflowOrchestrator.initialize();
|
|
120
122
|
registerDomainWorkflowActions(context.kernel, context.workflowOrchestrator);
|
|
121
123
|
context.persistentScheduler = createPersistentScheduler();
|
|
122
|
-
context.queen = createQueenCoordinator(context.kernel, context.router, protocolExecutor, undefined);
|
|
124
|
+
context.queen = createQueenCoordinator(context.kernel, context.router, protocolExecutor, undefined, domainPlugins);
|
|
123
125
|
await context.queen.initialize();
|
|
124
126
|
// Bridge the CLI-initialized components into the MCP handlers' fleet state.
|
|
125
127
|
// The memory/agent/task/team/pipeline handlers are shared between the MCP
|
|
@@ -400,12 +402,19 @@ async function main() {
|
|
|
400
402
|
console.log(VERSION);
|
|
401
403
|
process.exit(0);
|
|
402
404
|
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
405
|
+
// File recovery must validate its input before anything opens, migrates, or
|
|
406
|
+
// auto-restores the project's database. Commander accepts `--` separators.
|
|
407
|
+
const commandArgs = process.argv.slice(2).filter(arg => arg !== '--');
|
|
408
|
+
const learningSnapshot = commandArgs[0] === 'learning'
|
|
409
|
+
&& (commandArgs[1] === 'backup' || commandArgs[1] === 'restore');
|
|
410
|
+
if (!learningSnapshot) {
|
|
411
|
+
const { bootstrapTokenTracking } = await import('../init/token-bootstrap.js');
|
|
412
|
+
await bootstrapTokenTracking({
|
|
413
|
+
enableOptimization: true,
|
|
414
|
+
enablePersistence: true,
|
|
415
|
+
verbose: process.env.AQE_VERBOSE === 'true',
|
|
416
|
+
});
|
|
417
|
+
}
|
|
409
418
|
await program.parseAsync();
|
|
410
419
|
// Foreground commands own their process lifetime after command dispatch.
|
|
411
420
|
if (isForegroundCommandActive())
|
|
@@ -72,7 +72,10 @@ export interface CIRunResult {
|
|
|
72
72
|
completedAt: Date;
|
|
73
73
|
duration: number;
|
|
74
74
|
phases: CIPhaseResult[];
|
|
75
|
+
/** True only when at least one gate ran and every gate passed. */
|
|
75
76
|
qualityGatePassed: boolean;
|
|
77
|
+
qualityGateStatus: 'passed' | 'failed' | 'not-run';
|
|
78
|
+
qualityGateEnforced: boolean;
|
|
76
79
|
overallStatus: 'passed' | 'failed' | 'warning';
|
|
77
80
|
exitCode: number;
|
|
78
81
|
}
|
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* Provides structured output formatting for CI/CD pipeline integration.
|
|
5
5
|
* Supports: text (default), json, sarif, junit, markdown
|
|
6
6
|
*/
|
|
7
|
+
import type { SecurityCoverage } from '../../domains/security-compliance/interfaces.js';
|
|
8
|
+
import type { SecurityScanEvidence } from '../../domains/security-compliance/scan-evidence.js';
|
|
9
|
+
import type { discoverSecurityFiles } from '../../domains/security-compliance/scan-discovery.js';
|
|
7
10
|
export type OutputFormat = 'text' | 'json' | 'sarif' | 'junit' | 'markdown';
|
|
8
11
|
export interface CIOutputOptions {
|
|
9
12
|
format: OutputFormat;
|
|
@@ -29,7 +32,21 @@ export interface SecurityScanResult {
|
|
|
29
32
|
};
|
|
30
33
|
target: string;
|
|
31
34
|
scanType: string;
|
|
35
|
+
/** Execution completeness is independent of finding severity. */
|
|
36
|
+
status?: SecurityExecutionStatus;
|
|
37
|
+
checks?: SecurityCheckResult[];
|
|
38
|
+
coverage?: SecurityCoverage;
|
|
39
|
+
evidence?: SecurityScanEvidence;
|
|
40
|
+
discovery?: Awaited<ReturnType<typeof discoverSecurityFiles>>['discovery'];
|
|
32
41
|
}
|
|
42
|
+
export type SecurityExecutionStatus = 'complete' | 'partial' | 'none' | 'failed' | 'not-run' | 'unverified';
|
|
43
|
+
export interface SecurityCheckResult {
|
|
44
|
+
name: string;
|
|
45
|
+
status: SecurityExecutionStatus;
|
|
46
|
+
reason?: string;
|
|
47
|
+
}
|
|
48
|
+
/** Legacy finding-only reports carry no evidence that the requested work ran. */
|
|
49
|
+
export declare function securityExecutionStatus(result: SecurityScanResult): SecurityExecutionStatus;
|
|
33
50
|
export interface TestResult {
|
|
34
51
|
name: string;
|
|
35
52
|
passed: boolean;
|
|
@@ -29,6 +29,10 @@ function getPackageVersion() {
|
|
|
29
29
|
catch { /* fallback */ }
|
|
30
30
|
return 'unknown';
|
|
31
31
|
}
|
|
32
|
+
/** Legacy finding-only reports carry no evidence that the requested work ran. */
|
|
33
|
+
export function securityExecutionStatus(result) {
|
|
34
|
+
return result.status ?? result.evidence?.completeness ?? 'unverified';
|
|
35
|
+
}
|
|
32
36
|
// ============================================================================
|
|
33
37
|
// Commander Option Helpers
|
|
34
38
|
// ============================================================================
|
|
@@ -70,6 +74,7 @@ export function toJSON(data) {
|
|
|
70
74
|
// ============================================================================
|
|
71
75
|
const SARIF_SCHEMA = 'https://raw.githubusercontent.com/oasis-tcs/sarif-spec/main/sarif-2.1/schema/sarif-schema-2.1.0.json';
|
|
72
76
|
export function toSARIF(result) {
|
|
77
|
+
const status = securityExecutionStatus(result);
|
|
73
78
|
const severityToLevel = (severity) => {
|
|
74
79
|
switch (severity.toLowerCase()) {
|
|
75
80
|
case 'critical':
|
|
@@ -124,9 +129,20 @@ export function toSARIF(result) {
|
|
|
124
129
|
},
|
|
125
130
|
},
|
|
126
131
|
results,
|
|
132
|
+
properties: {
|
|
133
|
+
securityScan: {
|
|
134
|
+
status, target: result.target, scanType: result.scanType, coverage: result.evidence ? result.coverage : undefined,
|
|
135
|
+
evidence: result.evidence, discovery: result.discovery, checks: result.checks,
|
|
136
|
+
},
|
|
137
|
+
},
|
|
127
138
|
invocations: [{
|
|
128
|
-
executionSuccessful:
|
|
129
|
-
|
|
139
|
+
executionSuccessful: status === 'complete',
|
|
140
|
+
...(status === 'complete' ? {} : {
|
|
141
|
+
toolExecutionNotifications: [{
|
|
142
|
+
level: 'warning',
|
|
143
|
+
message: { text: `Security analysis ${status}; findings do not establish complete coverage.` },
|
|
144
|
+
}],
|
|
145
|
+
}),
|
|
130
146
|
}],
|
|
131
147
|
}],
|
|
132
148
|
};
|
|
@@ -236,7 +252,23 @@ export function securityToMarkdown(result) {
|
|
|
236
252
|
let md = `# Security Scan Report\n\n`;
|
|
237
253
|
md += `**Target:** ${result.target}\n`;
|
|
238
254
|
md += `**Scan Type:** ${result.scanType}\n`;
|
|
255
|
+
md += `**Execution:** ${securityExecutionStatus(result)}\n`;
|
|
239
256
|
md += `**Vulnerabilities Found:** ${result.vulnerabilities.length}\n\n`;
|
|
257
|
+
if (result.checks?.length) {
|
|
258
|
+
md += `## Check execution\n\n`;
|
|
259
|
+
for (const check of result.checks) {
|
|
260
|
+
md += `- **${check.name}:** ${check.status}${check.reason ? ` — ${check.reason}` : ''}\n`;
|
|
261
|
+
}
|
|
262
|
+
md += '\n';
|
|
263
|
+
}
|
|
264
|
+
if (result.coverage && result.evidence) {
|
|
265
|
+
md += `**Analyzed files:** ${result.coverage.filesScanned}\n`;
|
|
266
|
+
md += `**Analyzed lines:** ${result.coverage.linesScanned}\n`;
|
|
267
|
+
md += `**Rules applied:** ${result.coverage.rulesApplied}${result.coverage.rulesAppliedScope ? ` (${result.coverage.rulesAppliedScope})` : ''}\n\n`;
|
|
268
|
+
}
|
|
269
|
+
if (result.evidence || result.discovery) {
|
|
270
|
+
md += `## Execution receipts\n\n\`\`\`json\n${toJSON({ evidence: result.evidence, discovery: result.discovery })}\n\`\`\`\n\n`;
|
|
271
|
+
}
|
|
240
272
|
if (result.vulnerabilities.length > 0) {
|
|
241
273
|
md += `## Vulnerabilities\n\n`;
|
|
242
274
|
md += `| Severity | Type | File | Line | Message |\n`;
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { ContextSource, ContextRequest, ContextFragment } from './types.js';
|
|
5
5
|
export declare class GitContextSource implements ContextSource {
|
|
6
|
+
private readonly cwd?;
|
|
6
7
|
id: string;
|
|
7
8
|
name: string;
|
|
8
9
|
priority: number;
|
|
9
10
|
maxTokens: number;
|
|
11
|
+
constructor(cwd?: string | undefined);
|
|
10
12
|
gather(request: ContextRequest): Promise<ContextFragment[]>;
|
|
11
13
|
}
|
|
12
14
|
//# sourceMappingURL=git-source.d.ts.map
|