@lzehrung/codegraph 2.1.0

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 (1525) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +448 -0
  3. package/THIRD_PARTY_NOTICES +77 -0
  4. package/codegraph-skill/codegraph/SKILL.md +262 -0
  5. package/dist/agent/artifact.d.ts +65 -0
  6. package/dist/agent/artifact.d.ts.map +1 -0
  7. package/dist/agent/artifact.js +616 -0
  8. package/dist/agent/artifact.js.map +1 -0
  9. package/dist/agent/bounds.d.ts +12 -0
  10. package/dist/agent/bounds.d.ts.map +1 -0
  11. package/dist/agent/bounds.js +25 -0
  12. package/dist/agent/bounds.js.map +1 -0
  13. package/dist/agent/callHierarchy.d.ts +28 -0
  14. package/dist/agent/callHierarchy.d.ts.map +1 -0
  15. package/dist/agent/callHierarchy.js +82 -0
  16. package/dist/agent/callHierarchy.js.map +1 -0
  17. package/dist/agent/explain.d.ts +136 -0
  18. package/dist/agent/explain.d.ts.map +1 -0
  19. package/dist/agent/explain.js +743 -0
  20. package/dist/agent/explain.js.map +1 -0
  21. package/dist/agent/explore.d.ts +67 -0
  22. package/dist/agent/explore.d.ts.map +1 -0
  23. package/dist/agent/explore.js +474 -0
  24. package/dist/agent/explore.js.map +1 -0
  25. package/dist/agent/fileView.d.ts +55 -0
  26. package/dist/agent/fileView.d.ts.map +1 -0
  27. package/dist/agent/fileView.js +528 -0
  28. package/dist/agent/fileView.js.map +1 -0
  29. package/dist/agent/followUps.d.ts +9 -0
  30. package/dist/agent/followUps.d.ts.map +1 -0
  31. package/dist/agent/followUps.js +164 -0
  32. package/dist/agent/followUps.js.map +1 -0
  33. package/dist/agent/handles.d.ts +29 -0
  34. package/dist/agent/handles.d.ts.map +1 -0
  35. package/dist/agent/handles.js +103 -0
  36. package/dist/agent/handles.js.map +1 -0
  37. package/dist/agent/normalize.d.ts +19 -0
  38. package/dist/agent/normalize.d.ts.map +1 -0
  39. package/dist/agent/normalize.js +45 -0
  40. package/dist/agent/normalize.js.map +1 -0
  41. package/dist/agent/orient.d.ts +55 -0
  42. package/dist/agent/orient.d.ts.map +1 -0
  43. package/dist/agent/orient.js +307 -0
  44. package/dist/agent/orient.js.map +1 -0
  45. package/dist/agent/packet.d.ts +28 -0
  46. package/dist/agent/packet.d.ts.map +1 -0
  47. package/dist/agent/packet.js +138 -0
  48. package/dist/agent/packet.js.map +1 -0
  49. package/dist/agent/query-index/candidates.d.ts +4 -0
  50. package/dist/agent/query-index/candidates.d.ts.map +1 -0
  51. package/dist/agent/query-index/candidates.js +89 -0
  52. package/dist/agent/query-index/candidates.js.map +1 -0
  53. package/dist/agent/query-index/content.d.ts +36 -0
  54. package/dist/agent/query-index/content.d.ts.map +1 -0
  55. package/dist/agent/query-index/content.js +124 -0
  56. package/dist/agent/query-index/content.js.map +1 -0
  57. package/dist/agent/query-index/paths.d.ts +12 -0
  58. package/dist/agent/query-index/paths.d.ts.map +1 -0
  59. package/dist/agent/query-index/paths.js +41 -0
  60. package/dist/agent/query-index/paths.js.map +1 -0
  61. package/dist/agent/query-index/queryIndexWorker.d.ts +8 -0
  62. package/dist/agent/query-index/queryIndexWorker.d.ts.map +1 -0
  63. package/dist/agent/query-index/queryIndexWorker.js +11 -0
  64. package/dist/agent/query-index/queryIndexWorker.js.map +1 -0
  65. package/dist/agent/query-index/schema.d.ts +26 -0
  66. package/dist/agent/query-index/schema.d.ts.map +1 -0
  67. package/dist/agent/query-index/schema.js +171 -0
  68. package/dist/agent/query-index/schema.js.map +1 -0
  69. package/dist/agent/query-index/sessionStore.d.ts +5 -0
  70. package/dist/agent/query-index/sessionStore.d.ts.map +1 -0
  71. package/dist/agent/query-index/sessionStore.js +53 -0
  72. package/dist/agent/query-index/sessionStore.js.map +1 -0
  73. package/dist/agent/query-index/sourceIdentity.d.ts +3 -0
  74. package/dist/agent/query-index/sourceIdentity.d.ts.map +1 -0
  75. package/dist/agent/query-index/sourceIdentity.js +12 -0
  76. package/dist/agent/query-index/sourceIdentity.js.map +1 -0
  77. package/dist/agent/query-index/store.d.ts +48 -0
  78. package/dist/agent/query-index/store.d.ts.map +1 -0
  79. package/dist/agent/query-index/store.js +372 -0
  80. package/dist/agent/query-index/store.js.map +1 -0
  81. package/dist/agent/query-index/update.d.ts +9 -0
  82. package/dist/agent/query-index/update.d.ts.map +1 -0
  83. package/dist/agent/query-index/update.js +309 -0
  84. package/dist/agent/query-index/update.js.map +1 -0
  85. package/dist/agent/query-index/workerPool.d.ts +5 -0
  86. package/dist/agent/query-index/workerPool.d.ts.map +1 -0
  87. package/dist/agent/query-index/workerPool.js +82 -0
  88. package/dist/agent/query-index/workerPool.js.map +1 -0
  89. package/dist/agent/refactorPlan.d.ts +40 -0
  90. package/dist/agent/refactorPlan.d.ts.map +1 -0
  91. package/dist/agent/refactorPlan.js +234 -0
  92. package/dist/agent/refactorPlan.js.map +1 -0
  93. package/dist/agent/renamePreview.d.ts +60 -0
  94. package/dist/agent/renamePreview.d.ts.map +1 -0
  95. package/dist/agent/renamePreview.js +1008 -0
  96. package/dist/agent/renamePreview.js.map +1 -0
  97. package/dist/agent/search.d.ts +77 -0
  98. package/dist/agent/search.d.ts.map +1 -0
  99. package/dist/agent/search.js +1002 -0
  100. package/dist/agent/search.js.map +1 -0
  101. package/dist/agent/semantic.d.ts +35 -0
  102. package/dist/agent/semantic.d.ts.map +1 -0
  103. package/dist/agent/semantic.js +2 -0
  104. package/dist/agent/semantic.js.map +1 -0
  105. package/dist/agent/semanticSymbols.d.ts +16 -0
  106. package/dist/agent/semanticSymbols.d.ts.map +1 -0
  107. package/dist/agent/semanticSymbols.js +96 -0
  108. package/dist/agent/semanticSymbols.js.map +1 -0
  109. package/dist/agent/session.d.ts +71 -0
  110. package/dist/agent/session.d.ts.map +1 -0
  111. package/dist/agent/session.js +432 -0
  112. package/dist/agent/session.js.map +1 -0
  113. package/dist/agent/sessionLifecycle.d.ts +5 -0
  114. package/dist/agent/sessionLifecycle.d.ts.map +1 -0
  115. package/dist/agent/sessionLifecycle.js +18 -0
  116. package/dist/agent/sessionLifecycle.js.map +1 -0
  117. package/dist/agent/shell.d.ts +2 -0
  118. package/dist/agent/shell.d.ts.map +1 -0
  119. package/dist/agent/shell.js +6 -0
  120. package/dist/agent/shell.js.map +1 -0
  121. package/dist/agent/symbolLookup.d.ts +12 -0
  122. package/dist/agent/symbolLookup.d.ts.map +1 -0
  123. package/dist/agent/symbolLookup.js +26 -0
  124. package/dist/agent/symbolLookup.js.map +1 -0
  125. package/dist/agent/typeHierarchy.d.ts +39 -0
  126. package/dist/agent/typeHierarchy.d.ts.map +1 -0
  127. package/dist/agent/typeHierarchy.js +125 -0
  128. package/dist/agent/typeHierarchy.js.map +1 -0
  129. package/dist/agent/workspaceSymbols.d.ts +18 -0
  130. package/dist/agent/workspaceSymbols.d.ts.map +1 -0
  131. package/dist/agent/workspaceSymbols.js +75 -0
  132. package/dist/agent/workspaceSymbols.js.map +1 -0
  133. package/dist/agent-tools.d.ts +280 -0
  134. package/dist/agent-tools.d.ts.map +1 -0
  135. package/dist/agent-tools.js +669 -0
  136. package/dist/agent-tools.js.map +1 -0
  137. package/dist/agent.d.ts +35 -0
  138. package/dist/agent.d.ts.map +1 -0
  139. package/dist/agent.js +19 -0
  140. package/dist/agent.js.map +1 -0
  141. package/dist/analysisSummary.d.ts +19 -0
  142. package/dist/analysisSummary.d.ts.map +1 -0
  143. package/dist/analysisSummary.js +80 -0
  144. package/dist/analysisSummary.js.map +1 -0
  145. package/dist/bin/cli.js +105144 -0
  146. package/dist/bin/queryIndexWorker.js +3914 -0
  147. package/dist/bootstrap/treeSitterLanguages.d.ts +5 -0
  148. package/dist/bootstrap/treeSitterLanguages.d.ts.map +1 -0
  149. package/dist/bootstrap/treeSitterLanguages.js +41 -0
  150. package/dist/bootstrap/treeSitterLanguages.js.map +1 -0
  151. package/dist/chunking/chunkBlocks.d.ts +9 -0
  152. package/dist/chunking/chunkBlocks.d.ts.map +1 -0
  153. package/dist/chunking/chunkBlocks.js +60 -0
  154. package/dist/chunking/chunkBlocks.js.map +1 -0
  155. package/dist/chunking/chunkFile.d.ts +34 -0
  156. package/dist/chunking/chunkFile.d.ts.map +1 -0
  157. package/dist/chunking/chunkFile.js +153 -0
  158. package/dist/chunking/chunkFile.js.map +1 -0
  159. package/dist/chunking/chunkId.d.ts +7 -0
  160. package/dist/chunking/chunkId.d.ts.map +1 -0
  161. package/dist/chunking/chunkId.js +30 -0
  162. package/dist/chunking/chunkId.js.map +1 -0
  163. package/dist/chunking/chunkMatches.d.ts +4 -0
  164. package/dist/chunking/chunkMatches.d.ts.map +1 -0
  165. package/dist/chunking/chunkMatches.js +65 -0
  166. package/dist/chunking/chunkMatches.js.map +1 -0
  167. package/dist/chunking/chunkMerge.d.ts +4 -0
  168. package/dist/chunking/chunkMerge.d.ts.map +1 -0
  169. package/dist/chunking/chunkMerge.js +144 -0
  170. package/dist/chunking/chunkMerge.js.map +1 -0
  171. package/dist/chunking/chunkSFC.d.ts +18 -0
  172. package/dist/chunking/chunkSFC.d.ts.map +1 -0
  173. package/dist/chunking/chunkSFC.js +165 -0
  174. package/dist/chunking/chunkSFC.js.map +1 -0
  175. package/dist/chunking/chunkSplit.d.ts +6 -0
  176. package/dist/chunking/chunkSplit.d.ts.map +1 -0
  177. package/dist/chunking/chunkSplit.js +170 -0
  178. package/dist/chunking/chunkSplit.js.map +1 -0
  179. package/dist/chunking/chunkTextFile.d.ts +28 -0
  180. package/dist/chunking/chunkTextFile.d.ts.map +1 -0
  181. package/dist/chunking/chunkTextFile.js +107 -0
  182. package/dist/chunking/chunkTextFile.js.map +1 -0
  183. package/dist/chunking/languageConfig.d.ts +35 -0
  184. package/dist/chunking/languageConfig.d.ts.map +1 -0
  185. package/dist/chunking/languageConfig.js +24 -0
  186. package/dist/chunking/languageConfig.js.map +1 -0
  187. package/dist/chunking/tokenizer.d.ts +2 -0
  188. package/dist/chunking/tokenizer.d.ts.map +1 -0
  189. package/dist/chunking/tokenizer.js +6 -0
  190. package/dist/chunking/tokenizer.js.map +1 -0
  191. package/dist/chunking/types.d.ts +54 -0
  192. package/dist/chunking/types.d.ts.map +1 -0
  193. package/dist/chunking/types.js +2 -0
  194. package/dist/chunking/types.js.map +1 -0
  195. package/dist/cli/affected.d.ts +32 -0
  196. package/dist/cli/affected.d.ts.map +1 -0
  197. package/dist/cli/affected.js +235 -0
  198. package/dist/cli/affected.js.map +1 -0
  199. package/dist/cli/artifact.d.ts +4 -0
  200. package/dist/cli/artifact.d.ts.map +1 -0
  201. package/dist/cli/artifact.js +35 -0
  202. package/dist/cli/artifact.js.map +1 -0
  203. package/dist/cli/bootstrap.d.ts +3 -0
  204. package/dist/cli/bootstrap.d.ts.map +1 -0
  205. package/dist/cli/bootstrap.js +8 -0
  206. package/dist/cli/bootstrap.js.map +1 -0
  207. package/dist/cli/callHierarchy.d.ts +6 -0
  208. package/dist/cli/callHierarchy.d.ts.map +1 -0
  209. package/dist/cli/callHierarchy.js +65 -0
  210. package/dist/cli/callHierarchy.js.map +1 -0
  211. package/dist/cli/chunk.d.ts +4 -0
  212. package/dist/cli/chunk.d.ts.map +1 -0
  213. package/dist/cli/chunk.js +109 -0
  214. package/dist/cli/chunk.js.map +1 -0
  215. package/dist/cli/commandCatalog.d.ts +14 -0
  216. package/dist/cli/commandCatalog.d.ts.map +1 -0
  217. package/dist/cli/commandCatalog.js +109 -0
  218. package/dist/cli/commandCatalog.js.map +1 -0
  219. package/dist/cli/commandTable.d.ts +16 -0
  220. package/dist/cli/commandTable.d.ts.map +1 -0
  221. package/dist/cli/commandTable.js +716 -0
  222. package/dist/cli/commandTable.js.map +1 -0
  223. package/dist/cli/compileCache.d.ts +17 -0
  224. package/dist/cli/compileCache.d.ts.map +1 -0
  225. package/dist/cli/compileCache.js +63 -0
  226. package/dist/cli/compileCache.js.map +1 -0
  227. package/dist/cli/context.d.ts +87 -0
  228. package/dist/cli/context.d.ts.map +1 -0
  229. package/dist/cli/context.js +322 -0
  230. package/dist/cli/context.js.map +1 -0
  231. package/dist/cli/discoveryGlobs.d.ts +11 -0
  232. package/dist/cli/discoveryGlobs.d.ts.map +1 -0
  233. package/dist/cli/discoveryGlobs.js +74 -0
  234. package/dist/cli/discoveryGlobs.js.map +1 -0
  235. package/dist/cli/doctor.d.ts +33 -0
  236. package/dist/cli/doctor.d.ts.map +1 -0
  237. package/dist/cli/doctor.js +143 -0
  238. package/dist/cli/doctor.js.map +1 -0
  239. package/dist/cli/drift.d.ts +18 -0
  240. package/dist/cli/drift.d.ts.map +1 -0
  241. package/dist/cli/drift.js +101 -0
  242. package/dist/cli/drift.js.map +1 -0
  243. package/dist/cli/duplicateSimilarity.d.ts +10 -0
  244. package/dist/cli/duplicateSimilarity.d.ts.map +1 -0
  245. package/dist/cli/duplicateSimilarity.js +20 -0
  246. package/dist/cli/duplicateSimilarity.js.map +1 -0
  247. package/dist/cli/duplicates.d.ts +15 -0
  248. package/dist/cli/duplicates.d.ts.map +1 -0
  249. package/dist/cli/duplicates.js +400 -0
  250. package/dist/cli/duplicates.js.map +1 -0
  251. package/dist/cli/explain.d.ts +4 -0
  252. package/dist/cli/explain.d.ts.map +1 -0
  253. package/dist/cli/explain.js +47 -0
  254. package/dist/cli/explain.js.map +1 -0
  255. package/dist/cli/explore.d.ts +4 -0
  256. package/dist/cli/explore.d.ts.map +1 -0
  257. package/dist/cli/explore.js +28 -0
  258. package/dist/cli/explore.js.map +1 -0
  259. package/dist/cli/file.d.ts +4 -0
  260. package/dist/cli/file.d.ts.map +1 -0
  261. package/dist/cli/file.js +53 -0
  262. package/dist/cli/file.js.map +1 -0
  263. package/dist/cli/graph.d.ts +90 -0
  264. package/dist/cli/graph.d.ts.map +1 -0
  265. package/dist/cli/graph.js +379 -0
  266. package/dist/cli/graph.js.map +1 -0
  267. package/dist/cli/graphDelta.d.ts +24 -0
  268. package/dist/cli/graphDelta.d.ts.map +1 -0
  269. package/dist/cli/graphDelta.js +75 -0
  270. package/dist/cli/graphDelta.js.map +1 -0
  271. package/dist/cli/graphQueries.d.ts +23 -0
  272. package/dist/cli/graphQueries.d.ts.map +1 -0
  273. package/dist/cli/graphQueries.js +257 -0
  274. package/dist/cli/graphQueries.js.map +1 -0
  275. package/dist/cli/grep.d.ts +10 -0
  276. package/dist/cli/grep.d.ts.map +1 -0
  277. package/dist/cli/grep.js +61 -0
  278. package/dist/cli/grep.js.map +1 -0
  279. package/dist/cli/help.d.ts +52 -0
  280. package/dist/cli/help.d.ts.map +1 -0
  281. package/dist/cli/help.js +749 -0
  282. package/dist/cli/help.js.map +1 -0
  283. package/dist/cli/impact.d.ts +24 -0
  284. package/dist/cli/impact.d.ts.map +1 -0
  285. package/dist/cli/impact.js +481 -0
  286. package/dist/cli/impact.js.map +1 -0
  287. package/dist/cli/index.d.ts +43 -0
  288. package/dist/cli/index.d.ts.map +1 -0
  289. package/dist/cli/index.js +112 -0
  290. package/dist/cli/index.js.map +1 -0
  291. package/dist/cli/indexPolicy.d.ts +36 -0
  292. package/dist/cli/indexPolicy.d.ts.map +1 -0
  293. package/dist/cli/indexPolicy.js +168 -0
  294. package/dist/cli/indexPolicy.js.map +1 -0
  295. package/dist/cli/inspect.d.ts +30 -0
  296. package/dist/cli/inspect.d.ts.map +1 -0
  297. package/dist/cli/inspect.js +323 -0
  298. package/dist/cli/inspect.js.map +1 -0
  299. package/dist/cli/install.d.ts +14 -0
  300. package/dist/cli/install.d.ts.map +1 -0
  301. package/dist/cli/install.js +273 -0
  302. package/dist/cli/install.js.map +1 -0
  303. package/dist/cli/invocationContext.d.ts +77 -0
  304. package/dist/cli/invocationContext.d.ts.map +1 -0
  305. package/dist/cli/invocationContext.js +357 -0
  306. package/dist/cli/invocationContext.js.map +1 -0
  307. package/dist/cli/lifecycle.d.ts +11 -0
  308. package/dist/cli/lifecycle.d.ts.map +1 -0
  309. package/dist/cli/lifecycle.js +81 -0
  310. package/dist/cli/lifecycle.js.map +1 -0
  311. package/dist/cli/links.d.ts +11 -0
  312. package/dist/cli/links.d.ts.map +1 -0
  313. package/dist/cli/links.js +53 -0
  314. package/dist/cli/links.js.map +1 -0
  315. package/dist/cli/location.d.ts +5 -0
  316. package/dist/cli/location.d.ts.map +1 -0
  317. package/dist/cli/location.js +11 -0
  318. package/dist/cli/location.js.map +1 -0
  319. package/dist/cli/mcp.d.ts +7 -0
  320. package/dist/cli/mcp.d.ts.map +1 -0
  321. package/dist/cli/mcp.js +60 -0
  322. package/dist/cli/mcp.js.map +1 -0
  323. package/dist/cli/navigation.d.ts +23 -0
  324. package/dist/cli/navigation.d.ts.map +1 -0
  325. package/dist/cli/navigation.js +367 -0
  326. package/dist/cli/navigation.js.map +1 -0
  327. package/dist/cli/options.d.ts +21 -0
  328. package/dist/cli/options.d.ts.map +1 -0
  329. package/dist/cli/options.js +694 -0
  330. package/dist/cli/options.js.map +1 -0
  331. package/dist/cli/orient.d.ts +6 -0
  332. package/dist/cli/orient.d.ts.map +1 -0
  333. package/dist/cli/orient.js +72 -0
  334. package/dist/cli/orient.js.map +1 -0
  335. package/dist/cli/packet.d.ts +4 -0
  336. package/dist/cli/packet.d.ts.map +1 -0
  337. package/dist/cli/packet.js +53 -0
  338. package/dist/cli/packet.js.map +1 -0
  339. package/dist/cli/pretty.d.ts +9 -0
  340. package/dist/cli/pretty.d.ts.map +1 -0
  341. package/dist/cli/pretty.js +91 -0
  342. package/dist/cli/pretty.js.map +1 -0
  343. package/dist/cli/progress.d.ts +20 -0
  344. package/dist/cli/progress.d.ts.map +1 -0
  345. package/dist/cli/progress.js +156 -0
  346. package/dist/cli/progress.js.map +1 -0
  347. package/dist/cli/projectFile.d.ts +13 -0
  348. package/dist/cli/projectFile.d.ts.map +1 -0
  349. package/dist/cli/projectFile.js +23 -0
  350. package/dist/cli/projectFile.js.map +1 -0
  351. package/dist/cli/refactorPlan.d.ts +6 -0
  352. package/dist/cli/refactorPlan.d.ts.map +1 -0
  353. package/dist/cli/refactorPlan.js +84 -0
  354. package/dist/cli/refactorPlan.js.map +1 -0
  355. package/dist/cli/renamePreview.d.ts +4 -0
  356. package/dist/cli/renamePreview.d.ts.map +1 -0
  357. package/dist/cli/renamePreview.js +86 -0
  358. package/dist/cli/renamePreview.js.map +1 -0
  359. package/dist/cli/review.d.ts +36 -0
  360. package/dist/cli/review.d.ts.map +1 -0
  361. package/dist/cli/review.js +302 -0
  362. package/dist/cli/review.js.map +1 -0
  363. package/dist/cli/rootPolicy.d.ts +53 -0
  364. package/dist/cli/rootPolicy.d.ts.map +1 -0
  365. package/dist/cli/rootPolicy.js +190 -0
  366. package/dist/cli/rootPolicy.js.map +1 -0
  367. package/dist/cli/search.d.ts +8 -0
  368. package/dist/cli/search.d.ts.map +1 -0
  369. package/dist/cli/search.js +49 -0
  370. package/dist/cli/search.js.map +1 -0
  371. package/dist/cli/skill.d.ts +13 -0
  372. package/dist/cli/skill.d.ts.map +1 -0
  373. package/dist/cli/skill.js +227 -0
  374. package/dist/cli/skill.js.map +1 -0
  375. package/dist/cli/sql.d.ts +6 -0
  376. package/dist/cli/sql.d.ts.map +1 -0
  377. package/dist/cli/sql.js +37 -0
  378. package/dist/cli/sql.js.map +1 -0
  379. package/dist/cli/symbols.d.ts +4 -0
  380. package/dist/cli/symbols.d.ts.map +1 -0
  381. package/dist/cli/symbols.js +59 -0
  382. package/dist/cli/symbols.js.map +1 -0
  383. package/dist/cli/typeHierarchy.d.ts +6 -0
  384. package/dist/cli/typeHierarchy.d.ts.map +1 -0
  385. package/dist/cli/typeHierarchy.js +81 -0
  386. package/dist/cli/typeHierarchy.js.map +1 -0
  387. package/dist/cli/viewer.d.ts +27 -0
  388. package/dist/cli/viewer.d.ts.map +1 -0
  389. package/dist/cli/viewer.js +313 -0
  390. package/dist/cli/viewer.js.map +1 -0
  391. package/dist/cli.d.ts +7 -0
  392. package/dist/cli.d.ts.map +1 -0
  393. package/dist/cli.js +185 -0
  394. package/dist/cli.js.map +1 -0
  395. package/dist/cliBootstrap.d.ts +3 -0
  396. package/dist/cliBootstrap.d.ts.map +1 -0
  397. package/dist/cliBootstrap.js +10 -0
  398. package/dist/cliBootstrap.js.map +1 -0
  399. package/dist/config.d.ts +18 -0
  400. package/dist/config.d.ts.map +1 -0
  401. package/dist/config.js +141 -0
  402. package/dist/config.js.map +1 -0
  403. package/dist/documentLinks/asciidoc.d.ts +3 -0
  404. package/dist/documentLinks/asciidoc.d.ts.map +1 -0
  405. package/dist/documentLinks/asciidoc.js +115 -0
  406. package/dist/documentLinks/asciidoc.js.map +1 -0
  407. package/dist/documentLinks/check.d.ts +31 -0
  408. package/dist/documentLinks/check.d.ts.map +1 -0
  409. package/dist/documentLinks/check.js +272 -0
  410. package/dist/documentLinks/check.js.map +1 -0
  411. package/dist/documentLinks/html.d.ts +5 -0
  412. package/dist/documentLinks/html.d.ts.map +1 -0
  413. package/dist/documentLinks/html.js +324 -0
  414. package/dist/documentLinks/html.js.map +1 -0
  415. package/dist/documentLinks/markdown.d.ts +15 -0
  416. package/dist/documentLinks/markdown.d.ts.map +1 -0
  417. package/dist/documentLinks/markdown.js +538 -0
  418. package/dist/documentLinks/markdown.js.map +1 -0
  419. package/dist/documentLinks/rst.d.ts +3 -0
  420. package/dist/documentLinks/rst.d.ts.map +1 -0
  421. package/dist/documentLinks/rst.js +179 -0
  422. package/dist/documentLinks/rst.js.map +1 -0
  423. package/dist/documentLinks/sfc.d.ts +4 -0
  424. package/dist/documentLinks/sfc.d.ts.map +1 -0
  425. package/dist/documentLinks/sfc.js +30 -0
  426. package/dist/documentLinks/sfc.js.map +1 -0
  427. package/dist/documentLinks/shared.d.ts +11 -0
  428. package/dist/documentLinks/shared.d.ts.map +1 -0
  429. package/dist/documentLinks/shared.js +147 -0
  430. package/dist/documentLinks/shared.js.map +1 -0
  431. package/dist/documentLinks.d.ts +12 -0
  432. package/dist/documentLinks.d.ts.map +1 -0
  433. package/dist/documentLinks.js +50 -0
  434. package/dist/documentLinks.js.map +1 -0
  435. package/dist/drift/artifact.d.ts +3 -0
  436. package/dist/drift/artifact.d.ts.map +1 -0
  437. package/dist/drift/artifact.js +170 -0
  438. package/dist/drift/artifact.js.map +1 -0
  439. package/dist/drift/compare.d.ts +5 -0
  440. package/dist/drift/compare.d.ts.map +1 -0
  441. package/dist/drift/compare.js +355 -0
  442. package/dist/drift/compare.js.map +1 -0
  443. package/dist/drift/git.d.ts +3 -0
  444. package/dist/drift/git.d.ts.map +1 -0
  445. package/dist/drift/git.js +128 -0
  446. package/dist/drift/git.js.map +1 -0
  447. package/dist/drift/index.d.ts +8 -0
  448. package/dist/drift/index.d.ts.map +1 -0
  449. package/dist/drift/index.js +7 -0
  450. package/dist/drift/index.js.map +1 -0
  451. package/dist/drift/languages.d.ts +2 -0
  452. package/dist/drift/languages.d.ts.map +1 -0
  453. package/dist/drift/languages.js +18 -0
  454. package/dist/drift/languages.js.map +1 -0
  455. package/dist/drift/report.d.ts +6 -0
  456. package/dist/drift/report.d.ts.map +1 -0
  457. package/dist/drift/report.js +75 -0
  458. package/dist/drift/report.js.map +1 -0
  459. package/dist/drift/snapshot.d.ts +3 -0
  460. package/dist/drift/snapshot.d.ts.map +1 -0
  461. package/dist/drift/snapshot.js +164 -0
  462. package/dist/drift/snapshot.js.map +1 -0
  463. package/dist/drift/types.d.ts +142 -0
  464. package/dist/drift/types.d.ts.map +1 -0
  465. package/dist/drift/types.js +2 -0
  466. package/dist/drift/types.js.map +1 -0
  467. package/dist/duplicate-keywords.d.ts +3 -0
  468. package/dist/duplicate-keywords.d.ts.map +1 -0
  469. package/dist/duplicate-keywords.js +155 -0
  470. package/dist/duplicate-keywords.js.map +1 -0
  471. package/dist/duplicate-token-normalization.d.ts +6 -0
  472. package/dist/duplicate-token-normalization.d.ts.map +1 -0
  473. package/dist/duplicate-token-normalization.js +53 -0
  474. package/dist/duplicate-token-normalization.js.map +1 -0
  475. package/dist/duplicates/scoring.d.ts +121 -0
  476. package/dist/duplicates/scoring.d.ts.map +1 -0
  477. package/dist/duplicates/scoring.js +1245 -0
  478. package/dist/duplicates/scoring.js.map +1 -0
  479. package/dist/duplicates/types.d.ts +216 -0
  480. package/dist/duplicates/types.d.ts.map +1 -0
  481. package/dist/duplicates/types.js +2 -0
  482. package/dist/duplicates/types.js.map +1 -0
  483. package/dist/duplicates/unitCache.d.ts +40 -0
  484. package/dist/duplicates/unitCache.d.ts.map +1 -0
  485. package/dist/duplicates/unitCache.js +352 -0
  486. package/dist/duplicates/unitCache.js.map +1 -0
  487. package/dist/duplicates/units.d.ts +60 -0
  488. package/dist/duplicates/units.d.ts.map +1 -0
  489. package/dist/duplicates/units.js +447 -0
  490. package/dist/duplicates/units.js.map +1 -0
  491. package/dist/duplicates.d.ts +14 -0
  492. package/dist/duplicates.d.ts.map +1 -0
  493. package/dist/duplicates.js +400 -0
  494. package/dist/duplicates.js.map +1 -0
  495. package/dist/duplicatesLeads.d.ts +39 -0
  496. package/dist/duplicatesLeads.d.ts.map +1 -0
  497. package/dist/duplicatesLeads.js +112 -0
  498. package/dist/duplicatesLeads.js.map +1 -0
  499. package/dist/frameworks/angularjs.d.ts +18 -0
  500. package/dist/frameworks/angularjs.d.ts.map +1 -0
  501. package/dist/frameworks/angularjs.js +427 -0
  502. package/dist/frameworks/angularjs.js.map +1 -0
  503. package/dist/graph-builder.d.ts +35 -0
  504. package/dist/graph-builder.d.ts.map +1 -0
  505. package/dist/graph-builder.js +132 -0
  506. package/dist/graph-builder.js.map +1 -0
  507. package/dist/graph-edge-collector.d.ts +57 -0
  508. package/dist/graph-edge-collector.d.ts.map +1 -0
  509. package/dist/graph-edge-collector.js +199 -0
  510. package/dist/graph-edge-collector.js.map +1 -0
  511. package/dist/graphs/adjacency.d.ts +10 -0
  512. package/dist/graphs/adjacency.d.ts.map +1 -0
  513. package/dist/graphs/adjacency.js +38 -0
  514. package/dist/graphs/adjacency.js.map +1 -0
  515. package/dist/graphs/angularjs.d.ts +5 -0
  516. package/dist/graphs/angularjs.d.ts.map +1 -0
  517. package/dist/graphs/angularjs.js +88 -0
  518. package/dist/graphs/angularjs.js.map +1 -0
  519. package/dist/graphs/cycles.d.ts +24 -0
  520. package/dist/graphs/cycles.d.ts.map +1 -0
  521. package/dist/graphs/cycles.js +159 -0
  522. package/dist/graphs/cycles.js.map +1 -0
  523. package/dist/graphs/edgeResolution.d.ts +25 -0
  524. package/dist/graphs/edgeResolution.d.ts.map +1 -0
  525. package/dist/graphs/edgeResolution.js +97 -0
  526. package/dist/graphs/edgeResolution.js.map +1 -0
  527. package/dist/graphs/external/cache.d.ts +6 -0
  528. package/dist/graphs/external/cache.d.ts.map +1 -0
  529. package/dist/graphs/external/cache.js +21 -0
  530. package/dist/graphs/external/cache.js.map +1 -0
  531. package/dist/graphs/external/context.d.ts +9 -0
  532. package/dist/graphs/external/context.d.ts.map +1 -0
  533. package/dist/graphs/external/context.js +93 -0
  534. package/dist/graphs/external/context.js.map +1 -0
  535. package/dist/graphs/external/manifests.d.ts +8 -0
  536. package/dist/graphs/external/manifests.d.ts.map +1 -0
  537. package/dist/graphs/external/manifests.js +429 -0
  538. package/dist/graphs/external/manifests.js.map +1 -0
  539. package/dist/graphs/external/stdlib.d.ts +3 -0
  540. package/dist/graphs/external/stdlib.d.ts.map +1 -0
  541. package/dist/graphs/external/stdlib.js +166 -0
  542. package/dist/graphs/external/stdlib.js.map +1 -0
  543. package/dist/graphs/external-classifier.d.ts +16 -0
  544. package/dist/graphs/external-classifier.d.ts.map +1 -0
  545. package/dist/graphs/external-classifier.js +46 -0
  546. package/dist/graphs/external-classifier.js.map +1 -0
  547. package/dist/graphs/grep.d.ts +66 -0
  548. package/dist/graphs/grep.d.ts.map +1 -0
  549. package/dist/graphs/grep.js +131 -0
  550. package/dist/graphs/grep.js.map +1 -0
  551. package/dist/graphs/hotspots.d.ts +13 -0
  552. package/dist/graphs/hotspots.d.ts.map +1 -0
  553. package/dist/graphs/hotspots.js +88 -0
  554. package/dist/graphs/hotspots.js.map +1 -0
  555. package/dist/graphs/limits.d.ts +2 -0
  556. package/dist/graphs/limits.d.ts.map +1 -0
  557. package/dist/graphs/limits.js +7 -0
  558. package/dist/graphs/limits.js.map +1 -0
  559. package/dist/graphs/queries.d.ts +4 -0
  560. package/dist/graphs/queries.d.ts.map +1 -0
  561. package/dist/graphs/queries.js +4 -0
  562. package/dist/graphs/queries.js.map +1 -0
  563. package/dist/graphs/render.d.ts +6 -0
  564. package/dist/graphs/render.d.ts.map +1 -0
  565. package/dist/graphs/render.js +85 -0
  566. package/dist/graphs/render.js.map +1 -0
  567. package/dist/graphs/specifiers.d.ts +24 -0
  568. package/dist/graphs/specifiers.d.ts.map +1 -0
  569. package/dist/graphs/specifiers.js +434 -0
  570. package/dist/graphs/specifiers.js.map +1 -0
  571. package/dist/graphs/symbol-graph-detailed/ast.d.ts +25 -0
  572. package/dist/graphs/symbol-graph-detailed/ast.d.ts.map +1 -0
  573. package/dist/graphs/symbol-graph-detailed/ast.js +167 -0
  574. package/dist/graphs/symbol-graph-detailed/ast.js.map +1 -0
  575. package/dist/graphs/symbol-graph-detailed/edgePasses.d.ts +30 -0
  576. package/dist/graphs/symbol-graph-detailed/edgePasses.d.ts.map +1 -0
  577. package/dist/graphs/symbol-graph-detailed/edgePasses.js +484 -0
  578. package/dist/graphs/symbol-graph-detailed/edgePasses.js.map +1 -0
  579. package/dist/graphs/symbol-graph-detailed/importAliases.d.ts +10 -0
  580. package/dist/graphs/symbol-graph-detailed/importAliases.d.ts.map +1 -0
  581. package/dist/graphs/symbol-graph-detailed/importAliases.js +44 -0
  582. package/dist/graphs/symbol-graph-detailed/importAliases.js.map +1 -0
  583. package/dist/graphs/symbol-graph-detailed/memberChains.d.ts +17 -0
  584. package/dist/graphs/symbol-graph-detailed/memberChains.d.ts.map +1 -0
  585. package/dist/graphs/symbol-graph-detailed/memberChains.js +30 -0
  586. package/dist/graphs/symbol-graph-detailed/memberChains.js.map +1 -0
  587. package/dist/graphs/symbol-graph-detailed.d.ts +14 -0
  588. package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -0
  589. package/dist/graphs/symbol-graph-detailed.js +180 -0
  590. package/dist/graphs/symbol-graph-detailed.js.map +1 -0
  591. package/dist/graphs/symbol-graph.d.ts +56 -0
  592. package/dist/graphs/symbol-graph.d.ts.map +1 -0
  593. package/dist/graphs/symbol-graph.js +180 -0
  594. package/dist/graphs/symbol-graph.js.map +1 -0
  595. package/dist/graphs/symbol-render.d.ts +22 -0
  596. package/dist/graphs/symbol-render.d.ts.map +1 -0
  597. package/dist/graphs/symbol-render.js +184 -0
  598. package/dist/graphs/symbol-render.js.map +1 -0
  599. package/dist/graphs/traversal.d.ts +20 -0
  600. package/dist/graphs/traversal.d.ts.map +1 -0
  601. package/dist/graphs/traversal.js +75 -0
  602. package/dist/graphs/traversal.js.map +1 -0
  603. package/dist/graphs/types.d.ts +18 -0
  604. package/dist/graphs/types.d.ts.map +1 -0
  605. package/dist/graphs/types.js +2 -0
  606. package/dist/graphs/types.js.map +1 -0
  607. package/dist/graphs/unresolved.d.ts +13 -0
  608. package/dist/graphs/unresolved.d.ts.map +1 -0
  609. package/dist/graphs/unresolved.js +47 -0
  610. package/dist/graphs/unresolved.js.map +1 -0
  611. package/dist/graphs.d.ts +17 -0
  612. package/dist/graphs.d.ts.map +1 -0
  613. package/dist/graphs.js +11 -0
  614. package/dist/graphs.js.map +1 -0
  615. package/dist/impact/analyzer.d.ts +8 -0
  616. package/dist/impact/analyzer.d.ts.map +1 -0
  617. package/dist/impact/analyzer.js +156 -0
  618. package/dist/impact/analyzer.js.map +1 -0
  619. package/dist/impact/budgets.d.ts +36 -0
  620. package/dist/impact/budgets.d.ts.map +1 -0
  621. package/dist/impact/budgets.js +178 -0
  622. package/dist/impact/budgets.js.map +1 -0
  623. package/dist/impact/call-compatibility/providers/index.d.ts +14 -0
  624. package/dist/impact/call-compatibility/providers/index.d.ts.map +1 -0
  625. package/dist/impact/call-compatibility/providers/index.js +58 -0
  626. package/dist/impact/call-compatibility/providers/index.js.map +1 -0
  627. package/dist/impact/call-compatibility/providers/types.d.ts +26 -0
  628. package/dist/impact/call-compatibility/providers/types.d.ts.map +1 -0
  629. package/dist/impact/call-compatibility/providers/types.js +2 -0
  630. package/dist/impact/call-compatibility/providers/types.js.map +1 -0
  631. package/dist/impact/call-compatibility/types.d.ts +24 -0
  632. package/dist/impact/call-compatibility/types.d.ts.map +1 -0
  633. package/dist/impact/call-compatibility/types.js +2 -0
  634. package/dist/impact/call-compatibility/types.js.map +1 -0
  635. package/dist/impact/callCompatibility.d.ts +17 -0
  636. package/dist/impact/callCompatibility.d.ts.map +1 -0
  637. package/dist/impact/callCompatibility.js +1546 -0
  638. package/dist/impact/callCompatibility.js.map +1 -0
  639. package/dist/impact/collect.d.ts +27 -0
  640. package/dist/impact/collect.d.ts.map +1 -0
  641. package/dist/impact/collect.js +97 -0
  642. package/dist/impact/collect.js.map +1 -0
  643. package/dist/impact/context.d.ts +42 -0
  644. package/dist/impact/context.d.ts.map +1 -0
  645. package/dist/impact/context.js +286 -0
  646. package/dist/impact/context.js.map +1 -0
  647. package/dist/impact/direct.d.ts +26 -0
  648. package/dist/impact/direct.d.ts.map +1 -0
  649. package/dist/impact/direct.js +187 -0
  650. package/dist/impact/direct.js.map +1 -0
  651. package/dist/impact/hunks.d.ts +14 -0
  652. package/dist/impact/hunks.d.ts.map +1 -0
  653. package/dist/impact/hunks.js +87 -0
  654. package/dist/impact/hunks.js.map +1 -0
  655. package/dist/impact/index.d.ts +22 -0
  656. package/dist/impact/index.d.ts.map +1 -0
  657. package/dist/impact/index.js +27 -0
  658. package/dist/impact/index.js.map +1 -0
  659. package/dist/impact/map.d.ts +12 -0
  660. package/dist/impact/map.d.ts.map +1 -0
  661. package/dist/impact/map.js +753 -0
  662. package/dist/impact/map.js.map +1 -0
  663. package/dist/impact/memberResolutionCoverage.d.ts +14 -0
  664. package/dist/impact/memberResolutionCoverage.d.ts.map +1 -0
  665. package/dist/impact/memberResolutionCoverage.js +38 -0
  666. package/dist/impact/memberResolutionCoverage.js.map +1 -0
  667. package/dist/impact/parse.d.ts +5 -0
  668. package/dist/impact/parse.d.ts.map +1 -0
  669. package/dist/impact/parse.js +239 -0
  670. package/dist/impact/parse.js.map +1 -0
  671. package/dist/impact/path.d.ts +14 -0
  672. package/dist/impact/path.d.ts.map +1 -0
  673. package/dist/impact/path.js +103 -0
  674. package/dist/impact/path.js.map +1 -0
  675. package/dist/impact/providers/base.d.ts +10 -0
  676. package/dist/impact/providers/base.d.ts.map +1 -0
  677. package/dist/impact/providers/base.js +239 -0
  678. package/dist/impact/providers/base.js.map +1 -0
  679. package/dist/impact/referenceCache.d.ts +12 -0
  680. package/dist/impact/referenceCache.d.ts.map +1 -0
  681. package/dist/impact/referenceCache.js +101 -0
  682. package/dist/impact/referenceCache.js.map +1 -0
  683. package/dist/impact/report-suggestions.d.ts +4 -0
  684. package/dist/impact/report-suggestions.d.ts.map +1 -0
  685. package/dist/impact/report-suggestions.js +886 -0
  686. package/dist/impact/report-suggestions.js.map +1 -0
  687. package/dist/impact/report.d.ts +8 -0
  688. package/dist/impact/report.d.ts.map +1 -0
  689. package/dist/impact/report.js +405 -0
  690. package/dist/impact/report.js.map +1 -0
  691. package/dist/impact/reportCompact.d.ts +8 -0
  692. package/dist/impact/reportCompact.d.ts.map +1 -0
  693. package/dist/impact/reportCompact.js +145 -0
  694. package/dist/impact/reportCompact.js.map +1 -0
  695. package/dist/impact/reportFull.d.ts +10 -0
  696. package/dist/impact/reportFull.d.ts.map +1 -0
  697. package/dist/impact/reportFull.js +66 -0
  698. package/dist/impact/reportFull.js.map +1 -0
  699. package/dist/impact/reportParts.d.ts +42 -0
  700. package/dist/impact/reportParts.d.ts.map +1 -0
  701. package/dist/impact/reportParts.js +2 -0
  702. package/dist/impact/reportParts.js.map +1 -0
  703. package/dist/impact/reportShared.d.ts +76 -0
  704. package/dist/impact/reportShared.d.ts.map +1 -0
  705. package/dist/impact/reportShared.js +130 -0
  706. package/dist/impact/reportShared.js.map +1 -0
  707. package/dist/impact/severity.d.ts +29 -0
  708. package/dist/impact/severity.d.ts.map +1 -0
  709. package/dist/impact/severity.js +178 -0
  710. package/dist/impact/severity.js.map +1 -0
  711. package/dist/impact/signature-node-utils.d.ts +5 -0
  712. package/dist/impact/signature-node-utils.d.ts.map +1 -0
  713. package/dist/impact/signature-node-utils.js +29 -0
  714. package/dist/impact/signature-node-utils.js.map +1 -0
  715. package/dist/impact/streaming.d.ts +60 -0
  716. package/dist/impact/streaming.d.ts.map +1 -0
  717. package/dist/impact/streaming.js +285 -0
  718. package/dist/impact/streaming.js.map +1 -0
  719. package/dist/impact/suggestions.d.ts +4 -0
  720. package/dist/impact/suggestions.d.ts.map +1 -0
  721. package/dist/impact/suggestions.js +317 -0
  722. package/dist/impact/suggestions.js.map +1 -0
  723. package/dist/impact/testPatterns.d.ts +6 -0
  724. package/dist/impact/testPatterns.d.ts.map +1 -0
  725. package/dist/impact/testPatterns.js +65 -0
  726. package/dist/impact/testPatterns.js.map +1 -0
  727. package/dist/impact/transitive.d.ts +12 -0
  728. package/dist/impact/transitive.d.ts.map +1 -0
  729. package/dist/impact/transitive.js +188 -0
  730. package/dist/impact/transitive.js.map +1 -0
  731. package/dist/impact/types.d.ts +556 -0
  732. package/dist/impact/types.d.ts.map +1 -0
  733. package/dist/impact/types.js +17 -0
  734. package/dist/impact/types.js.map +1 -0
  735. package/dist/index.d.ts +60 -0
  736. package/dist/index.d.ts.map +1 -0
  737. package/dist/index.js +55 -0
  738. package/dist/index.js.map +1 -0
  739. package/dist/indexer/build-cache/manifest.d.ts +48 -0
  740. package/dist/indexer/build-cache/manifest.d.ts.map +1 -0
  741. package/dist/indexer/build-cache/manifest.js +228 -0
  742. package/dist/indexer/build-cache/manifest.js.map +1 -0
  743. package/dist/indexer/build-cache/module-cache.d.ts +20 -0
  744. package/dist/indexer/build-cache/module-cache.d.ts.map +1 -0
  745. package/dist/indexer/build-cache/module-cache.js +339 -0
  746. package/dist/indexer/build-cache/module-cache.js.map +1 -0
  747. package/dist/indexer/build-cache/options.d.ts +50 -0
  748. package/dist/indexer/build-cache/options.d.ts.map +1 -0
  749. package/dist/indexer/build-cache/options.js +276 -0
  750. package/dist/indexer/build-cache/options.js.map +1 -0
  751. package/dist/indexer/build-cache/project-snapshot.d.ts +30 -0
  752. package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -0
  753. package/dist/indexer/build-cache/project-snapshot.js +928 -0
  754. package/dist/indexer/build-cache/project-snapshot.js.map +1 -0
  755. package/dist/indexer/build-cache/reports.d.ts +13 -0
  756. package/dist/indexer/build-cache/reports.d.ts.map +1 -0
  757. package/dist/indexer/build-cache/reports.js +134 -0
  758. package/dist/indexer/build-cache/reports.js.map +1 -0
  759. package/dist/indexer/build-cache.d.ts +6 -0
  760. package/dist/indexer/build-cache.d.ts.map +1 -0
  761. package/dist/indexer/build-cache.js +6 -0
  762. package/dist/indexer/build-cache.js.map +1 -0
  763. package/dist/indexer/build-index.d.ts +28 -0
  764. package/dist/indexer/build-index.d.ts.map +1 -0
  765. package/dist/indexer/build-index.js +1579 -0
  766. package/dist/indexer/build-index.js.map +1 -0
  767. package/dist/indexer/build-manifest.d.ts +16 -0
  768. package/dist/indexer/build-manifest.d.ts.map +1 -0
  769. package/dist/indexer/build-manifest.js +43 -0
  770. package/dist/indexer/build-manifest.js.map +1 -0
  771. package/dist/indexer/build-workers.d.ts +27 -0
  772. package/dist/indexer/build-workers.d.ts.map +1 -0
  773. package/dist/indexer/build-workers.js +209 -0
  774. package/dist/indexer/build-workers.js.map +1 -0
  775. package/dist/indexer/call-hierarchy.d.ts +33 -0
  776. package/dist/indexer/call-hierarchy.d.ts.map +1 -0
  777. package/dist/indexer/call-hierarchy.js +192 -0
  778. package/dist/indexer/call-hierarchy.js.map +1 -0
  779. package/dist/indexer/declarations.d.ts +15 -0
  780. package/dist/indexer/declarations.d.ts.map +1 -0
  781. package/dist/indexer/declarations.js +95 -0
  782. package/dist/indexer/declarations.js.map +1 -0
  783. package/dist/indexer/finalize.d.ts +20 -0
  784. package/dist/indexer/finalize.d.ts.map +1 -0
  785. package/dist/indexer/finalize.js +34 -0
  786. package/dist/indexer/finalize.js.map +1 -0
  787. package/dist/indexer/import-types.d.ts +48 -0
  788. package/dist/indexer/import-types.d.ts.map +1 -0
  789. package/dist/indexer/import-types.js +2 -0
  790. package/dist/indexer/import-types.js.map +1 -0
  791. package/dist/indexer/imports/context.d.ts +7 -0
  792. package/dist/indexer/imports/context.d.ts.map +1 -0
  793. package/dist/indexer/imports/context.js +2 -0
  794. package/dist/indexer/imports/context.js.map +1 -0
  795. package/dist/indexer/imports/graphOnly.d.ts +13 -0
  796. package/dist/indexer/imports/graphOnly.d.ts.map +1 -0
  797. package/dist/indexer/imports/graphOnly.js +40 -0
  798. package/dist/indexer/imports/graphOnly.js.map +1 -0
  799. package/dist/indexer/imports/jsTextImports.d.ts +9 -0
  800. package/dist/indexer/imports/jsTextImports.d.ts.map +1 -0
  801. package/dist/indexer/imports/jsTextImports.js +173 -0
  802. package/dist/indexer/imports/jsTextImports.js.map +1 -0
  803. package/dist/indexer/imports/languageSpecific.d.ts +26 -0
  804. package/dist/indexer/imports/languageSpecific.d.ts.map +1 -0
  805. package/dist/indexer/imports/languageSpecific.js +444 -0
  806. package/dist/indexer/imports/languageSpecific.js.map +1 -0
  807. package/dist/indexer/imports/nativeCaptures.d.ts +16 -0
  808. package/dist/indexer/imports/nativeCaptures.d.ts.map +1 -0
  809. package/dist/indexer/imports/nativeCaptures.js +139 -0
  810. package/dist/indexer/imports/nativeCaptures.js.map +1 -0
  811. package/dist/indexer/imports/python.d.ts +8 -0
  812. package/dist/indexer/imports/python.d.ts.map +1 -0
  813. package/dist/indexer/imports/python.js +116 -0
  814. package/dist/indexer/imports/python.js.map +1 -0
  815. package/dist/indexer/imports.d.ts +21 -0
  816. package/dist/indexer/imports.d.ts.map +1 -0
  817. package/dist/indexer/imports.js +188 -0
  818. package/dist/indexer/imports.js.map +1 -0
  819. package/dist/indexer/incremental-plan.d.ts +71 -0
  820. package/dist/indexer/incremental-plan.d.ts.map +1 -0
  821. package/dist/indexer/incremental-plan.js +212 -0
  822. package/dist/indexer/incremental-plan.js.map +1 -0
  823. package/dist/indexer/load-current-index.d.ts +51 -0
  824. package/dist/indexer/load-current-index.d.ts.map +1 -0
  825. package/dist/indexer/load-current-index.js +53 -0
  826. package/dist/indexer/load-current-index.js.map +1 -0
  827. package/dist/indexer/locals-and-exports.d.ts +12 -0
  828. package/dist/indexer/locals-and-exports.d.ts.map +1 -0
  829. package/dist/indexer/locals-and-exports.js +872 -0
  830. package/dist/indexer/locals-and-exports.js.map +1 -0
  831. package/dist/indexer/navigation-goto.d.ts +13 -0
  832. package/dist/indexer/navigation-goto.d.ts.map +1 -0
  833. package/dist/indexer/navigation-goto.js +548 -0
  834. package/dist/indexer/navigation-goto.js.map +1 -0
  835. package/dist/indexer/navigation-local.d.ts +13 -0
  836. package/dist/indexer/navigation-local.d.ts.map +1 -0
  837. package/dist/indexer/navigation-local.js +173 -0
  838. package/dist/indexer/navigation-local.js.map +1 -0
  839. package/dist/indexer/navigation-php.d.ts +7 -0
  840. package/dist/indexer/navigation-php.d.ts.map +1 -0
  841. package/dist/indexer/navigation-php.js +90 -0
  842. package/dist/indexer/navigation-php.js.map +1 -0
  843. package/dist/indexer/navigation-provenance.d.ts +14 -0
  844. package/dist/indexer/navigation-provenance.d.ts.map +1 -0
  845. package/dist/indexer/navigation-provenance.js +26 -0
  846. package/dist/indexer/navigation-provenance.js.map +1 -0
  847. package/dist/indexer/navigation-references.d.ts +30 -0
  848. package/dist/indexer/navigation-references.d.ts.map +1 -0
  849. package/dist/indexer/navigation-references.js +299 -0
  850. package/dist/indexer/navigation-references.js.map +1 -0
  851. package/dist/indexer/navigation-resolve.d.ts +12 -0
  852. package/dist/indexer/navigation-resolve.d.ts.map +1 -0
  853. package/dist/indexer/navigation-resolve.js +389 -0
  854. package/dist/indexer/navigation-resolve.js.map +1 -0
  855. package/dist/indexer/navigation.d.ts +19 -0
  856. package/dist/indexer/navigation.d.ts.map +1 -0
  857. package/dist/indexer/navigation.js +468 -0
  858. package/dist/indexer/navigation.js.map +1 -0
  859. package/dist/indexer/parse-context.d.ts +47 -0
  860. package/dist/indexer/parse-context.d.ts.map +1 -0
  861. package/dist/indexer/parse-context.js +127 -0
  862. package/dist/indexer/parse-context.js.map +1 -0
  863. package/dist/indexer/parsed-cache.d.ts +6 -0
  864. package/dist/indexer/parsed-cache.d.ts.map +1 -0
  865. package/dist/indexer/parsed-cache.js +32 -0
  866. package/dist/indexer/parsed-cache.js.map +1 -0
  867. package/dist/indexer/reference-candidate-types.d.ts +5 -0
  868. package/dist/indexer/reference-candidate-types.d.ts.map +1 -0
  869. package/dist/indexer/reference-candidate-types.js +2 -0
  870. package/dist/indexer/reference-candidate-types.js.map +1 -0
  871. package/dist/indexer/reference-candidates.d.ts +6 -0
  872. package/dist/indexer/reference-candidates.d.ts.map +1 -0
  873. package/dist/indexer/reference-candidates.js +28 -0
  874. package/dist/indexer/reference-candidates.js.map +1 -0
  875. package/dist/indexer/reference-context.d.ts +13 -0
  876. package/dist/indexer/reference-context.d.ts.map +1 -0
  877. package/dist/indexer/reference-context.js +103 -0
  878. package/dist/indexer/reference-context.js.map +1 -0
  879. package/dist/indexer/scope-types.d.ts +25 -0
  880. package/dist/indexer/scope-types.d.ts.map +1 -0
  881. package/dist/indexer/scope-types.js +2 -0
  882. package/dist/indexer/scope-types.js.map +1 -0
  883. package/dist/indexer/scope.d.ts +11 -0
  884. package/dist/indexer/scope.d.ts.map +1 -0
  885. package/dist/indexer/scope.js +424 -0
  886. package/dist/indexer/scope.js.map +1 -0
  887. package/dist/indexer/shared.d.ts +4 -0
  888. package/dist/indexer/shared.d.ts.map +1 -0
  889. package/dist/indexer/shared.js +9 -0
  890. package/dist/indexer/shared.js.map +1 -0
  891. package/dist/indexer/symbols.d.ts +60 -0
  892. package/dist/indexer/symbols.d.ts.map +1 -0
  893. package/dist/indexer/symbols.js +272 -0
  894. package/dist/indexer/symbols.js.map +1 -0
  895. package/dist/indexer/type-hierarchy.d.ts +52 -0
  896. package/dist/indexer/type-hierarchy.d.ts.map +1 -0
  897. package/dist/indexer/type-hierarchy.js +296 -0
  898. package/dist/indexer/type-hierarchy.js.map +1 -0
  899. package/dist/indexer/types.d.ts +376 -0
  900. package/dist/indexer/types.d.ts.map +1 -0
  901. package/dist/indexer/types.js +15 -0
  902. package/dist/indexer/types.js.map +1 -0
  903. package/dist/indexer/workspace-symbols.d.ts +35 -0
  904. package/dist/indexer/workspace-symbols.d.ts.map +1 -0
  905. package/dist/indexer/workspace-symbols.js +226 -0
  906. package/dist/indexer/workspace-symbols.js.map +1 -0
  907. package/dist/indexer.d.ts +44 -0
  908. package/dist/indexer.d.ts.map +1 -0
  909. package/dist/indexer.js +35 -0
  910. package/dist/indexer.js.map +1 -0
  911. package/dist/installer/registry.d.ts +68 -0
  912. package/dist/installer/registry.d.ts.map +1 -0
  913. package/dist/installer/registry.js +1208 -0
  914. package/dist/installer/registry.js.map +1 -0
  915. package/dist/languages/all.d.ts +28 -0
  916. package/dist/languages/all.d.ts.map +1 -0
  917. package/dist/languages/all.js +28 -0
  918. package/dist/languages/all.js.map +1 -0
  919. package/dist/languages/definitions/adoc.d.ts +2 -0
  920. package/dist/languages/definitions/adoc.d.ts.map +1 -0
  921. package/dist/languages/definitions/adoc.js +5 -0
  922. package/dist/languages/definitions/adoc.js.map +1 -0
  923. package/dist/languages/definitions/astro.d.ts +2 -0
  924. package/dist/languages/definitions/astro.d.ts.map +1 -0
  925. package/dist/languages/definitions/astro.js +5 -0
  926. package/dist/languages/definitions/astro.js.map +1 -0
  927. package/dist/languages/definitions/c.d.ts +2 -0
  928. package/dist/languages/definitions/c.d.ts.map +1 -0
  929. package/dist/languages/definitions/c.js +78 -0
  930. package/dist/languages/definitions/c.js.map +1 -0
  931. package/dist/languages/definitions/cFamily.d.ts +35 -0
  932. package/dist/languages/definitions/cFamily.d.ts.map +1 -0
  933. package/dist/languages/definitions/cFamily.js +179 -0
  934. package/dist/languages/definitions/cFamily.js.map +1 -0
  935. package/dist/languages/definitions/cpp.d.ts +2 -0
  936. package/dist/languages/definitions/cpp.d.ts.map +1 -0
  937. package/dist/languages/definitions/cpp.js +88 -0
  938. package/dist/languages/definitions/cpp.js.map +1 -0
  939. package/dist/languages/definitions/csharp.d.ts +3 -0
  940. package/dist/languages/definitions/csharp.d.ts.map +1 -0
  941. package/dist/languages/definitions/csharp.js +126 -0
  942. package/dist/languages/definitions/csharp.js.map +1 -0
  943. package/dist/languages/definitions/css.d.ts +3 -0
  944. package/dist/languages/definitions/css.d.ts.map +1 -0
  945. package/dist/languages/definitions/css.js +13 -0
  946. package/dist/languages/definitions/css.js.map +1 -0
  947. package/dist/languages/definitions/cssLike.d.ts +5 -0
  948. package/dist/languages/definitions/cssLike.d.ts.map +1 -0
  949. package/dist/languages/definitions/cssLike.js +32 -0
  950. package/dist/languages/definitions/cssLike.js.map +1 -0
  951. package/dist/languages/definitions/go.d.ts +3 -0
  952. package/dist/languages/definitions/go.d.ts.map +1 -0
  953. package/dist/languages/definitions/go.js +113 -0
  954. package/dist/languages/definitions/go.js.map +1 -0
  955. package/dist/languages/definitions/hbs.d.ts +2 -0
  956. package/dist/languages/definitions/hbs.d.ts.map +1 -0
  957. package/dist/languages/definitions/hbs.js +5 -0
  958. package/dist/languages/definitions/hbs.js.map +1 -0
  959. package/dist/languages/definitions/html.d.ts +3 -0
  960. package/dist/languages/definitions/html.d.ts.map +1 -0
  961. package/dist/languages/definitions/html.js +45 -0
  962. package/dist/languages/definitions/html.js.map +1 -0
  963. package/dist/languages/definitions/htmlStub.d.ts +18 -0
  964. package/dist/languages/definitions/htmlStub.d.ts.map +1 -0
  965. package/dist/languages/definitions/htmlStub.js +38 -0
  966. package/dist/languages/definitions/htmlStub.js.map +1 -0
  967. package/dist/languages/definitions/java.d.ts +3 -0
  968. package/dist/languages/definitions/java.d.ts.map +1 -0
  969. package/dist/languages/definitions/java.js +124 -0
  970. package/dist/languages/definitions/java.js.map +1 -0
  971. package/dist/languages/definitions/javascript.d.ts +3 -0
  972. package/dist/languages/definitions/javascript.d.ts.map +1 -0
  973. package/dist/languages/definitions/javascript.js +172 -0
  974. package/dist/languages/definitions/javascript.js.map +1 -0
  975. package/dist/languages/definitions/jsFamily.d.ts +5 -0
  976. package/dist/languages/definitions/jsFamily.d.ts.map +1 -0
  977. package/dist/languages/definitions/jsFamily.js +75 -0
  978. package/dist/languages/definitions/jsFamily.js.map +1 -0
  979. package/dist/languages/definitions/kotlin.d.ts +3 -0
  980. package/dist/languages/definitions/kotlin.d.ts.map +1 -0
  981. package/dist/languages/definitions/kotlin.js +152 -0
  982. package/dist/languages/definitions/kotlin.js.map +1 -0
  983. package/dist/languages/definitions/less.d.ts +3 -0
  984. package/dist/languages/definitions/less.d.ts.map +1 -0
  985. package/dist/languages/definitions/less.js +13 -0
  986. package/dist/languages/definitions/less.js.map +1 -0
  987. package/dist/languages/definitions/loadLanguage.d.ts +2 -0
  988. package/dist/languages/definitions/loadLanguage.d.ts.map +1 -0
  989. package/dist/languages/definitions/loadLanguage.js +2 -0
  990. package/dist/languages/definitions/loadLanguage.js.map +1 -0
  991. package/dist/languages/definitions/markdown.d.ts +2 -0
  992. package/dist/languages/definitions/markdown.d.ts.map +1 -0
  993. package/dist/languages/definitions/markdown.js +5 -0
  994. package/dist/languages/definitions/markdown.js.map +1 -0
  995. package/dist/languages/definitions/mdx.d.ts +2 -0
  996. package/dist/languages/definitions/mdx.d.ts.map +1 -0
  997. package/dist/languages/definitions/mdx.js +5 -0
  998. package/dist/languages/definitions/mdx.js.map +1 -0
  999. package/dist/languages/definitions/php.d.ts +3 -0
  1000. package/dist/languages/definitions/php.d.ts.map +1 -0
  1001. package/dist/languages/definitions/php.js +157 -0
  1002. package/dist/languages/definitions/php.js.map +1 -0
  1003. package/dist/languages/definitions/python.d.ts +3 -0
  1004. package/dist/languages/definitions/python.d.ts.map +1 -0
  1005. package/dist/languages/definitions/python.js +137 -0
  1006. package/dist/languages/definitions/python.js.map +1 -0
  1007. package/dist/languages/definitions/rst.d.ts +2 -0
  1008. package/dist/languages/definitions/rst.d.ts.map +1 -0
  1009. package/dist/languages/definitions/rst.js +5 -0
  1010. package/dist/languages/definitions/rst.js.map +1 -0
  1011. package/dist/languages/definitions/ruby.d.ts +3 -0
  1012. package/dist/languages/definitions/ruby.d.ts.map +1 -0
  1013. package/dist/languages/definitions/ruby.js +92 -0
  1014. package/dist/languages/definitions/ruby.js.map +1 -0
  1015. package/dist/languages/definitions/rust.d.ts +3 -0
  1016. package/dist/languages/definitions/rust.d.ts.map +1 -0
  1017. package/dist/languages/definitions/rust.js +146 -0
  1018. package/dist/languages/definitions/rust.js.map +1 -0
  1019. package/dist/languages/definitions/scss.d.ts +3 -0
  1020. package/dist/languages/definitions/scss.d.ts.map +1 -0
  1021. package/dist/languages/definitions/scss.js +58 -0
  1022. package/dist/languages/definitions/scss.js.map +1 -0
  1023. package/dist/languages/definitions/sql.d.ts +3 -0
  1024. package/dist/languages/definitions/sql.d.ts.map +1 -0
  1025. package/dist/languages/definitions/sql.js +36 -0
  1026. package/dist/languages/definitions/sql.js.map +1 -0
  1027. package/dist/languages/definitions/svelte.d.ts +3 -0
  1028. package/dist/languages/definitions/svelte.d.ts.map +1 -0
  1029. package/dist/languages/definitions/svelte.js +31 -0
  1030. package/dist/languages/definitions/svelte.js.map +1 -0
  1031. package/dist/languages/definitions/swift.d.ts +3 -0
  1032. package/dist/languages/definitions/swift.d.ts.map +1 -0
  1033. package/dist/languages/definitions/swift.js +188 -0
  1034. package/dist/languages/definitions/swift.js.map +1 -0
  1035. package/dist/languages/definitions/typescript.d.ts +4 -0
  1036. package/dist/languages/definitions/typescript.d.ts.map +1 -0
  1037. package/dist/languages/definitions/typescript.js +212 -0
  1038. package/dist/languages/definitions/typescript.js.map +1 -0
  1039. package/dist/languages/definitions/vue.d.ts +3 -0
  1040. package/dist/languages/definitions/vue.d.ts.map +1 -0
  1041. package/dist/languages/definitions/vue.js +31 -0
  1042. package/dist/languages/definitions/vue.js.map +1 -0
  1043. package/dist/languages/definitions/zig.d.ts +3 -0
  1044. package/dist/languages/definitions/zig.d.ts.map +1 -0
  1045. package/dist/languages/definitions/zig.js +75 -0
  1046. package/dist/languages/definitions/zig.js.map +1 -0
  1047. package/dist/languages/filePrep.d.ts +33 -0
  1048. package/dist/languages/filePrep.d.ts.map +1 -0
  1049. package/dist/languages/filePrep.js +77 -0
  1050. package/dist/languages/filePrep.js.map +1 -0
  1051. package/dist/languages/importStatementParsers.d.ts +55 -0
  1052. package/dist/languages/importStatementParsers.d.ts.map +1 -0
  1053. package/dist/languages/importStatementParsers.js +369 -0
  1054. package/dist/languages/importStatementParsers.js.map +1 -0
  1055. package/dist/languages/js-family.d.ts +2 -0
  1056. package/dist/languages/js-family.d.ts.map +1 -0
  1057. package/dist/languages/js-family.js +9 -0
  1058. package/dist/languages/js-family.js.map +1 -0
  1059. package/dist/languages/queryGenerator.d.ts +6 -0
  1060. package/dist/languages/queryGenerator.d.ts.map +1 -0
  1061. package/dist/languages/queryGenerator.js +46 -0
  1062. package/dist/languages/queryGenerator.js.map +1 -0
  1063. package/dist/languages/registry.d.ts +5 -0
  1064. package/dist/languages/registry.d.ts.map +1 -0
  1065. package/dist/languages/registry.js +11 -0
  1066. package/dist/languages/registry.js.map +1 -0
  1067. package/dist/languages/sfc.d.ts +30 -0
  1068. package/dist/languages/sfc.d.ts.map +1 -0
  1069. package/dist/languages/sfc.js +402 -0
  1070. package/dist/languages/sfc.js.map +1 -0
  1071. package/dist/languages/types.d.ts +110 -0
  1072. package/dist/languages/types.d.ts.map +1 -0
  1073. package/dist/languages/types.js +2 -0
  1074. package/dist/languages/types.js.map +1 -0
  1075. package/dist/languages.d.ts +63 -0
  1076. package/dist/languages.d.ts.map +1 -0
  1077. package/dist/languages.js +118 -0
  1078. package/dist/languages.js.map +1 -0
  1079. package/dist/lifecycle/errors.d.ts +4 -0
  1080. package/dist/lifecycle/errors.d.ts.map +1 -0
  1081. package/dist/lifecycle/errors.js +4 -0
  1082. package/dist/lifecycle/errors.js.map +1 -0
  1083. package/dist/lifecycle/gitignore.d.ts +10 -0
  1084. package/dist/lifecycle/gitignore.d.ts.map +1 -0
  1085. package/dist/lifecycle/gitignore.js +83 -0
  1086. package/dist/lifecycle/gitignore.js.map +1 -0
  1087. package/dist/lifecycle/manifest.d.ts +73 -0
  1088. package/dist/lifecycle/manifest.d.ts.map +1 -0
  1089. package/dist/lifecycle/manifest.js +352 -0
  1090. package/dist/lifecycle/manifest.js.map +1 -0
  1091. package/dist/logging.d.ts +5 -0
  1092. package/dist/logging.d.ts.map +1 -0
  1093. package/dist/logging.js +35 -0
  1094. package/dist/logging.js.map +1 -0
  1095. package/dist/mcp/http.d.ts +29 -0
  1096. package/dist/mcp/http.d.ts.map +1 -0
  1097. package/dist/mcp/http.js +179 -0
  1098. package/dist/mcp/http.js.map +1 -0
  1099. package/dist/mcp/security.d.ts +3 -0
  1100. package/dist/mcp/security.d.ts.map +1 -0
  1101. package/dist/mcp/security.js +23 -0
  1102. package/dist/mcp/security.js.map +1 -0
  1103. package/dist/mcp/server.d.ts +267 -0
  1104. package/dist/mcp/server.d.ts.map +1 -0
  1105. package/dist/mcp/server.js +1345 -0
  1106. package/dist/mcp/server.js.map +1 -0
  1107. package/dist/mcp/sqliteGuard.d.ts +3 -0
  1108. package/dist/mcp/sqliteGuard.d.ts.map +1 -0
  1109. package/dist/mcp/sqliteGuard.js +35 -0
  1110. package/dist/mcp/sqliteGuard.js.map +1 -0
  1111. package/dist/mcp/stdioLifecycle.d.ts +23 -0
  1112. package/dist/mcp/stdioLifecycle.d.ts.map +1 -0
  1113. package/dist/mcp/stdioLifecycle.js +83 -0
  1114. package/dist/mcp/stdioLifecycle.js.map +1 -0
  1115. package/dist/mcp/tools.d.ts +15 -0
  1116. package/dist/mcp/tools.d.ts.map +1 -0
  1117. package/dist/mcp/tools.js +299 -0
  1118. package/dist/mcp/tools.js.map +1 -0
  1119. package/dist/mcp.d.ts +9 -0
  1120. package/dist/mcp.d.ts.map +1 -0
  1121. package/dist/mcp.js +8 -0
  1122. package/dist/mcp.js.map +1 -0
  1123. package/dist/native/bindingLoader.d.ts +24 -0
  1124. package/dist/native/bindingLoader.d.ts.map +1 -0
  1125. package/dist/native/bindingLoader.js +206 -0
  1126. package/dist/native/bindingLoader.js.map +1 -0
  1127. package/dist/native/contracts.d.ts +122 -0
  1128. package/dist/native/contracts.d.ts.map +1 -0
  1129. package/dist/native/contracts.js +2 -0
  1130. package/dist/native/contracts.js.map +1 -0
  1131. package/dist/native/execution.d.ts +16 -0
  1132. package/dist/native/execution.d.ts.map +1 -0
  1133. package/dist/native/execution.js +184 -0
  1134. package/dist/native/execution.js.map +1 -0
  1135. package/dist/native/jsBridge.d.ts +7 -0
  1136. package/dist/native/jsBridge.d.ts.map +1 -0
  1137. package/dist/native/jsBridge.js +25 -0
  1138. package/dist/native/jsBridge.js.map +1 -0
  1139. package/dist/native/nativeBackendReport.d.ts +22 -0
  1140. package/dist/native/nativeBackendReport.d.ts.map +1 -0
  1141. package/dist/native/nativeBackendReport.js +102 -0
  1142. package/dist/native/nativeBackendReport.js.map +1 -0
  1143. package/dist/native/projectedTree.d.ts +37 -0
  1144. package/dist/native/projectedTree.d.ts.map +1 -0
  1145. package/dist/native/projectedTree.js +172 -0
  1146. package/dist/native/projectedTree.js.map +1 -0
  1147. package/dist/native/queries.d.ts +22 -0
  1148. package/dist/native/queries.d.ts.map +1 -0
  1149. package/dist/native/queries.js +67 -0
  1150. package/dist/native/queries.js.map +1 -0
  1151. package/dist/native/queryResults.d.ts +6 -0
  1152. package/dist/native/queryResults.d.ts.map +1 -0
  1153. package/dist/native/queryResults.js +26 -0
  1154. package/dist/native/queryResults.js.map +1 -0
  1155. package/dist/native/runtime.d.ts +17 -0
  1156. package/dist/native/runtime.d.ts.map +1 -0
  1157. package/dist/native/runtime.js +152 -0
  1158. package/dist/native/runtime.js.map +1 -0
  1159. package/dist/native/runtimeCache.d.ts +36 -0
  1160. package/dist/native/runtimeCache.d.ts.map +1 -0
  1161. package/dist/native/runtimeCache.js +237 -0
  1162. package/dist/native/runtimeCache.js.map +1 -0
  1163. package/dist/native/treeSitterNative.d.ts +6 -0
  1164. package/dist/native/treeSitterNative.d.ts.map +1 -0
  1165. package/dist/native/treeSitterNative.js +5 -0
  1166. package/dist/native/treeSitterNative.js.map +1 -0
  1167. package/dist/parserBackend.d.ts +57 -0
  1168. package/dist/parserBackend.d.ts.map +1 -0
  1169. package/dist/parserBackend.js +33 -0
  1170. package/dist/parserBackend.js.map +1 -0
  1171. package/dist/presentation/bounds.d.ts +34 -0
  1172. package/dist/presentation/bounds.d.ts.map +1 -0
  1173. package/dist/presentation/bounds.js +43 -0
  1174. package/dist/presentation/bounds.js.map +1 -0
  1175. package/dist/presets.d.ts +32 -0
  1176. package/dist/presets.d.ts.map +1 -0
  1177. package/dist/presets.js +127 -0
  1178. package/dist/presets.js.map +1 -0
  1179. package/dist/query/parser.d.ts +33 -0
  1180. package/dist/query/parser.d.ts.map +1 -0
  1181. package/dist/query/parser.js +104 -0
  1182. package/dist/query/parser.js.map +1 -0
  1183. package/dist/query/symbols.d.ts +15 -0
  1184. package/dist/query/symbols.d.ts.map +1 -0
  1185. package/dist/query/symbols.js +78 -0
  1186. package/dist/query/symbols.js.map +1 -0
  1187. package/dist/query.d.ts +3 -0
  1188. package/dist/query.d.ts.map +1 -0
  1189. package/dist/query.js +3 -0
  1190. package/dist/query.js.map +1 -0
  1191. package/dist/review/candidates.d.ts +13 -0
  1192. package/dist/review/candidates.d.ts.map +1 -0
  1193. package/dist/review/candidates.js +65 -0
  1194. package/dist/review/candidates.js.map +1 -0
  1195. package/dist/review/changes.d.ts +11 -0
  1196. package/dist/review/changes.d.ts.map +1 -0
  1197. package/dist/review/changes.js +94 -0
  1198. package/dist/review/changes.js.map +1 -0
  1199. package/dist/review/deleted.d.ts +23 -0
  1200. package/dist/review/deleted.d.ts.map +1 -0
  1201. package/dist/review/deleted.js +398 -0
  1202. package/dist/review/deleted.js.map +1 -0
  1203. package/dist/review/report.d.ts +37 -0
  1204. package/dist/review/report.d.ts.map +1 -0
  1205. package/dist/review/report.js +76 -0
  1206. package/dist/review/report.js.map +1 -0
  1207. package/dist/review/risk.d.ts +19 -0
  1208. package/dist/review/risk.d.ts.map +1 -0
  1209. package/dist/review/risk.js +105 -0
  1210. package/dist/review/risk.js.map +1 -0
  1211. package/dist/review/summaries.d.ts +24 -0
  1212. package/dist/review/summaries.d.ts.map +1 -0
  1213. package/dist/review/summaries.js +581 -0
  1214. package/dist/review/summaries.js.map +1 -0
  1215. package/dist/review/types.d.ts +146 -0
  1216. package/dist/review/types.d.ts.map +1 -0
  1217. package/dist/review/types.js +43 -0
  1218. package/dist/review/types.js.map +1 -0
  1219. package/dist/review.d.ts +19 -0
  1220. package/dist/review.d.ts.map +1 -0
  1221. package/dist/review.js +442 -0
  1222. package/dist/review.js.map +1 -0
  1223. package/dist/runtimeIdentity.d.ts +27 -0
  1224. package/dist/runtimeIdentity.d.ts.map +1 -0
  1225. package/dist/runtimeIdentity.js +75 -0
  1226. package/dist/runtimeIdentity.js.map +1 -0
  1227. package/dist/session.d.ts +246 -0
  1228. package/dist/session.d.ts.map +1 -0
  1229. package/dist/session.js +858 -0
  1230. package/dist/session.js.map +1 -0
  1231. package/dist/sql/classifySqlFile.d.ts +3 -0
  1232. package/dist/sql/classifySqlFile.d.ts.map +1 -0
  1233. package/dist/sql/classifySqlFile.js +42 -0
  1234. package/dist/sql/classifySqlFile.js.map +1 -0
  1235. package/dist/sql/extractFacts.d.ts +4 -0
  1236. package/dist/sql/extractFacts.d.ts.map +1 -0
  1237. package/dist/sql/extractFacts.js +511 -0
  1238. package/dist/sql/extractFacts.js.map +1 -0
  1239. package/dist/sql/graph.d.ts +33 -0
  1240. package/dist/sql/graph.d.ts.map +1 -0
  1241. package/dist/sql/graph.js +167 -0
  1242. package/dist/sql/graph.js.map +1 -0
  1243. package/dist/sql/index.d.ts +8 -0
  1244. package/dist/sql/index.d.ts.map +1 -0
  1245. package/dist/sql/index.js +5 -0
  1246. package/dist/sql/index.js.map +1 -0
  1247. package/dist/sql/lex.d.ts +12 -0
  1248. package/dist/sql/lex.d.ts.map +1 -0
  1249. package/dist/sql/lex.js +180 -0
  1250. package/dist/sql/lex.js.map +1 -0
  1251. package/dist/sql/lookup.d.ts +3 -0
  1252. package/dist/sql/lookup.d.ts.map +1 -0
  1253. package/dist/sql/lookup.js +11 -0
  1254. package/dist/sql/lookup.js.map +1 -0
  1255. package/dist/sql/navigation.d.ts +4 -0
  1256. package/dist/sql/navigation.d.ts.map +1 -0
  1257. package/dist/sql/navigation.js +399 -0
  1258. package/dist/sql/navigation.js.map +1 -0
  1259. package/dist/sql/review.d.ts +15 -0
  1260. package/dist/sql/review.d.ts.map +1 -0
  1261. package/dist/sql/review.js +197 -0
  1262. package/dist/sql/review.js.map +1 -0
  1263. package/dist/sql/sourceGraph.d.ts +19 -0
  1264. package/dist/sql/sourceGraph.d.ts.map +1 -0
  1265. package/dist/sql/sourceGraph.js +195 -0
  1266. package/dist/sql/sourceGraph.js.map +1 -0
  1267. package/dist/sql/types.d.ts +21 -0
  1268. package/dist/sql/types.d.ts.map +1 -0
  1269. package/dist/sql/types.js +2 -0
  1270. package/dist/sql/types.js.map +1 -0
  1271. package/dist/sqlite/canned-query.d.ts +3 -0
  1272. package/dist/sqlite/canned-query.d.ts.map +1 -0
  1273. package/dist/sqlite/canned-query.js +192 -0
  1274. package/dist/sqlite/canned-query.js.map +1 -0
  1275. package/dist/sqlite/common.d.ts +6 -0
  1276. package/dist/sqlite/common.d.ts.map +1 -0
  1277. package/dist/sqlite/common.js +42 -0
  1278. package/dist/sqlite/common.js.map +1 -0
  1279. package/dist/sqlite/database.d.ts +5 -0
  1280. package/dist/sqlite/database.d.ts.map +1 -0
  1281. package/dist/sqlite/database.js +40 -0
  1282. package/dist/sqlite/database.js.map +1 -0
  1283. package/dist/sqlite/query.d.ts +9 -0
  1284. package/dist/sqlite/query.d.ts.map +1 -0
  1285. package/dist/sqlite/query.js +32 -0
  1286. package/dist/sqlite/query.js.map +1 -0
  1287. package/dist/sqlite/rowBounds.d.ts +24 -0
  1288. package/dist/sqlite/rowBounds.d.ts.map +1 -0
  1289. package/dist/sqlite/rowBounds.js +95 -0
  1290. package/dist/sqlite/rowBounds.js.map +1 -0
  1291. package/dist/sqlite/schema.d.ts +5 -0
  1292. package/dist/sqlite/schema.d.ts.map +1 -0
  1293. package/dist/sqlite/schema.js +243 -0
  1294. package/dist/sqlite/schema.js.map +1 -0
  1295. package/dist/sqlite/types.d.ts +77 -0
  1296. package/dist/sqlite/types.d.ts.map +1 -0
  1297. package/dist/sqlite/types.js +2 -0
  1298. package/dist/sqlite/types.js.map +1 -0
  1299. package/dist/sqlite/write.d.ts +5 -0
  1300. package/dist/sqlite/write.d.ts.map +1 -0
  1301. package/dist/sqlite/write.js +306 -0
  1302. package/dist/sqlite/write.js.map +1 -0
  1303. package/dist/sqlite-driver.d.ts +41 -0
  1304. package/dist/sqlite-driver.d.ts.map +1 -0
  1305. package/dist/sqlite-driver.js +144 -0
  1306. package/dist/sqlite-driver.js.map +1 -0
  1307. package/dist/sqlite.d.ts +4 -0
  1308. package/dist/sqlite.d.ts.map +1 -0
  1309. package/dist/sqlite.js +3 -0
  1310. package/dist/sqlite.js.map +1 -0
  1311. package/dist/triples.d.ts +27 -0
  1312. package/dist/triples.d.ts.map +1 -0
  1313. package/dist/triples.js +46 -0
  1314. package/dist/triples.js.map +1 -0
  1315. package/dist/types.d.ts +39 -0
  1316. package/dist/types.d.ts.map +1 -0
  1317. package/dist/types.js +2 -0
  1318. package/dist/types.js.map +1 -0
  1319. package/dist/util/ast.d.ts +20 -0
  1320. package/dist/util/ast.d.ts.map +1 -0
  1321. package/dist/util/ast.js +62 -0
  1322. package/dist/util/ast.js.map +1 -0
  1323. package/dist/util/bloomFilter.d.ts +99 -0
  1324. package/dist/util/bloomFilter.d.ts.map +1 -0
  1325. package/dist/util/bloomFilter.js +205 -0
  1326. package/dist/util/bloomFilter.js.map +1 -0
  1327. package/dist/util/collections.d.ts +3 -0
  1328. package/dist/util/collections.d.ts.map +1 -0
  1329. package/dist/util/collections.js +21 -0
  1330. package/dist/util/collections.js.map +1 -0
  1331. package/dist/util/comments.d.ts +10 -0
  1332. package/dist/util/comments.d.ts.map +1 -0
  1333. package/dist/util/comments.js +398 -0
  1334. package/dist/util/comments.js.map +1 -0
  1335. package/dist/util/concurrency.d.ts +26 -0
  1336. package/dist/util/concurrency.d.ts.map +1 -0
  1337. package/dist/util/concurrency.js +121 -0
  1338. package/dist/util/concurrency.js.map +1 -0
  1339. package/dist/util/confinedFile.d.ts +8 -0
  1340. package/dist/util/confinedFile.d.ts.map +1 -0
  1341. package/dist/util/confinedFile.js +53 -0
  1342. package/dist/util/confinedFile.js.map +1 -0
  1343. package/dist/util/discoveryPath.d.ts +3 -0
  1344. package/dist/util/discoveryPath.d.ts.map +1 -0
  1345. package/dist/util/discoveryPath.js +19 -0
  1346. package/dist/util/discoveryPath.js.map +1 -0
  1347. package/dist/util/errors.d.ts +3 -0
  1348. package/dist/util/errors.d.ts.map +1 -0
  1349. package/dist/util/errors.js +7 -0
  1350. package/dist/util/errors.js.map +1 -0
  1351. package/dist/util/git.d.ts +79 -0
  1352. package/dist/util/git.d.ts.map +1 -0
  1353. package/dist/util/git.js +403 -0
  1354. package/dist/util/git.js.map +1 -0
  1355. package/dist/util/graphEdges.d.ts +5 -0
  1356. package/dist/util/graphEdges.d.ts.map +1 -0
  1357. package/dist/util/graphEdges.js +42 -0
  1358. package/dist/util/graphEdges.js.map +1 -0
  1359. package/dist/util/graphOnlyExtensions.d.ts +5 -0
  1360. package/dist/util/graphOnlyExtensions.d.ts.map +1 -0
  1361. package/dist/util/graphOnlyExtensions.js +12 -0
  1362. package/dist/util/graphOnlyExtensions.js.map +1 -0
  1363. package/dist/util/guards.d.ts +2 -0
  1364. package/dist/util/guards.d.ts.map +1 -0
  1365. package/dist/util/guards.js +4 -0
  1366. package/dist/util/guards.js.map +1 -0
  1367. package/dist/util/includeRoots.d.ts +6 -0
  1368. package/dist/util/includeRoots.d.ts.map +1 -0
  1369. package/dist/util/includeRoots.js +53 -0
  1370. package/dist/util/includeRoots.js.map +1 -0
  1371. package/dist/util/lazySymbols.d.ts +166 -0
  1372. package/dist/util/lazySymbols.d.ts.map +1 -0
  1373. package/dist/util/lazySymbols.js +365 -0
  1374. package/dist/util/lazySymbols.js.map +1 -0
  1375. package/dist/util/lines.d.ts +2 -0
  1376. package/dist/util/lines.d.ts.map +1 -0
  1377. package/dist/util/lines.js +9 -0
  1378. package/dist/util/lines.js.map +1 -0
  1379. package/dist/util/lruMap.d.ts +3 -0
  1380. package/dist/util/lruMap.d.ts.map +1 -0
  1381. package/dist/util/lruMap.js +22 -0
  1382. package/dist/util/lruMap.js.map +1 -0
  1383. package/dist/util/memberAccess.d.ts +26 -0
  1384. package/dist/util/memberAccess.d.ts.map +1 -0
  1385. package/dist/util/memberAccess.js +175 -0
  1386. package/dist/util/memberAccess.js.map +1 -0
  1387. package/dist/util/packageExports.d.ts +25 -0
  1388. package/dist/util/packageExports.d.ts.map +1 -0
  1389. package/dist/util/packageExports.js +79 -0
  1390. package/dist/util/packageExports.js.map +1 -0
  1391. package/dist/util/packageInfo.d.ts +12 -0
  1392. package/dist/util/packageInfo.d.ts.map +1 -0
  1393. package/dist/util/packageInfo.js +57 -0
  1394. package/dist/util/packageInfo.js.map +1 -0
  1395. package/dist/util/partialResults.d.ts +81 -0
  1396. package/dist/util/partialResults.d.ts.map +1 -0
  1397. package/dist/util/partialResults.js +290 -0
  1398. package/dist/util/partialResults.js.map +1 -0
  1399. package/dist/util/paths.d.ts +51 -0
  1400. package/dist/util/paths.d.ts.map +1 -0
  1401. package/dist/util/paths.js +245 -0
  1402. package/dist/util/paths.js.map +1 -0
  1403. package/dist/util/projectFiles/definitions.d.ts +21 -0
  1404. package/dist/util/projectFiles/definitions.d.ts.map +1 -0
  1405. package/dist/util/projectFiles/definitions.js +112 -0
  1406. package/dist/util/projectFiles/definitions.js.map +1 -0
  1407. package/dist/util/projectFiles/parsers.d.ts +13 -0
  1408. package/dist/util/projectFiles/parsers.d.ts.map +1 -0
  1409. package/dist/util/projectFiles/parsers.js +122 -0
  1410. package/dist/util/projectFiles/parsers.js.map +1 -0
  1411. package/dist/util/projectFiles.d.ts +43 -0
  1412. package/dist/util/projectFiles.d.ts.map +1 -0
  1413. package/dist/util/projectFiles.js +572 -0
  1414. package/dist/util/projectFiles.js.map +1 -0
  1415. package/dist/util/resolution/files.d.ts +3 -0
  1416. package/dist/util/resolution/files.d.ts.map +1 -0
  1417. package/dist/util/resolution/files.js +29 -0
  1418. package/dist/util/resolution/files.js.map +1 -0
  1419. package/dist/util/resolution/findFirstExisting.d.ts +2 -0
  1420. package/dist/util/resolution/findFirstExisting.d.ts.map +1 -0
  1421. package/dist/util/resolution/findFirstExisting.js +13 -0
  1422. package/dist/util/resolution/findFirstExisting.js.map +1 -0
  1423. package/dist/util/resolution/go.d.ts +2 -0
  1424. package/dist/util/resolution/go.d.ts.map +1 -0
  1425. package/dist/util/resolution/go.js +171 -0
  1426. package/dist/util/resolution/go.js.map +1 -0
  1427. package/dist/util/resolution/jvm.d.ts +5 -0
  1428. package/dist/util/resolution/jvm.d.ts.map +1 -0
  1429. package/dist/util/resolution/jvm.js +124 -0
  1430. package/dist/util/resolution/jvm.js.map +1 -0
  1431. package/dist/util/resolution/node.d.ts +3 -0
  1432. package/dist/util/resolution/node.d.ts.map +1 -0
  1433. package/dist/util/resolution/node.js +60 -0
  1434. package/dist/util/resolution/node.js.map +1 -0
  1435. package/dist/util/resolution/php.d.ts +4 -0
  1436. package/dist/util/resolution/php.d.ts.map +1 -0
  1437. package/dist/util/resolution/php.js +498 -0
  1438. package/dist/util/resolution/php.js.map +1 -0
  1439. package/dist/util/resolution/phpComposer.d.ts +17 -0
  1440. package/dist/util/resolution/phpComposer.d.ts.map +1 -0
  1441. package/dist/util/resolution/phpComposer.js +269 -0
  1442. package/dist/util/resolution/phpComposer.js.map +1 -0
  1443. package/dist/util/resolution/projectSymbols.d.ts +14 -0
  1444. package/dist/util/resolution/projectSymbols.d.ts.map +1 -0
  1445. package/dist/util/resolution/projectSymbols.js +70 -0
  1446. package/dist/util/resolution/projectSymbols.js.map +1 -0
  1447. package/dist/util/resolution/python.d.ts +7 -0
  1448. package/dist/util/resolution/python.d.ts.map +1 -0
  1449. package/dist/util/resolution/python.js +129 -0
  1450. package/dist/util/resolution/python.js.map +1 -0
  1451. package/dist/util/resolution/rust.d.ts +2 -0
  1452. package/dist/util/resolution/rust.d.ts.map +1 -0
  1453. package/dist/util/resolution/rust.js +87 -0
  1454. package/dist/util/resolution/rust.js.map +1 -0
  1455. package/dist/util/resolution/tsconfig.d.ts +8 -0
  1456. package/dist/util/resolution/tsconfig.d.ts.map +1 -0
  1457. package/dist/util/resolution/tsconfig.js +131 -0
  1458. package/dist/util/resolution/tsconfig.js.map +1 -0
  1459. package/dist/util/resolution.d.ts +37 -0
  1460. package/dist/util/resolution.d.ts.map +1 -0
  1461. package/dist/util/resolution.js +276 -0
  1462. package/dist/util/resolution.js.map +1 -0
  1463. package/dist/util/resolutionCandidates.d.ts +5 -0
  1464. package/dist/util/resolutionCandidates.d.ts.map +1 -0
  1465. package/dist/util/resolutionCandidates.js +70 -0
  1466. package/dist/util/resolutionCandidates.js.map +1 -0
  1467. package/dist/util/rustTestModules.d.ts +3 -0
  1468. package/dist/util/rustTestModules.d.ts.map +1 -0
  1469. package/dist/util/rustTestModules.js +69 -0
  1470. package/dist/util/rustTestModules.js.map +1 -0
  1471. package/dist/util/semaphore.d.ts +2 -0
  1472. package/dist/util/semaphore.d.ts.map +1 -0
  1473. package/dist/util/semaphore.js +2 -0
  1474. package/dist/util/semaphore.js.map +1 -0
  1475. package/dist/util/sourceLocation.d.ts +8 -0
  1476. package/dist/util/sourceLocation.d.ts.map +1 -0
  1477. package/dist/util/sourceLocation.js +19 -0
  1478. package/dist/util/sourceLocation.js.map +1 -0
  1479. package/dist/util/specifiers.d.ts +17 -0
  1480. package/dist/util/specifiers.d.ts.map +1 -0
  1481. package/dist/util/specifiers.js +263 -0
  1482. package/dist/util/specifiers.js.map +1 -0
  1483. package/dist/util/sqliteSchema.d.ts +28 -0
  1484. package/dist/util/sqliteSchema.d.ts.map +1 -0
  1485. package/dist/util/sqliteSchema.js +66 -0
  1486. package/dist/util/sqliteSchema.js.map +1 -0
  1487. package/dist/util/symbolHash.d.ts +59 -0
  1488. package/dist/util/symbolHash.d.ts.map +1 -0
  1489. package/dist/util/symbolHash.js +84 -0
  1490. package/dist/util/symbolHash.js.map +1 -0
  1491. package/dist/util/workerThreads.d.ts +12 -0
  1492. package/dist/util/workerThreads.d.ts.map +1 -0
  1493. package/dist/util/workerThreads.js +16 -0
  1494. package/dist/util/workerThreads.js.map +1 -0
  1495. package/dist/util/workspace.d.ts +32 -0
  1496. package/dist/util/workspace.d.ts.map +1 -0
  1497. package/dist/util/workspace.js +288 -0
  1498. package/dist/util/workspace.js.map +1 -0
  1499. package/dist/util.d.ts +14 -0
  1500. package/dist/util.d.ts.map +1 -0
  1501. package/dist/util.js +10 -0
  1502. package/dist/util.js.map +1 -0
  1503. package/dist/worker/nativeExtractWorker.d.ts +61 -0
  1504. package/dist/worker/nativeExtractWorker.d.ts.map +1 -0
  1505. package/dist/worker/nativeExtractWorker.js +196 -0
  1506. package/dist/worker/nativeExtractWorker.js.map +1 -0
  1507. package/dist/worker/nativeWorkerPool.d.ts +10 -0
  1508. package/dist/worker/nativeWorkerPool.d.ts.map +1 -0
  1509. package/dist/worker/nativeWorkerPool.js +35 -0
  1510. package/dist/worker/nativeWorkerPool.js.map +1 -0
  1511. package/docs/graph-visualization/app.js +900 -0
  1512. package/docs/graph-visualization/file-tree-filters.js +50 -0
  1513. package/docs/graph-visualization/file-tree-model.js +186 -0
  1514. package/docs/graph-visualization/graph-builder.js +303 -0
  1515. package/docs/graph-visualization/index.html +65 -0
  1516. package/docs/graph-visualization/styles.css +513 -0
  1517. package/docs/graph-visualization/vendor/LICENSE.graphology-layout-forceatlas2.txt +21 -0
  1518. package/docs/graph-visualization/vendor/LICENSE.graphology.txt +21 -0
  1519. package/docs/graph-visualization/vendor/LICENSE.sigma.txt +12 -0
  1520. package/docs/graph-visualization/vendor/graphology-layout-forceatlas2.js +789 -0
  1521. package/docs/graph-visualization/vendor/graphology.js +4204 -0
  1522. package/docs/graph-visualization/vendor/sigma.js +5643 -0
  1523. package/docs/graph-visualization/viewer-selected-node.webp +0 -0
  1524. package/docs/mcp.md +373 -0
  1525. package/package.json +104 -0
