octocode-cli 1.2.6 → 1.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/LICENSE +21 -63
  2. package/README.md +85 -142
  3. package/out/octocode-cli.js +7026 -6945
  4. package/package.json +8 -6
  5. package/skills/README.md +97 -120
  6. package/skills/octocode-code-engineer/.claude/settings.local.json +18 -0
  7. package/skills/octocode-code-engineer/.octocode/rfc/RFC-code-engineer-weakness-fixes.md +255 -0
  8. package/skills/octocode-code-engineer/.plan/VALIDATED_PLAN.md +223 -0
  9. package/skills/octocode-code-engineer/README.md +178 -0
  10. package/skills/octocode-code-engineer/SKILL.md +418 -0
  11. package/skills/octocode-code-engineer/coverage/architecture.ts.html +7828 -0
  12. package/skills/octocode-code-engineer/coverage/ast-helpers.ts.html +211 -0
  13. package/skills/octocode-code-engineer/coverage/ast-search.ts.html +1795 -0
  14. package/skills/octocode-code-engineer/coverage/base.css +224 -0
  15. package/skills/octocode-code-engineer/coverage/block-navigation.js +87 -0
  16. package/skills/octocode-code-engineer/coverage/cache.ts.html +376 -0
  17. package/skills/octocode-code-engineer/coverage/cli.ts.html +982 -0
  18. package/skills/octocode-code-engineer/coverage/clover.xml +3217 -0
  19. package/skills/octocode-code-engineer/coverage/collect-effects.ts.html +664 -0
  20. package/skills/octocode-code-engineer/coverage/collect-input-sources.ts.html +577 -0
  21. package/skills/octocode-code-engineer/coverage/collect-performance.ts.html +331 -0
  22. package/skills/octocode-code-engineer/coverage/collect-prototype-pollution.ts.html +421 -0
  23. package/skills/octocode-code-engineer/coverage/collect-security.ts.html +604 -0
  24. package/skills/octocode-code-engineer/coverage/collect-test-profile.ts.html +589 -0
  25. package/skills/octocode-code-engineer/coverage/coverage-final.json +30 -0
  26. package/skills/octocode-code-engineer/coverage/dependencies.ts.html +997 -0
  27. package/skills/octocode-code-engineer/coverage/dependency-summary.ts.html +688 -0
  28. package/skills/octocode-code-engineer/coverage/discovery.ts.html +322 -0
  29. package/skills/octocode-code-engineer/coverage/favicon.png +0 -0
  30. package/skills/octocode-code-engineer/coverage/graph-analytics.ts.html +1510 -0
  31. package/skills/octocode-code-engineer/coverage/index.html +536 -0
  32. package/skills/octocode-code-engineer/coverage/index.ts.html +826 -0
  33. package/skills/octocode-code-engineer/coverage/metrics.ts.html +553 -0
  34. package/skills/octocode-code-engineer/coverage/pipeline.ts.html +2044 -0
  35. package/skills/octocode-code-engineer/coverage/prettify.css +1 -0
  36. package/skills/octocode-code-engineer/coverage/prettify.js +2 -0
  37. package/skills/octocode-code-engineer/coverage/report-analysis.ts.html +1570 -0
  38. package/skills/octocode-code-engineer/coverage/report-writer.ts.html +1102 -0
  39. package/skills/octocode-code-engineer/coverage/security-detectors.ts.html +1747 -0
  40. package/skills/octocode-code-engineer/coverage/semantic-detectors.ts.html +2152 -0
  41. package/skills/octocode-code-engineer/coverage/semantic.ts.html +1897 -0
  42. package/skills/octocode-code-engineer/coverage/sort-arrow-sprite.png +0 -0
  43. package/skills/octocode-code-engineer/coverage/sorter.js +210 -0
  44. package/skills/octocode-code-engineer/coverage/summary-md.ts.html +1222 -0
  45. package/skills/octocode-code-engineer/coverage/test-quality-detectors.ts.html +1039 -0
  46. package/skills/octocode-code-engineer/coverage/tree-sitter-analyzer.ts.html +955 -0
  47. package/skills/octocode-code-engineer/coverage/ts-analyzer.ts.html +1213 -0
  48. package/skills/octocode-code-engineer/coverage/types.ts.html +2473 -0
  49. package/skills/octocode-code-engineer/coverage/utils.ts.html +820 -0
  50. package/skills/octocode-code-engineer/eslint.config.mjs +54 -0
  51. package/skills/octocode-code-engineer/minify-scripts.mjs +32 -0
  52. package/skills/octocode-code-engineer/package.json +54 -0
  53. package/skills/octocode-code-engineer/references/agent-ast-reading-rfc.md +95 -0
  54. package/skills/octocode-code-engineer/references/architecture-techniques.md +121 -0
  55. package/skills/octocode-code-engineer/references/ast-search.md +210 -0
  56. package/skills/octocode-code-engineer/references/ast-tree-search.md +151 -0
  57. package/skills/octocode-code-engineer/references/cli-reference.md +167 -0
  58. package/skills/octocode-code-engineer/references/concepts.md +107 -0
  59. package/skills/octocode-code-engineer/references/finding-categories.md +128 -0
  60. package/skills/octocode-code-engineer/references/improvement-roadmap.md +304 -0
  61. package/skills/octocode-code-engineer/references/output-files.md +144 -0
  62. package/skills/octocode-code-engineer/references/playbooks.md +204 -0
  63. package/skills/octocode-code-engineer/references/present-results.md +136 -0
  64. package/skills/octocode-code-engineer/references/tool-workflows.md +566 -0
  65. package/skills/octocode-code-engineer/references/validate-investigate.md +225 -0
  66. package/skills/octocode-code-engineer/scripts/analysis/dependencies.js +1 -0
  67. package/skills/octocode-code-engineer/scripts/analysis/dependency-summary.js +1 -0
  68. package/skills/octocode-code-engineer/scripts/analysis/discovery.js +1 -0
  69. package/skills/octocode-code-engineer/scripts/analysis/graph-analytics.js +1 -0
  70. package/skills/octocode-code-engineer/scripts/analysis/semantic.js +1 -0
  71. package/skills/octocode-code-engineer/scripts/ast/helpers.js +1 -0
  72. package/skills/octocode-code-engineer/scripts/ast/metrics.js +1 -0
  73. package/skills/octocode-code-engineer/scripts/ast/search.js +2 -0
  74. package/skills/octocode-code-engineer/scripts/ast/tree-search.js +2 -0
  75. package/skills/octocode-code-engineer/scripts/ast/tree-sitter.js +1 -0
  76. package/skills/octocode-code-engineer/scripts/ast/ts-analyzer.js +1 -0
  77. package/skills/octocode-code-engineer/scripts/collectors/chains.js +1 -0
  78. package/skills/octocode-code-engineer/scripts/collectors/effects.js +1 -0
  79. package/skills/octocode-code-engineer/scripts/collectors/input-sources.js +1 -0
  80. package/skills/octocode-code-engineer/scripts/collectors/performance.js +1 -0
  81. package/skills/octocode-code-engineer/scripts/collectors/prototype-pollution.js +1 -0
  82. package/skills/octocode-code-engineer/scripts/collectors/security.js +1 -0
  83. package/skills/octocode-code-engineer/scripts/collectors/test-profile.js +1 -0
  84. package/skills/octocode-code-engineer/scripts/common/is-direct-run.js +1 -0
  85. package/skills/octocode-code-engineer/scripts/common/utils.js +1 -0
  86. package/skills/octocode-code-engineer/scripts/detectors/code-quality.js +1 -0
  87. package/skills/octocode-code-engineer/scripts/detectors/cohesion.js +1 -0
  88. package/skills/octocode-code-engineer/scripts/detectors/coupling.js +1 -0
  89. package/skills/octocode-code-engineer/scripts/detectors/cycle.js +1 -0
  90. package/skills/octocode-code-engineer/scripts/detectors/dead-code.js +1 -0
  91. package/skills/octocode-code-engineer/scripts/detectors/import-style.js +1 -0
  92. package/skills/octocode-code-engineer/scripts/detectors/index.js +1 -0
  93. package/skills/octocode-code-engineer/scripts/detectors/security.js +1 -0
  94. package/skills/octocode-code-engineer/scripts/detectors/semantic.js +1 -0
  95. package/skills/octocode-code-engineer/scripts/detectors/shared.js +1 -0
  96. package/skills/octocode-code-engineer/scripts/detectors/test-quality.js +1 -0
  97. package/skills/octocode-code-engineer/scripts/index.js +1 -0
  98. package/skills/octocode-code-engineer/scripts/pipeline/cache.js +1 -0
  99. package/skills/octocode-code-engineer/scripts/pipeline/cli.js +1 -0
  100. package/skills/octocode-code-engineer/scripts/pipeline/main.js +2 -0
  101. package/skills/octocode-code-engineer/scripts/reporting/analysis.js +1 -0
  102. package/skills/octocode-code-engineer/scripts/reporting/summary-md.js +1 -0
  103. package/skills/octocode-code-engineer/scripts/reporting/writer.js +1 -0
  104. package/skills/octocode-code-engineer/scripts/types/constants.js +1 -0
  105. package/skills/octocode-code-engineer/scripts/types/index.js +1 -0
  106. package/skills/octocode-code-engineer/scripts/types/interfaces.js +1 -0
  107. package/skills/octocode-code-engineer/src/analysis/dependencies.test.ts +545 -0
  108. package/skills/octocode-code-engineer/src/analysis/dependencies.ts +406 -0
  109. package/skills/octocode-code-engineer/src/analysis/dependency-summary.test.ts +566 -0
  110. package/skills/octocode-code-engineer/src/analysis/dependency-summary.ts +257 -0
  111. package/skills/octocode-code-engineer/src/analysis/discovery.test.ts +420 -0
  112. package/skills/octocode-code-engineer/src/analysis/discovery.ts +87 -0
  113. package/skills/octocode-code-engineer/src/analysis/graph-analytics.test.ts +449 -0
  114. package/skills/octocode-code-engineer/src/analysis/graph-analytics.ts +534 -0
  115. package/skills/octocode-code-engineer/src/analysis/semantic.test.ts +1533 -0
  116. package/skills/octocode-code-engineer/src/analysis/semantic.ts +830 -0
  117. package/skills/octocode-code-engineer/src/ast/helpers.test.ts +185 -0
  118. package/skills/octocode-code-engineer/src/ast/helpers.ts +62 -0
  119. package/skills/octocode-code-engineer/src/ast/metrics.test.ts +304 -0
  120. package/skills/octocode-code-engineer/src/ast/metrics.ts +204 -0
  121. package/skills/octocode-code-engineer/src/ast/search.test.ts +647 -0
  122. package/skills/octocode-code-engineer/src/ast/search.ts +648 -0
  123. package/skills/octocode-code-engineer/src/ast/tree-search.test.ts +199 -0
  124. package/skills/octocode-code-engineer/src/ast/tree-search.ts +392 -0
  125. package/skills/octocode-code-engineer/src/ast/tree-sitter.test.ts +407 -0
  126. package/skills/octocode-code-engineer/src/ast/tree-sitter.ts +402 -0
  127. package/skills/octocode-code-engineer/src/ast/ts-analyzer.test.ts +1864 -0
  128. package/skills/octocode-code-engineer/src/ast/ts-analyzer.ts +509 -0
  129. package/skills/octocode-code-engineer/src/collectors/chains.ts +74 -0
  130. package/skills/octocode-code-engineer/src/collectors/effects.test.ts +490 -0
  131. package/skills/octocode-code-engineer/src/collectors/effects.ts +332 -0
  132. package/skills/octocode-code-engineer/src/collectors/input-sources.test.ts +144 -0
  133. package/skills/octocode-code-engineer/src/collectors/input-sources.ts +196 -0
  134. package/skills/octocode-code-engineer/src/collectors/performance.test.ts +82 -0
  135. package/skills/octocode-code-engineer/src/collectors/performance.ts +141 -0
  136. package/skills/octocode-code-engineer/src/collectors/prototype-pollution.test.ts +55 -0
  137. package/skills/octocode-code-engineer/src/collectors/prototype-pollution.ts +162 -0
  138. package/skills/octocode-code-engineer/src/collectors/security.test.ts +124 -0
  139. package/skills/octocode-code-engineer/src/collectors/security.ts +309 -0
  140. package/skills/octocode-code-engineer/src/collectors/test-profile.test.ts +97 -0
  141. package/skills/octocode-code-engineer/src/collectors/test-profile.ts +269 -0
  142. package/skills/octocode-code-engineer/src/common/is-direct-run.test.ts +32 -0
  143. package/skills/octocode-code-engineer/src/common/is-direct-run.ts +13 -0
  144. package/skills/octocode-code-engineer/src/common/utils.test.ts +463 -0
  145. package/skills/octocode-code-engineer/src/common/utils.ts +304 -0
  146. package/skills/octocode-code-engineer/src/detectors/code-quality.ts +966 -0
  147. package/skills/octocode-code-engineer/src/detectors/cohesion.ts +539 -0
  148. package/skills/octocode-code-engineer/src/detectors/coupling.ts +323 -0
  149. package/skills/octocode-code-engineer/src/detectors/cycle.ts +349 -0
  150. package/skills/octocode-code-engineer/src/detectors/dead-code.ts +320 -0
  151. package/skills/octocode-code-engineer/src/detectors/import-style.ts +376 -0
  152. package/skills/octocode-code-engineer/src/detectors/index.test.ts +3061 -0
  153. package/skills/octocode-code-engineer/src/detectors/index.ts +88 -0
  154. package/skills/octocode-code-engineer/src/detectors/security.test.ts +882 -0
  155. package/skills/octocode-code-engineer/src/detectors/security.ts +821 -0
  156. package/skills/octocode-code-engineer/src/detectors/semantic.ts +758 -0
  157. package/skills/octocode-code-engineer/src/detectors/shared.ts +49 -0
  158. package/skills/octocode-code-engineer/src/detectors/test-quality.test.ts +388 -0
  159. package/skills/octocode-code-engineer/src/detectors/test-quality.ts +367 -0
  160. package/skills/octocode-code-engineer/src/index.test.ts +4425 -0
  161. package/skills/octocode-code-engineer/src/index.ts +403 -0
  162. package/skills/octocode-code-engineer/src/pipeline/cache.test.ts +199 -0
  163. package/skills/octocode-code-engineer/src/pipeline/cache.ts +130 -0
  164. package/skills/octocode-code-engineer/src/pipeline/cli.test.ts +493 -0
  165. package/skills/octocode-code-engineer/src/pipeline/cli.ts +344 -0
  166. package/skills/octocode-code-engineer/src/pipeline/main.test.ts +174 -0
  167. package/skills/octocode-code-engineer/src/pipeline/main.ts +1074 -0
  168. package/skills/octocode-code-engineer/src/pipeline.test.ts +84 -0
  169. package/skills/octocode-code-engineer/src/reporting/analysis.test.ts +782 -0
  170. package/skills/octocode-code-engineer/src/reporting/analysis.ts +688 -0
  171. package/skills/octocode-code-engineer/src/reporting/output-contract.test.ts +463 -0
  172. package/skills/octocode-code-engineer/src/reporting/summary-md.test.ts +421 -0
  173. package/skills/octocode-code-engineer/src/reporting/summary-md.ts +714 -0
  174. package/skills/octocode-code-engineer/src/reporting/writer.ts +430 -0
  175. package/skills/octocode-code-engineer/src/sanity.test.ts +47 -0
  176. package/skills/octocode-code-engineer/src/types/constants.ts +248 -0
  177. package/skills/octocode-code-engineer/src/types/index.ts +80 -0
  178. package/skills/octocode-code-engineer/src/types/interfaces.ts +682 -0
  179. package/skills/octocode-code-engineer/tsconfig.json +17 -0
  180. package/skills/octocode-code-engineer/vitest.config.ts +8 -0
  181. package/skills/octocode-documentation-writer/README.md +113 -0
  182. package/skills/octocode-documentation-writer/SKILL.md +886 -0
  183. package/skills/octocode-documentation-writer/references/agent-discovery-analysis.md +453 -0
  184. package/skills/octocode-documentation-writer/references/agent-documentation-writer.md +255 -0
  185. package/skills/octocode-documentation-writer/references/agent-engineer-questions.md +247 -0
  186. package/skills/octocode-documentation-writer/references/agent-orchestrator.md +370 -0
  187. package/skills/octocode-documentation-writer/references/agent-qa-validator.md +227 -0
  188. package/skills/octocode-documentation-writer/references/agent-researcher.md +250 -0
  189. package/skills/octocode-documentation-writer/schemas/analysis-schema.json +886 -0
  190. package/skills/octocode-documentation-writer/schemas/discovery-tasks.json +96 -0
  191. package/skills/octocode-documentation-writer/schemas/documentation-structure.json +373 -0
  192. package/skills/octocode-documentation-writer/schemas/partial-discovery-schema.json +102 -0
  193. package/skills/octocode-documentation-writer/schemas/partial-research-schema.json +98 -0
  194. package/skills/octocode-documentation-writer/schemas/qa-results-schema.json +113 -0
  195. package/skills/octocode-documentation-writer/schemas/questions-schema.json +228 -0
  196. package/skills/octocode-documentation-writer/schemas/research-schema.json +104 -0
  197. package/skills/octocode-documentation-writer/schemas/state-schema.json +222 -0
  198. package/skills/octocode-documentation-writer/schemas/work-assignments-schema.json +74 -0
  199. package/skills/octocode-plan/SKILL.md +122 -116
  200. package/skills/octocode-prompt-optimizer/SKILL.md +617 -0
  201. package/skills/octocode-pull-request-reviewer/README.md +249 -0
  202. package/skills/octocode-pull-request-reviewer/SKILL.md +479 -0
  203. package/skills/octocode-pull-request-reviewer/references/dependency-check.md +74 -0
  204. package/skills/octocode-pull-request-reviewer/references/domain-reviewers.md +24 -0
  205. package/skills/octocode-pull-request-reviewer/references/execution-lifecycle.md +441 -0
  206. package/skills/octocode-pull-request-reviewer/references/flow-analysis-protocol.md +64 -0
  207. package/skills/octocode-pull-request-reviewer/references/output-template.md +174 -0
  208. package/skills/octocode-pull-request-reviewer/references/parallel-agent-protocol.md +182 -0
  209. package/skills/octocode-pull-request-reviewer/references/review-guidelines.md +26 -0
  210. package/skills/octocode-pull-request-reviewer/references/verification-checklist.md +40 -0
  211. package/skills/octocode-research/.claude/settings.local.json +46 -0
  212. package/skills/octocode-research/.octocode/plan/code-review-fixes/plan.md +312 -0
  213. package/skills/octocode-research/.octocode/plan/code-review-fixes/research.md +212 -0
  214. package/skills/octocode-research/.octocode/plans/NODE_SERVER_START_PLAN.md +755 -0
  215. package/skills/octocode-research/.octocode/research/code-review/research.md +371 -0
  216. package/skills/octocode-research/.octocode/review/IMPROVEMENTS.md +391 -0
  217. package/skills/octocode-research/.octocode/review/REVIEW_PLAN.md +289 -0
  218. package/skills/octocode-research/.octocode/review/REVIEW_REPORT.md +356 -0
  219. package/skills/octocode-research/AGENTS.md +349 -0
  220. package/skills/octocode-research/README.md +494 -0
  221. package/skills/octocode-research/SKILL.md +652 -274
  222. package/skills/octocode-research/docs/API_REFERENCE.md +562 -0
  223. package/skills/octocode-research/docs/ARCHITECTURE.md +554 -0
  224. package/skills/octocode-research/docs/FLOWS.md +577 -0
  225. package/skills/octocode-research/docs/OVERVIEW.md +564 -0
  226. package/skills/octocode-research/docs/SERVER_FLOWS.md +631 -0
  227. package/skills/octocode-research/ecosystem.config.cjs +88 -0
  228. package/skills/octocode-research/eslint.config.mjs +27 -0
  229. package/skills/octocode-research/package.json +84 -0
  230. package/skills/octocode-research/references/GUARDRAILS.md +40 -0
  231. package/skills/octocode-research/references/PARALLEL_AGENT_PROTOCOL.md +178 -0
  232. package/skills/octocode-research/references/roast-prompt.md +149 -0
  233. package/skills/octocode-research/scripts/server-init.d.ts +2 -0
  234. package/skills/octocode-research/scripts/server-init.js +2 -0
  235. package/skills/octocode-research/scripts/server.d.ts +8 -0
  236. package/skills/octocode-research/scripts/server.js +445 -0
  237. package/skills/octocode-research/src/__tests__/integration/circuitBreaker.test.ts +205 -0
  238. package/skills/octocode-research/src/__tests__/integration/routes.test.ts +374 -0
  239. package/skills/octocode-research/src/__tests__/unit/circuitBreaker.test.ts +245 -0
  240. package/skills/octocode-research/src/__tests__/unit/errorHandler.test.ts +183 -0
  241. package/skills/octocode-research/src/__tests__/unit/httpPreprocess.test.ts +157 -0
  242. package/skills/octocode-research/src/__tests__/unit/logger.test.ts +143 -0
  243. package/skills/octocode-research/src/__tests__/unit/queryParser.test.ts +130 -0
  244. package/skills/octocode-research/src/__tests__/unit/responseBuilder.test.ts +469 -0
  245. package/skills/octocode-research/src/__tests__/unit/retry.test.ts +205 -0
  246. package/skills/octocode-research/src/index.ts +186 -0
  247. package/skills/octocode-research/src/mcpCache.ts +49 -0
  248. package/skills/octocode-research/src/middleware/errorHandler.ts +65 -0
  249. package/skills/octocode-research/src/middleware/logger.ts +61 -0
  250. package/skills/octocode-research/src/middleware/queryParser.ts +115 -0
  251. package/skills/octocode-research/src/middleware/readiness.ts +17 -0
  252. package/skills/octocode-research/src/routes/github.ts +197 -0
  253. package/skills/octocode-research/src/routes/local.ts +175 -0
  254. package/skills/octocode-research/src/routes/lsp.ts +177 -0
  255. package/skills/octocode-research/src/routes/package.ts +127 -0
  256. package/skills/octocode-research/src/routes/prompts.ts +138 -0
  257. package/skills/octocode-research/src/routes/tools.ts +677 -0
  258. package/skills/octocode-research/src/server-init.ts +363 -0
  259. package/skills/octocode-research/src/server.ts +285 -0
  260. package/skills/octocode-research/src/types/errorGuards.ts +151 -0
  261. package/skills/octocode-research/src/types/express.d.ts +76 -0
  262. package/skills/octocode-research/src/types/guards.ts +98 -0
  263. package/skills/octocode-research/src/types/mcp.ts +119 -0
  264. package/skills/octocode-research/src/types/responses.ts +199 -0
  265. package/skills/octocode-research/src/types/toolTypes.ts +33 -0
  266. package/skills/octocode-research/src/utils/asyncTimeout.ts +116 -0
  267. package/skills/octocode-research/src/utils/circuitBreaker.ts +492 -0
  268. package/skills/octocode-research/src/utils/colors.ts +53 -0
  269. package/skills/octocode-research/src/utils/errorQueue.ts +71 -0
  270. package/skills/octocode-research/src/utils/logEmoji.ts +103 -0
  271. package/skills/octocode-research/src/utils/logger.ts +413 -0
  272. package/skills/octocode-research/src/utils/resilience.ts +169 -0
  273. package/skills/octocode-research/src/utils/responseBuilder.ts +495 -0
  274. package/skills/octocode-research/src/utils/responseFactory.ts +100 -0
  275. package/skills/octocode-research/src/utils/responseParser.ts +272 -0
  276. package/skills/octocode-research/src/utils/retry.ts +280 -0
  277. package/skills/octocode-research/src/utils/routeFactory.ts +117 -0
  278. package/skills/octocode-research/src/utils/url.ts +20 -0
  279. package/skills/octocode-research/src/validation/httpPreprocess.ts +155 -0
  280. package/skills/octocode-research/src/validation/index.ts +2 -0
  281. package/skills/octocode-research/src/validation/schemas.ts +578 -0
  282. package/skills/octocode-research/src/validation/toolCallSchema.ts +132 -0
  283. package/skills/octocode-research/tsconfig.json +21 -0
  284. package/skills/octocode-research/tsdown.config.ts +42 -0
  285. package/skills/octocode-research/vitest.config.ts +20 -0
  286. package/skills/octocode-researcher/SKILL.md +461 -0
  287. package/skills/octocode-researcher/references/fallbacks.md +120 -0
  288. package/skills/{octocode-local-search → octocode-researcher}/references/tool-reference.md +132 -49
  289. package/skills/{octocode-local-search → octocode-researcher}/references/workflow-patterns.md +204 -4
  290. package/skills/octocode-rfc-generator/SKILL.md +223 -0
  291. package/skills/octocode-rfc-generator/references/rfc-template.md +193 -0
  292. package/skills/octocode-roast/SKILL.md +63 -21
  293. package/skills/octocode-implement/SKILL.md +0 -293
  294. package/skills/octocode-implement/references/execution-phases.md +0 -317
  295. package/skills/octocode-implement/references/tool-reference.md +0 -403
  296. package/skills/octocode-implement/references/workflow-patterns.md +0 -385
  297. package/skills/octocode-local-search/SKILL.md +0 -449
  298. package/skills/octocode-pr-review/SKILL.md +0 -391
  299. package/skills/octocode-pr-review/references/domain-reviewers.md +0 -105
  300. package/skills/octocode-pr-review/references/execution-lifecycle.md +0 -116
  301. package/skills/octocode-pr-review/references/research-flows.md +0 -75
  302. package/skills/octocode-research/references/tool-reference.md +0 -304
  303. package/skills/octocode-research/references/workflow-patterns.md +0 -325
