@saluzi/codegraph 0.1.0 → 0.2.1

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 (712) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +885 -0
  3. package/dist/bin/codegraph.d.ts +2 -1
  4. package/dist/bin/codegraph.d.ts.map +1 -0
  5. package/dist/bin/codegraph.js +2248 -0
  6. package/dist/bin/codegraph.js.map +1 -0
  7. package/dist/bin/command-supervision.d.ts +49 -0
  8. package/dist/bin/command-supervision.d.ts.map +1 -0
  9. package/dist/bin/command-supervision.js +95 -0
  10. package/dist/bin/command-supervision.js.map +1 -0
  11. package/dist/bin/fatal-handler.d.ts +20 -0
  12. package/dist/bin/fatal-handler.d.ts.map +1 -0
  13. package/dist/bin/fatal-handler.js +118 -0
  14. package/dist/bin/fatal-handler.js.map +1 -0
  15. package/dist/bin/node-version-check.d.ts.map +1 -0
  16. package/dist/bin/node-version-check.js +79 -0
  17. package/dist/bin/node-version-check.js.map +1 -0
  18. package/dist/bin/uninstall.d.ts.map +1 -0
  19. package/dist/bin/uninstall.js +36 -0
  20. package/dist/bin/uninstall.js.map +1 -0
  21. package/dist/context/formatter.d.ts +6 -9
  22. package/dist/context/formatter.d.ts.map +1 -0
  23. package/dist/context/formatter.js +25 -6
  24. package/dist/context/formatter.js.map +1 -0
  25. package/dist/context/index.d.ts +102 -100
  26. package/dist/context/index.d.ts.map +1 -0
  27. package/dist/context/index.js +252 -6
  28. package/dist/context/index.js.map +1 -0
  29. package/dist/context/markers.d.ts +19 -0
  30. package/dist/context/markers.d.ts.map +1 -0
  31. package/dist/context/markers.js +22 -0
  32. package/dist/context/markers.js.map +1 -0
  33. package/dist/db/index.d.ts +185 -85
  34. package/dist/db/index.d.ts.map +1 -0
  35. package/dist/db/index.js +257 -14
  36. package/dist/db/index.js.map +1 -0
  37. package/dist/db/migrations.d.ts +15 -18
  38. package/dist/db/migrations.d.ts.map +1 -0
  39. package/dist/db/migrations.js +82 -1
  40. package/dist/db/migrations.js.map +1 -0
  41. package/dist/db/queries.d.ts +503 -281
  42. package/dist/db/queries.d.ts.map +1 -0
  43. package/dist/db/queries.js +644 -107
  44. package/dist/db/queries.js.map +1 -0
  45. package/dist/db/schema.sql +69 -26
  46. package/dist/db/sqlite-adapter.d.ts +26 -22
  47. package/dist/db/sqlite-adapter.d.ts.map +1 -0
  48. package/dist/db/sqlite-adapter.js +11 -35
  49. package/dist/db/sqlite-adapter.js.map +1 -0
  50. package/dist/db/wal-valve.d.ts +106 -0
  51. package/dist/db/wal-valve.d.ts.map +1 -0
  52. package/dist/db/wal-valve.js +208 -0
  53. package/dist/db/wal-valve.js.map +1 -0
  54. package/dist/directory.d.ts +140 -19
  55. package/dist/directory.d.ts.map +1 -0
  56. package/dist/directory.js +568 -35
  57. package/dist/directory.js.map +1 -0
  58. package/dist/errors.d.ts +32 -45
  59. package/dist/errors.d.ts.map +1 -0
  60. package/dist/errors.js.map +1 -0
  61. package/dist/extraction/astro-extractor.d.ts +79 -0
  62. package/dist/extraction/astro-extractor.d.ts.map +1 -0
  63. package/dist/extraction/astro-extractor.js +320 -0
  64. package/dist/extraction/astro-extractor.js.map +1 -0
  65. package/dist/extraction/cfml-extractor.d.ts +107 -0
  66. package/dist/extraction/cfml-extractor.d.ts.map +1 -0
  67. package/dist/extraction/cfml-extractor.js +494 -0
  68. package/dist/extraction/cfml-extractor.js.map +1 -0
  69. package/dist/extraction/dfm-extractor.d.ts +17 -17
  70. package/dist/extraction/dfm-extractor.d.ts.map +1 -0
  71. package/dist/extraction/dfm-extractor.js.map +1 -0
  72. package/dist/extraction/extraction-version.d.ts +25 -0
  73. package/dist/extraction/extraction-version.d.ts.map +1 -0
  74. package/dist/extraction/extraction-version.js +28 -0
  75. package/dist/extraction/extraction-version.js.map +1 -0
  76. package/dist/extraction/function-ref.d.ts +118 -0
  77. package/dist/extraction/function-ref.d.ts.map +1 -0
  78. package/dist/extraction/function-ref.js +727 -0
  79. package/dist/extraction/function-ref.js.map +1 -0
  80. package/dist/extraction/generated-detection.d.ts +30 -0
  81. package/dist/extraction/generated-detection.d.ts.map +1 -0
  82. package/dist/extraction/generated-detection.js +83 -0
  83. package/dist/extraction/generated-detection.js.map +1 -0
  84. package/dist/extraction/grammars.d.ts +74 -30
  85. package/dist/extraction/grammars.d.ts.map +1 -0
  86. package/dist/extraction/grammars.js +289 -15
  87. package/dist/extraction/grammars.js.map +1 -0
  88. package/dist/extraction/index.d.ts +193 -109
  89. package/dist/extraction/index.d.ts.map +1 -0
  90. package/dist/extraction/index.js +1485 -362
  91. package/dist/extraction/index.js.map +1 -0
  92. package/dist/extraction/languages/arkts.d.ts +3 -0
  93. package/dist/extraction/languages/arkts.d.ts.map +1 -0
  94. package/dist/extraction/languages/arkts.js +127 -0
  95. package/dist/extraction/languages/arkts.js.map +1 -0
  96. package/dist/extraction/languages/c-cpp.d.ts +110 -4
  97. package/dist/extraction/languages/c-cpp.d.ts.map +1 -0
  98. package/dist/extraction/languages/c-cpp.js +713 -2
  99. package/dist/extraction/languages/c-cpp.js.map +1 -0
  100. package/dist/extraction/languages/cfquery.d.ts +12 -0
  101. package/dist/extraction/languages/cfquery.d.ts.map +1 -0
  102. package/dist/extraction/languages/cfquery.js +28 -0
  103. package/dist/extraction/languages/cfquery.js.map +1 -0
  104. package/dist/extraction/languages/cfscript.d.ts +3 -0
  105. package/dist/extraction/languages/cfscript.d.ts.map +1 -0
  106. package/dist/extraction/languages/cfscript.js +73 -0
  107. package/dist/extraction/languages/cfscript.js.map +1 -0
  108. package/dist/extraction/languages/cobol.d.ts +33 -0
  109. package/dist/extraction/languages/cobol.d.ts.map +1 -0
  110. package/dist/extraction/languages/cobol.js +499 -0
  111. package/dist/extraction/languages/cobol.js.map +1 -0
  112. package/dist/extraction/languages/csharp.d.ts +25 -3
  113. package/dist/extraction/languages/csharp.d.ts.map +1 -0
  114. package/dist/extraction/languages/csharp.js +106 -3
  115. package/dist/extraction/languages/csharp.js.map +1 -0
  116. package/dist/extraction/languages/dart.d.ts +3 -3
  117. package/dist/extraction/languages/dart.d.ts.map +1 -0
  118. package/dist/extraction/languages/dart.js +183 -1
  119. package/dist/extraction/languages/dart.js.map +1 -0
  120. package/dist/extraction/languages/erlang.d.ts +3 -0
  121. package/dist/extraction/languages/erlang.d.ts.map +1 -0
  122. package/dist/extraction/languages/erlang.js +350 -0
  123. package/dist/extraction/languages/erlang.js.map +1 -0
  124. package/dist/extraction/languages/go.d.ts +3 -3
  125. package/dist/extraction/languages/go.d.ts.map +1 -0
  126. package/dist/extraction/languages/go.js +55 -2
  127. package/dist/extraction/languages/go.js.map +1 -0
  128. package/dist/extraction/languages/index.d.ts +4 -4
  129. package/dist/extraction/languages/index.d.ts.map +1 -0
  130. package/dist/extraction/languages/index.js +22 -0
  131. package/dist/extraction/languages/index.js.map +1 -0
  132. package/dist/extraction/languages/java.d.ts +3 -3
  133. package/dist/extraction/languages/java.d.ts.map +1 -0
  134. package/dist/extraction/languages/java.js +252 -1
  135. package/dist/extraction/languages/java.js.map +1 -0
  136. package/dist/extraction/languages/javascript.d.ts +3 -3
  137. package/dist/extraction/languages/javascript.d.ts.map +1 -0
  138. package/dist/extraction/languages/javascript.js +16 -0
  139. package/dist/extraction/languages/javascript.js.map +1 -0
  140. package/dist/extraction/languages/kotlin.d.ts +3 -3
  141. package/dist/extraction/languages/kotlin.d.ts.map +1 -0
  142. package/dist/extraction/languages/kotlin.js +126 -0
  143. package/dist/extraction/languages/kotlin.js.map +1 -0
  144. package/dist/extraction/languages/lua.d.ts +3 -3
  145. package/dist/extraction/languages/lua.d.ts.map +1 -0
  146. package/dist/extraction/languages/lua.js.map +1 -0
  147. package/dist/extraction/languages/luau.d.ts +3 -3
  148. package/dist/extraction/languages/luau.d.ts.map +1 -0
  149. package/dist/extraction/languages/luau.js.map +1 -0
  150. package/dist/extraction/languages/nix.d.ts +3 -0
  151. package/dist/extraction/languages/nix.d.ts.map +1 -0
  152. package/dist/extraction/languages/nix.js +294 -0
  153. package/dist/extraction/languages/nix.js.map +1 -0
  154. package/dist/extraction/languages/objc.d.ts +3 -0
  155. package/dist/extraction/languages/objc.d.ts.map +1 -0
  156. package/dist/extraction/languages/objc.js +175 -0
  157. package/dist/extraction/languages/objc.js.map +1 -0
  158. package/dist/extraction/languages/pascal.d.ts +3 -3
  159. package/dist/extraction/languages/pascal.d.ts.map +1 -0
  160. package/dist/extraction/languages/pascal.js +11 -0
  161. package/dist/extraction/languages/pascal.js.map +1 -0
  162. package/dist/extraction/languages/php.d.ts +3 -3
  163. package/dist/extraction/languages/php.d.ts.map +1 -0
  164. package/dist/extraction/languages/php.js +90 -1
  165. package/dist/extraction/languages/php.js.map +1 -0
  166. package/dist/extraction/languages/python.d.ts +3 -3
  167. package/dist/extraction/languages/python.d.ts.map +1 -0
  168. package/dist/extraction/languages/python.js.map +1 -0
  169. package/dist/extraction/languages/r.d.ts +3 -0
  170. package/dist/extraction/languages/r.d.ts.map +1 -0
  171. package/dist/extraction/languages/r.js +314 -0
  172. package/dist/extraction/languages/r.js.map +1 -0
  173. package/dist/extraction/languages/ruby.d.ts +3 -3
  174. package/dist/extraction/languages/ruby.d.ts.map +1 -0
  175. package/dist/extraction/languages/ruby.js +35 -0
  176. package/dist/extraction/languages/ruby.js.map +1 -0
  177. package/dist/extraction/languages/rust.d.ts +3 -3
  178. package/dist/extraction/languages/rust.d.ts.map +1 -0
  179. package/dist/extraction/languages/rust.js +35 -2
  180. package/dist/extraction/languages/rust.js.map +1 -0
  181. package/dist/extraction/languages/scala.d.ts +3 -3
  182. package/dist/extraction/languages/scala.d.ts.map +1 -0
  183. package/dist/extraction/languages/scala.js +80 -10
  184. package/dist/extraction/languages/scala.js.map +1 -0
  185. package/dist/extraction/languages/solidity.d.ts +3 -0
  186. package/dist/extraction/languages/solidity.d.ts.map +1 -0
  187. package/dist/extraction/languages/solidity.js +293 -0
  188. package/dist/extraction/languages/solidity.js.map +1 -0
  189. package/dist/extraction/languages/swift.d.ts +3 -3
  190. package/dist/extraction/languages/swift.d.ts.map +1 -0
  191. package/dist/extraction/languages/swift.js +61 -0
  192. package/dist/extraction/languages/swift.js.map +1 -0
  193. package/dist/extraction/languages/terraform.d.ts +3 -0
  194. package/dist/extraction/languages/terraform.d.ts.map +1 -0
  195. package/dist/extraction/languages/terraform.js +641 -0
  196. package/dist/extraction/languages/terraform.js.map +1 -0
  197. package/dist/extraction/languages/typescript.d.ts +16 -3
  198. package/dist/extraction/languages/typescript.d.ts.map +1 -0
  199. package/dist/extraction/languages/typescript.js +38 -0
  200. package/dist/extraction/languages/typescript.js.map +1 -0
  201. package/dist/extraction/languages/vbnet.d.ts +11 -0
  202. package/dist/extraction/languages/vbnet.d.ts.map +1 -0
  203. package/dist/extraction/languages/vbnet.js +141 -0
  204. package/dist/extraction/languages/vbnet.js.map +1 -0
  205. package/dist/extraction/liquid-extractor.d.ts +48 -41
  206. package/dist/extraction/liquid-extractor.d.ts.map +1 -0
  207. package/dist/extraction/liquid-extractor.js +53 -9
  208. package/dist/extraction/liquid-extractor.js.map +1 -0
  209. package/dist/extraction/mybatis-extractor.d.ts +68 -0
  210. package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
  211. package/dist/extraction/mybatis-extractor.js +300 -0
  212. package/dist/extraction/mybatis-extractor.js.map +1 -0
  213. package/dist/extraction/parse-pool.d.ts +152 -0
  214. package/dist/extraction/parse-pool.d.ts.map +1 -0
  215. package/dist/extraction/parse-pool.js +387 -0
  216. package/dist/extraction/parse-pool.js.map +1 -0
  217. package/dist/extraction/parse-worker.d.ts +2 -2
  218. package/dist/extraction/parse-worker.d.ts.map +1 -0
  219. package/dist/extraction/parse-worker.js +13 -3
  220. package/dist/extraction/parse-worker.js.map +1 -0
  221. package/dist/extraction/razor-extractor.d.ts +42 -0
  222. package/dist/extraction/razor-extractor.d.ts.map +1 -0
  223. package/dist/extraction/razor-extractor.js +285 -0
  224. package/dist/extraction/razor-extractor.js.map +1 -0
  225. package/dist/extraction/svelte-extractor.d.ts +42 -42
  226. package/dist/extraction/svelte-extractor.d.ts.map +1 -0
  227. package/dist/extraction/svelte-extractor.js +6 -3
  228. package/dist/extraction/svelte-extractor.js.map +1 -0
  229. package/dist/extraction/tree-sitter-helpers.d.ts +7 -18
  230. package/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
  231. package/dist/extraction/tree-sitter-helpers.js +60 -10
  232. package/dist/extraction/tree-sitter-helpers.js.map +1 -0
  233. package/dist/extraction/tree-sitter-types.d.ts +224 -157
  234. package/dist/extraction/tree-sitter-types.d.ts.map +1 -0
  235. package/dist/extraction/tree-sitter-types.js.map +1 -0
  236. package/dist/extraction/tree-sitter.d.ts +689 -221
  237. package/dist/extraction/tree-sitter.d.ts.map +1 -0
  238. package/dist/extraction/tree-sitter.js +4193 -117
  239. package/dist/extraction/tree-sitter.js.map +1 -0
  240. package/dist/extraction/vue-extractor.d.ts +40 -25
  241. package/dist/extraction/vue-extractor.d.ts.map +1 -0
  242. package/dist/extraction/vue-extractor.js +94 -3
  243. package/dist/extraction/vue-extractor.js.map +1 -0
  244. package/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
  245. package/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
  246. package/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
  247. package/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
  248. package/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
  249. package/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
  250. package/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
  251. package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
  252. package/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
  253. package/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
  254. package/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  255. package/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
  256. package/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
  257. package/dist/extraction/wasm-runtime-flags.d.ts +6 -14
  258. package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
  259. package/dist/extraction/wasm-runtime-flags.js +1 -0
  260. package/dist/extraction/wasm-runtime-flags.js.map +1 -0
  261. package/dist/graph/index.d.ts +3 -3
  262. package/dist/graph/index.d.ts.map +1 -0
  263. package/dist/graph/index.js.map +1 -0
  264. package/dist/graph/queries.d.ts +96 -99
  265. package/dist/graph/queries.d.ts.map +1 -0
  266. package/dist/graph/queries.js +13 -40
  267. package/dist/graph/queries.js.map +1 -0
  268. package/dist/graph/traversal.d.ts +117 -127
  269. package/dist/graph/traversal.d.ts.map +1 -0
  270. package/dist/graph/traversal.js +92 -21
  271. package/dist/graph/traversal.js.map +1 -0
  272. package/dist/index.d.ts +615 -481
  273. package/dist/index.d.ts.map +1 -0
  274. package/dist/index.js +709 -18
  275. package/dist/index.js.map +1 -0
  276. package/dist/installer/config-writer.d.ts +13 -14
  277. package/dist/installer/config-writer.d.ts.map +1 -0
  278. package/dist/installer/config-writer.js +91 -0
  279. package/dist/installer/config-writer.js.map +1 -0
  280. package/dist/installer/index.d.ts +84 -82
  281. package/dist/installer/index.d.ts.map +1 -0
  282. package/dist/installer/index.js +619 -0
  283. package/dist/installer/index.js.map +1 -0
  284. package/dist/installer/instructions-template.d.ts +35 -24
  285. package/dist/installer/instructions-template.d.ts.map +1 -0
  286. package/dist/installer/instructions-template.js +53 -0
  287. package/dist/installer/instructions-template.js.map +1 -0
  288. package/dist/installer/targets/antigravity.d.ts +57 -0
  289. package/dist/installer/targets/antigravity.d.ts.map +1 -0
  290. package/dist/installer/targets/antigravity.js +308 -0
  291. package/dist/installer/targets/antigravity.js.map +1 -0
  292. package/dist/installer/targets/claude.d.ts +34 -27
  293. package/dist/installer/targets/claude.d.ts.map +1 -0
  294. package/dist/installer/targets/claude.js +454 -0
  295. package/dist/installer/targets/claude.js.map +1 -0
  296. package/dist/installer/targets/codex.d.ts +3 -3
  297. package/dist/installer/targets/codex.d.ts.map +1 -0
  298. package/dist/installer/targets/codex.js +185 -0
  299. package/dist/installer/targets/codex.js.map +1 -0
  300. package/dist/installer/targets/cursor.d.ts +3 -3
  301. package/dist/installer/targets/cursor.d.ts.map +1 -0
  302. package/dist/installer/targets/cursor.js +254 -0
  303. package/dist/installer/targets/cursor.js.map +1 -0
  304. package/dist/installer/targets/gemini.d.ts +26 -0
  305. package/dist/installer/targets/gemini.d.ts.map +1 -0
  306. package/dist/installer/targets/gemini.js +165 -0
  307. package/dist/installer/targets/gemini.js.map +1 -0
  308. package/dist/installer/targets/hermes.d.ts +3 -3
  309. package/dist/installer/targets/hermes.d.ts.map +1 -0
  310. package/dist/installer/targets/hermes.js +359 -0
  311. package/dist/installer/targets/hermes.js.map +1 -0
  312. package/dist/installer/targets/kiro.d.ts +27 -0
  313. package/dist/installer/targets/kiro.d.ts.map +1 -0
  314. package/dist/installer/targets/kiro.js +178 -0
  315. package/dist/installer/targets/kiro.js.map +1 -0
  316. package/dist/installer/targets/opencode.d.ts +12 -4
  317. package/dist/installer/targets/opencode.d.ts.map +1 -0
  318. package/dist/installer/targets/opencode.js +288 -0
  319. package/dist/installer/targets/opencode.js.map +1 -0
  320. package/dist/installer/targets/registry.d.ts +9 -12
  321. package/dist/installer/targets/registry.d.ts.map +1 -0
  322. package/dist/installer/targets/registry.js +91 -0
  323. package/dist/installer/targets/registry.js.map +1 -0
  324. package/dist/installer/targets/shared.d.ts +38 -29
  325. package/dist/installer/targets/shared.d.ts.map +1 -0
  326. package/dist/installer/targets/shared.js +264 -0
  327. package/dist/installer/targets/shared.js.map +1 -0
  328. package/dist/installer/targets/toml.d.ts +11 -23
  329. package/dist/installer/targets/toml.d.ts.map +1 -0
  330. package/dist/installer/targets/toml.js +147 -0
  331. package/dist/installer/targets/toml.js.map +1 -0
  332. package/dist/installer/targets/types.d.ts +62 -76
  333. package/dist/installer/targets/types.d.ts.map +1 -0
  334. package/dist/installer/targets/types.js +16 -0
  335. package/dist/installer/targets/types.js.map +1 -0
  336. package/dist/mcp/daemon-manager.d.ts +42 -0
  337. package/dist/mcp/daemon-manager.d.ts.map +1 -0
  338. package/dist/mcp/daemon-manager.js +129 -0
  339. package/dist/mcp/daemon-manager.js.map +1 -0
  340. package/dist/mcp/daemon-paths.d.ts +73 -0
  341. package/dist/mcp/daemon-paths.d.ts.map +1 -0
  342. package/dist/mcp/daemon-paths.js +165 -0
  343. package/dist/mcp/daemon-paths.js.map +1 -0
  344. package/dist/mcp/daemon-registry.d.ts +47 -0
  345. package/dist/mcp/daemon-registry.d.ts.map +1 -0
  346. package/dist/mcp/daemon-registry.js +233 -0
  347. package/dist/mcp/daemon-registry.js.map +1 -0
  348. package/dist/mcp/daemon.d.ts +290 -0
  349. package/dist/mcp/daemon.d.ts.map +1 -0
  350. package/dist/mcp/daemon.js +862 -0
  351. package/dist/mcp/daemon.js.map +1 -0
  352. package/dist/mcp/dynamic-boundaries.d.ts +41 -0
  353. package/dist/mcp/dynamic-boundaries.d.ts.map +1 -0
  354. package/dist/mcp/dynamic-boundaries.js +360 -0
  355. package/dist/mcp/dynamic-boundaries.js.map +1 -0
  356. package/dist/mcp/early-ppid.d.ts +26 -0
  357. package/dist/mcp/early-ppid.d.ts.map +1 -0
  358. package/dist/mcp/early-ppid.js +29 -0
  359. package/dist/mcp/early-ppid.js.map +1 -0
  360. package/dist/mcp/engine.d.ts +122 -0
  361. package/dist/mcp/engine.d.ts.map +1 -0
  362. package/dist/mcp/engine.js +350 -0
  363. package/dist/mcp/engine.js.map +1 -0
  364. package/dist/mcp/index.d.ts +89 -74
  365. package/dist/mcp/index.d.ts.map +1 -0
  366. package/dist/mcp/index.js +506 -0
  367. package/dist/mcp/index.js.map +1 -0
  368. package/dist/mcp/liveness-watchdog.d.ts +35 -0
  369. package/dist/mcp/liveness-watchdog.d.ts.map +1 -0
  370. package/dist/mcp/liveness-watchdog.js +267 -0
  371. package/dist/mcp/liveness-watchdog.js.map +1 -0
  372. package/dist/mcp/ppid-watchdog.d.ts +62 -0
  373. package/dist/mcp/ppid-watchdog.d.ts.map +1 -0
  374. package/dist/mcp/ppid-watchdog.js +64 -0
  375. package/dist/mcp/ppid-watchdog.js.map +1 -0
  376. package/dist/mcp/proxy.d.ts +87 -0
  377. package/dist/mcp/proxy.d.ts.map +1 -0
  378. package/dist/mcp/proxy.js +667 -0
  379. package/dist/mcp/proxy.js.map +1 -0
  380. package/dist/mcp/query-pool.d.ts +108 -0
  381. package/dist/mcp/query-pool.d.ts.map +1 -0
  382. package/dist/mcp/query-pool.js +315 -0
  383. package/dist/mcp/query-pool.js.map +1 -0
  384. package/dist/mcp/query-worker.d.ts +24 -0
  385. package/dist/mcp/query-worker.d.ts.map +1 -0
  386. package/dist/mcp/query-worker.js +87 -0
  387. package/dist/mcp/query-worker.js.map +1 -0
  388. package/dist/mcp/server-instructions.d.ts +22 -8
  389. package/dist/mcp/server-instructions.d.ts.map +1 -0
  390. package/dist/mcp/server-instructions.js +106 -0
  391. package/dist/mcp/server-instructions.js.map +1 -0
  392. package/dist/mcp/session.d.ts +93 -0
  393. package/dist/mcp/session.d.ts.map +1 -0
  394. package/dist/mcp/session.js +357 -0
  395. package/dist/mcp/session.js.map +1 -0
  396. package/dist/mcp/startup-handshake.d.ts +44 -0
  397. package/dist/mcp/startup-handshake.d.ts.map +1 -0
  398. package/dist/mcp/startup-handshake.js +73 -0
  399. package/dist/mcp/startup-handshake.js.map +1 -0
  400. package/dist/mcp/stdin-teardown.d.ts +27 -0
  401. package/dist/mcp/stdin-teardown.d.ts.map +1 -0
  402. package/dist/mcp/stdin-teardown.js +49 -0
  403. package/dist/mcp/stdin-teardown.js.map +1 -0
  404. package/dist/mcp/tools.d.ts +557 -213
  405. package/dist/mcp/tools.d.ts.map +1 -0
  406. package/dist/mcp/tools.js +4477 -0
  407. package/dist/mcp/tools.js.map +1 -0
  408. package/dist/mcp/transport.d.ts +158 -87
  409. package/dist/mcp/transport.d.ts.map +1 -0
  410. package/dist/mcp/transport.js +377 -0
  411. package/dist/mcp/transport.js.map +1 -0
  412. package/dist/mcp/version.d.ts +19 -0
  413. package/dist/mcp/version.d.ts.map +1 -0
  414. package/dist/mcp/version.js +71 -0
  415. package/dist/mcp/version.js.map +1 -0
  416. package/dist/project-config.d.ts +94 -0
  417. package/dist/project-config.d.ts.map +1 -0
  418. package/dist/project-config.js +374 -0
  419. package/dist/project-config.js.map +1 -0
  420. package/dist/resolution/c-fnptr-synthesizer.d.ts +6 -0
  421. package/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -0
  422. package/dist/resolution/c-fnptr-synthesizer.js +1062 -0
  423. package/dist/resolution/c-fnptr-synthesizer.js.map +1 -0
  424. package/dist/resolution/callback-synthesizer.d.ts +15 -0
  425. package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
  426. package/dist/resolution/callback-synthesizer.js +3938 -0
  427. package/dist/resolution/callback-synthesizer.js.map +1 -0
  428. package/dist/resolution/cooperative-yield.d.ts +32 -0
  429. package/dist/resolution/cooperative-yield.d.ts.map +1 -0
  430. package/dist/resolution/cooperative-yield.js +42 -0
  431. package/dist/resolution/cooperative-yield.js.map +1 -0
  432. package/dist/resolution/frameworks/astro.d.ts +9 -0
  433. package/dist/resolution/frameworks/astro.d.ts.map +1 -0
  434. package/dist/resolution/frameworks/astro.js +169 -0
  435. package/dist/resolution/frameworks/astro.js.map +1 -0
  436. package/dist/resolution/frameworks/cargo-workspace.d.ts +3 -5
  437. package/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
  438. package/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
  439. package/dist/resolution/frameworks/cics.d.ts +20 -0
  440. package/dist/resolution/frameworks/cics.d.ts.map +1 -0
  441. package/dist/resolution/frameworks/cics.js +90 -0
  442. package/dist/resolution/frameworks/cics.js.map +1 -0
  443. package/dist/resolution/frameworks/csharp.d.ts +3 -3
  444. package/dist/resolution/frameworks/csharp.d.ts.map +1 -0
  445. package/dist/resolution/frameworks/csharp.js +36 -8
  446. package/dist/resolution/frameworks/csharp.js.map +1 -0
  447. package/dist/resolution/frameworks/drupal.d.ts +3 -3
  448. package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
  449. package/dist/resolution/frameworks/drupal.js +44 -12
  450. package/dist/resolution/frameworks/drupal.js.map +1 -0
  451. package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
  452. package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
  453. package/dist/resolution/frameworks/expo-modules.js +148 -0
  454. package/dist/resolution/frameworks/expo-modules.js.map +1 -0
  455. package/dist/resolution/frameworks/express.d.ts +3 -3
  456. package/dist/resolution/frameworks/express.d.ts.map +1 -0
  457. package/dist/resolution/frameworks/express.js +102 -19
  458. package/dist/resolution/frameworks/express.js.map +1 -0
  459. package/dist/resolution/frameworks/fabric.d.ts +3 -0
  460. package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
  461. package/dist/resolution/frameworks/fabric.js +354 -0
  462. package/dist/resolution/frameworks/fabric.js.map +1 -0
  463. package/dist/resolution/frameworks/go.d.ts +3 -3
  464. package/dist/resolution/frameworks/go.d.ts.map +1 -0
  465. package/dist/resolution/frameworks/go.js +6 -3
  466. package/dist/resolution/frameworks/go.js.map +1 -0
  467. package/dist/resolution/frameworks/goframe.d.ts +41 -0
  468. package/dist/resolution/frameworks/goframe.d.ts.map +1 -0
  469. package/dist/resolution/frameworks/goframe.js +112 -0
  470. package/dist/resolution/frameworks/goframe.js.map +1 -0
  471. package/dist/resolution/frameworks/index.d.ts +29 -31
  472. package/dist/resolution/frameworks/index.d.ts.map +1 -0
  473. package/dist/resolution/frameworks/index.js +39 -1
  474. package/dist/resolution/frameworks/index.js.map +1 -0
  475. package/dist/resolution/frameworks/java.d.ts +3 -3
  476. package/dist/resolution/frameworks/java.d.ts.map +1 -0
  477. package/dist/resolution/frameworks/java.js +352 -12
  478. package/dist/resolution/frameworks/java.js.map +1 -0
  479. package/dist/resolution/frameworks/laravel.d.ts +4 -4
  480. package/dist/resolution/frameworks/laravel.d.ts.map +1 -0
  481. package/dist/resolution/frameworks/laravel.js +17 -8
  482. package/dist/resolution/frameworks/laravel.js.map +1 -0
  483. package/dist/resolution/frameworks/nestjs.d.ts +3 -3
  484. package/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
  485. package/dist/resolution/frameworks/nestjs.js +324 -0
  486. package/dist/resolution/frameworks/nestjs.js.map +1 -0
  487. package/dist/resolution/frameworks/play.d.ts +19 -0
  488. package/dist/resolution/frameworks/play.d.ts.map +1 -0
  489. package/dist/resolution/frameworks/play.js +111 -0
  490. package/dist/resolution/frameworks/play.js.map +1 -0
  491. package/dist/resolution/frameworks/python.d.ts +5 -5
  492. package/dist/resolution/frameworks/python.d.ts.map +1 -0
  493. package/dist/resolution/frameworks/python.js +138 -16
  494. package/dist/resolution/frameworks/python.js.map +1 -0
  495. package/dist/resolution/frameworks/react-native.d.ts +3 -0
  496. package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
  497. package/dist/resolution/frameworks/react-native.js +410 -0
  498. package/dist/resolution/frameworks/react-native.js.map +1 -0
  499. package/dist/resolution/frameworks/react.d.ts +3 -3
  500. package/dist/resolution/frameworks/react.d.ts.map +1 -0
  501. package/dist/resolution/frameworks/react.js +122 -60
  502. package/dist/resolution/frameworks/react.js.map +1 -0
  503. package/dist/resolution/frameworks/ruby.d.ts +3 -3
  504. package/dist/resolution/frameworks/ruby.d.ts.map +1 -0
  505. package/dist/resolution/frameworks/ruby.js +106 -2
  506. package/dist/resolution/frameworks/ruby.js.map +1 -0
  507. package/dist/resolution/frameworks/rust.d.ts +3 -3
  508. package/dist/resolution/frameworks/rust.d.ts.map +1 -0
  509. package/dist/resolution/frameworks/rust.js +102 -5
  510. package/dist/resolution/frameworks/rust.js.map +1 -0
  511. package/dist/resolution/frameworks/svelte.d.ts +3 -3
  512. package/dist/resolution/frameworks/svelte.d.ts.map +1 -0
  513. package/dist/resolution/frameworks/svelte.js +5 -1
  514. package/dist/resolution/frameworks/svelte.js.map +1 -0
  515. package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
  516. package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
  517. package/dist/resolution/frameworks/swift-objc.js +252 -0
  518. package/dist/resolution/frameworks/swift-objc.js.map +1 -0
  519. package/dist/resolution/frameworks/swift.d.ts +5 -5
  520. package/dist/resolution/frameworks/swift.d.ts.map +1 -0
  521. package/dist/resolution/frameworks/swift.js +30 -6
  522. package/dist/resolution/frameworks/swift.js.map +1 -0
  523. package/dist/resolution/frameworks/terraform.d.ts +38 -0
  524. package/dist/resolution/frameworks/terraform.d.ts.map +1 -0
  525. package/dist/resolution/frameworks/terraform.js +277 -0
  526. package/dist/resolution/frameworks/terraform.js.map +1 -0
  527. package/dist/resolution/frameworks/vue.d.ts +3 -3
  528. package/dist/resolution/frameworks/vue.d.ts.map +1 -0
  529. package/dist/resolution/frameworks/vue.js +24 -27
  530. package/dist/resolution/frameworks/vue.js.map +1 -0
  531. package/dist/resolution/go-module.d.ts +26 -0
  532. package/dist/resolution/go-module.d.ts.map +1 -0
  533. package/dist/resolution/go-module.js +78 -0
  534. package/dist/resolution/go-module.js.map +1 -0
  535. package/dist/resolution/goframe-synthesizer.d.ts +29 -0
  536. package/dist/resolution/goframe-synthesizer.d.ts.map +1 -0
  537. package/dist/resolution/goframe-synthesizer.js +163 -0
  538. package/dist/resolution/goframe-synthesizer.js.map +1 -0
  539. package/dist/resolution/import-resolver.d.ts +53 -29
  540. package/dist/resolution/import-resolver.d.ts.map +1 -0
  541. package/dist/resolution/import-resolver.js +1319 -8
  542. package/dist/resolution/import-resolver.js.map +1 -0
  543. package/dist/resolution/index.d.ts +243 -103
  544. package/dist/resolution/index.d.ts.map +1 -0
  545. package/dist/resolution/index.js +1055 -53
  546. package/dist/resolution/index.js.map +1 -0
  547. package/dist/resolution/lru-cache.d.ts +9 -9
  548. package/dist/resolution/lru-cache.d.ts.map +1 -0
  549. package/dist/resolution/lru-cache.js.map +1 -0
  550. package/dist/resolution/name-matcher.d.ts +91 -29
  551. package/dist/resolution/name-matcher.d.ts.map +1 -0
  552. package/dist/resolution/name-matcher.js +1478 -32
  553. package/dist/resolution/name-matcher.js.map +1 -0
  554. package/dist/resolution/path-aliases.d.ts +23 -27
  555. package/dist/resolution/path-aliases.d.ts.map +1 -0
  556. package/dist/resolution/path-aliases.js.map +1 -0
  557. package/dist/resolution/strip-comments.d.ts +3 -16
  558. package/dist/resolution/strip-comments.d.ts.map +1 -0
  559. package/dist/resolution/strip-comments.js +51 -0
  560. package/dist/resolution/strip-comments.js.map +1 -0
  561. package/dist/resolution/swift-objc-bridge.d.ts +134 -0
  562. package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
  563. package/dist/resolution/swift-objc-bridge.js +256 -0
  564. package/dist/resolution/swift-objc-bridge.js.map +1 -0
  565. package/dist/resolution/types.d.ts +217 -136
  566. package/dist/resolution/types.d.ts.map +1 -0
  567. package/dist/resolution/types.js.map +1 -0
  568. package/dist/resolution/workspace-packages.d.ts +58 -0
  569. package/dist/resolution/workspace-packages.d.ts.map +1 -0
  570. package/dist/resolution/workspace-packages.js +346 -0
  571. package/dist/resolution/workspace-packages.js.map +1 -0
  572. package/dist/search/identifier-segments.d.ts +60 -0
  573. package/dist/search/identifier-segments.d.ts.map +1 -0
  574. package/dist/search/identifier-segments.js +176 -0
  575. package/dist/search/identifier-segments.js.map +1 -0
  576. package/dist/search/query-parser.d.ts +14 -18
  577. package/dist/search/query-parser.d.ts.map +1 -0
  578. package/dist/search/query-parser.js.map +1 -0
  579. package/dist/search/query-utils.d.ts +45 -17
  580. package/dist/search/query-utils.d.ts.map +1 -0
  581. package/dist/search/query-utils.js +113 -47
  582. package/dist/search/query-utils.js.map +1 -0
  583. package/dist/sync/git-hooks.d.ts +13 -22
  584. package/dist/sync/git-hooks.d.ts.map +1 -0
  585. package/dist/sync/git-hooks.js +4 -0
  586. package/dist/sync/git-hooks.js.map +1 -0
  587. package/dist/sync/index.d.ts +6 -12
  588. package/dist/sync/index.d.ts.map +1 -0
  589. package/dist/sync/index.js +8 -1
  590. package/dist/sync/index.js.map +1 -0
  591. package/dist/sync/watch-policy.d.ts +8 -11
  592. package/dist/sync/watch-policy.d.ts.map +1 -0
  593. package/dist/sync/watch-policy.js.map +1 -0
  594. package/dist/sync/watcher.d.ts +335 -63
  595. package/dist/sync/watcher.d.ts.map +1 -0
  596. package/dist/sync/watcher.js +709 -53
  597. package/dist/sync/watcher.js.map +1 -0
  598. package/dist/sync/worktree.d.ts +63 -0
  599. package/dist/sync/worktree.d.ts.map +1 -0
  600. package/dist/sync/worktree.js +182 -0
  601. package/dist/sync/worktree.js.map +1 -0
  602. package/dist/telemetry/index.d.ts +143 -0
  603. package/dist/telemetry/index.d.ts.map +1 -0
  604. package/dist/telemetry/index.js +541 -0
  605. package/dist/telemetry/index.js.map +1 -0
  606. package/dist/types.d.ts +308 -326
  607. package/dist/types.d.ts.map +1 -0
  608. package/dist/types.js +16 -0
  609. package/dist/types.js.map +1 -0
  610. package/dist/ui/glyphs.d.ts +20 -20
  611. package/dist/ui/glyphs.d.ts.map +1 -0
  612. package/dist/ui/glyphs.js +78 -0
  613. package/dist/ui/glyphs.js.map +1 -0
  614. package/dist/ui/shimmer-progress.d.ts +7 -7
  615. package/dist/ui/shimmer-progress.d.ts.map +1 -0
  616. package/dist/ui/shimmer-progress.js +90 -0
  617. package/dist/ui/shimmer-progress.js.map +1 -0
  618. package/dist/ui/shimmer-worker.d.ts +2 -2
  619. package/dist/ui/shimmer-worker.d.ts.map +1 -0
  620. package/dist/ui/shimmer-worker.js +118 -0
  621. package/dist/ui/shimmer-worker.js.map +1 -0
  622. package/dist/ui/types.d.ts +14 -17
  623. package/dist/ui/types.d.ts.map +1 -0
  624. package/dist/ui/types.js +3 -0
  625. package/dist/ui/types.js.map +1 -0
  626. package/dist/upgrade/index.d.ts +164 -0
  627. package/dist/upgrade/index.d.ts.map +1 -0
  628. package/dist/upgrade/index.js +646 -0
  629. package/dist/upgrade/index.js.map +1 -0
  630. package/dist/upgrade/remove-binary.d.ts +87 -0
  631. package/dist/upgrade/remove-binary.d.ts.map +1 -0
  632. package/dist/upgrade/remove-binary.js +289 -0
  633. package/dist/upgrade/remove-binary.js.map +1 -0
  634. package/dist/upgrade/update-check.d.ts +92 -0
  635. package/dist/upgrade/update-check.d.ts.map +1 -0
  636. package/dist/upgrade/update-check.js +258 -0
  637. package/dist/upgrade/update-check.js.map +1 -0
  638. package/dist/utils.d.ts +116 -123
  639. package/dist/utils.d.ts.map +1 -0
  640. package/dist/utils.js +83 -49
  641. package/dist/utils.js.map +1 -0
  642. package/package.json +42 -10
  643. package/scripts/add-lang/bench.sh +60 -0
  644. package/scripts/add-lang/check-grammar.mjs +75 -0
  645. package/scripts/add-lang/dump-ast.mjs +103 -0
  646. package/scripts/add-lang/verify-extraction.mjs +70 -0
  647. package/scripts/agent-eval/ab-adoption.sh +91 -0
  648. package/scripts/agent-eval/ab-hook.sh +86 -0
  649. package/scripts/agent-eval/ab-impl.sh +78 -0
  650. package/scripts/agent-eval/ab-new-vs-baseline.sh +102 -0
  651. package/scripts/agent-eval/ab-sufficiency.sh +78 -0
  652. package/scripts/agent-eval/arms-F.sh +21 -0
  653. package/scripts/agent-eval/arms-matrix.sh +37 -0
  654. package/scripts/agent-eval/audit.sh +68 -0
  655. package/scripts/agent-eval/bench-readme.sh +28 -0
  656. package/scripts/agent-eval/bench-why-repo.sh +22 -0
  657. package/scripts/agent-eval/block-read-hook.sh +19 -0
  658. package/scripts/agent-eval/hook-settings.json +15 -0
  659. package/scripts/agent-eval/itrun.sh +120 -0
  660. package/scripts/agent-eval/offload-eval-3arm.sh +72 -0
  661. package/scripts/agent-eval/offload-eval-cost.mjs +133 -0
  662. package/scripts/agent-eval/offload-eval-effort.mjs +108 -0
  663. package/scripts/agent-eval/offload-eval-frontload-matrix.sh +25 -0
  664. package/scripts/agent-eval/offload-eval-frontload.sh +47 -0
  665. package/scripts/agent-eval/offload-eval-ground-truth.json +18 -0
  666. package/scripts/agent-eval/offload-eval-hook.mjs +84 -0
  667. package/scripts/agent-eval/offload-eval-judge.mjs +103 -0
  668. package/scripts/agent-eval/offload-eval-matrix.sh +20 -0
  669. package/scripts/agent-eval/offload-eval-metrics.mjs +94 -0
  670. package/scripts/agent-eval/offload-eval-refs1.sh +50 -0
  671. package/scripts/agent-eval/offload-eval-setup.sh +24 -0
  672. package/scripts/agent-eval/offload-eval-styles.sh +72 -0
  673. package/scripts/agent-eval/offload-eval-summarize.mjs +68 -0
  674. package/scripts/agent-eval/offload-eval.md +76 -0
  675. package/scripts/agent-eval/parse-arms.mjs +116 -0
  676. package/scripts/agent-eval/parse-bench-readme.mjs +84 -0
  677. package/scripts/agent-eval/parse-run.mjs +45 -0
  678. package/scripts/agent-eval/parse-session.mjs +93 -0
  679. package/scripts/agent-eval/probe-context.mjs +21 -0
  680. package/scripts/agent-eval/probe-explore.mjs +40 -0
  681. package/scripts/agent-eval/probe-node.mjs +20 -0
  682. package/scripts/agent-eval/probe-sweep.mjs +119 -0
  683. package/scripts/agent-eval/probe-trace.mjs +20 -0
  684. package/scripts/agent-eval/redirect-read-hook.sh +38 -0
  685. package/scripts/agent-eval/repro-concurrent-explore.mjs +119 -0
  686. package/scripts/agent-eval/repro-daemon-clients.mjs +125 -0
  687. package/scripts/agent-eval/run-agent.sh +34 -0
  688. package/scripts/agent-eval/run-all.sh +75 -0
  689. package/scripts/agent-eval/run-arms.sh +56 -0
  690. package/scripts/agent-eval/seq-matrix.mjs +137 -0
  691. package/scripts/build-bundle.sh +123 -0
  692. package/scripts/extract-release-notes.mjs +130 -0
  693. package/scripts/local-install.sh +41 -0
  694. package/scripts/npm-sdk.js +75 -0
  695. package/scripts/npm-shim.js +275 -0
  696. package/scripts/pack-npm.sh +119 -0
  697. package/scripts/prepare-release.mjs +270 -0
  698. package/dist/extraction/wasm/tree-sitter-c.wasm +0 -0
  699. package/dist/extraction/wasm/tree-sitter-cpp.wasm +0 -0
  700. package/dist/extraction/wasm/tree-sitter-dart.wasm +0 -0
  701. package/dist/extraction/wasm/tree-sitter-go.wasm +0 -0
  702. package/dist/extraction/wasm/tree-sitter-java.wasm +0 -0
  703. package/dist/extraction/wasm/tree-sitter-javascript.wasm +0 -0
  704. package/dist/extraction/wasm/tree-sitter-kotlin.wasm +0 -0
  705. package/dist/extraction/wasm/tree-sitter-php.wasm +0 -0
  706. package/dist/extraction/wasm/tree-sitter-python.wasm +0 -0
  707. package/dist/extraction/wasm/tree-sitter-ruby.wasm +0 -0
  708. package/dist/extraction/wasm/tree-sitter-rust.wasm +0 -0
  709. package/dist/extraction/wasm/tree-sitter-swift.wasm +0 -0
  710. package/dist/extraction/wasm/tree-sitter-tsx.wasm +0 -0
  711. package/dist/extraction/wasm/tree-sitter-typescript.wasm +0 -0
  712. package/dist/installer/claude-md-template.d.ts +0 -19
