@automaton-labs/aib 0.0.7 → 0.0.8

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 (477) hide show
  1. package/README.md +36 -257
  2. package/config/agent-dx-policy.default.json +31 -0
  3. package/config/control-plane-client.default.json +3 -0
  4. package/dist/agent-dx/agent-dx.js +805 -0
  5. package/dist/agent-dx/presentation.js +32 -0
  6. package/dist/alias-advisor/analyze.js +982 -0
  7. package/dist/alias-advisor/exact-text-cost.js +74 -0
  8. package/dist/alias-advisor/lexical.js +240 -0
  9. package/dist/alias-advisor/model.js +2 -0
  10. package/dist/alias-advisor/path-identity.js +49 -0
  11. package/dist/alias-advisor/ranking.js +171 -0
  12. package/dist/alias-advisor/token-estimator.js +85 -0
  13. package/dist/bin/aib.js +5 -1
  14. package/dist/bin/cli.js +811 -4
  15. package/dist/commands/add-missing-imports-preview-cache.js +99 -2
  16. package/dist/commands/add-missing-imports.js +241 -2
  17. package/dist/commands/apply-module-plan.js +1319 -3
  18. package/dist/commands/background-command.js +378 -2
  19. package/dist/commands/captured-input.js +74 -1
  20. package/dist/commands/config-command.js +314 -2
  21. package/dist/commands/config-output.js +357 -10
  22. package/dist/commands/control-plane-command.js +183 -1
  23. package/dist/commands/declaration-command.js +1209 -7
  24. package/dist/commands/declaration-execution-cache.js +79 -1
  25. package/dist/commands/declaration-format.js +221 -1
  26. package/dist/commands/declaration-preview-cache.js +114 -2
  27. package/dist/commands/diagnostics-command.js +70 -3
  28. package/dist/commands/doctor.js +137 -3
  29. package/dist/commands/execution-command.js +117 -1
  30. package/dist/commands/exports-star-collapse-command.js +178 -0
  31. package/dist/commands/exports-star-command.js +252 -0
  32. package/dist/commands/exports-star-preview-cache.js +84 -0
  33. package/dist/commands/feedback-command.js +176 -3
  34. package/dist/commands/file-move-to-dir-execution-cache.js +92 -1
  35. package/dist/commands/file-move-to-dir-preview-cache.js +125 -2
  36. package/dist/commands/file-move-to-dir-worker.js +54 -0
  37. package/dist/commands/file-move-to-dir.js +1073 -5
  38. package/dist/commands/file-mutation-runtime.js +102 -1
  39. package/dist/commands/file-mutation-worker-apply.js +180 -0
  40. package/dist/commands/file-refactor-batch-execution-cache.js +90 -1
  41. package/dist/commands/file-refactor-batch-preview-cache.js +125 -2
  42. package/dist/commands/file-refactor-batch-worker.js +54 -0
  43. package/dist/commands/file-refactor-batch.js +1154 -5
  44. package/dist/commands/file-rename-execution-cache.js +92 -1
  45. package/dist/commands/file-rename-preview-cache.js +125 -2
  46. package/dist/commands/file-rename-worker.js +54 -0
  47. package/dist/commands/file-rename.js +1053 -5
  48. package/dist/commands/file-text-edit-executor.js +205 -0
  49. package/dist/commands/find-importers.js +52 -1
  50. package/dist/commands/find-unused-imports.js +55 -1
  51. package/dist/commands/generate-docs-command.js +244 -6
  52. package/dist/commands/help-command.js +460 -7
  53. package/dist/commands/import-specifier-policy.js +391 -0
  54. package/dist/commands/imports-command.js +68 -1
  55. package/dist/commands/imports-rebase.js +1138 -0
  56. package/dist/commands/init-skill-usage.js +92 -3
  57. package/dist/commands/init-workspace.js +30 -1
  58. package/dist/commands/inspect-alias-candidates.js +413 -0
  59. package/dist/commands/inspect-cycles.js +811 -5
  60. package/dist/commands/inspect-direct-usages.js +98 -0
  61. package/dist/commands/inspect-duplicates-format.js +229 -0
  62. package/dist/commands/inspect-format-primitives.js +127 -0
  63. package/dist/commands/inspect-format.js +1590 -18
  64. package/dist/commands/inspect-graph.js +1553 -9
  65. package/dist/commands/inspect-imports.js +339 -2
  66. package/dist/commands/inspect-mixed-format.js +524 -0
  67. package/dist/commands/inspect-module-plan-format.js +216 -0
  68. package/dist/commands/inspect-module-plan-serialization.js +402 -0
  69. package/dist/commands/inspect-reference-path-format.js +157 -0
  70. package/dist/commands/inspect-request-values.js +599 -0
  71. package/dist/commands/inspect-selector-kind.js +21 -0
  72. package/dist/commands/inspect-selector.js +50 -0
  73. package/dist/commands/inspect-symbol-format.js +90 -0
  74. package/dist/commands/inspect-topology.js +435 -0
  75. package/dist/commands/inspect-tree.js +827 -5
  76. package/dist/commands/inspect-usages-detail.js +793 -0
  77. package/dist/commands/inspect-usages-evidence.js +31 -0
  78. package/dist/commands/inspect-usages-format.js +367 -0
  79. package/dist/commands/inspect.js +1450 -16
  80. package/dist/commands/internal-command.js +64 -0
  81. package/dist/commands/json-file-input.js +60 -1
  82. package/dist/commands/module-plan-cache.js +156 -2
  83. package/dist/commands/module-plan-standalone.js +208 -0
  84. package/dist/commands/module-plan-timeout.js +77 -1
  85. package/dist/commands/move-preview-cache.js +101 -2
  86. package/dist/commands/mutate-aggregate-output.js +996 -0
  87. package/dist/commands/mutate-child-execution.js +374 -0
  88. package/dist/commands/mutate-command.js +1394 -0
  89. package/dist/commands/mutate-declaration-output.js +313 -0
  90. package/dist/commands/mutate-domain-adapters.js +638 -0
  91. package/dist/commands/mutate-execution-cache.js +114 -0
  92. package/dist/commands/mutate-execution-status.js +598 -0
  93. package/dist/commands/mutate-failure-output.js +531 -0
  94. package/dist/commands/mutate-file-view.js +151 -0
  95. package/dist/commands/mutate-object-output.js +91 -0
  96. package/dist/commands/mutate-output-values.js +97 -0
  97. package/dist/commands/mutate-preview-cache.js +86 -0
  98. package/dist/commands/mutate-response-replay.js +153 -0
  99. package/dist/commands/mutate-result-projection.js +818 -0
  100. package/dist/commands/mutation-eta.js +28 -0
  101. package/dist/commands/mutation-execution-cache.js +140 -3
  102. package/dist/commands/mutation-recovery-journal.js +195 -0
  103. package/dist/commands/normalize-imports.js +1120 -4
  104. package/dist/commands/object-pack-command.js +546 -0
  105. package/dist/commands/object-pack-preview-cache.js +88 -0
  106. package/dist/commands/observability-command.js +47 -3
  107. package/dist/commands/ota-command.js +403 -2
  108. package/dist/commands/print-config.js +10 -1
  109. package/dist/commands/quick-read.js +1113 -11
  110. package/dist/commands/refactor-batch-builder.js +265 -1
  111. package/dist/commands/refactor-batch-execution-cache.js +85 -1
  112. package/dist/commands/refactor-batch-preview-cache.js +96 -2
  113. package/dist/commands/refactor-batch.js +461 -4
  114. package/dist/commands/rename-entities.js +794 -4
  115. package/dist/commands/rename-execution-cache.js +49 -1
  116. package/dist/commands/rename-input.js +22 -1
  117. package/dist/commands/rename-polling-policy.js +68 -0
  118. package/dist/commands/rename-preview-cache.js +96 -2
  119. package/dist/commands/result-view.js +993 -7
  120. package/dist/commands/reveal-command.js +445 -5
  121. package/dist/commands/selector-suggestions.js +93 -0
  122. package/dist/commands/session-workspace.js +1836 -31
  123. package/dist/commands/shared.js +2 -1
  124. package/dist/commands/skills-command.js +315 -0
  125. package/dist/commands/sync-command.js +59 -2
  126. package/dist/commands/worker-command.js +173 -1
  127. package/dist/commands/workspace-cache.js +55 -1
  128. package/dist/config/defaults.js +26 -1
  129. package/dist/config/env-vars.js +77 -1
  130. package/dist/config/glob-match.js +44 -1
  131. package/dist/config/import-rules.js +165 -1
  132. package/dist/config/local-config.js +293 -3
  133. package/dist/config/mutation-comments.js +51 -1
  134. package/dist/config/path-aliases.js +165 -1
  135. package/dist/config/path-display.js +84 -1
  136. package/dist/config/product-storage.js +37 -1
  137. package/dist/config/request-env.js +21 -0
  138. package/dist/config/request-routing-context.js +23 -0
  139. package/dist/config/resolve-command-alias.js +74 -1
  140. package/dist/config/resolve.js +24 -1
  141. package/dist/config/tsconfig-discovery.js +113 -1
  142. package/dist/config/typescript-preferences.js +131 -0
  143. package/dist/config/workspace-root.js +310 -3
  144. package/dist/config/workspace-state.js +254 -1
  145. package/dist/content/content-bundle.js +88 -1
  146. package/dist/diagnostics/module-plan-timeline.js +75 -2
  147. package/dist/diagnostics/readiness-text.js +45 -8
  148. package/dist/dsl/aib-dsl.js +838 -1
  149. package/dist/dsl/declaration-dsl.js +264 -1
  150. package/dist/dsl/file-move-to-dir-dsl.js +123 -1
  151. package/dist/dsl/file-refactor-batch-dsl.js +203 -1
  152. package/dist/dsl/file-rename-dsl.js +135 -1
  153. package/dist/dsl/mutate-dsl.js +746 -0
  154. package/dist/help/bootstrap.bash.md +176 -341
  155. package/dist/help/bootstrap.md +175 -340
  156. package/dist/help/bootstrap.pwsh.md +176 -341
  157. package/dist/help/docs/basics.md +1 -1
  158. package/dist/help/docs/config-setup.import-normalize.md +65 -65
  159. package/dist/help/docs/config-setup.import-rules.md +6 -5
  160. package/dist/help/docs/first-setup.md +6 -5
  161. package/dist/help/docs/help-protocol.md +4 -3
  162. package/dist/help/docs/import.base.md +38 -0
  163. package/dist/help/docs/import.rebase.md +85 -0
  164. package/dist/help/docs/inspect.aliasCandidates.md +39 -0
  165. package/dist/help/docs/inspect.code.md +1 -7
  166. package/dist/help/docs/inspect.file.md +10 -19
  167. package/dist/help/docs/inspect.graph.md +3 -17
  168. package/dist/help/{dsl/docs/inspect.md → docs/inspect.shared.md} +13 -12
  169. package/dist/help/docs/modulePlan.md +24 -28
  170. package/dist/help/docs/move.md +19 -22
  171. package/dist/help/{dsl/topics/file.move.md → docs/moveToDir.md} +36 -34
  172. package/dist/help/docs/mutate.mixed.md +34 -0
  173. package/dist/help/docs/mutation.shared.md +55 -0
  174. package/dist/help/docs/patterns.md +3 -12
  175. package/dist/help/docs/qr.md +12 -6
  176. package/dist/help/docs/quick-map.md +36 -24
  177. package/dist/help/docs/recipe.file-layout.md +10 -10
  178. package/dist/help/docs/recipe.import-boundary.md +92 -0
  179. package/dist/help/docs/recipe.safe-artifact-probing.md +68 -0
  180. package/dist/help/docs/recipe.unfamiliar-area.md +64 -0
  181. package/dist/help/docs/recipes.md +20 -0
  182. package/dist/help/docs/rename.md +19 -27
  183. package/dist/help/docs/renameFile.md +36 -0
  184. package/dist/help/docs/rules.md +26 -0
  185. package/dist/help/dsl/bootstrap.bash.md +176 -341
  186. package/dist/help/dsl/bootstrap.md +175 -340
  187. package/dist/help/dsl/bootstrap.pwsh.md +176 -341
  188. package/dist/help/dsl/docs/basics.md +1 -1
  189. package/dist/help/dsl/docs/config-setup.import-normalize.md +65 -65
  190. package/dist/help/dsl/docs/config-setup.import-rules.md +6 -5
  191. package/dist/help/dsl/docs/first-setup.md +6 -5
  192. package/dist/help/dsl/docs/help-protocol.md +4 -3
  193. package/dist/help/dsl/docs/import.base.md +38 -0
  194. package/dist/help/dsl/docs/import.rebase.md +85 -0
  195. package/dist/help/dsl/docs/inspect.aliasCandidates.md +39 -0
  196. package/dist/help/dsl/docs/inspect.code.md +1 -7
  197. package/dist/help/dsl/docs/inspect.file.md +10 -19
  198. package/dist/help/dsl/docs/inspect.graph.md +3 -17
  199. package/dist/help/{docs/inspect.md → dsl/docs/inspect.shared.md} +13 -12
  200. package/dist/help/dsl/docs/modulePlan.md +24 -28
  201. package/dist/help/dsl/docs/move.md +19 -22
  202. package/dist/help/{topics/file.move.md → dsl/docs/moveToDir.md} +36 -34
  203. package/dist/help/dsl/docs/mutate.mixed.md +34 -0
  204. package/dist/help/dsl/docs/mutation.shared.md +55 -0
  205. package/dist/help/dsl/docs/patterns.md +3 -12
  206. package/dist/help/dsl/docs/qr.md +12 -6
  207. package/dist/help/dsl/docs/quick-map.md +36 -24
  208. package/dist/help/dsl/docs/recipe.file-layout.md +10 -10
  209. package/dist/help/dsl/docs/recipe.import-boundary.md +92 -0
  210. package/dist/help/dsl/docs/recipe.safe-artifact-probing.md +68 -0
  211. package/dist/help/dsl/docs/recipe.unfamiliar-area.md +64 -0
  212. package/dist/help/dsl/docs/recipes.md +20 -0
  213. package/dist/help/dsl/docs/rename.md +19 -27
  214. package/dist/help/dsl/docs/renameFile.md +36 -0
  215. package/dist/help/dsl/docs/rules.md +26 -0
  216. package/dist/help/dsl/full.md +175 -340
  217. package/dist/help/dsl/help-index.md +48 -43
  218. package/dist/help/dsl/snippets/agents.md +2 -2
  219. package/dist/help/dsl/tokens/qr.inline.examples.md +1 -1
  220. package/dist/help/dsl/topics/basics.md +1 -1
  221. package/dist/help/dsl/topics/config-setup.import-normalize.md +65 -65
  222. package/dist/help/dsl/topics/config-setup.import-rules.md +6 -5
  223. package/dist/help/dsl/topics/first-setup.md +6 -5
  224. package/dist/help/dsl/topics/help-protocol.md +4 -3
  225. package/dist/help/dsl/topics/import.base.md +36 -0
  226. package/dist/help/dsl/topics/import.rebase.md +83 -0
  227. package/dist/help/dsl/topics/inspect.aliasCandidates.md +37 -0
  228. package/dist/help/dsl/topics/inspect.code.md +1 -7
  229. package/dist/help/dsl/topics/inspect.file.md +10 -19
  230. package/dist/help/dsl/topics/inspect.graph.md +3 -17
  231. package/dist/help/dsl/topics/{inspect.md → inspect.shared.md} +13 -12
  232. package/dist/help/dsl/topics/modulePlan.md +21 -26
  233. package/dist/help/dsl/topics/move.md +17 -18
  234. package/dist/help/{docs/file.move.md → dsl/topics/moveToDir.md} +33 -35
  235. package/dist/help/dsl/topics/mutate.mixed.md +32 -0
  236. package/dist/help/dsl/topics/mutation.shared.md +53 -0
  237. package/dist/help/dsl/topics/patterns.md +3 -12
  238. package/dist/help/dsl/topics/qr.md +12 -6
  239. package/dist/help/dsl/topics/quick-map.md +36 -24
  240. package/dist/help/dsl/topics/recipe.file-layout.md +10 -10
  241. package/dist/help/dsl/topics/recipe.import-boundary.md +90 -0
  242. package/dist/help/dsl/topics/recipe.safe-artifact-probing.md +66 -0
  243. package/dist/help/dsl/topics/recipe.unfamiliar-area.md +62 -0
  244. package/dist/help/dsl/topics/recipes.md +18 -0
  245. package/dist/help/dsl/topics/rename.md +15 -15
  246. package/dist/help/dsl/topics/renameFile.md +34 -0
  247. package/dist/help/dsl/topics/rules.md +24 -0
  248. package/dist/help/full.md +175 -340
  249. package/dist/help/help-index.md +48 -43
  250. package/dist/help/help-meta.json +98 -48
  251. package/dist/help/index.md +52 -20
  252. package/dist/help/snippets/agents.md +2 -2
  253. package/dist/help/tokens/qr.inline.examples.md +1 -1
  254. package/dist/help/topics/basics.md +1 -1
  255. package/dist/help/topics/config-setup.import-normalize.md +65 -65
  256. package/dist/help/topics/config-setup.import-rules.md +6 -5
  257. package/dist/help/topics/first-setup.md +6 -5
  258. package/dist/help/topics/help-protocol.md +4 -3
  259. package/dist/help/topics/import.base.md +36 -0
  260. package/dist/help/topics/import.rebase.md +83 -0
  261. package/dist/help/topics/inspect.aliasCandidates.md +37 -0
  262. package/dist/help/topics/inspect.code.md +1 -7
  263. package/dist/help/topics/inspect.file.md +10 -19
  264. package/dist/help/topics/inspect.graph.md +3 -17
  265. package/dist/help/topics/{inspect.md → inspect.shared.md} +13 -12
  266. package/dist/help/topics/modulePlan.md +21 -26
  267. package/dist/help/topics/move.md +17 -18
  268. package/dist/help/{dsl/docs/file.move.md → topics/moveToDir.md} +33 -35
  269. package/dist/help/topics/mutate.mixed.md +32 -0
  270. package/dist/help/topics/mutation.shared.md +53 -0
  271. package/dist/help/topics/patterns.md +3 -12
  272. package/dist/help/topics/qr.md +12 -6
  273. package/dist/help/topics/quick-map.md +36 -24
  274. package/dist/help/topics/recipe.file-layout.md +10 -10
  275. package/dist/help/topics/recipe.import-boundary.md +90 -0
  276. package/dist/help/topics/recipe.safe-artifact-probing.md +66 -0
  277. package/dist/help/topics/recipe.unfamiliar-area.md +62 -0
  278. package/dist/help/topics/recipes.md +18 -0
  279. package/dist/help/topics/rename.md +15 -15
  280. package/dist/help/topics/renameFile.md +34 -0
  281. package/dist/help/topics/rules.md +24 -0
  282. package/dist/host/capabilities.js +56 -1
  283. package/dist/imports/standalone-import-analysis.js +602 -0
  284. package/dist/imports/standalone-import-model.js +2 -0
  285. package/dist/imports/standalone-import-process.js +66 -0
  286. package/dist/imports/standalone-import-worker.js +27 -0
  287. package/dist/imports/standalone-ts-project.js +147 -0
  288. package/dist/inspect/inspect-duplicates-service.js +526 -0
  289. package/dist/inspect/inspect-reverse-module-closure.js +338 -0
  290. package/dist/inspect/inspect-source-ranges.js +82 -0
  291. package/dist/inspect/inspect-source-shape.js +649 -0
  292. package/dist/inspect/standalone-inspect-analysis.js +319 -0
  293. package/dist/inspect/standalone-inspect-model.js +9 -0
  294. package/dist/inspect/standalone-inspect-process.js +55 -0
  295. package/dist/inspect/standalone-inspect-usages.js +274 -0
  296. package/dist/inspect/standalone-inspect-worker.js +13 -0
  297. package/dist/metrics/central-metrics.js +101 -2
  298. package/dist/mutation/concrete-edit-plan.js +157 -0
  299. package/dist/mutation/exports-star-collapse-preview.js +361 -0
  300. package/dist/mutation/exports-star-expand-apply.js +373 -0
  301. package/dist/mutation/exports-star-expand-preview.js +807 -0
  302. package/dist/mutation/file-impact-scan.js +182 -0
  303. package/dist/mutation/file-mutation-discovery.js +674 -0
  304. package/dist/mutation/file-mutation-eta.js +99 -0
  305. package/dist/mutation/file-mutation-standalone-apply.js +584 -0
  306. package/dist/mutation/file-mutation-standalone-planner.js +500 -0
  307. package/dist/mutation/file-mutation-tsserver-session.js +473 -0
  308. package/dist/mutation/mutation-estimate.js +45 -0
  309. package/dist/mutation/mutation-plan.js +467 -0
  310. package/dist/mutation/object-mutation-foundation.js +2 -0
  311. package/dist/mutation/object-mutation-partition.js +148 -0
  312. package/dist/mutation/object-pack-semantic-apply.js +507 -0
  313. package/dist/mutation/object-pack-semantic-preview.js +984 -0
  314. package/dist/mutation/object-unpack-semantic-preview.js +993 -0
  315. package/dist/mutation/package-manifest-impact.js +176 -0
  316. package/dist/mutation/rename-owner-worker-child.js +37 -0
  317. package/dist/mutation/rename-owner-worker.js +122 -0
  318. package/dist/mutation/runtime-cycle-query.js +66 -0
  319. package/dist/mutation/semantic-execution-progress.js +63 -0
  320. package/dist/mutation/semantic-export-index.js +474 -0
  321. package/dist/mutation/semantic-impact-scan.js +434 -0
  322. package/dist/mutation/semantic-model.js +2 -0
  323. package/dist/mutation/semantic-move-best-effort-planner.js +209 -0
  324. package/dist/mutation/semantic-move-config-worker-child.js +61 -0
  325. package/dist/mutation/semantic-move-config-worker.js +449 -0
  326. package/dist/mutation/semantic-move-declarations.js +94 -0
  327. package/dist/mutation/semantic-move-metrics.js +119 -0
  328. package/dist/mutation/semantic-move-model.js +2 -0
  329. package/dist/mutation/semantic-move-owner-authority.js +122 -0
  330. package/dist/mutation/semantic-move-owner-candidates.js +300 -0
  331. package/dist/mutation/semantic-move-owner-divergence-harness.js +474 -0
  332. package/dist/mutation/semantic-move-owner-divergence-runner.js +162 -0
  333. package/dist/mutation/semantic-move-plan-hash.js +56 -0
  334. package/dist/mutation/semantic-move-policy.js +360 -0
  335. package/dist/mutation/semantic-move-process.js +218 -0
  336. package/dist/mutation/semantic-move-provider-diagnostics.js +27 -0
  337. package/dist/mutation/semantic-move-standalone-engine.js +919 -0
  338. package/dist/mutation/semantic-move-standalone-planner.js +1553 -0
  339. package/dist/mutation/semantic-move-transaction.js +639 -0
  340. package/dist/mutation/semantic-mutation-engine.js +478 -0
  341. package/dist/mutation/semantic-mutation-runtime.js +521 -0
  342. package/dist/mutation/semantic-planner-retry.js +26 -0
  343. package/dist/mutation/semantic-program-roots.js +69 -0
  344. package/dist/mutation/semantic-rename-commonjs.js +229 -0
  345. package/dist/mutation/semantic-rename-config-worker-child.js +46 -0
  346. package/dist/mutation/semantic-rename-config-worker.js +498 -0
  347. package/dist/mutation/semantic-rename-locations.js +192 -0
  348. package/dist/mutation/semantic-rename-model.js +2 -0
  349. package/dist/mutation/semantic-rename-process.js +210 -0
  350. package/dist/mutation/semantic-rename-standalone-engine.js +302 -0
  351. package/dist/mutation/semantic-rename-standalone-planner.js +567 -0
  352. package/dist/mutation/semantic-rename-transaction.js +333 -0
  353. package/dist/mutation/semantic-unused-import-cleanup.js +248 -0
  354. package/dist/mutation/semantic-worker-retry.js +40 -0
  355. package/dist/mutation/semantic-workspace.js +804 -0
  356. package/dist/mutation/targeted-import-canonicalizer.js +359 -0
  357. package/dist/observability/config.js +206 -1
  358. package/dist/observability/context.js +59 -1
  359. package/dist/observability/failure-snapshot.js +124 -2
  360. package/dist/observability/recent.js +63 -2
  361. package/dist/payloads/read-stdin-json.js +212 -1
  362. package/dist/rg-wrapper/core.js +714 -6
  363. package/dist/rg-wrapper/options.js +125 -1
  364. package/dist/rtk-wrapper/core.js +144 -2
  365. package/dist/rtk-wrapper/git-safety.js +203 -0
  366. package/dist/rtk-wrapper/output-adapter.js +106 -0
  367. package/dist/runtime/buffered-process.js +114 -0
  368. package/dist/runtime/bundled-node.js +97 -1
  369. package/dist/runtime/command-lifecycle.js +2 -0
  370. package/dist/runtime/input-source.js +238 -1
  371. package/dist/runtime/node-cli-identity.js +37 -0
  372. package/dist/runtime/run-command.js +191 -1
  373. package/dist/selectors/parse-entities.js +84 -1
  374. package/dist/semantic/semantic-context-pool.js +830 -0
  375. package/dist/semantic/semantic-context-provider.js +416 -0
  376. package/dist/semantic/semantic-resident-admission.js +38 -0
  377. package/dist/semantic/semantic-worker-child.js +40 -0
  378. package/dist/semantic/semantic-worker-manager.js +460 -0
  379. package/dist/semantic/semantic-worker-protocol.js +2 -0
  380. package/dist/semantic/semantic-worker-runtime.js +38 -0
  381. package/dist/semantic/workspace-semantic-context-pools.js +136 -0
  382. package/dist/session/client.js +359 -1
  383. package/dist/session/daemon-state.js +185 -2
  384. package/dist/session/external-tool-coordinator.js +88 -0
  385. package/dist/session/external-tool-request.js +52 -0
  386. package/dist/session/lane-owner.js +116 -0
  387. package/dist/session/paths.js +71 -1
  388. package/dist/session/runtime-lifecycle.js +225 -0
  389. package/dist/session/runtime-shutdown.js +95 -0
  390. package/dist/session/server.js +1194 -7
  391. package/dist/session/session-health.js +27 -0
  392. package/dist/shared/agent-text.js +29 -1
  393. package/dist/shared/errors.js +496 -30
  394. package/dist/shared/event-loop.js +6 -1
  395. package/dist/shared/hints.js +37 -1
  396. package/dist/shared/metrics.js +43 -1
  397. package/dist/shared/presentation.js +69 -4
  398. package/dist/shared/stdin-examples.js +77 -1
  399. package/dist/shared/stdout.js +6 -2
  400. package/dist/shared/types.js +23 -1
  401. package/dist/tool-runtime/runtime-tools.js +120 -1
  402. package/dist/topology/availability.js +663 -0
  403. package/dist/topology/cache.js +130 -0
  404. package/dist/topology/candidates.js +372 -0
  405. package/dist/topology/core.js +903 -0
  406. package/dist/topology/dependency-snapshot.js +189 -0
  407. package/dist/topology/model.js +2 -0
  408. package/dist/topology/scope.js +100 -0
  409. package/dist/topology/ts-oracle-batch.js +529 -0
  410. package/dist/topology/ts-oracle-host.js +69 -0
  411. package/dist/topology/ts-oracle-model.js +2 -0
  412. package/dist/topology/ts-oracle.js +224 -0
  413. package/dist/topology/tsconfig-loader.js +105 -0
  414. package/dist/topology/workspace-project-index.js +542 -0
  415. package/dist/tracing/config.js +192 -2
  416. package/dist/tracing/failure-summary.js +100 -0
  417. package/dist/tracing/trace.js +318 -5
  418. package/dist/tsc-wrapper/core.js +697 -0
  419. package/dist/workers/control-plane/aib-control-plane-worker.cjs +32 -32
  420. package/dist/workers/control-plane/client-config.default.json +3 -3
  421. package/dist/workers/lexical-worker-child.js +27 -0
  422. package/dist/workers/lexical-worker-manager.js +394 -0
  423. package/dist/workers/lexical-worker-protocol.js +2 -0
  424. package/dist/workers/lexical-worker-runtime.js +25 -0
  425. package/dist/workers/owned-one-shot-process.js +115 -0
  426. package/dist/workers/product-storage.js +23 -1
  427. package/dist/workers/registry.js +241 -1
  428. package/package.json +8 -13
  429. package/scripts/postinstall.cjs +29 -29
  430. package/scripts/provision-runtime.cjs +411 -459
  431. package/dist/client/http-client.js +0 -1
  432. package/dist/client/transport-options.js +0 -1
  433. package/dist/client/websocket-client.js +0 -1
  434. package/dist/commands/entity-resolution.js +0 -1
  435. package/dist/commands/file-command.js +0 -1
  436. package/dist/commands/host-command.js +0 -1
  437. package/dist/commands/inspect-symbol-query.js +0 -1
  438. package/dist/commands/list-instances.js +0 -1
  439. package/dist/commands/module-plan-command.js +0 -1
  440. package/dist/commands/move-command.js +0 -1
  441. package/dist/commands/move-to-file.js +0 -2
  442. package/dist/commands/ping.js +0 -1
  443. package/dist/commands/refactor-command.js +0 -1
  444. package/dist/commands/rename-command.js +0 -1
  445. package/dist/commands/runtime-command.js +0 -4
  446. package/dist/commands/runtime-info.js +0 -1
  447. package/dist/commands/validate-module-plan.js +0 -2
  448. package/dist/compatibility/policy.js +0 -1
  449. package/dist/config/auto-start-ide.js +0 -1
  450. package/dist/discovery/registry.js +0 -1
  451. package/dist/discovery/select-instance.js +0 -1
  452. package/dist/help/docs/file.rename.md +0 -35
  453. package/dist/help/docs/mutation.md +0 -60
  454. package/dist/help/docs/refactor.batch.md +0 -44
  455. package/dist/help/dsl/docs/file.rename.md +0 -35
  456. package/dist/help/dsl/docs/mutation.md +0 -60
  457. package/dist/help/dsl/docs/refactor.batch.md +0 -44
  458. package/dist/help/dsl/topics/file.rename.md +0 -33
  459. package/dist/help/dsl/topics/mutation.md +0 -58
  460. package/dist/help/dsl/topics/refactor.batch.md +0 -33
  461. package/dist/help/topics/file.rename.md +0 -33
  462. package/dist/help/topics/mutation.md +0 -58
  463. package/dist/help/topics/refactor.batch.md +0 -33
  464. package/dist/ide-launch/common.cjs +0 -162
  465. package/dist/managed-host/extension-vsix-resolver.js +0 -1
  466. package/dist/managed-host/manage-serve-web-host.cjs +0 -141
  467. package/dist/managed-host/serve-web-autostart.js +0 -1
  468. package/dist/managed-host/serve-web-host.cjs +0 -2115
  469. package/dist/runtime/managed-runtime-provisioning.js +0 -1
  470. package/dist/shared/diagnostic-catalog.js +0 -1
  471. package/dist/shared/diagnostics.js +0 -1
  472. package/dist/shared/operations.js +0 -1
  473. package/dist/shared/protocol.js +0 -1
  474. package/dist/shared/routes.js +0 -1
  475. package/extension/vscode-refactor-bridge-extension.vsix +0 -0
  476. package/runtimes/launcher/linux-x64/aib +0 -0
  477. package/runtimes/launcher/win-x64/aib.exe +0 -0