@@ -0,0 +1,631 @@
1
+ # Server Flows - Octocode Research Server
2
+
3
+ > Comprehensive documentation of startup, restart, health, and shutdown flows.
4
+ > **v2.1.0**: Now powered by PM2 process manager.
5
+
6
+ ## Table of Contents
7
+
8
+ - [Overview](#overview)
9
+ - [Architecture Diagram](#architecture-diagram)
10
+ - [1. Startup Flow](#1-startup-flow)
11
+ - [2. Request Flow](#2-request-flow)
12
+ - [3. Health Check Flow](#3-health-check-flow)
13
+ - [4. PM2 Restart Strategies](#4-pm2-restart-strategies)
14
+ - [5. Graceful Shutdown Flow](#5-graceful-shutdown-flow)
15
+ - [Component Reference](#component-reference)
16
+ - [PM2 Commands Reference](#pm2-commands-reference)
17
+
18
+ ---
19
+
20
+ ## Overview
21
+
22
+ | Attribute | Value |
23
+ |-----------|-------|
24
+ | **Port** | 1987 |
25
+ | **Version** | 2.1.0 |
26
+ | **Process Manager** | PM2 |
27
+ | **Restart Strategy** | Cron (hourly) + Memory threshold |
28
+ | **Max Memory** | 500MB |
29
+ | **Kill Timeout** | 10 seconds |
30
+
31
+ ### Key Design Patterns
32
+
33
+ - **Warm Start**: Server accepts requests immediately, MCP initializes in background
34
+ - **PM2 Process Management**: Automatic restarts, monitoring, and log management
35
+ - **Cron Restart**: Server restarts hourly for memory hygiene (via PM2)
36
+ - **Memory Guard**: Auto-restart if memory exceeds 500MB (via PM2)
37
+ - **Circuit Breaker**: Protects external calls with failure thresholds
38
+ - **Fire-and-Forget**: Background telemetry doesn't block responses
39
+ - **Readiness Gate**: `/tools` and `/prompts` routes blocked until MCP ready
40
+ - **Ready Signal**: PM2 waits for `process.send('ready')` before considering app online
41
+
42
+ ---
43
+
44
+ ## Architecture Diagram
45
+
46
+ ```
47
+ ┌─────────────────────────────────────────────────────────────────────────────┐
48
+ │ SERVER LIFECYCLE (PM2) │
49
+ ├─────────────────────────────────────────────────────────────────────────────┤
50
+ │ │
51
+ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
52
+ │ │ STARTUP │───▶│ RUNNING │───▶│ SHUTDOWN │ │
53
+ │ └──────────────┘ └──────────────┘ └──────────────┘ │
54
+ │ │ │ ▲ │
55
+ │ │ │ │ │
56
+ │ ▼ ▼ │ │
57
+ │ ┌──────────────┐ ┌──────────────┐ ┌─────┴────────┐ │
58
+ │ │ INITIALIZING │ │ PM2 CRON │───▶│ CRON_RESTART │ │
59
+ │ │ wait_ready │ │ (every hour) │ │ (hourly) │ │
60
+ │ └──────────────┘ └──────────────┘ └──────────────┘ │
61
+ │ │ │ │
62
+ │ │ │ │
63
+ │ │ ┌──────────────┐ │ │
64
+ │ │ │ MEMORY CHECK │───────────┤ │
65
+ │ │ │ (> 500MB) │ │ │
66
+ │ │ └──────────────┘ │ │
67
+ │ │ │ │
68
+ │ └────────── process.send('ready') ─────▶│ │
69
+ │ │
70
+ └─────────────────────────────────────────────────────────────────────────────┘
71
+
72
+ ┌─────────────────────────────────────────────────────────────────────────────┐
73
+ │ REQUEST FLOW │
74
+ ├─────────────────────────────────────────────────────────────────────────────┤
75
+ │ │
76
+ │ Request ──▶ [requestLogger] ──▶ [Route Handler] │
77
+ │ │ │
78
+ │ ┌────────────────┴───────┐ │
79
+ │ ▼ ▼ │
80
+ │ /health /tools, /prompts │
81
+ │ (always) [checkReadiness] │
82
+ │ │ │ │
83
+ │ ▼ ▼ │
84
+ │ JSON Response 503 if !initialized │
85
+ │ 200 if ready │
86
+ │ │
87
+ └─────────────────────────────────────────────────────────────────────────────┘
88
+ ```
89
+
90
+ ---
91
+
92
+ ## 1. Startup Flow
93
+
94
+ ### Sequence Diagram
95
+
96
+ ```
97
+ ┌──────────┐ ┌───────────┐ ┌────────────┐ ┌──────────────┐ ┌───────────┐
98
+ │ PM2 │ │ createSvr │ │ startSvr │ │ Background │ │ Ready │
99
+ └────┬─────┘ └─────┬─────┘ └─────┬──────┘ └──────┬───────┘ └─────┬─────┘
100
+ │ │ │ │ │
101
+ │ pm2 start │ │ │ │
102
+ │─────────────▶│ │ │ │
103
+ │ │ │ │ │
104
+ │ │ createServer() │ │
105
+ │ │─────────────▶│ │ │
106
+ │ │ │ │ │
107
+ │ │ ┌────────────┴────────────┐ │ │
108
+ │ │ │ 1. initializeLogger() │ │ │
109
+ │ │ │ 2. initializeSession() │ │ │
110
+ │ │ │ 3. Setup middleware │ │ │
111
+ │ │ │ 4. Mount routes │ │ │
112
+ │ │ │ 5. Error handlers │ │ │
113
+ │ │ └────────────┬────────────┘ │ │
114
+ │ │ │ │ │
115
+ │ │◀─────────────│ │ │
116
+ │ │ app │ │ │
117
+ │ │ │ │ │
118
+ │ │ │ app.listen(1987) │
119
+ │ │ │───────────────▶│ │
120
+ │ │ │ │ │
121
+ │ │ │ 'listening' │ │
122
+ │ │ │◀───────────────│ │
123
+ │ │ │ │ │
124
+ │ │ │ ┌──────────────┴──────────────┐ │
125
+ │ │ │ │ BACKGROUND (async): │ │
126
+ │ │ │ │ 1. initializeMcpContent() │ │
127
+ │ │ │ │ 2. initializeProviders() │ │
128
+ │ │ │ │ 3. process.send('ready') │ │
129
+ │ │ │ │ 4. logSessionInit() │ │
130
+ │ │ │ └──────────────┬──────────────┘ │
131
+ │ │ │ │ │
132
+ │◀──────────── process.send('ready') ─────────│ │
133
+ │ (PM2 marks app 'online') │ │ MCP Ready! │
134
+ │ │ │ │───────────────▶│
135
+ │ │ │ │ │
136
+ ```
137
+
138
+ ### Phase 1: Synchronous Setup (`createServer`)
139
+
140
+ ```typescript
141
+ // Order matters! These run synchronously before server accepts requests
142
+
143
+ 1. initializeLogger() // Creates log directory, sets up file logging
144
+ 2. initializeSession() // Generates session ID for telemetry
145
+ 3. Express middleware stack:
146
+ ├── express.json() // Parse JSON bodies
147
+ └── requestLogger // Log all requests with timing
148
+ 4. Route mounting:
149
+ ├── GET /health // Always available (no readiness check)
150
+ ├── /tools/* // checkReadiness middleware applied
151
+ └── /prompts/* // checkReadiness middleware applied
152
+ 5. Error handlers:
153
+ ├── 404 handler // Unknown routes
154
+ └── errorHandler middleware // Catch-all error formatting
155
+ ```
156
+
157
+ ### Phase 2: HTTP Server Start (`startServer`)
158
+
159
+ ```typescript
160
+ app.listen(PORT)
161
+ .on('listening', () => {
162
+ // Server is now accepting connections
163
+ // Status: 'initializing' (health check returns this)
164
+ });
165
+ ```
166
+
167
+ ### Phase 3: Background Initialization (Warm Start)
168
+
169
+ ```typescript
170
+ // These run async AFTER server is listening
171
+ // Requests to /tools/* return 503 until complete
172
+
173
+ 1. initializeMcpContent() // Load MCP tools, schemas, prompts from octocode-mcp
174
+ ├── await initialize() // Core MCP initialization
175
+ └── await loadToolContent() // Cache tool metadata
176
+
177
+ 2. initializeProviders() // Initialize GitHub token, providers
178
+ └── Resolves token from env/keychain/CLI
179
+
180
+ 3. process.send('ready') // Signal PM2 that app is ready
181
+ └── PM2 marks process as 'online'
182
+
183
+ 4. logSessionInit() // Fire-and-forget telemetry
184
+ └── 5s timeout, errors queued
185
+ ```
186
+
187
+ ### State Transitions
188
+
189
+ | State | Health Status | `/tools` Available | PM2 Status | Duration |
190
+ |-------|---------------|-------------------|------------|----------|
191
+ | Starting | N/A | No | starting | ~100ms |
192
+ | Listening | `'initializing'` | 503 | waiting ready | ~1-3s |
193
+ | Ready | `'ok'` | Yes | online | Until shutdown |
194
+
195
+ ---
196
+
197
+ ## 2. Request Flow
198
+
199
+ ### Middleware Chain
200
+
201
+ ```
202
+ ┌─────────────────────────────────────────────────────────────────────────────┐
203
+ │ REQUEST MIDDLEWARE CHAIN │
204
+ ├─────────────────────────────────────────────────────────────────────────────┤
205
+ │ │
206
+ │ Incoming Request │
207
+ │ │ │
208
+ │ ▼ │
209
+ │ ┌──────────────────┐ │
210
+ │ │ express.json() │ Parse JSON body │
211
+ │ └────────┬─────────┘ │
212
+ │ │ │
213
+ │ ▼ │
214
+ │ ┌──────────────────┐ │
215
+ │ │ requestLogger │ Log request, attach x-request-id │
216
+ │ └────────┬─────────┘ │
217
+ │ │ │
218
+ │ ├───────────────────────────────────┐ │
219
+ │ │ │ │
220
+ │ ▼ ▼ │
221
+ │ ┌─────────────┐ ┌────────────────┐ │
222
+ │ │ /health │ │ /tools, /prompts│ │
223
+ │ │ (direct) │ │ checkReadiness │ │
224
+ │ └──────┬──────┘ └───────┬────────┘ │
225
+ │ │ │ │
226
+ │ │ ┌────────────┴────────────┐ │
227
+ │ │ │ │ │
228
+ │ │ ▼ ▼ │
229
+ │ │ MCP Initialized? Not Initialized │
230
+ │ │ YES NO │
231
+ │ │ │ │ │
232
+ │ │ ▼ ▼ │
233
+ │ │ Route Handler 503 + retry hint │
234
+ │ │ │ │
235
+ │ ▼ ▼ │
236
+ │ ┌─────────────────────────────────────────────────────┐ │
237
+ │ │ Response │ │
238
+ │ │ - requestLogger logs on 'finish' event │ │
239
+ │ │ - logToolCall() fired async (non-blocking) │ │
240
+ │ └─────────────────────────────────────────────────────┘ │
241
+ │ │
242
+ └─────────────────────────────────────────────────────────────────────────────┘
243
+ ```
244
+
245
+ ### Request Logger Details
246
+
247
+ ```typescript
248
+ // Attaches to response 'finish' event
249
+ res.on('finish', () => {
250
+ const duration = Date.now() - start;
251
+ const status = res.statusCode;
252
+
253
+ // Console log (colored)
254
+ console.log(status >= 400 ? errorLog(...) : resultLog(...));
255
+
256
+ // File log (async, non-blocking)
257
+ if (req.path !== '/health') {
258
+ logToolCall({ tool, route, duration, success, requestId });
259
+ }
260
+ });
261
+ ```
262
+
263
+ ### Readiness Check Middleware
264
+
265
+ ```typescript
266
+ // Applied to /tools/* and /prompts/* routes
267
+ export const checkReadiness = (_req, res, next) => {
268
+ if (!isMcpInitialized()) {
269
+ res.status(503).json({
270
+ success: false,
271
+ error: {
272
+ message: 'Server is initializing',
273
+ code: 'SERVER_INITIALIZING',
274
+ hint: 'Please retry in a few seconds',
275
+ },
276
+ });
277
+ return;
278
+ }
279
+ next();
280
+ };
281
+ ```
282
+
283
+ ---
284
+
285
+ ## 3. Health Check Flow
286
+
287
+ ### Endpoint: `GET /health`
288
+
289
+ ```
290
+ ┌─────────────────────────────────────────────────────────────────────────────┐
291
+ │ HEALTH CHECK FLOW │
292
+ ├─────────────────────────────────────────────────────────────────────────────┤
293
+ │ │
294
+ │ GET /health │
295
+ │ │ │
296
+ │ ├──▶ process.memoryUsage() // Heap, RSS stats │
297
+ │ │ │
298
+ │ ├──▶ errorQueue.getRecent(5) // Last 5 queued errors │
299
+ │ │ │
300
+ │ ├──▶ isMcpInitialized() // true = 'ok', false = 'init' │
301
+ │ │ │
302
+ │ ├──▶ getAllCircuitStates() // Circuit breaker health │
303
+ │ │ │
304
+ │ └──▶ Response │
305
+ │ │
306
+ └─────────────────────────────────────────────────────────────────────────────┘
307
+ ```
308
+
309
+ ### Response Schema
310
+
311
+ ```typescript
312
+ {
313
+ status: 'ok' | 'initializing',
314
+ port: 1987,
315
+ version: '2.1.0',
316
+ uptime: number, // seconds since process start
317
+ processManager: 'pm2',
318
+ memory: {
319
+ heapUsed: number, // MB
320
+ heapTotal: number, // MB
321
+ rss: number, // MB (Resident Set Size)
322
+ },
323
+ circuits: {
324
+ [circuitName]: {
325
+ state: 'closed' | 'open' | 'half-open',
326
+ failures: number,
327
+ lastFailure: Date | null,
328
+ }
329
+ },
330
+ errors: {
331
+ queueSize: number,
332
+ recentErrors: [{
333
+ timestamp: string, // ISO 8601
334
+ context: string,
335
+ message: string,
336
+ }]
337
+ }
338
+ }
339
+ ```
340
+
341
+ ### Health Check Behavior
342
+
343
+ | Condition | Status | Notes |
344
+ |-----------|--------|-------|
345
+ | MCP not initialized | `'initializing'` | Background init in progress |
346
+ | MCP initialized | `'ok'` | All routes available |
347
+ | Circuit open | `'ok'` | Degraded but functional |
348
+ | Errors in queue | `'ok'` | Errors are informational |
349
+
350
+ ---
351
+
352
+ ## 4. PM2 Restart Strategies
353
+
354
+ ### Overview
355
+
356
+ PM2 manages all restart logic via `ecosystem.config.cjs`:
357
+
358
+ ```
359
+ ┌─────────────────────────────────────────────────────────────────────────────┐
360
+ │ PM2 RESTART STRATEGIES │
361
+ ├─────────────────────────────────────────────────────────────────────────────┤
362
+ │ │
363
+ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
364
+ │ │ CRON RESTART │ │MEMORY RESTART│ │CRASH RESTART │ │
365
+ │ │ (hourly) │ │ (> 500MB) │ │ (on error) │ │
366
+ │ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
367
+ │ │ │ │ │
368
+ │ ▼ ▼ ▼ │
369
+ │ ┌─────────────────────────────────────────────────────────────┐ │
370
+ │ │ SIGINT → gracefulShutdown() │ │
371
+ │ │ │ │
372
+ │ │ 1. stopCircuitCleanup() ✅ Intervals cleared │ │
373
+ │ │ 2. clearAllCircuits() ✅ Circuit breakers reset │ │
374
+ │ │ 3. server.close() ✅ HTTP connections drained │ │
375
+ │ │ 4. process.exit(0) ✅ Clean exit │ │
376
+ │ │ │ │
377
+ │ └─────────────────────────────────────────────────────────────┘ │
378
+ │ │ │
379
+ │ ▼ │
380
+ │ ┌─────────────────────────────────────────────────────────────┐ │
381
+ │ │ PM2 Auto-Restart │ │
382
+ │ │ │ │
383
+ │ │ - restart_delay: 1000ms │ │
384
+ │ │ - exp_backoff_restart_delay: 100ms (on crashes) │ │
385
+ │ │ - max_restarts: 10 (before stopping) │ │
386
+ │ │ │ │
387
+ │ └─────────────────────────────────────────────────────────────┘ │
388
+ │ │
389
+ └─────────────────────────────────────────────────────────────────────────────┘
390
+ ```
391
+
392
+ ### Restart Triggers
393
+
394
+ | Trigger | Condition | Behavior |
395
+ |---------|-----------|----------|
396
+ | **Cron** | Every hour (`0 * * * *`) | Graceful restart for memory hygiene |
397
+ | **Memory** | RSS > 500MB | Automatic restart when threshold exceeded |
398
+ | **Crash** | `process.exit(1)` | Restart with exponential backoff |
399
+ | **Manual** | `pm2 restart` | Graceful reload |
400
+
401
+ ### Ecosystem Configuration
402
+
403
+ ```javascript
404
+ // ecosystem.config.cjs
405
+ module.exports = {
406
+ apps: [{
407
+ name: 'octocode-research',
408
+ script: './scripts/server.js',
409
+
410
+ // Restart strategies
411
+ cron_restart: '0 * * * *', // Every hour
412
+ max_memory_restart: '500M', // Memory threshold
413
+
414
+ // Graceful shutdown
415
+ kill_timeout: 10000, // 10s before SIGKILL
416
+ wait_ready: true, // Wait for process.send('ready')
417
+ listen_timeout: 15000, // Timeout for ready signal
418
+
419
+ // Restart behavior
420
+ autorestart: true,
421
+ max_restarts: 10,
422
+ restart_delay: 1000,
423
+ exp_backoff_restart_delay: 100,
424
+ }]
425
+ };
426
+ ```
427
+
428
+ ---
429
+
430
+ ## 5. Graceful Shutdown Flow
431
+
432
+ ### Triggers
433
+
434
+ | Signal | Source |
435
+ |--------|--------|
436
+ | `SIGTERM` | `pm2 stop`, `pm2 restart`, `kill <pid>` |
437
+ | `SIGINT` | Ctrl+C in terminal, PM2 graceful reload |
438
+
439
+ ### Sequence Diagram
440
+
441
+ ```
442
+ ┌─────────────────────────────────────────────────────────────────────────────┐
443
+ │ GRACEFUL SHUTDOWN FLOW │
444
+ ├─────────────────────────────────────────────────────────────────────────────┤
445
+ │ │
446
+ │ PM2 sends SIGINT (graceful) or SIGTERM │
447
+ │ │ │
448
+ │ ▼ │
449
+ │ ┌──────────────────┐ │
450
+ │ │ gracefulShutdown │ │
451
+ │ │ (signal) │ │
452
+ │ └────────┬─────────┘ │
453
+ │ │ │
454
+ │ ├──▶ stopCircuitCleanup() // Clear circuit cleanup interval │
455
+ │ │ │ │
456
+ │ │ └──▶ clearInterval(cleanupIntervalId) │
457
+ │ │ │
458
+ │ ├──▶ clearAllCircuits() // Reset all circuit breakers │
459
+ │ │ │ │
460
+ │ │ └──▶ circuits.clear(), configs.clear() │
461
+ │ │ │
462
+ │ └──▶ server.close() // Stop accepting new connections │
463
+ │ │ │
464
+ │ ┌─────────┴─────────┐ │
465
+ │ │ │ │
466
+ │ ▼ ▼ │
467
+ │ Success (< 10s) Timeout (10s) │
468
+ │ │ │ │
469
+ │ ▼ ▼ │
470
+ │ process.exit(0) PM2 sends SIGKILL │
471
+ │ │ │ │
472
+ │ └─────────┬─────────┘ │
473
+ │ │ │
474
+ │ ▼ │
475
+ │ PM2 Auto-Restart │
476
+ │ │
477
+ └─────────────────────────────────────────────────────────────────────────────┘
478
+ ```
479
+
480
+ ### Cleanup Order
481
+
482
+ ```typescript
483
+ function gracefulShutdown(signal: string): void {
484
+ console.log(`🛑 Received ${signal}. Starting graceful shutdown...`);
485
+
486
+ // 1. Stop periodic cleanup interval
487
+ stopCircuitCleanup(); // ✅ Circuit cleanup interval stopped
488
+
489
+ // 2. Clear circuit breaker state
490
+ clearAllCircuits(); // ✅ Circuit breakers cleared
491
+
492
+ // 3. Close HTTP server (drain existing connections)
493
+ if (server) {
494
+ server.close((err) => {
495
+ if (err) {
496
+ console.error('❌ Error closing server:', err);
497
+ process.exit(1);
498
+ }
499
+ console.log('✅ HTTP server closed');
500
+ process.exit(0); // PM2 handles restart
501
+ });
502
+ } else {
503
+ process.exit(0);
504
+ }
505
+ }
506
+ ```
507
+
508
+ ### Exit Codes
509
+
510
+ | Code | Meaning | PM2 Behavior |
511
+ |------|---------|--------------|
512
+ | 0 | Clean shutdown | Restart (unless `autorestart: false`) |
513
+ | 1 | Error during shutdown | Restart with backoff |
514
+
515
+ ---
516
+
517
+ ## Component Reference
518
+
519
+ ### Files & Responsibilities
520
+
521
+ | File | Purpose |
522
+ |------|---------|
523
+ | `ecosystem.config.cjs` | PM2 process configuration |
524
+ | `server.ts` | Main entry, lifecycle management |
525
+ | `mcpCache.ts` | MCP content singleton, initialization |
526
+ | `index.ts` | Re-exports from octocode-mcp |
527
+ | `middleware/readiness.ts` | Blocks routes until MCP ready |
528
+ | `middleware/logger.ts` | Request/response logging |
529
+ | `middleware/errorHandler.ts` | Error response formatting |
530
+ | `utils/circuitBreaker.ts` | External call protection |
531
+ | `utils/asyncTimeout.ts` | Fire-and-forget with timeout |
532
+ | `utils/errorQueue.ts` | Error tracking for health |
533
+ | `utils/logger.ts` | File-based logging |
534
+ | `routes/tools.ts` | Tool execution endpoints |
535
+ | `routes/prompts.ts` | Prompt discovery endpoints |
536
+
537
+ ### State Variables
538
+
539
+ | Variable | Type | Purpose |
540
+ |----------|------|---------|
541
+ | `server` | `Server \| null` | HTTP server instance |
542
+ | `mcpContent` | `CompleteMetadata \| null` | Cached MCP tool metadata |
543
+
544
+ ### Configuration (ecosystem.config.cjs)
545
+
546
+ | Option | Value | Purpose |
547
+ |--------|-------|---------|
548
+ | `cron_restart` | `'0 * * * *'` | Hourly restart for memory hygiene |
549
+ | `max_memory_restart` | `'500M'` | Memory threshold for restart |
550
+ | `kill_timeout` | 10000 | Graceful shutdown timeout (ms) |
551
+ | `wait_ready` | true | Wait for ready signal |
552
+ | `listen_timeout` | 15000 | Ready signal timeout (ms) |
553
+ | `max_restarts` | 10 | Max consecutive restarts |
554
+ | `restart_delay` | 1000 | Delay between restarts (ms) |
555
+
556
+ ---
557
+
558
+ ## PM2 Commands Reference
559
+
560
+ ### NPM Scripts
561
+
562
+ ```bash
563
+ # Start/Stop/Restart
564
+ npm run pm2:start # Start with PM2
565
+ npm run pm2:stop # Stop gracefully
566
+ npm run pm2:restart # Restart (full)
567
+ npm run pm2:reload # Reload (zero-downtime)
568
+ npm run pm2:delete # Remove from PM2
569
+
570
+ # Monitoring
571
+ npm run pm2:logs # View logs (tail -f)
572
+ npm run pm2:monit # TUI dashboard
573
+ ```
574
+
575
+ ### Direct PM2 Commands
576
+
577
+ ```bash
578
+ # Process management
579
+ pm2 start ecosystem.config.cjs # Start
580
+ pm2 stop octocode-research # Stop
581
+ pm2 restart octocode-research # Restart
582
+ pm2 reload octocode-research # Zero-downtime reload
583
+ pm2 delete octocode-research # Remove
584
+
585
+ # Monitoring
586
+ pm2 status # List all processes
587
+ pm2 logs octocode-research # View logs
588
+ pm2 logs octocode-research --lines 100 # View last 100 lines
589
+ pm2 monit # Interactive dashboard
590
+
591
+ # Debugging
592
+ pm2 describe octocode-research # Detailed process info
593
+ pm2 env octocode-research # Environment variables
594
+ pm2 reset octocode-research # Reset restart counter
595
+
596
+ # Log management
597
+ pm2 flush # Clear all logs
598
+ pm2 reloadLogs # Reload log files
599
+ ```
600
+
601
+ ### Development vs Production
602
+
603
+ ```bash
604
+ # Development (direct Node, with watch)
605
+ npm run dev # tsx watch src/server.ts
606
+
607
+ # Production (PM2 managed)
608
+ npm run build # Build TypeScript
609
+ npm run pm2:start # Start with PM2
610
+ ```
611
+
612
+ ---
613
+
614
+ ## Migration from v2.0.0
615
+
616
+ ### Removed Features (Handled by PM2)
617
+
618
+ | Feature | Old Implementation | PM2 Equivalent |
619
+ |---------|-------------------|----------------|
620
+ | Idle restart | `checkIdleRestart()` | `cron_restart: '0 * * * *'` |
621
+ | Idle timer | `lastRequestTime` | N/A |
622
+ | Idle check interval | `setInterval(..., 300000)` | N/A |
623
+ | Shutdown timeout | Manual `setTimeout` | `kill_timeout: 10000` |
624
+
625
+ ### New Features
626
+
627
+ - **Ready Signal**: `process.send('ready')` for accurate startup tracking
628
+ - **Memory Guard**: `max_memory_restart: '500M'`
629
+ - **Exponential Backoff**: `exp_backoff_restart_delay: 100`
630
+ - **PM2 Logs**: Disabled (app handles logging in `~/.octocode/logs/`)
631
+ - **PM2 Monitoring**: `pm2 monit` dashboard