octocode-cli 1.2.6 → 1.2.8

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.
Files changed (303) hide show
  1. package/LICENSE +21 -63
  2. package/README.md +85 -142
  3. package/out/octocode-cli.js +7063 -6934
  4. package/package.json +8 -6
  5. package/skills/README.md +97 -120
  6. package/skills/octocode-code-engineer/.claude/settings.local.json +18 -0
  7. package/skills/octocode-code-engineer/.octocode/rfc/RFC-code-engineer-weakness-fixes.md +255 -0
  8. package/skills/octocode-code-engineer/.plan/VALIDATED_PLAN.md +223 -0
  9. package/skills/octocode-code-engineer/README.md +178 -0
  10. package/skills/octocode-code-engineer/SKILL.md +418 -0
  11. package/skills/octocode-code-engineer/coverage/architecture.ts.html +7828 -0
  12. package/skills/octocode-code-engineer/coverage/ast-helpers.ts.html +211 -0
  13. package/skills/octocode-code-engineer/coverage/ast-search.ts.html +1795 -0
  14. package/skills/octocode-code-engineer/coverage/base.css +224 -0
  15. package/skills/octocode-code-engineer/coverage/block-navigation.js +87 -0
  16. package/skills/octocode-code-engineer/coverage/cache.ts.html +376 -0
  17. package/skills/octocode-code-engineer/coverage/cli.ts.html +982 -0
  18. package/skills/octocode-code-engineer/coverage/clover.xml +3217 -0
  19. package/skills/octocode-code-engineer/coverage/collect-effects.ts.html +664 -0
  20. package/skills/octocode-code-engineer/coverage/collect-input-sources.ts.html +577 -0
  21. package/skills/octocode-code-engineer/coverage/collect-performance.ts.html +331 -0
  22. package/skills/octocode-code-engineer/coverage/collect-prototype-pollution.ts.html +421 -0
  23. package/skills/octocode-code-engineer/coverage/collect-security.ts.html +604 -0
  24. package/skills/octocode-code-engineer/coverage/collect-test-profile.ts.html +589 -0
  25. package/skills/octocode-code-engineer/coverage/coverage-final.json +30 -0
  26. package/skills/octocode-code-engineer/coverage/dependencies.ts.html +997 -0
  27. package/skills/octocode-code-engineer/coverage/dependency-summary.ts.html +688 -0
  28. package/skills/octocode-code-engineer/coverage/discovery.ts.html +322 -0
  29. package/skills/octocode-code-engineer/coverage/favicon.png +0 -0
  30. package/skills/octocode-code-engineer/coverage/graph-analytics.ts.html +1510 -0
  31. package/skills/octocode-code-engineer/coverage/index.html +536 -0
  32. package/skills/octocode-code-engineer/coverage/index.ts.html +826 -0
  33. package/skills/octocode-code-engineer/coverage/metrics.ts.html +553 -0
  34. package/skills/octocode-code-engineer/coverage/pipeline.ts.html +2044 -0
  35. package/skills/octocode-code-engineer/coverage/prettify.css +1 -0
  36. package/skills/octocode-code-engineer/coverage/prettify.js +2 -0
  37. package/skills/octocode-code-engineer/coverage/report-analysis.ts.html +1570 -0
  38. package/skills/octocode-code-engineer/coverage/report-writer.ts.html +1102 -0
  39. package/skills/octocode-code-engineer/coverage/security-detectors.ts.html +1747 -0
  40. package/skills/octocode-code-engineer/coverage/semantic-detectors.ts.html +2152 -0
  41. package/skills/octocode-code-engineer/coverage/semantic.ts.html +1897 -0
  42. package/skills/octocode-code-engineer/coverage/sort-arrow-sprite.png +0 -0
  43. package/skills/octocode-code-engineer/coverage/sorter.js +210 -0
  44. package/skills/octocode-code-engineer/coverage/summary-md.ts.html +1222 -0
  45. package/skills/octocode-code-engineer/coverage/test-quality-detectors.ts.html +1039 -0
  46. package/skills/octocode-code-engineer/coverage/tree-sitter-analyzer.ts.html +955 -0
  47. package/skills/octocode-code-engineer/coverage/ts-analyzer.ts.html +1213 -0
  48. package/skills/octocode-code-engineer/coverage/types.ts.html +2473 -0
  49. package/skills/octocode-code-engineer/coverage/utils.ts.html +820 -0
  50. package/skills/octocode-code-engineer/eslint.config.mjs +54 -0
  51. package/skills/octocode-code-engineer/minify-scripts.mjs +32 -0
  52. package/skills/octocode-code-engineer/package.json +54 -0
  53. package/skills/octocode-code-engineer/references/agent-ast-reading-rfc.md +95 -0
  54. package/skills/octocode-code-engineer/references/architecture-techniques.md +121 -0
  55. package/skills/octocode-code-engineer/references/ast-search.md +210 -0
  56. package/skills/octocode-code-engineer/references/ast-tree-search.md +151 -0
  57. package/skills/octocode-code-engineer/references/cli-reference.md +167 -0
  58. package/skills/octocode-code-engineer/references/concepts.md +107 -0
  59. package/skills/octocode-code-engineer/references/finding-categories.md +128 -0
  60. package/skills/octocode-code-engineer/references/improvement-roadmap.md +304 -0
  61. package/skills/octocode-code-engineer/references/output-files.md +144 -0
  62. package/skills/octocode-code-engineer/references/playbooks.md +204 -0
  63. package/skills/octocode-code-engineer/references/present-results.md +136 -0
  64. package/skills/octocode-code-engineer/references/tool-workflows.md +566 -0
  65. package/skills/octocode-code-engineer/references/validate-investigate.md +225 -0
  66. package/skills/octocode-code-engineer/scripts/analysis/dependencies.js +1 -0
  67. package/skills/octocode-code-engineer/scripts/analysis/dependency-summary.js +1 -0
  68. package/skills/octocode-code-engineer/scripts/analysis/discovery.js +1 -0
  69. package/skills/octocode-code-engineer/scripts/analysis/graph-analytics.js +1 -0
  70. package/skills/octocode-code-engineer/scripts/analysis/semantic.js +1 -0
  71. package/skills/octocode-code-engineer/scripts/ast/helpers.js +1 -0
  72. package/skills/octocode-code-engineer/scripts/ast/metrics.js +1 -0
  73. package/skills/octocode-code-engineer/scripts/ast/search.js +2 -0
  74. package/skills/octocode-code-engineer/scripts/ast/tree-search.js +2 -0
  75. package/skills/octocode-code-engineer/scripts/ast/tree-sitter.js +1 -0
  76. package/skills/octocode-code-engineer/scripts/ast/ts-analyzer.js +1 -0
  77. package/skills/octocode-code-engineer/scripts/collectors/chains.js +1 -0
  78. package/skills/octocode-code-engineer/scripts/collectors/effects.js +1 -0
  79. package/skills/octocode-code-engineer/scripts/collectors/input-sources.js +1 -0
  80. package/skills/octocode-code-engineer/scripts/collectors/performance.js +1 -0
  81. package/skills/octocode-code-engineer/scripts/collectors/prototype-pollution.js +1 -0
  82. package/skills/octocode-code-engineer/scripts/collectors/security.js +1 -0
  83. package/skills/octocode-code-engineer/scripts/collectors/test-profile.js +1 -0
  84. package/skills/octocode-code-engineer/scripts/common/is-direct-run.js +1 -0
  85. package/skills/octocode-code-engineer/scripts/common/utils.js +1 -0
  86. package/skills/octocode-code-engineer/scripts/detectors/code-quality.js +1 -0
  87. package/skills/octocode-code-engineer/scripts/detectors/cohesion.js +1 -0
  88. package/skills/octocode-code-engineer/scripts/detectors/coupling.js +1 -0
  89. package/skills/octocode-code-engineer/scripts/detectors/cycle.js +1 -0
  90. package/skills/octocode-code-engineer/scripts/detectors/dead-code.js +1 -0
  91. package/skills/octocode-code-engineer/scripts/detectors/import-style.js +1 -0
  92. package/skills/octocode-code-engineer/scripts/detectors/index.js +1 -0
  93. package/skills/octocode-code-engineer/scripts/detectors/security.js +1 -0
  94. package/skills/octocode-code-engineer/scripts/detectors/semantic.js +1 -0
  95. package/skills/octocode-code-engineer/scripts/detectors/shared.js +1 -0
  96. package/skills/octocode-code-engineer/scripts/detectors/test-quality.js +1 -0
  97. package/skills/octocode-code-engineer/scripts/index.js +1 -0
  98. package/skills/octocode-code-engineer/scripts/pipeline/cache.js +1 -0
  99. package/skills/octocode-code-engineer/scripts/pipeline/cli.js +1 -0
  100. package/skills/octocode-code-engineer/scripts/pipeline/main.js +2 -0
  101. package/skills/octocode-code-engineer/scripts/reporting/analysis.js +1 -0
  102. package/skills/octocode-code-engineer/scripts/reporting/summary-md.js +1 -0
  103. package/skills/octocode-code-engineer/scripts/reporting/writer.js +1 -0
  104. package/skills/octocode-code-engineer/scripts/types/constants.js +1 -0
  105. package/skills/octocode-code-engineer/scripts/types/index.js +1 -0
  106. package/skills/octocode-code-engineer/scripts/types/interfaces.js +1 -0
  107. package/skills/octocode-code-engineer/src/analysis/dependencies.test.ts +545 -0
  108. package/skills/octocode-code-engineer/src/analysis/dependencies.ts +406 -0
  109. package/skills/octocode-code-engineer/src/analysis/dependency-summary.test.ts +566 -0
  110. package/skills/octocode-code-engineer/src/analysis/dependency-summary.ts +257 -0
  111. package/skills/octocode-code-engineer/src/analysis/discovery.test.ts +420 -0
  112. package/skills/octocode-code-engineer/src/analysis/discovery.ts +87 -0
  113. package/skills/octocode-code-engineer/src/analysis/graph-analytics.test.ts +449 -0
  114. package/skills/octocode-code-engineer/src/analysis/graph-analytics.ts +534 -0
  115. package/skills/octocode-code-engineer/src/analysis/semantic.test.ts +1533 -0
  116. package/skills/octocode-code-engineer/src/analysis/semantic.ts +830 -0
  117. package/skills/octocode-code-engineer/src/ast/helpers.test.ts +185 -0
  118. package/skills/octocode-code-engineer/src/ast/helpers.ts +62 -0
  119. package/skills/octocode-code-engineer/src/ast/metrics.test.ts +304 -0
  120. package/skills/octocode-code-engineer/src/ast/metrics.ts +204 -0
  121. package/skills/octocode-code-engineer/src/ast/search.test.ts +647 -0
  122. package/skills/octocode-code-engineer/src/ast/search.ts +648 -0
  123. package/skills/octocode-code-engineer/src/ast/tree-search.test.ts +199 -0
  124. package/skills/octocode-code-engineer/src/ast/tree-search.ts +392 -0
  125. package/skills/octocode-code-engineer/src/ast/tree-sitter.test.ts +407 -0
  126. package/skills/octocode-code-engineer/src/ast/tree-sitter.ts +402 -0
  127. package/skills/octocode-code-engineer/src/ast/ts-analyzer.test.ts +1864 -0
  128. package/skills/octocode-code-engineer/src/ast/ts-analyzer.ts +509 -0
  129. package/skills/octocode-code-engineer/src/collectors/chains.ts +74 -0
  130. package/skills/octocode-code-engineer/src/collectors/effects.test.ts +490 -0
  131. package/skills/octocode-code-engineer/src/collectors/effects.ts +332 -0
  132. package/skills/octocode-code-engineer/src/collectors/input-sources.test.ts +144 -0
  133. package/skills/octocode-code-engineer/src/collectors/input-sources.ts +196 -0
  134. package/skills/octocode-code-engineer/src/collectors/performance.test.ts +82 -0
  135. package/skills/octocode-code-engineer/src/collectors/performance.ts +141 -0
  136. package/skills/octocode-code-engineer/src/collectors/prototype-pollution.test.ts +55 -0
  137. package/skills/octocode-code-engineer/src/collectors/prototype-pollution.ts +162 -0
  138. package/skills/octocode-code-engineer/src/collectors/security.test.ts +124 -0
  139. package/skills/octocode-code-engineer/src/collectors/security.ts +309 -0
  140. package/skills/octocode-code-engineer/src/collectors/test-profile.test.ts +97 -0
  141. package/skills/octocode-code-engineer/src/collectors/test-profile.ts +269 -0
  142. package/skills/octocode-code-engineer/src/common/is-direct-run.test.ts +32 -0
  143. package/skills/octocode-code-engineer/src/common/is-direct-run.ts +13 -0
  144. package/skills/octocode-code-engineer/src/common/utils.test.ts +463 -0
  145. package/skills/octocode-code-engineer/src/common/utils.ts +304 -0
  146. package/skills/octocode-code-engineer/src/detectors/code-quality.ts +966 -0
  147. package/skills/octocode-code-engineer/src/detectors/cohesion.ts +539 -0
  148. package/skills/octocode-code-engineer/src/detectors/coupling.ts +323 -0
  149. package/skills/octocode-code-engineer/src/detectors/cycle.ts +349 -0
  150. package/skills/octocode-code-engineer/src/detectors/dead-code.ts +320 -0
  151. package/skills/octocode-code-engineer/src/detectors/import-style.ts +376 -0
  152. package/skills/octocode-code-engineer/src/detectors/index.test.ts +3061 -0
  153. package/skills/octocode-code-engineer/src/detectors/index.ts +88 -0
  154. package/skills/octocode-code-engineer/src/detectors/security.test.ts +882 -0
  155. package/skills/octocode-code-engineer/src/detectors/security.ts +821 -0
  156. package/skills/octocode-code-engineer/src/detectors/semantic.ts +758 -0
  157. package/skills/octocode-code-engineer/src/detectors/shared.ts +49 -0
  158. package/skills/octocode-code-engineer/src/detectors/test-quality.test.ts +388 -0
  159. package/skills/octocode-code-engineer/src/detectors/test-quality.ts +367 -0
  160. package/skills/octocode-code-engineer/src/index.test.ts +4425 -0
  161. package/skills/octocode-code-engineer/src/index.ts +403 -0
  162. package/skills/octocode-code-engineer/src/pipeline/cache.test.ts +199 -0
  163. package/skills/octocode-code-engineer/src/pipeline/cache.ts +130 -0
  164. package/skills/octocode-code-engineer/src/pipeline/cli.test.ts +493 -0
  165. package/skills/octocode-code-engineer/src/pipeline/cli.ts +344 -0
  166. package/skills/octocode-code-engineer/src/pipeline/main.test.ts +174 -0
  167. package/skills/octocode-code-engineer/src/pipeline/main.ts +1074 -0
  168. package/skills/octocode-code-engineer/src/pipeline.test.ts +84 -0
  169. package/skills/octocode-code-engineer/src/reporting/analysis.test.ts +782 -0
  170. package/skills/octocode-code-engineer/src/reporting/analysis.ts +688 -0
  171. package/skills/octocode-code-engineer/src/reporting/output-contract.test.ts +463 -0
  172. package/skills/octocode-code-engineer/src/reporting/summary-md.test.ts +421 -0
  173. package/skills/octocode-code-engineer/src/reporting/summary-md.ts +714 -0
  174. package/skills/octocode-code-engineer/src/reporting/writer.ts +430 -0
  175. package/skills/octocode-code-engineer/src/sanity.test.ts +47 -0
  176. package/skills/octocode-code-engineer/src/types/constants.ts +248 -0
  177. package/skills/octocode-code-engineer/src/types/index.ts +80 -0
  178. package/skills/octocode-code-engineer/src/types/interfaces.ts +682 -0
  179. package/skills/octocode-code-engineer/tsconfig.json +17 -0
  180. package/skills/octocode-code-engineer/vitest.config.ts +8 -0
  181. package/skills/octocode-documentation-writer/README.md +113 -0
  182. package/skills/octocode-documentation-writer/SKILL.md +886 -0
  183. package/skills/octocode-documentation-writer/references/agent-discovery-analysis.md +453 -0
  184. package/skills/octocode-documentation-writer/references/agent-documentation-writer.md +255 -0
  185. package/skills/octocode-documentation-writer/references/agent-engineer-questions.md +247 -0
  186. package/skills/octocode-documentation-writer/references/agent-orchestrator.md +370 -0
  187. package/skills/octocode-documentation-writer/references/agent-qa-validator.md +227 -0
  188. package/skills/octocode-documentation-writer/references/agent-researcher.md +250 -0
  189. package/skills/octocode-documentation-writer/schemas/analysis-schema.json +886 -0
  190. package/skills/octocode-documentation-writer/schemas/discovery-tasks.json +96 -0
  191. package/skills/octocode-documentation-writer/schemas/documentation-structure.json +373 -0
  192. package/skills/octocode-documentation-writer/schemas/partial-discovery-schema.json +102 -0
  193. package/skills/octocode-documentation-writer/schemas/partial-research-schema.json +98 -0
  194. package/skills/octocode-documentation-writer/schemas/qa-results-schema.json +113 -0
  195. package/skills/octocode-documentation-writer/schemas/questions-schema.json +228 -0
  196. package/skills/octocode-documentation-writer/schemas/research-schema.json +104 -0
  197. package/skills/octocode-documentation-writer/schemas/state-schema.json +222 -0
  198. package/skills/octocode-documentation-writer/schemas/work-assignments-schema.json +74 -0
  199. package/skills/octocode-plan/SKILL.md +122 -116
  200. package/skills/octocode-prompt-optimizer/SKILL.md +617 -0
  201. package/skills/octocode-pull-request-reviewer/README.md +249 -0
  202. package/skills/octocode-pull-request-reviewer/SKILL.md +479 -0
  203. package/skills/octocode-pull-request-reviewer/references/dependency-check.md +74 -0
  204. package/skills/octocode-pull-request-reviewer/references/domain-reviewers.md +24 -0
  205. package/skills/octocode-pull-request-reviewer/references/execution-lifecycle.md +441 -0
  206. package/skills/octocode-pull-request-reviewer/references/flow-analysis-protocol.md +64 -0
  207. package/skills/octocode-pull-request-reviewer/references/output-template.md +174 -0
  208. package/skills/octocode-pull-request-reviewer/references/parallel-agent-protocol.md +182 -0
  209. package/skills/octocode-pull-request-reviewer/references/review-guidelines.md +26 -0
  210. package/skills/octocode-pull-request-reviewer/references/verification-checklist.md +40 -0
  211. package/skills/octocode-research/.claude/settings.local.json +46 -0
  212. package/skills/octocode-research/.octocode/plan/code-review-fixes/plan.md +312 -0
  213. package/skills/octocode-research/.octocode/plan/code-review-fixes/research.md +212 -0
  214. package/skills/octocode-research/.octocode/plans/NODE_SERVER_START_PLAN.md +755 -0
  215. package/skills/octocode-research/.octocode/research/code-review/research.md +371 -0
  216. package/skills/octocode-research/.octocode/review/IMPROVEMENTS.md +391 -0
  217. package/skills/octocode-research/.octocode/review/REVIEW_PLAN.md +289 -0
  218. package/skills/octocode-research/.octocode/review/REVIEW_REPORT.md +356 -0
  219. package/skills/octocode-research/AGENTS.md +349 -0
  220. package/skills/octocode-research/README.md +494 -0
  221. package/skills/octocode-research/SKILL.md +652 -274
  222. package/skills/octocode-research/docs/API_REFERENCE.md +562 -0
  223. package/skills/octocode-research/docs/ARCHITECTURE.md +554 -0
  224. package/skills/octocode-research/docs/FLOWS.md +577 -0
  225. package/skills/octocode-research/docs/OVERVIEW.md +564 -0
  226. package/skills/octocode-research/docs/SERVER_FLOWS.md +631 -0
  227. package/skills/octocode-research/ecosystem.config.cjs +88 -0
  228. package/skills/octocode-research/eslint.config.mjs +27 -0
  229. package/skills/octocode-research/package.json +84 -0
  230. package/skills/octocode-research/references/GUARDRAILS.md +40 -0
  231. package/skills/octocode-research/references/PARALLEL_AGENT_PROTOCOL.md +178 -0
  232. package/skills/octocode-research/references/roast-prompt.md +149 -0
  233. package/skills/octocode-research/scripts/server-init.d.ts +2 -0
  234. package/skills/octocode-research/scripts/server-init.js +2 -0
  235. package/skills/octocode-research/scripts/server.d.ts +8 -0
  236. package/skills/octocode-research/scripts/server.js +445 -0
  237. package/skills/octocode-research/src/__tests__/integration/circuitBreaker.test.ts +205 -0
  238. package/skills/octocode-research/src/__tests__/integration/routes.test.ts +374 -0
  239. package/skills/octocode-research/src/__tests__/unit/circuitBreaker.test.ts +245 -0
  240. package/skills/octocode-research/src/__tests__/unit/errorHandler.test.ts +183 -0
  241. package/skills/octocode-research/src/__tests__/unit/httpPreprocess.test.ts +157 -0
  242. package/skills/octocode-research/src/__tests__/unit/logger.test.ts +143 -0
  243. package/skills/octocode-research/src/__tests__/unit/queryParser.test.ts +130 -0
  244. package/skills/octocode-research/src/__tests__/unit/responseBuilder.test.ts +469 -0
  245. package/skills/octocode-research/src/__tests__/unit/retry.test.ts +205 -0
  246. package/skills/octocode-research/src/index.ts +186 -0
  247. package/skills/octocode-research/src/mcpCache.ts +49 -0
  248. package/skills/octocode-research/src/middleware/errorHandler.ts +65 -0
  249. package/skills/octocode-research/src/middleware/logger.ts +61 -0
  250. package/skills/octocode-research/src/middleware/queryParser.ts +115 -0
  251. package/skills/octocode-research/src/middleware/readiness.ts +17 -0
  252. package/skills/octocode-research/src/routes/github.ts +197 -0
  253. package/skills/octocode-research/src/routes/local.ts +175 -0
  254. package/skills/octocode-research/src/routes/lsp.ts +177 -0
  255. package/skills/octocode-research/src/routes/package.ts +127 -0
  256. package/skills/octocode-research/src/routes/prompts.ts +138 -0
  257. package/skills/octocode-research/src/routes/tools.ts +677 -0
  258. package/skills/octocode-research/src/server-init.ts +363 -0
  259. package/skills/octocode-research/src/server.ts +285 -0
  260. package/skills/octocode-research/src/types/errorGuards.ts +151 -0
  261. package/skills/octocode-research/src/types/express.d.ts +76 -0
  262. package/skills/octocode-research/src/types/guards.ts +98 -0
  263. package/skills/octocode-research/src/types/mcp.ts +119 -0
  264. package/skills/octocode-research/src/types/responses.ts +199 -0
  265. package/skills/octocode-research/src/types/toolTypes.ts +33 -0
  266. package/skills/octocode-research/src/utils/asyncTimeout.ts +116 -0
  267. package/skills/octocode-research/src/utils/circuitBreaker.ts +492 -0
  268. package/skills/octocode-research/src/utils/colors.ts +53 -0
  269. package/skills/octocode-research/src/utils/errorQueue.ts +71 -0
  270. package/skills/octocode-research/src/utils/logEmoji.ts +103 -0
  271. package/skills/octocode-research/src/utils/logger.ts +413 -0
  272. package/skills/octocode-research/src/utils/resilience.ts +169 -0
  273. package/skills/octocode-research/src/utils/responseBuilder.ts +495 -0
  274. package/skills/octocode-research/src/utils/responseFactory.ts +100 -0
  275. package/skills/octocode-research/src/utils/responseParser.ts +272 -0
  276. package/skills/octocode-research/src/utils/retry.ts +280 -0
  277. package/skills/octocode-research/src/utils/routeFactory.ts +117 -0
  278. package/skills/octocode-research/src/utils/url.ts +20 -0
  279. package/skills/octocode-research/src/validation/httpPreprocess.ts +155 -0
  280. package/skills/octocode-research/src/validation/index.ts +2 -0
  281. package/skills/octocode-research/src/validation/schemas.ts +578 -0
  282. package/skills/octocode-research/src/validation/toolCallSchema.ts +132 -0
  283. package/skills/octocode-research/tsconfig.json +21 -0
  284. package/skills/octocode-research/tsdown.config.ts +42 -0
  285. package/skills/octocode-research/vitest.config.ts +20 -0
  286. package/skills/octocode-researcher/SKILL.md +461 -0
  287. package/skills/octocode-researcher/references/fallbacks.md +120 -0
  288. package/skills/{octocode-local-search → octocode-researcher}/references/tool-reference.md +132 -49
  289. package/skills/{octocode-local-search → octocode-researcher}/references/workflow-patterns.md +204 -4
  290. package/skills/octocode-rfc-generator/SKILL.md +223 -0
  291. package/skills/octocode-rfc-generator/references/rfc-template.md +193 -0
  292. package/skills/octocode-roast/SKILL.md +63 -21
  293. package/skills/octocode-implement/SKILL.md +0 -293
  294. package/skills/octocode-implement/references/execution-phases.md +0 -317
  295. package/skills/octocode-implement/references/tool-reference.md +0 -403
  296. package/skills/octocode-implement/references/workflow-patterns.md +0 -385
  297. package/skills/octocode-local-search/SKILL.md +0 -449
  298. package/skills/octocode-pr-review/SKILL.md +0 -391
  299. package/skills/octocode-pr-review/references/domain-reviewers.md +0 -105
  300. package/skills/octocode-pr-review/references/execution-lifecycle.md +0 -116
  301. package/skills/octocode-pr-review/references/research-flows.md +0 -75
  302. package/skills/octocode-research/references/tool-reference.md +0 -304
  303. package/skills/octocode-research/references/workflow-patterns.md +0 -325