@@ -0,0 +1,567 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.planStandaloneSemanticRename = planStandaloneSemanticRename;
40
+ const crypto = __importStar(require("node:crypto"));
41
+ const fs = __importStar(require("node:fs"));
42
+ const path = __importStar(require("node:path"));
43
+ const typescript_1 = __importDefault(require("typescript"));
44
+ const file_mutation_discovery_1 = require("./file-mutation-discovery");
45
+ const semantic_rename_locations_1 = require("./semantic-rename-locations");
46
+ const semantic_rename_process_1 = require("./semantic-rename-process");
47
+ const semantic_program_roots_1 = require("./semantic-program-roots");
48
+ const DEFAULT_DEADLINE_MS = 120_000;
49
+ const MAX_CONFIGS = 32;
50
+ async function planStandaloneSemanticRename(input, dependencies = {
51
+ discover: file_mutation_discovery_1.discoverFileMutationConsumers,
52
+ fingerprint: file_mutation_discovery_1.computeFileMutationWorkspaceFingerprint,
53
+ runConfig: semantic_rename_process_1.runSemanticRenameConfigWorker
54
+ }) {
55
+ const startedAt = Date.now();
56
+ const root = path.resolve(input.workspaceRoot);
57
+ const discover = input.semanticContextPool
58
+ ? (request) => (0, file_mutation_discovery_1.discoverFileMutationConsumersWithProjectIndexLease)(input.semanticContextPool, request)
59
+ : dependencies.discover;
60
+ const fingerprint = input.semanticContextPool
61
+ ? (workspaceRoot) => input.semanticContextPool.withWorkspaceProjectIndex((index) => (0, file_mutation_discovery_1.computeFileMutationWorkspaceFingerprintWithProjectIndex)(index, workspaceRoot))
62
+ : dependencies.fingerprint;
63
+ const sourceFile = path.resolve(root, input.sourceFile);
64
+ const emptyDiscovery = discoverySummary(null);
65
+ if (!isInside(root, sourceFile) || !fs.existsSync(sourceFile) || !fs.statSync(sourceFile).isFile()) {
66
+ return incomplete("SEMANTIC_RENAME_SOURCE_INVALID", "Rename source is missing or outside the workspace.", root, sourceFile, emptyDiscovery, startedAt);
67
+ }
68
+ let sourceText;
69
+ try {
70
+ sourceText = fs.readFileSync(sourceFile, "utf8");
71
+ }
72
+ catch (error) {
73
+ return incomplete("SEMANTIC_RENAME_SOURCE_UNREADABLE", errorMessage(error), root, sourceFile, emptyDiscovery, startedAt);
74
+ }
75
+ const intents = buildIntents(sourceFile, sourceText, input.intents);
76
+ if (!intents.ok)
77
+ return incomplete(intents.code, intents.error, root, sourceFile, emptyDiscovery, startedAt);
78
+ let discovery;
79
+ try {
80
+ discovery = input.discovery ?? discover({ workspaceRoot: root, sourceFiles: [sourceFile] });
81
+ }
82
+ catch (error) {
83
+ return incomplete("SEMANTIC_RENAME_DISCOVERY_FAILED", errorMessage(error), root, sourceFile, emptyDiscovery, startedAt);
84
+ }
85
+ const summary = discoverySummary(discovery);
86
+ if (!discovery.complete || !discovery.sourceFiles.some((file) => samePath(file, sourceFile))) {
87
+ return incomplete("SEMANTIC_RENAME_DISCOVERY_INCOMPLETE", discovery.uncertainties.map((item) => `${item.kind}:${item.file}:${item.moduleSpecifier}`).join("; ") || "Neutral module discovery is incomplete.", root, sourceFile, summary, startedAt);
88
+ }
89
+ if (discovery.ownerConfigs.length === 0 || discovery.ownerConfigs.length > MAX_CONFIGS) {
90
+ return incomplete("SEMANTIC_RENAME_OWNER_SET_UNSUPPORTED", `Expected 1-${MAX_CONFIGS} exact owner configs, found ${discovery.ownerConfigs.length}.`, root, sourceFile, summary, startedAt);
91
+ }
92
+ let initialFingerprint;
93
+ try {
94
+ initialFingerprint = fingerprint(root);
95
+ }
96
+ catch (error) {
97
+ return incomplete("SEMANTIC_RENAME_SNAPSHOT_UNREADABLE", errorMessage(error), root, sourceFile, summary, startedAt);
98
+ }
99
+ if (initialFingerprint !== discovery.workspaceFingerprint) {
100
+ return incomplete("SEMANTIC_RENAME_DISCOVERY_STALE", "Workspace changed after neutral discovery.", root, sourceFile, summary, startedAt);
101
+ }
102
+ const evidenceFiles = uniquePaths([sourceFile, ...discovery.consumerFiles]);
103
+ const snapshotHash = hashFiles(evidenceFiles);
104
+ const starBoundaries = buildStarBoundaries(discovery.edges, intents.intents, sourceFile, sourceText);
105
+ if (!starBoundaries.ok) {
106
+ return incomplete(starBoundaries.code, starBoundaries.error, root, sourceFile, summary, startedAt, snapshotHash);
107
+ }
108
+ const stableAliases = collectStableAliasIntentIds(discovery.edges, intents.intents, sourceFile, sourceText);
109
+ const workerPath = input.testing?.configWorkerPath ?? path.join(__dirname, "semantic-rename-config-worker-child.js");
110
+ const results = [];
111
+ const workerEvidence = [];
112
+ for (const configFilePath of discovery.ownerConfigs) {
113
+ const request = {
114
+ type: "semanticRenameConfig",
115
+ id: crypto.randomUUID(),
116
+ configFilePath: path.normalize(configFilePath),
117
+ sourceFile,
118
+ sourceText,
119
+ intents: intents.intents,
120
+ preserveIntentIds: [...stableAliases],
121
+ starBoundaries: starBoundaries.boundaries,
122
+ programRootFiles: (0, semantic_program_roots_1.focusedSemanticProgramRootFiles)({
123
+ discovery,
124
+ configFilePath,
125
+ requiredFiles: [sourceFile]
126
+ })
127
+ };
128
+ let outcome;
129
+ try {
130
+ outcome = await dependencies.runConfig({
131
+ modulePath: workerPath,
132
+ request,
133
+ deadlineMs: input.deadlineMs ?? DEFAULT_DEADLINE_MS
134
+ });
135
+ }
136
+ catch (error) {
137
+ return incomplete(readErrorCode(error) ?? "SEMANTIC_RENAME_CONFIG_WORKER_FAILED", errorMessage(error), root, sourceFile, summary, startedAt, snapshotHash, workerEvidence);
138
+ }
139
+ workerEvidence.push({
140
+ configFilePath: outcome.result.configFilePath,
141
+ pid: outcome.result.pid,
142
+ rssMiB: outcome.result.rssMiB,
143
+ durationMs: outcome.durationMs,
144
+ terminationConfirmed: outcome.terminationConfirmed
145
+ });
146
+ const collision = outcome.result.collisionProofs.find((proof) => proof.status === "collision");
147
+ const unresolvedCollision = outcome.result.collisionProofs.find((proof) => proof.status === "unresolved");
148
+ if (collision || unresolvedCollision) {
149
+ return incomplete(collision ? "SEMANTIC_RENAME_TARGET_COLLISION" : "SEMANTIC_RENAME_OWNER_DIVERGENCE", (collision ?? unresolvedCollision).error ?? `Exact owner ${configFilePath} could not prove the renamed bindings.`, root, sourceFile, summary, startedAt, snapshotHash, workerEvidence, collision?.blocker ? [collision.blocker] : []);
150
+ }
151
+ const commonJsBlocker = outcome.result.commonJsBlockers[0];
152
+ if (commonJsBlocker) {
153
+ return incomplete("SEMANTIC_RENAME_COMMONJS_REFERENCE_UNPROVEN", `A raw CommonJS reference could not be proven safe in ${commonJsBlocker.fileName}.`, root, sourceFile, summary, startedAt, snapshotHash, workerEvidence, [commonJsBlocker]);
154
+ }
155
+ if (!outcome.terminationConfirmed || !outcome.result.ok || !outcome.result.containsSource ||
156
+ outcome.result.intents.length !== intents.intents.length) {
157
+ return incomplete("SEMANTIC_RENAME_OWNER_PROOF_FAILED", outcome.result.error ?? `Exact owner ${configFilePath} could not prove every rename intent.`, root, sourceFile, summary, startedAt, snapshotHash, workerEvidence);
158
+ }
159
+ results.push(outcome.result);
160
+ }
161
+ const merged = mergeConfigEvidence(intents.intents, results, stableAliases, discovery.fileOwners);
162
+ if (!merged.ok) {
163
+ return incomplete(merged.code, merged.error, root, sourceFile, summary, startedAt, snapshotHash, workerEvidence);
164
+ }
165
+ if (!verifyStarProofs(starBoundaries.boundaries, discovery, results)) {
166
+ return incomplete("SEMANTIC_RENAME_STAR_PROOF_FAILED", "An exact export-star owner did not prove the requested symbol projection.", root, sourceFile, summary, startedAt, snapshotHash, workerEvidence);
167
+ }
168
+ const edits = buildCombinedEdits(merged.intents);
169
+ if (!edits.ok) {
170
+ return incomplete(edits.code, edits.error, root, sourceFile, summary, startedAt, snapshotHash, workerEvidence);
171
+ }
172
+ if (!verifyBeforeHashes(results, edits.edits.map((item) => item.fileName))) {
173
+ return incomplete("SEMANTIC_RENAME_EDIT_SNAPSHOT_CHANGED", "A config or edited file changed during planning.", root, sourceFile, summary, startedAt, snapshotHash, workerEvidence);
174
+ }
175
+ let finalFingerprint;
176
+ try {
177
+ finalFingerprint = fingerprint(root);
178
+ }
179
+ catch (error) {
180
+ return incomplete("SEMANTIC_RENAME_SNAPSHOT_UNREADABLE", errorMessage(error), root, sourceFile, summary, startedAt, snapshotHash, workerEvidence);
181
+ }
182
+ if (finalFingerprint !== discovery.workspaceFingerprint || hashFiles(evidenceFiles) !== snapshotHash) {
183
+ return incomplete("SEMANTIC_RENAME_SNAPSHOT_CHANGED", "Workspace files, configs, packages, or candidate consumers changed during planning.", root, sourceFile, summary, startedAt, snapshotHash, workerEvidence);
184
+ }
185
+ return {
186
+ complete: true,
187
+ code: "SEMANTIC_RENAME_PLAN_COMPLETE",
188
+ workspaceRoot: root,
189
+ sourceFile,
190
+ intents: merged.intents,
191
+ edits: edits.edits,
192
+ blockers: [],
193
+ discovery: summary,
194
+ configWorkers: workerEvidence,
195
+ snapshotHash,
196
+ totalMs: Date.now() - startedAt
197
+ };
198
+ }
199
+ function buildIntents(sourceFile, sourceText, rawIntents) {
200
+ if (rawIntents.length === 0)
201
+ return { ok: false, code: "SEMANTIC_RENAME_INTENTS_REQUIRED", error: "At least one rename intent is required." };
202
+ const oldNames = rawIntents.map((item) => item.oldName);
203
+ const newNames = rawIntents.map((item) => item.newName);
204
+ if (new Set(oldNames).size !== rawIntents.length || new Set(newNames).size !== rawIntents.length ||
205
+ oldNames.some((name) => newNames.includes(name))) {
206
+ return { ok: false, code: "SEMANTIC_RENAME_INTENT_CONFLICT", error: "Rename intent names must be unique and non-cyclic." };
207
+ }
208
+ if (rawIntents.some((item) => !isValidIdentifierName(item.newName))) {
209
+ return { ok: false, code: "SEMANTIC_RENAME_NAME_INVALID", error: "Every rename target must be a TypeScript identifier." };
210
+ }
211
+ const source = typescript_1.default.createSourceFile(sourceFile, sourceText, typescript_1.default.ScriptTarget.Latest, true);
212
+ const declarations = collectTopLevelDeclarations(source);
213
+ const intents = [];
214
+ for (const [index, item] of rawIntents.entries()) {
215
+ const candidates = declarations.get(item.oldName) ?? [];
216
+ const position = selectDeclarationPosition(candidates);
217
+ if (position === null) {
218
+ return {
219
+ ok: false,
220
+ code: candidates.length === 0 ? "SEMANTIC_RENAME_SYMBOL_NOT_FOUND" : "SEMANTIC_RENAME_SYMBOL_AMBIGUOUS",
221
+ error: `Expected one top-level declaration or one function overload group for ${item.oldName}, found ${candidates.length}.`
222
+ };
223
+ }
224
+ intents.push({ id: item.id ?? `rename-${index + 1}`, oldName: item.oldName, newName: item.newName, position });
225
+ }
226
+ return { ok: true, intents };
227
+ }
228
+ function collectTopLevelDeclarations(source) {
229
+ const result = new Map();
230
+ const add = (name, kind, hasBody = false) => {
231
+ const values = result.get(name.text) ?? [];
232
+ values.push({ position: name.getStart(source), kind, hasBody });
233
+ result.set(name.text, values);
234
+ };
235
+ for (const statement of source.statements) {
236
+ if (typescript_1.default.isVariableStatement(statement)) {
237
+ for (const declaration of statement.declarationList.declarations) {
238
+ if (typescript_1.default.isIdentifier(declaration.name))
239
+ add(declaration.name, "other");
240
+ }
241
+ continue;
242
+ }
243
+ if (typescript_1.default.isFunctionDeclaration(statement) && statement.name) {
244
+ add(statement.name, "function", statement.body !== undefined);
245
+ continue;
246
+ }
247
+ if ((typescript_1.default.isClassDeclaration(statement) || typescript_1.default.isInterfaceDeclaration(statement) || typescript_1.default.isTypeAliasDeclaration(statement) ||
248
+ typescript_1.default.isEnumDeclaration(statement) || typescript_1.default.isModuleDeclaration(statement)) && statement.name && typescript_1.default.isIdentifier(statement.name)) {
249
+ add(statement.name, "other");
250
+ }
251
+ }
252
+ return result;
253
+ }
254
+ function selectDeclarationPosition(candidates) {
255
+ if (candidates.length === 1)
256
+ return candidates[0].position;
257
+ if (candidates.length === 0 || candidates.some((candidate) => candidate.kind !== "function"))
258
+ return null;
259
+ const implementations = candidates.filter((candidate) => candidate.hasBody);
260
+ if (implementations.length > 1)
261
+ return null;
262
+ return (implementations[0] ?? candidates[0]).position;
263
+ }
264
+ function buildStarBoundaries(edges, intents, sourceFile, sourceText) {
265
+ const exported = exportedDeclarationNames(sourceFile, sourceText);
266
+ const boundaries = [];
267
+ for (const edge of edges) {
268
+ if (edge.kind !== "exportStar")
269
+ continue;
270
+ const typeOnly = readExportStarTypeOnly(edge);
271
+ if (typeOnly === null) {
272
+ return { ok: false, code: "SEMANTIC_RENAME_STAR_SNAPSHOT_INVALID", error: `Export-star syntax changed in ${edge.fromFile}.` };
273
+ }
274
+ for (const intent of intents) {
275
+ if (!exported.has(intent.oldName))
276
+ continue;
277
+ boundaries.push({
278
+ id: `${intent.id}:${pathKey(edge.fromFile)}:${edge.specifierStart}`,
279
+ intentId: intent.id,
280
+ file: path.normalize(edge.fromFile),
281
+ targetFile: path.normalize(edge.targetFile),
282
+ start: edge.specifierStart,
283
+ oldName: intent.oldName,
284
+ newName: intent.newName,
285
+ typeOnly
286
+ });
287
+ }
288
+ }
289
+ return { ok: true, boundaries };
290
+ }
291
+ function exportedDeclarationNames(sourceFile, sourceText) {
292
+ const source = typescript_1.default.createSourceFile(sourceFile, sourceText, typescript_1.default.ScriptTarget.Latest, true);
293
+ const result = new Set();
294
+ for (const statement of source.statements) {
295
+ const modifiers = typescript_1.default.canHaveModifiers(statement) ? typescript_1.default.getModifiers(statement) ?? [] : [];
296
+ const exported = modifiers.some((modifier) => modifier.kind === typescript_1.default.SyntaxKind.ExportKeyword);
297
+ const declarationName = readTopLevelDeclarationName(statement);
298
+ if (exported && declarationName)
299
+ result.add(declarationName);
300
+ if (typescript_1.default.isVariableStatement(statement) && exported) {
301
+ for (const declaration of statement.declarationList.declarations) {
302
+ if (typescript_1.default.isIdentifier(declaration.name))
303
+ result.add(declaration.name.text);
304
+ }
305
+ }
306
+ if (typescript_1.default.isExportDeclaration(statement) && !statement.moduleSpecifier && statement.exportClause && typescript_1.default.isNamedExports(statement.exportClause)) {
307
+ for (const element of statement.exportClause.elements)
308
+ result.add(element.name.text);
309
+ }
310
+ }
311
+ return result;
312
+ }
313
+ function readExportStarTypeOnly(edge) {
314
+ try {
315
+ const text = fs.readFileSync(edge.fromFile, "utf8");
316
+ const source = typescript_1.default.createSourceFile(edge.fromFile, text, typescript_1.default.ScriptTarget.Latest, true);
317
+ const statement = source.statements.find((item) => typescript_1.default.isExportDeclaration(item) && !item.exportClause && item.moduleSpecifier !== undefined &&
318
+ typescript_1.default.isStringLiteralLike(item.moduleSpecifier) && item.moduleSpecifier.getStart(source) + 1 === edge.specifierStart);
319
+ return statement?.isTypeOnly ?? null;
320
+ }
321
+ catch {
322
+ return null;
323
+ }
324
+ }
325
+ function collectStableAliasIntentIds(edges, intents, sourceFile, sourceText) {
326
+ const stable = new Set();
327
+ const source = typescript_1.default.createSourceFile(sourceFile, sourceText, typescript_1.default.ScriptTarget.Latest, true);
328
+ for (const statement of source.statements) {
329
+ if (!typescript_1.default.isExportDeclaration(statement) || statement.moduleSpecifier || !statement.exportClause || !typescript_1.default.isNamedExports(statement.exportClause))
330
+ continue;
331
+ for (const intent of intents) {
332
+ if (statement.exportClause.elements.some((element) => (element.propertyName?.text ?? element.name.text) === intent.oldName && element.name.text !== intent.oldName))
333
+ stable.add(intent.id);
334
+ }
335
+ }
336
+ for (const edge of edges) {
337
+ if (edge.kind !== "reexport")
338
+ continue;
339
+ try {
340
+ const text = fs.readFileSync(edge.fromFile, "utf8");
341
+ const source = typescript_1.default.createSourceFile(edge.fromFile, text, typescript_1.default.ScriptTarget.Latest, true);
342
+ const statement = source.statements.find((item) => typescript_1.default.isExportDeclaration(item) && item.moduleSpecifier !== undefined && typescript_1.default.isStringLiteralLike(item.moduleSpecifier) &&
343
+ item.moduleSpecifier.getStart(source) + 1 === edge.specifierStart);
344
+ if (!statement?.exportClause || !typescript_1.default.isNamedExports(statement.exportClause))
345
+ continue;
346
+ for (const intent of intents) {
347
+ if (statement.exportClause.elements.some((element) => (element.propertyName?.text ?? element.name.text) === intent.oldName && element.name.text !== intent.oldName))
348
+ stable.add(intent.id);
349
+ }
350
+ }
351
+ catch { /* discovery/fingerprint validation owns unreadable files */ }
352
+ }
353
+ return stable;
354
+ }
355
+ function mergeConfigEvidence(intents, results, stableAliasIntentIds, fileOwners) {
356
+ const resultMap = new Map(results.map((result) => [pathKey(result.configFilePath), result]));
357
+ const ownerMap = new Map(fileOwners.map((item) => [pathKey(item.file), item.ownerConfigs.map(pathKey)]));
358
+ const output = [];
359
+ for (const intent of intents) {
360
+ const locations = [];
361
+ const observations = new Map();
362
+ for (const result of results) {
363
+ const evidence = result.intents.find((item) => item.id === intent.id);
364
+ if (!evidence?.canRename)
365
+ return { ok: false, code: "SEMANTIC_RENAME_OWNER_PROOF_FAILED", error: `${result.configFilePath} could not rename ${intent.oldName}.` };
366
+ const preserve = new Set(evidence.preserveLocations.map(locationSpanKey));
367
+ const projectLocations = stableAliasIntentIds.has(intent.id)
368
+ ? evidence.completeLocations.filter((location) => preserve.has(locationSpanKey(location)))
369
+ : evidence.completeLocations;
370
+ locations.push(...projectLocations);
371
+ observations.set(pathKey(result.configFilePath), new Set(projectLocations.map(locationSpanKey)));
372
+ }
373
+ const merged = mergeLocations(locations);
374
+ if (!merged.ok)
375
+ return merged;
376
+ for (const location of merged.locations) {
377
+ const owners = ownerMap.get(pathKey(location.fileName));
378
+ if (!owners || owners.length === 0) {
379
+ return { ok: false, code: "SEMANTIC_RENAME_OWNER_DIVERGENCE", error: `No exact owner evidence exists for ${location.fileName}.` };
380
+ }
381
+ for (const owner of owners) {
382
+ const observation = observations.get(owner);
383
+ if (!resultMap.has(owner) || !observation?.has(locationSpanKey(location))) {
384
+ return {
385
+ ok: false,
386
+ code: "SEMANTIC_RENAME_OWNER_DIVERGENCE",
387
+ error: `${owner} disagrees on ${location.fileName}:${location.start}:${location.length}.`
388
+ };
389
+ }
390
+ }
391
+ }
392
+ output.push({ id: intent.id, oldName: intent.oldName, newName: intent.newName, locations: merged.locations });
393
+ }
394
+ if (hasInterIntentOverlap(output)) {
395
+ return { ok: false, code: "SEMANTIC_RENAME_INTENT_OVERLAP", error: "Rename intents produce overlapping text spans." };
396
+ }
397
+ return { ok: true, intents: output };
398
+ }
399
+ function mergeLocations(locations) {
400
+ const merged = [];
401
+ const replacements = new Map();
402
+ const seen = new Set();
403
+ for (const location of locations) {
404
+ const normalized = { ...location, fileName: path.normalize(location.fileName) };
405
+ const span = locationSpanKey(normalized);
406
+ const shape = `${normalized.prefixText ?? ""}\0${normalized.suffixText ?? ""}`;
407
+ const previous = replacements.get(span);
408
+ if (previous !== undefined && previous !== shape) {
409
+ return { ok: false, code: "SEMANTIC_RENAME_LOCATION_CONFLICT", error: `Conflicting replacement shape at ${span}.` };
410
+ }
411
+ replacements.set(span, shape);
412
+ const exact = `${span}:${shape}`;
413
+ if (!seen.has(exact)) {
414
+ seen.add(exact);
415
+ merged.push(normalized);
416
+ }
417
+ }
418
+ return { ok: true, locations: merged.sort(compareLocations) };
419
+ }
420
+ function buildCombinedEdits(intents) {
421
+ const byFile = new Map();
422
+ for (const intent of intents) {
423
+ for (const location of intent.locations) {
424
+ const text = fs.readFileSync(location.fileName, "utf8");
425
+ if (location.start < 0 || location.length <= 0 || location.start + location.length > text.length) {
426
+ return { ok: false, code: "SEMANTIC_RENAME_EDIT_SPAN_INVALID", error: `Invalid rename span in ${location.fileName}.` };
427
+ }
428
+ const current = byFile.get(path.normalize(location.fileName)) ?? [];
429
+ current.push({
430
+ span: { start: location.start, length: location.length },
431
+ newText: (0, semantic_rename_locations_1.semanticRenameReplacement)(location, intent.newName)
432
+ });
433
+ byFile.set(path.normalize(location.fileName), current);
434
+ }
435
+ }
436
+ const edits = [];
437
+ for (const [fileName, textChanges] of byFile) {
438
+ const ordered = [...textChanges].sort((left, right) => left.span.start - right.span.start);
439
+ for (let index = 1; index < ordered.length; index += 1) {
440
+ const previous = ordered[index - 1];
441
+ const current = ordered[index];
442
+ if (previous.span.start + previous.span.length > current.span.start) {
443
+ return { ok: false, code: "SEMANTIC_RENAME_EDIT_OVERLAP", error: `Overlapping combined edits in ${fileName}.` };
444
+ }
445
+ }
446
+ const expectedBytes = fs.readFileSync(fileName);
447
+ const expectedText = expectedBytes.toString("utf8");
448
+ edits.push({
449
+ fileName,
450
+ expectedText,
451
+ expectedHash: crypto.createHash("sha256").update(expectedBytes).digest("hex"),
452
+ textChanges: ordered
453
+ });
454
+ }
455
+ return { ok: true, edits: edits.sort((left, right) => left.fileName.localeCompare(right.fileName)) };
456
+ }
457
+ function verifyStarProofs(boundaries, discovery, results) {
458
+ const owners = new Map(discovery.fileOwners.map((item) => [pathKey(item.file), item.ownerConfigs.map(pathKey)]));
459
+ const resultMap = new Map(results.map((result) => [pathKey(result.configFilePath), result]));
460
+ return boundaries.every((boundary) => {
461
+ const configs = owners.get(pathKey(boundary.file));
462
+ return configs && configs.length > 0 && configs.every((config) => resultMap.get(config)?.starProofs.some((proof) => proof.id === boundary.id && proof.status === "proven") === true);
463
+ });
464
+ }
465
+ function verifyBeforeHashes(results, files) {
466
+ if (results.some((result) => !result.configHash || result.configHash !== hashFile(result.configFilePath)))
467
+ return false;
468
+ for (const file of files) {
469
+ const hashes = new Set();
470
+ for (const result of results) {
471
+ const entry = Object.entries(result.beforeHashes).find(([candidate]) => samePath(candidate, file));
472
+ if (entry)
473
+ hashes.add(entry[1]);
474
+ }
475
+ if (hashes.size !== 1 || !hashes.has(hashFile(file)))
476
+ return false;
477
+ }
478
+ return true;
479
+ }
480
+ function hasInterIntentOverlap(intents) {
481
+ const byFile = new Map();
482
+ for (const intent of intents) {
483
+ for (const location of intent.locations) {
484
+ const list = byFile.get(pathKey(location.fileName)) ?? [];
485
+ list.push({ id: intent.id, start: location.start, end: location.start + location.length });
486
+ byFile.set(pathKey(location.fileName), list);
487
+ }
488
+ }
489
+ return [...byFile.values()].some((items) => items.some((left, index) => items.slice(index + 1).some((right) => left.id !== right.id && left.start < right.end && right.start < left.end)));
490
+ }
491
+ function incomplete(code, error, root, sourceFile, discovery, startedAt, snapshotHash = "", configWorkers = [], blockers = []) {
492
+ return {
493
+ complete: false,
494
+ code,
495
+ error,
496
+ workspaceRoot: root,
497
+ sourceFile,
498
+ intents: [],
499
+ edits: [],
500
+ blockers,
501
+ discovery,
502
+ configWorkers,
503
+ snapshotHash,
504
+ totalMs: Date.now() - startedAt
505
+ };
506
+ }
507
+ function discoverySummary(discovery) {
508
+ return discovery ? {
509
+ filesScanned: discovery.filesScanned,
510
+ bytesScanned: discovery.bytesScanned,
511
+ consumerCount: discovery.consumerFiles.length,
512
+ edgeCount: discovery.edges.length,
513
+ ownerConfigCount: discovery.ownerConfigs.length,
514
+ workspaceFingerprint: discovery.workspaceFingerprint
515
+ } : { filesScanned: 0, bytesScanned: 0, consumerCount: 0, edgeCount: 0, ownerConfigCount: 0, workspaceFingerprint: "" };
516
+ }
517
+ function isValidIdentifierName(value) {
518
+ const source = typescript_1.default.createSourceFile("identifier.ts", `const ${value} = 1;`, typescript_1.default.ScriptTarget.Latest, true);
519
+ const parseDiagnostics = source.parseDiagnostics ?? [];
520
+ const statement = source.statements[0];
521
+ return parseDiagnostics.length === 0 && statement !== undefined && typescript_1.default.isVariableStatement(statement) &&
522
+ statement.declarationList.declarations.length === 1 &&
523
+ typescript_1.default.isIdentifier(statement.declarationList.declarations[0].name) &&
524
+ statement.declarationList.declarations[0].name.text === value;
525
+ }
526
+ function readTopLevelDeclarationName(statement) {
527
+ if ((typescript_1.default.isFunctionDeclaration(statement) || typescript_1.default.isClassDeclaration(statement) || typescript_1.default.isInterfaceDeclaration(statement) ||
528
+ typescript_1.default.isTypeAliasDeclaration(statement) || typescript_1.default.isEnumDeclaration(statement) || typescript_1.default.isModuleDeclaration(statement)) &&
529
+ statement.name && typescript_1.default.isIdentifier(statement.name))
530
+ return statement.name.text;
531
+ return null;
532
+ }
533
+ function compareLocations(left, right) {
534
+ return left.fileName.localeCompare(right.fileName) || left.start - right.start || left.length - right.length;
535
+ }
536
+ function locationSpanKey(location) {
537
+ return `${pathKey(location.fileName)}:${location.start}:${location.length}`;
538
+ }
539
+ function hashFiles(files) {
540
+ const hash = crypto.createHash("sha256");
541
+ for (const file of uniquePaths(files).sort()) {
542
+ hash.update(path.normalize(file)).update("\0").update(fs.readFileSync(file)).update("\0");
543
+ }
544
+ return hash.digest("hex");
545
+ }
546
+ function hashFile(file) {
547
+ return crypto.createHash("sha256").update(fs.readFileSync(file)).digest("hex");
548
+ }
549
+ function uniquePaths(files) {
550
+ const unique = new Map();
551
+ for (const file of files)
552
+ unique.set(pathKey(file), path.normalize(file));
553
+ return [...unique.values()];
554
+ }
555
+ function samePath(left, right) { return pathKey(left) === pathKey(right); }
556
+ function pathKey(file) {
557
+ const normalized = path.normalize(file);
558
+ return process.platform === "win32" ? normalized.toLowerCase() : normalized;
559
+ }
560
+ function isInside(root, file) {
561
+ const relative = path.relative(root, file);
562
+ return relative === "" || (!relative.startsWith("..") && !path.isAbsolute(relative));
563
+ }
564
+ function errorMessage(error) { return error instanceof Error ? error.message : String(error); }
565
+ function readErrorCode(error) {
566
+ return error && typeof error === "object" && "code" in error && typeof error.code === "string" ? error.code : null;
567
+ }