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
@@ -0,0 +1,203 @@
1
+ export interface Location {
2
+ file: string;
3
+ lineStart: number;
4
+ lineEnd: number;
5
+ columnStart: number;
6
+ columnEnd: number;
7
+ }
8
+
9
+ export interface Metrics {
10
+ complexity: number;
11
+ maxBranchDepth: number;
12
+ maxLoopDepth: number;
13
+ returns: number;
14
+ awaits: number;
15
+ calls: number;
16
+ loops: number;
17
+ }
18
+
19
+ export interface HalsteadMetrics {
20
+ operators: number;
21
+ operands: number;
22
+ distinctOperators: number;
23
+ distinctOperands: number;
24
+ vocabulary: number;
25
+ length: number;
26
+ volume: number;
27
+ difficulty: number;
28
+ effort: number;
29
+ time: number;
30
+ estimatedBugs: number;
31
+ }
32
+
33
+ export interface CodeLocation {
34
+ file: string;
35
+ lineStart: number;
36
+ lineEnd: number;
37
+ }
38
+
39
+ export interface MagicNumberEntry extends CodeLocation {
40
+ value: number;
41
+ }
42
+
43
+ export interface ConsoleLogEntry {
44
+ method: string;
45
+ lineStart: number;
46
+ lineEnd: number;
47
+ hasSensitiveArg: boolean;
48
+ argSnippet?: string;
49
+ }
50
+
51
+ export interface MessageChainEntry {
52
+ chain: string;
53
+ depth: number;
54
+ lineStart: number;
55
+ lineEnd: number;
56
+ }
57
+
58
+ export interface MagicStringEntry extends CodeLocation {
59
+ value: string;
60
+ }
61
+
62
+ export type CatchRethrowEntry = CodeLocation;
63
+
64
+ export interface BooleanParamCluster {
65
+ name: string;
66
+ booleanCount: number;
67
+ totalParams: number;
68
+ lineStart: number;
69
+ lineEnd: number;
70
+ }
71
+
72
+ export interface PromiseAllUnhandledEntry extends CodeLocation {
73
+ kind: 'Promise.all' | 'Promise.allSettled' | 'Promise.race' | 'Promise.any';
74
+ }
75
+
76
+ export interface TreeSitterMetrics extends Metrics {
77
+ statements: number;
78
+ }
79
+
80
+ export interface FunctionEntry {
81
+ kind: string;
82
+ name: string;
83
+ nameHint: string;
84
+ file: string;
85
+ lineStart: number;
86
+ lineEnd: number;
87
+ columnStart: number;
88
+ columnEnd: number;
89
+ statementCount: number;
90
+ complexity: number;
91
+ maxBranchDepth: number;
92
+ maxLoopDepth: number;
93
+ returns: number;
94
+ awaits: number;
95
+ calls: number;
96
+ loops: number;
97
+ lengthLines: number;
98
+ cognitiveComplexity: number;
99
+ halstead?: HalsteadMetrics;
100
+ maintainabilityIndex?: number;
101
+ declared?: boolean;
102
+ params?: number;
103
+ source?: string;
104
+ }
105
+
106
+ export interface FlowEntry {
107
+ kind: string;
108
+ file: string;
109
+ lineStart: number;
110
+ lineEnd: number;
111
+ columnStart: number;
112
+ columnEnd: number;
113
+ statementCount: number;
114
+ }
115
+
116
+ export interface FlowMapEntry extends FunctionEntry {
117
+ hash: string;
118
+ metrics: Metrics;
119
+ }
120
+
121
+ export interface ControlMapEntry extends FlowEntry {
122
+ hash: string;
123
+ }
124
+
125
+ export interface Thresholds {
126
+ // Architecture
127
+ couplingThreshold: number;
128
+ fanInThreshold: number;
129
+ fanOutThreshold: number;
130
+ godModuleStatements: number;
131
+ godModuleExports: number;
132
+ barrelSymbolThreshold: number;
133
+ sdpMinDelta: number;
134
+ sdpMaxSourceInstability: number;
135
+ layerOrder: string[];
136
+
137
+ // Code quality
138
+ minFunctionStatements: number;
139
+ minFlowStatements: number;
140
+ criticalComplexityThreshold: number;
141
+ godFunctionStatements: number;
142
+ godFunctionMiThreshold: number;
143
+ cognitiveComplexityThreshold: number;
144
+ parameterThreshold: number;
145
+ halsteadEffortThreshold: number;
146
+ maintainabilityIndexThreshold: number;
147
+ anyThreshold: number;
148
+ flowDupThreshold: number;
149
+ similarityThreshold: number;
150
+ deepNestingThreshold: number;
151
+ multipleReturnThreshold: number;
152
+ magicStringMinOccurrences: number;
153
+ booleanParamThreshold: number;
154
+
155
+ // Semantic
156
+ overrideChainThreshold: number;
157
+ shotgunThreshold: number;
158
+
159
+ // Security
160
+ secretEntropyThreshold: number;
161
+ secretMinLength: number;
162
+
163
+ // Test quality
164
+ mockThreshold: number;
165
+ }
166
+
167
+ export type ReporterFormat = 'default' | 'compact' | 'github-actions';
168
+
169
+ export interface AnalysisOptions {
170
+ root: string;
171
+ out: string | null;
172
+ json: boolean;
173
+ packageRoot: string;
174
+ parser: 'auto' | 'typescript' | 'tree-sitter';
175
+ includeTests: boolean;
176
+ emitTree: boolean;
177
+ treeDepth: number;
178
+ noCache: boolean;
179
+ clearCache: boolean;
180
+ semantic: boolean;
181
+ graph: boolean;
182
+ graphAdvanced: boolean;
183
+ flow: boolean;
184
+ scope: string[] | null;
185
+ scopeSymbols: Map<string, string[]> | null;
186
+ features: Set<string> | null;
187
+ ignoreDirs: Set<string>;
188
+ findingsLimit: number;
189
+ noDiversify: boolean;
190
+ maxRecsPerCategory: number;
191
+ deepLinkTopN: number;
192
+ thresholds: Thresholds;
193
+
194
+ affected: string | null;
195
+ saveBaseline: boolean;
196
+ ignoreKnown: string | null;
197
+ reporter: ReporterFormat;
198
+ focus: string | null;
199
+ focusDepth: number;
200
+ collapse: number | null;
201
+ atLeast: number | null;
202
+ configFile: string | null;
203
+ }
@@ -0,0 +1,215 @@
1
+ import type {
2
+ ControlMapEntry,
3
+ FlowMapEntry,
4
+ } from './core.js';
5
+
6
+ export interface ExportSymbol {
7
+ name: string;
8
+ kind: 'value' | 'type' | 'unknown';
9
+ isDefault?: boolean;
10
+ lineStart?: number;
11
+ lineEnd?: number;
12
+ }
13
+
14
+ export interface ImportedSymbolRef {
15
+ sourceModule: string;
16
+ resolvedModule?: string;
17
+ importedName: string;
18
+ localName: string;
19
+ isTypeOnly: boolean;
20
+ lineStart?: number;
21
+ lineEnd?: number;
22
+ }
23
+
24
+ export interface ReExportRef {
25
+ sourceModule: string;
26
+ resolvedModule?: string;
27
+ exportedAs: string;
28
+ importedName: string;
29
+ isStar: boolean;
30
+ isTypeOnly: boolean;
31
+ lineStart?: number;
32
+ lineEnd?: number;
33
+ }
34
+
35
+ export interface DependencyProfile {
36
+ internalDependencies: string[];
37
+ externalDependencies: string[];
38
+ unresolvedDependencies: string[];
39
+ declaredExports: ExportSymbol[];
40
+ importedSymbols: ImportedSymbolRef[];
41
+ reExports: ReExportRef[];
42
+ package?: string;
43
+ file?: string;
44
+ }
45
+
46
+ export interface DependencyState {
47
+ files: Set<string>;
48
+ outgoing: Map<string, Set<string>>;
49
+ incoming: Map<string, Set<string>>;
50
+ incomingFromTests: Map<string, Set<string>>;
51
+ incomingFromProduction: Map<string, Set<string>>;
52
+ externalCounts: Map<string, Set<string>>;
53
+ unresolvedCounts: Map<string, Set<string>>;
54
+ declaredExportsByFile: Map<string, ExportSymbol[]>;
55
+ importedSymbolsByFile: Map<string, ImportedSymbolRef[]>;
56
+ reExportsByFile: Map<string, ReExportRef[]>;
57
+ }
58
+
59
+ export interface DependencyRecord {
60
+ file: string;
61
+ outboundCount: number;
62
+ inboundCount: number;
63
+ inboundFromProduction: number;
64
+ inboundFromTests: number;
65
+ externalDependencyCount: number;
66
+ unresolvedDependencyCount: number;
67
+ }
68
+
69
+ export interface FileCriticality {
70
+ file: string;
71
+ complexityRisk: number;
72
+ highComplexityFunctions: number;
73
+ functionCount: number;
74
+ flows: number;
75
+ score: number;
76
+ complexitySum?: number;
77
+ }
78
+
79
+ export interface DuplicateGroup {
80
+ hash: string;
81
+ signature: string;
82
+ kind: string;
83
+ occurrences: number;
84
+ filesCount: number;
85
+ locations: FlowMapEntry[];
86
+ }
87
+
88
+ export interface RedundantFlowGroup {
89
+ kind: string;
90
+ occurrences: number;
91
+ filesCount: number;
92
+ locations: ControlMapEntry[];
93
+ }
94
+
95
+ export interface Cycle {
96
+ path: string[];
97
+ nodeCount: number;
98
+ }
99
+
100
+ export interface CriticalPath {
101
+ start: string;
102
+ path: string[];
103
+ score: number;
104
+ length: number;
105
+ containsCycle: boolean;
106
+ }
107
+
108
+ export interface SccCluster {
109
+ id: string;
110
+ files: string[];
111
+ nodeCount: number;
112
+ edgeCount: number;
113
+ entryEdges: number;
114
+ exitEdges: number;
115
+ hubFiles: string[];
116
+ }
117
+
118
+ export interface Chokepoint {
119
+ file: string;
120
+ score: number;
121
+ reasons: string[];
122
+ fanIn: number;
123
+ fanOut: number;
124
+ articulation: boolean;
125
+ bridgeCount: number;
126
+ cycleClusterCount: number;
127
+ onCriticalPath: boolean;
128
+ }
129
+
130
+ export interface PackageGraphNode {
131
+ package: string;
132
+ inbound: number;
133
+ outbound: number;
134
+ internalFiles: number;
135
+ }
136
+
137
+ export interface PackageHotspot {
138
+ from: string;
139
+ to: string;
140
+ edges: number;
141
+ [key: string]: unknown;
142
+ }
143
+
144
+ export interface PackageGraphSummary {
145
+ packageCount: number;
146
+ edgeCount: number;
147
+ packages: PackageGraphNode[];
148
+ hotspots: PackageHotspot[];
149
+ }
150
+
151
+ export interface CriticalModule extends DependencyRecord {
152
+ score: number;
153
+ riskBand: string;
154
+ [key: string]: unknown;
155
+ }
156
+
157
+ export interface TestOnlyModule extends DependencyRecord {
158
+ lineStart?: number;
159
+ lineEnd?: number;
160
+ }
161
+
162
+ export interface ModuleCount {
163
+ file: string;
164
+ count: number;
165
+ score: number;
166
+ }
167
+
168
+ export interface DependencySummary {
169
+ totalModules: number;
170
+ totalEdges: number;
171
+ unresolvedEdgeCount: number;
172
+ externalDependencyFiles: number;
173
+ rootsCount: number;
174
+ leavesCount: number;
175
+ roots: string[];
176
+ leaves: string[];
177
+ criticalModules: CriticalModule[];
178
+ testOnlyModules: TestOnlyModule[];
179
+ unresolvedSample: string[];
180
+ outgoingTop: ModuleCount[];
181
+ inboundTop: ModuleCount[];
182
+ cycles: Cycle[];
183
+ criticalPaths: CriticalPath[];
184
+ }
185
+
186
+ export interface HotFile {
187
+ file: string;
188
+ riskScore: number;
189
+ fanIn: number;
190
+ fanOut: number;
191
+ complexityScore: number;
192
+ exportCount: number;
193
+ inCycle: boolean;
194
+ onCriticalPath: boolean;
195
+ }
196
+
197
+ export interface WalkResult {
198
+ path: string[];
199
+ score: number;
200
+ containsCycle: boolean;
201
+ }
202
+
203
+ export interface DuplicateFlowHint {
204
+ type: string;
205
+ message: string;
206
+ file: string | undefined;
207
+ lineStart: number | undefined;
208
+ lineEnd: number | undefined;
209
+ details: string;
210
+ }
211
+
212
+ export interface FlowMaps {
213
+ flowMap: Map<string, FlowMapEntry[]>;
214
+ controlMap: Map<string, ControlMapEntry[]>;
215
+ }
@@ -0,0 +1,108 @@
1
+ import type {
2
+ BoundaryRoleHint,
3
+ CfgFlags,
4
+ EffectProfile,
5
+ InputSourceInfo,
6
+ SuspiciousString,
7
+ SymbolUsageSummary,
8
+ TestProfile,
9
+ TimerCall,
10
+ TopLevelEffect,
11
+ } from './collectors.js';
12
+ import type {
13
+ BooleanParamCluster,
14
+ CatchRethrowEntry,
15
+ CodeLocation,
16
+ ConsoleLogEntry,
17
+ FlowEntry,
18
+ FunctionEntry,
19
+ MagicNumberEntry,
20
+ MagicStringEntry,
21
+ MessageChainEntry,
22
+ PromiseAllUnhandledEntry,
23
+ } from './core.js';
24
+ import type { DependencyProfile } from './dependency.js';
25
+
26
+ export interface FileEntry {
27
+ package: string;
28
+ file: string;
29
+ parseEngine: string;
30
+ nodeCount: number;
31
+ kindCounts: Record<string, number>;
32
+ functions: FunctionEntry[];
33
+ flows: FlowEntry[];
34
+ dependencyProfile: DependencyProfile;
35
+ emptyCatches?: CodeLocation[];
36
+ switchesWithoutDefault?: CodeLocation[];
37
+ anyCount?: number;
38
+ magicNumbers?: MagicNumberEntry[];
39
+ typeAssertionEscapes?: {
40
+ asAny: CodeLocation[];
41
+ doubleAssertion: CodeLocation[];
42
+ nonNull: CodeLocation[];
43
+ };
44
+ asyncWithoutAwait?: Array<{
45
+ name: string;
46
+ lineStart: number;
47
+ lineEnd: number;
48
+ }>;
49
+ unprotectedAsync?: Array<{
50
+ name: string;
51
+ awaitCount: number;
52
+ lineStart: number;
53
+ lineEnd: number;
54
+ }>;
55
+ evalUsages?: CodeLocation[];
56
+ unsafeHtmlAssignments?: CodeLocation[];
57
+ suspiciousStrings?: SuspiciousString[];
58
+ regexLiterals?: Array<{
59
+ lineStart: number;
60
+ lineEnd: number;
61
+ pattern: string;
62
+ }>;
63
+ awaitInLoopLocations?: CodeLocation[];
64
+ syncIoCalls?: Array<{ name: string; lineStart: number; lineEnd: number }>;
65
+ timerCalls?: TimerCall[];
66
+ listenerRegistrations?: CodeLocation[];
67
+ listenerRemovals?: CodeLocation[];
68
+ testProfile?: TestProfile;
69
+ inputSources?: InputSourceInfo[];
70
+ treeSitterNodeCount?: number;
71
+ treeSitterError?: string;
72
+ parserFallback?: string;
73
+ topLevelEffects?: TopLevelEffect[];
74
+ prototypePollutionSites?: Array<{
75
+ kind: string;
76
+ detail: string;
77
+ lineStart: number;
78
+ lineEnd: number;
79
+ guarded: boolean;
80
+ }>;
81
+ effectProfile?: EffectProfile;
82
+ symbolUsageSummary?: SymbolUsageSummary;
83
+ boundaryRoleHints?: BoundaryRoleHint[];
84
+ cfgFlags?: CfgFlags;
85
+ consoleLogs?: ConsoleLogEntry[];
86
+ messageChains?: MessageChainEntry[];
87
+ magicStrings?: MagicStringEntry[];
88
+ catchRethrows?: CatchRethrowEntry[];
89
+ booleanParamClusters?: BooleanParamCluster[];
90
+ promiseAllUnhandled?: PromiseAllUnhandledEntry[];
91
+ issueIds?: string[];
92
+ }
93
+
94
+ export interface PackageFileSummary {
95
+ fileCount: number;
96
+ nodeCount: number;
97
+ functionCount: number;
98
+ flowCount: number;
99
+ kindCounts: Record<string, number>;
100
+ functions: FunctionEntry[];
101
+ flows: FlowEntry[];
102
+ }
103
+
104
+ export interface PackageInfo {
105
+ name: string;
106
+ dir: string;
107
+ folder: string;
108
+ }
@@ -0,0 +1,105 @@
1
+ import type { AnalysisSignal, RecommendedValidation } from './analysis.js';
2
+
3
+ export type { AnalysisLens, AnalysisSignal, RecommendedValidation, FlowTraceStep } from './analysis.js';
4
+
5
+ export interface PillarFindingStats {
6
+ totalFindings: number;
7
+ severityBreakdown: Record<string, number>;
8
+ }
9
+
10
+ export interface FindingStats {
11
+ overall?: PillarFindingStats;
12
+ pillars?: Record<string, PillarFindingStats>;
13
+ }
14
+
15
+ interface SuggestedFix {
16
+ strategy: string;
17
+ steps: string[];
18
+ }
19
+
20
+ interface LspHint {
21
+ tool: 'lspFindReferences' | 'lspCallHierarchy' | 'lspGotoDefinition';
22
+ symbolName: string;
23
+ lineHint: number;
24
+ file: string;
25
+ expectedResult: string;
26
+ }
27
+
28
+ export interface Finding {
29
+ id: string;
30
+ severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
31
+ category: string;
32
+ file: string;
33
+ lineStart: number;
34
+ lineEnd: number;
35
+ title: string;
36
+ reason: string;
37
+ files: string[];
38
+ suggestedFix: SuggestedFix;
39
+ impact?: string;
40
+ tags?: string[];
41
+ columnStart?: number;
42
+ columnEnd?: number;
43
+ lspHints?: LspHint[];
44
+ ruleId?: string;
45
+ analysisLens?: import('./analysis.js').AnalysisLens;
46
+ confidence?: 'high' | 'medium' | 'low';
47
+ evidence?: Record<string, unknown>;
48
+ correlatedSignals?: string[];
49
+ recommendedValidation?: RecommendedValidation;
50
+ flowTrace?: import('./analysis.js').FlowTraceStep[];
51
+ }
52
+
53
+ export interface TopRecommendation {
54
+ id: string;
55
+ file: string;
56
+ severity: string;
57
+ category: string;
58
+ title: string;
59
+ reason: string;
60
+ suggestedFix?: Finding['suggestedFix'];
61
+ }
62
+
63
+ export interface ScanSummaryData {
64
+ totalPackages?: number;
65
+ totalFiles?: number;
66
+ totalNodes?: number;
67
+ totalFunctions?: number;
68
+ totalFlows?: number;
69
+ totalDependencyFiles?: number;
70
+ byPackage?: Record<
71
+ string,
72
+ {
73
+ files: number;
74
+ nodes: number;
75
+ functions: number;
76
+ flows: number;
77
+ topKinds: [string, number][];
78
+ rootPath: string;
79
+ }
80
+ >;
81
+ [key: string]: unknown;
82
+ }
83
+
84
+ export interface AgentOutputData {
85
+ totalFindings?: number;
86
+ totalBeforeTruncation?: number;
87
+ droppedCategories?: string[];
88
+ findingStats?: FindingStats | null;
89
+ analysisSummary?: {
90
+ strongestGraphSignal?: AnalysisSignal | null;
91
+ strongestAstSignal?: AnalysisSignal | null;
92
+ combinedSignals?: AnalysisSignal[];
93
+ recommendedValidation?: RecommendedValidation | null;
94
+ };
95
+ highPriority?: number;
96
+ mediumPriority?: number;
97
+ lowPriority?: number;
98
+ topRecommendations?: TopRecommendation[];
99
+ filesWithIssues?: Array<{
100
+ file: string;
101
+ issueCount: number;
102
+ issueIds: string[];
103
+ }>;
104
+ [key: string]: unknown;
105
+ }