@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,996 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatMutateFileLayoutValidationText = formatMutateFileLayoutValidationText;
4
+ exports.formatMutateAggregateText = formatMutateAggregateText;
5
+ exports.defaultDeclarationCleanupPartialNext = defaultDeclarationCleanupPartialNext;
6
+ exports.formatMutateAggregateSummary = formatMutateAggregateSummary;
7
+ exports.formatDeclarationCleanupAggregateSummary = formatDeclarationCleanupAggregateSummary;
8
+ exports.formatMutateCompletedGroupsSummary = formatMutateCompletedGroupsSummary;
9
+ exports.formatMutateManualExtractionOnlySummary = formatMutateManualExtractionOnlySummary;
10
+ exports.mutateCompletedGroupVerb = mutateCompletedGroupVerb;
11
+ exports.appendMutateAggregateOperationSections = appendMutateAggregateOperationSections;
12
+ exports.appendImportNormalizeSampleLines = appendImportNormalizeSampleLines;
13
+ exports.appendImportNormalizePolicyLines = appendImportNormalizePolicyLines;
14
+ exports.groupImportNormalizePolicies = groupImportNormalizePolicies;
15
+ exports.compareImportNormalizePolicyGroups = compareImportNormalizePolicyGroups;
16
+ exports.importNormalizePolicySectionRank = importNormalizePolicySectionRank;
17
+ exports.importNormalizeRelationRank = importNormalizeRelationRank;
18
+ exports.formatImportNormalizePolicyGroupLine = formatImportNormalizePolicyGroupLine;
19
+ exports.groupJsonObjectsBy = groupJsonObjectsBy;
20
+ exports.appendImportRebaseSkippedAggregateLines = appendImportRebaseSkippedAggregateLines;
21
+ exports.formatCommonPathGlobForMutateOutput = formatCommonPathGlobForMutateOutput;
22
+ exports.appendMutateAggregateGroupLines = appendMutateAggregateGroupLines;
23
+ exports.appendMutateFailureSections = appendMutateFailureSections;
24
+ exports.appendMutateCompletedOperationSections = appendMutateCompletedOperationSections;
25
+ const mutate_result_projection_1 = require("./mutate-result-projection");
26
+ const mutate_file_view_1 = require("./mutate-file-view");
27
+ const mutate_declaration_output_1 = require("./mutate-declaration-output");
28
+ const mutate_failure_output_1 = require("./mutate-failure-output");
29
+ const mutate_execution_status_1 = require("./mutate-execution-status");
30
+ const mutate_object_output_1 = require("./mutate-object-output");
31
+ const mutate_output_values_1 = require("./mutate-output-values");
32
+ const MUTATE_OBJECT_OUTPUT_HELPERS = {
33
+ collectFilesTouched: mutate_execution_status_1.collectFilesTouched,
34
+ collectFilesWritten: mutate_execution_status_1.collectFilesWritten,
35
+ compactObject: mutate_output_values_1.compactObject,
36
+ formatPathForMutateOutput: mutate_failure_output_1.formatPathForMutateOutput,
37
+ isObject: mutate_output_values_1.isObject,
38
+ readNumber: mutate_output_values_1.readNumber,
39
+ readObjectArray: mutate_output_values_1.readObjectArray,
40
+ readString: mutate_output_values_1.readString,
41
+ readStringArray: mutate_output_values_1.readStringArray
42
+ };
43
+ function hasDeclarationCleanupIssues(aggregate) {
44
+ const operations = (0, mutate_output_values_1.isObject)(aggregate.operations) ? aggregate.operations : {};
45
+ const declarationCleanups = (0, mutate_output_values_1.readObjectArray)(operations.declarationCleanups);
46
+ return declarationCleanups.some((item) => ((0, mutate_output_values_1.readNumber)(item.notFoundCount) ?? 0) > 0 ||
47
+ ((0, mutate_output_values_1.readNumber)(item.failedCount) ?? 0) > 0 ||
48
+ ((0, mutate_output_values_1.readNumber)(item.sourceFailureCount) ?? 0) > 0 ||
49
+ ((0, mutate_output_values_1.readNumber)(item.skippedCount) ?? 0) > 0);
50
+ }
51
+ function formatMutateFileLayoutValidationText(cwd, response) {
52
+ const operation = (0, mutate_output_values_1.readString)(response.operation) ?? "mutate";
53
+ const validation = (0, mutate_output_values_1.isObject)(response.validation) ? response.validation : {};
54
+ const family = (0, mutate_output_values_1.readString)(validation.family) ?? "file move";
55
+ const lines = [
56
+ `${operation} failed`,
57
+ `${family} validation failed${operation === "mutate.preview" ? "" : " before execution"}`
58
+ ];
59
+ const missingSources = (0, mutate_output_values_1.readStringArray)(validation.missingSources);
60
+ if (missingSources.length > 0) {
61
+ lines.push("missing sources:");
62
+ lines.push(...missingSources.map((source) => (0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, source)));
63
+ }
64
+ const duplicateTargets = (0, mutate_output_values_1.readStringArray)(validation.duplicateTargets);
65
+ if (duplicateTargets.length > 0) {
66
+ lines.push("duplicate targets:");
67
+ lines.push(...duplicateTargets.map((target) => (0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, target)));
68
+ }
69
+ const unsupportedSources = (0, mutate_output_values_1.readStringArray)(validation.unsupportedSources);
70
+ if (unsupportedSources.length > 0) {
71
+ lines.push("unsupported sources:");
72
+ lines.push(...unsupportedSources.map((source) => (0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, source)));
73
+ }
74
+ if (operation !== "mutate.preview") {
75
+ lines.push("filesWritten:");
76
+ lines.push("none");
77
+ }
78
+ const action = operation.replace("mutate.", "");
79
+ lines.push(`next: fix the mutate request and rerun ${action}`);
80
+ return lines.join("\n");
81
+ }
82
+ function formatMutateAggregateText(cwd, response) {
83
+ const operation = (0, mutate_output_values_1.readString)(response.operation);
84
+ if (operation !== "mutate.preview" && operation !== "mutate.apply" && operation !== "mutate.execute") {
85
+ return null;
86
+ }
87
+ if (response.ok === false && (0, mutate_output_values_1.isObject)(response.validation)) {
88
+ return formatMutateFileLayoutValidationText(cwd, response);
89
+ }
90
+ const aggregate = (0, mutate_output_values_1.isObject)(response.aggregate)
91
+ ? response.aggregate
92
+ : (0, mutate_result_projection_1.buildMutateAggregateModel)((0, mutate_output_values_1.readObjectArray)(response.segments));
93
+ const semanticMovePartialOutcome = formatSemanticMovePartialOutcomeText(cwd, response, aggregate, operation);
94
+ if (semanticMovePartialOutcome) {
95
+ return semanticMovePartialOutcome;
96
+ }
97
+ const objectPackFailureText = (0, mutate_object_output_1.formatObjectPackAggregateFailureText)(cwd, operation, response, aggregate, MUTATE_OBJECT_OUTPUT_HELPERS);
98
+ if (objectPackFailureText) {
99
+ return objectPackFailureText;
100
+ }
101
+ const lines = [];
102
+ const manualExtractionOnly = response.ok === false &&
103
+ (0, mutate_failure_output_1.hasNestedManualExtraction)(response) &&
104
+ !(0, mutate_failure_output_1.hasNestedHardSemanticFailure)(response);
105
+ const declarationPartial = hasDeclarationCleanupIssues(aggregate);
106
+ const compactSemanticPreview = isCompactSemanticPreview(response, aggregate);
107
+ if (response.ok === false) {
108
+ const failedSegment = (0, mutate_output_values_1.readNumber)(response.failedSegment);
109
+ const groupCount = (0, mutate_output_values_1.readNumber)(aggregate.groupCount);
110
+ lines.push(response.partialDeclarationCleanup === true
111
+ ? `${operation}${(0, mutate_output_values_1.readString)(response.previewId) ? ` ${(0, mutate_output_values_1.readString)(response.previewId)}` : ""} partial`
112
+ : manualExtractionOnly
113
+ ? `${operation} completed with manual extraction required`
114
+ : failedSegment && groupCount ? `${operation} failed at group ${failedSegment}/${groupCount}` : `${operation} failed`);
115
+ }
116
+ else {
117
+ const id = (0, mutate_output_values_1.readString)(response.previewId);
118
+ if (operation === "mutate.preview") {
119
+ lines.push(`${id ? `${operation} ${id}` : operation}${declarationPartial ? " partial" : ""}`);
120
+ }
121
+ else {
122
+ lines.push(id
123
+ ? `${operation} ${id}${declarationPartial ? " partial" : " completed"}`
124
+ : `${operation}${declarationPartial ? " partial" : " completed"}`);
125
+ }
126
+ }
127
+ const summary = compactSemanticPreview
128
+ ? formatCompactSemanticPreviewSummary(aggregate)
129
+ : response.ok === false
130
+ ? response.partialDeclarationCleanup === true
131
+ ? formatMutateAggregateSummary(aggregate, operation, response)
132
+ : manualExtractionOnly
133
+ ? formatMutateManualExtractionOnlySummary(response) ?? formatMutateCompletedGroupsSummary(response, operation)
134
+ : formatMutateCompletedGroupsSummary(response, operation)
135
+ : formatMutateAggregateSummary(aggregate, operation, response);
136
+ if (summary) {
137
+ lines.push(summary);
138
+ }
139
+ if (compactSemanticPreview) {
140
+ const next = typeof response.next === "string" ? response.next : null;
141
+ if (next) {
142
+ lines.push(`next: ${next.replace("failed segment", "failed group")}`);
143
+ }
144
+ return lines.join("\n");
145
+ }
146
+ if (response.ok === false && response.partialDeclarationCleanup !== true) {
147
+ appendMutateFailureSections(cwd, lines, aggregate, response, operation);
148
+ }
149
+ else {
150
+ appendMutateAggregateOperationSections(cwd, lines, aggregate, operation);
151
+ }
152
+ const files = response.ok === false
153
+ ? operation === "mutate.preview"
154
+ ? []
155
+ : (0, mutate_output_values_1.uniqueStrings)([
156
+ ...(0, mutate_output_values_1.readStringArray)(response.filesWritten),
157
+ ...(0, mutate_output_values_1.readStringArray)(aggregate.filesWritten)
158
+ ])
159
+ : operation === "mutate.preview"
160
+ ? (0, mutate_output_values_1.readStringArray)(aggregate.filesTouched)
161
+ : (0, mutate_output_values_1.readStringArray)(aggregate.filesWritten);
162
+ if (files.length > 0) {
163
+ const visibleFiles = files.length > mutate_file_view_1.MUTATE_VISIBLE_FILE_LIMIT
164
+ ? (0, mutate_file_view_1.selectVisibleMutateAggregateFiles)(aggregate, files)
165
+ : files;
166
+ lines.push(operation === "mutate.preview" ? "files:" : "filesWritten:");
167
+ lines.push(...visibleFiles.map((file) => (0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, file)));
168
+ if (files.length > visibleFiles.length) {
169
+ lines.push(`+ ${files.length - visibleFiles.length} more files hidden`);
170
+ }
171
+ }
172
+ const views = (0, mutate_output_values_1.readStringArray)(aggregate.views);
173
+ if (views.length > 0) {
174
+ lines.push(`view: ${views[views.length - 1]}`);
175
+ }
176
+ const next = typeof response.next === "string"
177
+ ? response.next
178
+ : declarationPartial && operation !== "mutate.preview"
179
+ ? defaultDeclarationCleanupPartialNext(aggregate)
180
+ : null;
181
+ if (next && !manualExtractionOnly) {
182
+ lines.push(`next: ${next.replace("failed segment", "failed group")}`);
183
+ }
184
+ return lines.join("\n");
185
+ }
186
+ function isCompactSemanticPreview(response, aggregate) {
187
+ if (response.operation !== "mutate.preview" || response.ok === false) {
188
+ return false;
189
+ }
190
+ const operations = (0, mutate_output_values_1.isObject)(aggregate.operations) ? aggregate.operations : {};
191
+ const allowed = new Set(["renames", "declarationMoves"]);
192
+ const hasSemanticIntent = (0, mutate_output_values_1.readObjectArray)(operations.renames).length > 0 ||
193
+ (0, mutate_output_values_1.readObjectArray)(operations.declarationMoves).length > 0;
194
+ return hasSemanticIntent && Object.entries(operations).every(([key, value]) => allowed.has(key) || value === null || value === undefined || (Array.isArray(value) && value.length === 0));
195
+ }
196
+ function formatSemanticMoveOutcomeCount(count, singular, plural = singular) {
197
+ return `${count} ${count === 1 ? singular : plural}`;
198
+ }
199
+ function appendSemanticMoveOutcomeGroup(cwd, lines, heading, items) {
200
+ if (items.length === 0) {
201
+ return;
202
+ }
203
+ const grouped = new Map();
204
+ for (const item of items) {
205
+ const entities = grouped.get(item.path) ?? [];
206
+ if (!entities.includes(item.entity)) {
207
+ entities.push(item.entity);
208
+ }
209
+ grouped.set(item.path, entities);
210
+ }
211
+ lines.push(`${heading}:`);
212
+ for (const [path, entities] of grouped) {
213
+ lines.push(`${(0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, path)}: ${entities.join(", ")}`);
214
+ }
215
+ }
216
+ function appendSemanticMoveAmbiguousGroup(cwd, lines, items) {
217
+ if (items.length === 0) {
218
+ return;
219
+ }
220
+ const grouped = new Map();
221
+ for (const item of items) {
222
+ const entry = grouped.get(item.path) ?? { entities: [], selectors: [] };
223
+ if (!entry.entities.includes(item.entity)) {
224
+ entry.entities.push(item.entity);
225
+ }
226
+ entry.selectors.push(...(item.availableSelectors ?? []));
227
+ grouped.set(item.path, entry);
228
+ }
229
+ lines.push("ambiguous:");
230
+ for (const [path, entry] of grouped) {
231
+ lines.push(`${(0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, path)}: ${entry.entities.join(", ")}`);
232
+ lines.push(...(0, mutate_output_values_1.uniqueStrings)(entry.selectors));
233
+ }
234
+ }
235
+ function formatSemanticMovePartialOutcomeText(cwd, response, aggregate, operation) {
236
+ if (response.ok !== false || (operation !== "mutate.apply" && operation !== "mutate.execute")) {
237
+ return null;
238
+ }
239
+ const resultModel = (0, mutate_output_values_1.isObject)(response.resultModel) ? response.resultModel : (0, mutate_result_projection_1.buildMutateResultModel)(response);
240
+ if (!resultModel) {
241
+ return null;
242
+ }
243
+ const rows = (0, mutate_output_values_1.readObjectArray)(resultModel.rows);
244
+ const operations = (0, mutate_output_values_1.isObject)(aggregate.operations) ? aggregate.operations : {};
245
+ const moves = (0, mutate_output_values_1.readObjectArray)(operations.declarationMoves);
246
+ const requestedMoves = moves.flatMap((move) => (0, mutate_output_values_1.readStringArray)(move.entities).map((entity) => ({ move, entity })));
247
+ if (rows.length === 0 || rows.length !== requestedMoves.length || rows.some((row) => (0, mutate_output_values_1.readString)(row.kind) !== "moveRefactor")) {
248
+ return null;
249
+ }
250
+ const categorized = {
251
+ applied: [],
252
+ manualExtractionRequired: [],
253
+ notFound: [],
254
+ ambiguous: [],
255
+ blocked: []
256
+ };
257
+ for (let index = 0; index < rows.length; index += 1) {
258
+ const row = rows[index] ?? {};
259
+ const requested = requestedMoves[index] ?? { move: {}, entity: "" };
260
+ const move = requested.move;
261
+ const entity = (0, mutate_output_values_1.readString)(row.entity) ?? requested.entity;
262
+ const source = (0, mutate_output_values_1.readString)(move.sourceFile);
263
+ const target = (0, mutate_output_values_1.readString)(move.targetFile);
264
+ const outcome = (0, mutate_output_values_1.readString)(row.outcome);
265
+ const code = (0, mutate_output_values_1.readString)(row.code);
266
+ let kind = null;
267
+ let path = null;
268
+ if (outcome === "applied") {
269
+ kind = "applied";
270
+ path = target;
271
+ }
272
+ else if (outcome === "manualExtractionRequired") {
273
+ kind = "manualExtractionRequired";
274
+ path = target;
275
+ }
276
+ else if (code === "SEMANTIC_MOVE_ENTITY_NOT_FOUND") {
277
+ kind = "notFound";
278
+ path = source;
279
+ }
280
+ else if (code === "SEMANTIC_MOVE_ENTITY_AMBIGUOUS") {
281
+ kind = "ambiguous";
282
+ path = source;
283
+ }
284
+ else if (code === "SEMANTIC_MOVE_REQUIRED_EDGE_UNCHANGED") {
285
+ kind = "blocked";
286
+ path = source;
287
+ }
288
+ if (!kind || !path || !entity) {
289
+ return null;
290
+ }
291
+ if (kind === "ambiguous") {
292
+ const availableSelectors = (0, mutate_output_values_1.readStringArray)(row.availableSelectors);
293
+ if (availableSelectors.length === 0) {
294
+ return null;
295
+ }
296
+ categorized.ambiguous.push({ path, entity, availableSelectors });
297
+ continue;
298
+ }
299
+ categorized[kind].push({ path, entity });
300
+ }
301
+ if (categorized.manualExtractionRequired.length === 0 && categorized.notFound.length === 0 &&
302
+ categorized.ambiguous.length === 0 && categorized.blocked.length === 0) {
303
+ return null;
304
+ }
305
+ const id = (0, mutate_output_values_1.readString)(response.executionId) ?? (0, mutate_output_values_1.readString)(response.previewId);
306
+ const lines = [
307
+ `${operation}${id ? ` ${id}` : ""}`,
308
+ [
309
+ formatSemanticMoveOutcomeCount(rows.length, "symbol", "symbols"),
310
+ ...(categorized.applied.length > 0 ? [`${categorized.applied.length} applied`] : []),
311
+ ...(categorized.manualExtractionRequired.length > 0 ? [`${categorized.manualExtractionRequired.length} manual extraction required`] : []),
312
+ ...(categorized.notFound.length > 0 ? [`${categorized.notFound.length} not found`] : []),
313
+ ...(categorized.ambiguous.length > 0 ? [`${categorized.ambiguous.length} ambiguous`] : []),
314
+ ...(categorized.blocked.length > 0 ? [`${categorized.blocked.length} blocked`] : [])
315
+ ].join(", ")
316
+ ];
317
+ appendSemanticMoveOutcomeGroup(cwd, lines, "moves", categorized.applied);
318
+ appendSemanticMoveOutcomeGroup(cwd, lines, "manualExtractionRequired", categorized.manualExtractionRequired);
319
+ if (categorized.manualExtractionRequired.length > 0) {
320
+ lines.push("reason: TypeScript move-to-file provider cannot produce edits for these symbols.");
321
+ lines.push("next: use manual extraction for listed symbols");
322
+ }
323
+ appendSemanticMoveOutcomeGroup(cwd, lines, "not found", categorized.notFound);
324
+ appendSemanticMoveAmbiguousGroup(cwd, lines, categorized.ambiguous);
325
+ appendSemanticMoveOutcomeGroup(cwd, lines, "blocked", categorized.blocked);
326
+ if (categorized.blocked.length > 0) {
327
+ lines.push("reason: required dynamic edge remains");
328
+ }
329
+ const files = (0, mutate_output_values_1.uniqueStrings)([
330
+ ...(0, mutate_output_values_1.readStringArray)(response.filesWritten),
331
+ ...(0, mutate_output_values_1.readStringArray)(resultModel.filesWritten),
332
+ ...(0, mutate_output_values_1.readStringArray)(aggregate.filesWritten)
333
+ ]);
334
+ if (files.length > 0) {
335
+ lines.push("filesWritten:");
336
+ lines.push(...files.map((file) => (0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, file)));
337
+ }
338
+ return lines.join("\n");
339
+ }
340
+ function formatCompactSemanticPreviewSummary(aggregate) {
341
+ const operations = (0, mutate_output_values_1.isObject)(aggregate.operations) ? aggregate.operations : {};
342
+ const renames = (0, mutate_output_values_1.readObjectArray)(operations.renames).length;
343
+ const moves = (0, mutate_output_values_1.readObjectArray)(operations.declarationMoves);
344
+ const symbols = moves.reduce((count, move) => count + (0, mutate_output_values_1.readStringArray)(move.entities).length, 0);
345
+ const parts = [];
346
+ if (renames > 0) {
347
+ parts.push(`${renames} ${renames === 1 ? "rename" : "renames"}`);
348
+ }
349
+ if (symbols > 0) {
350
+ parts.push(`${symbols} ${symbols === 1 ? "symbol" : "symbols"}`);
351
+ parts.push(`${moves.length} ${moves.length === 1 ? "target" : "targets"}`);
352
+ }
353
+ return `${parts.join(", ")} ready`;
354
+ }
355
+ function defaultDeclarationCleanupPartialNext(aggregate) {
356
+ const operations = (0, mutate_output_values_1.isObject)(aggregate.operations) ? aggregate.operations : {};
357
+ const declarationCleanups = (0, mutate_output_values_1.readObjectArray)(operations.declarationCleanups);
358
+ const hasNotFound = declarationCleanups.some((item) => ((0, mutate_output_values_1.readNumber)(item.notFoundCount) ?? 0) > 0);
359
+ return hasNotFound
360
+ ? "Fix missing selectors and rerun only the remaining declaration cleanup intent."
361
+ : "Fix failed selectors and rerun only the remaining declaration cleanup intent.";
362
+ }
363
+ function formatMutateAggregateSummary(aggregate, operation = "mutate.preview", response) {
364
+ const operations = (0, mutate_output_values_1.isObject)(aggregate.operations) ? aggregate.operations : {};
365
+ const renames = (0, mutate_output_values_1.readObjectArray)(operations.renames).length;
366
+ const declarationMoveSymbols = (0, mutate_output_values_1.readObjectArray)(operations.declarationMoves)
367
+ .reduce((count, move) => count + (0, mutate_output_values_1.readStringArray)(move.entities).length, 0);
368
+ const declarationMoveTargets = (0, mutate_output_values_1.readObjectArray)(operations.declarationMoves).length;
369
+ const fileMoves = (0, mutate_output_values_1.readObjectArray)(operations.fileMoves)
370
+ .reduce((count, move) => count + (0, mutate_output_values_1.readStringArray)(move.files).length, 0);
371
+ const fileRenames = (0, mutate_output_values_1.readObjectArray)(operations.fileRenames).length;
372
+ const fileChanges = (0, mutate_output_values_1.readObjectArray)(operations.fileChanges).length;
373
+ const importEdits = (0, mutate_output_values_1.readObjectArray)(operations.importNormalizations)
374
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.edits) ?? 0), 0) +
375
+ (0, mutate_output_values_1.readObjectArray)(operations.importRebases)
376
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.edits) ?? 0), 0);
377
+ const importNormalizations = (0, mutate_output_values_1.readObjectArray)(operations.importNormalizations);
378
+ const importRebases = (0, mutate_output_values_1.readObjectArray)(operations.importRebases);
379
+ const objectPacks = (0, mutate_output_values_1.readObjectArray)(operations.objectPacks);
380
+ const objectPackMembers = objectPacks
381
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.memberCount) ?? 0), 0);
382
+ const objectPackObjects = objectPacks
383
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.objectCount) ?? 0), 0);
384
+ const objectPackImporters = objectPacks
385
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.importerCount) ?? 0), 0);
386
+ const objectPackReferences = objectPacks
387
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.referenceCount) ?? 0), 0);
388
+ const objectRetainedMembers = objectPacks
389
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.retainedCount) ?? 0), 0);
390
+ const declarationCleanups = (0, mutate_output_values_1.readObjectArray)(operations.declarationCleanups);
391
+ const declarationsRemoved = declarationCleanups
392
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.declarationsRemoved) ?? 0), 0);
393
+ const importsAdded = declarationCleanups
394
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.importsAdded) ?? 0), 0);
395
+ const declarationNotFound = declarationCleanups
396
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.notFoundCount) ?? 0), 0);
397
+ const declarationSourceFailures = declarationCleanups
398
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.sourceFailureCount) ?? 0), 0);
399
+ const declarationSkipped = declarationCleanups
400
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.skippedCount) ?? 0), 0);
401
+ const declarationOnly = declarationCleanups.length > 0 &&
402
+ renames + declarationMoveSymbols + fileMoves + fileRenames + fileChanges + importEdits + objectPackMembers === 0;
403
+ if (declarationOnly) {
404
+ return null;
405
+ }
406
+ const parts = [];
407
+ if (renames > 0) {
408
+ parts.push(`${renames} ${renames === 1 ? "rename" : "renames"}`);
409
+ }
410
+ if (declarationMoveSymbols > 0) {
411
+ parts.push(`${declarationMoveSymbols} ${declarationMoveSymbols === 1 ? "symbol" : "symbols"} to ${declarationMoveTargets} ${declarationMoveTargets === 1 ? "target" : "targets"}`);
412
+ }
413
+ if (fileMoves > 0) {
414
+ parts.push(`${fileMoves} ${fileMoves === 1 ? "file move" : "file moves"}`);
415
+ }
416
+ if (fileRenames > 0) {
417
+ parts.push(`${fileRenames} ${fileRenames === 1 ? "file rename" : "file renames"}`);
418
+ }
419
+ if (fileChanges > 0) {
420
+ parts.push(`${fileChanges} ${fileChanges === 1 ? "file change" : "file changes"}`);
421
+ }
422
+ if (importEdits > 0) {
423
+ parts.push(`${importEdits} import ${importEdits === 1 ? "edit" : "edits"}`);
424
+ }
425
+ else if (importRebases.length > 0) {
426
+ parts.push("no import boundary changes");
427
+ }
428
+ if (objectPackMembers > 0) {
429
+ const objectUnpackMembers = objectPacks
430
+ .filter((item) => (0, mutate_object_output_1.objectOperationFromString)((0, mutate_output_values_1.readString)(item.operation)) === "unpack")
431
+ .reduce((count, item) => count + ((0, mutate_output_values_1.readNumber)(item.memberCount) ?? 0), 0);
432
+ const objectPackOnlyMembers = objectPackMembers - objectUnpackMembers;
433
+ if (objectPackOnlyMembers > 0) {
434
+ parts.push(`${objectPackOnlyMembers} ${objectPackOnlyMembers === 1 ? "export" : "exports"} packed into ${objectPackObjects} ${objectPackObjects === 1 ? "object" : "objects"}`);
435
+ }
436
+ if (objectUnpackMembers > 0) {
437
+ parts.push(`${objectUnpackMembers} ${objectUnpackMembers === 1 ? "export" : "exports"} unpacked from ${objectPackObjects} ${objectPackObjects === 1 ? "object" : "objects"}`);
438
+ }
439
+ if (objectPackImporters > 0 || objectPackReferences > 0) {
440
+ parts.push(`${objectPackImporters} ${objectPackImporters === 1 ? "importer" : "importers"} updated, ${objectPackReferences} ${objectPackReferences === 1 ? "reference" : "references"}`);
441
+ }
442
+ }
443
+ if (declarationsRemoved > 0) {
444
+ parts.push(`${declarationsRemoved} ${declarationsRemoved === 1 ? "declaration" : "declarations"} removed`);
445
+ }
446
+ if (importsAdded > 0) {
447
+ parts.push(`${importsAdded} ${importsAdded === 1 ? "import" : "imports"} added`);
448
+ }
449
+ const filesTouched = (0, mutate_output_values_1.readStringArray)(aggregate.filesTouched).length;
450
+ const notFoundText = declarationNotFound > 0
451
+ ? `${declarationNotFound} ${declarationNotFound === 1 ? "selector" : "selectors"} not found`
452
+ : null;
453
+ const issueParts = [
454
+ objectRetainedMembers > 0 ? `${objectRetainedMembers} ${objectRetainedMembers === 1 ? "member" : "members"} retained` : null,
455
+ notFoundText,
456
+ declarationSourceFailures > 0 ? `${declarationSourceFailures} source ${declarationSourceFailures === 1 ? "issue" : "issues"}` : null,
457
+ declarationSkipped > 0 ? `${declarationSkipped} ${declarationSkipped === 1 ? "selector" : "selectors"} skipped` : null
458
+ ].filter((value) => Boolean(value));
459
+ if (parts.length === 0 && issueParts.length === 0) {
460
+ return null;
461
+ }
462
+ if (importNormalizations.length > 0 &&
463
+ renames + declarationMoveSymbols + fileMoves + fileRenames + fileChanges === 0 &&
464
+ importRebases.length === 0 &&
465
+ declarationCleanups.length === 0) {
466
+ const filesChanged = (0, mutate_output_values_1.uniqueStrings)(importNormalizations.flatMap((item) => [
467
+ ...(0, mutate_output_values_1.readStringArray)(item.filesTouched),
468
+ ...(0, mutate_output_values_1.readStringArray)(item.filesWritten)
469
+ ])).length || (0, mutate_output_values_1.readStringArray)(aggregate.filesTouched).length || (0, mutate_output_values_1.readStringArray)(aggregate.filesWritten).length;
470
+ if (operation === "mutate.preview") {
471
+ if (importNormalizations.some((item) => item.noPolicy === true)) {
472
+ return "no import normalization policy matched";
473
+ }
474
+ if (importEdits === 0) {
475
+ return "no import normalization changes planned";
476
+ }
477
+ return `preview ok: ${importEdits} import ${importEdits === 1 ? "edit" : "edits"} planned${filesChanged > 0 ? `; ${filesChanged} ${filesChanged === 1 ? "file" : "files"} would change` : ""}`;
478
+ }
479
+ const verb = operation === "mutate.apply" ? "applied" : "executed";
480
+ return `${importEdits} import ${importEdits === 1 ? "edit" : "edits"} ${verb}${filesChanged > 0 ? `; ${filesChanged} ${filesChanged === 1 ? "file" : "files"} written` : ""}`;
481
+ }
482
+ if (aggregate.status === "failed" && response?.partialDeclarationCleanup !== true) {
483
+ return `${parts.length > 0 ? `${parts.join(", ")} before failure` : `${issueParts.join(", ")} before failure`}`;
484
+ }
485
+ const verb = operation === "mutate.apply"
486
+ ? "applied"
487
+ : operation === "mutate.execute"
488
+ ? "executed"
489
+ : "planned";
490
+ const filesWritten = response ? (0, mutate_output_values_1.readStringArray)(response.filesWritten).length || (0, mutate_output_values_1.readStringArray)(aggregate.filesWritten).length : (0, mutate_output_values_1.readStringArray)(aggregate.filesWritten).length;
491
+ if (issueParts.length > 0) {
492
+ const label = operation === "mutate.preview"
493
+ ? "preview partial"
494
+ : operation === "mutate.apply"
495
+ ? "apply partial"
496
+ : "execute partial";
497
+ const fileSuffix = operation === "mutate.preview"
498
+ ? filesTouched > 0 ? `; ${filesTouched} ${filesTouched === 1 ? "file" : "files"} touched` : ""
499
+ : filesWritten > 0 ? `; ${filesWritten} ${filesWritten === 1 ? "file" : "files"} written` : "";
500
+ const changeText = parts.length > 0 ? `${parts.join(", ")} ${verb}` : "no changes";
501
+ return `${label}: ${changeText}; ${issueParts.join(", ")}${fileSuffix}`;
502
+ }
503
+ if (operation === "mutate.preview") {
504
+ return `${parts.join(", ")} ${verb}${filesTouched > 0 ? `; ${filesTouched} ${filesTouched === 1 ? "file" : "files"} touched` : ""}`;
505
+ }
506
+ return `${parts.join(", ")} ${verb}${filesWritten > 0 ? `; ${filesWritten} ${filesWritten === 1 ? "file" : "files"} written` : ""}`;
507
+ }
508
+ function formatDeclarationCleanupAggregateSummary(aggregate, operation, response, declarationCleanups) {
509
+ const removeCleanups = declarationCleanups.filter((item) => (0, mutate_declaration_output_1.formatDeclarationCleanupOperationLabel)((0, mutate_output_values_1.readString)(item.operation)) === "remove");
510
+ const addMissingCleanups = declarationCleanups.filter((item) => (0, mutate_declaration_output_1.formatDeclarationCleanupOperationLabel)((0, mutate_output_values_1.readString)(item.operation)) === "addMissing");
511
+ const declarations = (0, mutate_declaration_output_1.sumNumberField)(removeCleanups, "declarationsRemoved");
512
+ const imports = (0, mutate_declaration_output_1.sumNumberField)(addMissingCleanups, "importsAdded");
513
+ const sourceIssues = (0, mutate_declaration_output_1.sumNumberField)(addMissingCleanups, "sourceFailureCount");
514
+ const skipped = (0, mutate_declaration_output_1.sumNumberField)(addMissingCleanups, "skippedCount");
515
+ const notFound = (0, mutate_declaration_output_1.sumNumberField)(declarationCleanups, "notFoundCount");
516
+ const filesTouched = (0, mutate_output_values_1.readStringArray)(aggregate.filesTouched).length;
517
+ const filesWritten = response
518
+ ? (0, mutate_output_values_1.readStringArray)(response.filesWritten).length || (0, mutate_output_values_1.readStringArray)(aggregate.filesWritten).length
519
+ : (0, mutate_output_values_1.readStringArray)(aggregate.filesWritten).length;
520
+ if (operation === "mutate.preview") {
521
+ const resolvedSources = (0, mutate_declaration_output_1.countDeclarationSourceSelectors)(addMissingCleanups);
522
+ const issueParts = [
523
+ sourceIssues > 0 ? `${sourceIssues} source ${sourceIssues === 1 ? "issue" : "issues"}` : null,
524
+ notFound > 0 ? `${notFound} ${notFound === 1 ? "selector" : "selectors"} not found` : null,
525
+ skipped > 0 ? `${skipped} ${skipped === 1 ? "selector" : "selectors"} skipped` : null
526
+ ].filter((value) => Boolean(value));
527
+ const plannedParts = [
528
+ declarations > 0 ? `${declarations} ${declarations === 1 ? "declaration" : "declarations"} planned for removal` : null,
529
+ resolvedSources > 0 ? `${resolvedSources} addMissing ${resolvedSources === 1 ? "source" : "sources"} resolved` : null
530
+ ].filter((value) => Boolean(value));
531
+ if (plannedParts.length === 0 && issueParts.length === 0) {
532
+ return null;
533
+ }
534
+ const label = issueParts.length > 0 ? "preview partial" : "preview ok";
535
+ const fileSuffix = filesTouched > 0 ? `; ${filesTouched} ${filesTouched === 1 ? "file" : "files"} touched` : "";
536
+ return `${label}: ${[...plannedParts, ...issueParts].join("; ")}${fileSuffix}`;
537
+ }
538
+ const issueParts = [
539
+ sourceIssues > 0 ? `${sourceIssues} source ${sourceIssues === 1 ? "issue" : "issues"}` : null,
540
+ notFound > 0 ? `${notFound} ${notFound === 1 ? "selector" : "selectors"} not found` : null,
541
+ skipped > 0 ? `${skipped} ${skipped === 1 ? "selector" : "selectors"} skipped` : null
542
+ ].filter((value) => Boolean(value));
543
+ if (issueParts.length === 0) {
544
+ return null;
545
+ }
546
+ const label = operation === "mutate.apply" ? "apply partial" : "execute partial";
547
+ const changeParts = [
548
+ declarations > 0 ? `${declarations} ${declarations === 1 ? "declaration" : "declarations"} removed` : null,
549
+ imports > 0 ? `${imports} ${imports === 1 ? "import" : "imports"} added` : null
550
+ ].filter((value) => Boolean(value));
551
+ const fileSuffix = filesWritten > 0 ? `; ${filesWritten} ${filesWritten === 1 ? "file" : "files"} written` : "";
552
+ return `${label}: ${[...changeParts, ...issueParts].join("; ")}${fileSuffix}`;
553
+ }
554
+ function formatMutateCompletedGroupsSummary(response, operation = "mutate.preview") {
555
+ const completedGroups = (0, mutate_failure_output_1.readCompletedAggregateGroups)(response);
556
+ if (completedGroups.length === 0) {
557
+ return null;
558
+ }
559
+ let renames = 0;
560
+ let declarationMoveSymbols = 0;
561
+ let fileMoves = 0;
562
+ let fileRenames = 0;
563
+ let fileChanges = 0;
564
+ for (const group of completedGroups) {
565
+ const details = (0, mutate_output_values_1.isObject)(group.details) ? group.details : {};
566
+ if (details.kind === "semantic") {
567
+ const operations = (0, mutate_output_values_1.readObjectArray)(details.operations);
568
+ renames += operations
569
+ .filter((operation) => operation.op === "rename")
570
+ .reduce((count, operation) => count + (0, mutate_output_values_1.readObjectArray)(operation.renames).length, 0);
571
+ declarationMoveSymbols += operations
572
+ .filter((operation) => operation.op === "move")
573
+ .reduce((count, operation) => count + (0, mutate_output_values_1.readStringArray)(operation.entities).length, 0);
574
+ }
575
+ if (details.kind === "file") {
576
+ fileMoves += (0, mutate_output_values_1.readObjectArray)(details.moves).reduce((count, move) => count + (0, mutate_output_values_1.readStringArray)(move.files).length, 0);
577
+ fileRenames += (0, mutate_output_values_1.readObjectArray)(details.renames).length;
578
+ fileChanges += (0, mutate_output_values_1.readObjectArray)(details.changes).length;
579
+ }
580
+ }
581
+ if (renames + declarationMoveSymbols + fileMoves + fileRenames + fileChanges === 0) {
582
+ return null;
583
+ }
584
+ const verb = mutateCompletedGroupVerb(operation);
585
+ return `${completedGroups.length} ${completedGroups.length === 1 ? "group" : "groups"} ${verb} before failure`;
586
+ }
587
+ function formatMutateManualExtractionOnlySummary(response) {
588
+ let symbolCount = 0;
589
+ let appliedCount = 0;
590
+ let manualExtractionCount = 0;
591
+ for (const segment of (0, mutate_output_values_1.readObjectArray)(response.segments).filter((item) => item.status !== "notRun")) {
592
+ const details = (0, mutate_output_values_1.isObject)(segment.details) ? segment.details : {};
593
+ if (details.kind === "modulePlan") {
594
+ for (const row of (0, mutate_output_values_1.readObjectArray)(details.rows)) {
595
+ const entities = (0, mutate_output_values_1.readStringArray)(row.entities);
596
+ const manual = (0, mutate_output_values_1.readNestedManualExtractionEntities)(row);
597
+ symbolCount += entities.length;
598
+ manualExtractionCount += manual.length;
599
+ appliedCount += row.ok === false
600
+ ? (0, mutate_output_values_1.readStringArray)(row.appliedEntities).length
601
+ : entities.length;
602
+ }
603
+ }
604
+ if (details.kind === "semantic") {
605
+ for (const operation of (0, mutate_output_values_1.readObjectArray)(details.operations).filter((item) => item.op === "move")) {
606
+ for (const row of (0, mutate_output_values_1.readObjectArray)(operation.rows)) {
607
+ symbolCount += 1;
608
+ appliedCount += row.ok === false ? 0 : 1;
609
+ }
610
+ }
611
+ for (const row of (0, mutate_output_values_1.readObjectArray)(details.rows).filter(mutate_output_values_1.isSemanticManualExtractionRow)) {
612
+ manualExtractionCount += 1;
613
+ }
614
+ }
615
+ }
616
+ if (symbolCount === 0 || manualExtractionCount === 0) {
617
+ return null;
618
+ }
619
+ const parts = [`${symbolCount} ${symbolCount === 1 ? "symbol" : "symbols"}`];
620
+ if (appliedCount > 0) {
621
+ parts.push(`${appliedCount} applied`);
622
+ }
623
+ parts.push(`${manualExtractionCount} manual extraction required`);
624
+ return parts.join(", ");
625
+ }
626
+ function mutateCompletedGroupVerb(operation) {
627
+ if (operation === "mutate.preview") {
628
+ return "checked";
629
+ }
630
+ if (operation === "mutate.execute") {
631
+ return "executed";
632
+ }
633
+ return "applied";
634
+ }
635
+ function appendMutateAggregateOperationSections(cwd, lines, aggregate, operation = "mutate.preview") {
636
+ const operations = (0, mutate_output_values_1.isObject)(aggregate.operations) ? aggregate.operations : {};
637
+ const renames = (0, mutate_output_values_1.readObjectArray)(operations.renames);
638
+ if (renames.length > 0) {
639
+ lines.push("renames:");
640
+ (0, mutate_failure_output_1.appendGroupedRenameLines)(cwd, lines, renames);
641
+ }
642
+ const declarationMoves = (0, mutate_output_values_1.readObjectArray)(operations.declarationMoves);
643
+ if (declarationMoves.length > 0) {
644
+ lines.push(operation === "mutate.preview" ? "targets:" : "moves:");
645
+ for (const move of declarationMoves) {
646
+ const targetFile = (0, mutate_output_values_1.readString)(move.targetFile) ?? "?";
647
+ lines.push(`${(0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, targetFile)}: ${(0, mutate_output_values_1.formatCompactList)((0, mutate_output_values_1.readStringArray)(move.entities), 5)}`);
648
+ }
649
+ }
650
+ const fileMoves = (0, mutate_output_values_1.readObjectArray)(operations.fileMoves);
651
+ if (fileMoves.length > 0) {
652
+ lines.push("fileMoves:");
653
+ for (const move of fileMoves) {
654
+ const targetDir = (0, mutate_output_values_1.readString)(move.targetDir) ?? "?";
655
+ lines.push(`${(0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, targetDir)}: ${(0, mutate_output_values_1.formatCompactList)((0, mutate_output_values_1.readStringArray)(move.files).map((file) => (0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, file)), 5)}`);
656
+ }
657
+ }
658
+ const fileRenames = (0, mutate_output_values_1.readObjectArray)(operations.fileRenames);
659
+ if (fileRenames.length > 0) {
660
+ lines.push("fileRenames:");
661
+ for (const rename of fileRenames) {
662
+ lines.push(`${(0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, (0, mutate_output_values_1.readString)(rename.source) ?? "?")} -> ${(0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, (0, mutate_output_values_1.readString)(rename.target) ?? "?")}`);
663
+ }
664
+ }
665
+ const fileChanges = (0, mutate_output_values_1.readObjectArray)(operations.fileChanges);
666
+ if (fileChanges.length > 0) {
667
+ lines.push("fileChanges:");
668
+ for (const change of fileChanges) {
669
+ lines.push(`${(0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, (0, mutate_output_values_1.readString)(change.source) ?? "?")} -> ${(0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, (0, mutate_output_values_1.readString)(change.target) ?? "?")}`);
670
+ }
671
+ }
672
+ const importNormalizations = (0, mutate_output_values_1.readObjectArray)(operations.importNormalizations);
673
+ if (importNormalizations.length > 0) {
674
+ lines.push("imports:");
675
+ for (const item of importNormalizations) {
676
+ const target = (0, mutate_output_values_1.readString)(item.target) ?? "imports";
677
+ const edits = (0, mutate_output_values_1.readNumber)(item.edits) ?? 0;
678
+ const filesChanged = (0, mutate_output_values_1.readNumber)(item.filesChanged) ?? 0;
679
+ if (item.noPolicy === true) {
680
+ lines.push("imports.normalize: no matching config policy; no changes");
681
+ continue;
682
+ }
683
+ const targetText = item.overrideConfig === true ? `${target} overrideConfig` : target;
684
+ lines.push(`imports.normalize ${targetText}: ${edits} ${edits === 1 ? "edit" : "edits"}, ${filesChanged} ${filesChanged === 1 ? "file" : "files"}`);
685
+ appendImportNormalizePolicyLines(lines, (0, mutate_output_values_1.readObjectArray)(item.policyGroups));
686
+ appendImportNormalizeSampleLines(cwd, lines, (0, mutate_output_values_1.readObjectArray)(item.samples));
687
+ }
688
+ }
689
+ const importRebases = (0, mutate_output_values_1.readObjectArray)(operations.importRebases);
690
+ if (importRebases.length > 0) {
691
+ lines.push("imports:");
692
+ for (const item of importRebases) {
693
+ const importOperation = (0, mutate_output_values_1.readString)(item.operation) ?? "imports.rebase";
694
+ const edits = (0, mutate_output_values_1.readNumber)(item.edits) ?? 0;
695
+ const filesChanged = (0, mutate_output_values_1.readNumber)(item.filesChanged) ?? 0;
696
+ const symbolsUpdated = (0, mutate_output_values_1.readNumber)(item.symbolsUpdated) ?? 0;
697
+ const barrel = (0, mutate_output_values_1.readString)(item.barrel);
698
+ const skipped = (0, mutate_output_values_1.readNumber)(item.skippedCount) ?? 0;
699
+ lines.push(`${importOperation}: ${symbolsUpdated} ${symbolsUpdated === 1 ? "symbol" : "symbols"}, ${edits} ${edits === 1 ? "import" : "imports"}, ${filesChanged} ${filesChanged === 1 ? "file" : "files"}`);
700
+ if (barrel) {
701
+ lines.push(`barrel: ${(0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, barrel)}`);
702
+ }
703
+ if (skipped > 0) {
704
+ appendImportRebaseSkippedAggregateLines(cwd, lines, (0, mutate_output_values_1.readObjectArray)(item.skipped));
705
+ }
706
+ }
707
+ }
708
+ const objectPacks = (0, mutate_output_values_1.readObjectArray)(operations.objectPacks);
709
+ if (objectPacks.length > 0) {
710
+ lines.push("objects:");
711
+ for (const pack of objectPacks) {
712
+ for (const object of (0, mutate_output_values_1.readObjectArray)(pack.objects)) {
713
+ const objectName = (0, mutate_output_values_1.readString)(object.objectName) ?? "object";
714
+ lines.push(`${objectName}: ${(0, mutate_output_values_1.formatCompactList)((0, mutate_output_values_1.readStringArray)(object.selectors), 6)}`);
715
+ }
716
+ }
717
+ const importers = objectPacks.flatMap((pack) => (0, mutate_output_values_1.readObjectArray)(pack.importers));
718
+ if (importers.length > 0) {
719
+ lines.push("imports:");
720
+ for (const importer of importers.slice(0, 8)) {
721
+ const file = (0, mutate_output_values_1.readString)(importer.file) ?? "?";
722
+ const objectNames = (0, mutate_output_values_1.readStringArray)(importer.objectNames);
723
+ const objectName = objectNames.length > 0
724
+ ? objectNames.join(", ")
725
+ : (0, mutate_output_values_1.readString)(importer.objectName) ?? "object";
726
+ const selectors = (0, mutate_output_values_1.readStringArray)(importer.selectors);
727
+ const refs = (0, mutate_output_values_1.readNumber)(importer.referenceCount) ?? 0;
728
+ lines.push(`${(0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, file)}: ${objectName} for ${(0, mutate_output_values_1.formatCompactList)(selectors, 5)}; ${refs} ${refs === 1 ? "reference" : "references"}`);
729
+ }
730
+ if (importers.length > 8) {
731
+ lines.push(`+${importers.length - 8} more importers`);
732
+ }
733
+ }
734
+ const unsupported = objectPacks.flatMap((pack) => (0, mutate_output_values_1.readObjectArray)(pack.unsupported));
735
+ if (unsupported.length > 0) {
736
+ lines.push("unsupported:");
737
+ for (const item of unsupported.slice(0, 8)) {
738
+ const selector = (0, mutate_output_values_1.readString)(item.selector) ?? (0, mutate_output_values_1.readString)(item.objectName) ?? "exports.object";
739
+ const message = (0, mutate_output_values_1.readString)(item.message) ?? (0, mutate_output_values_1.readString)(item.code) ?? "unsupported";
740
+ const file = (0, mutate_output_values_1.readString)(item.file);
741
+ lines.push(`${selector}: ${message}${file ? ` (${(0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, file)})` : ""}`);
742
+ }
743
+ if (unsupported.length > 8) {
744
+ lines.push(`+${unsupported.length - 8} more unsupported issues`);
745
+ }
746
+ }
747
+ const retained = objectPacks.flatMap((pack) => (0, mutate_output_values_1.readObjectArray)(pack.retained));
748
+ if (retained.length > 0) {
749
+ lines.push("retained:");
750
+ for (const item of retained.slice(0, 8)) {
751
+ const objectName = (0, mutate_output_values_1.readString)(item.objectName) ?? "object";
752
+ const selector = (0, mutate_output_values_1.readString)(item.selector) ?? "member";
753
+ const issues = (0, mutate_output_values_1.readObjectArray)(item.issues);
754
+ const message = (0, mutate_output_values_1.readString)(issues[0]?.message) ?? (0, mutate_output_values_1.readString)(issues[0]?.code) ?? "unsupported";
755
+ lines.push(`${objectName}.${selector}: ${message}`);
756
+ }
757
+ if (retained.length > 8) {
758
+ lines.push(`+${retained.length - 8} more retained members`);
759
+ }
760
+ }
761
+ const notRun = objectPacks.flatMap((pack) => (0, mutate_output_values_1.readObjectArray)(pack.notRun));
762
+ if (notRun.length > 0) {
763
+ lines.push("notRun:");
764
+ for (const item of notRun.slice(0, 8)) {
765
+ lines.push(`${(0, mutate_output_values_1.readString)(item.objectName) ?? "object"}: ${(0, mutate_output_values_1.formatCompactList)((0, mutate_output_values_1.readStringArray)(item.selectors), 6)}`);
766
+ }
767
+ }
768
+ }
769
+ const declarationCleanups = (0, mutate_output_values_1.readObjectArray)(operations.declarationCleanups);
770
+ if (declarationCleanups.length > 0) {
771
+ (0, mutate_declaration_output_1.appendDeclarationCleanupOperationSummaryLines)(lines, declarationCleanups, operation);
772
+ (0, mutate_declaration_output_1.appendDeclarationSourcesAggregateLines)(lines, declarationCleanups, operation);
773
+ (0, mutate_declaration_output_1.appendDeclarationFailuresAggregateLines)(lines, declarationCleanups);
774
+ (0, mutate_declaration_output_1.appendDeclarationSkippedAggregateLines)(lines, declarationCleanups);
775
+ (0, mutate_declaration_output_1.appendDeclarationNotFoundAggregateLines)(lines, declarationCleanups);
776
+ }
777
+ }
778
+ function appendImportNormalizeSampleLines(cwd, lines, samples) {
779
+ if (samples.length === 0) {
780
+ return;
781
+ }
782
+ lines.push("samples:");
783
+ for (const [file, edits] of groupJsonObjectsBy(samples, (item) => (0, mutate_output_values_1.readString)(item.file) ?? "")) {
784
+ if (file) {
785
+ lines.push((0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, file));
786
+ }
787
+ for (const edit of edits) {
788
+ const from = (0, mutate_output_values_1.readString)(edit.from);
789
+ const to = (0, mutate_output_values_1.readString)(edit.to);
790
+ if (from && to) {
791
+ lines.push(` ${from} -> ${to}`);
792
+ }
793
+ }
794
+ }
795
+ }
796
+ function appendImportNormalizePolicyLines(lines, policyGroups) {
797
+ if (policyGroups.length === 0) {
798
+ return;
799
+ }
800
+ lines.push("policies:");
801
+ for (const section of groupImportNormalizePolicies(policyGroups)) {
802
+ lines.push(`${section.label}:`);
803
+ for (const scope of section.scopes) {
804
+ if (section.ruleKind === "boundary") {
805
+ lines.push(` scope=${scope.scope}`);
806
+ for (const group of scope.groups) {
807
+ lines.push(` ${formatImportNormalizePolicyGroupLine(group)}`);
808
+ }
809
+ continue;
810
+ }
811
+ for (const group of scope.groups) {
812
+ lines.push(` ${formatImportNormalizePolicyGroupLine(group)}`);
813
+ }
814
+ }
815
+ }
816
+ }
817
+ function groupImportNormalizePolicies(policyGroups) {
818
+ const sorted = [...policyGroups].sort(compareImportNormalizePolicyGroups);
819
+ const sections = new Map();
820
+ for (const group of sorted) {
821
+ const source = (0, mutate_output_values_1.readString)(group.source) ?? "policy";
822
+ const ruleKind = (0, mutate_output_values_1.readString)(group.ruleKind) ?? "simple";
823
+ const sectionKey = `${source}\0${ruleKind}`;
824
+ if (!sections.has(sectionKey)) {
825
+ sections.set(sectionKey, {
826
+ label: ruleKind === "explicit" ? source : `${source} ${ruleKind}`,
827
+ ruleKind,
828
+ scopes: new Map()
829
+ });
830
+ }
831
+ const section = sections.get(sectionKey);
832
+ const scope = (0, mutate_output_values_1.readString)(group.ruleScope) ?? "request";
833
+ section.scopes.set(scope, [...(section.scopes.get(scope) ?? []), group]);
834
+ }
835
+ return Array.from(sections.values()).map((section) => ({
836
+ label: section.label,
837
+ ruleKind: section.ruleKind,
838
+ scopes: Array.from(section.scopes.entries()).map(([scope, groups]) => ({ scope, groups }))
839
+ }));
840
+ }
841
+ function compareImportNormalizePolicyGroups(left, right) {
842
+ return importNormalizePolicySectionRank(left) - importNormalizePolicySectionRank(right)
843
+ || ((0, mutate_output_values_1.readString)(left.ruleScope) ?? "").localeCompare((0, mutate_output_values_1.readString)(right.ruleScope) ?? "")
844
+ || importNormalizeRelationRank(left) - importNormalizeRelationRank(right)
845
+ || ((0, mutate_output_values_1.readString)(left.target) ?? "").localeCompare((0, mutate_output_values_1.readString)(right.target) ?? "");
846
+ }
847
+ function importNormalizePolicySectionRank(group) {
848
+ const source = (0, mutate_output_values_1.readString)(group.source) ?? "";
849
+ const ruleKind = (0, mutate_output_values_1.readString)(group.ruleKind) ?? "";
850
+ if (source === "config" && ruleKind === "boundary") {
851
+ return 0;
852
+ }
853
+ if (source === "config" && ruleKind === "simple") {
854
+ return 1;
855
+ }
856
+ if (ruleKind === "explicit") {
857
+ return 2;
858
+ }
859
+ return 3;
860
+ }
861
+ function importNormalizeRelationRank(group) {
862
+ const relation = (0, mutate_output_values_1.readString)(group.relation);
863
+ if (relation === "outside") {
864
+ return 0;
865
+ }
866
+ if (relation === "inside") {
867
+ return 1;
868
+ }
869
+ return 2;
870
+ }
871
+ function formatImportNormalizePolicyGroupLine(group) {
872
+ const relation = (0, mutate_output_values_1.readString)(group.relation);
873
+ const target = (0, mutate_output_values_1.readString)(group.target) ?? "?";
874
+ const edits = (0, mutate_output_values_1.readNumber)(group.edits) ?? 0;
875
+ const files = (0, mutate_output_values_1.readNumber)(group.filesChanged) ?? 0;
876
+ const scope = (0, mutate_output_values_1.readString)(group.ruleScope);
877
+ const parts = [
878
+ relation,
879
+ scope && !relation ? `scope=${scope}` : null,
880
+ `to=${target}`
881
+ ].filter((item) => Boolean(item));
882
+ return `${parts.join(" ")}: ${edits} ${edits === 1 ? "edit" : "edits"}, ${files} ${files === 1 ? "file" : "files"}`;
883
+ }
884
+ function groupJsonObjectsBy(items, keyFn) {
885
+ const groups = new Map();
886
+ for (const item of items) {
887
+ const key = keyFn(item);
888
+ groups.set(key, [...(groups.get(key) ?? []), item]);
889
+ }
890
+ return Array.from(groups.entries());
891
+ }
892
+ function appendImportRebaseSkippedAggregateLines(cwd, lines, skipped) {
893
+ lines.push(`skipped: ${skipped.length}`);
894
+ const barrelGraph = skipped.filter((item) => {
895
+ const reason = (0, mutate_output_values_1.readString)(item.reason);
896
+ return reason === "barrel file skipped" || reason === "inside barrel export graph";
897
+ });
898
+ if (barrelGraph.length > 0) {
899
+ const files = barrelGraph
900
+ .map((item) => (0, mutate_output_values_1.readString)(item.file))
901
+ .filter((file) => file !== null);
902
+ lines.push(`barrel graph consumers: ${barrelGraph.length} ${barrelGraph.length === 1 ? "file" : "files"}${files.length > 0 ? ` under ${formatCommonPathGlobForMutateOutput(cwd, files)}` : ""}`);
903
+ }
904
+ const other = skipped.filter((item) => !barrelGraph.includes(item));
905
+ for (const skippedItem of other.slice(0, 6)) {
906
+ const file = (0, mutate_output_values_1.readString)(skippedItem.file);
907
+ const selector = (0, mutate_output_values_1.readString)(skippedItem.selector);
908
+ const reason = (0, mutate_output_values_1.readString)(skippedItem.reason) ?? "skipped";
909
+ const subject = selector ?? (file ? (0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, file) : "item");
910
+ lines.push(`${subject}: ${reason}`);
911
+ }
912
+ if (other.length > 6) {
913
+ lines.push(`+ ${other.length - 6} more skipped`);
914
+ }
915
+ }
916
+ function formatCommonPathGlobForMutateOutput(cwd, files) {
917
+ const normalized = files.map((file) => (0, mutate_failure_output_1.formatPathForMutateOutput)(cwd, file).replace(/\\/g, "/"));
918
+ if (normalized.length === 0) {
919
+ return "**";
920
+ }
921
+ const parts = normalized.map((file) => file.split("/"));
922
+ const common = [];
923
+ for (let index = 0;; index += 1) {
924
+ const value = parts[0]?.[index];
925
+ if (!value || parts.some((part) => part[index] !== value)) {
926
+ break;
927
+ }
928
+ common.push(value);
929
+ }
930
+ if (common.length === 0) {
931
+ return "**";
932
+ }
933
+ const last = common[common.length - 1] ?? "";
934
+ const hasExtension = /\.[^/.]+$/.test(last);
935
+ return `${(hasExtension ? common.slice(0, -1) : common).join("/") || "."}/**`;
936
+ }
937
+ function appendMutateAggregateGroupLines(lines, aggregate) {
938
+ const completedCount = (0, mutate_output_values_1.readNumber)(aggregate.completedGroupCount) ?? 0;
939
+ if (completedCount > 0) {
940
+ lines.push("completed:");
941
+ lines.push(`${completedCount} ${completedCount === 1 ? "group" : "groups"}`);
942
+ }
943
+ if ((0, mutate_output_values_1.isObject)(aggregate.failedGroup)) {
944
+ const group = aggregate.failedGroup;
945
+ lines.push("failedGroup:");
946
+ lines.push(`${(0, mutate_output_values_1.readNumber)(group.index) ?? "?"}. ${(0, mutate_output_values_1.readString)(group.kind) ?? "unknown"} - ${(0, mutate_output_values_1.readString)(group.summary) ?? "failed"}`);
947
+ }
948
+ const notRun = (0, mutate_output_values_1.readObjectArray)(aggregate.notRunGroups);
949
+ if (notRun.length > 0) {
950
+ lines.push("notRun:");
951
+ for (const group of notRun) {
952
+ lines.push(`${(0, mutate_output_values_1.readNumber)(group.index) ?? "?"}. ${(0, mutate_output_values_1.readString)(group.kind) ?? "unknown"}`);
953
+ }
954
+ }
955
+ }
956
+ +function appendMutatePreviewFailureSections(cwd, lines, aggregate, response) {
957
+ appendMutateFailureSections(cwd, lines, aggregate, response, "mutate.preview");
958
+ };
959
+ function appendMutateFailureSections(cwd, lines, aggregate, response, operation = "mutate.preview") {
960
+ const completedGroups = (0, mutate_failure_output_1.readCompletedAggregateGroups)(response);
961
+ if (completedGroups.length > 0) {
962
+ lines.push(`${mutateCompletedGroupVerb(operation)}:`);
963
+ for (const group of completedGroups) {
964
+ lines.push(`${(0, mutate_output_values_1.readNumber)(group.index) ?? "?"}. ${(0, mutate_output_values_1.readString)(group.kind) ?? "unknown"} - ${(0, mutate_failure_output_1.formatMutateGroupOperationSummary)(group)}`);
965
+ }
966
+ appendMutateCompletedOperationSections(cwd, lines, completedGroups);
967
+ }
968
+ (0, mutate_failure_output_1.appendManualExtractionAppliedMoveLines)(cwd, lines, response, operation);
969
+ const appendedManualExtraction = (0, mutate_failure_output_1.appendNestedMutateManualExtractionRequiredLines)(cwd, lines, response);
970
+ if (appendedManualExtraction && !(0, mutate_failure_output_1.hasNestedHardSemanticFailure)(response)) {
971
+ return;
972
+ }
973
+ lines.push("failed:");
974
+ const failedGroup = (0, mutate_output_values_1.isObject)(aggregate.failedGroup) ? aggregate.failedGroup : {};
975
+ const groupIndex = (0, mutate_output_values_1.readNumber)(failedGroup.index);
976
+ const groupKind = (0, mutate_output_values_1.readString)(failedGroup.kind) ?? "unknown";
977
+ lines.push(groupIndex ? `${groupIndex}. ${(0, mutate_failure_output_1.formatMutateGroupKind)(groupKind)}` : (0, mutate_failure_output_1.formatMutateGroupKind)(groupKind));
978
+ (0, mutate_failure_output_1.appendNestedMutateFailureLines)(cwd, lines, response);
979
+ const notRun = (0, mutate_output_values_1.readObjectArray)(aggregate.notRunGroups);
980
+ if (notRun.length > 0) {
981
+ lines.push("notRun:");
982
+ if (groupIndex) {
983
+ lines.push(`all groups after ${groupIndex}`);
984
+ }
985
+ else {
986
+ for (const group of notRun) {
987
+ lines.push(`${(0, mutate_output_values_1.readNumber)(group.index) ?? "?"}. ${(0, mutate_output_values_1.readString)(group.kind) ?? "unknown"}`);
988
+ }
989
+ }
990
+ }
991
+ }
992
+ function appendMutateCompletedOperationSections(cwd, lines, completedGroups) {
993
+ appendMutateAggregateOperationSections(cwd, lines, {
994
+ operations: (0, mutate_result_projection_1.buildAggregateOperations)(completedGroups)
995
+ }, "mutate.execute");
996
+ }