octocode-cli 1.2.8 → 1.2.9

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 (282) hide show
  1. package/README.md +42 -35
  2. package/out/octocode-cli.js +36 -11767
  3. package/package.json +36 -36
  4. package/skills/README.md +42 -114
  5. package/skills/{octocode-code-engineer → octocode-engineer}/.claude/settings.local.json +2 -1
  6. package/skills/octocode-engineer/README.md +99 -0
  7. package/skills/octocode-engineer/SKILL.md +499 -0
  8. package/skills/octocode-engineer/build.mjs +29 -0
  9. package/skills/{octocode-code-engineer → octocode-engineer}/eslint.config.mjs +3 -13
  10. package/skills/{octocode-code-engineer → octocode-engineer}/package.json +28 -27
  11. package/skills/octocode-engineer/references/ast-reference.md +166 -0
  12. package/skills/{octocode-code-engineer → octocode-engineer}/references/cli-reference.md +80 -6
  13. package/skills/octocode-engineer/references/externals.md +86 -0
  14. package/skills/{octocode-code-engineer → octocode-engineer}/references/output-files.md +46 -6
  15. package/skills/octocode-engineer/references/quality-indicators.md +202 -0
  16. package/skills/octocode-engineer/references/tool-workflows.md +298 -0
  17. package/skills/octocode-engineer/references/validation-playbooks.md +99 -0
  18. package/skills/octocode-engineer/scripts/ast/search.js +45 -0
  19. package/skills/octocode-engineer/scripts/ast/tree-search.js +27 -0
  20. package/skills/octocode-engineer/scripts/index.js +173 -0
  21. package/skills/octocode-engineer/scripts/run.js +179 -0
  22. package/skills/octocode-engineer/src/analysis/dependencies.ts +378 -0
  23. package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/discovery.test.ts +57 -0
  24. package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/discovery.ts +43 -0
  25. package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/search.test.ts +113 -0
  26. package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/search.ts +64 -1
  27. package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/tree-sitter.test.ts +118 -2
  28. package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/tree-sitter.ts +65 -3
  29. package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/ts-analyzer.test.ts +281 -1
  30. package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/ts-analyzer.ts +173 -3
  31. package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/security.test.ts +73 -0
  32. package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/security.ts +62 -4
  33. package/skills/octocode-engineer/src/detector-gating.test.ts +59 -0
  34. package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/code-quality.ts +342 -0
  35. package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/index.ts +8 -0
  36. package/skills/{octocode-code-engineer → octocode-engineer}/src/index.test.ts +565 -11
  37. package/skills/octocode-engineer/src/index.ts +468 -0
  38. package/skills/octocode-engineer/src/pipeline/affected.test.ts +147 -0
  39. package/skills/octocode-engineer/src/pipeline/affected.ts +68 -0
  40. package/skills/octocode-engineer/src/pipeline/baseline.test.ts +276 -0
  41. package/skills/octocode-engineer/src/pipeline/baseline.ts +76 -0
  42. package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline/cli.test.ts +300 -53
  43. package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline/cli.ts +180 -36
  44. package/skills/octocode-engineer/src/pipeline/config-loader.test.ts +264 -0
  45. package/skills/octocode-engineer/src/pipeline/config-loader.ts +109 -0
  46. package/skills/octocode-engineer/src/pipeline/create-options.ts +55 -0
  47. package/skills/octocode-engineer/src/pipeline/health-score.test.ts +65 -0
  48. package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline/main.ts +130 -17
  49. package/skills/octocode-engineer/src/pipeline/progress.ts +51 -0
  50. package/skills/octocode-engineer/src/pipeline/reporters.test.ts +155 -0
  51. package/skills/octocode-engineer/src/pipeline/reporters.ts +64 -0
  52. package/skills/octocode-engineer/src/reporting/graph-features.test.ts +279 -0
  53. package/skills/{octocode-code-engineer → octocode-engineer}/src/reporting/output-contract.test.ts +6 -0
  54. package/skills/octocode-engineer/src/reporting/summary-md.test.ts +1066 -0
  55. package/skills/octocode-engineer/src/reporting/summary-md.ts +1604 -0
  56. package/skills/{octocode-code-engineer → octocode-engineer}/src/reporting/writer.ts +136 -13
  57. package/skills/octocode-engineer/src/run.ts +78 -0
  58. package/skills/{octocode-code-engineer → octocode-engineer}/src/sanity.test.ts +1 -1
  59. package/skills/octocode-engineer/src/types/analysis.ts +25 -0
  60. package/skills/octocode-engineer/src/types/collectors.ts +134 -0
  61. package/skills/{octocode-code-engineer → octocode-engineer}/src/types/constants.ts +75 -41
  62. package/skills/octocode-engineer/src/types/core.ts +203 -0
  63. package/skills/octocode-engineer/src/types/dependency.ts +215 -0
  64. package/skills/octocode-engineer/src/types/file-entry.ts +108 -0
  65. package/skills/octocode-engineer/src/types/findings.ts +105 -0
  66. package/skills/{octocode-code-engineer → octocode-engineer}/src/types/index.ts +60 -30
  67. package/skills/octocode-engineer/src/types/tree-sitter.ts +38 -0
  68. package/skills/{octocode-code-engineer → octocode-engineer}/tsconfig.json +1 -0
  69. package/skills/octocode-research/.octocode/scan/.cache/analysis-cache.json +1 -0
  70. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/architecture.json +1 -0
  71. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/ast-trees.txt +5566 -0
  72. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/code-quality.json +1 -0
  73. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/dead-code.json +1 -0
  74. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/file-inventory.json +1 -0
  75. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/findings.json +1 -0
  76. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/graph.md +189 -0
  77. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/security.json +1 -0
  78. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/summary.json +1 -0
  79. package/skills/octocode-research/.octocode/scan/2026-03-22T10-32-27-073Z/summary.md +265 -0
  80. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/architecture.json +1 -0
  81. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/ast-trees.txt +5555 -0
  82. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/code-quality.json +1 -0
  83. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/dead-code.json +1 -0
  84. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/file-inventory.json +1 -0
  85. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/findings.json +1 -0
  86. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/graph.md +190 -0
  87. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/security.json +1 -0
  88. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/summary.json +1 -0
  89. package/skills/octocode-research/.octocode/scan/2026-03-22T10-40-10-469Z/summary.md +265 -0
  90. package/skills/octocode-research/CHANGELOG.md +60 -0
  91. package/skills/octocode-research/README.md +102 -388
  92. package/skills/octocode-research/SKILL.md +169 -498
  93. package/skills/octocode-research/package.json +19 -31
  94. package/skills/octocode-research/references/PARALLEL_AGENT_PROTOCOL.md +19 -0
  95. package/skills/octocode-research/references/SESSION_MANAGEMENT.md +38 -0
  96. package/skills/octocode-research/scripts/server-init.js +1 -1
  97. package/skills/octocode-research/scripts/server.d.ts +2 -1
  98. package/skills/octocode-research/scripts/server.js +329 -233
  99. package/skills/octocode-research/src/__tests__/integration/promptsRoutes.test.ts +180 -0
  100. package/skills/octocode-research/src/__tests__/integration/serverHttp.test.ts +221 -0
  101. package/skills/octocode-research/src/__tests__/integration/serverLifecycle.test.ts +194 -0
  102. package/skills/octocode-research/src/__tests__/integration/toolsRoutes.test.ts +501 -0
  103. package/skills/octocode-research/src/__tests__/unit/readiness.test.ts +61 -0
  104. package/skills/octocode-research/src/__tests__/unit/resilience.test.ts +192 -0
  105. package/skills/octocode-research/src/__tests__/unit/responseFactory.test.ts +172 -0
  106. package/skills/octocode-research/src/__tests__/unit/responseParser.test.ts +288 -0
  107. package/skills/octocode-research/src/__tests__/unit/schemas.test.ts +509 -0
  108. package/skills/octocode-research/src/index.ts +4 -124
  109. package/skills/octocode-research/src/middleware/queryParser.ts +0 -26
  110. package/skills/octocode-research/src/routes/lsp.ts +58 -59
  111. package/skills/octocode-research/src/routes/package.ts +35 -65
  112. package/skills/octocode-research/src/routes/prompts.ts +3 -3
  113. package/skills/octocode-research/src/routes/tools.ts +8 -20
  114. package/skills/octocode-research/src/server-init.ts +30 -237
  115. package/skills/octocode-research/src/server.ts +50 -23
  116. package/skills/octocode-research/src/types/errorGuards.ts +9 -80
  117. package/skills/octocode-research/src/types/guards.ts +0 -28
  118. package/skills/octocode-research/src/types/mcp.ts +11 -66
  119. package/skills/octocode-research/src/types/responses.ts +11 -129
  120. package/skills/octocode-research/src/utils/circuitBreaker.ts +0 -21
  121. package/skills/octocode-research/src/utils/logger.ts +1 -97
  122. package/skills/octocode-research/src/utils/resilience.ts +2 -12
  123. package/skills/octocode-research/src/utils/responseFactory.ts +0 -42
  124. package/skills/octocode-research/src/utils/responseParser.ts +3 -25
  125. package/skills/octocode-research/src/utils/retry.ts +0 -63
  126. package/skills/octocode-research/src/utils/routeFactory.ts +1 -1
  127. package/skills/octocode-research/src/validation/httpPreprocess.ts +0 -3
  128. package/skills/octocode-research/src/validation/index.ts +0 -1
  129. package/skills/octocode-research/src/validation/schemas.ts +0 -63
  130. package/skills/octocode-research/src/validation/toolCallSchema.ts +3 -3
  131. package/skills/octocode-research/tsdown.config.ts +4 -0
  132. package/skills/octocode-research/vitest.config.ts +3 -0
  133. package/skills/octocode-code-engineer/.plan/VALIDATED_PLAN.md +0 -223
  134. package/skills/octocode-code-engineer/README.md +0 -178
  135. package/skills/octocode-code-engineer/SKILL.md +0 -418
  136. package/skills/octocode-code-engineer/minify-scripts.mjs +0 -32
  137. package/skills/octocode-code-engineer/references/agent-ast-reading-rfc.md +0 -95
  138. package/skills/octocode-code-engineer/references/architecture-techniques.md +0 -121
  139. package/skills/octocode-code-engineer/references/ast-search.md +0 -210
  140. package/skills/octocode-code-engineer/references/ast-tree-search.md +0 -151
  141. package/skills/octocode-code-engineer/references/concepts.md +0 -107
  142. package/skills/octocode-code-engineer/references/finding-categories.md +0 -128
  143. package/skills/octocode-code-engineer/references/improvement-roadmap.md +0 -304
  144. package/skills/octocode-code-engineer/references/playbooks.md +0 -204
  145. package/skills/octocode-code-engineer/references/present-results.md +0 -136
  146. package/skills/octocode-code-engineer/references/tool-workflows.md +0 -566
  147. package/skills/octocode-code-engineer/references/validate-investigate.md +0 -225
  148. package/skills/octocode-code-engineer/scripts/analysis/dependencies.js +0 -1
  149. package/skills/octocode-code-engineer/scripts/analysis/dependency-summary.js +0 -1
  150. package/skills/octocode-code-engineer/scripts/analysis/discovery.js +0 -1
  151. package/skills/octocode-code-engineer/scripts/analysis/graph-analytics.js +0 -1
  152. package/skills/octocode-code-engineer/scripts/analysis/semantic.js +0 -1
  153. package/skills/octocode-code-engineer/scripts/ast/helpers.js +0 -1
  154. package/skills/octocode-code-engineer/scripts/ast/metrics.js +0 -1
  155. package/skills/octocode-code-engineer/scripts/ast/search.js +0 -2
  156. package/skills/octocode-code-engineer/scripts/ast/tree-search.js +0 -2
  157. package/skills/octocode-code-engineer/scripts/ast/tree-sitter.js +0 -1
  158. package/skills/octocode-code-engineer/scripts/ast/ts-analyzer.js +0 -1
  159. package/skills/octocode-code-engineer/scripts/collectors/chains.js +0 -1
  160. package/skills/octocode-code-engineer/scripts/collectors/effects.js +0 -1
  161. package/skills/octocode-code-engineer/scripts/collectors/input-sources.js +0 -1
  162. package/skills/octocode-code-engineer/scripts/collectors/performance.js +0 -1
  163. package/skills/octocode-code-engineer/scripts/collectors/prototype-pollution.js +0 -1
  164. package/skills/octocode-code-engineer/scripts/collectors/security.js +0 -1
  165. package/skills/octocode-code-engineer/scripts/collectors/test-profile.js +0 -1
  166. package/skills/octocode-code-engineer/scripts/common/is-direct-run.js +0 -1
  167. package/skills/octocode-code-engineer/scripts/common/utils.js +0 -1
  168. package/skills/octocode-code-engineer/scripts/detectors/code-quality.js +0 -1
  169. package/skills/octocode-code-engineer/scripts/detectors/cohesion.js +0 -1
  170. package/skills/octocode-code-engineer/scripts/detectors/coupling.js +0 -1
  171. package/skills/octocode-code-engineer/scripts/detectors/cycle.js +0 -1
  172. package/skills/octocode-code-engineer/scripts/detectors/dead-code.js +0 -1
  173. package/skills/octocode-code-engineer/scripts/detectors/import-style.js +0 -1
  174. package/skills/octocode-code-engineer/scripts/detectors/index.js +0 -1
  175. package/skills/octocode-code-engineer/scripts/detectors/security.js +0 -1
  176. package/skills/octocode-code-engineer/scripts/detectors/semantic.js +0 -1
  177. package/skills/octocode-code-engineer/scripts/detectors/shared.js +0 -1
  178. package/skills/octocode-code-engineer/scripts/detectors/test-quality.js +0 -1
  179. package/skills/octocode-code-engineer/scripts/index.js +0 -1
  180. package/skills/octocode-code-engineer/scripts/pipeline/cache.js +0 -1
  181. package/skills/octocode-code-engineer/scripts/pipeline/cli.js +0 -1
  182. package/skills/octocode-code-engineer/scripts/pipeline/main.js +0 -2
  183. package/skills/octocode-code-engineer/scripts/reporting/analysis.js +0 -1
  184. package/skills/octocode-code-engineer/scripts/reporting/summary-md.js +0 -1
  185. package/skills/octocode-code-engineer/scripts/reporting/writer.js +0 -1
  186. package/skills/octocode-code-engineer/scripts/types/constants.js +0 -1
  187. package/skills/octocode-code-engineer/scripts/types/index.js +0 -1
  188. package/skills/octocode-code-engineer/scripts/types/interfaces.js +0 -1
  189. package/skills/octocode-code-engineer/src/analysis/dependencies.ts +0 -406
  190. package/skills/octocode-code-engineer/src/index.ts +0 -403
  191. package/skills/octocode-code-engineer/src/reporting/summary-md.test.ts +0 -421
  192. package/skills/octocode-code-engineer/src/reporting/summary-md.ts +0 -714
  193. package/skills/octocode-code-engineer/src/types/interfaces.ts +0 -682
  194. package/skills/octocode-research/src/types/toolTypes.ts +0 -33
  195. package/skills/octocode-research/src/utils/logEmoji.ts +0 -103
  196. /package/skills/{octocode-code-engineer → octocode-engineer}/.octocode/rfc/RFC-code-engineer-weakness-fixes.md +0 -0
  197. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/architecture.ts.html +0 -0
  198. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/ast-helpers.ts.html +0 -0
  199. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/ast-search.ts.html +0 -0
  200. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/base.css +0 -0
  201. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/block-navigation.js +0 -0
  202. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/cache.ts.html +0 -0
  203. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/cli.ts.html +0 -0
  204. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/clover.xml +0 -0
  205. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/collect-effects.ts.html +0 -0
  206. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/collect-input-sources.ts.html +0 -0
  207. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/collect-performance.ts.html +0 -0
  208. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/collect-prototype-pollution.ts.html +0 -0
  209. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/collect-security.ts.html +0 -0
  210. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/collect-test-profile.ts.html +0 -0
  211. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/coverage-final.json +0 -0
  212. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/dependencies.ts.html +0 -0
  213. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/dependency-summary.ts.html +0 -0
  214. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/discovery.ts.html +0 -0
  215. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/favicon.png +0 -0
  216. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/graph-analytics.ts.html +0 -0
  217. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/index.html +0 -0
  218. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/index.ts.html +0 -0
  219. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/metrics.ts.html +0 -0
  220. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/pipeline.ts.html +0 -0
  221. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/prettify.css +0 -0
  222. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/prettify.js +0 -0
  223. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/report-analysis.ts.html +0 -0
  224. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/report-writer.ts.html +0 -0
  225. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/security-detectors.ts.html +0 -0
  226. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/semantic-detectors.ts.html +0 -0
  227. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/semantic.ts.html +0 -0
  228. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/sort-arrow-sprite.png +0 -0
  229. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/sorter.js +0 -0
  230. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/summary-md.ts.html +0 -0
  231. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/test-quality-detectors.ts.html +0 -0
  232. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/tree-sitter-analyzer.ts.html +0 -0
  233. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/ts-analyzer.ts.html +0 -0
  234. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/types.ts.html +0 -0
  235. /package/skills/{octocode-code-engineer → octocode-engineer}/coverage/utils.ts.html +0 -0
  236. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/dependencies.test.ts +0 -0
  237. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/dependency-summary.test.ts +0 -0
  238. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/dependency-summary.ts +0 -0
  239. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/graph-analytics.test.ts +0 -0
  240. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/graph-analytics.ts +0 -0
  241. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/semantic.test.ts +0 -0
  242. /package/skills/{octocode-code-engineer → octocode-engineer}/src/analysis/semantic.ts +0 -0
  243. /package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/helpers.test.ts +0 -0
  244. /package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/helpers.ts +0 -0
  245. /package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/metrics.test.ts +0 -0
  246. /package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/metrics.ts +0 -0
  247. /package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/tree-search.test.ts +0 -0
  248. /package/skills/{octocode-code-engineer → octocode-engineer}/src/ast/tree-search.ts +0 -0
  249. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/chains.ts +0 -0
  250. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/effects.test.ts +0 -0
  251. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/effects.ts +0 -0
  252. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/input-sources.test.ts +0 -0
  253. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/input-sources.ts +0 -0
  254. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/performance.test.ts +0 -0
  255. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/performance.ts +0 -0
  256. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/prototype-pollution.test.ts +0 -0
  257. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/prototype-pollution.ts +0 -0
  258. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/test-profile.test.ts +0 -0
  259. /package/skills/{octocode-code-engineer → octocode-engineer}/src/collectors/test-profile.ts +0 -0
  260. /package/skills/{octocode-code-engineer → octocode-engineer}/src/common/is-direct-run.test.ts +0 -0
  261. /package/skills/{octocode-code-engineer → octocode-engineer}/src/common/is-direct-run.ts +0 -0
  262. /package/skills/{octocode-code-engineer → octocode-engineer}/src/common/utils.test.ts +0 -0
  263. /package/skills/{octocode-code-engineer → octocode-engineer}/src/common/utils.ts +0 -0
  264. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/cohesion.ts +0 -0
  265. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/coupling.ts +0 -0
  266. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/cycle.ts +0 -0
  267. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/dead-code.ts +0 -0
  268. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/import-style.ts +0 -0
  269. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/index.test.ts +0 -0
  270. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/security.test.ts +0 -0
  271. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/security.ts +0 -0
  272. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/semantic.ts +0 -0
  273. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/shared.ts +0 -0
  274. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/test-quality.test.ts +0 -0
  275. /package/skills/{octocode-code-engineer → octocode-engineer}/src/detectors/test-quality.ts +0 -0
  276. /package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline/cache.test.ts +0 -0
  277. /package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline/cache.ts +0 -0
  278. /package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline/main.test.ts +0 -0
  279. /package/skills/{octocode-code-engineer → octocode-engineer}/src/pipeline.test.ts +0 -0
  280. /package/skills/{octocode-code-engineer → octocode-engineer}/src/reporting/analysis.test.ts +0 -0
  281. /package/skills/{octocode-code-engineer → octocode-engineer}/src/reporting/analysis.ts +0 -0
  282. /package/skills/{octocode-code-engineer → octocode-engineer}/vitest.config.ts +0 -0