@@ -0,0 +1,646 @@
1
+ "use strict";
2
+ /**
3
+ * `codegraph upgrade`
4
+ *
5
+ * Self-update for the CLI, whatever way it was installed:
6
+ *
7
+ * - **bundle** — the self-contained runtime+app installed by `install.sh`
8
+ * (Linux/macOS) or `install.ps1` (Windows). Upgrading re-runs the SAME
9
+ * canonical installer script (single source of truth) so the download /
10
+ * version-resolution / PATH logic never drifts between first-install and
11
+ * upgrade.
12
+ * - **npm** — installed via `npm i -g @colbymchenry/codegraph`. Upgrading
13
+ * shells out to npm.
14
+ * - **npx** — ephemeral; nothing to upgrade (next `npx` fetches latest).
15
+ * - **source** — a git checkout running its own `dist/`; `git pull` + rebuild.
16
+ *
17
+ * Detection is structural (see `detectInstallMethod`): a bundle carries a
18
+ * vendored `node` binary and a `bin/codegraph` launcher next to its `lib/`, so
19
+ * we can recognize it from the running file's path without a marker file.
20
+ *
21
+ * Windows wrinkle: a running `node.exe` is locked and can't be deleted, so the
22
+ * bundle's `current\` dir can't be overwritten in place by the process doing
23
+ * the upgrade. We therefore spawn a DETACHED helper that waits for this
24
+ * process to exit (releasing the lock), then runs `install.ps1`. This is the
25
+ * conventional Windows self-update dance (rustup/nvm-windows do the same).
26
+ */
27
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
28
+ if (k2 === undefined) k2 = k;
29
+ var desc = Object.getOwnPropertyDescriptor(m, k);
30
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
31
+ desc = { enumerable: true, get: function() { return m[k]; } };
32
+ }
33
+ Object.defineProperty(o, k2, desc);
34
+ }) : (function(o, m, k, k2) {
35
+ if (k2 === undefined) k2 = k;
36
+ o[k2] = m[k];
37
+ }));
38
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
39
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
40
+ }) : function(o, v) {
41
+ o["default"] = v;
42
+ });
43
+ var __importStar = (this && this.__importStar) || (function () {
44
+ var ownKeys = function(o) {
45
+ ownKeys = Object.getOwnPropertyNames || function (o) {
46
+ var ar = [];
47
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
48
+ return ar;
49
+ };
50
+ return ownKeys(o);
51
+ };
52
+ return function (mod) {
53
+ if (mod && mod.__esModule) return mod;
54
+ var result = {};
55
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
56
+ __setModuleDefault(result, mod);
57
+ return result;
58
+ };
59
+ })();
60
+ Object.defineProperty(exports, "__esModule", { value: true });
61
+ exports.INSTALL_SH_URL = exports.NPM_PACKAGE = exports.REPO = void 0;
62
+ exports.deriveInstallDir = deriveInstallDir;
63
+ exports.detectInstallMethod = detectInstallMethod;
64
+ exports.parseSemver = parseSemver;
65
+ exports.compareVersions = compareVersions;
66
+ exports.isUpdateAvailable = isUpdateAvailable;
67
+ exports.normalizeVersion = normalizeVersion;
68
+ exports.stripV = stripV;
69
+ exports.parseLatestTagFromLocation = parseLatestTagFromLocation;
70
+ exports.resolveLatestVersion = resolveLatestVersion;
71
+ exports.reindexAdvisory = reindexAdvisory;
72
+ exports.runUpgrade = runUpgrade;
73
+ exports.verifyResolvedVersion = verifyResolvedVersion;
74
+ exports.buildWindowsUpgradeScript = buildWindowsUpgradeScript;
75
+ exports.npmInvocation = npmInvocation;
76
+ exports.hasCommand = hasCommand;
77
+ exports.defaultRun = defaultRun;
78
+ exports.defaultCapture = defaultCapture;
79
+ const fs = __importStar(require("fs"));
80
+ const path = __importStar(require("path"));
81
+ const https = __importStar(require("https"));
82
+ const child_process_1 = require("child_process");
83
+ exports.REPO = 'colbymchenry/codegraph';
84
+ exports.NPM_PACKAGE = '@colbymchenry/codegraph';
85
+ const RAW_BASE = `https://raw.githubusercontent.com/${exports.REPO}/main`;
86
+ exports.INSTALL_SH_URL = `${RAW_BASE}/install.sh`;
87
+ function toPosix(p) {
88
+ return p.replace(/\\/g, '/');
89
+ }
90
+ /**
91
+ * Where the bundle installer keeps its install root, derived from the bundle
92
+ * dir so an upgrade reuses a custom `CODEGRAPH_INSTALL_DIR`. Returns null when
93
+ * the layout isn't the one the installer creates (then the installer falls
94
+ * back to its own default).
95
+ *
96
+ * unix: <installDir>/versions/<vX.Y.Z> (bundleRoot) → <installDir>
97
+ * windows: <installDir>\current (bundleRoot) → <installDir>
98
+ */
99
+ function deriveInstallDir(bundleRoot, os, exists) {
100
+ // Use the TARGET platform's path semantics (not the host's), so this is
101
+ // deterministic when reasoning about a Windows layout from a POSIX host (CI)
102
+ // and vice-versa. In production `os` always matches the running platform.
103
+ const P = os === 'windows' ? path.win32 : path.posix;
104
+ if (os === 'windows') {
105
+ if (P.basename(bundleRoot).toLowerCase() === 'current') {
106
+ return P.dirname(bundleRoot);
107
+ }
108
+ return null;
109
+ }
110
+ // unix: bundleRoot is <installDir>/versions/<version>
111
+ const parent = P.dirname(bundleRoot);
112
+ if (P.basename(parent) === 'versions') {
113
+ const installDir = P.dirname(parent);
114
+ return exists(installDir) ? installDir : P.dirname(parent);
115
+ }
116
+ return null;
117
+ }
118
+ function detectInstallMethod(input) {
119
+ const exists = input.exists ?? fs.existsSync;
120
+ const isWin = input.platform === 'win32';
121
+ // Path math keyed on the TARGET platform so detection is host-independent
122
+ // (a Windows layout resolves correctly even when unit-tested on macOS/Linux).
123
+ const P = isWin ? path.win32 : path.posix;
124
+ const binDir = P.dirname(input.filename); // <…>/bin
125
+ const norm = toPosix(input.filename);
126
+ // Path-based checks come FIRST. The npm thin-installer's per-platform
127
+ // package (@colbymchenry/codegraph-<platform>-<arch>) is itself a complete
128
+ // bundle — vendored node + bin/ launcher — living inside node_modules, so
129
+ // the layout sniff below would misread every npm install as a standalone
130
+ // bundle. `upgrade` would then curl install.sh into ~/.codegraph: a SECOND
131
+ // install that never wins the PATH race against npm's shim, leaving
132
+ // `codegraph -v` permanently on the old version (the #1071 shadow,
133
+ // self-inflicted). A path under node_modules is authoritative about HOW the
134
+ // user installed, whatever the artifact inside looks like.
135
+ // npx cache: <…>/_npx/<hash>/node_modules/@colbymchenry/codegraph/…
136
+ // (checked before npm — the npx cache path also contains /node_modules/).
137
+ if (norm.includes('/_npx/')) {
138
+ return { kind: 'npx' };
139
+ }
140
+ // npm install (global or local): lives under a node_modules tree.
141
+ if (norm.includes('/node_modules/')) {
142
+ const underCwd = norm.startsWith(toPosix(P.resolve(input.cwd)) + '/');
143
+ return { kind: 'npm', scope: underCwd ? 'local' : 'global' };
144
+ }
145
+ // Bundle: <root>/lib/dist/bin/codegraph.js → <root> is up 3 from bin/.
146
+ // A bundle has a vendored node + a launcher script as siblings of lib/.
147
+ const bundleRoot = P.resolve(binDir, '..', '..', '..');
148
+ const vendoredNode = P.join(bundleRoot, isWin ? 'node.exe' : 'node');
149
+ const launcher = P.join(bundleRoot, 'bin', isWin ? 'codegraph.cmd' : 'codegraph');
150
+ if (exists(vendoredNode) && exists(launcher)) {
151
+ const os = isWin ? 'windows' : 'unix';
152
+ return { kind: 'bundle', os, bundleRoot, installDir: deriveInstallDir(bundleRoot, os, exists) };
153
+ }
154
+ // Source checkout: running <repo>/dist/bin/codegraph.js with a sibling .git.
155
+ const repoRoot = P.resolve(binDir, '..', '..');
156
+ if (exists(P.join(repoRoot, 'package.json')) && exists(P.join(repoRoot, '.git'))) {
157
+ return { kind: 'source', root: repoRoot };
158
+ }
159
+ return { kind: 'unknown', reason: `unrecognized install layout at ${input.filename}` };
160
+ }
161
+ function parseSemver(version) {
162
+ const m = /^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?/.exec(version.trim());
163
+ if (!m)
164
+ return null;
165
+ return {
166
+ major: parseInt(m[1], 10),
167
+ minor: parseInt(m[2], 10),
168
+ patch: parseInt(m[3], 10),
169
+ pre: m[4] ?? null,
170
+ };
171
+ }
172
+ /** Returns >0 if a>b, <0 if a<b, 0 if equal. Throws on unparseable input. */
173
+ function compareVersions(a, b) {
174
+ const sa = parseSemver(a);
175
+ const sb = parseSemver(b);
176
+ if (!sa || !sb)
177
+ throw new Error(`cannot compare versions: "${a}" vs "${b}"`);
178
+ if (sa.major !== sb.major)
179
+ return sa.major - sb.major;
180
+ if (sa.minor !== sb.minor)
181
+ return sa.minor - sb.minor;
182
+ if (sa.patch !== sb.patch)
183
+ return sa.patch - sb.patch;
184
+ // A prerelease is "less than" its release (1.0.0-rc < 1.0.0).
185
+ if (sa.pre && !sb.pre)
186
+ return -1;
187
+ if (!sa.pre && sb.pre)
188
+ return 1;
189
+ if (sa.pre && sb.pre)
190
+ return sa.pre < sb.pre ? -1 : sa.pre > sb.pre ? 1 : 0;
191
+ return 0;
192
+ }
193
+ function isUpdateAvailable(current, latest) {
194
+ try {
195
+ return compareVersions(latest, current) > 0;
196
+ }
197
+ catch {
198
+ // If either is unparseable (e.g. a dev "0.0.0-unknown"), treat differing
199
+ // strings as "update available" so the user isn't stuck.
200
+ return normalizeVersion(current) !== normalizeVersion(latest);
201
+ }
202
+ }
203
+ /** `0.9.9` / `v0.9.9` → `v0.9.9` (release tags are v-prefixed). */
204
+ function normalizeVersion(v) {
205
+ const t = v.trim();
206
+ return t.startsWith('v') ? t : `v${t}`;
207
+ }
208
+ /** Strip a leading `v`: `v0.9.9` → `0.9.9`. */
209
+ function stripV(v) {
210
+ const t = v.trim();
211
+ return t.startsWith('v') ? t.slice(1) : t;
212
+ }
213
+ /**
214
+ * Parse the release tag out of the `Location` header GitHub returns for
215
+ * `/releases/latest` → `…/releases/tag/v0.9.9`. Pure so it's unit-tested.
216
+ */
217
+ function parseLatestTagFromLocation(location) {
218
+ if (!location)
219
+ return null;
220
+ const m = /\/releases\/tag\/([^/?#]+)/.exec(location);
221
+ return m ? decodeURIComponent(m[1]) : null;
222
+ }
223
+ // ---------------------------------------------------------------------------
224
+ // Latest-version resolution (network)
225
+ // ---------------------------------------------------------------------------
226
+ function httpsGet(url, headers, timeoutMs) {
227
+ return new Promise((resolve, reject) => {
228
+ const req = https.get(url, { headers }, (res) => {
229
+ let body = '';
230
+ res.on('data', (c) => (body += c));
231
+ res.on('end', () => resolve({ status: res.statusCode ?? 0, headers: res.headers, body }));
232
+ });
233
+ req.on('error', reject);
234
+ req.setTimeout(timeoutMs, () => req.destroy(new Error(`request timed out after ${timeoutMs}ms`)));
235
+ });
236
+ }
237
+ /**
238
+ * Resolve the latest release tag (e.g. `v0.9.9`).
239
+ *
240
+ * Primary: read the redirect `Location` from `github.com/<repo>/releases/latest`
241
+ * — same trick install.sh uses, because the unauthenticated GitHub API is
242
+ * rate-limited to 60 req/h/IP and 403s on shared/cloud hosts (issue #325). The
243
+ * redirect has no such limit. Fall back to the API only if the redirect can't
244
+ * be read.
245
+ */
246
+ async function resolveLatestVersion(repo = exports.REPO, timeoutMs = 12000) {
247
+ try {
248
+ const res = await httpsGet(`https://github.com/${repo}/releases/latest`, { 'User-Agent': 'codegraph-upgrade' }, timeoutMs);
249
+ const loc = res.headers.location;
250
+ const tag = parseLatestTagFromLocation(Array.isArray(loc) ? loc[0] : loc);
251
+ if (tag)
252
+ return normalizeVersion(tag);
253
+ }
254
+ catch {
255
+ /* fall through to API */
256
+ }
257
+ try {
258
+ const res = await httpsGet(`https://api.github.com/repos/${repo}/releases/latest`, { 'User-Agent': 'codegraph-upgrade', Accept: 'application/vnd.github+json' }, timeoutMs);
259
+ const tag = JSON.parse(res.body)?.tag_name;
260
+ if (typeof tag === 'string' && tag)
261
+ return normalizeVersion(tag);
262
+ }
263
+ catch {
264
+ /* fall through to error */
265
+ }
266
+ throw new Error('could not resolve the latest version from GitHub. Check your network, or pin a version: `codegraph upgrade <version>`.');
267
+ }
268
+ const c = {
269
+ bold: (s) => `\x1b[1m${s}\x1b[0m`,
270
+ dim: (s) => `\x1b[2m${s}\x1b[0m`,
271
+ green: (s) => `\x1b[32m${s}\x1b[0m`,
272
+ yellow: (s) => `\x1b[33m${s}\x1b[0m`,
273
+ cyan: (s) => `\x1b[36m${s}\x1b[0m`,
274
+ };
275
+ /** The honest, additive re-index reminder shown after a successful upgrade. */
276
+ function reindexAdvisory() {
277
+ return [
278
+ c.dim('Your existing project indexes keep working, but were built by the previous version.'),
279
+ c.dim('To pick up this version’s extraction improvements, refresh each project:'),
280
+ ` ${c.cyan('codegraph sync')} ${c.dim('# incremental, fast')}`,
281
+ ` ${c.cyan('codegraph index -f')} ${c.dim('# full rebuild')}`,
282
+ c.dim('(`codegraph status` flags any index that predates the engine you’re running.)'),
283
+ ].join('\n');
284
+ }
285
+ /**
286
+ * Returns the process exit code (0 = success / nothing to do, 1 = failure).
287
+ */
288
+ async function runUpgrade(opts, deps) {
289
+ const { currentVersion, method } = deps;
290
+ // Resolve the target version (pinned or latest).
291
+ let latest;
292
+ try {
293
+ latest = normalizeVersion(opts.version || (await deps.resolveLatest()));
294
+ }
295
+ catch (err) {
296
+ deps.error(err instanceof Error ? err.message : String(err));
297
+ return 1;
298
+ }
299
+ const currentDisplay = normalizeVersion(currentVersion);
300
+ deps.log(`${c.bold('CodeGraph')} current ${c.cyan(currentDisplay)} ${opts.version ? 'target' : 'latest'} ${c.cyan(latest)}`);
301
+ const updateAvailable = isUpdateAvailable(currentVersion, latest);
302
+ if (opts.check) {
303
+ if (updateAvailable) {
304
+ deps.log(c.yellow(`An update is available: ${currentDisplay} → ${latest}`));
305
+ deps.log(c.dim('Run `codegraph upgrade` to install it.'));
306
+ }
307
+ else {
308
+ deps.log(c.green(`You’re on the latest version (${currentDisplay}).`));
309
+ }
310
+ return 0;
311
+ }
312
+ if (!updateAvailable && !opts.force && !opts.version) {
313
+ deps.log(c.green(`Already up to date (${currentDisplay}).`));
314
+ deps.log(c.dim('Use `--force` to reinstall, or `codegraph upgrade <version>` to change versions.'));
315
+ return 0;
316
+ }
317
+ // Dispatch by install method. bundle/npm perform a real binary update, so
318
+ // after they succeed we self-heal the front-load hook (below); npx/source/
319
+ // unknown don't update anything here, so they return directly.
320
+ let code;
321
+ switch (method.kind) {
322
+ case 'bundle':
323
+ code = await (method.os === 'windows'
324
+ ? upgradeWindowsBundle(method, latest, deps)
325
+ : upgradeUnixBundle(method, opts.version ? latest : undefined, deps));
326
+ break;
327
+ case 'npm':
328
+ // npm version specs have no leading "v" (`@0.9.8`, not `@v0.9.8` — the
329
+ // latter resolves as a nonexistent dist-tag).
330
+ code = await upgradeNpm(method, opts.version ? stripV(latest) : 'latest', deps);
331
+ break;
332
+ case 'npx':
333
+ deps.log(c.green('npx always runs the latest version on demand — nothing to upgrade.'));
334
+ deps.log(c.dim(`Force a fresh fetch with: npx ${exports.NPM_PACKAGE}@latest`));
335
+ return 0;
336
+ case 'source':
337
+ deps.warn(`Running from a source checkout at ${method.root}.`);
338
+ deps.log(c.dim('Upgrade it with: git pull && npm run build'));
339
+ return 0;
340
+ default:
341
+ deps.error(`Couldn’t determine how CodeGraph was installed (${method.reason}).`);
342
+ deps.log(c.dim(`Reinstall manually — see https://github.com/${exports.REPO}#install`));
343
+ return 1;
344
+ }
345
+ // After a successful update, ensure the front-load prompt hook is wired for an
346
+ // already-configured global Claude install — so existing users pick it up on
347
+ // upgrade, not only on a fresh `install` (the hook config is version-agnostic,
348
+ // so the still-running old binary can write it safely). Idempotent + gated on
349
+ // an existing Claude config, and skipped entirely by the kill-switch. Never
350
+ // fatal to the upgrade.
351
+ if (code === 0) {
352
+ let probe = 'inconclusive';
353
+ try {
354
+ probe = reportResolvedVersion(latest, deps);
355
+ }
356
+ catch {
357
+ /* an inconclusive probe must not fail the upgrade */
358
+ }
359
+ try {
360
+ await selfHealPromptHook(deps);
361
+ }
362
+ catch {
363
+ /* a hook-wiring hiccup must not fail the upgrade */
364
+ }
365
+ // The refresh executes whatever `codegraph` PATH resolves. If the probe
366
+ // just proved that's a stale shadowed install, spawning it would rewrite
367
+ // the agent surfaces with the very templates the refresh exists to heal —
368
+ // skip, and point at the manual command for after the PATH is fixed.
369
+ if (probe !== 'mismatch') {
370
+ try {
371
+ selfHealInstalledSurfaces(deps);
372
+ }
373
+ catch {
374
+ /* a refresh hiccup must not fail the upgrade */
375
+ }
376
+ }
377
+ else {
378
+ deps.log(c.dim('Skipped refreshing agent instructions/config — run `codegraph install --refresh` once the PATH is fixed.'));
379
+ }
380
+ }
381
+ return code;
382
+ }
383
+ /**
384
+ * Prove the upgrade actually took: spawn the `codegraph` this terminal's PATH
385
+ * resolves and compare its reported version to the target. Catches the silent
386
+ * failure mode where ANOTHER install shadows the one we just upgraded (issue
387
+ * #1071 — e.g. a stale `npm i -g` copy earlier on PATH than the bundle
388
+ * launcher): the upgrade "succeeds" but `codegraph -v` — in this terminal and
389
+ * every future one — keeps serving the old version. Exported for unit tests.
390
+ */
391
+ function verifyResolvedVersion(latest, deps) {
392
+ if (!deps.hasCommand('codegraph'))
393
+ return 'inconclusive';
394
+ // Windows installs expose codegraph through a .cmd launcher; Node can't
395
+ // spawn .cmd files without a shell, so route through cmd.exe there.
396
+ const probe = deps.platform === 'win32'
397
+ ? deps.capture('cmd.exe', ['/d', '/s', '/c', 'codegraph --version'])
398
+ : deps.capture('codegraph', ['--version']);
399
+ if (!probe || probe.code !== 0)
400
+ return 'inconclusive';
401
+ // `codegraph --version` prints the bare version; take the last non-empty
402
+ // line so a stray runtime warning above it can't spoil the parse.
403
+ const reported = probe.stdout.trim().split(/\r?\n/).pop()?.trim() ?? '';
404
+ if (!parseSemver(reported))
405
+ return 'inconclusive';
406
+ return compareVersions(reported, latest) === 0 ? 'match' : 'mismatch';
407
+ }
408
+ /**
409
+ * Log the outcome of the post-upgrade version probe. On a match the user
410
+ * knows the current terminal is already serving the new version; on a
411
+ * mismatch they get told exactly which stale install is hijacking their PATH
412
+ * instead of discovering it via a mysteriously unchanged `codegraph -v`.
413
+ * Inconclusive probes fall back to the old soft hint — never a scare on
414
+ * setups we can't inspect (no `codegraph` on PATH yet, exotic wrappers).
415
+ * Returns the probe result so the caller can gate the post-upgrade refresh
416
+ * (which spawns the PATH-resolved binary) on it.
417
+ */
418
+ function reportResolvedVersion(latest, deps) {
419
+ const { method } = deps;
420
+ // A project-local npm install isn't served by PATH's `codegraph` (that
421
+ // would be some other install) — a probe could only false-alarm.
422
+ if (method.kind === 'npm' && method.scope === 'local')
423
+ return 'inconclusive';
424
+ const probe = verifyResolvedVersion(latest, deps);
425
+ switch (probe) {
426
+ case 'match':
427
+ deps.log(c.green(`✓ \`codegraph\` on your PATH now reports ${latest} — this terminal is already using it.`));
428
+ break;
429
+ case 'mismatch':
430
+ deps.warn(`Installed ${latest}, but the \`codegraph\` this terminal resolves still reports an older version.`);
431
+ deps.log(c.dim('Another CodeGraph install earlier on your PATH is shadowing the one just upgraded.'));
432
+ deps.log(c.dim('Find every copy with `which -a codegraph` (Windows: `where codegraph`) and remove or upgrade the stale one.'));
433
+ break;
434
+ case 'inconclusive':
435
+ deps.log(c.dim('Open a new terminal if `codegraph --version` looks unchanged (PATH cache).'));
436
+ break;
437
+ }
438
+ return probe;
439
+ }
440
+ /**
441
+ * Refresh the agent surfaces previous installs wrote — the marker-fenced
442
+ * instructions sections (CLAUDE.md / AGENTS.md / GEMINI.md), MCP entries,
443
+ * legacy-hook cleanups — so they match the version that will serve them.
444
+ * Unlike the prompt hook above, this content is NOT version-agnostic: the
445
+ * templates are baked into the binary, so the still-running old process
446
+ * would only rewrite its own stale copy — the exact staleness this heals.
447
+ * We therefore spawn the freshly-installed binary (`codegraph install
448
+ * --refresh`), which is refresh-only: agents never configured stay
449
+ * untouched, and permission / prompt-hook choices are preserved. Gated on
450
+ * `codegraph` being resolvable on PATH (an npm-local install isn't) and on
451
+ * the kill-switch; never fatal to the upgrade.
452
+ */
453
+ function selfHealInstalledSurfaces(deps) {
454
+ if (process.env.CODEGRAPH_NO_INSTALL_REFRESH === '1')
455
+ return;
456
+ if (!deps.hasCommand('codegraph'))
457
+ return;
458
+ deps.log(c.dim('Refreshing agent instruction sections and config written by previous versions…'));
459
+ // Windows installs expose codegraph through a .cmd launcher. Node cannot
460
+ // spawn .cmd files directly without a shell, so route the constant command
461
+ // through cmd.exe there (the same launcher a terminal would resolve).
462
+ const code = deps.platform === 'win32'
463
+ ? deps.run('cmd.exe', ['/d', '/s', '/c', 'codegraph install --refresh'])
464
+ : deps.run('codegraph', ['install', '--refresh']);
465
+ if (code !== 0) {
466
+ deps.warn('Could not refresh the installed agent surfaces — run `codegraph install --refresh` manually.');
467
+ }
468
+ }
469
+ /**
470
+ * Wire the Claude `UserPromptSubmit` front-load hook on upgrade for an
471
+ * already-configured global Claude install. No-op when Claude isn't configured,
472
+ * when the hook is already present, or when the kill-switch is set.
473
+ */
474
+ async function selfHealPromptHook(deps) {
475
+ if (process.env.CODEGRAPH_NO_PROMPT_HOOK === '1' || process.env.CODEGRAPH_PROMPT_HOOK === '0')
476
+ return;
477
+ const { claudeTarget, writePromptHookEntry } = await Promise.resolve().then(() => __importStar(require('../installer/targets/claude')));
478
+ if (!claudeTarget.detect('global').alreadyConfigured)
479
+ return;
480
+ const res = writePromptHookEntry('global');
481
+ if (res.action === 'created' || res.action === 'updated') {
482
+ deps.log(c.dim('Enabled the CodeGraph front-load hook for Claude Code (structural prompts). Disable any time: CODEGRAPH_NO_PROMPT_HOOK=1'));
483
+ }
484
+ }
485
+ function upgradeUnixBundle(method, pinned, deps) {
486
+ const downloader = deps.hasCommand('curl')
487
+ ? `curl -fsSL ${exports.INSTALL_SH_URL}`
488
+ : deps.hasCommand('wget')
489
+ ? `wget -qO- ${exports.INSTALL_SH_URL}`
490
+ : null;
491
+ if (!downloader) {
492
+ deps.error('Neither curl nor wget is available to download the installer.');
493
+ deps.log(c.dim(`Install curl, or run manually: ${exports.INSTALL_SH_URL} | sh`));
494
+ return 1;
495
+ }
496
+ const env = { ...process.env };
497
+ if (method.installDir)
498
+ env.CODEGRAPH_INSTALL_DIR = method.installDir;
499
+ if (pinned)
500
+ env.CODEGRAPH_VERSION = pinned;
501
+ deps.log(c.dim(`Running the installer (${downloader} | sh)…`));
502
+ const code = deps.run('sh', ['-c', `${downloader} | sh`], env);
503
+ if (code !== 0) {
504
+ deps.error(`Installer exited with code ${code}.`);
505
+ return 1;
506
+ }
507
+ deps.log('');
508
+ // No "open a new terminal" hedge here — after the swap, runUpgrade probes
509
+ // the PATH-resolved `codegraph --version` and reports the real outcome.
510
+ deps.log(c.green('✓ Upgrade complete.'));
511
+ deps.log(reindexAdvisory());
512
+ return 0;
513
+ }
514
+ /** Build the in-place Windows upgrade script (exported for unit-testing). */
515
+ function buildWindowsUpgradeScript(bundleRoot, version, arch) {
516
+ const target = `win32-${arch}`;
517
+ const url = `https://github.com/${exports.REPO}/releases/download/${version}/codegraph-${target}.zip`;
518
+ // Windows can't DELETE a running exe but CAN rename it, so we upgrade IN
519
+ // PLACE: download → rename the locked node.exe aside → extract the new bundle
520
+ // over current\. Synchronous, no detached helper (which dies under SSH/job
521
+ // objects and has worse UX). The running process keeps its renamed node.exe
522
+ // mapped; the NEXT `codegraph` invocation uses the new one. We can't reuse
523
+ // install.ps1 here — it `Remove-Item`s current\, which fails on the locked exe.
524
+ return [
525
+ `$ErrorActionPreference='Stop'`,
526
+ `$dest='${bundleRoot}'`,
527
+ `$url='${url}'`,
528
+ `Write-Host "Downloading $url"`,
529
+ `$tmp=Join-Path $env:TEMP ('cg-up-'+[guid]::NewGuid().ToString('N'))`,
530
+ `New-Item -ItemType Directory -Force -Path $tmp | Out-Null`,
531
+ `$zip=Join-Path $tmp 'cg.zip'`,
532
+ `Invoke-WebRequest -Uri $url -OutFile $zip`,
533
+ `$stage=Join-Path $tmp 'stage'`,
534
+ `Expand-Archive -Path $zip -DestinationPath $stage -Force`,
535
+ `$inner=Join-Path $stage 'codegraph-${target}'`,
536
+ `$src=if(Test-Path $inner){$inner}else{$stage}`,
537
+ `$node=Join-Path $dest 'node.exe'`,
538
+ `if(Test-Path $node){Rename-Item -Path $node -NewName ('node.exe.old-'+[guid]::NewGuid().ToString('N')) -Force}`,
539
+ `Copy-Item -Path (Join-Path $src '*') -Destination $dest -Recurse -Force`,
540
+ `Get-ChildItem -Path $dest -Filter 'node.exe.old-*' -ErrorAction SilentlyContinue | ForEach-Object { try { Remove-Item $_.FullName -Force -ErrorAction Stop } catch {} }`,
541
+ `Remove-Item -Recurse -Force $tmp -ErrorAction SilentlyContinue`,
542
+ `Write-Host "Installed CodeGraph ${version} to $dest"`,
543
+ ].join(';');
544
+ }
545
+ function upgradeWindowsBundle(method, latest, deps) {
546
+ const arch = process.arch === 'arm64' ? 'arm64' : 'x64';
547
+ const script = buildWindowsUpgradeScript(method.bundleRoot, latest, arch);
548
+ // -EncodedCommand (base64 UTF-16LE), NOT -Command: Node's Windows argv→command
549
+ // -line quoting mangles a long multi-statement script, so PowerShell never
550
+ // parses it. Encoding sidesteps all shell quoting — the canonical approach.
551
+ const encoded = Buffer.from(script, 'utf16le').toString('base64');
552
+ deps.log(c.dim(`Downloading and installing ${latest}…`));
553
+ const code = deps.run('powershell.exe', ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-EncodedCommand', encoded]);
554
+ if (code !== 0) {
555
+ deps.error(`Installer exited with code ${code}.`);
556
+ return 1;
557
+ }
558
+ deps.log('');
559
+ // The running node.exe was renamed aside, so the version probe in
560
+ // runUpgrade already exercises the NEW binary — no terminal hedge needed.
561
+ deps.log(c.green('✓ Upgrade complete.'));
562
+ deps.log(reindexAdvisory());
563
+ return 0;
564
+ }
565
+ /**
566
+ * How to invoke npm. On Windows npm is a .cmd batch file, which Node refuses
567
+ * to spawn without a shell (EINVAL since the CVE-2024-27980 hardening) — a
568
+ * direct `npm.cmd` spawn fails on every current Node, so route it through
569
+ * cmd.exe, the same way the surface-refresh step invokes the .cmd launcher.
570
+ * (Verified live on the Windows VM: `spawnSync('npm.cmd')` → EINVAL;
571
+ * `cmd.exe /d /s /c npm …` → works.)
572
+ */
573
+ function npmInvocation(platform, npmArgs) {
574
+ if (platform === 'win32') {
575
+ return { cmd: 'cmd.exe', args: ['/d', '/s', '/c', ['npm', ...npmArgs].join(' ')] };
576
+ }
577
+ return { cmd: 'npm', args: npmArgs };
578
+ }
579
+ function upgradeNpm(method, versionSpec, deps) {
580
+ const args = method.scope === 'global'
581
+ ? ['install', '-g', `${exports.NPM_PACKAGE}@${versionSpec}`]
582
+ : ['install', `${exports.NPM_PACKAGE}@${versionSpec}`];
583
+ deps.log(c.dim(`Running: npm ${args.join(' ')}`));
584
+ const inv = npmInvocation(deps.platform, args);
585
+ const code = deps.run(inv.cmd, inv.args, process.env);
586
+ if (code !== 0) {
587
+ deps.error(`npm exited with code ${code}.`);
588
+ if (method.scope === 'global') {
589
+ deps.log(c.dim('If this is a permissions error (EACCES), your global prefix needs sudo, or use a'));
590
+ deps.log(c.dim('Node version manager (nvm/fnm) so global installs don’t require root.'));
591
+ }
592
+ return 1;
593
+ }
594
+ deps.log('');
595
+ deps.log(c.green('✓ Upgrade complete.'));
596
+ deps.log(reindexAdvisory());
597
+ return 0;
598
+ }
599
+ // ---------------------------------------------------------------------------
600
+ // Production deps wiring (used by the CLI)
601
+ // ---------------------------------------------------------------------------
602
+ /**
603
+ * True if `cmd` resolves to an executable on PATH. A pure-Node PATH scan — NOT
604
+ * a spawned `command -v`/`which`: `command` is a shell builtin (no standalone
605
+ * binary on Debian, though macOS ships one), and `which` isn't guaranteed
606
+ * present on minimal images, so spawning either is unreliable. Scanning PATH
607
+ * ourselves behaves identically on every platform.
608
+ */
609
+ function hasCommand(cmd) {
610
+ const isWin = process.platform === 'win32';
611
+ const dirs = (process.env.PATH || process.env.Path || '').split(path.delimiter).filter(Boolean);
612
+ const exts = isWin ? (process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM').split(';') : [''];
613
+ for (const dir of dirs) {
614
+ for (const ext of exts) {
615
+ const candidate = path.join(dir, cmd + ext);
616
+ try {
617
+ if (!fs.statSync(candidate).isFile())
618
+ continue;
619
+ if (isWin)
620
+ return true;
621
+ fs.accessSync(candidate, fs.constants.X_OK);
622
+ return true;
623
+ }
624
+ catch {
625
+ /* not here / not executable — keep scanning */
626
+ }
627
+ }
628
+ }
629
+ return false;
630
+ }
631
+ function defaultRun(cmd, args, env) {
632
+ const r = (0, child_process_1.spawnSync)(cmd, args, { stdio: 'inherit', env: env ?? process.env, windowsHide: true });
633
+ if (r.error)
634
+ return -1;
635
+ return r.status ?? -1;
636
+ }
637
+ function defaultCapture(cmd, args) {
638
+ // stdio is piped (the default with `encoding`), so nothing the probed
639
+ // command prints reaches the user's terminal. The timeout keeps a wedged
640
+ // probe from hanging the upgrade's last step.
641
+ const r = (0, child_process_1.spawnSync)(cmd, args, { encoding: 'utf-8', windowsHide: true, timeout: 30_000 });
642
+ if (r.error)
643
+ return null;
644
+ return { code: r.status ?? -1, stdout: r.stdout ?? '' };
645
+ }
646
+ //# sourceMappingURL=index.js.map