@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
@@ -1,3 +1,137 @@
1
- "use strict";var O=exports&&exports.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),j=exports&&exports.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),P=exports&&exports.__importStar||(function(){var e=function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[r.length]=o);return r},e(t)};return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),o=0;o<r.length;o++)r[o]!=="default"&&O(n,t,r[o]);return j(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.runDoctor=H;const i=P(require("node:fs")),a=P(require("node:path")),A=require("node:crypto"),w=require("node:child_process"),d=require("../config/env-vars"),_=require("../shared/diagnostic-catalog"),l=require("../shared/hints"),M=require("../managed-host/extension-vsix-resolver"),x=require("../managed-host/serve-web-autostart"),L=require("./ping"),V=require("../shared/agent-text"),D=require("../shared/errors"),R=require("../diagnostics/readiness-text"),C=require("../runtime/bundled-node"),v=require("../runtime/managed-runtime-provisioning"),q=["code.cmd","code.exe","code"],T=["code"];function f(e,t){return e.ok||!t?e:{...e,code:t.code,...t.hints&&t.hints.length>0?{hints:t.hints}:{}}}async function H(e){const t=[],n=a.resolve(__dirname,"..",".."),r=ae(),o=e.runtime===!0,s=K(e.progress===!0);if(o){s("checking runtime files");const c=(0,v.isManagedRuntimeComplete)(n);s(c?"runtime files: ok":"provisioning runtime"),(0,v.ensureManagedRuntimeProvisioned)(n),c||s((0,v.isManagedRuntimeComplete)(n)?"runtime ready":"runtime files: missing")}t.push(p(s,"node version",Z)),t.push(p(s,"package layout",()=>Q(n))),t.push(p(s,"managed host assets",()=>Y(n,r))),t.push(p(s,"extension VSIX",()=>ee(n,r))),t.push(p(s,"bundled node",()=>ne(n))),t.push(p(s,"code-server",()=>te(n))),t.push(p(s,"browser",()=>oe(n))),t.push(p(s,"platform",()=>ie(o))),o&&t.every(c=>c.severity!=="required"||c.ok)&&t.push(...await F(n,e.cwd,s));const u=t.filter(c=>c.severity==="required"&&!c.ok),g=t.filter(c=>c.severity==="optional"&&!c.ok),m={ok:u.length===0,command:"doctor",mode:o?"runtime-install-gate":"static",cwd:a.resolve(e.cwd),generatedAt:new Date().toISOString(),platform:{node:process.version,platform:process.platform,arch:process.arch},packageRoot:n,repoRoot:r,summary:{checkCount:t.length,passedCount:t.filter(c=>c.ok).length,failedRequiredCount:u.length,failedOptionalCount:g.length},checks:t};return e.progress===!0&&(u.length===0?(s("all checks passed"),s("you are good to go 👍")):s("checks failed")),e.json===!0?m:(0,V.attachAgentText)(m,(0,R.formatDoctorText)(m,{verbose:e.verbose===!0}))}function K(e){return e?t=>{process.stderr.write(`${t}
2
- `)}:()=>{}}function p(e,t,n){e(`checking ${t}`);const r=n();return e(`${t}: ${r.ok?"ok":"failed"}`),r}async function B(e,t){const n=[];let r=!1;try{t("starting managed runtime; please wait");const o=await(0,x.startManagedServeWebForCwd)(e);r=!0,t("managed runtime: started"),n.push({id:"managed-runtime-start",ok:!0,severity:"required",message:"Managed IDE runtime starts and activates the bridge.",details:J(o)})}catch(o){return t("managed runtime: failed"),n.push(S("managed-runtime-start","Managed IDE runtime failed to start or activate the bridge.",o)),n}try{t("pinging runtime");const o=await(0,L.runPing)(e);t("runtime ping: ok"),n.push({id:"bridge-ping",ok:!0,severity:"required",message:"Bridge ping succeeds through the managed runtime.",details:z(o)})}catch(o){t("runtime ping: failed"),n.push(S("bridge-ping","Bridge ping failed through the managed runtime.",o))}if(r)try{t("stopping managed runtime");const o=await(0,x.stopManagedServeWebForCwd)(e);t(o.stopped===!0?"managed runtime: stopped":"managed runtime: stop incomplete"),n.push({id:"managed-runtime-stop",ok:o.stopped===!0,severity:"required",message:o.stopped===!0?"Managed IDE runtime stops cleanly.":"Managed IDE runtime stop did not report a stopped runtime.",details:o})}catch(o){t("managed runtime stop: failed"),n.push(S("managed-runtime-stop","Managed IDE runtime stop failed.",o))}return n}async function F(e,t,n){let r=null;try{return r=await W(e,t),r.waitedMs>500&&n(`managed runtime lock: waited ${r.waitedMs}ms`),await B(t,n)}catch(o){return[S("managed-runtime-lock","Managed IDE runtime lifecycle lock failed.",o)]}finally{r?.release()}}async function W(e,t,n=18e4,r=3e5){const o=a.join(e,".tmp","doctor-runtime-locks"),s=(0,A.createHash)("sha256").update(a.resolve(t)).digest("hex").slice(0,16),u=a.join(o,s),g=Date.now();for(i.mkdirSync(o,{recursive:!0});Date.now()-g<=n;)try{return i.mkdirSync(u),i.writeFileSync(a.join(u,"owner.json"),`${JSON.stringify({pid:process.pid,cwd:a.resolve(t),acquiredAt:new Date().toISOString()},null,2)}
3
- `,"utf8"),{waitedMs:Date.now()-g,release(){i.rmSync(u,{recursive:!0,force:!0})}}}catch(m){if(!U(m))throw m;if(X(u,r)){i.rmSync(u,{recursive:!0,force:!0});continue}await $(250)}throw new D.CliError("DOCTOR_RUNTIME_LOCK_TIMEOUT","Timed out waiting for managed runtime doctor lifecycle lock.",{lockDir:u,timeoutMs:n})}function X(e,t){try{const n=a.join(e,"owner.json"),r=i.existsSync(n)?JSON.parse(i.readFileSync(n,"utf8")):{},o=typeof r.pid=="number"?r.pid:null;return o!==null&&!G(o)?!0:Date.now()-i.statSync(e).mtimeMs>t}catch{return!0}}function G(e){try{return process.kill(e,0),!0}catch{return!1}}function U(e){return!!e&&typeof e=="object"&&e.code==="EEXIST"}function $(e){return new Promise(t=>setTimeout(t,e))}function S(e,t,n){const r=n instanceof D.CliError?n:null;return{id:e,ok:!1,severity:"required",message:t,code:r?.code??"DOCTOR_RUNTIME_CHECK_FAILED",details:{error:n instanceof Error?n.message:String(n),...r?.details&&typeof r.details=="object"&&!Array.isArray(r.details)?{details:r.details}:{}},hints:r?.details&&typeof r.details=="object"&&!Array.isArray(r.details)&&Array.isArray(r.details.hints)?r.details.hints:(0,_.buildAutoStartHints)()}}function J(e){const t=e.metadata&&typeof e.metadata=="object"&&!Array.isArray(e.metadata)?e.metadata:{},n=e.artifacts&&typeof e.artifacts=="object"&&!Array.isArray(e.artifacts)?e.artifacts:{};return{hostId:typeof e.hostId=="string"?e.hostId:null,hostKind:typeof e.hostKind=="string"?e.hostKind:t.hostKind??null,reused:e.reused===!0,codeCommand:typeof e.codeCommand=="string"?e.codeCommand:t.codeCommand??null,codeCommandSource:typeof e.codeCommandSource=="string"?e.codeCommandSource:t.codeCommandSource??null,runDir:typeof e.runDir=="string"?e.runDir:t.runDir??null,logsDir:typeof n.logsDir=="string"?n.logsDir:t.logsDir??null,instanceId:typeof t.instanceId=="string"?t.instanceId:null,serveWebPid:typeof t.serveWebPid=="number"?t.serveWebPid:null,browserPid:typeof t.browserPid=="number"?t.browserPid:null}}function z(e){const t=e.selectedInstance&&typeof e.selectedInstance=="object"&&!Array.isArray(e.selectedInstance)?e.selectedInstance:{},n=e.response&&typeof e.response=="object"&&!Array.isArray(e.response)?e.response:{};return{instanceId:typeof t.instanceId=="string"?t.instanceId:n.instanceId??null,reason:typeof t.reason=="string"?t.reason:null,matchedWorkspace:typeof t.matchedWorkspace=="string"?t.matchedWorkspace:null,pid:typeof n.pid=="number"?n.pid:null,protocolVersion:typeof n.protocolVersion=="number"?n.protocolVersion:null,extensionVersion:typeof n.extensionVersion=="string"?n.extensionVersion:null}}function Z(){const e=Number(process.versions.node.split(".")[0]??"0"),t=Number.isInteger(e)&&e>=20;return f({id:"node-version",ok:t,severity:"required",message:t?"Node.js version is supported.":"Node.js 20 or newer is required.",details:{node:process.version,required:">=20"}},{code:"DOCTOR_NODE_VERSION_UNSUPPORTED",hints:[(0,l.actionHint)("Install Node.js 20 or newer, then retry the CLI command.")]})}function Q(e){const t=a.join(e,"package.json"),n=a.join(e,"dist","bin","aib.js"),r=i.existsSync(t)&&i.existsSync(n);return f({id:"cli-package-root",ok:r,severity:"required",message:r?"CLI package root looks complete.":"CLI package root is missing package metadata or the built bin.",details:{packageRoot:e,packageJsonPath:t,packageJsonExists:i.existsSync(t),binPath:n,binExists:i.existsSync(n)}},{code:"DOCTOR_CLI_PACKAGE_INCOMPLETE",hints:[(0,l.commandHint)("npm run cli:build","Build the local CLI package."),(0,l.actionHint)("For an installed package, reinstall the CLI package.")]})}function Y(e,t){const n=a.join(e,"dist","managed-host","manage-serve-web-host.cjs"),r=t?a.join(t,"scripts","managed-host","manage-serve-web-host.cjs"):null,o=k(d.CLI_ENV.managedHostScript),s=!!(o&&i.existsSync(o)||i.existsSync(n)||r&&i.existsSync(r));return f({id:"managed-host-assets",ok:s,severity:"required",message:s?"Managed host assets are available.":"Managed host assets were not found.",details:{env:d.CLI_ENV.managedHostScript,envScriptPath:o,envScriptExists:o?i.existsSync(o):!1,packagedScriptPath:n,packagedScriptExists:i.existsSync(n),repoScriptPath:r,repoScriptExists:r?i.existsSync(r):!1}},{code:"DOCTOR_MANAGED_HOST_ASSETS_MISSING",hints:(0,_.buildAutoStartHints)()})}function ee(e,t){try{const n=(0,M.resolveExtensionVsixPath)({packageRoot:e,repoRoot:t}),r=i.existsSync(n.path);return f({id:"extension-vsix",ok:r,severity:"required",message:r?"Extension VSIX is available.":"Extension VSIX path resolved but the file does not exist.",details:{...n,exists:r}},{code:"DOCTOR_EXTENSION_VSIX_MISSING",hints:[(0,l.configHint)(d.CLI_ENV.extensionVsix,"Point to an existing packaged VSIX artifact."),(0,l.commandHint)("npm --prefix packages/extension run package:vsix","Build a local VSIX artifact.")]})}catch(n){return{id:"extension-vsix",ok:!1,severity:"required",message:"Extension VSIX resolution failed.",code:"DOCTOR_EXTENSION_VSIX_RESOLUTION_FAILED",details:{error:n instanceof Error?n.message:String(n),code:typeof n=="object"&&n!==null&&"code"in n?String(n.code):null},hints:(0,_.buildAutoStartHints)()}}}function te(e){const t=process.env[d.CLI_ENV.ideCommand]?.trim(),n=process.env[d.CLI_ENV.managedHostKind]?.trim()||re(e),r=k(d.CLI_ENV.codeServerPath),o=a.join(e,"runtimes","code-server","node_modules","code-server","out","node","entry.js"),s=(0,v.managedRuntimePlatformStatus)(e),u=(0,C.resolveNodeRuntime)(e),g=i.existsSync(o)&&s.ok?`${u.command} ${o}`:null,m=a.join(e,"runtimes","code-server","bin",process.platform==="win32"?"code-server.cmd":"code-server"),c=[r,g,m,"code-server"].filter(h=>!!h),E=t?[t]:n==="code-server"?c:process.platform==="win32"?q:T,y=E.map(h=>({candidate:h,result:h===g?{ok:!0,path:o}:I(h)})).find(h=>h.result.ok),b=!!y;return f({id:"ide-command",ok:b,severity:"required",message:b?"VS Code CLI command is available.":"VS Code CLI command was not found.",details:{env:d.CLI_ENV.ideCommand,codeServerEnv:d.CLI_ENV.codeServerPath,hostKindEnv:d.CLI_ENV.managedHostKind,hostKind:n,explicitIdeCommand:t||null,nodeRuntimeCommand:u.command,nodeRuntimeSource:u.source,platformMarker:{ok:s.ok,reason:s.reason,expectedPlatformKey:s.expectedPlatformKey,actualPlatformKey:s.actualPlatformKey,markerPath:s.markerPath},candidates:E,resolvedCommand:y?.candidate??null,resolvedPath:y?.result.path??null}},{code:"DOCTOR_IDE_COMMAND_MISSING",hints:[(0,l.configHint)(d.CLI_ENV.ideCommand,"Set an explicit VS Code-compatible CLI command path."),(0,l.configHint)(d.CLI_ENV.codeServerPath,"Set an explicit Coder code-server executable path when using the code-server managed host."),(0,l.actionHint)("Install VS Code, install Coder code-server, or include a packaged code-server runtime.")]})}function ne(e){const t=(0,C.findPackagedNodeRuntime)(e),n=(0,C.resolveNodeRuntime)(e),r=(0,v.managedRuntimePlatformStatus)(e),o=i.existsSync(a.join(e,"runtimes","code-server","node_modules","code-server","out","node","entry.js"))&&r.ok;return f({id:"managed-runtime-node",ok:!!t||!o,severity:o?"required":"optional",message:t?"Bundled Node runtime is available for managed runtime.":o?"Bundled Node runtime is missing for package-local code-server.":"Bundled Node runtime is not needed because package-local code-server is not present.",details:{env:d.CLI_ENV.nodePath,packagedNodePath:t,resolvedCommand:n.command,resolvedSource:n.source,packagedCodeServerPresent:o,platformMarker:{ok:r.ok,reason:r.reason,expectedPlatformKey:r.expectedPlatformKey,actualPlatformKey:r.actualPlatformKey,markerPath:r.markerPath}}},{code:"DOCTOR_MANAGED_RUNTIME_NODE_MISSING",hints:[(0,l.commandHint)("node scripts/runtime/provision-managed-runtimes.cjs --node","Provision the bundled Node runtime."),(0,l.actionHint)("For installed packages, reprovision or reinstall the managed runtime bundle.")]})}function re(e){const t=a.join(e,"runtimes","code-server","node_modules","code-server","out","node","entry.js");return i.existsSync(t)&&(0,v.managedRuntimePlatformStatus)(e).ok?"code-server":null}function oe(e){const t=k(d.CLI_ENV.chromePath),r=[t,se(e),"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe","C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe","C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe","C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe","google-chrome","chromium","chromium-browser","microsoft-edge"].filter(s=>!!s).map(s=>({candidate:s,result:I(s)})).find(s=>s.result.ok),o=!!r;return f({id:"headless-browser",ok:o,severity:"required",message:o?"Headless browser command is available.":"Chrome or Edge was not found for managed serve-web activation.",details:{env:d.CLI_ENV.chromePath,explicitChromePath:t,resolvedCommand:r?.candidate??null}},{code:"DOCTOR_HEADLESS_BROWSER_MISSING",hints:[(0,l.configHint)(d.CLI_ENV.chromePath,"Set an explicit Chrome or Edge executable path."),(0,l.actionHint)("Install Chrome, Edge, Chromium, or another compatible headless browser.")]})}function se(e){const t=[a.join(e,"runtimes","browser"),a.join(e,"runtimes","chrome"),a.join(e,"runtimes","chromium")],n=process.platform==="win32"?new Set(["chrome.exe","chromium.exe","msedge.exe"]):new Set(["chrome","chromium"]);for(const r of t){const o=N(r,n,5);if(o)return o}return null}function N(e,t,n){if(!i.existsSync(e)||n<0)return null;let r;try{r=i.readdirSync(e,{withFileTypes:!0})}catch{return null}for(const o of r){const s=a.join(e,o.name);if(o.isFile()&&t.has(o.name)&&I(s).ok)return s}for(const o of r){if(!o.isDirectory())continue;const s=N(a.join(e,o.name),t,n-1);if(s)return s}return null}function ie(e){const t=process.platform==="win32"||process.platform==="linux";return f({id:"managed-runtime-platform",ok:t||e!==!0,severity:e?"required":"optional",message:t?"Managed serve-web auto-start is supported on this platform.":"Managed serve-web auto-start is currently supported on Windows and Linux.",details:{platform:process.platform,runtimeRequested:e}},{code:"DOCTOR_MANAGED_RUNTIME_PLATFORM_UNSUPPORTED",hints:[(0,l.actionHint)("Run static doctor checks only, or use a Windows/Linux environment for managed runtime.")]})}function ae(){const e=[a.resolve(__dirname),process.cwd()];for(const t of e){let n=t;for(;;){const r=a.join(n,"scripts","managed-host","manage-serve-web-host.cjs"),o=a.join(n,"package.json");if(i.existsSync(r)&&i.existsSync(o))return n;const s=a.dirname(n);if(s===n)break;n=s}}return null}function k(e){const t=process.env[e];return t&&t.trim()?a.resolve(t.trim()):null}function I(e){if(ce(e))return{ok:i.existsSync(e),status:i.existsSync(e)?0:1,error:null};const t=process.platform==="win32"?(0,w.spawnSync)("where.exe",[e],{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","pipe"]}):(0,w.spawnSync)("sh",["-lc",`command -v "${e.replace(/"/g,'\\"')}"`],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return{ok:t.status===0,status:t.status,error:t.error?t.error.message:null}}function ce(e){return e.includes("\\")||e.includes("/")||/^[A-Za-z]:/.test(e)}
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.runDoctor = runDoctor;
37
+ const fs = __importStar(require("node:fs"));
38
+ const path = __importStar(require("node:path"));
39
+ const agent_text_1 = require("../shared/agent-text");
40
+ const readiness_text_1 = require("../diagnostics/readiness-text");
41
+ const bundled_node_1 = require("../runtime/bundled-node");
42
+ async function runDoctor(options) {
43
+ const progress = options.progress === true
44
+ ? (line) => process.stderr.write(`${line}\n`)
45
+ : (_line) => { };
46
+ const packageRoot = path.resolve(__dirname, "..", "..");
47
+ const checks = [
48
+ runCheck(progress, "node version", checkNodeVersion),
49
+ runCheck(progress, "package layout", () => checkPackageRoot(packageRoot)),
50
+ runCheck(progress, "bundled node", () => checkBundledNode(packageRoot))
51
+ ];
52
+ const failedRequired = checks.filter((check) => check.severity === "required" && !check.ok);
53
+ const failedOptional = checks.filter((check) => check.severity === "optional" && !check.ok);
54
+ const response = {
55
+ ok: failedRequired.length === 0,
56
+ command: "doctor",
57
+ mode: "static",
58
+ cwd: path.resolve(options.cwd),
59
+ generatedAt: new Date().toISOString(),
60
+ platform: {
61
+ node: process.version,
62
+ platform: process.platform,
63
+ arch: process.arch
64
+ },
65
+ packageRoot,
66
+ summary: {
67
+ checkCount: checks.length,
68
+ passedCount: checks.filter((check) => check.ok).length,
69
+ failedRequiredCount: failedRequired.length,
70
+ failedOptionalCount: failedOptional.length
71
+ },
72
+ checks
73
+ };
74
+ if (options.progress === true) {
75
+ progress(failedRequired.length === 0 ? "all checks passed" : "checks failed");
76
+ if (failedRequired.length === 0) {
77
+ progress("you are good to go \u{1F44D}");
78
+ }
79
+ }
80
+ return options.json === true
81
+ ? response
82
+ : (0, agent_text_1.attachAgentText)(response, (0, readiness_text_1.formatDoctorText)(response, { verbose: options.verbose === true }));
83
+ }
84
+ function runCheck(progress, label, check) {
85
+ progress(`checking ${label}`);
86
+ const result = check();
87
+ progress(`${label}: ${result.ok ? "ok" : "failed"}`);
88
+ return result;
89
+ }
90
+ function checkNodeVersion() {
91
+ const major = Number(process.versions.node.split(".")[0] ?? "0");
92
+ const ok = Number.isInteger(major) && major >= 20;
93
+ return {
94
+ id: "node-version",
95
+ ok,
96
+ severity: "required",
97
+ message: ok ? "Node.js version is supported." : "Node.js 20 or newer is required.",
98
+ ...(ok ? {} : { code: "DOCTOR_NODE_VERSION_UNSUPPORTED" }),
99
+ details: { node: process.version, required: ">=20" }
100
+ };
101
+ }
102
+ function checkPackageRoot(packageRoot) {
103
+ const packageJsonPath = path.join(packageRoot, "package.json");
104
+ const binPath = path.join(packageRoot, "dist", "bin", "aib.js");
105
+ const ok = fs.existsSync(packageJsonPath) && fs.existsSync(binPath);
106
+ return {
107
+ id: "cli-package-root",
108
+ ok,
109
+ severity: "required",
110
+ message: ok ? "CLI package root looks complete." : "CLI package root is missing package metadata or the built bin.",
111
+ ...(ok ? {} : { code: "DOCTOR_CLI_PACKAGE_INCOMPLETE" }),
112
+ details: {
113
+ packageRoot,
114
+ packageJsonPath,
115
+ packageJsonExists: fs.existsSync(packageJsonPath),
116
+ binPath,
117
+ binExists: fs.existsSync(binPath)
118
+ }
119
+ };
120
+ }
121
+ function checkBundledNode(packageRoot) {
122
+ const packagedNodePath = (0, bundled_node_1.findPackagedNodeRuntime)(packageRoot);
123
+ const nodeRuntime = (0, bundled_node_1.resolveNodeRuntime)(packageRoot);
124
+ return {
125
+ id: "bundled-node",
126
+ ok: true,
127
+ severity: "optional",
128
+ message: packagedNodePath
129
+ ? "Bundled Node runtime is available."
130
+ : "Bundled Node runtime is absent; the current Node runtime will be used.",
131
+ details: {
132
+ packagedNodePath,
133
+ resolvedCommand: nodeRuntime.command,
134
+ resolvedSource: nodeRuntime.source
135
+ }
136
+ };
137
+ }
@@ -1 +1,117 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runExecutionCommand=P;const E=require("./apply-module-plan"),m=require("./file-refactor-batch"),R=require("./file-refactor-batch-execution-cache"),o=require("./declaration-command"),p=require("./file-rename"),x=require("./file-rename-execution-cache"),C=require("./file-move-to-dir"),D=require("./file-move-to-dir-execution-cache"),N=require("./module-plan-cache"),A=require("./refactor-batch"),y=require("./refactor-batch-execution-cache"),B=require("./rename-entities"),F=require("./rename-execution-cache"),q=require("../shared/errors");function P(e,t){const[r="status",...a]=t;if(r==="status"){const u=b(a,"--execution")??U(a)??"last";return O(e,u)}throw new q.CliError("UNKNOWN_EXECUTION_COMMAND",`Unknown execution command: ${r}`,{availableCommands:["execution status"]})}function O(e,t){if(t==="last"){const i=M(e,"last"),c=(0,y.tryReadRefactorBatchExecutionStatus)(e,"last"),l=(0,F.tryReadRenameExecutionStatus)(e,"last"),s=(0,D.tryReadFileMoveToDirExecutionStatus)(e,"last"),d=(0,x.tryReadFileRenameExecutionStatus)(e,"last"),f=(0,R.tryReadFileRefactorBatchExecutionStatus)(e,"last"),_=(0,o.tryReadDeclarationExecutionStatus)(e,"last"),h=[i?{updatedAt:Date.parse(i.updatedAt),read:()=>(0,E.readCachedModulePlanExecution)(e,"last")}:null,c?{updatedAt:Date.parse(c.updatedAt),read:()=>(0,A.readCachedRefactorBatchExecution)(e,"last")}:null,l?{updatedAt:Date.parse(l.updatedAt),read:()=>(0,B.readCachedRenameExecution)(e,"last")}:null,s?{updatedAt:Date.parse(s.updatedAt),read:()=>(0,C.readCachedFileMoveToDirExecution)(e,"last")}:null,d?{updatedAt:Date.parse(d.updatedAt),read:()=>(0,p.readCachedFileRenameExecution)(e,"last")}:null,f?{updatedAt:Date.parse(f.updatedAt),read:()=>(0,m.readCachedFileRefactorBatchExecution)(e,"last")}:null,_?{updatedAt:Date.parse(_.updatedAt),read:()=>(0,o.readCachedDeclarationExecution)(e,"last")}:null].filter(n=>!!n);if(h.length>0){const n=h.sort((v,T)=>T.updatedAt-v.updatedAt)[0];if(n)return n.read()}S(t)}if((0,D.tryReadFileMoveToDirExecutionStatus)(e,t))return(0,C.readCachedFileMoveToDirExecution)(e,t);if((0,x.tryReadFileRenameExecutionStatus)(e,t))return(0,p.readCachedFileRenameExecution)(e,t);if((0,R.tryReadFileRefactorBatchExecutionStatus)(e,t))return(0,m.readCachedFileRefactorBatchExecution)(e,t);if((0,F.tryReadRenameExecutionStatus)(e,t))return(0,B.readCachedRenameExecution)(e,t);if((0,y.tryReadRefactorBatchExecutionStatus)(e,t))return(0,A.readCachedRefactorBatchExecution)(e,t);if(M(e,t))return(0,E.readCachedModulePlanExecution)(e,t);if((0,o.tryReadDeclarationExecutionStatus)(e,t))return(0,o.readCachedDeclarationExecution)(e,t);S(t)}function M(e,t){try{return(0,N.readModulePlanExecutionStatus)(e,t)}catch{return null}}function S(e){throw new q.CliError("EXECUTION_NOT_FOUND",`Execution status not found: ${e}`,{executionId:e})}function b(e,t){const r=e.indexOf(t);if(r<0)return null;const a=e[r+1];return a&&!a.startsWith("--")?a:null}function U(e){return e.find(t=>!t.startsWith("--"))??null}
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runExecutionCommand = runExecutionCommand;
4
+ const apply_module_plan_1 = require("./apply-module-plan");
5
+ const file_refactor_batch_1 = require("./file-refactor-batch");
6
+ const file_refactor_batch_execution_cache_1 = require("./file-refactor-batch-execution-cache");
7
+ const declaration_command_1 = require("./declaration-command");
8
+ const file_rename_1 = require("./file-rename");
9
+ const file_rename_execution_cache_1 = require("./file-rename-execution-cache");
10
+ const file_move_to_dir_1 = require("./file-move-to-dir");
11
+ const file_move_to_dir_execution_cache_1 = require("./file-move-to-dir-execution-cache");
12
+ const module_plan_cache_1 = require("./module-plan-cache");
13
+ const refactor_batch_1 = require("./refactor-batch");
14
+ const refactor_batch_execution_cache_1 = require("./refactor-batch-execution-cache");
15
+ const mutate_execution_status_1 = require("./mutate-execution-status");
16
+ const mutate_execution_cache_1 = require("./mutate-execution-cache");
17
+ const rename_entities_1 = require("./rename-entities");
18
+ const rename_execution_cache_1 = require("./rename-execution-cache");
19
+ const errors_1 = require("../shared/errors");
20
+ function runExecutionCommand(cwd, restArgs) {
21
+ const [action = "status", ...actionArgs] = restArgs;
22
+ if (action === "status") {
23
+ const executionId = readFlagValue(actionArgs, "--execution") ?? firstPositional(actionArgs) ?? "last";
24
+ return readCachedExecution(cwd, executionId);
25
+ }
26
+ throw new errors_1.CliError("UNKNOWN_EXECUTION_COMMAND", `Unknown execution command: ${action}`, {
27
+ availableCommands: [
28
+ "execution status"
29
+ ]
30
+ });
31
+ }
32
+ function readCachedExecution(cwd, executionId) {
33
+ if (executionId === "last") {
34
+ const mutate = (0, mutate_execution_cache_1.tryReadMutateExecutionStatus)(cwd, "last");
35
+ const modulePlan = tryReadModulePlanExecutionStatus(cwd, "last");
36
+ const refactorBatch = (0, refactor_batch_execution_cache_1.tryReadRefactorBatchExecutionStatus)(cwd, "last");
37
+ const rename = (0, rename_execution_cache_1.tryReadRenameExecutionStatus)(cwd, "last");
38
+ const fileMoveToDir = (0, file_move_to_dir_execution_cache_1.tryReadFileMoveToDirExecutionStatus)(cwd, "last");
39
+ const fileRename = (0, file_rename_execution_cache_1.tryReadFileRenameExecutionStatus)(cwd, "last");
40
+ const fileRefactorBatch = (0, file_refactor_batch_execution_cache_1.tryReadFileRefactorBatchExecutionStatus)(cwd, "last");
41
+ const declaration = (0, declaration_command_1.tryReadDeclarationExecutionStatus)(cwd, "last");
42
+ const candidates = [
43
+ mutate ? { updatedAt: Date.parse(mutate.updatedAt), read: () => (0, mutate_execution_status_1.readCachedMutateExecution)(cwd, "last", { includeOperationHeader: true }) } : null,
44
+ modulePlan ? { updatedAt: Date.parse(modulePlan.updatedAt), read: () => (0, apply_module_plan_1.readCachedModulePlanExecution)(cwd, "last") } : null,
45
+ refactorBatch ? { updatedAt: Date.parse(refactorBatch.updatedAt), read: () => (0, refactor_batch_1.readCachedRefactorBatchExecution)(cwd, "last") } : null,
46
+ rename ? { updatedAt: Date.parse(rename.updatedAt), read: () => (0, rename_entities_1.readCachedRenameExecution)(cwd, "last") } : null,
47
+ fileMoveToDir ? { updatedAt: Date.parse(fileMoveToDir.updatedAt), read: () => (0, file_move_to_dir_1.readCachedFileMoveToDirExecution)(cwd, "last") } : null,
48
+ fileRename ? { updatedAt: Date.parse(fileRename.updatedAt), read: () => (0, file_rename_1.readCachedFileRenameExecution)(cwd, "last") } : null,
49
+ fileRefactorBatch ? { updatedAt: Date.parse(fileRefactorBatch.updatedAt), read: () => (0, file_refactor_batch_1.readCachedFileRefactorBatchExecution)(cwd, "last") } : null,
50
+ declaration ? { updatedAt: Date.parse(declaration.updatedAt), read: () => (0, declaration_command_1.readCachedDeclarationExecution)(cwd, "last") } : null
51
+ ].filter((candidate) => Boolean(candidate));
52
+ if (candidates.length > 0) {
53
+ const latest = candidates.sort((left, right) => right.updatedAt - left.updatedAt)[0];
54
+ if (latest) {
55
+ return latest.read();
56
+ }
57
+ }
58
+ throwExecutionNotFound(executionId);
59
+ }
60
+ const mutate = (0, mutate_execution_cache_1.tryReadMutateExecutionStatus)(cwd, executionId);
61
+ if (mutate) {
62
+ return (0, mutate_execution_status_1.readCachedMutateExecution)(cwd, executionId);
63
+ }
64
+ const fileMoveToDir = (0, file_move_to_dir_execution_cache_1.tryReadFileMoveToDirExecutionStatus)(cwd, executionId);
65
+ if (fileMoveToDir) {
66
+ return (0, file_move_to_dir_1.readCachedFileMoveToDirExecution)(cwd, executionId);
67
+ }
68
+ const fileRename = (0, file_rename_execution_cache_1.tryReadFileRenameExecutionStatus)(cwd, executionId);
69
+ if (fileRename) {
70
+ return (0, file_rename_1.readCachedFileRenameExecution)(cwd, executionId);
71
+ }
72
+ const fileRefactorBatch = (0, file_refactor_batch_execution_cache_1.tryReadFileRefactorBatchExecutionStatus)(cwd, executionId);
73
+ if (fileRefactorBatch) {
74
+ return (0, file_refactor_batch_1.readCachedFileRefactorBatchExecution)(cwd, executionId);
75
+ }
76
+ const rename = (0, rename_execution_cache_1.tryReadRenameExecutionStatus)(cwd, executionId);
77
+ if (rename) {
78
+ return (0, rename_entities_1.readCachedRenameExecution)(cwd, executionId);
79
+ }
80
+ const refactorBatch = (0, refactor_batch_execution_cache_1.tryReadRefactorBatchExecutionStatus)(cwd, executionId);
81
+ if (refactorBatch) {
82
+ return (0, refactor_batch_1.readCachedRefactorBatchExecution)(cwd, executionId);
83
+ }
84
+ const modulePlan = tryReadModulePlanExecutionStatus(cwd, executionId);
85
+ if (modulePlan) {
86
+ return (0, apply_module_plan_1.readCachedModulePlanExecution)(cwd, executionId);
87
+ }
88
+ const declaration = (0, declaration_command_1.tryReadDeclarationExecutionStatus)(cwd, executionId);
89
+ if (declaration) {
90
+ return (0, declaration_command_1.readCachedDeclarationExecution)(cwd, executionId);
91
+ }
92
+ throwExecutionNotFound(executionId);
93
+ }
94
+ function tryReadModulePlanExecutionStatus(cwd, executionId) {
95
+ try {
96
+ return (0, module_plan_cache_1.readModulePlanExecutionStatus)(cwd, executionId);
97
+ }
98
+ catch {
99
+ return null;
100
+ }
101
+ }
102
+ function throwExecutionNotFound(executionId) {
103
+ throw new errors_1.CliError("EXECUTION_NOT_FOUND", `Execution status not found: ${executionId}`, {
104
+ executionId
105
+ });
106
+ }
107
+ function readFlagValue(args, flag) {
108
+ const index = args.indexOf(flag);
109
+ if (index < 0) {
110
+ return null;
111
+ }
112
+ const value = args[index + 1];
113
+ return value && !value.startsWith("--") ? value : null;
114
+ }
115
+ function firstPositional(args) {
116
+ return args.find((arg) => !arg.startsWith("--")) ?? null;
117
+ }
@@ -0,0 +1,178 @@
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.runExportsStarCollapseSegment = runExportsStarCollapseSegment;
37
+ exports.runExportsStarCollapsePreviewBatch = runExportsStarCollapsePreviewBatch;
38
+ exports.formatExportsStarCollapseBatchText = formatExportsStarCollapseBatchText;
39
+ exports.formatExportsStarCollapseWriteText = formatExportsStarCollapseWriteText;
40
+ exports.attachExportsStarCollapseWriteView = attachExportsStarCollapseWriteView;
41
+ const crypto = __importStar(require("node:crypto"));
42
+ const exports_star_collapse_preview_1 = require("../mutation/exports-star-collapse-preview");
43
+ const agent_text_1 = require("../shared/agent-text");
44
+ const session_workspace_1 = require("./session-workspace");
45
+ const exports_star_expand_apply_1 = require("../mutation/exports-star-expand-apply");
46
+ async function runExportsStarCollapseSegment(cwd, segment, action) {
47
+ if (action === "execute") {
48
+ const response = (0, exports_star_expand_apply_1.executeCurrentExportsStarCollapseBatch)(cwd, [intentFromSegment(segment)]);
49
+ const withView = attachExportsStarCollapseWriteView(cwd, response);
50
+ return (0, agent_text_1.attachAgentText)(withView, formatExportsStarCollapseWriteText("execute", withView));
51
+ }
52
+ return (await runExportsStarCollapsePreviewBatch(cwd, [segment]))[0];
53
+ }
54
+ async function runExportsStarCollapsePreviewBatch(cwd, segments, semanticContextPool, persistApplyPlan = false) {
55
+ const session = new exports_star_collapse_preview_1.ExportsStarCollapsePreviewSession(cwd, semanticContextPool);
56
+ try {
57
+ const results = segments.map((segment) => session.plan({
58
+ sourceFile: readString(segment.sourceFile) ?? "",
59
+ selectors: readStringArray(segment.selectors)
60
+ }));
61
+ const intents = segments.map(intentFromSegment);
62
+ const previewId = persistApplyPlan ? (0, exports_star_expand_apply_1.persistExportsStarCollapsePreview)(cwd, intents, results) : null;
63
+ const applyAvailable = Boolean(previewId);
64
+ const saved = (0, session_workspace_1.saveSessionResultViewJson)(cwd, `res_${crypto.randomBytes(4).toString("hex")}`, {
65
+ kind: "exportsStarCollapseBatch",
66
+ operation: "exports.star.collapse.preview",
67
+ applyAvailable,
68
+ ...(previewId ? { previewId } : {}),
69
+ barrelCount: results.length,
70
+ resources: session.resources,
71
+ barrels: results
72
+ });
73
+ return results.map((result) => {
74
+ const response = {
75
+ ...result,
76
+ applyAvailable,
77
+ ...(previewId ? { previewId, next: `aib mutate apply ${previewId}` } : {}),
78
+ ...(saved ? { view: saved.saved } : {})
79
+ };
80
+ return (0, agent_text_1.attachAgentText)(response, formatExportsStarCollapseAgentText(result, readString(response.view), previewId ?? undefined));
81
+ });
82
+ }
83
+ finally {
84
+ session.dispose();
85
+ }
86
+ }
87
+ function formatExportsStarCollapseBatchText(responses, action = "preview") {
88
+ const planned = responses.reduce((count, response) => count + (readNumber(response.plannedCount) ?? 0), 0);
89
+ const retained = responses.flatMap((response) => readObjectArray(response.retained));
90
+ const files = [...new Set(responses.flatMap((response) => readStringArray(response.filesTouched)))];
91
+ const view = responses.map((response) => readString(response.view)).find(Boolean);
92
+ const lines = [
93
+ `mutate.${action}${planned > 0 && retained.length > 0 ? " partial" : ""}: ${planned} ${noun(planned, "edge")} ${action === "preview" ? "planned" : "collapsed"} in ${files.length} ${noun(files.length, "file")}; ${retained.length} retained`
94
+ ];
95
+ if (files.length)
96
+ lines.push(`files: ${bounded(files, 4)}`);
97
+ appendRetained(lines, retained);
98
+ if (view)
99
+ lines.push(`view: ${view}`);
100
+ const previewId = responses.map((response) => readString(response.previewId)).find(Boolean);
101
+ lines.push(action === "preview" && previewId
102
+ ? `next: aib mutate apply ${previewId}`
103
+ : retained.length
104
+ ? "next: Review retained exports.star.collapse evidence and fix remaining edges manually or rerun with adjusted intent."
105
+ : action === "preview"
106
+ ? "next: Review retained exports.star.collapse evidence; no safe edits are available to apply."
107
+ : "next: Continue with the refactor or run focused checks.");
108
+ return lines.join("\n");
109
+ }
110
+ function formatExportsStarCollapseWriteText(action, response) {
111
+ if (response.ok === false) {
112
+ const code = readString(response.code) ?? "EXPORTS_STAR_COLLAPSE_FAILED";
113
+ const error = readString(response.error) ?? "exports.star.collapse could not be committed.";
114
+ const view = readString(response.view);
115
+ return [
116
+ `mutate.${action} failed`,
117
+ `${code}: ${error}`,
118
+ ...(view ? [`view: ${view}`] : []),
119
+ code.endsWith("ALREADY_APPLIED")
120
+ ? "next: Continue from the already-applied workspace state or run focused checks."
121
+ : "next: Rerun exports.star.collapse preview against the current workspace state."
122
+ ].join("\n");
123
+ }
124
+ return formatExportsStarCollapseBatchText([response], action);
125
+ }
126
+ function attachExportsStarCollapseWriteView(cwd, response) {
127
+ const saved = (0, session_workspace_1.saveSessionResultViewJson)(cwd, `res_${crypto.randomBytes(4).toString("hex")}`, {
128
+ kind: "exportsStarCollapseWrite",
129
+ ...response
130
+ });
131
+ return saved ? { ...response, view: saved.saved } : response;
132
+ }
133
+ function formatExportsStarCollapseAgentText(result, view, previewId) {
134
+ const lines = [
135
+ `exports.star.collapse preview${result.partial ? " partial" : ""}: ${result.plannedCount} ${noun(result.plannedCount, "edge")} planned in ${result.filesTouched.length} ${noun(result.filesTouched.length, "file")}; ${result.retainedCount} retained`
136
+ ];
137
+ if (result.filesTouched.length)
138
+ lines.push(`files: ${bounded(result.filesTouched, 4)}`);
139
+ appendRetained(lines, result.retained);
140
+ if (view)
141
+ lines.push(`view: ${view}`);
142
+ lines.push(`next: ${previewId ? `aib mutate apply ${previewId}` : result.next}`);
143
+ return lines.join("\n");
144
+ }
145
+ function intentFromSegment(segment) {
146
+ return { sourceFile: readString(segment.sourceFile) ?? "", selectors: readStringArray(segment.selectors) };
147
+ }
148
+ function appendRetained(lines, retained) {
149
+ if (!retained.length)
150
+ return;
151
+ lines.push("retained:");
152
+ for (const item of retained.slice(0, 4)) {
153
+ const selector = readString(item.selector) ?? "edge";
154
+ const reason = readString(item.reason) ?? readString(item.code) ?? "retained";
155
+ const candidates = readStringArray(item.candidates);
156
+ lines.push(`${selector}: ${reason}${candidates.length ? ` (${candidates.join(", ")})` : ""}`);
157
+ }
158
+ if (retained.length > 4)
159
+ lines.push(`+${retained.length - 4} retained`);
160
+ }
161
+ function readString(value) {
162
+ return typeof value === "string" && value.length > 0 ? value : undefined;
163
+ }
164
+ function readStringArray(value) {
165
+ return Array.isArray(value) ? value.filter((item) => typeof item === "string" && item.length > 0) : [];
166
+ }
167
+ function readObjectArray(value) {
168
+ return Array.isArray(value) ? value.filter((item) => Boolean(item) && typeof item === "object" && !Array.isArray(item)) : [];
169
+ }
170
+ function readNumber(value) {
171
+ return typeof value === "number" && Number.isFinite(value) ? value : undefined;
172
+ }
173
+ function bounded(values, limit) {
174
+ return values.length <= limit ? values.join(", ") : `${values.slice(0, limit).join(", ")} +${values.length - limit}`;
175
+ }
176
+ function noun(count, word) {
177
+ return count === 1 ? word : `${word}s`;
178
+ }