@stupidloud/codegraph 0.8.1 → 0.9.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/README.md +319 -152
  2. package/dist/bin/codegraph.d.ts +4 -0
  3. package/dist/bin/codegraph.d.ts.map +1 -1
  4. package/dist/bin/codegraph.js +354 -90
  5. package/dist/bin/codegraph.js.map +1 -1
  6. package/dist/bin/node-version-check.d.ts +17 -0
  7. package/dist/bin/node-version-check.d.ts.map +1 -1
  8. package/dist/bin/node-version-check.js +37 -0
  9. package/dist/bin/node-version-check.js.map +1 -1
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js +1 -11
  12. package/dist/config.js.map +1 -1
  13. package/dist/context/formatter.d.ts.map +1 -1
  14. package/dist/context/formatter.js +25 -6
  15. package/dist/context/formatter.js.map +1 -1
  16. package/dist/context/index.d.ts +22 -0
  17. package/dist/context/index.d.ts.map +1 -1
  18. package/dist/context/index.js +257 -6
  19. package/dist/context/index.js.map +1 -1
  20. package/dist/context/markers.d.ts +19 -0
  21. package/dist/context/markers.d.ts.map +1 -0
  22. package/dist/context/markers.js +22 -0
  23. package/dist/context/markers.js.map +1 -0
  24. package/dist/db/index.d.ts +30 -1
  25. package/dist/db/index.d.ts.map +1 -1
  26. package/dist/db/index.js +75 -25
  27. package/dist/db/index.js.map +1 -1
  28. package/dist/db/queries.d.ts +104 -0
  29. package/dist/db/queries.d.ts.map +1 -1
  30. package/dist/db/queries.js +328 -31
  31. package/dist/db/queries.js.map +1 -1
  32. package/dist/db/sqlite-adapter.d.ts +24 -23
  33. package/dist/db/sqlite-adapter.d.ts.map +1 -1
  34. package/dist/db/sqlite-adapter.js +54 -174
  35. package/dist/db/sqlite-adapter.js.map +1 -1
  36. package/dist/directory.d.ts.map +1 -1
  37. package/dist/directory.js +6 -20
  38. package/dist/directory.js.map +1 -1
  39. package/dist/extraction/generated-detection.d.ts +30 -0
  40. package/dist/extraction/generated-detection.d.ts.map +1 -0
  41. package/dist/extraction/generated-detection.js +80 -0
  42. package/dist/extraction/generated-detection.js.map +1 -0
  43. package/dist/extraction/grammars.d.ts +23 -1
  44. package/dist/extraction/grammars.d.ts.map +1 -1
  45. package/dist/extraction/grammars.js +107 -3
  46. package/dist/extraction/grammars.js.map +1 -1
  47. package/dist/extraction/index.d.ts +22 -14
  48. package/dist/extraction/index.d.ts.map +1 -1
  49. package/dist/extraction/index.js +272 -183
  50. package/dist/extraction/index.js.map +1 -1
  51. package/dist/extraction/languages/c-cpp.d.ts.map +1 -1
  52. package/dist/extraction/languages/c-cpp.js +45 -0
  53. package/dist/extraction/languages/c-cpp.js.map +1 -1
  54. package/dist/extraction/languages/csharp.d.ts.map +1 -1
  55. package/dist/extraction/languages/csharp.js +2 -1
  56. package/dist/extraction/languages/csharp.js.map +1 -1
  57. package/dist/extraction/languages/go.d.ts.map +1 -1
  58. package/dist/extraction/languages/go.js +18 -2
  59. package/dist/extraction/languages/go.js.map +1 -1
  60. package/dist/extraction/languages/index.d.ts.map +1 -1
  61. package/dist/extraction/languages/index.js +6 -0
  62. package/dist/extraction/languages/index.js.map +1 -1
  63. package/dist/extraction/languages/java.d.ts.map +1 -1
  64. package/dist/extraction/languages/java.js +6 -0
  65. package/dist/extraction/languages/java.js.map +1 -1
  66. package/dist/extraction/languages/kotlin.d.ts.map +1 -1
  67. package/dist/extraction/languages/kotlin.js +6 -0
  68. package/dist/extraction/languages/kotlin.js.map +1 -1
  69. package/dist/extraction/languages/lua.d.ts +3 -0
  70. package/dist/extraction/languages/lua.d.ts.map +1 -0
  71. package/dist/extraction/languages/lua.js +150 -0
  72. package/dist/extraction/languages/lua.js.map +1 -0
  73. package/dist/extraction/languages/luau.d.ts +3 -0
  74. package/dist/extraction/languages/luau.d.ts.map +1 -0
  75. package/dist/extraction/languages/luau.js +37 -0
  76. package/dist/extraction/languages/luau.js.map +1 -0
  77. package/dist/extraction/languages/objc.d.ts +3 -0
  78. package/dist/extraction/languages/objc.d.ts.map +1 -0
  79. package/dist/extraction/languages/objc.js +133 -0
  80. package/dist/extraction/languages/objc.js.map +1 -0
  81. package/dist/extraction/mybatis-extractor.d.ts +48 -0
  82. package/dist/extraction/mybatis-extractor.d.ts.map +1 -0
  83. package/dist/extraction/mybatis-extractor.js +198 -0
  84. package/dist/extraction/mybatis-extractor.js.map +1 -0
  85. package/dist/extraction/tree-sitter-types.d.ts +14 -0
  86. package/dist/extraction/tree-sitter-types.d.ts.map +1 -1
  87. package/dist/extraction/tree-sitter.d.ts +84 -0
  88. package/dist/extraction/tree-sitter.d.ts.map +1 -1
  89. package/dist/extraction/tree-sitter.js +715 -16
  90. package/dist/extraction/tree-sitter.js.map +1 -1
  91. package/dist/extraction/vue-extractor.d.ts +15 -0
  92. package/dist/extraction/vue-extractor.d.ts.map +1 -1
  93. package/dist/extraction/vue-extractor.js +88 -0
  94. package/dist/extraction/vue-extractor.js.map +1 -1
  95. package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
  96. package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
  97. package/dist/extraction/wasm-runtime-flags.d.ts +38 -0
  98. package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
  99. package/dist/extraction/wasm-runtime-flags.js +106 -0
  100. package/dist/extraction/wasm-runtime-flags.js.map +1 -0
  101. package/dist/graph/traversal.d.ts.map +1 -1
  102. package/dist/graph/traversal.js +76 -38
  103. package/dist/graph/traversal.js.map +1 -1
  104. package/dist/index.d.ts +77 -8
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +133 -19
  107. package/dist/index.js.map +1 -1
  108. package/dist/installer/config-writer.d.ts +7 -8
  109. package/dist/installer/config-writer.d.ts.map +1 -1
  110. package/dist/installer/config-writer.js +7 -27
  111. package/dist/installer/config-writer.js.map +1 -1
  112. package/dist/installer/index.d.ts +51 -16
  113. package/dist/installer/index.d.ts.map +1 -1
  114. package/dist/installer/index.js +120 -29
  115. package/dist/installer/index.js.map +1 -1
  116. package/dist/installer/instructions-template.d.ts +11 -21
  117. package/dist/installer/instructions-template.d.ts.map +1 -1
  118. package/dist/installer/instructions-template.js +12 -56
  119. package/dist/installer/instructions-template.js.map +1 -1
  120. package/dist/installer/targets/antigravity.d.ts +57 -0
  121. package/dist/installer/targets/antigravity.d.ts.map +1 -0
  122. package/dist/installer/targets/antigravity.js +308 -0
  123. package/dist/installer/targets/antigravity.js.map +1 -0
  124. package/dist/installer/targets/claude.d.ts +26 -1
  125. package/dist/installer/targets/claude.d.ts.map +1 -1
  126. package/dist/installer/targets/claude.js +118 -40
  127. package/dist/installer/targets/claude.js.map +1 -1
  128. package/dist/installer/targets/codex.d.ts.map +1 -1
  129. package/dist/installer/targets/codex.js +15 -13
  130. package/dist/installer/targets/codex.js.map +1 -1
  131. package/dist/installer/targets/cursor.d.ts.map +1 -1
  132. package/dist/installer/targets/cursor.js +61 -36
  133. package/dist/installer/targets/cursor.js.map +1 -1
  134. package/dist/installer/targets/gemini.d.ts +26 -0
  135. package/dist/installer/targets/gemini.d.ts.map +1 -0
  136. package/dist/installer/targets/gemini.js +167 -0
  137. package/dist/installer/targets/gemini.js.map +1 -0
  138. package/dist/installer/targets/hermes.d.ts +18 -0
  139. package/dist/installer/targets/hermes.d.ts.map +1 -0
  140. package/dist/installer/targets/hermes.js +359 -0
  141. package/dist/installer/targets/hermes.js.map +1 -0
  142. package/dist/installer/targets/kiro.d.ts +27 -0
  143. package/dist/installer/targets/kiro.d.ts.map +1 -0
  144. package/dist/installer/targets/kiro.js +178 -0
  145. package/dist/installer/targets/kiro.js.map +1 -0
  146. package/dist/installer/targets/opencode.d.ts.map +1 -1
  147. package/dist/installer/targets/opencode.js +15 -13
  148. package/dist/installer/targets/opencode.js.map +1 -1
  149. package/dist/installer/targets/registry.d.ts.map +1 -1
  150. package/dist/installer/targets/registry.js +8 -0
  151. package/dist/installer/targets/registry.js.map +1 -1
  152. package/dist/installer/targets/shared.d.ts.map +1 -1
  153. package/dist/installer/targets/shared.js +3 -2
  154. package/dist/installer/targets/shared.js.map +1 -1
  155. package/dist/installer/targets/types.d.ts +1 -16
  156. package/dist/installer/targets/types.d.ts.map +1 -1
  157. package/dist/mcp/daemon-paths.d.ts +46 -0
  158. package/dist/mcp/daemon-paths.d.ts.map +1 -0
  159. package/dist/mcp/daemon-paths.js +125 -0
  160. package/dist/mcp/daemon-paths.js.map +1 -0
  161. package/dist/mcp/daemon.d.ts +161 -0
  162. package/dist/mcp/daemon.d.ts.map +1 -0
  163. package/dist/mcp/daemon.js +403 -0
  164. package/dist/mcp/daemon.js.map +1 -0
  165. package/dist/mcp/engine.d.ts +105 -0
  166. package/dist/mcp/engine.d.ts.map +1 -0
  167. package/dist/mcp/engine.js +270 -0
  168. package/dist/mcp/engine.js.map +1 -0
  169. package/dist/mcp/index.d.ts +70 -52
  170. package/dist/mcp/index.d.ts.map +1 -1
  171. package/dist/mcp/index.js +355 -331
  172. package/dist/mcp/index.js.map +1 -1
  173. package/dist/mcp/proxy.d.ts +81 -0
  174. package/dist/mcp/proxy.d.ts.map +1 -0
  175. package/dist/mcp/proxy.js +510 -0
  176. package/dist/mcp/proxy.js.map +1 -0
  177. package/dist/mcp/server-instructions.d.ts +1 -1
  178. package/dist/mcp/server-instructions.d.ts.map +1 -1
  179. package/dist/mcp/server-instructions.js +21 -21
  180. package/dist/mcp/session.d.ts +77 -0
  181. package/dist/mcp/session.d.ts.map +1 -0
  182. package/dist/mcp/session.js +294 -0
  183. package/dist/mcp/session.js.map +1 -0
  184. package/dist/mcp/tools.d.ts +171 -15
  185. package/dist/mcp/tools.d.ts.map +1 -1
  186. package/dist/mcp/tools.js +1714 -298
  187. package/dist/mcp/tools.js.map +1 -1
  188. package/dist/mcp/transport.d.ts +111 -29
  189. package/dist/mcp/transport.d.ts.map +1 -1
  190. package/dist/mcp/transport.js +181 -71
  191. package/dist/mcp/transport.js.map +1 -1
  192. package/dist/mcp/version.d.ts +19 -0
  193. package/dist/mcp/version.d.ts.map +1 -0
  194. package/dist/mcp/version.js +71 -0
  195. package/dist/mcp/version.js.map +1 -0
  196. package/dist/resolution/callback-synthesizer.d.ts +10 -0
  197. package/dist/resolution/callback-synthesizer.d.ts.map +1 -0
  198. package/dist/resolution/callback-synthesizer.js +1300 -0
  199. package/dist/resolution/callback-synthesizer.js.map +1 -0
  200. package/dist/resolution/frameworks/csharp.d.ts.map +1 -1
  201. package/dist/resolution/frameworks/csharp.js +36 -8
  202. package/dist/resolution/frameworks/csharp.js.map +1 -1
  203. package/dist/resolution/frameworks/drupal.d.ts +51 -0
  204. package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
  205. package/dist/resolution/frameworks/drupal.js +367 -0
  206. package/dist/resolution/frameworks/drupal.js.map +1 -0
  207. package/dist/resolution/frameworks/expo-modules.d.ts +3 -0
  208. package/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
  209. package/dist/resolution/frameworks/expo-modules.js +143 -0
  210. package/dist/resolution/frameworks/expo-modules.js.map +1 -0
  211. package/dist/resolution/frameworks/express.d.ts.map +1 -1
  212. package/dist/resolution/frameworks/express.js +102 -19
  213. package/dist/resolution/frameworks/express.js.map +1 -1
  214. package/dist/resolution/frameworks/fabric.d.ts +3 -0
  215. package/dist/resolution/frameworks/fabric.d.ts.map +1 -0
  216. package/dist/resolution/frameworks/fabric.js +354 -0
  217. package/dist/resolution/frameworks/fabric.js.map +1 -0
  218. package/dist/resolution/frameworks/go.d.ts.map +1 -1
  219. package/dist/resolution/frameworks/go.js +6 -3
  220. package/dist/resolution/frameworks/go.js.map +1 -1
  221. package/dist/resolution/frameworks/index.d.ts +6 -0
  222. package/dist/resolution/frameworks/index.d.ts.map +1 -1
  223. package/dist/resolution/frameworks/index.js +29 -1
  224. package/dist/resolution/frameworks/index.js.map +1 -1
  225. package/dist/resolution/frameworks/java.d.ts.map +1 -1
  226. package/dist/resolution/frameworks/java.js +339 -12
  227. package/dist/resolution/frameworks/java.js.map +1 -1
  228. package/dist/resolution/frameworks/laravel.d.ts.map +1 -1
  229. package/dist/resolution/frameworks/laravel.js +17 -8
  230. package/dist/resolution/frameworks/laravel.js.map +1 -1
  231. package/dist/resolution/frameworks/nestjs.d.ts.map +1 -1
  232. package/dist/resolution/frameworks/nestjs.js +324 -0
  233. package/dist/resolution/frameworks/nestjs.js.map +1 -1
  234. package/dist/resolution/frameworks/play.d.ts +19 -0
  235. package/dist/resolution/frameworks/play.d.ts.map +1 -0
  236. package/dist/resolution/frameworks/play.js +111 -0
  237. package/dist/resolution/frameworks/play.js.map +1 -0
  238. package/dist/resolution/frameworks/python.d.ts.map +1 -1
  239. package/dist/resolution/frameworks/python.js +134 -16
  240. package/dist/resolution/frameworks/python.js.map +1 -1
  241. package/dist/resolution/frameworks/react-native.d.ts +3 -0
  242. package/dist/resolution/frameworks/react-native.d.ts.map +1 -0
  243. package/dist/resolution/frameworks/react-native.js +360 -0
  244. package/dist/resolution/frameworks/react-native.js.map +1 -0
  245. package/dist/resolution/frameworks/react.d.ts.map +1 -1
  246. package/dist/resolution/frameworks/react.js +96 -3
  247. package/dist/resolution/frameworks/react.js.map +1 -1
  248. package/dist/resolution/frameworks/ruby.d.ts.map +1 -1
  249. package/dist/resolution/frameworks/ruby.js +106 -2
  250. package/dist/resolution/frameworks/ruby.js.map +1 -1
  251. package/dist/resolution/frameworks/rust.d.ts.map +1 -1
  252. package/dist/resolution/frameworks/rust.js +102 -5
  253. package/dist/resolution/frameworks/rust.js.map +1 -1
  254. package/dist/resolution/frameworks/swift-objc.d.ts +37 -0
  255. package/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
  256. package/dist/resolution/frameworks/swift-objc.js +252 -0
  257. package/dist/resolution/frameworks/swift-objc.js.map +1 -0
  258. package/dist/resolution/frameworks/swift.d.ts.map +1 -1
  259. package/dist/resolution/frameworks/swift.js +30 -6
  260. package/dist/resolution/frameworks/swift.js.map +1 -1
  261. package/dist/resolution/go-module.d.ts +26 -0
  262. package/dist/resolution/go-module.d.ts.map +1 -0
  263. package/dist/resolution/go-module.js +78 -0
  264. package/dist/resolution/go-module.js.map +1 -0
  265. package/dist/resolution/import-resolver.d.ts +28 -0
  266. package/dist/resolution/import-resolver.d.ts.map +1 -1
  267. package/dist/resolution/import-resolver.js +617 -5
  268. package/dist/resolution/import-resolver.js.map +1 -1
  269. package/dist/resolution/index.d.ts +11 -0
  270. package/dist/resolution/index.d.ts.map +1 -1
  271. package/dist/resolution/index.js +196 -10
  272. package/dist/resolution/index.js.map +1 -1
  273. package/dist/resolution/lru-cache.d.ts +24 -0
  274. package/dist/resolution/lru-cache.d.ts.map +1 -0
  275. package/dist/resolution/lru-cache.js +62 -0
  276. package/dist/resolution/lru-cache.js.map +1 -0
  277. package/dist/resolution/name-matcher.d.ts.map +1 -1
  278. package/dist/resolution/name-matcher.js +212 -0
  279. package/dist/resolution/name-matcher.js.map +1 -1
  280. package/dist/resolution/swift-objc-bridge.d.ts +134 -0
  281. package/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
  282. package/dist/resolution/swift-objc-bridge.js +256 -0
  283. package/dist/resolution/swift-objc-bridge.js.map +1 -0
  284. package/dist/resolution/types.d.ts +44 -0
  285. package/dist/resolution/types.d.ts.map +1 -1
  286. package/dist/resolution/workspace-packages.d.ts +48 -0
  287. package/dist/resolution/workspace-packages.d.ts.map +1 -0
  288. package/dist/resolution/workspace-packages.js +208 -0
  289. package/dist/resolution/workspace-packages.js.map +1 -0
  290. package/dist/search/query-utils.d.ts +18 -0
  291. package/dist/search/query-utils.d.ts.map +1 -1
  292. package/dist/search/query-utils.js +30 -0
  293. package/dist/search/query-utils.js.map +1 -1
  294. package/dist/sync/git-hooks.d.ts.map +1 -1
  295. package/dist/sync/git-hooks.js +2 -0
  296. package/dist/sync/git-hooks.js.map +1 -1
  297. package/dist/sync/index.d.ts +3 -1
  298. package/dist/sync/index.d.ts.map +1 -1
  299. package/dist/sync/index.js +8 -1
  300. package/dist/sync/index.js.map +1 -1
  301. package/dist/sync/watcher.d.ts +214 -12
  302. package/dist/sync/watcher.d.ts.map +1 -1
  303. package/dist/sync/watcher.js +467 -55
  304. package/dist/sync/watcher.js.map +1 -1
  305. package/dist/sync/worktree.d.ts +54 -0
  306. package/dist/sync/worktree.d.ts.map +1 -0
  307. package/dist/sync/worktree.js +137 -0
  308. package/dist/sync/worktree.js.map +1 -0
  309. package/dist/types.d.ts +9 -1
  310. package/dist/types.d.ts.map +1 -1
  311. package/dist/types.js +14 -0
  312. package/dist/types.js.map +1 -1
  313. package/dist/utils.js +1 -1
  314. package/package.json +2 -2
  315. package/scripts/add-lang/bench.sh +60 -0
  316. package/scripts/add-lang/check-grammar.mjs +75 -0
  317. package/scripts/add-lang/dump-ast.mjs +103 -0
  318. package/scripts/add-lang/verify-extraction.mjs +70 -0
  319. package/scripts/agent-eval/arms-F.sh +21 -0
  320. package/scripts/agent-eval/arms-matrix.sh +37 -0
  321. package/scripts/agent-eval/bench-readme.sh +28 -0
  322. package/scripts/agent-eval/bench-why-repo.sh +22 -0
  323. package/scripts/agent-eval/block-read-hook.sh +19 -0
  324. package/scripts/agent-eval/hook-settings.json +15 -0
  325. package/scripts/agent-eval/itrun.sh +24 -11
  326. package/scripts/agent-eval/parse-arms.mjs +116 -0
  327. package/scripts/agent-eval/parse-bench-readme.mjs +84 -0
  328. package/scripts/agent-eval/probe-context.mjs +21 -0
  329. package/scripts/agent-eval/probe-explore.mjs +40 -0
  330. package/scripts/agent-eval/probe-node.mjs +20 -0
  331. package/scripts/agent-eval/probe-sweep.mjs +119 -0
  332. package/scripts/agent-eval/probe-trace.mjs +20 -0
  333. package/scripts/agent-eval/run-arms.sh +56 -0
  334. package/scripts/agent-eval/seq-matrix.mjs +137 -0
  335. package/scripts/build-bundle.sh +118 -0
  336. package/scripts/npm-sdk.js +75 -0
  337. package/scripts/npm-shim.js +246 -0
  338. package/scripts/pack-npm.sh +119 -0
  339. package/scripts/prepare-release.mjs +270 -0
  340. package/scripts/patch-tree-sitter-dart.js +0 -112
  341. package/scripts/release.sh +0 -68
