@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,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const standalone_inspect_analysis_1 = require("./standalone-inspect-analysis");
4
+ process.once("message", (raw) => {
5
+ if (!isRequest(raw)) {
6
+ process.exitCode = 2;
7
+ process.disconnect?.();
8
+ return;
9
+ }
10
+ void (0, standalone_inspect_analysis_1.runStandaloneInspectPayload)(raw.workspaceRoot, raw.payload).then((result) => send({ type: "standaloneInspectResult", id: raw.id, pid: process.pid, result }), (error) => send({ type: "standaloneInspectResult", id: raw.id, pid: process.pid, result: { ok: false, code: "STANDALONE_INSPECT_WORKER_FAILED", error: error instanceof Error ? error.message : String(error) } }));
11
+ });
12
+ function send(message) { process.send?.(message, () => process.disconnect?.()); }
13
+ function isRequest(value) { return Boolean(value && typeof value === "object" && !Array.isArray(value) && value.type === "standaloneInspectRequest" && typeof value.id === "string" && typeof value.workspaceRoot === "string" && value.payload); }
@@ -1,2 +1,101 @@
1
- "use strict";var s=exports&&exports.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.centralMetricsEnabled=c,exports.mutationImpactMetricsEnabled=p,exports.mutationImpactStreamEnabled=_,exports.startCentralMetricSpan=v,exports.recordCentralMetric=f,exports.resolveCentralMetricsDir=l;const a=s(require("node:fs")),o=s(require("node:path")),n=require("../config/env-vars"),d=require("../config/product-storage"),m=require("../observability/context"),u=require("../observability/config");function c(){const t=process.env[n.CLI_ENV.metrics]?.trim().toLowerCase();return t==="0"||t==="false"||t==="off"?!1:(0,u.resolveObservabilityConfig)().metrics==="on"}function p(){if(!c())return!1;const t=process.env[n.CLI_ENV.mutationImpactMetrics]?.trim().toLowerCase();return t==="0"||t==="false"||t==="off"?!1:t==="1"||t==="true"||t==="on"?!0:(0,u.resolveObservabilityConfig)().mutationImpactMetrics==="on"}function _(){return process.env[n.CLI_ENV.mutationImpactStream]==="1"}function v(t){const r=Date.now(),i=new Date(r).toISOString();return{end(e={}){f({...t,...e,startedAt:i,completedAt:new Date().toISOString(),durationMs:Date.now()-r})}}}function f(t){if(c())try{const r=l(),i=typeof t.cwd=="string"?(0,m.buildCorrelationContext)(t.cwd):{};a.default.mkdirSync(r,{recursive:!0});const e=C({version:1,recordedAt:new Date().toISOString(),pid:process.pid,platform:process.platform,...process.env[n.CLI_ENV.metricsTag]?{tag:process.env[n.CLI_ENV.metricsTag]}:{},...i,...t});a.default.appendFileSync(o.default.join(r,"metrics.jsonl"),`${JSON.stringify(e)}
2
- `,"utf8")}catch{}}function l(){const t=process.env[n.CLI_ENV.metricsDir];return t&&t.trim()?o.default.resolve(t):o.default.join((0,d.productStorageRoot)(),"metrics")}function C(t){const r={};for(const[i,e]of Object.entries(t))e!=null&&(Array.isArray(e)&&e.length===0||typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===0||(r[i]=e));return r}
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.centralMetricsEnabled = centralMetricsEnabled;
7
+ exports.mutationImpactMetricsEnabled = mutationImpactMetricsEnabled;
8
+ exports.mutationImpactStreamEnabled = mutationImpactStreamEnabled;
9
+ exports.startCentralMetricSpan = startCentralMetricSpan;
10
+ exports.recordCentralMetric = recordCentralMetric;
11
+ exports.resolveCentralMetricsDir = resolveCentralMetricsDir;
12
+ const node_fs_1 = __importDefault(require("node:fs"));
13
+ const node_path_1 = __importDefault(require("node:path"));
14
+ const env_vars_1 = require("../config/env-vars");
15
+ const product_storage_1 = require("../config/product-storage");
16
+ const context_1 = require("../observability/context");
17
+ const config_1 = require("../observability/config");
18
+ function centralMetricsEnabled() {
19
+ const raw = process.env[env_vars_1.CLI_ENV.metrics]?.trim().toLowerCase();
20
+ if (raw === "0" || raw === "false" || raw === "off") {
21
+ return false;
22
+ }
23
+ return (0, config_1.resolveObservabilityConfig)().metrics === "on";
24
+ }
25
+ function mutationImpactMetricsEnabled() {
26
+ if (!centralMetricsEnabled()) {
27
+ return false;
28
+ }
29
+ const raw = process.env[env_vars_1.CLI_ENV.mutationImpactMetrics]?.trim().toLowerCase();
30
+ if (raw === "0" || raw === "false" || raw === "off") {
31
+ return false;
32
+ }
33
+ if (raw === "1" || raw === "true" || raw === "on") {
34
+ return true;
35
+ }
36
+ return (0, config_1.resolveObservabilityConfig)().mutationImpactMetrics === "on";
37
+ }
38
+ function mutationImpactStreamEnabled() {
39
+ return process.env[env_vars_1.CLI_ENV.mutationImpactStream] === "1";
40
+ }
41
+ function startCentralMetricSpan(event) {
42
+ const startedAtMs = Date.now();
43
+ const startedAt = new Date(startedAtMs).toISOString();
44
+ return {
45
+ end(extra = {}) {
46
+ recordCentralMetric({
47
+ ...event,
48
+ ...extra,
49
+ startedAt,
50
+ completedAt: new Date().toISOString(),
51
+ durationMs: Date.now() - startedAtMs
52
+ });
53
+ }
54
+ };
55
+ }
56
+ function recordCentralMetric(event, options = {}) {
57
+ if (options.explicitlyEnabled !== true && !centralMetricsEnabled()) {
58
+ return;
59
+ }
60
+ try {
61
+ const metricsDir = resolveCentralMetricsDir();
62
+ const context = typeof event.cwd === "string" ? (0, context_1.buildCorrelationContext)(event.cwd) : {};
63
+ node_fs_1.default.mkdirSync(metricsDir, { recursive: true });
64
+ const row = compactMetric({
65
+ version: 1,
66
+ recordedAt: new Date().toISOString(),
67
+ pid: process.pid,
68
+ platform: process.platform,
69
+ ...(process.env[env_vars_1.CLI_ENV.metricsTag] ? { tag: process.env[env_vars_1.CLI_ENV.metricsTag] } : {}),
70
+ ...context,
71
+ ...event
72
+ });
73
+ node_fs_1.default.appendFileSync(node_path_1.default.join(metricsDir, "metrics.jsonl"), `${JSON.stringify(row)}\n`, "utf8");
74
+ }
75
+ catch {
76
+ // Metrics must never change command behavior.
77
+ }
78
+ }
79
+ function resolveCentralMetricsDir() {
80
+ const override = process.env[env_vars_1.CLI_ENV.metricsDir];
81
+ if (override && override.trim()) {
82
+ return node_path_1.default.resolve(override);
83
+ }
84
+ return node_path_1.default.join((0, product_storage_1.productStorageRoot)(), "metrics");
85
+ }
86
+ function compactMetric(value) {
87
+ const output = {};
88
+ for (const [key, item] of Object.entries(value)) {
89
+ if (item === undefined || item === null) {
90
+ continue;
91
+ }
92
+ if (Array.isArray(item) && item.length === 0) {
93
+ continue;
94
+ }
95
+ if (typeof item === "object" && !Array.isArray(item) && Object.keys(item).length === 0) {
96
+ continue;
97
+ }
98
+ output[key] = item;
99
+ }
100
+ return output;
101
+ }
@@ -0,0 +1,157 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.normalizeConcreteEdits = normalizeConcreteEdits;
37
+ exports.createSemanticFingerprint = createSemanticFingerprint;
38
+ exports.createConcretePreconditions = createConcretePreconditions;
39
+ const crypto = __importStar(require("node:crypto"));
40
+ const fs = __importStar(require("node:fs"));
41
+ const path = __importStar(require("node:path"));
42
+ function normalizeConcreteEdits(edits) {
43
+ const normalized = edits.map((edit) => {
44
+ validateEditRange(edit);
45
+ return {
46
+ ...edit,
47
+ file: normalizeEditFile(edit.file)
48
+ };
49
+ }).sort((left, right) => left.file.localeCompare(right.file) || left.start - right.start || left.end - right.end ||
50
+ left.text.localeCompare(right.text) || left.reason.localeCompare(right.reason));
51
+ for (let index = 1; index < normalized.length; index += 1) {
52
+ const previous = normalized[index - 1];
53
+ const current = normalized[index];
54
+ if (previous.file === current.file && previous.start === previous.end &&
55
+ current.start === current.end && previous.start === current.start) {
56
+ throw new Error(`Conflicting zero-length inserts in ${current.file} at ${current.start}.`);
57
+ }
58
+ if (previous.file === current.file && current.start < previous.end) {
59
+ throw new Error(`Overlapping concrete edits in ${current.file}: ${previous.start}-${previous.end} and ${current.start}-${current.end}.`);
60
+ }
61
+ }
62
+ return normalized;
63
+ }
64
+ function createSemanticFingerprint(input) {
65
+ const normalized = {
66
+ intent: {
67
+ ...input.intent,
68
+ sourceFile: normalizeFile(input.intent.sourceFile),
69
+ members: [...new Set(input.intent.members)].sort()
70
+ },
71
+ projects: input.projects.map((project) => ({
72
+ tsconfig: normalizeFile(project.tsconfig),
73
+ configFingerprint: project.configFingerprint,
74
+ packageRoot: project.packageRoot ? normalizeFile(project.packageRoot) : undefined,
75
+ packageName: project.packageName,
76
+ projectReferences: [...new Set(project.projectReferences.map(normalizeFile))].sort()
77
+ })).sort((left, right) => left.tsconfig.localeCompare(right.tsconfig)),
78
+ symbols: input.symbols.map((symbol) => ({ ...symbol, declarationFile: normalizeFile(symbol.declarationFile) }))
79
+ .sort((left, right) => left.key.localeCompare(right.key) || left.name.localeCompare(right.name) ||
80
+ left.declarationFile.localeCompare(right.declarationFile) || left.declarationStart - right.declarationStart ||
81
+ left.declarationEnd - right.declarationEnd || left.flags - right.flags),
82
+ references: input.references.map((reference) => ({
83
+ symbol: reference.symbol.key,
84
+ file: normalizeFile(reference.file),
85
+ start: reference.start,
86
+ end: reference.end,
87
+ text: reference.text,
88
+ kinds: [...new Set(reference.kinds)].sort(),
89
+ project: normalizeFile(reference.project)
90
+ })).sort((left, right) => left.file.localeCompare(right.file) || left.start - right.start ||
91
+ left.end - right.end || left.symbol.localeCompare(right.symbol) ||
92
+ left.kinds.join("\0").localeCompare(right.kinds.join("\0")) || left.project.localeCompare(right.project) ||
93
+ left.text.localeCompare(right.text)),
94
+ moduleEdges: input.moduleEdges.map((edge) => ({
95
+ ...edge,
96
+ fromFile: normalizeFile(edge.fromFile),
97
+ toFile: normalizeFile(edge.toFile)
98
+ })).sort((left, right) => left.fromFile.localeCompare(right.fromFile) || left.toFile.localeCompare(right.toFile) ||
99
+ left.specifier.localeCompare(right.specifier) || left.kind.localeCompare(right.kind))
100
+ };
101
+ return sha256(stableStringify(normalized));
102
+ }
103
+ function createConcretePreconditions(workspaceRoot, edits) {
104
+ const root = path.resolve(workspaceRoot);
105
+ const realRoot = fs.realpathSync(root);
106
+ const files = [...new Set(normalizeConcreteEdits(edits).map((edit) => edit.file))];
107
+ return files.map((file) => {
108
+ const absolute = path.resolve(root, file);
109
+ assertContained(root, absolute, file);
110
+ const realFile = fs.realpathSync(absolute);
111
+ assertContained(realRoot, realFile, file);
112
+ return { file, beforeHash: sha256(fs.readFileSync(absolute)) };
113
+ });
114
+ }
115
+ function validateEditRange(edit) {
116
+ if (!Number.isFinite(edit.start) || !Number.isFinite(edit.end) ||
117
+ !Number.isInteger(edit.start) || !Number.isInteger(edit.end) ||
118
+ edit.start < 0 || edit.end < edit.start) {
119
+ throw new Error(`Invalid concrete edit range for ${edit.file}: ${edit.start}-${edit.end}.`);
120
+ }
121
+ }
122
+ function normalizeEditFile(file) {
123
+ const slashed = file.replace(/\\/g, "/");
124
+ const segments = slashed.split("/");
125
+ if (!slashed || path.isAbsolute(file) || path.win32.isAbsolute(file) || path.posix.isAbsolute(slashed) ||
126
+ segments.includes("..")) {
127
+ throw new Error(`Concrete edit file must be a contained repo-relative path: ${file}.`);
128
+ }
129
+ const normalized = path.posix.normalize(slashed).replace(/^\.\//, "");
130
+ if (!normalized || normalized === ".") {
131
+ throw new Error(`Concrete edit file must identify a file: ${file}.`);
132
+ }
133
+ return normalized;
134
+ }
135
+ function assertContained(root, file, displayFile) {
136
+ const relative = path.relative(root, file);
137
+ if (relative.startsWith("..") || path.isAbsolute(relative)) {
138
+ throw new Error(`Concrete edit file escapes workspace: ${displayFile}.`);
139
+ }
140
+ }
141
+ function normalizeFile(file) {
142
+ return file.replace(/\\/g, "/").replace(/^\.\//, "");
143
+ }
144
+ function stableStringify(value) {
145
+ if (Array.isArray(value)) {
146
+ return `[${value.map(stableStringify).join(",")}]`;
147
+ }
148
+ if (value && typeof value === "object") {
149
+ const record = value;
150
+ return `{${Object.keys(record).filter((key) => record[key] !== undefined).sort()
151
+ .map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`).join(",")}}`;
152
+ }
153
+ return JSON.stringify(value);
154
+ }
155
+ function sha256(value) {
156
+ return crypto.createHash("sha256").update(value).digest("hex");
157
+ }
@@ -0,0 +1,361 @@
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.ExportsStarCollapsePreviewSession = void 0;
40
+ exports.planExportsStarCollapsePreview = planExportsStarCollapsePreview;
41
+ const crypto = __importStar(require("node:crypto"));
42
+ const fs = __importStar(require("node:fs"));
43
+ const path = __importStar(require("node:path"));
44
+ const typescript_1 = __importDefault(require("typescript"));
45
+ const semantic_context_provider_1 = require("../semantic/semantic-context-provider");
46
+ const workspace_project_index_1 = require("../topology/workspace-project-index");
47
+ const semantic_export_index_1 = require("./semantic-export-index");
48
+ function planExportsStarCollapsePreview(cwd, input) {
49
+ const session = new ExportsStarCollapsePreviewSession(cwd);
50
+ try {
51
+ return session.plan(input);
52
+ }
53
+ finally {
54
+ session.dispose();
55
+ }
56
+ }
57
+ class ExportsStarCollapsePreviewSession {
58
+ pool;
59
+ root;
60
+ projectIndex;
61
+ semanticProvider;
62
+ leases = new Map();
63
+ structuralIndexMs;
64
+ programsBuilt = 0;
65
+ overlaysBuilt = 0;
66
+ poolHits = 0;
67
+ poolMisses = 0;
68
+ poolFallbacks = 0;
69
+ disposed = false;
70
+ constructor(cwd, pool) {
71
+ this.pool = pool;
72
+ this.root = path.resolve(cwd);
73
+ const started = performance.now();
74
+ this.projectIndex = new workspace_project_index_1.WorkspaceProjectIndex(this.root);
75
+ this.structuralIndexMs = roundMs(performance.now() - started);
76
+ this.semanticProvider = new semantic_context_provider_1.SemanticContextProvider(this.root, this.projectIndex);
77
+ }
78
+ get resources() {
79
+ return { structuralIndexesBuilt: 1, semanticProvidersCreated: 1, distinctContextsAcquired: this.leases.size, programsBuilt: this.programsBuilt, overlaysBuilt: this.overlaysBuilt, poolHits: this.poolHits, poolMisses: this.poolMisses, poolFallbacks: this.poolFallbacks };
80
+ }
81
+ plan(input) {
82
+ if (this.disposed)
83
+ throw new Error("ExportsStarCollapsePreviewSession is disposed.");
84
+ const totalStarted = performance.now();
85
+ const absolute = path.resolve(this.root, input.sourceFile);
86
+ const sourceFile = repoPath(this.root, absolute);
87
+ const timings = { structuralIndexMs: this.structuralIndexMs };
88
+ if (!inside(this.root, absolute) || !fs.existsSync(absolute))
89
+ return empty(sourceFile, "sourceNotFound", "The requested barrel is not an existing workspace file.", timings, this.resources, totalStarted);
90
+ if (!/\.(?:ts|tsx|mts|cts)$/i.test(sourceFile) || /\.d\.ts$/i.test(sourceFile))
91
+ return empty(sourceFile, "sourceKindUnsupported", "exports.star.collapse preview supports TypeScript source modules only.", timings, this.resources, totalStarted);
92
+ const semanticStarted = performance.now();
93
+ const owners = this.projectIndex.exactOwnersForFile(sourceFile);
94
+ if (owners.length === 0)
95
+ return empty(sourceFile, "barrelNotOwned", "No exact TypeScript project owns the barrel.", timings, this.resources, totalStarted);
96
+ for (const owner of owners)
97
+ this.acquire(sourceFile, owner);
98
+ const records = owners.map((owner) => this.leases.get(owner.identity.key));
99
+ const source = records[0]?.lease.program.getSourceFile(absolute);
100
+ if (!source)
101
+ return empty(sourceFile, "barrelMissingFromProgram", "The barrel is missing from its owning TypeScript program.", timings, this.resources, totalStarted);
102
+ timings.semanticContextsMs = roundMs(performance.now() - semanticStarted);
103
+ const ownerNames = owners.map((owner) => repoPath(this.root, owner.identity.lexicalPath)).sort();
104
+ const exportStarted = performance.now();
105
+ const provider = exportProvider(this.root, records);
106
+ const baselineBarrel = (0, semantic_export_index_1.buildSemanticExportIndexFromProvider)(provider, { barrelFiles: [sourceFile] }).barrels[0];
107
+ timings.exportIndexMs = roundMs(performance.now() - exportStarted);
108
+ const selected = selectGroups(baselineBarrel, input.selectors, sourceFile);
109
+ if (isCommonJsSource(source, records[0].lease.program.getCompilerOptions())) {
110
+ return retainedPreview(sourceFile, selected.requestedCount, ownerNames, selected.groups.map((group) => retained(sourceFile, group.selector, "commonJsObservableShapeUnproven", "TS-to-CJS export-star namespace descriptors/order are not proven equivalent.")), selected.retained, timings, this.resources, totalStarted);
111
+ }
112
+ const baselineSignature = surfaceSignature(baselineBarrel);
113
+ const baselineDiagnostics = diagnosticSet(this.root, records, sourceFile);
114
+ const accepted = [];
115
+ const retainedRows = [...selected.retained];
116
+ const surfaces = [];
117
+ let currentText = source.text;
118
+ const proofStarted = performance.now();
119
+ for (const group of selected.groups) {
120
+ const local = validateGroup(source, group, sourceFile);
121
+ if (local) {
122
+ retainedRows.push(local);
123
+ continue;
124
+ }
125
+ const candidate = renderGroup(source, group);
126
+ if (!candidate) {
127
+ retainedRows.push(retained(sourceFile, group.selector, "rendererUnsupported", "The selected named re-export group cannot be rendered without losing trivia."));
128
+ continue;
129
+ }
130
+ const nextText = applyReplacements(source.text, [...accepted, ...candidate]);
131
+ const proof = this.proveOverlay(sourceFile, owners, nextText, baselineSignature, baselineDiagnostics);
132
+ if (!proof.ok) {
133
+ retainedRows.push(retained(sourceFile, group.selector, proof.code, proof.reason));
134
+ continue;
135
+ }
136
+ accepted.push(...candidate);
137
+ currentText = nextText;
138
+ surfaces.push({ selector: group.selector, specifier: group.specifier, mode: group.mode === "named-type" ? "type-star" : "runtime-star", names: unique(group.edges.flatMap((edge) => edge.bindings.map((binding) => binding.publicName))).sort(), explicitEdgeCount: group.edges.length });
139
+ }
140
+ timings.proofMs = roundMs(performance.now() - proofStarted);
141
+ timings.totalMs = roundMs(this.structuralIndexMs + performance.now() - totalStarted);
142
+ const plannedCount = surfaces.length;
143
+ const dedupedRetained = dedupeRetained(retainedRows);
144
+ const edits = plannedCount ? [{ file: sourceFile, start: 0, end: source.text.length, text: currentText, reason: "exports.star.collapse preview" }] : [];
145
+ const beforeHashes = plannedCount ? [{ file: sourceFile, beforeHash: sha256(source.text) }] : [];
146
+ const evidence = { sourceFile, owners: ownerNames, selectors: input.selectors ?? [], surfaces, retained: dedupedRetained, beforeHashes, afterSurface: baselineSignature };
147
+ return {
148
+ ok: true,
149
+ operation: "exports.star.collapse.preview",
150
+ applyAvailable: false,
151
+ partial: plannedCount > 0 && dedupedRetained.length > 0,
152
+ sourceFile,
153
+ requestedCount: selected.requestedCount,
154
+ plannedCount,
155
+ retainedCount: dedupedRetained.length,
156
+ filesTouched: plannedCount ? [sourceFile] : [],
157
+ filesWritten: [],
158
+ retained: dedupedRetained,
159
+ rows: [{ ok: true, sourceFile, requestedCount: selected.requestedCount, plannedCount, retainedCount: dedupedRetained.length }],
160
+ edits,
161
+ beforeHashes,
162
+ owners: ownerNames,
163
+ surfaces,
164
+ diagnostics: { added: [] },
165
+ cycleEvidence: { status: "available", runtimeEdgesChanged: false, cyclesAdded: [] },
166
+ futureLeakage: surfaces.map((item) => ({ specifier: item.specifier, policy: "star-follows-target", note: "Future non-default exports added by the target will become public through this barrel." })),
167
+ timings,
168
+ resources: this.resources,
169
+ semanticFingerprint: sha256(stableStringify(evidence)),
170
+ next: "Review exports.star.collapse view evidence; apply/execute is not available yet."
171
+ };
172
+ }
173
+ dispose() {
174
+ if (this.disposed)
175
+ return;
176
+ this.disposed = true;
177
+ for (const item of this.leases.values())
178
+ item.lease.release();
179
+ this.leases.clear();
180
+ this.semanticProvider.dispose();
181
+ this.projectIndex.dispose();
182
+ }
183
+ acquire(focusFile, owner) {
184
+ const found = this.leases.get(owner.identity.key);
185
+ if (found)
186
+ return found;
187
+ let lease;
188
+ if (this.pool) {
189
+ try {
190
+ const pooled = this.pool.acquireProgram({ focusFile, ownerConfig: owner.identity.lexicalPath, projectScope: "owner-with-forward-references" });
191
+ lease = pooled;
192
+ if (pooled.cache.status === "hit")
193
+ this.poolHits += 1;
194
+ else {
195
+ this.poolMisses += 1;
196
+ this.programsBuilt += 1;
197
+ }
198
+ }
199
+ catch {
200
+ this.poolFallbacks += 1;
201
+ this.programsBuilt += 1;
202
+ lease = this.semanticProvider.acquireProgram({ focusFile, ownerConfig: owner.identity.lexicalPath, projectScope: "owner-with-forward-references" });
203
+ }
204
+ }
205
+ else {
206
+ this.programsBuilt += 1;
207
+ lease = this.semanticProvider.acquireProgram({ focusFile, ownerConfig: owner.identity.lexicalPath, projectScope: "owner-with-forward-references" });
208
+ }
209
+ const handle = makeHandle(this.root, owner, lease);
210
+ const record = { owner, lease, handle };
211
+ this.leases.set(owner.identity.key, record);
212
+ return record;
213
+ }
214
+ proveOverlay(sourceFile, owners, text, expectedSurface, baselineDiagnostics) {
215
+ const overlayRecords = [];
216
+ try {
217
+ for (const owner of owners) {
218
+ const lease = this.semanticProvider.acquireProgram({ focusFile: sourceFile, ownerConfig: owner.identity.lexicalPath, projectScope: "owner-with-forward-references", overlays: [{ file: sourceFile, text }] });
219
+ this.overlaysBuilt += 1;
220
+ overlayRecords.push({ owner, lease, handle: makeHandle(this.root, owner, lease) });
221
+ }
222
+ const barrel = (0, semantic_export_index_1.buildSemanticExportIndexFromProvider)(exportProvider(this.root, overlayRecords), { barrelFiles: [sourceFile] }).barrels[0];
223
+ if (surfaceSignature(barrel) !== expectedSurface)
224
+ return { ok: false, code: "observableSurfaceChanged", reason: "Replacing the named re-exports with a star changes the current public export surface or symbol identity." };
225
+ const added = [...diagnosticSet(this.root, overlayRecords, sourceFile)].find((item) => !baselineDiagnostics.has(item));
226
+ if (added)
227
+ return { ok: false, code: "virtualDiagnosticsAdded", reason: "The collapsed barrel adds a TypeScript diagnostic." };
228
+ return { ok: true };
229
+ }
230
+ finally {
231
+ for (const item of overlayRecords)
232
+ item.lease.release();
233
+ }
234
+ }
235
+ }
236
+ exports.ExportsStarCollapsePreviewSession = ExportsStarCollapsePreviewSession;
237
+ function selectGroups(barrel, selectors, sourceFile) {
238
+ const named = barrel.edges.filter((edge) => edge.mode === "named-runtime" || edge.mode === "named-type");
239
+ const groups = [...new Set(named.map((edge) => edge.specifier))].map((specifier) => {
240
+ const edges = named.filter((edge) => edge.specifier === specifier);
241
+ const hasRuntimeBinding = edges.some((edge) => edge.bindings.some((binding) => binding.exposure === "runtime"));
242
+ return { selector: specifier, specifier, mode: hasRuntimeBinding ? "named-runtime" : "named-type", edges };
243
+ });
244
+ if (!selectors?.length)
245
+ return { groups, retained: groups.length ? [] : [retained(sourceFile, "*", "namedReexportNotFound", "The barrel has no named re-export groups to collapse.")], requestedCount: groups.length };
246
+ const selected = [];
247
+ const retainedRows = [];
248
+ const requested = unique(selectors.map((item) => item.trim()).filter(Boolean));
249
+ for (const selector of requested) {
250
+ const exact = groups.filter((group) => group.specifier === selector);
251
+ const matches = exact.length ? exact : groups.filter((group) => (0, semantic_export_index_1.normalizeExportEdgeSelector)(group.specifier) === (0, semantic_export_index_1.normalizeExportEdgeSelector)(selector));
252
+ if (matches.length === 1)
253
+ selected.push({ ...matches[0], selector });
254
+ else if (matches.length > 1)
255
+ retainedRows.push({ ...retained(sourceFile, selector, "selectorAmbiguous", "Selector matches multiple named re-export groups."), candidates: unique(matches.map((item) => item.specifier)).sort() });
256
+ else
257
+ retainedRows.push(retained(sourceFile, selector, "selectorNotFound", "No existing named re-export group matches this selector."));
258
+ }
259
+ return { groups: selected, retained: retainedRows, requestedCount: requested.length };
260
+ }
261
+ function validateGroup(source, group, sourceFile) {
262
+ if (group.edges.some((edge) => /\.(?:jsx?|mjs|cjs)$/i.test(edge.resolvedFile ?? "")))
263
+ return retained(sourceFile, group.selector, "targetKindUnsupported", "Raw JavaScript/CommonJS export targets are unsupported.");
264
+ if (group.edges.some((edge) => edge.resolution !== "resolved" || !edge.resolvedFile || edge.issues.length > 0))
265
+ return retained(sourceFile, group.selector, "edgeEvidenceIncomplete", "The selected named re-export group does not resolve equivalently for every owner.");
266
+ const bindings = group.edges.flatMap((edge) => edge.bindings);
267
+ if (bindings.some((binding) => binding.isDefault || binding.publicName !== binding.targetName))
268
+ return retained(sourceFile, group.selector, "aliasOrDefaultUnsupported", "Aliases and default re-exports cannot be represented by export star.");
269
+ if (group.mode === "named-runtime" && !bindings.some((binding) => binding.exposure === "runtime"))
270
+ return retained(sourceFile, group.selector, "runtimeEvaluationChangeUnproven", "A runtime star would add evaluation to a type-only named re-export group.");
271
+ for (const edge of group.edges) {
272
+ const statement = source.statements.find((item) => item.getStart(source) === edge.start && item.end === edge.end);
273
+ if (!statement || !typescript_1.default.isExportDeclaration(statement) || !statement.moduleSpecifier)
274
+ return retained(sourceFile, group.selector, "statementShapeUnsupported", "The selected export declaration shape is unsupported.");
275
+ const clauseText = source.text.slice(statement.getStart(source), statement.moduleSpecifier.getStart(source));
276
+ if (/\/\*|\/\//.test(clauseText))
277
+ return retained(sourceFile, group.selector, "inlineCommentUnsupported", "Inline comments inside the named export clause must be preserved manually.");
278
+ }
279
+ return null;
280
+ }
281
+ function renderGroup(source, group) {
282
+ const statements = group.edges.map((edge) => ({ edge, statement: source.statements.find((item) => item.getStart(source) === edge.start && item.end === edge.end) })).sort((a, b) => a.edge.start - b.edge.start);
283
+ const first = statements[0];
284
+ if (!first?.statement || !typescript_1.default.isExportDeclaration(first.statement) || !first.statement.moduleSpecifier)
285
+ return null;
286
+ const moduleText = source.text.slice(first.statement.moduleSpecifier.getStart(source), first.statement.moduleSpecifier.end);
287
+ const tail = source.text.slice(first.statement.moduleSpecifier.end, first.statement.end);
288
+ const replacement = `${group.mode === "named-type" ? "export type *" : "export *"} from ${moduleText}${tail}`;
289
+ return statements.map((item, index) => ({ start: item.edge.start, end: item.edge.end, text: index === 0 ? replacement : "" }));
290
+ }
291
+ function makeHandle(root, owner, lease) {
292
+ return {
293
+ id: repoPath(root, owner.identity.lexicalPath), checker: lease.checker,
294
+ getSourceFile: (file) => lease.program.getSourceFile(path.resolve(file)),
295
+ resolveModule: (fromFile, specifier) => typescript_1.default.resolveModuleName(specifier, fromFile, lease.program.getCompilerOptions(), typescript_1.default.sys).resolvedModule?.resolvedFileName ?? null,
296
+ symbolIdentity: (symbol) => symbolIdentity(root, lease.checker, symbol),
297
+ diagnosticsForFile: (file) => { const source = lease.program.getSourceFile(path.resolve(file)); return source ? lease.program.getSemanticDiagnostics(source) : []; }
298
+ };
299
+ }
300
+ function exportProvider(root, records) {
301
+ return { root, projectsForFile: (file) => records.filter((record) => Boolean(record.lease.program.getSourceFile(path.resolve(file)))).map((record) => record.handle) };
302
+ }
303
+ function symbolIdentity(root, checker, symbol) {
304
+ let target = symbol;
305
+ if ((target.flags & typescript_1.default.SymbolFlags.Alias) !== 0) {
306
+ try {
307
+ target = checker.getAliasedSymbol(target);
308
+ }
309
+ catch { /* retain */ }
310
+ }
311
+ const declaration = target.valueDeclaration ?? target.declarations?.[0];
312
+ if (!declaration)
313
+ return null;
314
+ return { key: `${canonical(declaration.getSourceFile().fileName)}:${declaration.getStart()}:${declaration.end}:${target.flags}`, name: target.getName(), declarationFile: repoPath(root, declaration.getSourceFile().fileName), declarationStart: declaration.getStart(), declarationEnd: declaration.end, flags: target.flags };
315
+ }
316
+ function surfaceSignature(barrel) {
317
+ return stableStringify(barrel.bindings.map((binding) => ({ name: binding.publicName, key: binding.symbol.key, facets: binding.facets, exposure: binding.exposure, default: binding.isDefault })).sort((a, b) => a.name.localeCompare(b.name)));
318
+ }
319
+ function diagnosticSet(root, records, sourceFile) {
320
+ return new Set(records.flatMap((record) => {
321
+ const source = record.lease.program.getSourceFile(path.resolve(root, sourceFile));
322
+ return source ? [...record.lease.program.getSyntacticDiagnostics(source), ...record.lease.program.getSemanticDiagnostics(source)].map((item) => `${repoPath(root, item.file?.fileName ?? sourceFile)}:${item.start ?? -1}:${item.code}:${typescript_1.default.flattenDiagnosticMessageText(item.messageText, " ")}`) : [];
323
+ }));
324
+ }
325
+ function isCommonJsSource(source, options) {
326
+ if (source.fileName.toLowerCase().endsWith(".cts"))
327
+ return true;
328
+ if (source.fileName.toLowerCase().endsWith(".mts"))
329
+ return false;
330
+ if (options.module === typescript_1.default.ModuleKind.CommonJS)
331
+ return true;
332
+ return source.impliedNodeFormat === typescript_1.default.ModuleKind.CommonJS;
333
+ }
334
+ function applyReplacements(text, replacements) {
335
+ let result = text;
336
+ for (const item of [...replacements].sort((a, b) => b.start - a.start))
337
+ result = result.slice(0, item.start) + item.text + result.slice(item.end);
338
+ return result;
339
+ }
340
+ function empty(sourceFile, code, reason, timings, resources, started) {
341
+ return retainedPreview(sourceFile, 0, [], [], [retained(sourceFile, "*", code, reason)], timings, resources, started);
342
+ }
343
+ function retainedPreview(sourceFile, requestedCount, owners, groupRetained, initial, timings, resources, started) {
344
+ const retainedRows = dedupeRetained([...initial, ...groupRetained]);
345
+ timings.totalMs = roundMs((timings.structuralIndexMs ?? 0) + performance.now() - started);
346
+ return { ok: true, operation: "exports.star.collapse.preview", applyAvailable: false, partial: false, sourceFile, requestedCount, plannedCount: 0, retainedCount: retainedRows.length, filesTouched: [], filesWritten: [], retained: retainedRows, rows: [{ ok: true, sourceFile, requestedCount, plannedCount: 0, retainedCount: retainedRows.length }], edits: [], beforeHashes: [], owners, surfaces: [], diagnostics: { added: [] }, cycleEvidence: { status: "available", runtimeEdgesChanged: false, cyclesAdded: [] }, futureLeakage: [], timings, resources, semanticFingerprint: sha256(stableStringify({ sourceFile, owners, retained: retainedRows })), next: "Review retained exports.star.collapse evidence; apply/execute is not available yet." };
347
+ }
348
+ function retained(sourceFile, selector, code, reason) { return { sourceFile, selector, code, reason }; }
349
+ function dedupeRetained(items) { return [...new Map(items.map((item) => [`${item.selector}:${item.code}:${item.reason}`, item])).values()]; }
350
+ function unique(items) { return [...new Set(items)]; }
351
+ function inside(root, file) { const relative = path.relative(path.resolve(root), path.resolve(file)); return relative === "" || (!relative.startsWith(`..${path.sep}`) && relative !== ".." && !path.isAbsolute(relative)); }
352
+ function repoPath(root, file) {
353
+ const absolute = path.isAbsolute(file) ? file : path.resolve(root, file);
354
+ return path.relative(root, absolute).replace(/\\/g, "/");
355
+ }
356
+ function canonical(file) { const value = path.resolve(file); return process.platform === "win32" ? value.toLowerCase() : value; }
357
+ function sha256(value) { return crypto.createHash("sha256").update(value).digest("hex"); }
358
+ function stableStringify(value) { if (value === null || typeof value !== "object")
359
+ return JSON.stringify(value); if (Array.isArray(value))
360
+ return `[${value.map(stableStringify).join(",")}]`; return `{${Object.entries(value).sort(([a], [b]) => a.localeCompare(b)).map(([key, item]) => `${JSON.stringify(key)}:${stableStringify(item)}`).join(",")}}`; }
361
+ function roundMs(value) { return Math.round(value * 100) / 100; }