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,391 @@
|
|
|
1
|
+
# Octocode Research Skill - Improvements
|
|
2
|
+
|
|
3
|
+
> **Generated from**: Code Review (2026-01-16)
|
|
4
|
+
> **Status**: Proposed
|
|
5
|
+
> **Priority Scale**: P0 (Critical) → P1 (High) → P2 (Medium) → P3 (Low)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Summary
|
|
10
|
+
|
|
11
|
+
This document outlines actionable improvements identified during the code review. Items are organized by priority and include implementation guidance.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## P0 - Critical
|
|
16
|
+
|
|
17
|
+
### 1. Add Unit Tests for Utility Functions
|
|
18
|
+
|
|
19
|
+
**Status**: Not Started
|
|
20
|
+
**Effort**: Medium (2-3 days)
|
|
21
|
+
**Risk if unaddressed**: Breaking changes go undetected, regression risk
|
|
22
|
+
|
|
23
|
+
#### Files Needing Tests
|
|
24
|
+
|
|
25
|
+
| File | Lines | Priority | Test Focus |
|
|
26
|
+
|------|-------|----------|------------|
|
|
27
|
+
| `responseBuilder.ts` | 497 | **Critical** | 7 formatters, pagination, empty states |
|
|
28
|
+
| `retry.ts` | 261 | **Critical** | Backoff calculation, error detection |
|
|
29
|
+
| `logger.ts` | 298 | **High** | File rotation, fallback, cross-platform |
|
|
30
|
+
| `resilience.ts` | 114 | **High** | Circuit breaker + retry integration |
|
|
31
|
+
| `routeFactory.ts` | 113 | **Medium** | Factory pattern, validation pipeline |
|
|
32
|
+
| `responseParser.ts` | 152 | **Medium** | YAML parsing, hints extraction |
|
|
33
|
+
|
|
34
|
+
#### Implementation Plan
|
|
35
|
+
|
|
36
|
+
1. Create `src/__tests__/unit/` directory
|
|
37
|
+
2. Add tests for `responseBuilder.ts`:
|
|
38
|
+
```typescript
|
|
39
|
+
// responseBuilder.test.ts
|
|
40
|
+
describe('ResearchResponse', () => {
|
|
41
|
+
describe('searchResults', () => {
|
|
42
|
+
it('formats files with match counts')
|
|
43
|
+
it('handles empty results')
|
|
44
|
+
it('adds pagination hints when hasMore')
|
|
45
|
+
it('truncates file list at 10 files')
|
|
46
|
+
})
|
|
47
|
+
describe('fileContent', () => {
|
|
48
|
+
it('formats content with code fence')
|
|
49
|
+
it('detects language from extension')
|
|
50
|
+
it('includes line range info')
|
|
51
|
+
})
|
|
52
|
+
// ... other formatters
|
|
53
|
+
})
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
3. Add tests for `retry.ts`:
|
|
57
|
+
```typescript
|
|
58
|
+
// retry.test.ts
|
|
59
|
+
describe('withRetry', () => {
|
|
60
|
+
it('returns immediately on success')
|
|
61
|
+
it('retries on retryable error')
|
|
62
|
+
it('throws on non-retryable error')
|
|
63
|
+
it('applies exponential backoff')
|
|
64
|
+
it('caps delay at maxDelayMs')
|
|
65
|
+
})
|
|
66
|
+
describe('error detection', () => {
|
|
67
|
+
it('isRateLimited detects 429 status')
|
|
68
|
+
it('isTimeout detects ETIMEDOUT')
|
|
69
|
+
// ... other error types
|
|
70
|
+
})
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
4. Update `vitest.config.ts` with coverage thresholds:
|
|
74
|
+
```typescript
|
|
75
|
+
coverage: {
|
|
76
|
+
thresholds: {
|
|
77
|
+
statements: 70,
|
|
78
|
+
branches: 60,
|
|
79
|
+
functions: 70,
|
|
80
|
+
lines: 70,
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## P1 - High Priority
|
|
88
|
+
|
|
89
|
+
### 2. Sanitize Query Parameters in Error Logs
|
|
90
|
+
|
|
91
|
+
**Status**: Not Started
|
|
92
|
+
**Effort**: Small (1-2 hours)
|
|
93
|
+
**Risk if unaddressed**: Sensitive data exposure in logs
|
|
94
|
+
|
|
95
|
+
**File**: `src/middleware/errorHandler.ts:21-26`
|
|
96
|
+
|
|
97
|
+
**Current Code**:
|
|
98
|
+
```typescript
|
|
99
|
+
logWarn(`[VALIDATION] ${req.method} ${req.path}: ${error.message}`, {
|
|
100
|
+
path: req.path,
|
|
101
|
+
query: req.query, // Full query params logged
|
|
102
|
+
details: error.details,
|
|
103
|
+
});
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Proposed Fix**:
|
|
107
|
+
```typescript
|
|
108
|
+
const sanitizedQuery = sanitizeQueryParams(req.query);
|
|
109
|
+
logWarn(`[VALIDATION] ${req.method} ${req.path}: ${error.message}`, {
|
|
110
|
+
path: req.path,
|
|
111
|
+
query: sanitizedQuery,
|
|
112
|
+
details: error.details,
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
// Add to utils/logger.ts or separate file
|
|
116
|
+
function sanitizeQueryParams(query: Record<string, unknown>): Record<string, unknown> {
|
|
117
|
+
const sensitiveKeys = ['token', 'key', 'secret', 'password', 'auth', 'credential'];
|
|
118
|
+
const sanitized: Record<string, unknown> = {};
|
|
119
|
+
|
|
120
|
+
for (const [key, value] of Object.entries(query)) {
|
|
121
|
+
const isaSensitive = sensitiveKeys.some(s => key.toLowerCase().includes(s));
|
|
122
|
+
sanitized[key] = isSensitive ? '[REDACTED]' : value;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return sanitized;
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
### 3. Update ARCHITECTURE.md Documentation
|
|
132
|
+
|
|
133
|
+
**Status**: Not Started
|
|
134
|
+
**Effort**: Small (1 hour)
|
|
135
|
+
**Risk if unaddressed**: Developer confusion, onboarding friction
|
|
136
|
+
|
|
137
|
+
**Issues**:
|
|
138
|
+
|
|
139
|
+
1. **Endpoint table uses wrong paths**:
|
|
140
|
+
- Document: `/local/search`, `/lsp/definition`, `/github/search`
|
|
141
|
+
- Actual: `/localSearchCode`, `/lspGotoDefinition`, `/githubSearchCode`
|
|
142
|
+
|
|
143
|
+
2. **Directory structure incomplete**:
|
|
144
|
+
- Missing: `routes/tools.ts`, `routes/prompts.ts`
|
|
145
|
+
- Lists non-existent: `rateLimitHandler.ts`
|
|
146
|
+
|
|
147
|
+
3. **Data flow diagram outdated**:
|
|
148
|
+
- References old route paths
|
|
149
|
+
|
|
150
|
+
**Action**: Update all endpoint references to match actual routes in `server.ts`.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
### 4. Remove Dead Code in Context Propagation
|
|
155
|
+
|
|
156
|
+
**Status**: Not Started
|
|
157
|
+
**Effort**: Small (30 minutes)
|
|
158
|
+
**Risk if unaddressed**: Code confusion, maintenance burden
|
|
159
|
+
|
|
160
|
+
**File**: `src/middleware/contextPropagation.ts`
|
|
161
|
+
|
|
162
|
+
**Current State**:
|
|
163
|
+
- `ResearchContext` interface defined but never used
|
|
164
|
+
- Cleanup interval logs but doesn't clean anything
|
|
165
|
+
- No actual context tracking implemented
|
|
166
|
+
|
|
167
|
+
**Options**:
|
|
168
|
+
|
|
169
|
+
A. **Remove entirely** (if not planned):
|
|
170
|
+
- Delete `contextPropagation.ts`
|
|
171
|
+
- Remove import from `server.ts`
|
|
172
|
+
- Keep `stopContextCleanup` as no-op for shutdown compatibility
|
|
173
|
+
|
|
174
|
+
B. **Implement properly** (if needed):
|
|
175
|
+
- Add actual context storage (Map with session ID)
|
|
176
|
+
- Implement cleanup logic (remove stale sessions)
|
|
177
|
+
- Wire up to routes for session tracking
|
|
178
|
+
|
|
179
|
+
**Recommendation**: Option A - Remove unless there's a planned use case.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## P2 - Medium Priority
|
|
184
|
+
|
|
185
|
+
### 5. Add Coverage Thresholds to Vitest Config
|
|
186
|
+
|
|
187
|
+
**Status**: Not Started
|
|
188
|
+
**Effort**: Small (15 minutes)
|
|
189
|
+
|
|
190
|
+
**File**: `vitest.config.ts`
|
|
191
|
+
|
|
192
|
+
**Current**:
|
|
193
|
+
```typescript
|
|
194
|
+
coverage: {
|
|
195
|
+
provider: 'v8',
|
|
196
|
+
reporter: ['text', 'html'],
|
|
197
|
+
include: ['src/**/*.ts'],
|
|
198
|
+
exclude: ['src/__tests__/**', 'src/types/**'],
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**Proposed**:
|
|
203
|
+
```typescript
|
|
204
|
+
coverage: {
|
|
205
|
+
provider: 'v8',
|
|
206
|
+
reporter: ['text', 'html', 'lcov'],
|
|
207
|
+
include: ['src/**/*.ts'],
|
|
208
|
+
exclude: ['src/__tests__/**', 'src/types/**'],
|
|
209
|
+
thresholds: {
|
|
210
|
+
statements: 70,
|
|
211
|
+
branches: 60,
|
|
212
|
+
functions: 70,
|
|
213
|
+
lines: 70,
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
### 6. Document Symlink Security Consideration
|
|
221
|
+
|
|
222
|
+
**Status**: Not Started
|
|
223
|
+
**Effort**: Small (15 minutes)
|
|
224
|
+
|
|
225
|
+
**File**: `SKILL.md` or `docs/SECURITY.md`
|
|
226
|
+
|
|
227
|
+
**Issue**: The `followSymlinks` option in local routes could allow traversal outside intended directories via symlinks.
|
|
228
|
+
|
|
229
|
+
**Proposed Documentation**:
|
|
230
|
+
```markdown
|
|
231
|
+
### Symlink Handling
|
|
232
|
+
|
|
233
|
+
The `followSymlinks` option (default: `false`) controls whether symbolic links
|
|
234
|
+
are followed during file operations.
|
|
235
|
+
|
|
236
|
+
**Security Note**: When enabled, symlinks could point to files outside the
|
|
237
|
+
intended search directory. Only enable this option when:
|
|
238
|
+
- You control the directory structure
|
|
239
|
+
- Symlinks are intentional and trusted
|
|
240
|
+
- The server is not exposed to untrusted users
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
### 7. Improve Error Type Detection in Retry Logic
|
|
246
|
+
|
|
247
|
+
**Status**: Not Started
|
|
248
|
+
**Effort**: Small (1 hour)
|
|
249
|
+
|
|
250
|
+
**File**: `src/utils/retry.ts`
|
|
251
|
+
|
|
252
|
+
**Current Issue**: Error detection relies on string matching which is fragile.
|
|
253
|
+
|
|
254
|
+
**Example**:
|
|
255
|
+
```typescript
|
|
256
|
+
function isLspNotReady(err: unknown): boolean {
|
|
257
|
+
const error = err as { message?: string; code?: string };
|
|
258
|
+
return (
|
|
259
|
+
error?.message?.includes('not initialized') || // Fragile
|
|
260
|
+
error?.message?.includes('server not started') ||
|
|
261
|
+
error?.message?.includes('LSP') || // Too broad
|
|
262
|
+
error?.code === 'LSP_NOT_READY' ||
|
|
263
|
+
false
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**Proposed Improvement**:
|
|
269
|
+
```typescript
|
|
270
|
+
// Define error codes as constants
|
|
271
|
+
const LSP_ERROR_CODES = ['LSP_NOT_READY', 'LSP_NOT_INITIALIZED', 'ECONNREFUSED'] as const;
|
|
272
|
+
const LSP_ERROR_PATTERNS = [/not initialized/i, /server not started/i] as const;
|
|
273
|
+
|
|
274
|
+
function isLspNotReady(err: unknown): boolean {
|
|
275
|
+
const error = err as { message?: string; code?: string };
|
|
276
|
+
|
|
277
|
+
// Check error codes first (more reliable)
|
|
278
|
+
if (error?.code && LSP_ERROR_CODES.includes(error.code as any)) {
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// Fall back to message patterns
|
|
283
|
+
if (error?.message) {
|
|
284
|
+
return LSP_ERROR_PATTERNS.some(pattern => pattern.test(error.message!));
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return false;
|
|
288
|
+
}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## P3 - Low Priority
|
|
294
|
+
|
|
295
|
+
### 8. Add Request ID for Log Correlation
|
|
296
|
+
|
|
297
|
+
**Status**: Not Started
|
|
298
|
+
**Effort**: Small (1-2 hours)
|
|
299
|
+
|
|
300
|
+
Add request ID header support for correlating logs across requests.
|
|
301
|
+
|
|
302
|
+
**Implementation**:
|
|
303
|
+
```typescript
|
|
304
|
+
// middleware/requestId.ts
|
|
305
|
+
import { randomUUID } from 'crypto';
|
|
306
|
+
|
|
307
|
+
export function requestIdMiddleware(req: Request, res: Response, next: NextFunction) {
|
|
308
|
+
req.id = req.headers['x-request-id'] as string || randomUUID();
|
|
309
|
+
res.setHeader('x-request-id', req.id);
|
|
310
|
+
next();
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
// Update logger to include request ID
|
|
314
|
+
function logToolCall(entry: ToolLogEntry & { requestId?: string }) {
|
|
315
|
+
// ...
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
### 9. Add Health Check Details
|
|
322
|
+
|
|
323
|
+
**Status**: Not Started
|
|
324
|
+
**Effort**: Small (30 minutes)
|
|
325
|
+
|
|
326
|
+
Enhance `/health` endpoint with more diagnostic info.
|
|
327
|
+
|
|
328
|
+
**Current**:
|
|
329
|
+
```typescript
|
|
330
|
+
res.json({ status: 'ok', port: PORT, version: '2.0.0' });
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
**Proposed**:
|
|
334
|
+
```typescript
|
|
335
|
+
res.json({
|
|
336
|
+
status: 'ok',
|
|
337
|
+
port: PORT,
|
|
338
|
+
version: '2.0.0',
|
|
339
|
+
uptime: process.uptime(),
|
|
340
|
+
memory: process.memoryUsage(),
|
|
341
|
+
circuits: {
|
|
342
|
+
lsp: getCircuitState('lsp'),
|
|
343
|
+
github: getCircuitState('github'),
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
### 10. Consider Rate Limiting
|
|
351
|
+
|
|
352
|
+
**Status**: Not Started
|
|
353
|
+
**Effort**: Medium (2-4 hours)
|
|
354
|
+
|
|
355
|
+
Add basic rate limiting to prevent abuse if server is exposed.
|
|
356
|
+
|
|
357
|
+
**Options**:
|
|
358
|
+
- `express-rate-limit` package
|
|
359
|
+
- Custom middleware using circuit breaker pattern
|
|
360
|
+
|
|
361
|
+
**Note**: Only needed if server will be exposed beyond localhost.
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
## Implementation Tracking
|
|
366
|
+
|
|
367
|
+
| # | Item | Priority | Status | Assignee |
|
|
368
|
+
|---|------|----------|--------|----------|
|
|
369
|
+
| 1 | Unit tests for utilities | P0 | Not Started | - |
|
|
370
|
+
| 2 | Sanitize query params in logs | P1 | Not Started | - |
|
|
371
|
+
| 3 | Update ARCHITECTURE.md | P1 | Not Started | - |
|
|
372
|
+
| 4 | Remove dead code | P1 | Not Started | - |
|
|
373
|
+
| 5 | Coverage thresholds | P2 | Not Started | - |
|
|
374
|
+
| 6 | Document symlink security | P2 | Not Started | - |
|
|
375
|
+
| 7 | Improve error detection | P2 | Not Started | - |
|
|
376
|
+
| 8 | Request ID correlation | P3 | Not Started | - |
|
|
377
|
+
| 9 | Health check details | P3 | Not Started | - |
|
|
378
|
+
| 10 | Rate limiting | P3 | Not Started | - |
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
## Quick Wins (< 1 hour each)
|
|
383
|
+
|
|
384
|
+
1. Add coverage thresholds to vitest.config.ts
|
|
385
|
+
2. Document symlink security
|
|
386
|
+
3. Remove dead code in contextPropagation.ts
|
|
387
|
+
4. Update endpoint references in ARCHITECTURE.md
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
*Last updated: 2026-01-16*
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
# Octocode Research Skill - Code Review Plan
|
|
2
|
+
|
|
3
|
+
> **Target**: `/Users/guybary/octocode-mcp/skills/octocode-research`
|
|
4
|
+
> **Version**: 2.0.0
|
|
5
|
+
> **Type**: Express.js HTTP Server wrapping `octocode-mcp` tools
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 📋 Executive Summary
|
|
10
|
+
|
|
11
|
+
**Project Purpose**: HTTP API server (port 1987) providing code research capabilities via REST endpoints that wrap `octocode-mcp` tool functions.
|
|
12
|
+
|
|
13
|
+
**Tech Stack**:
|
|
14
|
+
- Express.js 4.x (HTTP server)
|
|
15
|
+
- TypeScript 5.x (strict mode)
|
|
16
|
+
- Zod 3.x (validation)
|
|
17
|
+
- Vitest (testing)
|
|
18
|
+
- octocode-mcp (core dependency)
|
|
19
|
+
|
|
20
|
+
**File Stats**:
|
|
21
|
+
- Source files: ~31 TypeScript files
|
|
22
|
+
- Test files: 2 integration tests
|
|
23
|
+
- Documentation: 4 markdown files
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 🔍 Review Areas
|
|
28
|
+
|
|
29
|
+
### 1. Core Architecture Review
|
|
30
|
+
|
|
31
|
+
| File | Purpose | Review Focus |
|
|
32
|
+
|------|---------|--------------|
|
|
33
|
+
| `src/server.ts` | Express app setup, route mounting, graceful shutdown | Error handling, middleware order, shutdown logic |
|
|
34
|
+
| `src/index.ts` | Re-exports from octocode-mcp | Export completeness, naming consistency |
|
|
35
|
+
| `src/mcpCache.ts` | MCP response caching | Cache invalidation, memory management |
|
|
36
|
+
|
|
37
|
+
**Key Questions**:
|
|
38
|
+
- [ ] Is the middleware pipeline order optimal?
|
|
39
|
+
- [ ] Does graceful shutdown handle all edge cases?
|
|
40
|
+
- [ ] Is error propagation consistent across routes?
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
### 2. Routes Review
|
|
45
|
+
|
|
46
|
+
| Route File | Endpoints | Review Focus |
|
|
47
|
+
|------------|-----------|--------------|
|
|
48
|
+
| `src/routes/local.ts` | `/local/search`, `/local/content`, `/local/find`, `/local/structure` | Path validation, file access security |
|
|
49
|
+
| `src/routes/lsp.ts` | `/lsp/definition`, `/lsp/references`, `/lsp/calls` | LSP error handling, timeout management |
|
|
50
|
+
| `src/routes/github.ts` | `/github/search`, `/github/content`, `/github/repos`, `/github/structure`, `/github/prs` | Rate limiting, auth token handling |
|
|
51
|
+
| `src/routes/package.ts` | `/package/search` | Registry API resilience |
|
|
52
|
+
| `src/routes/tools.ts` | `/tools/list`, `/tools/info/:name`, `/tools/call/:toolName`, `/tools/system` | Schema validation, tool discovery |
|
|
53
|
+
| `src/routes/prompts.ts` | `/prompts/list`, `/prompts/info/:name` | Prompt loading, caching |
|
|
54
|
+
|
|
55
|
+
**Key Questions**:
|
|
56
|
+
- [ ] Are all routes properly validating input?
|
|
57
|
+
- [ ] Is error handling consistent across route groups?
|
|
58
|
+
- [ ] Are async operations properly awaited?
|
|
59
|
+
- [ ] Is response format consistent (status, data, hints)?
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### 3. Middleware Review
|
|
64
|
+
|
|
65
|
+
| Middleware | Purpose | Review Focus |
|
|
66
|
+
|------------|---------|--------------|
|
|
67
|
+
| `contextPropagation.ts` | Research session context | Context lifecycle, memory leaks |
|
|
68
|
+
| `errorHandler.ts` | Error response formatting | Error types coverage, stack trace handling |
|
|
69
|
+
| `logger.ts` | Request/response logging | Log format, sensitive data masking |
|
|
70
|
+
| `queryParser.ts` | Zod validation | Schema completeness, coercion safety |
|
|
71
|
+
|
|
72
|
+
**Key Questions**:
|
|
73
|
+
- [ ] Does context propagation handle concurrent requests?
|
|
74
|
+
- [ ] Are all error types properly mapped to HTTP status codes?
|
|
75
|
+
- [ ] Is sensitive data (tokens, paths) masked in logs?
|
|
76
|
+
- [ ] Does query parser handle edge cases (empty, malformed)?
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### 4. Validation Review
|
|
81
|
+
|
|
82
|
+
| File | Content | Review Focus |
|
|
83
|
+
|------|---------|--------------|
|
|
84
|
+
| `src/validation/schemas.ts` | Zod schemas for all endpoints | Schema completeness, constraint accuracy |
|
|
85
|
+
| `src/validation/index.ts` | Schema exports | Export organization |
|
|
86
|
+
|
|
87
|
+
**Key Questions**:
|
|
88
|
+
- [ ] Do schemas match actual tool requirements?
|
|
89
|
+
- [ ] Are optional vs required fields correct?
|
|
90
|
+
- [ ] Are numeric constraints (min/max) appropriate?
|
|
91
|
+
- [ ] Are string patterns (paths, patterns) validated?
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
### 5. Utilities Review
|
|
96
|
+
|
|
97
|
+
| Utility | Purpose | Review Focus |
|
|
98
|
+
|---------|---------|--------------|
|
|
99
|
+
| `responseBuilder.ts` (14.7KB) | Role-based response formatting | **Largest file** - complexity, maintainability |
|
|
100
|
+
| `circuitBreaker.ts` (7.2KB) | Circuit breaker pattern | State management, timeout handling |
|
|
101
|
+
| `retry.ts` (6.3KB) | Retry with backoff | Backoff strategy, max attempts |
|
|
102
|
+
| `responseParser.ts` | MCP response parsing | Error handling, type safety |
|
|
103
|
+
| `responseFactory.ts` | Response creation helpers | Consistency, reusability |
|
|
104
|
+
| `resilience.ts` | Resilience utilities | Integration with retry/circuit breaker |
|
|
105
|
+
| `routeFactory.ts` | Route creation helpers | DRY principles, pattern consistency |
|
|
106
|
+
| `logger.ts` (7.8KB) | File-based logging | File rotation, performance |
|
|
107
|
+
| `colors.ts` | Console color functions | Terminal compatibility |
|
|
108
|
+
|
|
109
|
+
**Key Questions**:
|
|
110
|
+
- [ ] Is `responseBuilder.ts` over-engineered? Can it be simplified?
|
|
111
|
+
- [ ] Are circuit breaker thresholds appropriate?
|
|
112
|
+
- [ ] Is retry logic preventing infinite loops?
|
|
113
|
+
- [ ] Is file logging performant under load?
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
### 6. Types Review
|
|
118
|
+
|
|
119
|
+
| File | Content | Review Focus |
|
|
120
|
+
|------|---------|--------------|
|
|
121
|
+
| `types/express.d.ts` | Express type extensions | Type completeness |
|
|
122
|
+
| `types/guards.ts` | Type guard functions | Guard correctness, exhaustiveness |
|
|
123
|
+
| `types/mcp.ts` | MCP protocol types | Alignment with octocode-mcp |
|
|
124
|
+
| `types/responses.ts` | Response types | Consistency with actual responses |
|
|
125
|
+
| `types/toolTypes.ts` | Tool parameter types | Alignment with schemas |
|
|
126
|
+
|
|
127
|
+
**Key Questions**:
|
|
128
|
+
- [ ] Are type guards exhaustive?
|
|
129
|
+
- [ ] Do types match runtime behavior?
|
|
130
|
+
- [ ] Are MCP types in sync with octocode-mcp?
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
### 7. Testing Review
|
|
135
|
+
|
|
136
|
+
| Test File | Coverage | Review Focus |
|
|
137
|
+
|-----------|----------|--------------|
|
|
138
|
+
| `__tests__/integration/routes.test.ts` (12.3KB) | Route integration tests | Coverage completeness, edge cases |
|
|
139
|
+
| `__tests__/integration/circuitBreaker.test.ts` (6.1KB) | Circuit breaker tests | State transitions, timing |
|
|
140
|
+
|
|
141
|
+
**Key Questions**:
|
|
142
|
+
- [ ] Are all routes covered by tests?
|
|
143
|
+
- [ ] Are error scenarios tested?
|
|
144
|
+
- [ ] Are edge cases (empty inputs, timeouts) covered?
|
|
145
|
+
- [ ] Is test isolation maintained?
|
|
146
|
+
|
|
147
|
+
**Gaps Identified**:
|
|
148
|
+
- ⚠️ No unit tests for individual utilities
|
|
149
|
+
- ⚠️ No unit tests for middleware
|
|
150
|
+
- ⚠️ Only 2 integration test files
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
### 8. Documentation Review
|
|
155
|
+
|
|
156
|
+
| Document | Purpose | Review Focus |
|
|
157
|
+
|----------|---------|--------------|
|
|
158
|
+
| `SKILL.md` | Agent usage guide | Accuracy, completeness |
|
|
159
|
+
| `AGENTS.md` | Development guide | Developer onboarding |
|
|
160
|
+
| `docs/ARCHITECTURE.md` | System design | Accuracy, diagrams |
|
|
161
|
+
| `docs/IMPROVEMENTS.md` | Future work | Prioritization |
|
|
162
|
+
| `docs/BUG_RESPONSE_FORMAT.md` | Bug tracking | Template completeness |
|
|
163
|
+
| `docs/DESIGN_NODE_SERVER_MANAGEMENT.md` | Design decisions | Implementation alignment |
|
|
164
|
+
|
|
165
|
+
**Key Questions**:
|
|
166
|
+
- [ ] Does SKILL.md match actual API behavior?
|
|
167
|
+
- [ ] Is AGENTS.md up-to-date with current structure?
|
|
168
|
+
- [ ] Are architectural diagrams accurate?
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
### 9. Scripts Review
|
|
173
|
+
|
|
174
|
+
| Script | Purpose | Review Focus |
|
|
175
|
+
|--------|---------|--------------|
|
|
176
|
+
| `scripts/server.ts` | Server management | Start/stop reliability |
|
|
177
|
+
| `scripts/init.ts` | Initialization | Idempotency |
|
|
178
|
+
| `scripts/discover.ts` | Tool discovery | MCP integration |
|
|
179
|
+
| `scripts/call.ts` | Tool calling | Error handling |
|
|
180
|
+
| `scripts/prompt.ts` | Prompt fetching | Caching |
|
|
181
|
+
| `scripts/getToolsInfo.ts` | Tool info extraction | Schema accuracy |
|
|
182
|
+
| `scripts/common.ts` | Shared utilities | Reusability |
|
|
183
|
+
|
|
184
|
+
**Key Questions**:
|
|
185
|
+
- [ ] Does `install.sh` handle all edge cases?
|
|
186
|
+
- [ ] Is server start/stop idempotent?
|
|
187
|
+
- [ ] Do scripts have proper error messages?
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
### 10. Security Review
|
|
192
|
+
|
|
193
|
+
**Critical Areas**:
|
|
194
|
+
| Area | Risk | Check |
|
|
195
|
+
|------|------|-------|
|
|
196
|
+
| Path Validation | Path traversal | Validate paths in local routes |
|
|
197
|
+
| Token Handling | Token exposure | Check log masking |
|
|
198
|
+
| Error Messages | Info leakage | Review error detail level |
|
|
199
|
+
| Input Validation | Injection | Review Zod schemas for completeness |
|
|
200
|
+
|
|
201
|
+
**Key Questions**:
|
|
202
|
+
- [ ] Are file paths sanitized before access?
|
|
203
|
+
- [ ] Are GitHub tokens masked in logs/responses?
|
|
204
|
+
- [ ] Do error messages avoid leaking sensitive info?
|
|
205
|
+
- [ ] Is there rate limiting on the server?
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## 📊 Review Checklist
|
|
210
|
+
|
|
211
|
+
### Priority 1 (Critical)
|
|
212
|
+
- [ ] Security: Path validation in local routes
|
|
213
|
+
- [ ] Security: Token handling in GitHub routes
|
|
214
|
+
- [ ] Error Handling: Consistent error responses
|
|
215
|
+
- [ ] Validation: Schema completeness
|
|
216
|
+
|
|
217
|
+
### Priority 2 (Important)
|
|
218
|
+
- [ ] Testing: Increase coverage (unit tests for utils)
|
|
219
|
+
- [ ] Resilience: Circuit breaker configuration
|
|
220
|
+
- [ ] Performance: Response builder complexity
|
|
221
|
+
- [ ] Logging: Sensitive data masking
|
|
222
|
+
|
|
223
|
+
### Priority 3 (Nice to Have)
|
|
224
|
+
- [ ] Documentation: Update ARCHITECTURE.md diagrams
|
|
225
|
+
- [ ] Code Style: Reduce responseBuilder.ts complexity
|
|
226
|
+
- [ ] Scripts: Improve error messages
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## 🏗️ Suggested Review Order
|
|
231
|
+
|
|
232
|
+
1. **Security First**: `routes/local.ts`, `routes/github.ts` - path & token handling
|
|
233
|
+
2. **Core Flow**: `server.ts` → `middleware/*` → `routes/*`
|
|
234
|
+
3. **Validation**: `validation/schemas.ts` - ensure completeness
|
|
235
|
+
4. **Utilities**: `responseBuilder.ts` - complexity analysis
|
|
236
|
+
5. **Tests**: Review coverage, identify gaps
|
|
237
|
+
6. **Documentation**: Verify accuracy
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## 📁 Files by Complexity
|
|
242
|
+
|
|
243
|
+
### High Complexity (> 10KB)
|
|
244
|
+
| File | Size | Priority |
|
|
245
|
+
|------|------|----------|
|
|
246
|
+
| `src/validation/schemas.ts` | 19.4KB | P1 - Validation completeness |
|
|
247
|
+
| `src/utils/responseBuilder.ts` | 14.7KB | P2 - Refactoring candidate |
|
|
248
|
+
| `src/routes/tools.ts` | 11.8KB | P1 - Tool discovery |
|
|
249
|
+
|
|
250
|
+
### Medium Complexity (5-10KB)
|
|
251
|
+
| File | Size | Priority |
|
|
252
|
+
|------|------|----------|
|
|
253
|
+
| `src/utils/logger.ts` | 7.8KB | P2 |
|
|
254
|
+
| `src/utils/circuitBreaker.ts` | 7.2KB | P2 |
|
|
255
|
+
| `src/routes/github.ts` | 7.0KB | P1 |
|
|
256
|
+
| `src/routes/local.ts` | 6.2KB | P1 |
|
|
257
|
+
| `src/utils/retry.ts` | 6.3KB | P2 |
|
|
258
|
+
| `src/routes/lsp.ts` | 5.8KB | P2 |
|
|
259
|
+
| `src/server.ts` | 5.5KB | P1 |
|
|
260
|
+
|
|
261
|
+
### Low Complexity (< 5KB)
|
|
262
|
+
All remaining files - standard review
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## 🎯 Expected Outcomes
|
|
267
|
+
|
|
268
|
+
1. **Security Report**: Path validation and token handling findings
|
|
269
|
+
2. **Test Coverage Report**: Current coverage + gaps
|
|
270
|
+
3. **Code Quality Report**: Complexity, maintainability scores
|
|
271
|
+
4. **Documentation Audit**: Accuracy checklist
|
|
272
|
+
5. **Recommendations**: Prioritized action items
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 📅 Estimated Review Time
|
|
277
|
+
|
|
278
|
+
| Phase | Time | Description |
|
|
279
|
+
|-------|------|-------------|
|
|
280
|
+
| Security Review | 2-3 hours | Routes, middleware, validation |
|
|
281
|
+
| Core Review | 3-4 hours | Server, routes, middleware |
|
|
282
|
+
| Utilities Review | 2-3 hours | Response builder, circuit breaker |
|
|
283
|
+
| Testing Review | 1-2 hours | Coverage analysis |
|
|
284
|
+
| Documentation | 1 hour | Accuracy verification |
|
|
285
|
+
| **Total** | **9-13 hours** | Full comprehensive review |
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
*Generated by Octocode Research 🔍🐙*
|