@@ -0,0 +1,182 @@
1
+ # Multi-Agent Parallelization & Swarm Strategy
2
+
3
+ ## When to Parallelize
4
+
5
+ | PR Size | Files | Mode | Agent Strategy |
6
+ |---------|-------|------|----------------|
7
+ | Small | ≤5 | Quick | No agents — single-pass review |
8
+ | Medium | 6-15 | Full | 2 parallel agents (Flow + Domains) |
9
+ | Large | 16-30 | Full | 3 parallel agents (Flow + Security + Domains) |
10
+ | XL | 30+ | Full | 4 parallel agents (Flow + Security + Architecture + Domains) |
11
+
12
+ **IF** Quick mode → FORBIDDEN to spawn agents. Single-pass only.
13
+ **IF** Full mode AND >5 files → MUST use parallel agents for Phase 4 (Analysis).
14
+
15
+ ---
16
+
17
+ ## Swarm Architecture
18
+
19
+ ```
20
+ ┌─────────────────────┐
21
+ │ ORCHESTRATOR (you) │
22
+ │ Phases 1-3, 5-6 │
23
+ └──────────┬──────────┘
24
+ │ Phase 4: Spawn agents
25
+ ┌──────────┼──────────┐──────────┐
26
+ ▼ ▼ ▼ ▼
27
+ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
28
+ │ Agent A │ │ Agent B │ │ Agent C │ │ Agent D │
29
+ │ Flow │ │ Security │ │ Arch + │ │ Guidelines│
30
+ │ Impact │ │ + Errors │ │ Quality │ │ + Dupes │
31
+ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘
32
+ │ │ │ │
33
+ └──────────┬──┴─────────────┴─────────────┘
34
+
35
+ ┌─────────────────────┐
36
+ │ ORCHESTRATOR │
37
+ │ Merge + Dedupe │
38
+ │ Phase 5-6 │
39
+ └─────────────────────┘
40
+ ```
41
+
42
+ **CRITICAL: All agent Task calls MUST be in a SINGLE message for true parallel execution.**
43
+
44
+ ---
45
+
46
+ ## Agent Definitions
47
+
48
+ ### Agent A: Flow Impact Analyst
49
+ - **Scope**: Flow Impact domain + blast radius mapping
50
+ - **Tools**: `localSearchCode` → `lspCallHierarchy(incoming)` → `lspFindReferences` → `githubSearchCode`
51
+ - **Task**: For every modified function/method/type in the diff:
52
+ 1. Call `localSearchCode` to get lineHint for each symbol
53
+ 2. Call `lspCallHierarchy(incoming, depth=1)` to find all callers
54
+ 3. Call `lspFindReferences` for changed types/interfaces
55
+ 4. Document: symbol name, file:line, caller count, breaking change (yes/no)
56
+ - **Output**: List of `{ symbol, file:line, callers: [{file:line, impact}], breaking: bool }`
57
+ - **Prompt template**:
58
+ ```
59
+ You are a Flow Impact Analyst. Review the following PR diff and trace ALL
60
+ modified functions/methods/types to find their callers and consumers.
61
+
62
+ PR diff: {diff_summary}
63
+ Modified symbols: {list_of_changed_functions_types}
64
+ Repo: {owner}/{repo}
65
+
66
+ For EACH modified symbol:
67
+ 1. Use localSearchCode(pattern="symbolName") to get lineHint
68
+ 2. Use lspCallHierarchy(symbolName, lineHint, direction="incoming") for functions
69
+ 3. Use lspFindReferences(symbolName, lineHint) for types/interfaces
70
+ 4. Document the blast radius
71
+
72
+ Return findings as structured list with file:line citations.
73
+ FORBIDDEN: Guessing lineHint. ALWAYS search first.
74
+ ```
75
+
76
+ ### Agent B: Security & Error Handling Reviewer
77
+ - **Scope**: Security scan + Error Handling domain
78
+ - **Tools**: `localSearchCode` → `githubGetFileContent(matchString=...)` → `localGetFileContent`
79
+ - **Task**:
80
+ 1. Scan changed files for: hardcoded secrets, SQL injection, XSS, data exposure, auth bypass
81
+ 2. Check error handling: swallowed exceptions, missing context, unclear messages
82
+ 3. Verify input validation on new endpoints/functions
83
+ 4. Check for regulatory compliance patterns (GDPR, HIPAA)
84
+ - **Output**: List of `{ issue, file:line, severity, confidence, fix }`
85
+ - **Prompt template**:
86
+ ```
87
+ You are a Security & Error Handling Reviewer. Scan the following PR diff
88
+ for security vulnerabilities and error handling issues.
89
+
90
+ PR diff: {diff_content}
91
+ Changed files: {file_list}
92
+
93
+ Security checks: injection, XSS, data exposure, auth bypass, hardcoded secrets
94
+ Error handling checks: swallowed exceptions, missing context, unclear messages
95
+
96
+ Use localSearchCode to find patterns, githubGetFileContent for context.
97
+ Return findings with file:line, severity, confidence, and fix.
98
+ ONLY flag issues in CHANGED code ('+' lines).
99
+ ```
100
+
101
+ ### Agent C: Architecture & Code Quality Reviewer
102
+ - **Scope**: Architecture domain + Code Quality domain + Performance domain
103
+ - **Tools**: `githubViewRepoStructure` → `localViewStructure` → `localSearchCode` → `githubGetFileContent`
104
+ - **Task**:
105
+ 1. Check changed code against repo patterns and conventions
106
+ 2. Detect: coupling, circular deps, wrong module placement, naming violations
107
+ 3. Performance: O(n²), blocking ops, missing cache, unbatched operations
108
+ 4. Check for TODO/FIXME in new code
109
+ - **Output**: List of `{ issue, domain, file:line, severity, confidence, fix }`
110
+ - **Prompt template**:
111
+ ```
112
+ You are an Architecture & Code Quality Reviewer. Analyze the following PR diff
113
+ for architectural issues, code quality problems, and performance concerns.
114
+
115
+ PR diff: {diff_content}
116
+ Changed files: {file_list}
117
+ Repo structure: {structure_summary}
118
+
119
+ Check: pattern violations, coupling, naming, O(n²), blocking ops, magic numbers
120
+ Use githubViewRepoStructure to understand repo layout.
121
+ Use localSearchCode to find existing patterns for comparison.
122
+ Return findings with file:line, domain, severity, confidence, and fix.
123
+ ONLY flag issues in CHANGED code ('+' lines).
124
+ ```
125
+
126
+ ### Agent D: Guidelines & Duplicate Code Reviewer (only if guidelines loaded)
127
+ - **Scope**: Guidelines compliance + Duplicate Code domain
128
+ - **Tools**: `localSearchCode` → `githubSearchCode` → `localGetFileContent` → `githubGetFileContent`
129
+ - **Task**:
130
+ 1. Check each changed file against loaded guidelines (from Phase 1)
131
+ 2. Search for existing utilities/patterns that new code could reuse
132
+ 3. Flag DRY violations across the codebase
133
+ - **Output**: List of `{ guideline_source, rule, status: PASS/VIOLATION, file:line }` + duplicate findings
134
+ - **Prompt template**:
135
+ ```
136
+ You are a Guidelines & Duplicate Code Reviewer.
137
+
138
+ Guidelines context:
139
+ {guidelines_context_from_phase_1}
140
+
141
+ PR diff: {diff_content}
142
+ Changed files: {file_list}
143
+
144
+ Task 1: For each changed file, check compliance against every loaded guideline rule.
145
+ Task 2: Use localSearchCode/githubSearchCode to find existing utilities that new code duplicates.
146
+ Return: guidelines compliance table + duplicate code findings with file:line.
147
+ ```
148
+
149
+ ---
150
+
151
+ ## Scaling Rules
152
+
153
+ | Agents | Condition | Which Agents |
154
+ |--------|-----------|-------------|
155
+ | 0 | Quick mode OR ≤5 files | None — single-pass |
156
+ | 2 | 6-15 files, no guidelines | A (Flow) + C (Arch+Quality) |
157
+ | 3 | 16-30 files OR guidelines loaded | A (Flow) + B (Security) + C (Arch+Quality) |
158
+ | 3 | 6-15 files + guidelines loaded | A (Flow) + C (Arch+Quality) + D (Guidelines) |
159
+ | 4 | 30+ files + guidelines loaded | A + B + C + D (all agents) |
160
+
161
+ ---
162
+
163
+ ## Merge Protocol (Phase 5 — Orchestrator)
164
+
165
+ After all agents return, the orchestrator MUST:
166
+
167
+ 1. **Collect**: Gather all findings from all agents into a single list
168
+ 2. **Dedupe**: Remove findings with the same root cause or same file:line
169
+ - **IF** two agents report the same issue → keep the one with higher confidence
170
+ - **IF** same file:line but different domains → merge into single finding, list both domains
171
+ 3. **Cross-check**: Verify agent findings against existing PR comments (Phase 2)
172
+ 4. **Prioritize**: Sort by severity (HIGH → MED → LOW), then by domain weight:
173
+ - Security > Bug > Flow Impact > Architecture > Performance > Quality > Duplicates
174
+ 5. **Cap**: Select top ~5-7 most impactful findings
175
+ 6. **Enrich**: For each finding, ensure file:line + confidence + code fix exists
176
+
177
+ **FORBIDDEN:**
178
+ - Spawning agents in Quick mode
179
+ - Spawning >4 agents (diminishing returns, context overhead)
180
+ - Agents modifying files or writing output directly
181
+ - Spawning agents sequentially (MUST be single-message parallel)
182
+ - Proceeding to Phase 6 before ALL agents have returned
@@ -0,0 +1,26 @@
1
+ # Review Guidelines
2
+
3
+ <confidence>
4
+
5
+ | Level | Certainty | Action |
6
+ |-------|-----------|--------|
7
+ | **HIGH** | Verified issue exists | MUST include |
8
+ | **MED** | Likely issue, missing context | MUST include with caveat |
9
+ | **LOW** | Uncertain | Investigate more OR skip |
10
+
11
+ **Note**: Confidence is NOT Severity. HIGH confidence typo = Low Priority. LOW confidence security flaw = flag but mark uncertain.
12
+ </confidence>
13
+
14
+ <review_mindset>
15
+ **Core Principle: Focus on CHANGED Code Only**
16
+ - **Added code**: Lines with '+' prefix
17
+ - **Modified code**: New implementation ('+') while considering removed context
18
+ - **Deleted code**: Only comment if removal creates new risks
19
+
20
+ **MUST include when**: HIGH/MED confidence + NEW code ('+' prefix) + real problem + actionable fix
21
+ **FORBIDDEN to suggest when**: LOW confidence, unchanged code, style-only, caught by linters/compilers, already commented by others
22
+ </review_mindset>
23
+
24
+ <structural_code_vision>
25
+ **Think Like a Parser**: Visualize AST (Entry → Functions → Imports/Calls). Trace `import {X} from 'Y'` → GO TO 'Y'. Follow flow: Entry → Propagation → Termination. Ignore noise.
26
+ </structural_code_vision>
@@ -0,0 +1,40 @@
1
+ # Verification Checklist
2
+
3
+ <verification>
4
+ Before delivering review, ALL items MUST be checked:
5
+
6
+ **Target & Mode:**
7
+ - [ ] Review target determined (PR Mode or Local Mode)
8
+ - [ ] **Local Mode**: `ENABLE_LOCAL=true` verified (local tools responding)
9
+
10
+ **Phase Completion — PR Mode:**
11
+ - [ ] Phase 1: User asked for guidelines/context files
12
+ - [ ] Phase 2: PR metadata, diff, and comments fetched via Octocode MCP
13
+ - [ ] Phase 3: TL;DR summary presented, user checkpoint completed
14
+ - [ ] Phase 4: All search queries executed, flow impact analyzed (Full mode)
15
+ - [ ] Phase 5: Findings deduplicated, verified against guidelines
16
+ - [ ] Phase 6: Chat summary presented, user asked before doc creation
17
+
18
+ **Phase Completion — Local Mode:**
19
+ - [ ] Phase 1: User asked for guidelines/context files
20
+ - [ ] Phase 2: `git status` + `git diff` collected, changed files enumerated via local tools
21
+ - [ ] Phase 3: TL;DR summary (local template) presented, user checkpoint completed
22
+ - [ ] Phase 4: All search queries executed via `local*` + `lsp*` tools, flow impact analyzed (Full mode)
23
+ - [ ] Phase 5: Findings deduplicated, verified against guidelines
24
+ - [ ] Phase 6: Chat summary presented, user asked before doc creation
25
+
26
+ **Finding Quality:**
27
+ - [ ] All findings cite exact `file:line` locations
28
+ - [ ] Every finding has an actionable fix with code diff
29
+ - [ ] Confidence level (HIGH/MED) assigned to each finding
30
+ - [ ] Findings capped per Phase 5 limit
31
+ - [ ] No duplicates with existing PR comments (PR Mode only)
32
+ - [ ] Previous review comments verified for resolution (PR Mode only)
33
+
34
+ **Guidelines & Tools:**
35
+ - [ ] Guidelines loaded and applied throughout analysis (if provided)
36
+ - [ ] Guidelines Compliance section included in report (if guidelines loaded)
37
+ - [ ] All code research done via Octocode MCP tools (not shell commands for reading/searching)
38
+ - [ ] Flow impact analyzed for all modified functions (LSP tools in Local Mode)
39
+ - [ ] Security issues flagged prominently
40
+ </verification>
@@ -0,0 +1,46 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(./install.sh:*)",
5
+ "Bash(curl:*)",
6
+ "Bash(npm run build:*)",
7
+ "Bash(tree:*)",
8
+ "Bash(npm test:*)",
9
+ "Skill(octocode-research)",
10
+ "Bash(npm run server:*)",
11
+ "Bash(npm run server:start:*)",
12
+ "Bash(npm install)",
13
+ "Bash(grep:*)",
14
+ "Bash(npm run build:dev:*)",
15
+ "Bash(npm install:*)",
16
+ "Bash(./cli tools/info/githubViewRepoStructure:*)",
17
+ "Bash(./cli tools/info/githubSearchCode:*)",
18
+ "Bash(lsof:*)",
19
+ "Bash(xargs kill:*)",
20
+ "Bash(./cli health:*)",
21
+ "Bash(./cli system:*)",
22
+ "Bash(./cli prompts:*)",
23
+ "Bash(./cli localSearchCode:*)",
24
+ "Bash(./cli prompts/info/research:*)",
25
+ "mcp__octocode-local__localViewStructure",
26
+ "mcp__octocode-local__localSearchCode",
27
+ "mcp__octocode-local__lspFindReferences",
28
+ "mcp__octocode-local__localGetFileContent",
29
+ "Bash(npx tsc:*)",
30
+ "Bash(npm run lint:*)",
31
+ "Bash(npx tsdown)",
32
+ "Bash(xargs:*)",
33
+ "Bash(npm run server:stop:*)",
34
+ "Bash(yarn build)",
35
+ "Bash(yarn test:*)",
36
+ "Bash(yarn lint:fix:*)",
37
+ "mcp__octocode__packageSearch",
38
+ "Bash(npm run server-init:*)",
39
+ "mcp__octocode-local__localFindFiles",
40
+ "Bash(python3:*)",
41
+ "Bash(# Test: read a file with sensitive content curl -s -X POST http://localhost:1987/tools/call/localGetFileContent -H \"\"Content-Type: application/json\"\" -d ''{\"\"queries\"\":[{\"\"path\"\":\"\"/etc/hosts\"\",\"\"fullContent\"\":true}]}'' 2>&1 | python3 -m json.tool)",
42
+ "Bash(# Test: URL encoded path traversal curl -s -X POST http://localhost:1987/tools/call/localSearchCode -H \"\"Content-Type: application/json\"\" -d ''{\"\"queries\"\":[{\"\"pattern\"\":\"\"root\"\",\"\"path\"\":\"\"/etc\"\"}]}'' 2>&1 | python3 -m json.tool)",
43
+ "Bash(# Test: can we access user home directory files? \\(just check if /Users/guybary is allowed root\\) curl -s -X POST http://localhost:1987/tools/call/localSearchCode -H \"\"Content-Type: application/json\"\" -d ''{\"\"queries\"\":[{\"\"pattern\"\":\"\"password\"\",\"\"path\"\":\"\"/Users/guybary\"\",\"\"maxFiles\"\":1,\"\"filesOnly\"\":true}]}'' 2>&1 | python3 -m json.tool)"
44
+ ]
45
+ }
46
+ }
@@ -0,0 +1,312 @@
1
+ # Plan: Fix CODE_REVIEW_FINDINGS Issues
2
+
3
+ ## Summary
4
+
5
+ Fix 9 verified issues from the code review findings in the `skills/octocode-research` package. Prioritized by security impact and type safety, with code quality improvements deferred to later phases.
6
+
7
+ ---
8
+
9
+ ## Research Findings
10
+
11
+ See [research.md](./research.md) for detailed analysis.
12
+
13
+ **Key Patterns Discovered:**
14
+ - Server binding issue is a single-line fix
15
+ - Type safety issues require generic type parameters
16
+ - Fire-and-forget patterns are intentional but need error visibility
17
+ - File splitting is straightforward based on existing code structure
18
+
19
+ ---
20
+
21
+ ## Implementation Steps
22
+
23
+ ### Phase 1: Security Fixes (HIGH Priority)
24
+
25
+ #### 1. [ ] Bind server to localhost only
26
+ **File:** `src/server.ts:118`
27
+
28
+ ```typescript
29
+ // Before
30
+ const httpServer = app.listen(PORT);
31
+
32
+ // After
33
+ const httpServer = app.listen(PORT, '127.0.0.1');
34
+ ```
35
+
36
+ **Validation:** Server should only be accessible from localhost.
37
+
38
+ ---
39
+
40
+ #### 2. [ ] Remove path from 404 error response
41
+ **File:** `src/server.ts:64-67`
42
+
43
+ ```typescript
44
+ // Before
45
+ res.status(404).json({
46
+ success: false,
47
+ error: {
48
+ message: `Route not found: ${req.method} ${req.path}`,
49
+
50
+ // After
51
+ res.status(404).json({
52
+ success: false,
53
+ error: {
54
+ message: 'Route not found',
55
+ code: 'NOT_FOUND'
56
+ }
57
+ });
58
+ ```
59
+
60
+ **Validation:** 404 responses should not include request details.
61
+
62
+ ---
63
+
64
+ #### 3. [ ] Guard or remove debug logging
65
+ **File:** `src/middleware/queryParser.ts:57`
66
+
67
+ **Option A - Environment guard:**
68
+ ```typescript
69
+ if (process.env.NODE_ENV === 'development') {
70
+ console.debug('[QueryParser] JSON parsing failed, trying single query mode', {
71
+ error: e instanceof Error ? e.message : String(e),
72
+ });
73
+ }
74
+ ```
75
+
76
+ **Option B - Remove entirely (recommended):**
77
+ ```typescript
78
+ // Remove the console.debug block - the code handles the fallback silently
79
+ ```
80
+
81
+ **Validation:** No user input logged in production.
82
+
83
+ ---
84
+
85
+ #### 4. [ ] Ensure stack traces not exposed to clients
86
+ **File:** `src/utils/logger.ts:210`
87
+
88
+ ```typescript
89
+ // Before
90
+ console.error(errorLog(`[ERROR] ${message}`), error || '');
91
+
92
+ // After - only log error message, not full stack in production
93
+ const errorDetail = process.env.NODE_ENV === 'development'
94
+ ? error
95
+ : (error instanceof Error ? error.message : String(error));
96
+ console.error(errorLog(`[ERROR] ${message}`), errorDetail);
97
+ ```
98
+
99
+ **Validation:** Stack traces only in development mode.
100
+
101
+ ---
102
+
103
+ ### Phase 2: Type Safety Fixes (HIGH Priority)
104
+
105
+ #### 5. [ ] Add proper types to toQueryParams
106
+ **File:** `src/types/toolTypes.ts:14`
107
+
108
+ ```typescript
109
+ // Before
110
+ export function toQueryParams(validated: any): any {
111
+
112
+ // After
113
+ export interface QueryParams {
114
+ [key: string]: unknown;
115
+ }
116
+
117
+ export function toQueryParams<T extends Record<string, unknown>>(
118
+ validated: T
119
+ ): QueryParams {
120
+ // Implementation - transform validated schema output to query params
121
+ const result: QueryParams = {};
122
+ for (const [key, value] of Object.entries(validated)) {
123
+ if (value !== undefined) {
124
+ result[key] = value;
125
+ }
126
+ }
127
+ return result;
128
+ }
129
+ ```
130
+
131
+ **Validation:** TypeScript compilation with strict mode.
132
+
133
+ ---
134
+
135
+ #### 6. [ ] Add proper types to ToolFn
136
+ **File:** `src/routes/tools.ts:350`
137
+
138
+ ```typescript
139
+ // Before
140
+ type ToolFn = (params: { queries: any[] }) => Promise<any>;
141
+
142
+ // After
143
+ import { ToolResponse } from '../types/responses';
144
+
145
+ interface ToolQuery {
146
+ mainResearchGoal?: string;
147
+ researchGoal?: string;
148
+ reasoning?: string;
149
+ [key: string]: unknown;
150
+ }
151
+
152
+ type ToolFn<TQuery extends ToolQuery = ToolQuery> = (
153
+ params: { queries: TQuery[] }
154
+ ) => Promise<ToolResponse>;
155
+ ```
156
+
157
+ **Note:** This may require updating tool handler type casts. Consider using generics for specific tools.
158
+
159
+ **Validation:** TypeScript compilation, all tool registrations compile.
160
+
161
+ ---
162
+
163
+ ### Phase 3: Code Quality (MEDIUM Priority)
164
+
165
+ #### 7. [ ] Export isNonEmptyString guard
166
+ **File:** `src/types/guards.ts:11`
167
+
168
+ ```typescript
169
+ // Before
170
+ function isNonEmptyString(value: unknown): value is string {
171
+
172
+ // After
173
+ export function isNonEmptyString(value: unknown): value is string {
174
+ ```
175
+
176
+ **Alternative:** If intentionally private, add comment:
177
+ ```typescript
178
+ /** @internal Used only by isStringArray */
179
+ function isNonEmptyString(value: unknown): value is string {
180
+ ```
181
+
182
+ **Validation:** If exported, verify no naming conflicts.
183
+
184
+ ---
185
+
186
+ #### 8. [ ] Create bounded error queue for fire-and-forget
187
+ **File:** Create `src/utils/errorQueue.ts`
188
+
189
+ ```typescript
190
+ /**
191
+ * Bounded queue for fire-and-forget operation errors.
192
+ * Provides visibility into async errors without blocking main flow.
193
+ */
194
+ class ErrorQueue {
195
+ private errors: Array<{ timestamp: Date; error: Error; context?: string }> = [];
196
+ private readonly maxSize: number;
197
+
198
+ constructor(maxSize = 100) {
199
+ this.maxSize = maxSize;
200
+ }
201
+
202
+ push(error: unknown, context?: string): void {
203
+ const normalizedError = error instanceof Error ? error : new Error(String(error));
204
+
205
+ this.errors.push({
206
+ timestamp: new Date(),
207
+ error: normalizedError,
208
+ context
209
+ });
210
+
211
+ // Bounded: remove oldest when full
212
+ if (this.errors.length > this.maxSize) {
213
+ this.errors.shift();
214
+ }
215
+ }
216
+
217
+ getRecent(count = 10): Array<{ timestamp: Date; error: Error; context?: string }> {
218
+ return this.errors.slice(-count);
219
+ }
220
+
221
+ clear(): void {
222
+ this.errors = [];
223
+ }
224
+
225
+ get size(): number {
226
+ return this.errors.length;
227
+ }
228
+ }
229
+
230
+ export const errorQueue = new ErrorQueue();
231
+ ```
232
+
233
+ **Update fire-and-forget locations:**
234
+ ```typescript
235
+ // Before
236
+ logSessionError(toolName, errorCode).catch(() => {});
237
+
238
+ // After
239
+ import { errorQueue } from '../utils/errorQueue';
240
+ logSessionError(toolName, errorCode).catch(err => errorQueue.push(err, 'logSessionError'));
241
+ ```
242
+
243
+ **Files to update:**
244
+ - `src/middleware/errorHandler.ts:37`
245
+ - `src/routes/prompts.ts:110`
246
+ - `src/routes/tools.ts:522`
247
+ - `src/server.ts:136`
248
+ - `src/utils/circuitBreaker.ts:174, 186`
249
+ - `src/utils/logger.ts:127`
250
+
251
+ **Validation:** Error queue populated on failures, main flow not blocked.
252
+
253
+ ---
254
+
255
+ ### Phase 4: Refactoring (LOW Priority - Future)
256
+
257
+ #### 9. [ ] Split tools.ts into smaller modules
258
+ **Current:** `src/routes/tools.ts` (555 lines)
259
+
260
+ **Proposed structure:**
261
+ ```
262
+ src/routes/tools/
263
+ index.ts - Route definitions, exports
264
+ handlers.ts - Tool execution logic
265
+ registry.ts - Tool registration and lookup
266
+ types.ts - ToolFn and related types
267
+ ```
268
+
269
+ **Approach:**
270
+ 1. Create `src/routes/tools/` directory
271
+ 2. Extract `ToolFn` type and registry to `registry.ts`
272
+ 3. Extract handler logic to `handlers.ts`
273
+ 4. Keep route definitions in `index.ts`
274
+ 5. Update imports in dependent files
275
+
276
+ **Validation:** All existing tests pass, no functional changes.
277
+
278
+ ---
279
+
280
+ ## Risk Areas
281
+
282
+ | Risk | Mitigation |
283
+ |------|------------|
284
+ | Type changes break existing code | Incremental changes with compilation checks |
285
+ | Localhost binding breaks remote testing | Document `--host` flag for remote access if needed |
286
+ | Error queue memory growth | Bounded queue with max 100 entries |
287
+ | File splitting breaks imports | Update all import paths, run full test suite |
288
+
289
+ ---
290
+
291
+ ## Validation Checklist
292
+
293
+ - [ ] `npm run build` passes
294
+ - [ ] `npm run lint` passes
295
+ - [ ] `npm test` passes
296
+ - [ ] Server only accessible from localhost
297
+ - [ ] 404 responses don't include paths
298
+ - [ ] No TypeScript `any` in modified files
299
+ - [ ] Fire-and-forget errors captured in queue
300
+
301
+ ---
302
+
303
+ ## Implementation Order
304
+
305
+ 1. **Phase 1** - Security fixes (steps 1-4) - Do first, low risk
306
+ 2. **Phase 2** - Type safety (steps 5-6) - May require iteration
307
+ 3. **Phase 3** - Code quality (steps 7-8) - Independent of above
308
+ 4. **Phase 4** - Refactoring (step 9) - Defer until after validation
309
+
310
+ ---
311
+
312
+ Created by Octocode MCP https://octocode.ai