octocode-cli 1.2.5 → 1.2.7
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/LICENSE +21 -63
- package/README.md +86 -109
- package/out/octocode-cli.js +7027 -7014
- package/package.json +8 -6
- package/skills/README.md +97 -120
- package/skills/octocode-code-engineer/.claude/settings.local.json +18 -0
- package/skills/octocode-code-engineer/.octocode/rfc/RFC-code-engineer-weakness-fixes.md +255 -0
- package/skills/octocode-code-engineer/.plan/VALIDATED_PLAN.md +223 -0
- package/skills/octocode-code-engineer/README.md +178 -0
- package/skills/octocode-code-engineer/SKILL.md +418 -0
- package/skills/octocode-code-engineer/coverage/architecture.ts.html +7828 -0
- package/skills/octocode-code-engineer/coverage/ast-helpers.ts.html +211 -0
- package/skills/octocode-code-engineer/coverage/ast-search.ts.html +1795 -0
- package/skills/octocode-code-engineer/coverage/base.css +224 -0
- package/skills/octocode-code-engineer/coverage/block-navigation.js +87 -0
- package/skills/octocode-code-engineer/coverage/cache.ts.html +376 -0
- package/skills/octocode-code-engineer/coverage/cli.ts.html +982 -0
- package/skills/octocode-code-engineer/coverage/clover.xml +3217 -0
- package/skills/octocode-code-engineer/coverage/collect-effects.ts.html +664 -0
- package/skills/octocode-code-engineer/coverage/collect-input-sources.ts.html +577 -0
- package/skills/octocode-code-engineer/coverage/collect-performance.ts.html +331 -0
- package/skills/octocode-code-engineer/coverage/collect-prototype-pollution.ts.html +421 -0
- package/skills/octocode-code-engineer/coverage/collect-security.ts.html +604 -0
- package/skills/octocode-code-engineer/coverage/collect-test-profile.ts.html +589 -0
- package/skills/octocode-code-engineer/coverage/coverage-final.json +30 -0
- package/skills/octocode-code-engineer/coverage/dependencies.ts.html +997 -0
- package/skills/octocode-code-engineer/coverage/dependency-summary.ts.html +688 -0
- package/skills/octocode-code-engineer/coverage/discovery.ts.html +322 -0
- package/skills/octocode-code-engineer/coverage/favicon.png +0 -0
- package/skills/octocode-code-engineer/coverage/graph-analytics.ts.html +1510 -0
- package/skills/octocode-code-engineer/coverage/index.html +536 -0
- package/skills/octocode-code-engineer/coverage/index.ts.html +826 -0
- package/skills/octocode-code-engineer/coverage/metrics.ts.html +553 -0
- package/skills/octocode-code-engineer/coverage/pipeline.ts.html +2044 -0
- package/skills/octocode-code-engineer/coverage/prettify.css +1 -0
- package/skills/octocode-code-engineer/coverage/prettify.js +2 -0
- package/skills/octocode-code-engineer/coverage/report-analysis.ts.html +1570 -0
- package/skills/octocode-code-engineer/coverage/report-writer.ts.html +1102 -0
- package/skills/octocode-code-engineer/coverage/security-detectors.ts.html +1747 -0
- package/skills/octocode-code-engineer/coverage/semantic-detectors.ts.html +2152 -0
- package/skills/octocode-code-engineer/coverage/semantic.ts.html +1897 -0
- package/skills/octocode-code-engineer/coverage/sort-arrow-sprite.png +0 -0
- package/skills/octocode-code-engineer/coverage/sorter.js +210 -0
- package/skills/octocode-code-engineer/coverage/summary-md.ts.html +1222 -0
- package/skills/octocode-code-engineer/coverage/test-quality-detectors.ts.html +1039 -0
- package/skills/octocode-code-engineer/coverage/tree-sitter-analyzer.ts.html +955 -0
- package/skills/octocode-code-engineer/coverage/ts-analyzer.ts.html +1213 -0
- package/skills/octocode-code-engineer/coverage/types.ts.html +2473 -0
- package/skills/octocode-code-engineer/coverage/utils.ts.html +820 -0
- package/skills/octocode-code-engineer/eslint.config.mjs +54 -0
- package/skills/octocode-code-engineer/minify-scripts.mjs +32 -0
- package/skills/octocode-code-engineer/package.json +54 -0
- package/skills/octocode-code-engineer/references/agent-ast-reading-rfc.md +95 -0
- package/skills/octocode-code-engineer/references/architecture-techniques.md +121 -0
- package/skills/octocode-code-engineer/references/ast-search.md +210 -0
- package/skills/octocode-code-engineer/references/ast-tree-search.md +151 -0
- package/skills/octocode-code-engineer/references/cli-reference.md +167 -0
- package/skills/octocode-code-engineer/references/concepts.md +107 -0
- package/skills/octocode-code-engineer/references/finding-categories.md +128 -0
- package/skills/octocode-code-engineer/references/improvement-roadmap.md +304 -0
- package/skills/octocode-code-engineer/references/output-files.md +144 -0
- package/skills/octocode-code-engineer/references/playbooks.md +204 -0
- package/skills/octocode-code-engineer/references/present-results.md +136 -0
- package/skills/octocode-code-engineer/references/tool-workflows.md +566 -0
- package/skills/octocode-code-engineer/references/validate-investigate.md +225 -0
- package/skills/octocode-code-engineer/scripts/analysis/dependencies.js +1 -0
- package/skills/octocode-code-engineer/scripts/analysis/dependency-summary.js +1 -0
- package/skills/octocode-code-engineer/scripts/analysis/discovery.js +1 -0
- package/skills/octocode-code-engineer/scripts/analysis/graph-analytics.js +1 -0
- package/skills/octocode-code-engineer/scripts/analysis/semantic.js +1 -0
- package/skills/octocode-code-engineer/scripts/ast/helpers.js +1 -0
- package/skills/octocode-code-engineer/scripts/ast/metrics.js +1 -0
- package/skills/octocode-code-engineer/scripts/ast/search.js +2 -0
- package/skills/octocode-code-engineer/scripts/ast/tree-search.js +2 -0
- package/skills/octocode-code-engineer/scripts/ast/tree-sitter.js +1 -0
- package/skills/octocode-code-engineer/scripts/ast/ts-analyzer.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/chains.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/effects.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/input-sources.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/performance.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/prototype-pollution.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/security.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/test-profile.js +1 -0
- package/skills/octocode-code-engineer/scripts/common/is-direct-run.js +1 -0
- package/skills/octocode-code-engineer/scripts/common/utils.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/code-quality.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/cohesion.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/coupling.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/cycle.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/dead-code.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/import-style.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/index.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/security.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/semantic.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/shared.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/test-quality.js +1 -0
- package/skills/octocode-code-engineer/scripts/index.js +1 -0
- package/skills/octocode-code-engineer/scripts/pipeline/cache.js +1 -0
- package/skills/octocode-code-engineer/scripts/pipeline/cli.js +1 -0
- package/skills/octocode-code-engineer/scripts/pipeline/main.js +2 -0
- package/skills/octocode-code-engineer/scripts/reporting/analysis.js +1 -0
- package/skills/octocode-code-engineer/scripts/reporting/summary-md.js +1 -0
- package/skills/octocode-code-engineer/scripts/reporting/writer.js +1 -0
- package/skills/octocode-code-engineer/scripts/types/constants.js +1 -0
- package/skills/octocode-code-engineer/scripts/types/index.js +1 -0
- package/skills/octocode-code-engineer/scripts/types/interfaces.js +1 -0
- package/skills/octocode-code-engineer/src/analysis/dependencies.test.ts +545 -0
- package/skills/octocode-code-engineer/src/analysis/dependencies.ts +406 -0
- package/skills/octocode-code-engineer/src/analysis/dependency-summary.test.ts +566 -0
- package/skills/octocode-code-engineer/src/analysis/dependency-summary.ts +257 -0
- package/skills/octocode-code-engineer/src/analysis/discovery.test.ts +420 -0
- package/skills/octocode-code-engineer/src/analysis/discovery.ts +87 -0
- package/skills/octocode-code-engineer/src/analysis/graph-analytics.test.ts +449 -0
- package/skills/octocode-code-engineer/src/analysis/graph-analytics.ts +534 -0
- package/skills/octocode-code-engineer/src/analysis/semantic.test.ts +1533 -0
- package/skills/octocode-code-engineer/src/analysis/semantic.ts +830 -0
- package/skills/octocode-code-engineer/src/ast/helpers.test.ts +185 -0
- package/skills/octocode-code-engineer/src/ast/helpers.ts +62 -0
- package/skills/octocode-code-engineer/src/ast/metrics.test.ts +304 -0
- package/skills/octocode-code-engineer/src/ast/metrics.ts +204 -0
- package/skills/octocode-code-engineer/src/ast/search.test.ts +647 -0
- package/skills/octocode-code-engineer/src/ast/search.ts +648 -0
- package/skills/octocode-code-engineer/src/ast/tree-search.test.ts +199 -0
- package/skills/octocode-code-engineer/src/ast/tree-search.ts +392 -0
- package/skills/octocode-code-engineer/src/ast/tree-sitter.test.ts +407 -0
- package/skills/octocode-code-engineer/src/ast/tree-sitter.ts +402 -0
- package/skills/octocode-code-engineer/src/ast/ts-analyzer.test.ts +1864 -0
- package/skills/octocode-code-engineer/src/ast/ts-analyzer.ts +509 -0
- package/skills/octocode-code-engineer/src/collectors/chains.ts +74 -0
- package/skills/octocode-code-engineer/src/collectors/effects.test.ts +490 -0
- package/skills/octocode-code-engineer/src/collectors/effects.ts +332 -0
- package/skills/octocode-code-engineer/src/collectors/input-sources.test.ts +144 -0
- package/skills/octocode-code-engineer/src/collectors/input-sources.ts +196 -0
- package/skills/octocode-code-engineer/src/collectors/performance.test.ts +82 -0
- package/skills/octocode-code-engineer/src/collectors/performance.ts +141 -0
- package/skills/octocode-code-engineer/src/collectors/prototype-pollution.test.ts +55 -0
- package/skills/octocode-code-engineer/src/collectors/prototype-pollution.ts +162 -0
- package/skills/octocode-code-engineer/src/collectors/security.test.ts +124 -0
- package/skills/octocode-code-engineer/src/collectors/security.ts +309 -0
- package/skills/octocode-code-engineer/src/collectors/test-profile.test.ts +97 -0
- package/skills/octocode-code-engineer/src/collectors/test-profile.ts +269 -0
- package/skills/octocode-code-engineer/src/common/is-direct-run.test.ts +32 -0
- package/skills/octocode-code-engineer/src/common/is-direct-run.ts +13 -0
- package/skills/octocode-code-engineer/src/common/utils.test.ts +463 -0
- package/skills/octocode-code-engineer/src/common/utils.ts +304 -0
- package/skills/octocode-code-engineer/src/detectors/code-quality.ts +966 -0
- package/skills/octocode-code-engineer/src/detectors/cohesion.ts +539 -0
- package/skills/octocode-code-engineer/src/detectors/coupling.ts +323 -0
- package/skills/octocode-code-engineer/src/detectors/cycle.ts +349 -0
- package/skills/octocode-code-engineer/src/detectors/dead-code.ts +320 -0
- package/skills/octocode-code-engineer/src/detectors/import-style.ts +376 -0
- package/skills/octocode-code-engineer/src/detectors/index.test.ts +3061 -0
- package/skills/octocode-code-engineer/src/detectors/index.ts +88 -0
- package/skills/octocode-code-engineer/src/detectors/security.test.ts +882 -0
- package/skills/octocode-code-engineer/src/detectors/security.ts +821 -0
- package/skills/octocode-code-engineer/src/detectors/semantic.ts +758 -0
- package/skills/octocode-code-engineer/src/detectors/shared.ts +49 -0
- package/skills/octocode-code-engineer/src/detectors/test-quality.test.ts +388 -0
- package/skills/octocode-code-engineer/src/detectors/test-quality.ts +367 -0
- package/skills/octocode-code-engineer/src/index.test.ts +4425 -0
- package/skills/octocode-code-engineer/src/index.ts +403 -0
- package/skills/octocode-code-engineer/src/pipeline/cache.test.ts +199 -0
- package/skills/octocode-code-engineer/src/pipeline/cache.ts +130 -0
- package/skills/octocode-code-engineer/src/pipeline/cli.test.ts +493 -0
- package/skills/octocode-code-engineer/src/pipeline/cli.ts +344 -0
- package/skills/octocode-code-engineer/src/pipeline/main.test.ts +174 -0
- package/skills/octocode-code-engineer/src/pipeline/main.ts +1074 -0
- package/skills/octocode-code-engineer/src/pipeline.test.ts +84 -0
- package/skills/octocode-code-engineer/src/reporting/analysis.test.ts +782 -0
- package/skills/octocode-code-engineer/src/reporting/analysis.ts +688 -0
- package/skills/octocode-code-engineer/src/reporting/output-contract.test.ts +463 -0
- package/skills/octocode-code-engineer/src/reporting/summary-md.test.ts +421 -0
- package/skills/octocode-code-engineer/src/reporting/summary-md.ts +714 -0
- package/skills/octocode-code-engineer/src/reporting/writer.ts +430 -0
- package/skills/octocode-code-engineer/src/sanity.test.ts +47 -0
- package/skills/octocode-code-engineer/src/types/constants.ts +248 -0
- package/skills/octocode-code-engineer/src/types/index.ts +80 -0
- package/skills/octocode-code-engineer/src/types/interfaces.ts +682 -0
- package/skills/octocode-code-engineer/tsconfig.json +17 -0
- package/skills/octocode-code-engineer/vitest.config.ts +8 -0
- package/skills/octocode-documentation-writer/README.md +113 -0
- package/skills/octocode-documentation-writer/SKILL.md +886 -0
- package/skills/octocode-documentation-writer/references/agent-discovery-analysis.md +453 -0
- package/skills/octocode-documentation-writer/references/agent-documentation-writer.md +255 -0
- package/skills/octocode-documentation-writer/references/agent-engineer-questions.md +247 -0
- package/skills/octocode-documentation-writer/references/agent-orchestrator.md +370 -0
- package/skills/octocode-documentation-writer/references/agent-qa-validator.md +227 -0
- package/skills/octocode-documentation-writer/references/agent-researcher.md +250 -0
- package/skills/octocode-documentation-writer/schemas/analysis-schema.json +886 -0
- package/skills/octocode-documentation-writer/schemas/discovery-tasks.json +96 -0
- package/skills/octocode-documentation-writer/schemas/documentation-structure.json +373 -0
- package/skills/octocode-documentation-writer/schemas/partial-discovery-schema.json +102 -0
- package/skills/octocode-documentation-writer/schemas/partial-research-schema.json +98 -0
- package/skills/octocode-documentation-writer/schemas/qa-results-schema.json +113 -0
- package/skills/octocode-documentation-writer/schemas/questions-schema.json +228 -0
- package/skills/octocode-documentation-writer/schemas/research-schema.json +104 -0
- package/skills/octocode-documentation-writer/schemas/state-schema.json +222 -0
- package/skills/octocode-documentation-writer/schemas/work-assignments-schema.json +74 -0
- package/skills/octocode-plan/SKILL.md +122 -116
- package/skills/octocode-prompt-optimizer/SKILL.md +617 -0
- package/skills/octocode-pull-request-reviewer/README.md +249 -0
- package/skills/octocode-pull-request-reviewer/SKILL.md +479 -0
- package/skills/octocode-pull-request-reviewer/references/dependency-check.md +74 -0
- package/skills/octocode-pull-request-reviewer/references/domain-reviewers.md +24 -0
- package/skills/octocode-pull-request-reviewer/references/execution-lifecycle.md +441 -0
- package/skills/octocode-pull-request-reviewer/references/flow-analysis-protocol.md +64 -0
- package/skills/octocode-pull-request-reviewer/references/output-template.md +174 -0
- package/skills/octocode-pull-request-reviewer/references/parallel-agent-protocol.md +182 -0
- package/skills/octocode-pull-request-reviewer/references/review-guidelines.md +26 -0
- package/skills/octocode-pull-request-reviewer/references/verification-checklist.md +40 -0
- package/skills/octocode-research/.claude/settings.local.json +46 -0
- package/skills/octocode-research/.octocode/plan/code-review-fixes/plan.md +312 -0
- package/skills/octocode-research/.octocode/plan/code-review-fixes/research.md +212 -0
- package/skills/octocode-research/.octocode/plans/NODE_SERVER_START_PLAN.md +755 -0
- package/skills/octocode-research/.octocode/research/code-review/research.md +371 -0
- package/skills/octocode-research/.octocode/review/IMPROVEMENTS.md +391 -0
- package/skills/octocode-research/.octocode/review/REVIEW_PLAN.md +289 -0
- package/skills/octocode-research/.octocode/review/REVIEW_REPORT.md +356 -0
- package/skills/octocode-research/AGENTS.md +349 -0
- package/skills/octocode-research/README.md +494 -0
- package/skills/octocode-research/SKILL.md +652 -274
- package/skills/octocode-research/docs/API_REFERENCE.md +562 -0
- package/skills/octocode-research/docs/ARCHITECTURE.md +554 -0
- package/skills/octocode-research/docs/FLOWS.md +577 -0
- package/skills/octocode-research/docs/OVERVIEW.md +564 -0
- package/skills/octocode-research/docs/SERVER_FLOWS.md +631 -0
- package/skills/octocode-research/ecosystem.config.cjs +88 -0
- package/skills/octocode-research/eslint.config.mjs +27 -0
- package/skills/octocode-research/package.json +84 -0
- package/skills/octocode-research/references/GUARDRAILS.md +40 -0
- package/skills/octocode-research/references/PARALLEL_AGENT_PROTOCOL.md +178 -0
- package/skills/octocode-research/references/roast-prompt.md +149 -0
- package/skills/octocode-research/scripts/server-init.d.ts +2 -0
- package/skills/octocode-research/scripts/server-init.js +2 -0
- package/skills/octocode-research/scripts/server.d.ts +8 -0
- package/skills/octocode-research/scripts/server.js +445 -0
- package/skills/octocode-research/src/__tests__/integration/circuitBreaker.test.ts +205 -0
- package/skills/octocode-research/src/__tests__/integration/routes.test.ts +374 -0
- package/skills/octocode-research/src/__tests__/unit/circuitBreaker.test.ts +245 -0
- package/skills/octocode-research/src/__tests__/unit/errorHandler.test.ts +183 -0
- package/skills/octocode-research/src/__tests__/unit/httpPreprocess.test.ts +157 -0
- package/skills/octocode-research/src/__tests__/unit/logger.test.ts +143 -0
- package/skills/octocode-research/src/__tests__/unit/queryParser.test.ts +130 -0
- package/skills/octocode-research/src/__tests__/unit/responseBuilder.test.ts +469 -0
- package/skills/octocode-research/src/__tests__/unit/retry.test.ts +205 -0
- package/skills/octocode-research/src/index.ts +186 -0
- package/skills/octocode-research/src/mcpCache.ts +49 -0
- package/skills/octocode-research/src/middleware/errorHandler.ts +65 -0
- package/skills/octocode-research/src/middleware/logger.ts +61 -0
- package/skills/octocode-research/src/middleware/queryParser.ts +115 -0
- package/skills/octocode-research/src/middleware/readiness.ts +17 -0
- package/skills/octocode-research/src/routes/github.ts +197 -0
- package/skills/octocode-research/src/routes/local.ts +175 -0
- package/skills/octocode-research/src/routes/lsp.ts +177 -0
- package/skills/octocode-research/src/routes/package.ts +127 -0
- package/skills/octocode-research/src/routes/prompts.ts +138 -0
- package/skills/octocode-research/src/routes/tools.ts +677 -0
- package/skills/octocode-research/src/server-init.ts +363 -0
- package/skills/octocode-research/src/server.ts +285 -0
- package/skills/octocode-research/src/types/errorGuards.ts +151 -0
- package/skills/octocode-research/src/types/express.d.ts +76 -0
- package/skills/octocode-research/src/types/guards.ts +98 -0
- package/skills/octocode-research/src/types/mcp.ts +119 -0
- package/skills/octocode-research/src/types/responses.ts +199 -0
- package/skills/octocode-research/src/types/toolTypes.ts +33 -0
- package/skills/octocode-research/src/utils/asyncTimeout.ts +116 -0
- package/skills/octocode-research/src/utils/circuitBreaker.ts +492 -0
- package/skills/octocode-research/src/utils/colors.ts +53 -0
- package/skills/octocode-research/src/utils/errorQueue.ts +71 -0
- package/skills/octocode-research/src/utils/logEmoji.ts +103 -0
- package/skills/octocode-research/src/utils/logger.ts +413 -0
- package/skills/octocode-research/src/utils/resilience.ts +169 -0
- package/skills/octocode-research/src/utils/responseBuilder.ts +495 -0
- package/skills/octocode-research/src/utils/responseFactory.ts +100 -0
- package/skills/octocode-research/src/utils/responseParser.ts +272 -0
- package/skills/octocode-research/src/utils/retry.ts +280 -0
- package/skills/octocode-research/src/utils/routeFactory.ts +117 -0
- package/skills/octocode-research/src/utils/url.ts +20 -0
- package/skills/octocode-research/src/validation/httpPreprocess.ts +155 -0
- package/skills/octocode-research/src/validation/index.ts +2 -0
- package/skills/octocode-research/src/validation/schemas.ts +578 -0
- package/skills/octocode-research/src/validation/toolCallSchema.ts +132 -0
- package/skills/octocode-research/tsconfig.json +21 -0
- package/skills/octocode-research/tsdown.config.ts +42 -0
- package/skills/octocode-research/vitest.config.ts +20 -0
- package/skills/octocode-researcher/SKILL.md +461 -0
- package/skills/octocode-researcher/references/fallbacks.md +120 -0
- package/skills/{octocode-local-search → octocode-researcher}/references/tool-reference.md +132 -49
- package/skills/{octocode-local-search → octocode-researcher}/references/workflow-patterns.md +204 -4
- package/skills/octocode-rfc-generator/SKILL.md +223 -0
- package/skills/octocode-rfc-generator/references/rfc-template.md +193 -0
- package/skills/octocode-roast/SKILL.md +63 -21
- package/skills/octocode-implement/SKILL.md +0 -293
- package/skills/octocode-implement/references/execution-phases.md +0 -317
- package/skills/octocode-implement/references/tool-reference.md +0 -403
- package/skills/octocode-implement/references/workflow-patterns.md +0 -385
- package/skills/octocode-local-search/SKILL.md +0 -449
- package/skills/octocode-pr-review/SKILL.md +0 -391
- package/skills/octocode-pr-review/references/domain-reviewers.md +0 -105
- package/skills/octocode-pr-review/references/execution-lifecycle.md +0 -116
- package/skills/octocode-pr-review/references/research-flows.md +0 -75
- package/skills/octocode-research/references/tool-reference.md +0 -304
- package/skills/octocode-research/references/workflow-patterns.md +0 -325
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Discovery+Analysis Agent
|
|
3
|
+
description: Adaptive repository analysis that discovers language, architecture, flows, APIs, and integrations through intelligent exploration. Supports monorepos and polyglot environments.
|
|
4
|
+
model: opus
|
|
5
|
+
tools: localFindFiles, localViewStructure, localSearchCode, localGetFileContent, lspGotoDefinition, lspFindReferences, lspCallHierarchy, Read, Write, TaskTool, Task
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Discovery+Analysis Agent - ADAPTIVE, GENERIC & COMPREHENSIVE
|
|
9
|
+
|
|
10
|
+
You are an **EXPERT ADAPTIVE SOFTWARE ENGINEER** analyzing **ANY** code repository intelligently. This is **REAL EXECUTION**.
|
|
11
|
+
Your goal is to produce a deep, comprehensive understanding of the codebase, regardless of language, framework, or architecture (monorepo/polyrepo).
|
|
12
|
+
|
|
13
|
+
## CRITICAL OPERATING RULES
|
|
14
|
+
|
|
15
|
+
**BE ADAPTIVE, NOT PRESCRIPTIVE (REQUIRED)**
|
|
16
|
+
|
|
17
|
+
- **Universal Support**: Works on Node.js, Python, Go, Rust, Java, C++, Bazel, etc.
|
|
18
|
+
- **Structure Aware**: Automatically detects monorepos and analyzes packages individually.
|
|
19
|
+
- **Deep Integrations**: Specifically hunts for Databases, LLMs, Payments, and External APIs.
|
|
20
|
+
- **Leverage LSP for semantic analysis**: **ALWAYS** use lspGotoDefinition, lspFindReferences, lspCallHierarchy for precise code navigation.
|
|
21
|
+
- **Let the codebase guide you**: Adapt search strategies based on what you find.
|
|
22
|
+
|
|
23
|
+
## The Funnel Method (REQUIRED TOOL SEQUENCING)
|
|
24
|
+
|
|
25
|
+
**STOP. You MUST follow this progressive narrowing approach:**
|
|
26
|
+
|
|
27
|
+
```mermaid
|
|
28
|
+
graph TD
|
|
29
|
+
A[DISCOVERY] --> B[SEARCH]
|
|
30
|
+
B --> C[LSP SEMANTIC]
|
|
31
|
+
C --> D[READ]
|
|
32
|
+
|
|
33
|
+
A -.->|Structure & Scope| A1[localViewStructure]
|
|
34
|
+
B -.->|Pattern Matching| B1[localSearchCode]
|
|
35
|
+
C -.->|Locate/Analyze| C1[lspGotoDefinition]
|
|
36
|
+
D -.->|Implementation| D1[localGetFileContent]
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
| Stage | Tool | Purpose |
|
|
40
|
+
|-------|------|---------|
|
|
41
|
+
| **1. DISCOVER** | `localViewStructure`, `localFindFiles` | Narrow scope 80-90% |
|
|
42
|
+
| **2. SEARCH** | `localSearchCode` | Find patterns, get lineHint |
|
|
43
|
+
| **3. LOCATE** | `lspGotoDefinition` | Jump to definition |
|
|
44
|
+
| **3. ANALYZE** | `lspFindReferences`, `lspCallHierarchy` | Usage & flow |
|
|
45
|
+
| **4. READ** | `localGetFileContent` | Implementation details (LAST STEP) |
|
|
46
|
+
|
|
47
|
+
**Golden Rule:** Text narrows → Symbols identify → Graphs explain
|
|
48
|
+
|
|
49
|
+
**STRICT ENFORCEMENT:**
|
|
50
|
+
1. **FIRST:** `localSearchCode` → get `lineHint`
|
|
51
|
+
2. **THEN:** `lspGotoDefinition(lineHint=N)`
|
|
52
|
+
3. **NEVER:** Call LSP tools without `lineHint` from step 1
|
|
53
|
+
4. **FORBIDDEN:** Reading files (`localGetFileContent`) before narrowing scope
|
|
54
|
+
|
|
55
|
+
## Input & Configuration
|
|
56
|
+
|
|
57
|
+
- **Repository Root**: `${REPOSITORY_PATH}`
|
|
58
|
+
- **State**: `.context/state.json`
|
|
59
|
+
- **Schema**: `schemas/analysis-schema.json` (Full Output Structure)
|
|
60
|
+
- **Partial Schema**: `schemas/partial-discovery-schema.json` (Sub-agent Output Structure)
|
|
61
|
+
- **Tasks**: `schemas/discovery-tasks.json` (Task Definitions)
|
|
62
|
+
|
|
63
|
+
## Mission
|
|
64
|
+
|
|
65
|
+
Generate `analysis.json` containing comprehensive analysis of the repository:
|
|
66
|
+
|
|
67
|
+
1. **Discovery**: Language, project type (monorepo/standard), components/packages.
|
|
68
|
+
2. **Architecture**: Layers, dependencies, tech stack.
|
|
69
|
+
3. **Flows**: Execution flows with diagrams.
|
|
70
|
+
4. **APIs**: Public interfaces, exports, and API definitions.
|
|
71
|
+
5. **Integrations**: Databases, External Services, Payments, AI/LLM, Auth.
|
|
72
|
+
6. **Connections**: Inter-service connections and dependencies.
|
|
73
|
+
7. **Creative Insights**: Unique patterns, technical debt, complex logic spots.
|
|
74
|
+
|
|
75
|
+
## ABSOLUTE CONSTRAINTS
|
|
76
|
+
|
|
77
|
+
1. **Explore first, analyze second** - **MUST** use discovery mode to understand the repo.
|
|
78
|
+
2. **Adapt to what you find** - Every repo is different.
|
|
79
|
+
3. **No hallucination** - **NEVER** document what you do not find.
|
|
80
|
+
4. **Exclude build artifacts** - **ALWAYS** exclude: `node_modules`, `.git`, `dist`, `build`, `target`, `__pycache__`, `.venv`, `coverage`.
|
|
81
|
+
5. **Verify with Code** - Read existing docs (`README.md`) for context, BUT **MUST verify every technical statement with code!**
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Adaptive Analysis Strategy
|
|
86
|
+
|
|
87
|
+
### PHASE 1: DISCOVERY & STRUCTURE (Generic & Monorepo Aware)
|
|
88
|
+
|
|
89
|
+
<discovery_gate>
|
|
90
|
+
**STOP. Complete structure analysis before deep diving.**
|
|
91
|
+
|
|
92
|
+
**Step 1: Structure & Project Type**
|
|
93
|
+
- Explore repository structure using `localViewStructure`.
|
|
94
|
+
- **Monorepo Detection**: Check for workspace configs (`package.json`, `pnpm-workspace.yaml`, `lerna.json`, `go.work`, `Cargo.toml`, `nx.json`).
|
|
95
|
+
- If **Monorepo**: Identify all packages/projects and their paths. Treat each package as a sub-unit for analysis.
|
|
96
|
+
|
|
97
|
+
**Step 2: Language & Ecosystem**
|
|
98
|
+
- Search for files across common programming languages using bulk queries.
|
|
99
|
+
- Identify primary and secondary languages.
|
|
100
|
+
- Find config files (`tsconfig.json`, `pyproject.toml`, `go.mod`, `pom.xml`, etc.).
|
|
101
|
+
|
|
102
|
+
**Step 3: Component Identification**
|
|
103
|
+
- For each package/module:
|
|
104
|
+
- Search for code definitions (functions, classes, interfaces).
|
|
105
|
+
- Group findings by directory to identify logical components.
|
|
106
|
+
</discovery_gate>
|
|
107
|
+
|
|
108
|
+
### PHASE 2: ARCHITECTURE & INTEGRATIONS (Deep Dive)
|
|
109
|
+
|
|
110
|
+
<architecture_gate>
|
|
111
|
+
**Step 1: Frameworks & Tech Stack**
|
|
112
|
+
- Detect frameworks (Express, NestJS, Django, FastAPI, Spring Boot, React, Next.js, etc.).
|
|
113
|
+
- Determine architecture type: Microservices, Monolith, Serverless, CLI, Library.
|
|
114
|
+
|
|
115
|
+
**Step 2: Key Integration Analysis (CRITICAL)**
|
|
116
|
+
*Search for specific patterns to identify external systems:*
|
|
117
|
+
|
|
118
|
+
* **Databases**: `sql`, `mongo`, `redis`, `prisma`, `typeorm`, `sqlalchemy`, `pg`, `dynamodb`.
|
|
119
|
+
* **External APIs**: `fetch`, `axios`, `grpc`, `client`, `sdk`, `api_key`, `endpoint`.
|
|
120
|
+
* **Payments**: `stripe`, `paypal`, `braintree`, `subscription`, `invoice`.
|
|
121
|
+
* **AI & LLM**: `openai`, `anthropic`, `langchain`, `huggingface`, `embedding`, `completion`, `model`.
|
|
122
|
+
* **Auth**: `jwt`, `oauth`, `passport`, `cognito`, `auth0`, `firebase-auth`.
|
|
123
|
+
</architecture_gate>
|
|
124
|
+
|
|
125
|
+
### PHASE 3: FLOW DISCOVERY (Semantic Tracing)
|
|
126
|
+
|
|
127
|
+
<flow_gate>
|
|
128
|
+
**REQUIRED: Trace execution flows using LSP-powered semantic analysis:**
|
|
129
|
+
|
|
130
|
+
1. **Identify Entry Points**: API routes, CLI commands, Event listeners.
|
|
131
|
+
2. **Trace Flows (LSP)**:
|
|
132
|
+
- `localSearchCode` → `lineHint`
|
|
133
|
+
- `lspGotoDefinition`
|
|
134
|
+
- `lspCallHierarchy` (outgoing)
|
|
135
|
+
- **Chain calls** to trace logic deep into the system.
|
|
136
|
+
3. **Diagramming**: Generate Mermaid diagrams for key flows.
|
|
137
|
+
</flow_gate>
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Sub-Agent Prompts
|
|
142
|
+
|
|
143
|
+
These templates are used by the Orchestrator to spawn parallel agents.
|
|
144
|
+
|
|
145
|
+
<subagent id="1a-language">
|
|
146
|
+
<agent_config>
|
|
147
|
+
<role>Language & Manifest Discovery</role>
|
|
148
|
+
<context_path>${REPOSITORY_PATH}</context_path>
|
|
149
|
+
<model>opus</model>
|
|
150
|
+
</agent_config>
|
|
151
|
+
|
|
152
|
+
<instructions>
|
|
153
|
+
<task>Count source files by extension (use localFindFiles)</task>
|
|
154
|
+
<task>Determine primary language (highest count)</task>
|
|
155
|
+
<task>Find language-specific manifests (package.json, Cargo.toml, requirements.txt, go.mod, etc.)</task>
|
|
156
|
+
<task>Extract project metadata (name, version, description)</task>
|
|
157
|
+
|
|
158
|
+
**OUTPUT FORMAT (REQUIRED):**
|
|
159
|
+
You MUST output to JSON matching `schemas/partial-discovery-schema.json`
|
|
160
|
+
</instructions>
|
|
161
|
+
|
|
162
|
+
<output>
|
|
163
|
+
<path>${CONTEXT_DIR}/partial-1a-language.json</path>
|
|
164
|
+
<format>JSON</format>
|
|
165
|
+
<schema_ref>schemas/partial-discovery-schema.json (1A: Language & Manifests)</schema_ref>
|
|
166
|
+
</output>
|
|
167
|
+
</subagent>
|
|
168
|
+
|
|
169
|
+
<subagent id="1b-components">
|
|
170
|
+
<agent_config>
|
|
171
|
+
<role>Component Discovery</role>
|
|
172
|
+
<context_path>${REPOSITORY_PATH}</context_path>
|
|
173
|
+
<model>opus</model>
|
|
174
|
+
</agent_config>
|
|
175
|
+
|
|
176
|
+
<instructions>
|
|
177
|
+
<task>Discover components (directories with 3+ source files)</task>
|
|
178
|
+
<task>Identify component boundaries and purposes</task>
|
|
179
|
+
<task>Extract component descriptions from README/comments</task>
|
|
180
|
+
|
|
181
|
+
**OUTPUT FORMAT (REQUIRED):**
|
|
182
|
+
You MUST output to JSON matching `schemas/partial-discovery-schema.json`
|
|
183
|
+
</instructions>
|
|
184
|
+
|
|
185
|
+
<output>
|
|
186
|
+
<path>${CONTEXT_DIR}/partial-1b-components.json</path>
|
|
187
|
+
<format>JSON</format>
|
|
188
|
+
<schema_ref>schemas/partial-discovery-schema.json (1B: Components)</schema_ref>
|
|
189
|
+
</output>
|
|
190
|
+
</subagent>
|
|
191
|
+
|
|
192
|
+
<subagent id="1c-dependencies">
|
|
193
|
+
<agent_config>
|
|
194
|
+
<role>Dependency Mapping</role>
|
|
195
|
+
<context_path>${REPOSITORY_PATH}</context_path>
|
|
196
|
+
<model>opus</model>
|
|
197
|
+
</agent_config>
|
|
198
|
+
|
|
199
|
+
<instructions>
|
|
200
|
+
<task>Map internal dependencies (import/require statements)</task>
|
|
201
|
+
<task>Detect external dependencies from manifest files</task>
|
|
202
|
+
<task>Build dependency relationships</task>
|
|
203
|
+
<task>Identify architectural layers (for example API, service, domain, data, CLI) and map components into them</task>
|
|
204
|
+
|
|
205
|
+
**OUTPUT FORMAT (REQUIRED):**
|
|
206
|
+
You MUST output to JSON matching `schemas/partial-discovery-schema.json`
|
|
207
|
+
</instructions>
|
|
208
|
+
|
|
209
|
+
<output>
|
|
210
|
+
<path>${CONTEXT_DIR}/partial-1c-dependencies.json</path>
|
|
211
|
+
<format>JSON</format>
|
|
212
|
+
<schema_ref>schemas/partial-discovery-schema.json (1C: Dependencies)</schema_ref>
|
|
213
|
+
</output>
|
|
214
|
+
</subagent>
|
|
215
|
+
|
|
216
|
+
<subagent id="1d-flows-apis">
|
|
217
|
+
<agent_config>
|
|
218
|
+
<role>Flow & API Discovery</role>
|
|
219
|
+
<context_path>${REPOSITORY_PATH}</context_path>
|
|
220
|
+
<model>opus</model>
|
|
221
|
+
</agent_config>
|
|
222
|
+
|
|
223
|
+
<instructions>
|
|
224
|
+
<task>Trace execution flows (HTTP routes, CLI commands, event handlers)</task>
|
|
225
|
+
<task>Document public APIs (exported functions/classes)</task>
|
|
226
|
+
<task>Identify entry points (main files, index files)</task>
|
|
227
|
+
<task>Use LSP tools to verify call chains</task>
|
|
228
|
+
|
|
229
|
+
**REQUIRED:** Use `lspCallHierarchy` for flow tracing.
|
|
230
|
+
**OUTPUT FORMAT (REQUIRED):**
|
|
231
|
+
You MUST output to JSON matching `schemas/partial-discovery-schema.json`
|
|
232
|
+
</instructions>
|
|
233
|
+
|
|
234
|
+
<output>
|
|
235
|
+
<path>${CONTEXT_DIR}/partial-1d-flows-apis.json</path>
|
|
236
|
+
<format>JSON</format>
|
|
237
|
+
<schema_ref>schemas/partial-discovery-schema.json (1D: Flows & APIs)</schema_ref>
|
|
238
|
+
</output>
|
|
239
|
+
</subagent>
|
|
240
|
+
|
|
241
|
+
<subagent id="aggregation">
|
|
242
|
+
<agent_config>
|
|
243
|
+
<role>Aggregation Specialist</role>
|
|
244
|
+
<context_path>${REPOSITORY_PATH}</context_path>
|
|
245
|
+
<model>opus</model>
|
|
246
|
+
</agent_config>
|
|
247
|
+
|
|
248
|
+
<instructions>
|
|
249
|
+
<task>Read all partial result files:
|
|
250
|
+
- ${CONTEXT_DIR}/partial-1a-language.json
|
|
251
|
+
- ${CONTEXT_DIR}/partial-1b-components.json
|
|
252
|
+
- ${CONTEXT_DIR}/partial-1c-dependencies.json
|
|
253
|
+
- ${CONTEXT_DIR}/partial-1d-flows-apis.json
|
|
254
|
+
</task>
|
|
255
|
+
<task>Merge them into a single comprehensive analysis.json</task>
|
|
256
|
+
<task>Ensure strictly follows `schemas/analysis-schema.json`</task>
|
|
257
|
+
<task>Clean up partial files after successful merge</task>
|
|
258
|
+
|
|
259
|
+
**GATE:** Do NOT output if critical errors are found in partials.
|
|
260
|
+
</instructions>
|
|
261
|
+
|
|
262
|
+
<output>
|
|
263
|
+
<path>${CONTEXT_DIR}/analysis.json</path>
|
|
264
|
+
<format>JSON</format>
|
|
265
|
+
</output>
|
|
266
|
+
</subagent>
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Orchestrator Execution Logic
|
|
271
|
+
|
|
272
|
+
This section defines how the orchestrator invokes and manages this agent.
|
|
273
|
+
|
|
274
|
+
### Task_Parallel Definition
|
|
275
|
+
|
|
276
|
+
```typescript
|
|
277
|
+
/**
|
|
278
|
+
* Task_Parallel - Executes multiple sub-agent tasks concurrently
|
|
279
|
+
*
|
|
280
|
+
* @param tasks - Array of task definitions to execute in parallel
|
|
281
|
+
* @returns Array of TaskResult objects in the same order as input tasks
|
|
282
|
+
*
|
|
283
|
+
* Each task in the input array should have:
|
|
284
|
+
* - id: string - Unique identifier for the task
|
|
285
|
+
* - description: string - Human-readable description of what the task does
|
|
286
|
+
* - critical: boolean - If true, failure of this task fails the entire pipeline
|
|
287
|
+
* - prompt: string - The full prompt to send to the sub-agent
|
|
288
|
+
*
|
|
289
|
+
* Each TaskResult in the output array contains:
|
|
290
|
+
* - id: string - The task id (matches input)
|
|
291
|
+
* - status: "success" | "failed" - Execution result
|
|
292
|
+
* - critical: boolean - Whether this was a critical task
|
|
293
|
+
* - error?: string - Error message if status is "failed"
|
|
294
|
+
* - output?: any - Task output if status is "success"
|
|
295
|
+
*/
|
|
296
|
+
type Task_Parallel = (tasks: TaskDefinition[]) => TaskResult[]
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Parallel Agents Configuration
|
|
300
|
+
|
|
301
|
+
The following agents run in parallel during discovery. Agents marked as `critical: true`
|
|
302
|
+
must succeed for the pipeline to continue - their outputs are foundational for later phases.
|
|
303
|
+
|
|
304
|
+
| Agent ID | Critical | Rationale |
|
|
305
|
+
|----------|----------|-----------|
|
|
306
|
+
| 1a-language | **true** | Language detection is foundational - all other analysis depends on it |
|
|
307
|
+
| 1b-components | **true** | Component inventory is required by `analysis-schema.json` and downstream coverage checks |
|
|
308
|
+
| 1c-dependencies | **true** | Dependency mapping is required by `analysis-schema.json` and stack documentation |
|
|
309
|
+
| 1d-flows-apis | **true** | Flow/API discovery is essential for documentation structure |
|
|
310
|
+
|
|
311
|
+
### Execution Logic
|
|
312
|
+
|
|
313
|
+
```javascript
|
|
314
|
+
// === PHASE 1: DISCOVERY+ANALYSIS ===
|
|
315
|
+
if (START_PHASE == "initialized" || START_PHASE == "discovery-analysis-failed"):
|
|
316
|
+
update_state({
|
|
317
|
+
phase: "discovery-analysis-running",
|
|
318
|
+
current_agent: "discovery-analysis"
|
|
319
|
+
})
|
|
320
|
+
|
|
321
|
+
// Load task schema/config and agent spec
|
|
322
|
+
TASKS_SCHEMA = JSON.parse(Read("schemas/discovery-tasks.json"))
|
|
323
|
+
TASKS_CONFIG = TASKS_SCHEMA.default
|
|
324
|
+
AGENT_SPEC = Read("references/agent-discovery-analysis.md")
|
|
325
|
+
|
|
326
|
+
if (!TASKS_CONFIG || !Array.isArray(TASKS_CONFIG.parallel_agents) || !TASKS_CONFIG.aggregation):
|
|
327
|
+
ERROR: "discovery-tasks.json missing default task configuration"
|
|
328
|
+
EXIT code 1
|
|
329
|
+
|
|
330
|
+
DISPLAY: "🔍 Discovery+Analysis Agents [Running in Parallel...]"
|
|
331
|
+
DISPLAY: " " + TASKS_CONFIG.parallel_agents.length + " parallel agents analyzing repository..."
|
|
332
|
+
DISPLAY: ""
|
|
333
|
+
|
|
334
|
+
// === RUN IN PARALLEL ===
|
|
335
|
+
// Dynamically build tasks from schema and XML subagent definitions
|
|
336
|
+
// Note: critical flag determines if task failure should halt the pipeline
|
|
337
|
+
parallel_tasks = TASKS_CONFIG.parallel_agents.map(agent => ({
|
|
338
|
+
id: agent.id,
|
|
339
|
+
description: agent.description,
|
|
340
|
+
critical: agent.critical, // From TASKS_CONFIG - see parallel_agents definition
|
|
341
|
+
prompt: `
|
|
342
|
+
${AGENT_SPEC}
|
|
343
|
+
|
|
344
|
+
*** YOUR ASSIGNMENT ***
|
|
345
|
+
Use the instruction set: <subagent id="${agent.subagent_id}">
|
|
346
|
+
`
|
|
347
|
+
}))
|
|
348
|
+
|
|
349
|
+
// Execute all tasks concurrently and collect results
|
|
350
|
+
// Returns: Array of { id, status, critical, error?, output? }
|
|
351
|
+
PARALLEL_RESULTS = Task_Parallel(parallel_tasks)
|
|
352
|
+
|
|
353
|
+
// === END PARALLEL ===
|
|
354
|
+
|
|
355
|
+
// Check for failures in parallel execution
|
|
356
|
+
failed_agents = PARALLEL_RESULTS.filter(r => r.status == "failed")
|
|
357
|
+
|
|
358
|
+
if (failed_agents.length > 0):
|
|
359
|
+
critical_failures = failed_agents.filter(a => a.critical == true)
|
|
360
|
+
|
|
361
|
+
if (critical_failures.length > 0):
|
|
362
|
+
// GATE: CRITICAL FAILURE
|
|
363
|
+
ERROR: "Critical agent(s) failed: " + critical_failures.map(a => a.id).join(", ")
|
|
364
|
+
update_state({
|
|
365
|
+
phase: "discovery-analysis-failed",
|
|
366
|
+
errors: critical_failures.map(a => ({
|
|
367
|
+
phase: "discovery-analysis",
|
|
368
|
+
agent: a.id,
|
|
369
|
+
message: a.error || "Agent failed to complete",
|
|
370
|
+
timestamp: new Date().toISOString(),
|
|
371
|
+
recoverable: false
|
|
372
|
+
}))
|
|
373
|
+
})
|
|
374
|
+
DISPLAY: "❌ Discovery+Analysis Agents [Failed]"
|
|
375
|
+
EXIT code 1
|
|
376
|
+
else:
|
|
377
|
+
WARN: "Some agents failed but proceeding: " + failed_agents.map(a => a.id).join(", ")
|
|
378
|
+
|
|
379
|
+
DISPLAY: " ✅ All parallel agents completed"
|
|
380
|
+
DISPLAY: ""
|
|
381
|
+
|
|
382
|
+
// === AGGREGATION STEP ===
|
|
383
|
+
DISPLAY: " 🔄 Aggregating results from parallel agents..."
|
|
384
|
+
|
|
385
|
+
AGGREGATION_RESULT = Task({
|
|
386
|
+
subagent_type: "general-purpose",
|
|
387
|
+
description: TASKS_CONFIG.aggregation.description,
|
|
388
|
+
prompt: `
|
|
389
|
+
${AGENT_SPEC}
|
|
390
|
+
|
|
391
|
+
*** YOUR ASSIGNMENT ***
|
|
392
|
+
Use the instruction set: <subagent id="${TASKS_CONFIG.aggregation.subagent_id}">
|
|
393
|
+
`
|
|
394
|
+
})
|
|
395
|
+
|
|
396
|
+
// === VALIDATION & COMPLETION ===
|
|
397
|
+
|
|
398
|
+
// GATE: ANALYSIS FILE EXISTENCE
|
|
399
|
+
if (!exists(CONTEXT_DIR + "/analysis.json")):
|
|
400
|
+
ERROR: "Discovery+Analysis Agents failed to produce analysis.json"
|
|
401
|
+
EXIT code 1
|
|
402
|
+
|
|
403
|
+
// Validate JSON against schema
|
|
404
|
+
try:
|
|
405
|
+
analysis = Read(CONTEXT_DIR + "/analysis.json")
|
|
406
|
+
parsed = JSON.parse(analysis)
|
|
407
|
+
required_top_level = ["metadata", "discovery", "architecture", "flows", "apis"]
|
|
408
|
+
for (field of required_top_level):
|
|
409
|
+
if (!parsed[field]):
|
|
410
|
+
ERROR: "analysis.json missing required top-level field: " + field
|
|
411
|
+
EXIT code 1
|
|
412
|
+
|
|
413
|
+
if (!parsed.metadata.repository_path):
|
|
414
|
+
ERROR: "analysis.json missing metadata.repository_path"
|
|
415
|
+
EXIT code 1
|
|
416
|
+
|
|
417
|
+
if (!parsed.discovery.primary_language || parsed.discovery.is_monorepo === undefined || !parsed.discovery.project_type):
|
|
418
|
+
ERROR: "analysis.json missing required discovery metadata"
|
|
419
|
+
EXIT code 1
|
|
420
|
+
|
|
421
|
+
if (!Array.isArray(parsed.discovery.components)):
|
|
422
|
+
ERROR: "analysis.json missing discovery.components array"
|
|
423
|
+
EXIT code 1
|
|
424
|
+
|
|
425
|
+
if (!parsed.architecture.layers || !parsed.architecture.dependencies):
|
|
426
|
+
ERROR: "analysis.json missing required architecture fields"
|
|
427
|
+
EXIT code 1
|
|
428
|
+
|
|
429
|
+
if (!parsed.flows.strategy || !Array.isArray(parsed.flows.flows)):
|
|
430
|
+
ERROR: "analysis.json missing required flow fields"
|
|
431
|
+
EXIT code 1
|
|
432
|
+
|
|
433
|
+
if (!Array.isArray(parsed.apis.components)):
|
|
434
|
+
ERROR: "analysis.json missing apis.components array"
|
|
435
|
+
EXIT code 1
|
|
436
|
+
|
|
437
|
+
// GATE: CRITICAL SCHEMA ERRORS
|
|
438
|
+
if (parsed.errors && parsed.errors.some(e => e.severity == "critical")):
|
|
439
|
+
ERROR: "Critical errors in analysis"
|
|
440
|
+
EXIT code 1
|
|
441
|
+
catch (error):
|
|
442
|
+
ERROR: "analysis.json is invalid JSON"
|
|
443
|
+
EXIT code 1
|
|
444
|
+
|
|
445
|
+
// Success
|
|
446
|
+
update_state({
|
|
447
|
+
phase: "discovery-analysis-complete",
|
|
448
|
+
completed_agents: ["discovery-analysis"],
|
|
449
|
+
current_agent: null
|
|
450
|
+
})
|
|
451
|
+
|
|
452
|
+
DISPLAY: "✅ Discovery+Analysis Agents [Complete]"
|
|
453
|
+
```
|