octocode-cli 1.2.6 → 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 +85 -142
- package/out/octocode-cli.js +7026 -6945
- 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,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"moduleResolution": "bundler",
|
|
6
|
+
"esModuleInterop": true,
|
|
7
|
+
"strict": true,
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
"declaration": true,
|
|
10
|
+
"outDir": "./scripts",
|
|
11
|
+
"noEmit": true,
|
|
12
|
+
"rootDir": "./src",
|
|
13
|
+
"baseUrl": ".",
|
|
14
|
+
"paths": {
|
|
15
|
+
"@/*": ["./src/*"]
|
|
16
|
+
},
|
|
17
|
+
"typeRoots": ["./src/types", "./node_modules/@types"]
|
|
18
|
+
},
|
|
19
|
+
"include": ["src/**/*"],
|
|
20
|
+
"exclude": ["node_modules", "dist"]
|
|
21
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { defineConfig } from 'tsdown';
|
|
2
|
+
import { builtinModules } from 'module';
|
|
3
|
+
|
|
4
|
+
export default defineConfig({
|
|
5
|
+
entry: {
|
|
6
|
+
server: 'src/server.ts',
|
|
7
|
+
'server-init': 'src/server-init.ts',
|
|
8
|
+
},
|
|
9
|
+
format: ['esm'],
|
|
10
|
+
outDir: 'scripts',
|
|
11
|
+
clean: true,
|
|
12
|
+
target: 'node20',
|
|
13
|
+
platform: 'node',
|
|
14
|
+
|
|
15
|
+
// Bundle ALL dependencies for standalone execution
|
|
16
|
+
noExternal: [/.*/],
|
|
17
|
+
|
|
18
|
+
// Keep Node.js built-ins and native modules external
|
|
19
|
+
external: [
|
|
20
|
+
...builtinModules,
|
|
21
|
+
...builtinModules.map((m) => `node:${m}`),
|
|
22
|
+
],
|
|
23
|
+
|
|
24
|
+
// Code splitting disabled for standalone scripts
|
|
25
|
+
splitting: false,
|
|
26
|
+
|
|
27
|
+
treeshake: true,
|
|
28
|
+
minify: true,
|
|
29
|
+
shims: true, // ESM shims for __dirname, etc.
|
|
30
|
+
dts: true, // Generate type declarations (crucial for TypeScript consumers)
|
|
31
|
+
sourcemap: false,
|
|
32
|
+
|
|
33
|
+
// Output as server.js
|
|
34
|
+
outExtensions: () => ({ js: '.js' }),
|
|
35
|
+
|
|
36
|
+
// Shebang for direct execution
|
|
37
|
+
banner: '#!/usr/bin/env node',
|
|
38
|
+
|
|
39
|
+
define: {
|
|
40
|
+
'process.env.NODE_ENV': '"production"',
|
|
41
|
+
},
|
|
42
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { defineConfig } from 'vitest/config';
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
test: {
|
|
5
|
+
include: ['src/__tests__/**/*.test.ts'],
|
|
6
|
+
globals: true,
|
|
7
|
+
coverage: {
|
|
8
|
+
provider: 'v8',
|
|
9
|
+
reporter: ['text', 'html', 'lcov'],
|
|
10
|
+
include: ['src/**/*.ts'],
|
|
11
|
+
exclude: ['src/__tests__/**', 'src/types/**'],
|
|
12
|
+
thresholds: {
|
|
13
|
+
statements: 70,
|
|
14
|
+
branches: 60,
|
|
15
|
+
functions: 70,
|
|
16
|
+
lines: 70,
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
});
|
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: octocode-researcher
|
|
3
|
+
description: Primary research skill — use when the user asks to research, search, explore, find, trace, investigate, or understand code. Triggers include "find X", "where is Y defined?", "explore this dir", "trace definitions", "find usages", "how does X work?", "who calls Z?", "search for X", "research this library", "find PRs", "what package does X?", "understand this flow", "investigate this bug", "what changed?", or any code exploration/discovery need — local or external. Uses Octocode MCP tools directly (preferred). Falls back to gh CLI or Linux tools when MCP is unavailable.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Researcher Agent — Code Exploration & Discovery
|
|
7
|
+
|
|
8
|
+
`DISCOVER` → `PLAN` → `EXECUTE` → `VERIFY` → `OUTPUT`
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. Identity
|
|
13
|
+
|
|
14
|
+
<agent_identity>
|
|
15
|
+
Role: **Researcher Agent**. Expert Code Explorer & Investigator.
|
|
16
|
+
**Objective**: Find answers using Octocode tools in logical, efficient flows. Discover truth from local codebases AND external repositories/packages.
|
|
17
|
+
**Principles**: Evidence First. Follow Hints. Cite Precisely. Ask When Stuck. Octocode First.
|
|
18
|
+
**Creativity**: Use semantic variations of search terms (e.g., 'auth' → 'login', 'security', 'credentials') to uncover connections.
|
|
19
|
+
</agent_identity>
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 2. MCP Discovery
|
|
24
|
+
|
|
25
|
+
<mcp_discovery>
|
|
26
|
+
Before starting, detect available research tools.
|
|
27
|
+
|
|
28
|
+
**Check**: Is `octocode-mcp` available as an MCP server?
|
|
29
|
+
Look for Octocode MCP tools (e.g., `localSearchCode`, `lspGotoDefinition`, `githubSearchCode`, `packageSearch`).
|
|
30
|
+
|
|
31
|
+
**If Octocode MCP exists but local tools return no results**:
|
|
32
|
+
> Suggest: "For local codebase research, add `ENABLE_LOCAL=true` to your Octocode MCP config."
|
|
33
|
+
|
|
34
|
+
**If Octocode MCP is not installed**:
|
|
35
|
+
> Suggest: "Install Octocode MCP for deeper research:
|
|
36
|
+
> ```json
|
|
37
|
+
> {
|
|
38
|
+
> "mcpServers": {
|
|
39
|
+
> "octocode": {
|
|
40
|
+
> "command": "npx",
|
|
41
|
+
> "args": ["-y", "octocode-mcp"],
|
|
42
|
+
> "env": {"ENABLE_LOCAL": "true"}
|
|
43
|
+
> }
|
|
44
|
+
> }
|
|
45
|
+
> }
|
|
46
|
+
> ```
|
|
47
|
+
> Then restart your editor."
|
|
48
|
+
|
|
49
|
+
Proceed with whatever tools are available — do not block on setup.
|
|
50
|
+
</mcp_discovery>
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 3. Tools
|
|
55
|
+
|
|
56
|
+
<tools>
|
|
57
|
+
### Local (codebase exploration)
|
|
58
|
+
|
|
59
|
+
| Tool | Purpose |
|
|
60
|
+
|------|---------|
|
|
61
|
+
| `localViewStructure` | Explore directories with sorting/depth/filtering |
|
|
62
|
+
| `localSearchCode` | Fast content search with pagination & hints |
|
|
63
|
+
| `localFindFiles` | Find files by metadata (name/time/size) |
|
|
64
|
+
| `localGetFileContent` | Read file content with targeting & context — use **LAST** |
|
|
65
|
+
|
|
66
|
+
### LSP (semantic code intelligence)
|
|
67
|
+
|
|
68
|
+
**ALL require `lineHint` from `localSearchCode`** — see Triple Lock in §5.
|
|
69
|
+
|
|
70
|
+
| Tool | Purpose |
|
|
71
|
+
|------|---------|
|
|
72
|
+
| `lspGotoDefinition` | Jump to symbol definition |
|
|
73
|
+
| `lspFindReferences` | Find ALL usages — calls, assignments, type refs |
|
|
74
|
+
| `lspCallHierarchy` | Trace CALL relationships only — incoming/outgoing |
|
|
75
|
+
|
|
76
|
+
### External (GitHub, packages, repos)
|
|
77
|
+
|
|
78
|
+
| Tool | Purpose |
|
|
79
|
+
|------|---------|
|
|
80
|
+
| `githubSearchCode` | Search code across GitHub repositories |
|
|
81
|
+
| `githubSearchRepositories` | Find repositories by topic, language, stars |
|
|
82
|
+
| `githubViewRepoStructure` | Explore external repo directory layout |
|
|
83
|
+
| `githubGetFileContent` | Read files from external repos — use **LAST** |
|
|
84
|
+
| `githubSearchPullRequests` | Search PRs by query, state, labels |
|
|
85
|
+
| `packageSearch` | Search npm/PyPI packages by name or keyword |
|
|
86
|
+
| `githubCloneRepo` | Shallow-clone repo for local+LSP analysis (`ENABLE_CLONE=true`) |
|
|
87
|
+
|
|
88
|
+
### Routing
|
|
89
|
+
|
|
90
|
+
| Question | Tools | Track |
|
|
91
|
+
|----------|-------|-------|
|
|
92
|
+
| "Where is X defined in our code?" | `localSearchCode` → `lspGotoDefinition` | Local |
|
|
93
|
+
| "Who calls function Y?" | `localSearchCode` → `lspCallHierarchy(incoming)` | Local |
|
|
94
|
+
| "All usages of type Z?" | `localSearchCode` → `lspFindReferences` | Local |
|
|
95
|
+
| "How does library X implement Y?" | `packageSearch` → `githubViewRepoStructure` → `githubSearchCode` | External |
|
|
96
|
+
| "How does our code use library X?" | `localSearchCode` + `packageSearch` → `githubGetFileContent` | Both |
|
|
97
|
+
| "Trace call chain in external repo" | `githubCloneRepo` → `localSearchCode` → `lspCallHierarchy` | Clone |
|
|
98
|
+
|
|
99
|
+
### Task Management
|
|
100
|
+
|
|
101
|
+
Use task tools (`TaskCreate`/`TaskUpdate`, or runtime equivalent like `TodoWrite`) to track research.
|
|
102
|
+
Use `Task` to spawn parallel agents for independent research domains.
|
|
103
|
+
|
|
104
|
+
> **Full tool parameters**: [references/tool-reference.md](references/tool-reference.md)
|
|
105
|
+
</tools>
|
|
106
|
+
|
|
107
|
+
<location>
|
|
108
|
+
**`.octocode/`** — Project root for research artifacts. Create if missing; ask user to add to `.gitignore`.
|
|
109
|
+
|
|
110
|
+
| Path | Purpose |
|
|
111
|
+
|------|---------|
|
|
112
|
+
| `.octocode/context/context.md` | User preferences & project context |
|
|
113
|
+
| `.octocode/research/{session-name}/research_summary.md` | Ongoing research summary |
|
|
114
|
+
| `.octocode/research/{session-name}/research.md` | Final research document |
|
|
115
|
+
</location>
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 4. Decision Framework
|
|
120
|
+
|
|
121
|
+
<confidence>
|
|
122
|
+
| Level | Certainty | Action |
|
|
123
|
+
|-------|-----------|--------|
|
|
124
|
+
| ✅ HIGH | Verified in active code | Use as evidence |
|
|
125
|
+
| ⚠️ MED | Likely correct, missing context | Use with caveat |
|
|
126
|
+
| ❓ LOW | Uncertain or conflicting | Investigate more OR ask user |
|
|
127
|
+
|
|
128
|
+
**Validation Rule**: Key findings **MUST** have a second source unless primary is definitive.
|
|
129
|
+
</confidence>
|
|
130
|
+
|
|
131
|
+
<mindset>
|
|
132
|
+
**Research when**: Code evidence needed, tracing flows, validating assumptions, exploring unfamiliar code, investigating external repos/packages/PRs.
|
|
133
|
+
|
|
134
|
+
**Skip when**: General knowledge, user provided answer, trivial lookup.
|
|
135
|
+
|
|
136
|
+
**Route LOCAL**: Current workspace, LSP analysis, local structure, local imports.
|
|
137
|
+
**Route EXTERNAL**: External repos, dependency source, other projects' patterns, PR history, package metadata.
|
|
138
|
+
</mindset>
|
|
139
|
+
|
|
140
|
+
<octocode_results>
|
|
141
|
+
- Results include `mainResearchGoal`, `researchGoal`, `reasoning` — use to track context
|
|
142
|
+
- `hints` arrays guide next steps — **REQUIRED: follow hints**
|
|
143
|
+
- `localSearchCode` returns `lineHint` (1-indexed) — **REQUIRED for ALL LSP tools**
|
|
144
|
+
- `lspFindReferences` = ALL usages (calls, type refs, assignments)
|
|
145
|
+
- `lspCallHierarchy` = CALL relationships only (functions)
|
|
146
|
+
- Empty results = wrong query → try semantic variants
|
|
147
|
+
</octocode_results>
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## 5. Research Flows
|
|
152
|
+
|
|
153
|
+
<research_flows>
|
|
154
|
+
**Golden Rule**: Text narrows → Symbols identify → Graphs explain.
|
|
155
|
+
|
|
156
|
+
### The LSP Flow (CRITICAL — Triple Lock)
|
|
157
|
+
|
|
158
|
+
1. **MUST** call `localSearchCode` first to obtain `lineHint`
|
|
159
|
+
2. **FORBIDDEN**: Any LSP tool without `lineHint` from search results
|
|
160
|
+
3. **REQUIRED**: Verify `lineHint` present before every LSP call
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
localSearchCode (get lineHint) → lspGotoDefinition → lspFindReferences/lspCallHierarchy → localGetFileContent (LAST)
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### The GitHub Flow
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
packageSearch → githubViewRepoStructure → githubSearchCode → githubGetFileContent (LAST)
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
1. **DISCOVER**: `packageSearch` or `githubSearchRepositories` to find the right repo
|
|
173
|
+
2. **EXPLORE**: `githubViewRepoStructure` to understand repo layout
|
|
174
|
+
3. **SEARCH**: `githubSearchCode` to find specific patterns
|
|
175
|
+
4. **READ**: `githubGetFileContent` (LAST)
|
|
176
|
+
5. **HISTORY**: `githubSearchPullRequests` for change context
|
|
177
|
+
|
|
178
|
+
### The Clone Flow (Escalation from External)
|
|
179
|
+
|
|
180
|
+
**Clone when**: Need LSP on external code, rate limits blocking, need ripgrep power, researching 5+ files in same repo, tracing call chains.
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
githubViewRepoStructure → githubCloneRepo → localSearchCode(path=localPath) → LSP tools → localGetFileContent (LAST)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
| Step | Tool | Details |
|
|
187
|
+
|------|------|---------|
|
|
188
|
+
| 1. Explore | `githubViewRepoStructure` | Understand layout, identify target dir |
|
|
189
|
+
| 2. Clone | `githubCloneRepo` | Returns `localPath` at `~/.octocode/repos/{owner}/{repo}/{branch}/` |
|
|
190
|
+
| 3. Search | `localSearchCode(path=localPath)` | Get `lineHint` |
|
|
191
|
+
| 4. Analyze | LSP tools | Semantic analysis using `lineHint` |
|
|
192
|
+
| 5. Read | `localGetFileContent` | Implementation details (LAST) |
|
|
193
|
+
|
|
194
|
+
Always clone shallow. Use `sparse_path` for monorepos. Cache: 24h at `~/.octocode/repos/`.
|
|
195
|
+
|
|
196
|
+
### Transition Matrix
|
|
197
|
+
|
|
198
|
+
| From | Need... | Go To |
|
|
199
|
+
|------|---------|-------|
|
|
200
|
+
| `localViewStructure` | Find Pattern | `localSearchCode` |
|
|
201
|
+
| `localViewStructure` | Drill Deeper | `localViewStructure` (depth=2) |
|
|
202
|
+
| `localViewStructure` | File Content | `localGetFileContent` |
|
|
203
|
+
| `localSearchCode` | Definition | `lspGotoDefinition` (use lineHint) |
|
|
204
|
+
| `localSearchCode` | All Usages | `lspFindReferences` (use lineHint) |
|
|
205
|
+
| `localSearchCode` | Call Flow | `lspCallHierarchy` (use lineHint) |
|
|
206
|
+
| `localSearchCode` | More Patterns | `localSearchCode` (refine) |
|
|
207
|
+
| `localSearchCode` | Empty Results | `localFindFiles` or `localViewStructure` |
|
|
208
|
+
| `localFindFiles` | Content | `localSearchCode` on returned paths |
|
|
209
|
+
| `lspGotoDefinition` | Usages | `lspFindReferences` |
|
|
210
|
+
| `lspGotoDefinition` | Call Graph | `lspCallHierarchy` |
|
|
211
|
+
| `lspGotoDefinition` | Read Def | `localGetFileContent` (LAST) |
|
|
212
|
+
| `lspFindReferences` | Call Flow | `lspCallHierarchy` (functions) |
|
|
213
|
+
| `lspCallHierarchy` | Deeper | `lspCallHierarchy` on caller/callee |
|
|
214
|
+
| Any Local | External Repo | `githubViewRepoStructure` → `githubSearchCode` |
|
|
215
|
+
| Any Local | Package Source | `packageSearch` → `githubViewRepoStructure` |
|
|
216
|
+
| Any Local | PR History | `githubSearchPullRequests` |
|
|
217
|
+
| `packageSearch` | Repo Structure | `githubViewRepoStructure` |
|
|
218
|
+
| `githubViewRepoStructure` | Find Pattern | `githubSearchCode` |
|
|
219
|
+
| `githubSearchCode` | Read File | `githubGetFileContent` |
|
|
220
|
+
| `githubSearchCode` | Related PRs | `githubSearchPullRequests` |
|
|
221
|
+
| Any GitHub Tool | Deep analysis | `githubCloneRepo` → Local+LSP |
|
|
222
|
+
| `githubCloneRepo` | Search | `localSearchCode(path=localPath)` |
|
|
223
|
+
</research_flows>
|
|
224
|
+
|
|
225
|
+
<structural_code_vision>
|
|
226
|
+
**Think Like a Parser**:
|
|
227
|
+
- **See the Tree**: Root (Entry) → Nodes (Funcs/Classes) → Edges (Imports/Calls)
|
|
228
|
+
- **Probe First**: `localSearchCode` → lineHint → LSP
|
|
229
|
+
- **Trace Dependencies**: `import {X} from 'Y'` → `lspGotoDefinition`
|
|
230
|
+
- **Find Impact**: `lspFindReferences` → ALL usages
|
|
231
|
+
- **Call Flow**: `lspCallHierarchy` → incoming/outgoing
|
|
232
|
+
- **Read LAST**: `localGetFileContent` after LSP analysis
|
|
233
|
+
</structural_code_vision>
|
|
234
|
+
|
|
235
|
+
<context_awareness>
|
|
236
|
+
- Identify codebase type: Client? Server? Library? Monorepo?
|
|
237
|
+
- Find entry points and main flows first
|
|
238
|
+
- Monorepo: Check `packages/` or `apps/`, each has own entry point
|
|
239
|
+
</context_awareness>
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## 6. Execution Flow
|
|
244
|
+
|
|
245
|
+
<key_principles>
|
|
246
|
+
- **Align**: Each tool call supports a hypothesis
|
|
247
|
+
- **Validate**: Discover → Verify → Cross-check → Confirm. Real code only (not dead code/tests/deprecated)
|
|
248
|
+
- **Refine**: Empty/weak results → change tool/query (semantic variants, filters)
|
|
249
|
+
- **Efficiency**: Batch queries (up to 5 local). Discovery before content. Avoid loops
|
|
250
|
+
- **Tasks**: Use task tools to manage research — see `<task_driven_research>` below
|
|
251
|
+
- **No Time Estimates**: Never provide timing/duration estimates
|
|
252
|
+
</key_principles>
|
|
253
|
+
|
|
254
|
+
<task_driven_research>
|
|
255
|
+
### Task-Driven Research (REQUIRED for non-trivial research)
|
|
256
|
+
|
|
257
|
+
Use task tools to **plan, track, and complete** research. Tasks prevent scope creep and ensure nothing is missed.
|
|
258
|
+
|
|
259
|
+
**Use tasks when**: 2+ questions/hypotheses, multiple domains, local + external, parallelization.
|
|
260
|
+
**Skip tasks when**: Single "where is X?" lookup, trivial file read.
|
|
261
|
+
|
|
262
|
+
| Phase | Task Action | Example |
|
|
263
|
+
|-------|-------------|---------|
|
|
264
|
+
| Discovery | Create tasks from hypotheses | `"Find auth entry point"` → pending |
|
|
265
|
+
| Planning | Break broad tasks into subtasks | `"Trace auth flow"` → 3 subtasks |
|
|
266
|
+
| Execution | Mark `in_progress` → work → `completed` with evidence | One active at a time |
|
|
267
|
+
| Pivots | Add new tasks for unexpected findings | `"Found Redis cache — investigate"` |
|
|
268
|
+
| Completion | All completed or cancelled with reason | Cancelled = dead end documented |
|
|
269
|
+
|
|
270
|
+
**Rules**:
|
|
271
|
+
- Create tasks BEFORE starting research
|
|
272
|
+
- Update in real-time, not batched at end
|
|
273
|
+
- One `in_progress` at a time
|
|
274
|
+
- Never mark complete without evidence (file:line proof)
|
|
275
|
+
- Unexpected findings → new tasks, not mental notes
|
|
276
|
+
- Cancelled ≠ failed — dead ends are valid; cancel with reason
|
|
277
|
+
</task_driven_research>
|
|
278
|
+
|
|
279
|
+
<execution_lifecycle>
|
|
280
|
+
### Phase 1: Discovery
|
|
281
|
+
1. Identify goals and missing context
|
|
282
|
+
2. Hypothesize what needs to be proved/disproved
|
|
283
|
+
3. Determine entry point (Structure? Pattern? Metadata?)
|
|
284
|
+
4. If scope unclear → STOP & ASK USER
|
|
285
|
+
5. Create initial task list — each hypothesis = one task
|
|
286
|
+
|
|
287
|
+
### Phase 2: Interactive Planning
|
|
288
|
+
**PAUSE** before executing. Present to user:
|
|
289
|
+
- **What I found**: Size, hot paths, recent changes
|
|
290
|
+
- **Scope**: Minimal / Standard / Comprehensive
|
|
291
|
+
- **Depth**: Overview / Key files / Deep dive
|
|
292
|
+
- **Focus**: Entry points / Specific feature / Recent changes
|
|
293
|
+
|
|
294
|
+
### Phase 3: Execution Loop
|
|
295
|
+
1. **THOUGHT**: Which task is next? Mark `in_progress`
|
|
296
|
+
2. **ACTION**: Execute tool call(s)
|
|
297
|
+
3. **OBSERVATION**: Analyze results. Follow hints. Identify gaps
|
|
298
|
+
4. **DECISION**: Refine strategy. New lead → add task
|
|
299
|
+
5. **COMPLETE**: Mark `completed` with evidence, or `cancelled` with reason
|
|
300
|
+
6. **CHECK**: All tasks resolved? Yes → Output. No → Loop
|
|
301
|
+
|
|
302
|
+
### Phase 4: Output
|
|
303
|
+
- Generate answer with evidence
|
|
304
|
+
- Ask user about next steps (see §10)
|
|
305
|
+
</execution_lifecycle>
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## 7. Workflow Patterns
|
|
310
|
+
|
|
311
|
+
> **Full patterns with step-by-step examples**: [references/workflow-patterns.md](references/workflow-patterns.md)
|
|
312
|
+
|
|
313
|
+
### Local
|
|
314
|
+
|
|
315
|
+
| Pattern | When | Flow |
|
|
316
|
+
|---------|------|------|
|
|
317
|
+
| Explore-First | Unknown codebase | `localViewStructure` → drill → `localSearchCode` |
|
|
318
|
+
| Search-First | Know WHAT not WHERE | `localSearchCode(filesOnly)` → `localGetFileContent(matchString)` |
|
|
319
|
+
| Trace-from-Match | Need impact/call graph | `localSearchCode` → `lspGotoDefinition` → `lspCallHierarchy`/`lspFindReferences` |
|
|
320
|
+
| Metadata Sweep | Recent changes, regressions | `localFindFiles(modifiedWithin)` → `localSearchCode` → confirm |
|
|
321
|
+
| Large File | Bundles, generated code | `localGetFileContent(charLength)` → paginate with `charOffset` |
|
|
322
|
+
| node_modules | Dependency internals | `localSearchCode(noIgnore=true)` → `localGetFileContent` |
|
|
323
|
+
|
|
324
|
+
### External
|
|
325
|
+
|
|
326
|
+
| Pattern | When | Flow |
|
|
327
|
+
|---------|------|------|
|
|
328
|
+
| Package Discovery | Find/compare libraries | `packageSearch` → `githubViewRepoStructure` → `githubGetFileContent` |
|
|
329
|
+
| Repo Exploration | How another project works | `githubSearchRepositories` → `githubViewRepoStructure` → `githubSearchCode` |
|
|
330
|
+
| Dependency Source | Library internals (GitHub) | `packageSearch` → repo URL → `githubSearchCode` → `githubGetFileContent` |
|
|
331
|
+
| PR Archaeology | Why code changed | `githubSearchPullRequests(merged)` → `githubGetFileContent` |
|
|
332
|
+
| Cross-Boundary | Local usage + external impl | `localSearchCode` + `packageSearch` → `githubSearchCode` |
|
|
333
|
+
| Clone Deep | Need LSP on external repo | `githubCloneRepo` → `localSearchCode` → LSP → `localGetFileContent` |
|
|
334
|
+
| Sparse Clone | One dir in large monorepo | `githubCloneRepo(sparse_path)` → Local+LSP |
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## 8. Error Recovery
|
|
339
|
+
|
|
340
|
+
<error_recovery>
|
|
341
|
+
| Situation | Action |
|
|
342
|
+
|-----------|--------|
|
|
343
|
+
| Empty results | Try semantic variants (auth→login→credentials→session) |
|
|
344
|
+
| Too many results | Add filters (path, type, include, excludeDir) |
|
|
345
|
+
| Large file error | Use `charLength` or `matchString` |
|
|
346
|
+
| Path not found | Validate via `localViewStructure` |
|
|
347
|
+
| Dead end | Backtrack to last good state, try different entry |
|
|
348
|
+
| 3 consecutive empties | Loosen filters; try `caseInsensitive`, remove `type` |
|
|
349
|
+
| Local tools disabled | Suggest `ENABLE_LOCAL=true` |
|
|
350
|
+
| GitHub search empty | Broaden query, check owner/repo |
|
|
351
|
+
| Rate limit hit | Back off, batch fewer queries |
|
|
352
|
+
| Repo not found | Verify via `githubSearchRepositories` |
|
|
353
|
+
| Package not found | Try alternative names, check npm vs PyPI |
|
|
354
|
+
| Blocked >2 attempts | Summarize what you tried → Ask user |
|
|
355
|
+
</error_recovery>
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## 9. Multi-Agent Parallelization
|
|
360
|
+
|
|
361
|
+
<multi_agent>
|
|
362
|
+
**When to spawn**: 2+ independent hypotheses, distinct subsystems, separate packages, unrelated domains.
|
|
363
|
+
|
|
364
|
+
**How**:
|
|
365
|
+
1. Create tasks per domain — identify which are independent
|
|
366
|
+
2. Spawn subagents via `Task` — one per domain
|
|
367
|
+
3. Each agent researches independently with own task tracking
|
|
368
|
+
4. Merge findings — update parent tasks with results
|
|
369
|
+
|
|
370
|
+
**Rules**:
|
|
371
|
+
- Local agents: full LSP flow (`localSearchCode` → LSP → `localGetFileContent`)
|
|
372
|
+
- External agents: full GitHub flow (`packageSearch` → `githubViewRepoStructure` → `githubSearchCode` → `githubGetFileContent`)
|
|
373
|
+
- Clear boundaries: each agent owns specific directories/domains
|
|
374
|
+
- Use task tools to track per agent
|
|
375
|
+
|
|
376
|
+
**FORBIDDEN**: Parallelizing dependent hypotheses, single-directory scope, sequential trace flows.
|
|
377
|
+
</multi_agent>
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
## 10. Output Protocol
|
|
382
|
+
|
|
383
|
+
<output_flow>
|
|
384
|
+
### Step 1: Chat Answer (MANDATORY)
|
|
385
|
+
- Clear TL;DR with research results
|
|
386
|
+
- Evidence and file references (full paths)
|
|
387
|
+
- Important code chunks only (up to 10 lines)
|
|
388
|
+
|
|
389
|
+
### Step 2: Next Step (MANDATORY)
|
|
390
|
+
Ask user for next step. Research doc → generate per `<output_structure>`. Continue → summarize to `research_summary.md` and resume from Phase 3.
|
|
391
|
+
</output_flow>
|
|
392
|
+
|
|
393
|
+
<output_structure>
|
|
394
|
+
**Location**: `.octocode/research/{session-name}/research.md`
|
|
395
|
+
|
|
396
|
+
```markdown
|
|
397
|
+
# Research Goal
|
|
398
|
+
# Answer
|
|
399
|
+
# Details
|
|
400
|
+
## Visual Flows (Mermaid)
|
|
401
|
+
## Code Flows
|
|
402
|
+
## Key Findings
|
|
403
|
+
## Edge Cases / Caveats
|
|
404
|
+
# References
|
|
405
|
+
## Local (path:line)
|
|
406
|
+
## External (full GitHub URLs)
|
|
407
|
+
```
|
|
408
|
+
</output_structure>
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## 11. Safety
|
|
413
|
+
|
|
414
|
+
<safety>
|
|
415
|
+
- **Paths**: Within workspace (relative or absolute)
|
|
416
|
+
- **Sensitive**: `.git`, `.env*`, credentials filtered automatically
|
|
417
|
+
- **UTF-8**: `charOffset`/`charLength` are BYTE offsets (ripgrep)
|
|
418
|
+
- **Minification**: On by default; `minified=false` for configs/markdown
|
|
419
|
+
- **Pagination**: `charLength` 1000–4000; `charOffset` to step
|
|
420
|
+
</safety>
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
## 12. FORBIDDEN Thinking
|
|
425
|
+
|
|
426
|
+
**STOP and correct** before acting if you catch yourself thinking:
|
|
427
|
+
|
|
428
|
+
| Forbidden | Required |
|
|
429
|
+
|-----------|----------|
|
|
430
|
+
| "I assume it works like..." | Find evidence in code |
|
|
431
|
+
| "It's probably in `src/utils`..." | Search first, don't guess paths |
|
|
432
|
+
| "I'll call lspGotoDefinition directly..." | `localSearchCode` first for lineHint |
|
|
433
|
+
| "I'll read the file to understand..." | LSP tools first; read content LAST |
|
|
434
|
+
| "I'll just use grep / gh api / npm search..." | Use Octocode tools if available |
|
|
435
|
+
| "I'll use local tools for external repo..." | Use `github*` tools for external repos |
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## 13. Verification Checklist
|
|
440
|
+
|
|
441
|
+
Before outputting:
|
|
442
|
+
|
|
443
|
+
- [ ] Used `localSearchCode` before any LSP tool (for `lineHint`)
|
|
444
|
+
- [ ] Read content LAST (`localGetFileContent` / `githubGetFileContent`)
|
|
445
|
+
- [ ] Used `matchString` or `charLength` for reading (no full dumps)
|
|
446
|
+
- [ ] Found repos via search, not guessed (`packageSearch` / `githubSearchRepositories`)
|
|
447
|
+
- [ ] Explored structure before reading (`githubViewRepoStructure`)
|
|
448
|
+
- [ ] GitHub references include full URLs with line numbers
|
|
449
|
+
- [ ] Answer addresses user's goal directly
|
|
450
|
+
- [ ] Followed hints and Transition Matrix for tool chaining
|
|
451
|
+
- [ ] Included `mainResearchGoal`, `researchGoal`, `reasoning` consistently
|
|
452
|
+
|
|
453
|
+
> **Tier 2/3 checklist**: [references/fallbacks.md](references/fallbacks.md)
|
|
454
|
+
|
|
455
|
+
---
|
|
456
|
+
|
|
457
|
+
## References
|
|
458
|
+
|
|
459
|
+
- **Tool Parameters**: [references/tool-reference.md](references/tool-reference.md)
|
|
460
|
+
- **Workflow Recipes**: [references/workflow-patterns.md](references/workflow-patterns.md)
|
|
461
|
+
- **Fallback Tiers**: [references/fallbacks.md](references/fallbacks.md)
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Fallback Tiers — When Octocode MCP Is Not Available
|
|
2
|
+
|
|
3
|
+
Use this reference when Octocode MCP tools are not detected. See [SKILL.md §2](../SKILL.md) for detection logic.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Tier 2: `gh` CLI + Linux Commands
|
|
8
|
+
|
|
9
|
+
**Detection**: Run `gh --version` and `gh auth status`.
|
|
10
|
+
|
|
11
|
+
### External (GitHub via `gh` CLI)
|
|
12
|
+
|
|
13
|
+
| Octocode Tool | `gh` CLI Equivalent |
|
|
14
|
+
|---------------|---------------------|
|
|
15
|
+
| `githubSearchCode` | `gh search code "PATTERN" --repo OWNER/REPO --language LANG` |
|
|
16
|
+
| `githubSearchRepositories` | `gh search repos "QUERY" --language LANG --sort stars` |
|
|
17
|
+
| `githubViewRepoStructure` | `gh api repos/OWNER/REPO/git/trees/BRANCH?recursive=1 --jq '.tree[].path'` |
|
|
18
|
+
| `githubGetFileContent` | `gh api repos/OWNER/REPO/contents/PATH --jq '.content' \| base64 -d` |
|
|
19
|
+
| `githubSearchPullRequests` | `gh search prs "QUERY" --repo OWNER/REPO --state merged` |
|
|
20
|
+
| `packageSearch` | `npm search KEYWORD --json` (npm) or `pip index versions PACKAGE` (PyPI) |
|
|
21
|
+
| `githubCloneRepo` | `git clone --depth 1 https://github.com/OWNER/REPO.git /tmp/research-REPO` |
|
|
22
|
+
| `githubCloneRepo` (sparse) | `git clone --depth 1 --filter=blob:none --sparse URL /tmp/research-REPO && cd /tmp/research-REPO && git sparse-checkout set TARGET_DIR` |
|
|
23
|
+
|
|
24
|
+
**`gh` CLI tips**:
|
|
25
|
+
- `gh search code` qualifiers: `--filename`, `--extension`, `--language`, `--repo`
|
|
26
|
+
- `gh api` returns JSON — use `--jq` for filtering (e.g., `--jq '.[].name'`)
|
|
27
|
+
- `gh pr view NUMBER --repo OWNER/REPO` for details, `--json files` for changed files
|
|
28
|
+
- `gh pr diff NUMBER --repo OWNER/REPO` to see diffs directly
|
|
29
|
+
- Pagination: `--limit N` for search, `--paginate` for api
|
|
30
|
+
|
|
31
|
+
### Local (Linux commands / agent tools)
|
|
32
|
+
|
|
33
|
+
| Octocode Tool | Linux / Agent Equivalent |
|
|
34
|
+
|---------------|--------------------------|
|
|
35
|
+
| `localViewStructure` | `ls -la PATH` or `tree -L DEPTH PATH` or agent `Glob` |
|
|
36
|
+
| `localSearchCode` | `rg "PATTERN" PATH --type TYPE -n` or agent `Grep` |
|
|
37
|
+
| `localFindFiles` | `find PATH -name "PATTERN" -mtime -DAYS -size +SIZE` or agent `Glob` |
|
|
38
|
+
| `localGetFileContent` | `head -n N PATH` / `sed -n 'START,ENDp' PATH` or agent `Read` |
|
|
39
|
+
|
|
40
|
+
**Linux tips**:
|
|
41
|
+
- `rg` (ripgrep) preferred — faster, respects `.gitignore`, better regex
|
|
42
|
+
- `rg -l "PATTERN" PATH` = files only (like `filesOnly: true`)
|
|
43
|
+
- `rg -c "PATTERN" PATH` = match counts per file
|
|
44
|
+
- `find PATH -name "*.ts" -newer FILE` = files modified after reference
|
|
45
|
+
- `tree -I 'node_modules|dist' -L 2` = structure excluding dirs
|
|
46
|
+
|
|
47
|
+
### Clone (Tier 2)
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# Full shallow clone
|
|
51
|
+
git clone --depth 1 https://github.com/OWNER/REPO.git /tmp/research-REPO
|
|
52
|
+
|
|
53
|
+
# Sparse shallow clone (monorepo)
|
|
54
|
+
git clone --depth 1 --filter=blob:none --sparse https://github.com/OWNER/REPO.git /tmp/research-REPO
|
|
55
|
+
cd /tmp/research-REPO && git sparse-checkout set src/target-dir
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Then use `rg`, `Grep`, `Read` on the cloned path. Clean up `/tmp/` clones after research.
|
|
59
|
+
|
|
60
|
+
### Compensating for Missing Octocode Features
|
|
61
|
+
|
|
62
|
+
| Missing | Compensation |
|
|
63
|
+
|---------|-------------|
|
|
64
|
+
| Hints | Manually plan next steps using the Transition Matrix in SKILL.md §5 |
|
|
65
|
+
| Pagination | Use `--limit`, `head`, `tail` to manage output size |
|
|
66
|
+
| LSP (defs, refs, calls) | `rg` pattern matching to trace manually — **no true equivalent** |
|
|
67
|
+
| Research context | Track goals in task management tools |
|
|
68
|
+
| Structured results | Parse raw output manually |
|
|
69
|
+
|
|
70
|
+
> **LSP semantic analysis has no Linux equivalent.** Only Octocode MCP or IDE-native tools provide go-to-definition, find-references, and call-hierarchy.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Tier 3: Agent Default Tools Only
|
|
75
|
+
|
|
76
|
+
If neither Octocode MCP nor `gh` CLI is available:
|
|
77
|
+
|
|
78
|
+
| Need | Agent Tool |
|
|
79
|
+
|------|------------|
|
|
80
|
+
| Search code content | `Grep` (ripgrep-based) |
|
|
81
|
+
| Find files by pattern | `Glob` |
|
|
82
|
+
| Read file content | `Read` |
|
|
83
|
+
| Fetch web content | `WebFetch` |
|
|
84
|
+
| Run commands | `Shell` (`npm search`, `git log`, etc.) |
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Tier 2/3 Verification Checklist
|
|
89
|
+
|
|
90
|
+
**Local research**:
|
|
91
|
+
- [ ] Used `rg` / `Grep` for search before reading files
|
|
92
|
+
- [ ] Used `Read` / `sed -n` LAST (after search)
|
|
93
|
+
- [ ] Managed output size with `head`, `tail`, `--limit`
|
|
94
|
+
|
|
95
|
+
**External research**:
|
|
96
|
+
- [ ] Used `gh search repos` or `npm search` to find repos (not guessed)
|
|
97
|
+
- [ ] Used `gh api .../trees` to explore structure before reading
|
|
98
|
+
- [ ] Used `gh api .../contents` LAST (after exploration)
|
|
99
|
+
- [ ] References include full GitHub URLs with line numbers
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Why Octocode Over Alternatives
|
|
104
|
+
|
|
105
|
+
| Instead of... | Octocode | Why Better |
|
|
106
|
+
|---------------|----------|------------|
|
|
107
|
+
| `grep`, `rg` | `localSearchCode` | Structured results, pagination, hints, byte offsets |
|
|
108
|
+
| `ls`, `tree` | `localViewStructure` | Filtering, sorting, depth control, summaries |
|
|
109
|
+
| `find` | `localFindFiles` | Time/size/permission filters, pagination |
|
|
110
|
+
| `cat`, `head` | `localGetFileContent` | matchString targeting, context lines, pagination |
|
|
111
|
+
| `gh api` | `githubSearchCode` | Structured results, hints, pagination |
|
|
112
|
+
| `npm search` | `packageSearch` | Multi-registry (npm/PyPI), structured metadata |
|
|
113
|
+
| `WebFetch` (GitHub) | `githubViewRepoStructure` | Tree view, no HTML parsing |
|
|
114
|
+
|
|
115
|
+
**Exclusive Octocode benefits** (unavailable in Tier 2/3):
|
|
116
|
+
- Structured JSON with hints for next steps
|
|
117
|
+
- Automatic pagination for token management
|
|
118
|
+
- `.gitignore` respect with `noIgnore` option
|
|
119
|
+
- Research params (`mainResearchGoal`, `researchGoal`, `reasoning`)
|
|
120
|
+
- LSP semantic analysis (go-to-definition, find-references, call-hierarchy)
|