octocode-cli 1.2.7 → 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 -11719
  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
@@ -5,34 +5,6 @@
5
5
  * @module types/guards
6
6
  */
7
7
 
8
- /**
9
- * Check if value is a non-empty string
10
- */
11
- export function isNonEmptyString(value: unknown): value is string {
12
- return typeof value === 'string' && value.length > 0;
13
- }
14
-
15
- /**
16
- * Check if value is a positive finite number
17
- */
18
- export function isPositiveNumber(value: unknown): value is number {
19
- return typeof value === 'number' && value > 0 && Number.isFinite(value);
20
- }
21
-
22
- /**
23
- * Check if value is a non-negative finite number
24
- */
25
- export function isNonNegativeNumber(value: unknown): value is number {
26
- return typeof value === 'number' && value >= 0 && Number.isFinite(value);
27
- }
28
-
29
- /**
30
- * Check if value is an array of non-empty strings
31
- */
32
- export function isStringArray(value: unknown): value is string[] {
33
- return Array.isArray(value) && value.every(isNonEmptyString);
34
- }
35
-
36
8
  /**
37
9
  * Check if value is an array (of any type)
38
10
  */
@@ -1,18 +1,8 @@
1
1
  /**
2
- * MCP Protocol Types for /tools/list and /prompts/list endpoints
3
- * Based on: https://modelcontextprotocol.io/docs/concepts/tools
2
+ * MCP Protocol utilities for /tools endpoints
4
3
  */
5
4
 