@@ -0,0 +1,359 @@
1
+ "use strict";
2
+ /**
3
+ * Hermes Agent target.
4
+ *
5
+ * Hermes reads MCP servers from `$HERMES_HOME/config.yaml` under the
6
+ * top-level `mcp_servers` key, and exposes discovered MCP tools through
7
+ * dynamic toolsets named `mcp-<server>`. We add:
8
+ *
9
+ * mcp_servers.codegraph -> `codegraph serve --mcp`
10
+ * platform_toolsets.cli -> `mcp-codegraph`
11
+ *
12
+ * The second entry matters because Hermes CLI profiles often enable an
13
+ * explicit `platform_toolsets.cli` list. Without `mcp-codegraph` in that
14
+ * list, the MCP server can be configured and connected but its tools may
15
+ * still be filtered out of normal CLI sessions.
16
+ */
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
32
+ });
33
+ var __importStar = (this && this.__importStar) || (function () {
34
+ var ownKeys = function(o) {
35
+ ownKeys = Object.getOwnPropertyNames || function (o) {
36
+ var ar = [];
37
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
38
+ return ar;
39
+ };
40
+ return ownKeys(o);
41
+ };
42
+ return function (mod) {
43
+ if (mod && mod.__esModule) return mod;
44
+ var result = {};
45
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
46
+ __setModuleDefault(result, mod);
47
+ return result;
48
+ };
49
+ })();
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.hermesTarget = void 0;
52
+ const fs = __importStar(require("fs"));
53
+ const path = __importStar(require("path"));
54
+ const os = __importStar(require("os"));
55
+ const shared_1 = require("./shared");
56
+ class HermesTarget {
57
+ id = 'hermes';
58
+ displayName = 'Hermes Agent';
59
+ docsUrl = 'https://hermes-agent.nousresearch.com';
60
+ supportsLocation(loc) {
61
+ return loc === 'global';
62
+ }
63
+ detect(loc) {
64
+ if (loc !== 'global') {
65
+ return { installed: false, alreadyConfigured: false };
66
+ }
67
+ const file = configPath();
68
+ const content = readText(file);
69
+ const installed = fs.existsSync(hermesHome()) || fs.existsSync(file);
70
+ return {
71
+ installed,
72
+ alreadyConfigured: hasCodeGraphMcpServer(content),
73
+ configPath: file,
74
+ };
75
+ }
76
+ install(loc, _opts) {
77
+ if (loc !== 'global') {
78
+ return {
79
+ files: [],
80
+ notes: ['Hermes Agent uses $HERMES_HOME/config.yaml; re-run with --location=global.'],
81
+ };
82
+ }
83
+ return {
84
+ files: [writeHermesConfig()],
85
+ notes: ['Start a new Hermes session for MCP changes to take effect.'],
86
+ };
87
+ }
88
+ uninstall(loc) {
89
+ if (loc !== 'global')
90
+ return { files: [] };
91
+ const file = configPath();
92
+ if (!fs.existsSync(file)) {
93
+ return { files: [{ path: file, action: 'not-found' }] };
94
+ }
95
+ const before = readText(file);
96
+ const after = removeCodeGraphToolset(removeCodeGraphMcpServer(before));
97
+ if (after === before) {
98
+ return { files: [{ path: file, action: 'not-found' }] };
99
+ }
100
+ (0, shared_1.atomicWriteFileSync)(file, ensureTrailingNewline(after));
101
+ return { files: [{ path: file, action: 'removed' }] };
102
+ }
103
+ printConfig(loc) {
104
+ if (loc !== 'global') {
105
+ return '# Hermes Agent uses $HERMES_HOME/config.yaml; use --location=global.\n';
106
+ }
107
+ return [
108
+ `# Add to ${configPath()}`,
109
+ '',
110
+ renderCodeGraphMcpBlock().join('\n'),
111
+ '',
112
+ 'platform_toolsets:',
113
+ ' cli:',
114
+ ' - hermes-cli',
115
+ ' - mcp-codegraph',
116
+ '',
117
+ ].join('\n');
118
+ }
119
+ describePaths(loc) {
120
+ return loc === 'global' ? [configPath()] : [];
121
+ }
122
+ }
123
+ function hermesHome() {
124
+ return process.env.HERMES_HOME
125
+ ? path.resolve(process.env.HERMES_HOME)
126
+ : path.join(os.homedir(), '.hermes');
127
+ }
128
+ function configPath() {
129
+ return path.join(hermesHome(), 'config.yaml');
130
+ }
131
+ function readText(file) {
132
+ try {
133
+ return fs.readFileSync(file, 'utf-8');
134
+ }
135
+ catch {
136
+ return '';
137
+ }
138
+ }
139
+ function writeHermesConfig() {
140
+ const file = configPath();
141
+ const existed = fs.existsSync(file);
142
+ const before = readText(file);
143
+ const afterMcp = upsertCodeGraphMcpServer(before);
144
+ const after = upsertCodeGraphToolset(afterMcp);
145
+ if (after === before) {
146
+ return { path: file, action: 'unchanged' };
147
+ }
148
+ (0, shared_1.atomicWriteFileSync)(file, ensureTrailingNewline(after));
149
+ return { path: file, action: existed ? 'updated' : 'created' };
150
+ }
151
+ function ensureTrailingNewline(text) {
152
+ return text.endsWith('\n') ? text : text + '\n';
153
+ }
154
+ function splitLines(content) {
155
+ return content.replace(/\r\n/g, '\n').replace(/\r/g, '\n').split('\n');
156
+ }
157
+ function joinLines(lines) {
158
+ while (lines.length > 0 && lines[lines.length - 1] === '')
159
+ lines.pop();
160
+ return lines.join('\n') + '\n';
161
+ }
162
+ function topLevelRange(lines, key) {
163
+ const start = lines.findIndex((line) => line.trim() === `${key}:`);
164
+ if (start === -1)
165
+ return null;
166
+ let end = lines.length;
167
+ for (let i = start + 1; i < lines.length; i++) {
168
+ const line = lines[i] ?? '';
169
+ if (line.trim() === '')
170
+ continue;
171
+ if (/^[A-Za-z_][A-Za-z0-9_-]*:\s*(?:#.*)?$/.test(line)) {
172
+ end = i;
173
+ break;
174
+ }
175
+ }
176
+ return { start, end };
177
+ }
178
+ function childRange(lines, parent, child) {
179
+ const startPattern = new RegExp(`^ ${escapeRegExp(child)}:\\s*(?:#.*)?$`);
180
+ let start = -1;
181
+ for (let i = parent.start + 1; i < parent.end; i++) {
182
+ if (startPattern.test(lines[i] ?? '')) {
183
+ start = i;
184
+ break;
185
+ }
186
+ }
187
+ if (start === -1)
188
+ return null;
189
+ let end = parent.end;
190
+ for (let i = start + 1; i < parent.end; i++) {
191
+ const line = lines[i] ?? '';
192
+ if (line.trim() === '')
193
+ continue;
194
+ if (/^ \S/.test(line)) {
195
+ end = i;
196
+ break;
197
+ }
198
+ }
199
+ while (end > start + 1 && (lines[end - 1] ?? '').trim() === '') {
200
+ end--;
201
+ }
202
+ return { start, end };
203
+ }
204
+ /**
205
+ * Block-range for a 2-space-indented child whose value is a YAML block list.
206
+ *
207
+ * Unlike `childRange`, this handles PyYAML's default `default_flow_style=False`
208
+ * serialization, where list items sit at the SAME indent as the parent key:
209
+ *
210
+ * cli:
211
+ * - hermes-cli # indent 2 — belongs to cli, not a sibling
212
+ * - browser
213
+ *
214
+ * `childRange`'s `^ \S` heuristic mistakes that first ` - hermes-cli` line
215
+ * for the next sibling key and truncates the block, causing inserts to land
216
+ * before the existing items at a different indent (issue #456). This helper
217
+ * recognizes a ` - ` line as part of the block instead, and reports back
218
+ * the actual indent used by existing items so the inserter matches it.
219
+ */
220
+ function listChildBlock(lines, parent, child) {
221
+ const startPattern = new RegExp(`^ ${escapeRegExp(child)}:\\s*(?:#.*)?$`);
222
+ let start = -1;
223
+ for (let i = parent.start + 1; i < parent.end; i++) {
224
+ if (startPattern.test(lines[i] ?? '')) {
225
+ start = i;
226
+ break;
227
+ }
228
+ }
229
+ if (start === -1)
230
+ return null;
231
+ let end = parent.end;
232
+ for (let i = start + 1; i < parent.end; i++) {
233
+ const line = lines[i] ?? '';
234
+ if (line.trim() === '')
235
+ continue;
236
+ const indentMatch = line.match(/^( *)/);
237
+ const indent = indentMatch?.[1]?.length ?? 0;
238
+ if (indent >= 4)
239
+ continue;
240
+ if (indent === 2 && /^ - /.test(line))
241
+ continue;
242
+ end = i;
243
+ break;
244
+ }
245
+ while (end > start + 1 && (lines[end - 1] ?? '').trim() === '') {
246
+ end--;
247
+ }
248
+ let itemIndent = ' ';
249
+ for (let i = start + 1; i < end; i++) {
250
+ const m = (lines[i] ?? '').match(/^( +)- /);
251
+ if (m && m[1]) {
252
+ itemIndent = m[1];
253
+ break;
254
+ }
255
+ }
256
+ return { start, end, itemIndent };
257
+ }
258
+ function escapeRegExp(value) {
259
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
260
+ }
261
+ function renderCodeGraphMcpChild() {
262
+ return [
263
+ ' codegraph:',
264
+ ' command: codegraph',
265
+ ' args:',
266
+ ' - serve',
267
+ ' - --mcp',
268
+ ' timeout: 120',
269
+ ' connect_timeout: 60',
270
+ ' enabled: true',
271
+ ];
272
+ }
273
+ function renderCodeGraphMcpBlock() {
274
+ return ['mcp_servers:', ...renderCodeGraphMcpChild()];
275
+ }
276
+ function hasCodeGraphMcpServer(content) {
277
+ const lines = splitLines(content);
278
+ const parent = topLevelRange(lines, 'mcp_servers');
279
+ return !!parent && !!childRange(lines, parent, 'codegraph');
280
+ }
281
+ function upsertCodeGraphMcpServer(content) {
282
+ const lines = splitLines(content);
283
+ const parent = topLevelRange(lines, 'mcp_servers');
284
+ const child = parent ? childRange(lines, parent, 'codegraph') : null;
285
+ const replacement = renderCodeGraphMcpChild();
286
+ if (!parent) {
287
+ if (lines.length > 0 && lines[lines.length - 1] === '')
288
+ lines.pop();
289
+ if (lines.length > 0)
290
+ lines.push('');
291
+ lines.push(...renderCodeGraphMcpBlock());
292
+ return joinLines(lines);
293
+ }
294
+ if (child) {
295
+ const existing = lines.slice(child.start, child.end);
296
+ if (arrayEqual(existing, replacement))
297
+ return joinLines(lines);
298
+ lines.splice(child.start, child.end - child.start, ...replacement);
299
+ return joinLines(lines);
300
+ }
301
+ lines.splice(parent.end, 0, ...replacement);
302
+ return joinLines(lines);
303
+ }
304
+ function removeCodeGraphMcpServer(content) {
305
+ const lines = splitLines(content);
306
+ const parent = topLevelRange(lines, 'mcp_servers');
307
+ const child = parent ? childRange(lines, parent, 'codegraph') : null;
308
+ if (!child)
309
+ return content;
310
+ lines.splice(child.start, child.end - child.start);
311
+ return joinLines(lines);
312
+ }
313
+ function upsertCodeGraphToolset(content) {
314
+ const lines = splitLines(content);
315
+ const parent = topLevelRange(lines, 'platform_toolsets');
316
+ const cli = parent ? listChildBlock(lines, parent, 'cli') : null;
317
+ if (!parent) {
318
+ if (lines.length > 0 && lines[lines.length - 1] === '')
319
+ lines.pop();
320
+ if (lines.length > 0)
321
+ lines.push('');
322
+ lines.push('platform_toolsets:', ' cli:', ' - hermes-cli', ' - mcp-codegraph');
323
+ return joinLines(lines);
324
+ }
325
+ if (!cli) {
326
+ lines.splice(parent.end, 0, ' cli:', ' - hermes-cli', ' - mcp-codegraph');
327
+ return joinLines(lines);
328
+ }
329
+ const hasEntry = lines
330
+ .slice(cli.start + 1, cli.end)
331
+ .some((line) => line.trim() === '- mcp-codegraph');
332
+ if (hasEntry)
333
+ return joinLines(lines);
334
+ lines.splice(cli.end, 0, `${cli.itemIndent}- mcp-codegraph`);
335
+ return joinLines(lines);
336
+ }
337
+ function removeCodeGraphToolset(content) {
338
+ const lines = splitLines(content);
339
+ const parent = topLevelRange(lines, 'platform_toolsets');
340
+ const cli = parent ? listChildBlock(lines, parent, 'cli') : null;
341
+ if (!cli)
342
+ return content;
343
+ const hasEntry = lines
344
+ .slice(cli.start + 1, cli.end)
345
+ .some((line) => line.trim() === '- mcp-codegraph');
346
+ if (!hasEntry)
347
+ return content;
348
+ const next = lines.filter((line, idx) => {
349
+ if (idx <= cli.start || idx >= cli.end)
350
+ return true;
351
+ return line.trim() !== '- mcp-codegraph';
352
+ });
353
+ return joinLines(next);
354
+ }
355
+ function arrayEqual(a, b) {
356
+ return a.length === b.length && a.every((value, idx) => value === b[idx]);
357
+ }
358
+ exports.hermesTarget = new HermesTarget();
359
+ //# sourceMappingURL=hermes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../../src/installer/targets/hermes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Kiro CLI / IDE target. Writes:
3
+ *
4
+ * - MCP server entry to `~/.kiro/settings/mcp.json` (global) or
5
+ * `./.kiro/settings/mcp.json` (local). Standard `mcpServers.codegraph`
6
+ * shape, same as Claude / Cursor / Gemini.
7
+ * - Instructions to `~/.kiro/steering/codegraph.md` (global) or
8
+ * `./.kiro/steering/codegraph.md` (local). Kiro's "steering" system
9
+ * loads every `*.md` file in the steering dir as agent context, so
10
+ * a dedicated `codegraph.md` is the natural surface — we own the
11
+ * whole file outright (no marker-based merging needed) and delete
12
+ * it on uninstall.
13
+ *
14
+ * No permissions concept — Kiro gates tool invocations through its own
15
+ * UI prompts rather than an external allowlist. `autoAllow` is silently
16
+ * ignored.
17
+ *
18
+ * Paths are identical on macOS / Linux / Windows because Kiro resolves
19
+ * its config root from `os.homedir()` on all three (Windows `~` →
20
+ * `%USERPROFILE%\.kiro`).
21
+ *
22
+ * Docs: https://kiro.dev/docs/cli/mcp/
23
+ * https://kiro.dev/docs/cli/steering/
24
+ */
25
+ import { AgentTarget } from './types';
26
+ export declare const kiroTarget: AgentTarget;
27
+ //# sourceMappingURL=kiro.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kiro.d.ts","sourceRoot":"","sources":["../../../src/installer/targets/kiro.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,OAAO,EACL,WAAW,EAKZ,MAAM,SAAS,CAAC;AAkIjB,eAAO,MAAM,UAAU,EAAE,WAA8B,CAAC"}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ /**
3
+ * Kiro CLI / IDE target. Writes:
4
+ *
5
+ * - MCP server entry to `~/.kiro/settings/mcp.json` (global) or
6
+ * `./.kiro/settings/mcp.json` (local). Standard `mcpServers.codegraph`
7
+ * shape, same as Claude / Cursor / Gemini.
8
+ * - Instructions to `~/.kiro/steering/codegraph.md` (global) or
9
+ * `./.kiro/steering/codegraph.md` (local). Kiro's "steering" system
10
+ * loads every `*.md` file in the steering dir as agent context, so
11
+ * a dedicated `codegraph.md` is the natural surface — we own the
12
+ * whole file outright (no marker-based merging needed) and delete
13
+ * it on uninstall.
14
+ *
15
+ * No permissions concept — Kiro gates tool invocations through its own
16
+ * UI prompts rather than an external allowlist. `autoAllow` is silently
17
+ * ignored.
18
+ *
19
+ * Paths are identical on macOS / Linux / Windows because Kiro resolves
20
+ * its config root from `os.homedir()` on all three (Windows `~` →
21
+ * `%USERPROFILE%\.kiro`).
22
+ *
23
+ * Docs: https://kiro.dev/docs/cli/mcp/
24
+ * https://kiro.dev/docs/cli/steering/
25
+ */
26
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
27
+ if (k2 === undefined) k2 = k;
28
+ var desc = Object.getOwnPropertyDescriptor(m, k);
29
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
30
+ desc = { enumerable: true, get: function() { return m[k]; } };
31
+ }
32
+ Object.defineProperty(o, k2, desc);
33
+ }) : (function(o, m, k, k2) {
34
+ if (k2 === undefined) k2 = k;
35
+ o[k2] = m[k];
36
+ }));
37
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
38
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
39
+ }) : function(o, v) {
40
+ o["default"] = v;
41
+ });
42
+ var __importStar = (this && this.__importStar) || (function () {
43
+ var ownKeys = function(o) {
44
+ ownKeys = Object.getOwnPropertyNames || function (o) {
45
+ var ar = [];
46
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
47
+ return ar;
48
+ };
49
+ return ownKeys(o);
50
+ };
51
+ return function (mod) {
52
+ if (mod && mod.__esModule) return mod;
53
+ var result = {};
54
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
55
+ __setModuleDefault(result, mod);
56
+ return result;
57
+ };
58
+ })();
59
+ Object.defineProperty(exports, "__esModule", { value: true });
60
+ exports.kiroTarget = void 0;
61
+ const fs = __importStar(require("fs"));
62
+ const path = __importStar(require("path"));
63
+ const os = __importStar(require("os"));
64
+ const shared_1 = require("./shared");
65
+ function configDir(loc) {
66
+ return loc === 'global'
67
+ ? path.join(os.homedir(), '.kiro')
68
+ : path.join(process.cwd(), '.kiro');
69
+ }
70
+ function mcpJsonPath(loc) {
71
+ return path.join(configDir(loc), 'settings', 'mcp.json');
72
+ }
73
+ function steeringPath(loc) {
74
+ return path.join(configDir(loc), 'steering', 'codegraph.md');
75
+ }
76
+ class KiroTarget {
77
+ id = 'kiro';
78
+ displayName = 'Kiro';
79
+ docsUrl = 'https://kiro.dev/docs/cli/mcp/';
80
+ supportsLocation(_loc) {
81
+ return true;
82
+ }
83
+ detect(loc) {
84
+ const file = mcpJsonPath(loc);
85
+ const config = (0, shared_1.readJsonFile)(file);
86
+ const alreadyConfigured = !!config.mcpServers?.codegraph;
87
+ const installed = loc === 'global'
88
+ ? fs.existsSync(configDir('global')) || fs.existsSync(file)
89
+ : fs.existsSync(file) || fs.existsSync(configDir('local'));
90
+ return { installed, alreadyConfigured, configPath: file };
91
+ }
92
+ install(loc, _opts) {
93
+ const files = [];
94
+ files.push(writeMcpEntry(loc));
95
+ // The steering doc is no longer written — the codegraph usage
96
+ // guidance ships in the MCP server's `initialize` response (issue
97
+ // #529). Delete a `codegraph.md` a previous install created so an
98
+ // upgrade self-heals.
99
+ const steeringCleanup = removeSteeringEntry(loc);
100
+ if (steeringCleanup.action === 'removed')
101
+ files.push(steeringCleanup);
102
+ return {
103
+ files,
104
+ // The IDE-only enable-MCP step is load-bearing: Kiro IDE ships
105
+ // with MCP support disabled by default, so even a valid
106
+ // `~/.kiro/settings/mcp.json` at the documented path is ignored
107
+ // until the user flips the toggle. Kiro CLI reads the same file
108
+ // without a gate, so we call out which audience this applies to.
109
+ notes: [
110
+ 'Restart Kiro for MCP changes to take effect.',
111
+ 'Kiro IDE: also enable MCP in Settings (search "MCP" → "Enabled"). Kiro CLI users can skip this step.',
112
+ ],
113
+ };
114
+ }
115
+ uninstall(loc) {
116
+ const files = [];
117
+ const file = mcpJsonPath(loc);
118
+ const config = (0, shared_1.readJsonFile)(file);
119
+ if (config.mcpServers?.codegraph) {
120
+ delete config.mcpServers.codegraph;
121
+ if (Object.keys(config.mcpServers).length === 0) {
122
+ delete config.mcpServers;
123
+ }
124
+ (0, shared_1.writeJsonFile)(file, config);
125
+ files.push({ path: file, action: 'removed' });
126
+ }
127
+ else {
128
+ files.push({ path: file, action: 'not-found' });
129
+ }
130
+ files.push(removeSteeringEntry(loc));
131
+ return { files };
132
+ }
133
+ printConfig(loc) {
134
+ const target = mcpJsonPath(loc);
135
+ const snippet = JSON.stringify({ mcpServers: { codegraph: (0, shared_1.getMcpServerConfig)() } }, null, 2);
136
+ return `# Add to ${target}\n\n${snippet}\n`;
137
+ }
138
+ describePaths(loc) {
139
+ return [mcpJsonPath(loc), steeringPath(loc)];
140
+ }
141
+ }
142
+ function writeMcpEntry(loc) {
143
+ const file = mcpJsonPath(loc);
144
+ const dir = path.dirname(file);
145
+ if (!fs.existsSync(dir))
146
+ fs.mkdirSync(dir, { recursive: true });
147
+ const existing = (0, shared_1.readJsonFile)(file);
148
+ const before = existing.mcpServers?.codegraph;
149
+ const after = (0, shared_1.getMcpServerConfig)();
150
+ if ((0, shared_1.jsonDeepEqual)(before, after)) {
151
+ return { path: file, action: 'unchanged' };
152
+ }
153
+ const action = before ? 'updated' : (fs.existsSync(file) ? 'updated' : 'created');
154
+ if (!existing.mcpServers)
155
+ existing.mcpServers = {};
156
+ existing.mcpServers.codegraph = after;
157
+ (0, shared_1.writeJsonFile)(file, existing);
158
+ return { path: file, action };
159
+ }
160
+ /**
161
+ * Delete the steering file we own. If a user has hand-edited the file
162
+ * out of recognition we still remove it — codegraph.md is a name we
163
+ * claim, and a partial install leaving the file behind is worse than
164
+ * a clean delete. Used by both install (self-heal on upgrade — see
165
+ * issue #529) and uninstall.
166
+ */
167
+ function removeSteeringEntry(loc) {
168
+ const file = steeringPath(loc);
169
+ if (!fs.existsSync(file))
170
+ return { path: file, action: 'not-found' };
171
+ try {
172
+ fs.unlinkSync(file);
173
+ }
174
+ catch { /* ignore */ }
175
+ return { path: file, action: 'removed' };
176
+ }
177
+ exports.kiroTarget = new KiroTarget();
178
+ //# sourceMappingURL=kiro.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kiro.js","sourceRoot":"","sources":["../../../src/installer/targets/kiro.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/installer/targets/opencode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,OAAO,EACL,WAAW,EAKZ,MAAM,SAAS,CAAC;AA6MjB,eAAO,MAAM,cAAc,EAAE,WAAkC,CAAC"}
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/installer/targets/opencode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,OAAO,EACL,WAAW,EAKZ,MAAM,SAAS,CAAC;AAwMjB,eAAO,MAAM,cAAc,EAAE,WAAkC,CAAC"}
@@ -139,7 +139,12 @@ class OpencodeTarget {
139
139
  install(loc, _opts) {
140
140
  const files = [];
141
141
  files.push(writeMcpEntry(loc));
142
- files.push(writeInstructionsEntry(loc));
142
+ // AGENTS.md is no longer written — the codegraph usage guidance
143
+ // ships in the MCP server's `initialize` response (issue #529).
144
+ // Strip a block a previous install left so an upgrade self-heals.
145
+ const instrCleanup = removeInstructionsEntry(loc);
146
+ if (instrCleanup.action === 'removed')
147
+ files.push(instrCleanup);
143
148
  return { files };
144
149
  }
145
150
  uninstall(loc) {
@@ -171,9 +176,7 @@ class OpencodeTarget {
171
176
  files.push({ path: file, action: 'removed' });
172
177
  }
173
178
  }
174
- const instr = instructionsPath(loc);
175
- const instrAction = (0, shared_1.removeMarkedSection)(instr, instructions_template_1.CODEGRAPH_SECTION_START, instructions_template_1.CODEGRAPH_SECTION_END);
176
- files.push({ path: instr, action: instrAction });
179
+ files.push(removeInstructionsEntry(loc));
177
180
  return { files };
178
181
  }