@@ -0,0 +1,1208 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import fsp, {} from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { applyEdits, modify, parse as parseJsonc } from "jsonc-parser";
6
+ import { parse as parseToml } from "smol-toml";
7
+ import { getSkillTargetDirForAgent } from "../cli/skill.js";
8
+ import { getCodegraphPackageRoot, normalizePathForDisplay, pathExists } from "../util/packageInfo.js";
9
+ export class InstallerCollisionError extends Error {
10
+ code = "installer-config-collision";
11
+ conflicts;
12
+ constructor(conflicts) {
13
+ let message = `Codegraph installer found ${conflicts.length} user-owned configuration collisions. ` +
14
+ "Resolve or rename the existing Codegraph entries before retrying.";
15
+ const conflict = conflicts.length === 1 ? conflicts[0] : undefined;
16
+ if (conflict) {
17
+ if (conflict.kind === "user-owned-skill") {
18
+ message =
19
+ `User-owned skill already exists at ${conflict.path}. ` +
20
+ "Re-run with --force to overwrite, or move that file aside before retrying.";
21
+ }
22
+ else {
23
+ const entryType = conflict.kind === "user-owned-codegraph-table" ? "table" : "entry";
24
+ message = `User-owned Codegraph MCP ${entryType} already exists. Remove or rename that entry before retrying.`;
25
+ }
26
+ }
27
+ else {
28
+ const skillPaths = conflicts
29
+ .filter((candidate) => candidate.kind === "user-owned-skill")
30
+ .map((candidate) => candidate.path);
31
+ if (skillPaths.length) {
32
+ message +=
33
+ ` User-owned skill files exist at ${skillPaths.join(", ")}. ` +
34
+ "Re-run with --force to overwrite them, or move those files aside before retrying.";
35
+ }
36
+ }
37
+ super(message);
38
+ this.name = "InstallerCollisionError";
39
+ this.conflicts = conflicts;
40
+ }
41
+ }
42
+ const TARGET_DEFINITIONS = [
43
+ {
44
+ id: "codex",
45
+ label: "Codex CLI",
46
+ kind: "toml-block",
47
+ configPath: ({ homeDir }) => path.join(homeDir, ".codex", "config.toml"),
48
+ },
49
+ {
50
+ id: "claude",
51
+ label: "Claude Code",
52
+ kind: "json-mcp-servers",
53
+ configPath: ({ homeDir }) => path.join(homeDir, ".claude", "mcp.json"),
54
+ },
55
+ {
56
+ id: "cursor",
57
+ label: "Cursor",
58
+ kind: "json-mcp-servers",
59
+ configPath: ({ homeDir }) => path.join(homeDir, ".cursor", "mcp.json"),
60
+ },
61
+ {
62
+ id: "gemini",
63
+ label: "Gemini CLI",
64
+ kind: "json-mcp-servers",
65
+ configPath: ({ homeDir }) => path.join(homeDir, ".gemini", "settings.json"),
66
+ },
67
+ {
68
+ id: "opencode",
69
+ label: "OpenCode",
70
+ kind: "json-opencode-mcp",
71
+ configPath: (settings) => path.join(opencodeConfigHome(settings), "opencode", "opencode.json"),
72
+ },
73
+ {
74
+ id: "omp",
75
+ label: "Oh My Pi",
76
+ kind: "json-mcp-servers-no-type",
77
+ configPath: ({ homeDir }) => path.join(homeDir, ".omp", "agent", "mcp.json"),
78
+ },
79
+ {
80
+ id: "kilo",
81
+ label: "Kilo Code",
82
+ kind: "json-kilo-mcp",
83
+ configPath: (settings) => path.join(opencodeConfigHome(settings), "kilo", "kilo.jsonc"),
84
+ },
85
+ {
86
+ id: "agents",
87
+ label: "Agents skill directory",
88
+ kind: "skill-only",
89
+ },
90
+ ];
91
+ const CODEGRAPH_TOML_MARKER_BEGIN = "# >>> codegraph mcp >>>";
92
+ const CODEGRAPH_TOML_MARKER_END = "# <<< codegraph mcp <<<";
93
+ const DEFAULT_TARGET_IDS = TARGET_DEFINITIONS.map((target) => target.id);
94
+ const INSTALLER_LOCK_RETRIES = 100;
95
+ const INSTALLER_LOCK_RETRY_MS = 20;
96
+ const INSTALLER_LOCK_LEASE_MS = 30_000;
97
+ const INSTALLER_LOCK_ABANDONED_MS = INSTALLER_LOCK_LEASE_MS * 2;
98
+ export function listInstallTargets() {
99
+ return TARGET_DEFINITIONS.map(createInstallTarget);
100
+ }
101
+ export function parseInstallTargetIds(rawValue) {
102
+ if (rawValue === undefined)
103
+ return undefined;
104
+ const ids = [];
105
+ for (const part of rawValue.split(",")) {
106
+ const value = part.trim();
107
+ if (!value)
108
+ continue;
109
+ ids.push(parseInstallTargetId(value));
110
+ }
111
+ if (!ids.length) {
112
+ throw new Error("--target must name at least one install target.");
113
+ }
114
+ return [...new Set(ids)];
115
+ }
116
+ export function parseInstallTargetId(value) {
117
+ if (isInstallTargetId(value))
118
+ return value;
119
+ throw new Error(`Unknown install target "${value}". Expected ${DEFAULT_TARGET_IDS.join(", ")}.`);
120
+ }
121
+ export async function detectInstallTargets(options = {}) {
122
+ return await Promise.all(listInstallTargets().map(async (target) => await target.detect(options)));
123
+ }
124
+ export function printInstallConfig(options) {
125
+ const target = createInstallTarget(definitionForTarget(options.targetId));
126
+ return target.printConfig(options);
127
+ }
128
+ export async function installCodegraphTargets(options = {}) {
129
+ assertWriteAllowed(options);
130
+ const targets = await resolveRequestedTargets(options);
131
+ return await installDefinitions(targets.map((target) => definitionForTarget(target.id)), options);
132
+ }
133
+ export async function uninstallCodegraphTargets(options = {}) {
134
+ assertWriteAllowed(options);
135
+ const targets = await resolveRequestedTargets(options);
136
+ return await uninstallDefinitions(targets.map((target) => definitionForTarget(target.id)), options);
137
+ }
138
+ function createInstallTarget(definition) {
139
+ return {
140
+ id: definition.id,
141
+ label: definition.label,
142
+ detect: (options = {}) => Promise.resolve(detectTarget(definition, options)),
143
+ printConfig: (options = { targetId: definition.id }) => printTargetConfig(definition, options),
144
+ install: async (options = {}) => await installTarget(definition, options),
145
+ uninstall: async (options = {}) => await uninstallTarget(definition, options),
146
+ };
147
+ }
148
+ async function resolveRequestedTargets(options) {
149
+ if (options.targetIds?.length) {
150
+ return options.targetIds.map((id) => createInstallTarget(definitionForTarget(id)));
151
+ }
152
+ const targets = listInstallTargets();
153
+ const detections = await Promise.all(targets.map(async (target) => await target.detect(options)));
154
+ const detectedTargets = [];
155
+ for (const [index, target] of targets.entries()) {
156
+ const detection = detections[index];
157
+ if (detection?.detected)
158
+ detectedTargets.push(target);
159
+ }
160
+ return detectedTargets;
161
+ }
162
+ function assertWriteAllowed(options) {
163
+ if (options.dryRun)
164
+ return;
165
+ if (options.yes)
166
+ return;
167
+ throw new Error("Writes require --yes. Use --dry-run to inspect changes first.");
168
+ }
169
+ function detectTarget(definition, options) {
170
+ const settings = installerSettings(options);
171
+ const configPath = definition.configPath?.(settings);
172
+ const skillTargetDir = getSkillTargetDirForAgent(definition.id, settings.homeDir, settings.env);
173
+ if (configPath !== undefined && pathExists(path.dirname(configPath))) {
174
+ return {
175
+ detected: true,
176
+ reason: `${definition.label} config directory exists`,
177
+ configPath: normalizePathForDisplay(configPath),
178
+ skillTargetDir: normalizePathForDisplay(skillTargetDir),
179
+ };
180
+ }
181
+ if (pathExists(path.dirname(skillTargetDir))) {
182
+ return {
183
+ detected: true,
184
+ reason: `${definition.label} skill directory exists`,
185
+ ...(configPath !== undefined ? { configPath: normalizePathForDisplay(configPath) } : {}),
186
+ skillTargetDir: normalizePathForDisplay(skillTargetDir),
187
+ };
188
+ }
189
+ const baseSkillDirExists = definition.kind === "skill-only" && pathExists(path.dirname(path.dirname(skillTargetDir)));
190
+ return {
191
+ detected: baseSkillDirExists,
192
+ reason: baseSkillDirExists ? `${definition.label} base directory exists` : `${definition.label} was not detected`,
193
+ ...(configPath !== undefined ? { configPath: normalizePathForDisplay(configPath) } : {}),
194
+ skillTargetDir: normalizePathForDisplay(skillTargetDir),
195
+ };
196
+ }
197
+ async function installTarget(definition, options) {
198
+ assertWriteAllowed(options);
199
+ return await installDefinitions([definition], options);
200
+ }
201
+ async function installDefinitions(definitions, options) {
202
+ const settings = installerSettings(options);
203
+ const dryRun = options.dryRun ?? false;
204
+ const force = options.force ?? false;
205
+ const install = async () => {
206
+ const plan = await prepareInstallPlan(definitions, settings, dryRun, force);
207
+ if (!dryRun)
208
+ await applyInstallPlan(plan);
209
+ return {
210
+ installed: plan.changes.some((change) => change.action === "create" || change.action === "update"),
211
+ verified: !dryRun,
212
+ dryRun,
213
+ targets: definitions.map((definition) => definition.id),
214
+ changes: [...plan.changes],
215
+ };
216
+ };
217
+ if (dryRun)
218
+ return await install();
219
+ return await withInstallerTransactionLocks(settings, install);
220
+ }
221
+ async function prepareInstallPlan(definitions, settings, dryRun, force) {
222
+ const bundledSkill = await fsp.readFile(bundledSkillFilePath());
223
+ const files = [];
224
+ const conflicts = [];
225
+ for (const definition of definitions) {
226
+ const skillTargetDir = getSkillTargetDirForAgent(definition.id, settings.homeDir, settings.env);
227
+ const skillRoot = skillInstallRoot(definition, settings);
228
+ const skillPath = path.join(skillTargetDir, "SKILL.md");
229
+ const markerPath = path.join(skillTargetDir, "CODEGRAPH_INSTALLED");
230
+ const skillSnapshot = await snapshotInstallFile(skillPath, skillRoot);
231
+ const markerSnapshot = await snapshotInstallFile(markerPath, skillRoot);
232
+ const skillCollision = findSkillCollision(definition, skillPath, skillSnapshot.bytes, markerSnapshot.bytes, bundledSkill);
233
+ if (skillCollision && !force) {
234
+ conflicts.push(skillCollision);
235
+ continue;
236
+ }
237
+ addPlannedInstallFile(files, createPlannedInstallFile(definition, "skill", skillPath, skillRoot, bundledSkill, skillSnapshot, dryRun));
238
+ const markerContent = Buffer.from(renderInstallMarker(definition, bundledSkill), "utf8");
239
+ addPlannedInstallFile(files, createPlannedInstallFile(definition, "marker", markerPath, skillRoot, markerContent, markerSnapshot, dryRun));
240
+ if (definition.kind === "skill-only")
241
+ continue;
242
+ const configPath = requireConfigPath(definition, settings);
243
+ const configRoot = configInstallRoot(definition, settings);
244
+ const configSnapshot = await snapshotInstallFile(configPath, configRoot);
245
+ const existingConfig = configSnapshot.bytes?.toString("utf8") ?? null;
246
+ const collision = findConfigCollision(definition, configPath, existingConfig);
247
+ if (collision) {
248
+ conflicts.push(collision);
249
+ continue;
250
+ }
251
+ const configContent = Buffer.from(renderConfigWithCodegraph(definition, existingConfig, configPath), "utf8");
252
+ addPlannedInstallFile(files, createPlannedInstallFile(definition, "config", configPath, configRoot, configContent, configSnapshot, dryRun));
253
+ }
254
+ if (conflicts.length)
255
+ throw new InstallerCollisionError(conflicts);
256
+ return {
257
+ files,
258
+ changes: files.map((file) => file.change),
259
+ };
260
+ }
261
+ function skillInstallRoot(definition, settings) {
262
+ if (definition.id === "opencode")
263
+ return opencodeConfigHome(settings);
264
+ if (definition.id === "codex")
265
+ return settings.env.CODEX_HOME?.trim() || settings.homeDir;
266
+ return settings.homeDir;
267
+ }
268
+ function configInstallRoot(definition, settings) {
269
+ if (definition.id === "opencode" || definition.id === "kilo")
270
+ return opencodeConfigHome(settings);
271
+ return settings.homeDir;
272
+ }
273
+ function createPlannedInstallFile(definition, role, filePath, root, content, snapshot, dryRun) {
274
+ const unchanged = content === null ? snapshot.bytes === null : (snapshot.bytes?.equals(content) ?? false);
275
+ let action;
276
+ if (unchanged)
277
+ action = "unchanged";
278
+ else if (content === null)
279
+ action = "delete";
280
+ else if (snapshot.bytes === null)
281
+ action = "create";
282
+ else
283
+ action = "update";
284
+ return {
285
+ target: definition.id,
286
+ role,
287
+ path: filePath,
288
+ root,
289
+ content,
290
+ snapshot,
291
+ change: change(definition.id, action, filePath, dryRun),
292
+ };
293
+ }
294
+ function addPlannedInstallFile(files, file) {
295
+ const duplicate = files.find((existing) => sameInstallPath(existing.path, file.path));
296
+ if (duplicate) {
297
+ throw new Error(`Install targets resolve to the same destination ${normalizePathForDisplay(file.path)} (${duplicate.target} and ${file.target}).`);
298
+ }
299
+ files.push(file);
300
+ }
301
+ function sameInstallPath(left, right) {
302
+ const normalizedLeft = path.resolve(left);
303
+ const normalizedRight = path.resolve(right);
304
+ return process.platform === "win32"
305
+ ? normalizedLeft.toLowerCase() === normalizedRight.toLowerCase()
306
+ : normalizedLeft === normalizedRight;
307
+ }
308
+ async function applyInstallPlan(plan, verifyInstalledConfig = true) {
309
+ try {
310
+ for (const file of plan.files) {
311
+ if (file.change.action === "unchanged")
312
+ continue;
313
+ if (file.content === null) {
314
+ await removePlannedInstallFile(file.path, file.root);
315
+ }
316
+ else {
317
+ await writeTextFileAtomic(file.path, file.content, {
318
+ mode: file.snapshot.mode ?? 0o600,
319
+ root: file.root,
320
+ });
321
+ }
322
+ }
323
+ await verifyInstallPlan(plan, verifyInstalledConfig);
324
+ }
325
+ catch (error) {
326
+ const rollbackFailures = await rollbackInstallPlan(plan);
327
+ if (rollbackFailures.length) {
328
+ const details = rollbackFailures
329
+ .map(({ file, error: rollbackError }) => `${normalizePathForDisplay(file.path)} (${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)})`)
330
+ .join(", ");
331
+ throw new Error(`Codegraph installer failed and rollback could not restore: ${details}`, { cause: error });
332
+ }
333
+ throw error;
334
+ }
335
+ }
336
+ async function rollbackInstallPlan(plan) {
337
+ const failures = [];
338
+ for (const file of [...plan.files].reverse()) {
339
+ try {
340
+ if (file.snapshot.bytes === null) {
341
+ await removePlannedInstallFile(file.path, file.root);
342
+ continue;
343
+ }
344
+ await writeTextFileAtomic(file.path, file.snapshot.bytes, {
345
+ mode: file.snapshot.mode ?? 0o600,
346
+ root: file.root,
347
+ });
348
+ }
349
+ catch (error) {
350
+ failures.push({ file, error });
351
+ }
352
+ }
353
+ return failures;
354
+ }
355
+ async function removePlannedInstallFile(filePath, root) {
356
+ await assertNoSymbolicLinksWithinRoot(filePath, root);
357
+ await fsp.rm(filePath, { force: true });
358
+ }
359
+ async function verifyInstallPlan(plan, verifyInstalledConfig) {
360
+ for (const file of plan.files) {
361
+ const actual = await snapshotInstallFile(file.path, file.root);
362
+ if (file.content === null) {
363
+ if (actual.bytes !== null) {
364
+ throw new Error(`Codegraph installer ${file.role} verification failed for ${normalizePathForDisplay(file.path)}.`);
365
+ }
366
+ continue;
367
+ }
368
+ if (actual.bytes === null || !actual.bytes.equals(file.content)) {
369
+ throw new Error(`Codegraph installer ${file.role} verification failed for ${normalizePathForDisplay(file.path)}.`);
370
+ }
371
+ if (!verifyInstalledConfig || file.role !== "config")
372
+ continue;
373
+ const definition = definitionForTarget(file.target);
374
+ if (!configContainsInstallerServer(definition, actual.bytes.toString("utf8"), file.path)) {
375
+ throw new Error(`Codegraph installer config verification failed for ${normalizePathForDisplay(file.path)}.`);
376
+ }
377
+ }
378
+ }
379
+ async function uninstallTarget(definition, options) {
380
+ assertWriteAllowed(options);
381
+ return await uninstallDefinitions([definition], options);
382
+ }
383
+ async function uninstallDefinitions(definitions, options) {
384
+ const settings = installerSettings(options);
385
+ const dryRun = options.dryRun ?? false;
386
+ const uninstall = async () => {
387
+ const plan = await prepareUninstallPlan(definitions, settings, dryRun);
388
+ if (!dryRun)
389
+ await applyInstallPlan(plan, false);
390
+ return {
391
+ uninstalled: plan.changes.some((plannedChange) => plannedChange.action === "delete" || plannedChange.action === "update"),
392
+ dryRun,
393
+ targets: definitions.map((definition) => definition.id),
394
+ changes: [...plan.changes],
395
+ };
396
+ };
397
+ if (dryRun)
398
+ return await uninstall();
399
+ return await withInstallerTransactionLocks(settings, uninstall);
400
+ }
401
+ async function prepareUninstallPlan(definitions, settings, dryRun) {
402
+ const bundledSkill = await fsp.readFile(bundledSkillFilePath());
403
+ const files = [];
404
+ for (const definition of definitions) {
405
+ const skillTargetDir = getSkillTargetDirForAgent(definition.id, settings.homeDir, settings.env);
406
+ const skillRoot = skillInstallRoot(definition, settings);
407
+ const skillPath = path.join(skillTargetDir, "SKILL.md");
408
+ const markerPath = path.join(skillTargetDir, "CODEGRAPH_INSTALLED");
409
+ const skillSnapshot = await snapshotInstallFile(skillPath, skillRoot);
410
+ const markerSnapshot = await snapshotInstallFile(markerPath, skillRoot);
411
+ const removeOwnedSkill = isInstallerOwnedSkill(markerSnapshot.bytes, skillSnapshot.bytes);
412
+ const removeOrphanMarker = skillSnapshot.bytes === null && markerSnapshot.bytes !== null;
413
+ addPlannedInstallFile(files, createPlannedInstallFile(definition, "skill", skillPath, skillRoot, removeOwnedSkill ? null : skillSnapshot.bytes, skillSnapshot, dryRun));
414
+ addPlannedInstallFile(files, createPlannedInstallFile(definition, "marker", markerPath, skillRoot, removeOwnedSkill || removeOrphanMarker ? null : markerSnapshot.bytes, markerSnapshot, dryRun));
415
+ if (definition.kind === "skill-only")
416
+ continue;
417
+ const configPath = requireConfigPath(definition, settings);
418
+ const configRoot = configInstallRoot(definition, settings);
419
+ const configSnapshot = await snapshotInstallFile(configPath, configRoot);
420
+ let configContent = configSnapshot.bytes;
421
+ if (configSnapshot.bytes !== null) {
422
+ const existing = configSnapshot.bytes.toString("utf8");
423
+ const next = removeCodegraphConfig(definition, existing, configPath);
424
+ if (next !== existing)
425
+ configContent = next.trim() ? Buffer.from(next, "utf8") : null;
426
+ }
427
+ addPlannedInstallFile(files, createPlannedInstallFile(definition, "config", configPath, configRoot, configContent, configSnapshot, dryRun));
428
+ }
429
+ return {
430
+ files,
431
+ changes: files.map((file) => file.change),
432
+ };
433
+ }
434
+ function skillContentSha256(bytes) {
435
+ return createHash("sha256").update(bytes).digest("hex");
436
+ }
437
+ function renderInstallMarker(definition, bundledSkill) {
438
+ return (`Installed by codegraph install for ${definition.label}.\n` +
439
+ `skillSha256=${skillContentSha256(bundledSkill)}\n` +
440
+ `Run codegraph install --target ${definition.id} --yes --force to refresh bundled skill files.\n`);
441
+ }
442
+ function isValidInstallMarker(markerBytes) {
443
+ return markerBytes.toString("utf8").includes("Installed by codegraph install for ");
444
+ }
445
+ function readSkillShaFromMarker(markerBytes) {
446
+ const match = /^skillSha256=([a-f0-9]{64})$/m.exec(markerBytes.toString("utf8"));
447
+ return match?.[1] ?? null;
448
+ }
449
+ function isInstallerOwnedSkill(markerBytes, skillBytes) {
450
+ if (markerBytes === null || skillBytes === null)
451
+ return false;
452
+ if (!isValidInstallMarker(markerBytes))
453
+ return false;
454
+ const recordedSha = readSkillShaFromMarker(markerBytes);
455
+ if (recordedSha === null)
456
+ return false;
457
+ return recordedSha === skillContentSha256(skillBytes);
458
+ }
459
+ function findSkillCollision(definition, skillPath, skillBytes, markerBytes, bundledSkill) {
460
+ if (skillBytes === null)
461
+ return undefined;
462
+ if (markerBytes === null && skillBytes.equals(bundledSkill))
463
+ return undefined;
464
+ if (isInstallerOwnedSkill(markerBytes, skillBytes))
465
+ return undefined;
466
+ return {
467
+ target: definition.id,
468
+ path: normalizePathForDisplay(skillPath),
469
+ kind: "user-owned-skill",
470
+ };
471
+ }
472
+ function findConfigCollision(definition, configPath, existing) {
473
+ if (definition.kind === "skill-only")
474
+ return undefined;
475
+ if (definition.kind === "toml-block") {
476
+ inspectCodexTomlOwnership(existing ?? "", configPath);
477
+ const hasUnmarkedTable = findCodegraphTomlTableIndexes(existing ?? "").length;
478
+ if (!hasUnmarkedTable || isInstallCompatibleCodexTomlTable(existing ?? ""))
479
+ return undefined;
480
+ return {
481
+ target: definition.id,
482
+ path: normalizePathForDisplay(configPath),
483
+ kind: "user-owned-codegraph-table",
484
+ };
485
+ }
486
+ if (existing === null)
487
+ return undefined;
488
+ const parsed = parseTargetConfig(definition, existing, configPath);
489
+ const property = mcpConfigProperty(definition);
490
+ const existingServer = readRecordProperty(parsed, property).codegraph;
491
+ if (existingServer === undefined || isInstallCompatibleJsonServer(definition, existingServer))
492
+ return undefined;
493
+ return {
494
+ target: definition.id,
495
+ path: normalizePathForDisplay(configPath),
496
+ kind: "user-owned-codegraph-entry",
497
+ };
498
+ }
499
+ function configContainsInstallerServer(definition, config, configPath) {
500
+ if (definition.kind === "toml-block") {
501
+ return hasExactlyOneCompleteCodexTomlBlock(config, configPath) || isInstallCompatibleCodexTomlTable(config);
502
+ }
503
+ if (definition.kind === "skill-only")
504
+ return true;
505
+ const parsed = parseTargetConfig(definition, config, configPath);
506
+ const property = mcpConfigProperty(definition);
507
+ return isInstallCompatibleJsonServer(definition, readRecordProperty(parsed, property).codegraph);
508
+ }
509
+ function renderConfigWithCodegraph(definition, existing, configPath) {
510
+ if (definition.kind === "toml-block") {
511
+ if (existing !== null && isInstallCompatibleCodexTomlTable(existing))
512
+ return existing;
513
+ return upsertMarkedTomlBlock(existing ?? "", codexTomlSnippet(), configPath);
514
+ }
515
+ const parsed = parseTargetConfig(definition, existing, configPath);
516
+ const property = mcpConfigProperty(definition);
517
+ const servers = readRecordProperty(parsed, property);
518
+ if (isInstallCompatibleJsonServer(definition, servers.codegraph))
519
+ return existing ?? renderJsonConfig(parsed);
520
+ if (definition.kind === "json-kilo-mcp") {
521
+ return modifyJsoncConfig(existing, [property, "codegraph"], codegraphJsonServer(definition));
522
+ }
523
+ servers.codegraph = codegraphJsonServer(definition);
524
+ parsed[property] = servers;
525
+ return renderJsonConfig(parsed);
526
+ }
527
+ function removeCodegraphConfig(definition, existing, configPath) {
528
+ if (definition.kind === "toml-block") {
529
+ return removeMarkedTomlBlock(existing, configPath);
530
+ }
531
+ const parsed = parseTargetConfig(definition, existing, configPath);
532
+ const property = mcpConfigProperty(definition);
533
+ const servers = readRecordProperty(parsed, property);
534
+ const server = servers.codegraph;
535
+ if (!isInstallerOwnedJsonServer(definition, server))
536
+ return existing;
537
+ if (definition.kind === "json-kilo-mcp") {
538
+ const targetPath = Object.keys(servers).length === 1 ? [property] : [property, "codegraph"];
539
+ return modifyJsoncConfig(existing, targetPath, undefined);
540
+ }
541
+ delete servers.codegraph;
542
+ if (Object.keys(servers).length) {
543
+ parsed[property] = servers;
544
+ }
545
+ else {
546
+ delete parsed[property];
547
+ }
548
+ return renderJsonConfig(parsed);
549
+ }
550
+ function printTargetConfig(definition, _options) {
551
+ if (definition.kind === "toml-block")
552
+ return codexTomlSnippet();
553
+ if (definition.kind === "skill-only") {
554
+ return `codegraph skill install --agent ${definition.id}\n`;
555
+ }
556
+ return renderJsonConfig({ [mcpConfigProperty(definition)]: { codegraph: codegraphJsonServer(definition) } });
557
+ }
558
+ function mcpConfigProperty(definition) {
559
+ if (definition.kind === "json-opencode-mcp" || definition.kind === "json-kilo-mcp")
560
+ return "mcp";
561
+ return "mcpServers";
562
+ }
563
+ function codexTomlSnippet() {
564
+ return '[mcp_servers.codegraph]\ncommand = "codegraph"\nargs = ["mcp", "serve", "--root", ".", "--stdio"]\nstartup_timeout_ms = 20000\n';
565
+ }
566
+ function upsertMarkedTomlBlock(existing, snippet, configPath) {
567
+ const ownership = inspectCodexTomlOwnership(existing, configPath);
568
+ const block = `${CODEGRAPH_TOML_MARKER_BEGIN}\n${snippet.trimEnd()}\n${CODEGRAPH_TOML_MARKER_END}`;
569
+ const withoutBlock = (ownership === null ? existing : removeMarkedTomlBlock(existing, configPath)).trimEnd();
570
+ const updated = withoutBlock ? `${withoutBlock}\n\n${block}\n` : `${block}\n`;
571
+ inspectCodexTomlOwnership(updated, configPath);
572
+ return updated;
573
+ }
574
+ function removeMarkedTomlBlock(existing, configPath) {
575
+ if (inspectCodexTomlOwnership(existing, configPath) === null)
576
+ return existing;
577
+ const begin = escapeRegExp(CODEGRAPH_TOML_MARKER_BEGIN);
578
+ const end = escapeRegExp(CODEGRAPH_TOML_MARKER_END);
579
+ const pattern = new RegExp(`\\n?${begin}[\\s\\S]*?${end}\\n?`, "g");
580
+ return existing.replace(pattern, "\n").replace(/\n{3,}/g, "\n\n");
581
+ }
582
+ function hasExactlyOneCompleteCodexTomlBlock(config, configPath) {
583
+ try {
584
+ return inspectCodexTomlOwnership(config, configPath) !== null;
585
+ }
586
+ catch {
587
+ return false;
588
+ }
589
+ }
590
+ function inspectCodexTomlOwnership(existing, configPath) {
591
+ const beginIndexes = findTokenIndexes(existing, CODEGRAPH_TOML_MARKER_BEGIN);
592
+ const endIndexes = findTokenIndexes(existing, CODEGRAPH_TOML_MARKER_END);
593
+ const tableIndexes = findCodegraphTomlTableIndexes(existing);
594
+ if (!beginIndexes.length && !endIndexes.length)
595
+ return null;
596
+ if (beginIndexes.length !== 1 ||
597
+ endIndexes.length !== 1 ||
598
+ beginIndexes[0] === undefined ||
599
+ endIndexes[0] === undefined) {
600
+ throw new Error(`Codex config contains an incomplete or malformed Codegraph installer marker block at ${normalizePathForDisplay(configPath)}.`);
601
+ }
602
+ const beginIndex = beginIndexes[0];
603
+ const endIndex = endIndexes[0];
604
+ const hasSingleOwnedTable = tableIndexes.length === 1 &&
605
+ tableIndexes[0] !== undefined &&
606
+ tableIndexes[0] > beginIndex &&
607
+ tableIndexes[0] < endIndex;
608
+ if (beginIndex >= endIndex || !hasSingleOwnedTable) {
609
+ throw new Error(`Codex config contains an incomplete or malformed Codegraph installer marker block at ${normalizePathForDisplay(configPath)}.`);
610
+ }
611
+ return { beginIndex, endIndex };
612
+ }
613
+ function findTokenIndexes(content, token) {
614
+ const indexes = [];
615
+ for (let index = content.indexOf(token); index !== -1; index = content.indexOf(token, index + token.length)) {
616
+ indexes.push(index);
617
+ }
618
+ return indexes;
619
+ }
620
+ function findCodegraphTomlTableIndexes(content) {
621
+ const indexes = [];
622
+ const tablePattern = /^\s*\[\s*mcp_servers\s*\.\s*(?:codegraph|"codegraph"|'codegraph')\s*\]\s*(?:#.*)?$/gim;
623
+ for (const match of content.matchAll(tablePattern)) {
624
+ if (match.index !== undefined)
625
+ indexes.push(match.index);
626
+ }
627
+ return indexes;
628
+ }
629
+ function isInstallCompatibleCodexTomlTable(config) {
630
+ if (findCodegraphTomlTableIndexes(config).length !== 1)
631
+ return false;
632
+ try {
633
+ const parsed = parseToml(config);
634
+ if (!isJsonRecord(parsed))
635
+ return false;
636
+ const mcpServers = readRecordProperty(parsed, "mcp_servers");
637
+ if (mcpServers === undefined)
638
+ return false;
639
+ const codegraph = readRecordProperty(mcpServers, "codegraph");
640
+ if (codegraph === undefined)
641
+ return false;
642
+ return jsonValueEquals(codegraph, {
643
+ command: "codegraph",
644
+ args: ["mcp", "serve", "--root", ".", "--stdio"],
645
+ startup_timeout_ms: 20_000,
646
+ });
647
+ }
648
+ catch {
649
+ return false;
650
+ }
651
+ }
652
+ function parseTargetConfig(definition, existing, configPath) {
653
+ if (definition.kind === "json-kilo-mcp")
654
+ return parseConfigJsonc(existing, configPath);
655
+ return parseConfigJson(existing, configPath);
656
+ }
657
+ function parseConfigJsonc(existing, configPath) {
658
+ if (existing === null || !existing.trim())
659
+ return {};
660
+ const errors = [];
661
+ const parsed = parseJsonc(existing, errors, { allowTrailingComma: true });
662
+ if (errors.length) {
663
+ throw new Error(`Unable to parse ${normalizePathForDisplay(configPath)} as JSONC. Fix the file before running the installer.`);
664
+ }
665
+ if (isJsonRecord(parsed))
666
+ return parsed;
667
+ throw new Error(`${normalizePathForDisplay(configPath)} must contain a JSON object.`);
668
+ }
669
+ function modifyJsoncConfig(existing, targetPath, value) {
670
+ const source = existing?.trim() ? existing : "{}";
671
+ const formattingOptions = jsoncFormattingOptions(source);
672
+ const edits = modify(source, targetPath, value, { formattingOptions });
673
+ const updated = applyEdits(source, edits);
674
+ return updated.endsWith(formattingOptions.eol) ? updated : `${updated}${formattingOptions.eol}`;
675
+ }
676
+ function jsoncFormattingOptions(source) {
677
+ const eol = source.includes("\r\n") ? "\r\n" : "\n";
678
+ const indentation = source.match(/\r?\n([ \t]+)\S/u)?.[1];
679
+ let insertSpaces = true;
680
+ let tabSize = 2;
681
+ if (indentation?.startsWith("\t")) {
682
+ insertSpaces = false;
683
+ tabSize = 1;
684
+ }
685
+ else if (indentation) {
686
+ tabSize = indentation.length;
687
+ }
688
+ return { insertSpaces, tabSize, eol };
689
+ }
690
+ function parseConfigJson(existing, configPath) {
691
+ if (existing === null || !existing.trim())
692
+ return {};
693
+ try {
694
+ const parsed = JSON.parse(existing);
695
+ if (isJsonRecord(parsed))
696
+ return parsed;
697
+ }
698
+ catch (error) {
699
+ throw new Error(`Unable to parse ${normalizePathForDisplay(configPath)} as JSON. Fix the file before running the installer.`, {
700
+ cause: error,
701
+ });
702
+ }
703
+ throw new Error(`${normalizePathForDisplay(configPath)} must contain a JSON object.`);
704
+ }
705
+ function readRecordProperty(record, property) {
706
+ const value = record[property];
707
+ if (value === undefined)
708
+ return {};
709
+ if (isJsonRecord(value))
710
+ return value;
711
+ throw new Error(`Existing ${property} config must be a JSON object before codegraph can update it.`);
712
+ }
713
+ function renderJsonConfig(record) {
714
+ if (!Object.keys(record).length)
715
+ return "";
716
+ return `${JSON.stringify(record, null, 2)}\n`;
717
+ }
718
+ function opencodeConfigHome(settings) {
719
+ const configHome = settings.env.XDG_CONFIG_HOME?.trim();
720
+ return configHome || path.join(settings.homeDir, ".config");
721
+ }
722
+ function codegraphJsonServer(definition) {
723
+ if (definition.kind === "json-opencode-mcp") {
724
+ return {
725
+ type: "local",
726
+ enabled: true,
727
+ command: ["codegraph", "mcp", "serve", "--root", ".", "--stdio"],
728
+ };
729
+ }
730
+ if (definition.kind === "json-kilo-mcp") {
731
+ return {
732
+ type: "local",
733
+ command: ["codegraph", "mcp", "serve", "--root", ".", "--stdio"],
734
+ };
735
+ }
736
+ if (definition.kind === "json-mcp-servers-no-type") {
737
+ return {
738
+ command: "codegraph",
739
+ args: ["mcp", "serve", "--root", ".", "--stdio"],
740
+ };
741
+ }
742
+ return {
743
+ type: "stdio",
744
+ command: "codegraph",
745
+ args: ["mcp", "serve", "--root", ".", "--stdio"],
746
+ };
747
+ }
748
+ function isInstallCompatibleJsonServer(definition, value) {
749
+ if (isInstallerOwnedJsonServer(definition, value))
750
+ return true;
751
+ const usesMcpServers = definition.kind === "json-mcp-servers" || definition.kind === "json-mcp-servers-no-type";
752
+ if (!usesMcpServers || !isJsonRecord(value))
753
+ return false;
754
+ const withoutType = {
755
+ command: "codegraph",
756
+ args: ["mcp", "serve", "--root", ".", "--stdio"],
757
+ };
758
+ const withType = { type: "stdio", ...withoutType };
759
+ return jsonValueEquals(value, withoutType) || jsonValueEquals(value, withType);
760
+ }
761
+ function isInstallerOwnedJsonServer(definition, value) {
762
+ return jsonValueEquals(value, codegraphJsonServer(definition));
763
+ }
764
+ function jsonValueEquals(left, right) {
765
+ if (Array.isArray(left) || Array.isArray(right)) {
766
+ if (!Array.isArray(left) || !Array.isArray(right))
767
+ return false;
768
+ if (left.length !== right.length)
769
+ return false;
770
+ return left.every((value, index) => jsonValueEquals(value, right[index]));
771
+ }
772
+ if (isJsonRecord(left) || isJsonRecord(right)) {
773
+ if (!isJsonRecord(left) || !isJsonRecord(right))
774
+ return false;
775
+ const leftKeys = Object.keys(left);
776
+ const rightKeys = Object.keys(right);
777
+ if (leftKeys.length !== rightKeys.length)
778
+ return false;
779
+ for (const key of rightKeys) {
780
+ if (!Object.prototype.hasOwnProperty.call(left, key))
781
+ return false;
782
+ if (!jsonValueEquals(left[key], right[key]))
783
+ return false;
784
+ }
785
+ return true;
786
+ }
787
+ return left === right;
788
+ }
789
+ function isJsonRecord(value) {
790
+ return typeof value === "object" && value !== null && !Array.isArray(value);
791
+ }
792
+ function installerSettings(options) {
793
+ let env = options.env;
794
+ if (env === undefined)
795
+ env = options.homeDir === undefined ? process.env : {};
796
+ return {
797
+ homeDir: options.homeDir ?? os.homedir(),
798
+ env,
799
+ };
800
+ }
801
+ function requireConfigPath(definition, settings) {
802
+ const configPath = definition.configPath?.(settings);
803
+ if (configPath === undefined) {
804
+ throw new Error(`${definition.label} does not have an MCP config file target.`);
805
+ }
806
+ return configPath;
807
+ }
808
+ function bundledSkillFilePath() {
809
+ return path.join(getCodegraphPackageRoot(), "codegraph-skill", "codegraph", "SKILL.md");
810
+ }
811
+ async function snapshotInstallFile(filePath, root) {
812
+ await assertNoSymbolicLinksWithinRoot(filePath, root);
813
+ try {
814
+ const stats = await fsp.lstat(filePath);
815
+ if (stats.isSymbolicLink())
816
+ throw unsafeSymbolicLinkError(filePath);
817
+ if (!stats.isFile()) {
818
+ throw new Error(`Expected a regular file at ${normalizePathForDisplay(filePath)} before running the installer.`);
819
+ }
820
+ return {
821
+ bytes: await fsp.readFile(filePath),
822
+ mode: stats.mode & 0o7777,
823
+ };
824
+ }
825
+ catch (error) {
826
+ if (isFileSystemErrorCode(error, "ENOENT")) {
827
+ await confirmMissingPathHasDirectoryAncestors(filePath);
828
+ return { bytes: null, mode: null };
829
+ }
830
+ throw error;
831
+ }
832
+ }
833
+ async function assertNoSymbolicLinksWithinRoot(filePath, root) {
834
+ const resolvedFilePath = path.resolve(filePath);
835
+ const resolvedRoot = path.resolve(root);
836
+ const relativePath = path.relative(resolvedRoot, resolvedFilePath);
837
+ if (relativePath === ".." || relativePath.startsWith(`..${path.sep}`) || path.isAbsolute(relativePath)) {
838
+ throw new Error(`Installer destination ${normalizePathForDisplay(filePath)} escapes its configured root ${normalizePathForDisplay(root)}.`);
839
+ }
840
+ for (let current = resolvedFilePath; current !== resolvedRoot; current = path.dirname(current)) {
841
+ try {
842
+ const stats = await fsp.lstat(current);
843
+ if (stats.isSymbolicLink())
844
+ throw unsafeSymbolicLinkError(current);
845
+ }
846
+ catch (error) {
847
+ if (!isFileSystemErrorCode(error, "ENOENT"))
848
+ throw error;
849
+ }
850
+ if (path.dirname(current) === current)
851
+ break;
852
+ }
853
+ }
854
+ async function pathExistsUnlessMissing(filePath) {
855
+ try {
856
+ const stats = await fsp.lstat(filePath);
857
+ if (stats.isSymbolicLink())
858
+ throw unsafeSymbolicLinkError(filePath);
859
+ return true;
860
+ }
861
+ catch (error) {
862
+ if (isFileSystemErrorCode(error, "ENOENT")) {
863
+ return await confirmMissingPathHasDirectoryAncestors(filePath);
864
+ }
865
+ throw error;
866
+ }
867
+ }
868
+ async function confirmMissingPathHasDirectoryAncestors(filePath) {
869
+ let current = path.dirname(filePath);
870
+ while (true) {
871
+ try {
872
+ const stats = await fsp.lstat(current);
873
+ if (stats.isSymbolicLink())
874
+ throw unsafeSymbolicLinkError(current);
875
+ if (!stats.isDirectory()) {
876
+ throw Object.assign(new Error(`ENOTDIR: not a directory, stat '${filePath}'`), { code: "ENOTDIR" });
877
+ }
878
+ return false;
879
+ }
880
+ catch (error) {
881
+ if (!isFileSystemErrorCode(error, "ENOENT"))
882
+ throw error;
883
+ }
884
+ const parent = path.dirname(current);
885
+ if (parent === current)
886
+ return false;
887
+ current = parent;
888
+ }
889
+ }
890
+ function definitionForTarget(id) {
891
+ const definition = TARGET_DEFINITIONS.find((target) => target.id === id);
892
+ if (!definition)
893
+ throw new Error(`Unknown install target "${id}".`);
894
+ return definition;
895
+ }
896
+ function isInstallTargetId(value) {
897
+ return DEFAULT_TARGET_IDS.includes(value);
898
+ }
899
+ function change(target, action, filePath, dryRun) {
900
+ return {
901
+ target,
902
+ action,
903
+ path: normalizePathForDisplay(filePath),
904
+ dryRun,
905
+ };
906
+ }
907
+ async function readOptionalFile(filePath) {
908
+ await assertNoSymbolicLinkAtPath(filePath);
909
+ try {
910
+ return await fsp.readFile(filePath, "utf8");
911
+ }
912
+ catch (error) {
913
+ if (isFileSystemErrorCode(error, "ENOENT"))
914
+ return null;
915
+ throw error;
916
+ }
917
+ }
918
+ async function writeTextFileAtomic(filePath, content, options = {}) {
919
+ if (options.root === undefined)
920
+ await assertNoSymbolicLinkAtPath(filePath);
921
+ else
922
+ await assertNoSymbolicLinksWithinRoot(filePath, options.root);
923
+ await fsp.mkdir(path.dirname(filePath), { recursive: true });
924
+ await withInstallerLeaseLock(`${filePath}.codegraph-lock`, normalizePathForDisplay(filePath), async () => {
925
+ if (options.root === undefined)
926
+ await assertNoSymbolicLinkAtPath(filePath);
927
+ else
928
+ await assertNoSymbolicLinksWithinRoot(filePath, options.root);
929
+ const nonce = `${process.pid}-${randomUUID()}`;
930
+ const temporaryPath = `${filePath}.codegraph-tmp-${nonce}`;
931
+ try {
932
+ let mode = options.mode ?? 0o600;
933
+ if (options.mode === undefined) {
934
+ try {
935
+ const existing = await fsp.lstat(filePath);
936
+ if (existing.isSymbolicLink())
937
+ throw unsafeSymbolicLinkError(filePath);
938
+ mode = existing.mode & 0o7777;
939
+ }
940
+ catch (error) {
941
+ if (!isFileSystemErrorCode(error, "ENOENT"))
942
+ throw error;
943
+ }
944
+ }
945
+ await fsp.writeFile(temporaryPath, content, { encoding: "utf8", flag: "wx", mode });
946
+ await fsp.chmod(temporaryPath, mode);
947
+ await renameTemporaryFile(temporaryPath, filePath);
948
+ }
949
+ catch (error) {
950
+ if (isFileSystemErrorCode(error, "EACCES") || isFileSystemErrorCode(error, "EPERM")) {
951
+ throw new Error(`Permission denied while updating user-owned path ${normalizePathForDisplay(filePath)}. Check its ownership and permissions, then retry without administrator mode.`, { cause: error });
952
+ }
953
+ throw error;
954
+ }
955
+ finally {
956
+ await fsp.rm(temporaryPath, { force: true }).catch(() => undefined);
957
+ }
958
+ });
959
+ }
960
+ async function renameTemporaryFile(temporaryPath, filePath) {
961
+ for (let attempt = 0; attempt < 5; attempt += 1) {
962
+ try {
963
+ await fsp.rename(temporaryPath, filePath);
964
+ return;
965
+ }
966
+ catch (error) {
967
+ if (!isFileSystemErrorCode(error, "EPERM") || attempt === 4)
968
+ throw error;
969
+ await waitForInstallerLockRetry();
970
+ }
971
+ }
972
+ }
973
+ async function withInstallerTransactionLocks(settings, operation) {
974
+ const locks = [];
975
+ const scopedLocks = installerTransactionLockScopes(settings)
976
+ .map((scope) => ({
977
+ scope,
978
+ lockPath: installerTransactionLockPath(scope),
979
+ }))
980
+ .sort((left, right) => left.lockPath.localeCompare(right.lockPath));
981
+ try {
982
+ for (const scopedLock of scopedLocks) {
983
+ locks.push(await acquireInstallerLeaseLock(scopedLock.lockPath, `installer transaction for ${normalizePathForDisplay(scopedLock.scope)}`));
984
+ }
985
+ return await operation();
986
+ }
987
+ finally {
988
+ for (const lock of locks.reverse()) {
989
+ await releaseInstallerLeaseLock(lock);
990
+ }
991
+ }
992
+ }
993
+ function installerTransactionLockScopes(settings) {
994
+ const scopes = [path.resolve(settings.homeDir), path.resolve(opencodeConfigHome(settings))];
995
+ const codexHome = settings.env.CODEX_HOME?.trim();
996
+ if (codexHome)
997
+ scopes.push(path.resolve(codexHome));
998
+ scopes.sort();
999
+ return scopes.filter((scope, index) => index === 0 || scope !== scopes[index - 1]);
1000
+ }
1001
+ function installerTransactionLockPath(scope) {
1002
+ const digest = createHash("sha256").update(scope).digest("hex");
1003
+ return path.join(os.tmpdir(), `codegraph-installer-${digest}.lock`);
1004
+ }
1005
+ async function withInstallerLeaseLock(lockPath, resourceName, operation) {
1006
+ const lock = await acquireInstallerLeaseLock(lockPath, resourceName);
1007
+ try {
1008
+ return await operation();
1009
+ }
1010
+ finally {
1011
+ await releaseInstallerLeaseLock(lock);
1012
+ }
1013
+ }
1014
+ async function acquireInstallerLeaseLock(lockPath, resourceName) {
1015
+ let lastConflict = "live";
1016
+ for (let attempt = 0; attempt < INSTALLER_LOCK_RETRIES; attempt += 1) {
1017
+ const acquisitionPath = `${lockPath}.acquire-${randomUUID()}`;
1018
+ let published = false;
1019
+ let file;
1020
+ try {
1021
+ const owner = randomUUID();
1022
+ file = await fsp.open(acquisitionPath, "wx", 0o600);
1023
+ await writeInstallerLeaseMetadata(file, owner);
1024
+ await file.close();
1025
+ file = undefined;
1026
+ await fsp.link(acquisitionPath, lockPath);
1027
+ published = true;
1028
+ await fsp.rm(acquisitionPath, { force: true });
1029
+ file = await fsp.open(lockPath, "r+");
1030
+ const lockFile = file;
1031
+ const renewalTimer = setInterval(() => {
1032
+ void writeInstallerLeaseMetadata(lockFile, owner).catch(() => undefined);
1033
+ }, Math.floor(INSTALLER_LOCK_LEASE_MS / 2));
1034
+ renewalTimer.unref();
1035
+ return { file: lockFile, lockPath, metadataPath: lockPath, owner, renewalTimer };
1036
+ }
1037
+ catch (error) {
1038
+ await file?.close().catch(() => undefined);
1039
+ await fsp.rm(acquisitionPath, { force: true }).catch(() => undefined);
1040
+ if (published)
1041
+ await fsp.rm(lockPath, { force: true }).catch(() => undefined);
1042
+ if (!isInstallerLockPublishConflict(error, lockPath))
1043
+ throw error;
1044
+ const conflict = await resolveInstallerLeaseConflict(lockPath);
1045
+ if (conflict === "absent" || conflict === "reclaimed")
1046
+ continue;
1047
+ lastConflict = conflict;
1048
+ await waitForInstallerLockRetry();
1049
+ }
1050
+ }
1051
+ if (lastConflict === "live") {
1052
+ throw new Error(`Another Codegraph installer is still updating ${resourceName}.`);
1053
+ }
1054
+ throw new Error(`Codegraph installer found an existing lock at ${normalizePathForDisplay(lockPath)} while updating ${resourceName}, ` +
1055
+ "but the lock could not be safely reclaimed because its metadata is corrupt, unreadable, or still potentially live. " +
1056
+ "The lock was left untouched. If no other Codegraph installer is running, delete that lock file and retry.");
1057
+ }
1058
+ async function resolveInstallerLeaseConflict(lockPath) {
1059
+ let observed;
1060
+ try {
1061
+ const stats = await fsp.lstat(lockPath);
1062
+ // Legacy directory locks and other non-files cannot be verified, so they are never removed.
1063
+ if (!stats.isFile())
1064
+ return "blocked";
1065
+ observed = { content: await fsp.readFile(lockPath, "utf8"), mtimeMs: stats.mtimeMs };
1066
+ }
1067
+ catch (error) {
1068
+ if (isFileSystemErrorCode(error, "ENOENT"))
1069
+ return "absent";
1070
+ return "blocked";
1071
+ }
1072
+ const metadata = parseInstallerLeaseMetadata(observed.content);
1073
+ if (metadata) {
1074
+ const leaseExpiresAt = Date.parse(metadata.leaseExpiresAt);
1075
+ if (Number.isNaN(leaseExpiresAt))
1076
+ return "blocked";
1077
+ if (leaseExpiresAt > Date.now())
1078
+ return "live";
1079
+ return await reclaimAbandonedInstallerLease(lockPath, observed);
1080
+ }
1081
+ // Corrupt metadata never authorizes removal on its own. A live owner renews the lock every
1082
+ // half lease, so only a lock untouched for two full lease intervals provably has no live
1083
+ // renewer and is safe to reclaim.
1084
+ if (Date.now() - observed.mtimeMs < INSTALLER_LOCK_ABANDONED_MS)
1085
+ return "blocked";
1086
+ return await reclaimAbandonedInstallerLease(lockPath, observed);
1087
+ }
1088
+ async function reclaimAbandonedInstallerLease(lockPath, observed) {
1089
+ // Detach the lock from its published name first. A fresh acquirer can only publish at
1090
+ // lockPath after this rename, so whatever sits at reclaimPath afterwards is exactly the
1091
+ // lease that was moved, and compare-before-delete below stays race-free for it.
1092
+ const reclaimPath = `${lockPath}.reclaim-${process.pid}-${randomUUID()}`;
1093
+ try {
1094
+ await fsp.rename(lockPath, reclaimPath);
1095
+ }
1096
+ catch (error) {
1097
+ if (isFileSystemErrorCode(error, "ENOENT"))
1098
+ return "absent";
1099
+ return "blocked";
1100
+ }
1101
+ let verified = false;
1102
+ try {
1103
+ const stats = await fsp.lstat(reclaimPath);
1104
+ verified =
1105
+ stats.isFile() &&
1106
+ stats.mtimeMs === observed.mtimeMs &&
1107
+ (await fsp.readFile(reclaimPath, "utf8")) === observed.content;
1108
+ }
1109
+ catch {
1110
+ verified = false;
1111
+ }
1112
+ if (verified) {
1113
+ await fsp.rm(reclaimPath, { force: true });
1114
+ return "reclaimed";
1115
+ }
1116
+ // The moved lock is not the abandoned lease that was vetted: another installer owns it.
1117
+ // Restore it without ever overwriting a lock published at lockPath in the meantime.
1118
+ try {
1119
+ await fsp.link(reclaimPath, lockPath);
1120
+ }
1121
+ catch {
1122
+ // Another installer already published a fresh lock at lockPath; never replace it.
1123
+ }
1124
+ await fsp.rm(reclaimPath, { force: true });
1125
+ return "blocked";
1126
+ }
1127
+ function isInstallerLockPublishConflict(error, lockPath) {
1128
+ if (isFileSystemErrorCode(error, "EEXIST"))
1129
+ return true;
1130
+ return (error instanceof Error &&
1131
+ "code" in error &&
1132
+ error.code === "EPERM" &&
1133
+ "syscall" in error &&
1134
+ error.syscall === "link" &&
1135
+ "dest" in error &&
1136
+ typeof error.dest === "string" &&
1137
+ path.resolve(error.dest) === path.resolve(lockPath));
1138
+ }
1139
+ async function writeInstallerLeaseMetadata(file, owner) {
1140
+ const metadata = {
1141
+ owner,
1142
+ pid: process.pid,
1143
+ leaseExpiresAt: new Date(Date.now() + INSTALLER_LOCK_LEASE_MS).toISOString(),
1144
+ };
1145
+ const content = `${JSON.stringify(metadata)}\n`;
1146
+ await file.write(content, 0, "utf8");
1147
+ await file.truncate(Buffer.byteLength(content));
1148
+ }
1149
+ function parseInstallerLeaseMetadata(content) {
1150
+ try {
1151
+ const parsed = JSON.parse(content);
1152
+ if (isJsonRecord(parsed) &&
1153
+ typeof parsed.owner === "string" &&
1154
+ typeof parsed.pid === "number" &&
1155
+ Number.isInteger(parsed.pid) &&
1156
+ typeof parsed.leaseExpiresAt === "string") {
1157
+ return {
1158
+ owner: parsed.owner,
1159
+ pid: parsed.pid,
1160
+ leaseExpiresAt: parsed.leaseExpiresAt,
1161
+ };
1162
+ }
1163
+ }
1164
+ catch {
1165
+ // Malformed metadata cannot authorize lock removal.
1166
+ }
1167
+ return null;
1168
+ }
1169
+ async function releaseInstallerLeaseLock(lock) {
1170
+ clearInterval(lock.renewalTimer);
1171
+ await lock.file.close().catch(() => undefined);
1172
+ try {
1173
+ const metadata = parseInstallerLeaseMetadata(await fsp.readFile(lock.metadataPath, "utf8"));
1174
+ if (metadata?.owner === lock.owner)
1175
+ await fsp.rm(lock.lockPath, { force: true });
1176
+ }
1177
+ catch (error) {
1178
+ if (!isFileSystemErrorCode(error, "ENOENT"))
1179
+ throw error;
1180
+ }
1181
+ }
1182
+ async function assertNoSymbolicLinkAtPath(filePath) {
1183
+ try {
1184
+ const stats = await fsp.lstat(filePath);
1185
+ if (stats.isSymbolicLink())
1186
+ throw unsafeSymbolicLinkError(filePath);
1187
+ }
1188
+ catch (error) {
1189
+ if (isFileSystemErrorCode(error, "ENOENT"))
1190
+ return;
1191
+ throw error;
1192
+ }
1193
+ }
1194
+ function unsafeSymbolicLinkError(filePath) {
1195
+ return new Error(`Refusing to replace symbolic link at ${normalizePathForDisplay(filePath)}. Use a regular file or directory instead.`);
1196
+ }
1197
+ function waitForInstallerLockRetry() {
1198
+ const { promise, resolve } = Promise.withResolvers();
1199
+ setTimeout(resolve, INSTALLER_LOCK_RETRY_MS);
1200
+ return promise;
1201
+ }
1202
+ function isFileSystemErrorCode(error, code) {
1203
+ return error instanceof Error && "code" in error && String(error.code) === code;
1204
+ }
1205
+ function escapeRegExp(value) {
1206
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1207
+ }
1208
+ //# sourceMappingURL=registry.js.map