6
- // JSON Schema type for tool input schemas
7
- export interface JsonSchema {
8
- $schema?: string;
9
- type: 'object';
10
- properties: Record<string, JsonSchemaProperty>;
11
- required?: string[];
12
- additionalProperties?: boolean;
13
- }
14
-
15
- export interface JsonSchemaProperty {
5
+ interface JsonSchemaProperty {
16
6
  type: string;
17
7
  description?: string;
18
8
  items?: JsonSchemaProperty;
@@ -28,60 +18,17 @@ export interface JsonSchemaProperty {
28
18
  default?: unknown;
29
19
  }
30
20
 
31
- /**
32
- * MCP Tool representation for /tools/list
33
- */
34
- interface McpTool {
35
- name: string;
36
- description: string;
37
- inputSchema: JsonSchema;
38
- }
39
-
40
- /**
41
- * MCP Prompt argument for /prompts/list
42
- */
43
- export interface McpPromptArgument {
44
- name: string;
45
- description: string;
46
- required?: boolean;
47
- }
48
-
49
- /**
50
- * MCP Prompt representation for /prompts/list
51
- */
52
- export interface McpPrompt {
53
- name: string;
54
- description: string;
55
- arguments?: McpPromptArgument[];
56
- }
57
-
58
- /**
59
- * Response metadata
60
- */
61
- export interface ListResponseMeta {
62
- totalCount: number;
63
- version: string;
64
- }
65
-
66
- /**
67
- * Response type for GET /tools/list
68
- */
69
- export interface ListToolsResponse {
70
- tools: McpTool[];
71
- _meta?: ListResponseMeta;
72
- }
73
-
74
- /**
75
- * Response type for GET /prompts/list
76
- */
77
- export interface ListPromptsResponse {
78
- prompts: McpPrompt[];
79
- _meta?: ListResponseMeta;
21
+ interface JsonSchema {
22
+ $schema?: string;
23
+ type: 'object';
24
+ properties: Record<string, JsonSchemaProperty>;
25
+ required?: string[];
26
+ additionalProperties?: boolean;
80
27
  }
81
28
 
82
29
  /**
83
- * Transform description-based schema to JSON Schema format
84
- * This is a fallback transformer when full JSON schemas are not available
30
+ * Transform description-based schema to JSON Schema format.
31
+ * Fallback transformer when full JSON schemas are not available.
85
32
  */
86
33
  export function transformToJsonSchema(
87
34
  schemaDescriptions: Record<string, string>,
@@ -89,15 +36,13 @@ export function transformToJsonSchema(
89
36
  ): JsonSchema {
90
37
  const properties: Record<string, JsonSchemaProperty> = {};
91
38
 
92
- // Create properties from descriptions
93
39
  for (const [key, description] of Object.entries(schemaDescriptions)) {
94
40
  properties[key] = {
95
- type: 'string', // Default type - could be enhanced with type inference
41
+ type: 'string',
96
42
  description,
97
43
  };
98
44
  }
99
45
 
100
- // Wrap in queries array structure (standard MCP bulk query pattern)
101
46
  return {
102
47
  $schema: 'http://json-schema.org/draft-07/schema#',
103
48
  type: 'object',
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Response types for MCP tool results.
3
- * Use these instead of Record<string, unknown> for type-safe data handling.
4
3
  *
5
4
  * @module types/responses
6
5
  */
@@ -11,20 +10,6 @@ import { hasProperty, hasArrayProperty } from './guards.js';
11
10
  // File and Search Types
12
11
  // =============================================================================
13
12
 
14
- /**
15
- * A match within a file
16
- */
17
- export interface MatchLocation {
18
- line: number;
19
- column?: number;
20
- value?: string;
21
- byteOffset?: number;
22
- charOffset?: number;
23
- }
24
-
25
- /**
26
- * A file with matches from search results
27
- */
28
13
  export interface FileMatch {
29
14
  path: string;
30
15
  line?: number;
@@ -33,12 +18,15 @@ export interface FileMatch {
33
18
  matchCount?: number;
34
19
  contextBefore?: string[];
35
20
  contextAfter?: string[];
36
- allMatches?: MatchLocation[];
21
+ allMatches?: Array<{
22
+ line: number;
23
+ column?: number;
24
+ value?: string;
25
+ byteOffset?: number;
26
+ charOffset?: number;
27
+ }>;
37
28
  }
38
29
 
39
- /**
40
- * Pagination info for paginated results
41
- */
42
30
  export interface PaginationInfo {
43
31
  page?: number;
44
32
  currentPage?: number;
@@ -49,83 +37,10 @@ export interface PaginationInfo {
49
37
  nextCursor?: string;
50
38
  }
51
39
 
52
- /**
53
- * Search result from localSearchCode or githubSearchCode
54
- */
55
- interface SearchResult {
56
- files?: FileMatch[];
57
- totalMatches?: number;
58
- totalFiles?: number;
59
- pagination?: PaginationInfo;
60
- }
61
-
62
- // =============================================================================
63
- // LSP Types
64
- // =============================================================================
65
-
66
- /**
67
- * LSP position
68
- */
69
- interface LspPosition {
70
- line: number;
71
- character: number;
72
- }
73
-
74
- /**
75
- * LSP range
76
- */
77
- interface LspRange {
78
- start: LspPosition;
79
- end: LspPosition;
80
- }
81
-
82
- /**
83
- * LSP definition location
84
- */
85
- interface LspDefinition {
86
- uri: string;
87
- range: LspRange;
88
- }
89
-
90
- /**
91
- * LSP reference location
92
- */
93
- export interface LspReference extends LspDefinition {
94
- context?: string;
95
- }
96
-
97
- /**
98
- * LSP call hierarchy item
99
- */
100
- export interface LspCallHierarchyItem {
101
- name: string;
102
- kind?: number;
103
- uri: string;
104
- range?: LspRange;
105
- selectionRange?: LspRange;
106
- }
107
-
108
- // =============================================================================
109
- // Repository Structure Types
110
- // =============================================================================
111
-
112
- /**
113
- * Repository structure result
114
- */
115
- export interface RepoStructure {
116
- files?: string[];
117
- folders?: string[];
118
- totalFiles?: number;
119
- totalDirectories?: number;
120
- }
121
-
122
40
  // =============================================================================
123
- // Type Guards
41
+ // Internal helpers
124
42
  // =============================================================================
125
43
 
126
- /**
127
- * Check if an object is a FileMatch
128
- */
129
44
  function isFileMatch(obj: unknown): obj is FileMatch {
130
45
  return (
131
46
  typeof obj === 'object' &&
@@ -135,59 +50,26 @@ function isFileMatch(obj: unknown): obj is FileMatch {
135
50
  );
136
51
  }
137
52
 
138
- /**
139
- * Check if an object has valid pagination info
140
- */
141
53
  function hasValidPagination(obj: unknown): obj is { pagination: PaginationInfo } {
142
54
  if (!hasProperty(obj, 'pagination')) return false;
143
55
  const p = obj.pagination;
144
56
  return typeof p === 'object' && p !== null;
145
57
  }
146
58
 
147
- /**
148
- * Check if an object is a SearchResult
149
- */
150
- export function isSearchResult(obj: unknown): obj is SearchResult {
151
- if (typeof obj !== 'object' || obj === null) return false;
152
- if (hasArrayProperty(obj, 'files')) {
153
- const files = (obj as { files: unknown[] }).files;
154
- return files.every(isFileMatch);
155
- }
156
- return hasProperty(obj, 'totalMatches') || hasProperty(obj, 'totalFiles');
157
- }
158
-
159
- /**
160
- * Check if an object is an LspDefinition
161
- */
162
- export function isLspDefinition(obj: unknown): obj is LspDefinition {
163
- return (
164
- typeof obj === 'object' &&
165
- obj !== null &&
166
- 'uri' in obj &&
167
- 'range' in obj &&
168
- typeof (obj as LspDefinition).uri === 'string'
169
- );
170
- }
59
+ // =============================================================================
60
+ // Public extractors
61
+ // =============================================================================
171
62
 
172
- /**
173
- * Extract files array from data safely
174
- */
175
63
  export function extractFiles(data: unknown): FileMatch[] {
176
64
  if (!hasArrayProperty(data, 'files')) return [];
177
65
  return (data as { files: unknown[] }).files.filter(isFileMatch);
178
66
  }
179
67
 
180
- /**
181
- * Extract pagination from data safely
182
- */
183
68
  export function extractPagination(data: unknown): PaginationInfo | undefined {
184
69
  if (!hasValidPagination(data)) return undefined;
185
70
  return data.pagination;
186
71
  }
187
72
 
188
- /**
189
- * Extract total matches from data safely
190
- */
191
73
  export function extractTotalMatches(data: unknown): number {
192
74
  if (hasProperty(data, 'totalMatches') && typeof data.totalMatches === 'number') {
193
75
  return data.totalMatches;
@@ -458,21 +458,6 @@ startPeriodicCleanup();
458
458
  // Manual Cleanup Functions
459
459
  // =============================================================================
460
460
 
461
- /**
462
- * Clear a specific circuit breaker.
463
- * Use for testing or when a service is decommissioned.
464
- * @param name - Circuit breaker name to clear
465
- * @returns true if circuit existed and was cleared
466
- */
467
- export function clearCircuit(name: string): boolean {
468
- const existed = circuits.delete(name);
469
- configs.delete(name);
470
- if (existed) {
471
- console.log(agentLog(`🧹 Circuit ${name} cleared`));
472
- }
473
- return existed;
474
- }
475
-
476
461
  /**
477
462
  * Clear all circuit breakers.
478
463
  * Use for testing cleanup or server shutdown.
@@ -484,9 +469,3 @@ export function clearAllCircuits(): void {
484
469
  console.log(agentLog(`🧹 Cleared ${count} circuit(s)`));
485
470
  }
486
471
 
487
- /**
488
- * Get the number of active circuits (for monitoring).
489
- */
490
- export function getCircuitCount(): number {
491
- return circuits.size;
492
- }
@@ -259,7 +259,7 @@ export function logWarn(message: string, data?: unknown): void {
259
259
  // Public API - Tools Logger
260
260
  // ============================================================================
261
261
 
262
- export interface ToolLogEntry {
262
+ interface ToolLogEntry {
263
263
  tool: string;
264
264
  route: string;
265
265
  method: string;
@@ -271,58 +271,11 @@ export interface ToolLogEntry {
271
271
  requestId?: string;
272
272
  }
273
273
 
274
- /**
275
- * Log a tool invocation (async, non-blocking).
276
- */
277
274
  export function logToolCall(entry: ToolLogEntry): void {
278
275
  const logEntry = formatLogEntry('TOOL', `${entry.method} ${entry.route}`, entry);
279
276
  writeLogAsync(TOOLS_LOG, logEntry);
280
277
  }
281
278
 
282
- /**
283
- * Log a successful tool result.
284
- */
285
- export function logToolSuccess(
286
- tool: string,
287
- route: string,
288
- method: string,
289
- params: Record<string, unknown>,
290
- duration: number,
291
- resultSize: number
292
- ): void {
293
- logToolCall({
294
- tool,
295
- route,
296
- method,
297
- params,
298
- duration,
299
- success: true,
300
- resultSize,
301
- });
302
- }
303
-
304
- /**
305
- * Log a failed tool invocation.
306
- */
307
- export function logToolError(
308
- tool: string,
309
- route: string,
310
- method: string,
311
- params: Record<string, unknown>,
312
- duration: number,
313
- error: string
314
- ): void {
315
- logToolCall({
316
- tool,
317
- route,
318
- method,
319
- params,
320
- duration,
321
- success: false,
322
- error,
323
- });
324
- }
325
-
326
279
  // ============================================================================
327
280
  // Utility Functions
328
281
  // ============================================================================
@@ -334,20 +287,6 @@ export function getLogsPath(): string {
334
287
  return LOGS_DIR;
335
288
  }
336
289
 
337
- /**
338
- * Get the path to the errors log file.
339
- */
340
- export function getErrorLogPath(): string {
341
- return ERROR_LOG;
342
- }
343
-
344
- /**
345
- * Get the path to the tools log file.
346
- */
347
- export function getToolsLogPath(): string {
348
- return TOOLS_LOG;
349
- }
350
-
351
290
  /**
352
291
  * Initialize logger synchronously (call at startup).
353
292
  * After startup, all operations are async.
@@ -356,41 +295,6 @@ export function initializeLogger(): void {
356
295
  ensureLogsDirSync();
357
296
  }
358
297
 
359
- // ============================================================================
360
- // Express Middleware Integration
361
- // ============================================================================
362
-
363
- /**
364
- * Create a logging middleware that logs tool invocations.
365
- * Use this to wrap route handlers for automatic logging.
366
- */
367
- export function createToolLogger(toolName: string) {
368
- return (
369
- req: { method: string; path: string; query: unknown },
370
- res: { statusCode: number; on: (event: string, cb: () => void) => void },
371
- next: () => void
372
- ): void => {
373
- const start = Date.now();
374
-
375
- res.on('finish', () => {
376
- const duration = Date.now() - start;
377
- const success = res.statusCode < 400;
378
-
379
- logToolCall({
380
- tool: toolName,
381
- route: req.path,
382
- method: req.method,
383
- params: req.query as Record<string, unknown>,
384
- duration,
385
- success,
386
- error: success ? undefined : `HTTP ${res.statusCode}`,
387
- });
388
- });
389
-
390
- next();
391
- };
392
- }
393
-
394
298
  // ============================================================================
395
299
  // Security Utilities
396
300
  // ============================================================================
@@ -4,8 +4,8 @@
4
4
  * @module utils/resilience
5
5
  */
6
6
 
7
- import { withCircuitBreaker, type CircuitBreakerConfig } from './circuitBreaker.js';
8
- import { withRetry, type RetryConfig, RETRY_CONFIGS } from './retry.js';
7
+ import { withCircuitBreaker } from './circuitBreaker.js';
8
+ import { withRetry, RETRY_CONFIGS } from './retry.js';
9
9
  import { withTimeout } from './asyncTimeout.js';
10
10
 
11
11
  /** Default timeout for MCP tool calls (30 seconds) */
@@ -52,16 +52,6 @@ const TOOL_CIRCUIT_MAP: Record<string, string> = {
52
52
  packageSearch: 'package',
53
53
  };
54
54
 
55
- /**
56
- * Combined resilience configuration
57
- */
58
- export interface ResilienceConfig {
59
- circuitBreaker?: Partial<CircuitBreakerConfig>;
60
- retry?: RetryConfig;
61
- /** Fallback value when circuit is open */
62
- fallback?: () => unknown;
63
- }
64
-
65
55
  /**
66
56
  * Pre-configured resilience strategies
67
57
  */
@@ -5,38 +5,8 @@
5
5
  * @module utils/responseFactory
6
6
  */
7
7
 
8
- import type { FileMatch, PaginationInfo } from '../types/responses.js';
9
- import { extractFiles, extractPagination, extractTotalMatches } from '../types/responses.js';
10
8
  import { isObject, hasProperty, isArray, hasStringProperty, hasNumberProperty } from '../types/guards.js';
11
9
 
12
- // =============================================================================
13
- // Common Extractors (Type-Safe)
14
- // =============================================================================
15
-
16
- /**
17
- * Extract file matches from search results with proper typing
18
- */
19
- export function extractFileMatches(data: unknown): FileMatch[] {
20
- return extractFiles(data);
21
- }
22
-
23
- /**
24
- * Extract pagination info with proper typing
25
- */
26
- export function extractPaginationInfo(data: unknown): PaginationInfo | undefined {
27
- return extractPagination(data);
28
- }
29
-
30
- /**
31
- * Extract total match count with proper typing
32
- */
33
- export function extractMatchCount(data: unknown): number {
34
- return extractTotalMatches(data);
35
- }
36
-
37
- /**
38
- * Safely extract string property
39
- */
40
10
  export function safeString(obj: unknown, key: string, fallback = ''): string {
41
11
  if (hasStringProperty(obj, key)) {
42
12
  return obj[key];
@@ -44,9 +14,6 @@ export function safeString(obj: unknown, key: string, fallback = ''): string {
44
14
  return fallback;
45
15
  }
46
16
 
47
- /**
48
- * Safely extract number property
49
- */
50
17
  export function safeNumber(obj: unknown, key: string, fallback = 0): number {
51
18
  if (hasNumberProperty(obj, key)) {
52
19
  return obj[key];
@@ -54,9 +21,6 @@ export function safeNumber(obj: unknown, key: string, fallback = 0): number {
54
21
  return fallback;
55
22
  }
56
23
 
57
- /**
58
- * Safely extract array property
59
- */
60
24
  export function safeArray<T>(obj: unknown, key: string): T[] {
61
25
  if (isObject(obj) && hasProperty(obj, key) && isArray(obj[key])) {
62
26
  return obj[key] as T[];
@@ -64,9 +28,6 @@ export function safeArray<T>(obj: unknown, key: string): T[] {
64
28
  return [];
65
29
  }
66
30
 
67
- /**
68
- * Extract match locations from a file result
69
- */
70
31
  export function extractMatchLocations(matches: unknown[]): Array<{
71
32
  line: number;
72
33
  column?: number;
@@ -86,9 +47,6 @@ export function extractMatchLocations(matches: unknown[]): Array<{
86
47
  });
87
48
  }
88
49
 
89
- /**
90
- * Transform pagination from MCP format to skill format
91
- */
92
50
  export function transformPagination(pagination: unknown): { page: number; total: number; hasMore: boolean } | undefined {
93
51
  if (!isObject(pagination)) return undefined;
94
52
 
@@ -24,19 +24,13 @@ interface McpToolResponse {
24
24
  isError?: boolean;
25
25
  }
26
26
 
27
- /**
28
- * Research context from the MCP response
29
- */
30
- export interface ResearchContext {
27
+ interface ResearchContext {
31
28
  mainResearchGoal?: string;
32
29
  researchGoal?: string;
33
30
  reasoning?: string;
34
31
  }
35
32
 
36
- /**
37
- * Single result item from bulk response
38
- */
39
- export interface BulkResultItem {
33
+ interface BulkResultItem {
40
34
  id: number;
41
35
  status: 'hasResults' | 'empty' | 'error';
42
36
  data: Record<string, unknown>;
@@ -57,10 +51,7 @@ export interface ParsedResponse {
57
51
  status: 'hasResults' | 'empty' | 'error' | 'unknown';
58
52
  }
59
53
 
60
- /**
61
- * Parsed bulk response with all results
62
- */
63
- export interface ParsedBulkResponse {
54
+ interface ParsedBulkResponse {
64
55
  /** All results from bulk query */
65
56
  results: BulkResultItem[];
66
57
  /** Categorized hints by status */
@@ -172,19 +163,6 @@ export function parseToolResponse(response: McpToolResponse): ParsedResponse {
172
163
  return emptyResult;
173
164
  }
174
165
 
175
- /**
176
- * Convenience function to get data field with type safety
177
- */
178
- export function getDataField<T>(
179
- response: McpToolResponse,
180
- field: string,
181
- defaultValue: T
182
- ): T {
183
- const { data } = parseToolResponse(response);
184
- const value = data[field];
185
- return value !== undefined ? (value as T) : defaultValue;
186
- }
187
-
188
166
  /**
189
167
  * Parse ALL results from a bulk MCP tool response.
190
168
  * Use this when handling multiple queries to get all results.