@@ -1,25 +1,22 @@
1
1
  {
2
- "name": "octocode-skill",
2
+ "name": "octocode-research",
3
3
  "version": "2.2.0",
4
- "type": "module",
5
4
  "description": "Code research server using octocode tools - HTTP API on port 1987",
6
- "author": "Guy Bary <bgauryy@octocodeai.com>",
7
- "homepage": "https://octocode.ai",
8
- "repository": "bgauryy/octocode-mcp.git",
9
- "bugs": "https://github.com/bgauryy/octocode-mcp/issues",
10
- "license": "MIT",
11
5
  "keywords": [
12
6
  "agent-skill",
13
7
  "code-research",
14
8
  "http-server",
15
- "octocode",
16
- "mcp"
9
+ "mcp",
10
+ "octocode"
17
11
  ],
12
+ "author": "Guy Bary <bgauryy@octocodeai.com>",
13
+ "homepage": "https://octocode.ai",
14
+ "repository": "bgauryy/octocode-mcp.git",
15
+ "bugs": "https://github.com/bgauryy/octocode-mcp/issues",
16
+ "license": "MIT",
17
+ "type": "module",
18
18
  "main": "scripts/server.js",
19
19
  "types": "scripts/server.d.ts",
20
- "bin": {
21
- "octocode-research": "./scripts/server.js"
22
- },
23
20
  "exports": {
24
21
  ".": {
25
22
  "types": "./scripts/server.d.ts",
@@ -30,38 +27,32 @@
30
27
  "import": "./scripts/server.js"
31
28
  }
32
29
  },
30
+ "bin": "./scripts/server-init.js",
33
31
  "files": [
34
32
  "scripts",
35
33
  "src",
36
- "ecosystem.config.cjs",
37
34
  "SKILL.md",
38
35
  "tsconfig.json"
39
36
  ],
37
+ "engines": {
38
+ "node": ">=20.0.0"
39
+ },
40
40
  "scripts": {
41
41
  "build": "tsdown",
42
- "start": "node scripts/server.js",
43
- "server-init": "node scripts/server-init.js",
44
- "pm2:start": "pm2 start ecosystem.config.cjs",
45
- "pm2:stop": "pm2 stop ecosystem.config.cjs",
46
- "pm2:restart": "pm2 restart ecosystem.config.cjs",
47
- "pm2:reload": "pm2 reload ecosystem.config.cjs",
48
- "pm2:delete": "pm2 delete ecosystem.config.cjs",
49
- "pm2:logs": "pm2 logs octocode-research",
50
- "pm2:monit": "pm2 monit",
42
+ "copy:claude": "rm -rf ~/.claude/skills/octocode-research && mkdir -p ~/.claude/skills && cp -r . ~/.claude/skills/octocode-research",
51
43
  "dev": "tsx watch src/server.ts",
52
- "test": "vitest run",
53
- "test:watch": "vitest",
54
44
  "lint": "eslint src",
55
45
  "lint:fix": "eslint src --fix",
56
- "copy:claude": "rm -rf ~/.claude/skills/octocode-research && mkdir -p ~/.claude/skills && cp -r . ~/.claude/skills/octocode-research"
46
+ "start": "node scripts/server-init.js",
47
+ "test": "vitest run",
48
+ "test:watch": "vitest"
57
49
  },
58
50
  "dependencies": {
59
51
  "express": "^4.21.2",
60
52
  "js-yaml": "^4.1.1",
61
53
  "octocode-mcp": "workspace:^",
62
54
  "octocode-shared": "workspace:^",
63
- "zod": "^3.25.0",
64
- "zod-to-json-schema": "^3.25.1"
55
+ "zod": "^3.25.0"
65
56
  },
66
57
  "devDependencies": {
67
58
  "@eslint/js": "^9.27.0",
@@ -75,10 +66,7 @@
75
66
  "tsdown": "^0.18.3",
76
67
  "tsx": "^4.21.0",
77
68
  "typescript": "^5.9.3",
78
- "typescript-eslint": "^8.32.0",
69
+ "typescript-eslint": "^8.52.0",
79
70
  "vitest": "^4.0.16"
80
- },
81
- "engines": {
82
- "node": ">=20.0.0"
83
71
  }
84
72
  }