179
182
  printConfig(loc) {
@@ -220,16 +223,15 @@ function writeMcpEntry(loc) {
220
223
  (0, shared_1.atomicWriteFileSync)(file, updated);
221
224
  return { path: file, action: existed ? 'updated' : 'created' };
222
225
  }
223
- function writeInstructionsEntry(loc) {
226
+ /**
227
+ * Strip the marker-delimited CodeGraph block from AGENTS.md if a prior
228
+ * install wrote one. Used by both install (self-heal on upgrade) and
229
+ * uninstall — see issue #529.
230
+ */
231
+ function removeInstructionsEntry(loc) {
224
232
  const file = instructionsPath(loc);
225
- const dir = path.dirname(file);
226
- if (!fs.existsSync(dir))
227
- fs.mkdirSync(dir, { recursive: true });
228
- const action = (0, shared_1.replaceOrAppendMarkedSection)(file, instructions_template_1.INSTRUCTIONS_TEMPLATE, instructions_template_1.CODEGRAPH_SECTION_START, instructions_template_1.CODEGRAPH_SECTION_END);
229
- const mapped = action === 'created' ? 'created'
230
- : action === 'unchanged' ? 'unchanged'
231
- : 'updated';
232
- return { path: file, action: mapped };
233
+ const action = (0, shared_1.removeMarkedSection)(file, instructions_template_1.CODEGRAPH_SECTION_START, instructions_template_1.CODEGRAPH_SECTION_END);
234
+ return { path: file, action };
233
235
  }
234
236
  exports.opencodeTarget = new OpencodeTarget();
235
237
  //# sourceMappingURL=opencode.js.map