@@ -2,6 +2,25 @@
2
2
 
3
3
  **CRITICAL: When spawning parallel agents, follow this EXACT protocol.**
4
4
 
5
+ ## When to Use Parallel Agents
6
+
7
+ | Condition | Action |
8
+ |-----------|--------|
9
+ | Single domain | Sequential OK |
10
+ | Multiple domains / repos / subsystems | **MUST use parallel Task agents** |
11
+
12
+ **Domain = separate repos, services, languages, or unrelated subsystems.** Same repo across files = single domain (sequential).
13
+
14
+ | Separate Domains (→ Parallel) | Same Domain (→ Sequential) |
15
+ |------|------|
16
+ | Different repos (react vs vue) | Same repo, different files |
17
+ | Different services (auth vs payments) | Same service, different modules |
18
+ | Different runtimes (JS frontend vs Python backend) | Same language, different packages |
19
+
20
+ **Agent selection**: Deep exploration → `Explore`/`opus`. Quick lookup → `Explore`/`haiku`.
21
+
22
+ ---
23
+
5
24
  ## Spawn Phase
6
25
 
7
26
  **Step 1**: Generate session ID and prepare output directory
@@ -0,0 +1,38 @@
1
+ # Session & Checkpoint Management
2
+
3
+ ## When to Checkpoint
4
+
5
+ Checkpoint when context becomes heavy or research is extensive. This prevents context window exhaustion and enables resumption.
6
+
7
+ | State Transition | Trigger |
8
+ |---|---|
9
+ | RESEARCH → CHECKPOINT | Context heavy or research extensive |
10
+ | CHECKPOINT → RESEARCH | After saving, continue compressed |
11
+ | OUTPUT → PLAN/RESEARCH | User says "continue researching" |
12
+
13
+ ## Checkpoint Protocol
14
+
15
+ Save to `.octocode/research/{session-id}/checkpoint-{N}.md`.
16
+
17
+ **Save**: goal, key findings (file:line), open questions, next steps.
18
+ **Discard**: full tool JSON, intermediate results, verbose hints.
19
+
20
+ ### Session Directory Structure
21
+
22
+ ```
23
+ .octocode/research/{session-id}/
24
+ ├── session.json # {id, state, mainResearchGoal}
25
+ ├── checkpoint-*.md
26
+ ├── domain-*.md # Parallel agent outputs
27
+ └── research.md # Final output
28
+ ```
29
+
30
+ ### Resumption
31
+
32
+ If `session.json` exists with state ≠ DONE → Ask "Resume from last checkpoint?"
33
+
34
+ When resuming:
35
+ 1. Read `session.json` for context
36
+ 2. Read latest `checkpoint-*.md` for findings so far
37
+ 3. Continue from where the checkpoint left off
38
+ 4. Update task status in `TodoWrite`
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{join as e}from"path";import{closeSync as t,constants as n,existsSync as r,mkdirSync as i,openSync as a,readFileSync as o,statSync as s,unlinkSync as c,writeSync as l}from"fs";import{homedir as u}from"os";import{spawn as d}from"child_process";const f=`http://localhost:${parseInt(process.env.OCTOCODE_PORT||`1987`,10)}/health`,p=e(u(),`.octocode`),m=e(p,`server-init.lock`),h=parseInt(process.env.OCTOCODE_LOCK_TIMEOUT||`60000`,10),g=parseInt(process.env.OCTOCODE_INIT_TIMEOUT||`30000`,10),_=parseInt(process.env.OCTOCODE_POLL_INTERVAL||`500`,10);function v(){r(p)||i(p,{recursive:!0})}function y(e){if(!r(e))return!0;try{let t=o(e,`utf-8`);if(t&&t.trim().length>0){let e=JSON.parse(t);if(Date.now()-e.timestamp>h)return!0;try{return process.kill(e.pid,0),!1}catch{return!0}}}catch{}try{let t=s(e);return Date.now()-t.mtimeMs>h}catch{return!0}}function b(e){try{r(e)&&c(e)}catch{}}async function x(){v();for(let e=0;e<3;e++)try{let e=a(m,n.O_CREAT|n.O_EXCL|n.O_WRONLY),r={pid:process.pid,timestamp:Date.now()};return l(e,JSON.stringify(r)),t(e),!0}catch(e){let t=e;if(t.code===`EEXIST`){if(y(m)){b(m),await new Promise(e=>setTimeout(e,50));continue}return!1}else return console.error(`[server-init] Lock error: ${t.message}`),!1}return!1}function S(){try{r(m)&&JSON.parse(o(m,`utf-8`)).pid===process.pid&&c(m)}catch{}}async function C(){try{let e=await fetch(f,{signal:AbortSignal.timeout(5e3)});return e.ok?await e.json():null}catch(e){return e instanceof Error&&!e.message.includes(`ECONNREFUSED`)&&console.error(`[server-init] Health check error: ${e.message}`),null}}function w(){return new Promise((t,n)=>{let r=new URL(`.`,import.meta.url).pathname,i=d(`node`,[e(r,`server.js`)],{detached:!0,stdio:`ignore`,cwd:r});i.on(`error`,e=>{console.error(`[server-init] Failed to start server: ${e.message}`),n(e)}),setTimeout(()=>{i.unref(),console.log(`[server-init] Started server process (pid: ${i.pid})`),t()},100)})}async function T(){let e=Date.now(),t=_;for(;Date.now()-e<g;){let e=await C();if(e?.status===`ok`)return!0;e?.status===`initializing`&&console.log(`[server-init] Server initializing...`),await new Promise(e=>setTimeout(e,t)),t=Math.min(t*1.5,2e3)}return!1}async function E(){let e=await C();e?.status===`ok`&&(console.log(`ok`),process.exit(0)),e?.status===`initializing`&&(console.log(`[server-init] Server is initializing, waiting...`),await T()?(console.log(`ok`),process.exit(0)):(console.error(`[server-init] ERROR: Server stuck in initializing state`),process.exit(1))),await x()||(console.log(`[server-init] Another process is starting server, waiting...`),await T()?(console.log(`ok`),process.exit(0)):(console.error(`[server-init] ERROR: Timeout waiting for server`),process.exit(1)));try{let e=await C();e?.status===`ok`&&(console.log(`ok`),S(),process.exit(0)),e?.status===`initializing`&&(console.log(`[server-init] Server is initializing, waiting...`),await T()?(console.log(`ok`),S(),process.exit(0)):(console.error(`[server-init] ERROR: Server stuck in initializing state`),S(),process.exit(1))),console.log(`[server-init] Server not running, starting...`);try{await w()}catch{console.error(`[server-init] ERROR: Failed to spawn server process`),S(),process.exit(1)}await T()?(console.log(`ok`),S(),process.exit(0)):(console.error(`[server-init] ERROR: Server failed to start within timeout`),S(),process.exit(1))}catch(e){console.error(`[server-init] ERROR:`,e instanceof Error?e.message:e),S(),process.exit(1)}}process.on(`SIGINT`,()=>{S(),process.exit(130)}),process.on(`SIGTERM`,()=>{S(),process.exit(143)}),E();export{};
2
+ import{join as e}from"path";import{spawn as t}from"child_process";const n=parseInt(process.env.OCTOCODE_RESEARCH_PORT||process.env.OCTOCODE_PORT||`1987`,10),r=`http://${process.env.OCTOCODE_RESEARCH_HOST||`localhost`}:${n}/health`,i=parseInt(process.env.OCTOCODE_INIT_TIMEOUT||`30000`,10),a=parseInt(process.env.OCTOCODE_POLL_INTERVAL||`500`,10);async function o(){try{let e=await fetch(r,{signal:AbortSignal.timeout(5e3)});return e.ok?await e.json():null}catch(e){return e instanceof Error&&!e.message.includes(`ECONNREFUSED`)&&console.error(`[server-init] Health check error: ${e.message}`),null}}function s(){return new Promise((n,r)=>{let i=new URL(`.`,import.meta.url).pathname,a=t(`node`,[e(i,`server.js`)],{stdio:`ignore`,cwd:i,detached:!0});a.on(`error`,e=>{console.error(`[server-init] Failed to start server: ${e.message}`),r(e)}),a.unref(),setTimeout(()=>{console.log(`[server-init] Spawned detached server process (pid: ${a.pid})`),n()},100)})}async function c(){let e=Date.now(),t=a;for(;Date.now()-e<i;){let e=await o();if(e?.status===`ok`)return!0;e?.status===`initializing`&&console.log(`[server-init] Server initializing...`),await new Promise(e=>setTimeout(e,t)),t=Math.min(t*1.5,2e3)}return!1}async function l(){let e=await o();e?.status===`ok`&&(console.log(`ok`),process.exit(0)),e?.status===`initializing`&&(console.log(`[server-init] Server is initializing, waiting...`),await c()?(console.log(`ok`),process.exit(0)):(console.error(`[server-init] ERROR: Server stuck in initializing state`),process.exit(1))),console.log(`[server-init] Server not running, starting detached daemon...`);try{await s()}catch{console.error(`[server-init] ERROR: Failed to spawn server process`),process.exit(1)}await c()||(console.error(`[server-init] ERROR: Server failed to start within timeout`),process.exit(1)),console.log(`ok`),process.exit(0)}l();export{};
@@ -2,7 +2,8 @@
2
2
  import { Express } from "express";
3
3
 
4
4
  //#region src/server.d.ts
5
+ declare const PID_FILE: string;
5
6
  declare function createServer(): Promise<Express>;
6
7
  declare function startServer(): Promise<void>;
7
8
  //#endregion
8
- export { createServer, startServer };
9
+ export { PID_FILE, createServer, startServer };