@automaton-labs/aib 0.0.6 → 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 (586) 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 -2
  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 -0
  19. package/dist/commands/captured-input.js +74 -2
  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 -0
  23. package/dist/commands/declaration-command.js +1209 -0
  24. package/dist/commands/declaration-execution-cache.js +79 -0
  25. package/dist/commands/declaration-format.js +221 -0
  26. package/dist/commands/declaration-preview-cache.js +114 -0
  27. package/dist/commands/diagnostics-command.js +70 -3
  28. package/dist/commands/doctor.js +137 -2
  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 -0
  35. package/dist/commands/file-move-to-dir-preview-cache.js +125 -0
  36. package/dist/commands/file-move-to-dir-worker.js +54 -0
  37. package/dist/commands/file-move-to-dir.js +1073 -0
  38. package/dist/commands/file-mutation-runtime.js +102 -0
  39. package/dist/commands/file-mutation-worker-apply.js +180 -0
  40. package/dist/commands/file-refactor-batch-execution-cache.js +90 -0
  41. package/dist/commands/file-refactor-batch-preview-cache.js +125 -0
  42. package/dist/commands/file-refactor-batch-worker.js +54 -0
  43. package/dist/commands/file-refactor-batch.js +1154 -0
  44. package/dist/commands/file-rename-execution-cache.js +92 -0
  45. package/dist/commands/file-rename-preview-cache.js +125 -0
  46. package/dist/commands/file-rename-worker.js +54 -0
  47. package/dist/commands/file-rename.js +1053 -0
  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 -0
  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 -6
  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 -0
  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 -0
  150. package/dist/dsl/file-move-to-dir-dsl.js +123 -0
  151. package/dist/dsl/file-refactor-batch-dsl.js +203 -0
  152. package/dist/dsl/file-rename-dsl.js +135 -0
  153. package/dist/dsl/mutate-dsl.js +746 -0
  154. package/dist/help/bootstrap.bash.md +742 -0
  155. package/dist/help/bootstrap.md +236 -437
  156. package/dist/help/bootstrap.pwsh.md +742 -0
  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/dsl.md +4 -3
  161. package/dist/help/docs/first-setup.md +6 -5
  162. package/dist/help/docs/help-protocol.md +4 -3
  163. package/dist/help/docs/import.base.md +38 -0
  164. package/dist/help/docs/import.rebase.md +85 -0
  165. package/dist/help/docs/inspect.aliasCandidates.md +39 -0
  166. package/dist/help/docs/inspect.code.md +5 -11
  167. package/dist/help/docs/inspect.deps.md +7 -7
  168. package/dist/help/docs/inspect.file.md +10 -18
  169. package/dist/help/docs/inspect.graph.md +6 -20
  170. package/dist/help/docs/{inspect.md → inspect.shared.md} +18 -17
  171. package/dist/help/docs/modulePlan.md +24 -28
  172. package/dist/help/docs/move.md +19 -22
  173. package/dist/help/docs/moveToDir.md +46 -0
  174. package/dist/help/docs/mutate.mixed.md +34 -0
  175. package/dist/help/docs/mutation.shared.md +55 -0
  176. package/dist/help/docs/patterns.md +3 -16
  177. package/dist/help/docs/qr.md +13 -22
  178. package/dist/help/docs/quick-map.md +36 -23
  179. package/dist/help/docs/recipe.file-layout.md +15 -0
  180. package/dist/help/docs/recipe.import-boundary.md +92 -0
  181. package/dist/help/docs/recipe.safe-artifact-probing.md +68 -0
  182. package/dist/help/docs/recipe.unfamiliar-area.md +64 -0
  183. package/dist/help/docs/recipes.md +20 -0
  184. package/dist/help/docs/rename.md +19 -27
  185. package/dist/help/docs/renameFile.md +36 -0
  186. package/dist/help/docs/rg.md +22 -0
  187. package/dist/help/docs/rules.md +26 -0
  188. package/dist/help/docs/selectors.md +3 -2
  189. package/dist/help/docs/session.md +1 -1
  190. package/dist/help/dsl/bootstrap.bash.md +742 -0
  191. package/dist/help/dsl/bootstrap.md +236 -437
  192. package/dist/help/dsl/bootstrap.pwsh.md +742 -0
  193. package/dist/help/dsl/docs/basics.md +1 -1
  194. package/dist/help/dsl/docs/config-setup.import-normalize.md +65 -65
  195. package/dist/help/dsl/docs/config-setup.import-rules.md +6 -5
  196. package/dist/help/dsl/docs/dsl.md +4 -3
  197. package/dist/help/dsl/docs/first-setup.md +6 -5
  198. package/dist/help/dsl/docs/help-protocol.md +4 -3
  199. package/dist/help/dsl/docs/import.base.md +38 -0
  200. package/dist/help/dsl/docs/import.rebase.md +85 -0
  201. package/dist/help/dsl/docs/inspect.aliasCandidates.md +39 -0
  202. package/dist/help/dsl/docs/inspect.code.md +5 -11
  203. package/dist/help/dsl/docs/inspect.deps.md +7 -7
  204. package/dist/help/dsl/docs/inspect.file.md +10 -18
  205. package/dist/help/dsl/docs/inspect.graph.md +6 -20
  206. package/dist/help/dsl/docs/{inspect.md → inspect.shared.md} +18 -17
  207. package/dist/help/dsl/docs/modulePlan.md +24 -28
  208. package/dist/help/dsl/docs/move.md +19 -22
  209. package/dist/help/dsl/docs/moveToDir.md +46 -0
  210. package/dist/help/dsl/docs/mutate.mixed.md +34 -0
  211. package/dist/help/dsl/docs/mutation.shared.md +55 -0
  212. package/dist/help/dsl/docs/patterns.md +3 -16
  213. package/dist/help/dsl/docs/qr.md +13 -22
  214. package/dist/help/dsl/docs/quick-map.md +36 -23
  215. package/dist/help/dsl/docs/recipe.file-layout.md +15 -0
  216. package/dist/help/dsl/docs/recipe.import-boundary.md +92 -0
  217. package/dist/help/dsl/docs/recipe.safe-artifact-probing.md +68 -0
  218. package/dist/help/dsl/docs/recipe.unfamiliar-area.md +64 -0
  219. package/dist/help/dsl/docs/recipes.md +20 -0
  220. package/dist/help/dsl/docs/rename.md +19 -27
  221. package/dist/help/dsl/docs/renameFile.md +36 -0
  222. package/dist/help/dsl/docs/rg.md +22 -0
  223. package/dist/help/dsl/docs/rules.md +26 -0
  224. package/dist/help/dsl/docs/selectors.md +3 -2
  225. package/dist/help/dsl/docs/session.md +1 -1
  226. package/dist/help/dsl/full.md +236 -437
  227. package/dist/help/dsl/help-index.md +49 -0
  228. package/dist/help/dsl/snippets/agents.md +2 -2
  229. package/dist/help/dsl/tokens/qr.inline.examples.md +2 -0
  230. package/dist/help/dsl/tokens/stdin.examples.bash.md +8 -0
  231. package/dist/help/dsl/tokens/stdin.examples.pwsh.md +8 -0
  232. package/dist/help/dsl/tokens/stdin.examples.with-qr.bash.md +12 -0
  233. package/dist/help/dsl/tokens/stdin.examples.with-qr.pwsh.md +12 -0
  234. package/dist/help/dsl/topics/basics.md +1 -1
  235. package/dist/help/dsl/topics/config-setup.import-normalize.md +65 -65
  236. package/dist/help/dsl/topics/config-setup.import-rules.md +6 -5
  237. package/dist/help/dsl/topics/dsl.md +4 -3
  238. package/dist/help/dsl/topics/first-setup.md +6 -5
  239. package/dist/help/dsl/topics/help-protocol.md +4 -3
  240. package/dist/help/dsl/topics/import.base.md +36 -0
  241. package/dist/help/dsl/topics/import.rebase.md +83 -0
  242. package/dist/help/dsl/topics/inspect.aliasCandidates.md +37 -0
  243. package/dist/help/dsl/topics/inspect.code.md +5 -11
  244. package/dist/help/dsl/topics/inspect.deps.md +7 -7
  245. package/dist/help/dsl/topics/inspect.file.md +10 -18
  246. package/dist/help/dsl/topics/inspect.graph.md +6 -20
  247. package/dist/help/dsl/topics/{inspect.md → inspect.shared.md} +18 -17
  248. package/dist/help/dsl/topics/modulePlan.md +21 -26
  249. package/dist/help/dsl/topics/move.md +17 -18
  250. package/dist/help/dsl/topics/moveToDir.md +44 -0
  251. package/dist/help/dsl/topics/mutate.mixed.md +32 -0
  252. package/dist/help/dsl/topics/mutation.shared.md +53 -0
  253. package/dist/help/dsl/topics/patterns.md +3 -16
  254. package/dist/help/dsl/topics/qr.md +13 -22
  255. package/dist/help/dsl/topics/quick-map.md +36 -23
  256. package/dist/help/dsl/topics/recipe.file-layout.md +13 -0
  257. package/dist/help/dsl/topics/recipe.import-boundary.md +90 -0
  258. package/dist/help/dsl/topics/recipe.safe-artifact-probing.md +66 -0
  259. package/dist/help/dsl/topics/recipe.unfamiliar-area.md +62 -0
  260. package/dist/help/dsl/topics/recipes.md +18 -0
  261. package/dist/help/dsl/topics/rename.md +15 -15
  262. package/dist/help/dsl/topics/renameFile.md +34 -0
  263. package/dist/help/dsl/topics/rg.md +20 -0
  264. package/dist/help/dsl/topics/rules.md +24 -0
  265. package/dist/help/dsl/topics/selectors.md +3 -2
  266. package/dist/help/dsl/topics/session.md +1 -1
  267. package/dist/help/full.md +236 -437
  268. package/dist/help/help-index.md +49 -0
  269. package/dist/help/help-meta.json +114 -48
  270. package/dist/help/index.md +76 -87
  271. package/dist/help/snippets/agents.md +2 -2
  272. package/dist/help/tokens/qr.inline.examples.md +2 -0
  273. package/dist/help/tokens/stdin.examples.bash.md +8 -0
  274. package/dist/help/tokens/stdin.examples.pwsh.md +8 -0
  275. package/dist/help/tokens/stdin.examples.with-qr.bash.md +12 -0
  276. package/dist/help/tokens/stdin.examples.with-qr.pwsh.md +12 -0
  277. package/dist/help/topics/basics.md +1 -1
  278. package/dist/help/topics/config-setup.import-normalize.md +65 -65
  279. package/dist/help/topics/config-setup.import-rules.md +6 -5
  280. package/dist/help/topics/dsl.md +4 -3
  281. package/dist/help/topics/first-setup.md +6 -5
  282. package/dist/help/topics/help-protocol.md +4 -3
  283. package/dist/help/topics/import.base.md +36 -0
  284. package/dist/help/topics/import.rebase.md +83 -0
  285. package/dist/help/topics/inspect.aliasCandidates.md +37 -0
  286. package/dist/help/topics/inspect.code.md +5 -11
  287. package/dist/help/topics/inspect.deps.md +7 -7
  288. package/dist/help/topics/inspect.file.md +10 -18
  289. package/dist/help/topics/inspect.graph.md +6 -20
  290. package/dist/help/topics/{inspect.md → inspect.shared.md} +18 -17
  291. package/dist/help/topics/modulePlan.md +21 -26
  292. package/dist/help/topics/move.md +17 -18
  293. package/dist/help/topics/moveToDir.md +44 -0
  294. package/dist/help/topics/mutate.mixed.md +32 -0
  295. package/dist/help/topics/mutation.shared.md +53 -0
  296. package/dist/help/topics/patterns.md +3 -16
  297. package/dist/help/topics/qr.md +13 -22
  298. package/dist/help/topics/quick-map.md +36 -23
  299. package/dist/help/topics/recipe.file-layout.md +13 -0
  300. package/dist/help/topics/recipe.import-boundary.md +90 -0
  301. package/dist/help/topics/recipe.safe-artifact-probing.md +66 -0
  302. package/dist/help/topics/recipe.unfamiliar-area.md +62 -0
  303. package/dist/help/topics/recipes.md +18 -0
  304. package/dist/help/topics/rename.md +15 -15
  305. package/dist/help/topics/renameFile.md +34 -0
  306. package/dist/help/topics/rg.md +20 -0
  307. package/dist/help/topics/rules.md +24 -0
  308. package/dist/help/topics/selectors.md +3 -2
  309. package/dist/help/topics/session.md +1 -1
  310. package/dist/host/capabilities.js +56 -0
  311. package/dist/imports/standalone-import-analysis.js +602 -0
  312. package/dist/imports/standalone-import-model.js +2 -0
  313. package/dist/imports/standalone-import-process.js +66 -0
  314. package/dist/imports/standalone-import-worker.js +27 -0
  315. package/dist/imports/standalone-ts-project.js +147 -0
  316. package/dist/inspect/inspect-duplicates-service.js +526 -0
  317. package/dist/inspect/inspect-reverse-module-closure.js +338 -0
  318. package/dist/inspect/inspect-source-ranges.js +82 -0
  319. package/dist/inspect/inspect-source-shape.js +649 -0
  320. package/dist/inspect/standalone-inspect-analysis.js +319 -0
  321. package/dist/inspect/standalone-inspect-model.js +9 -0
  322. package/dist/inspect/standalone-inspect-process.js +55 -0
  323. package/dist/inspect/standalone-inspect-usages.js +274 -0
  324. package/dist/inspect/standalone-inspect-worker.js +13 -0
  325. package/dist/metrics/central-metrics.js +101 -2
  326. package/dist/mutation/concrete-edit-plan.js +157 -0
  327. package/dist/mutation/exports-star-collapse-preview.js +361 -0
  328. package/dist/mutation/exports-star-expand-apply.js +373 -0
  329. package/dist/mutation/exports-star-expand-preview.js +807 -0
  330. package/dist/mutation/file-impact-scan.js +182 -0
  331. package/dist/mutation/file-mutation-discovery.js +674 -0
  332. package/dist/mutation/file-mutation-eta.js +99 -0
  333. package/dist/mutation/file-mutation-standalone-apply.js +584 -0
  334. package/dist/mutation/file-mutation-standalone-planner.js +500 -0
  335. package/dist/mutation/file-mutation-tsserver-session.js +473 -0
  336. package/dist/mutation/mutation-estimate.js +45 -0
  337. package/dist/mutation/mutation-plan.js +467 -0
  338. package/dist/mutation/object-mutation-foundation.js +2 -0
  339. package/dist/mutation/object-mutation-partition.js +148 -0
  340. package/dist/mutation/object-pack-semantic-apply.js +507 -0
  341. package/dist/mutation/object-pack-semantic-preview.js +984 -0
  342. package/dist/mutation/object-unpack-semantic-preview.js +993 -0
  343. package/dist/mutation/package-manifest-impact.js +176 -0
  344. package/dist/mutation/rename-owner-worker-child.js +37 -0
  345. package/dist/mutation/rename-owner-worker.js +122 -0
  346. package/dist/mutation/runtime-cycle-query.js +66 -0
  347. package/dist/mutation/semantic-execution-progress.js +63 -0
  348. package/dist/mutation/semantic-export-index.js +474 -0
  349. package/dist/mutation/semantic-impact-scan.js +434 -0
  350. package/dist/mutation/semantic-model.js +2 -0
  351. package/dist/mutation/semantic-move-best-effort-planner.js +209 -0
  352. package/dist/mutation/semantic-move-config-worker-child.js +61 -0
  353. package/dist/mutation/semantic-move-config-worker.js +449 -0
  354. package/dist/mutation/semantic-move-declarations.js +94 -0
  355. package/dist/mutation/semantic-move-metrics.js +119 -0
  356. package/dist/mutation/semantic-move-model.js +2 -0
  357. package/dist/mutation/semantic-move-owner-authority.js +122 -0
  358. package/dist/mutation/semantic-move-owner-candidates.js +300 -0
  359. package/dist/mutation/semantic-move-owner-divergence-harness.js +474 -0
  360. package/dist/mutation/semantic-move-owner-divergence-runner.js +162 -0
  361. package/dist/mutation/semantic-move-plan-hash.js +56 -0
  362. package/dist/mutation/semantic-move-policy.js +360 -0
  363. package/dist/mutation/semantic-move-process.js +218 -0
  364. package/dist/mutation/semantic-move-provider-diagnostics.js +27 -0
  365. package/dist/mutation/semantic-move-standalone-engine.js +919 -0
  366. package/dist/mutation/semantic-move-standalone-planner.js +1553 -0
  367. package/dist/mutation/semantic-move-transaction.js +639 -0
  368. package/dist/mutation/semantic-mutation-engine.js +478 -0
  369. package/dist/mutation/semantic-mutation-runtime.js +521 -0
  370. package/dist/mutation/semantic-planner-retry.js +26 -0
  371. package/dist/mutation/semantic-program-roots.js +69 -0
  372. package/dist/mutation/semantic-rename-commonjs.js +229 -0
  373. package/dist/mutation/semantic-rename-config-worker-child.js +46 -0
  374. package/dist/mutation/semantic-rename-config-worker.js +498 -0
  375. package/dist/mutation/semantic-rename-locations.js +192 -0
  376. package/dist/mutation/semantic-rename-model.js +2 -0
  377. package/dist/mutation/semantic-rename-process.js +210 -0
  378. package/dist/mutation/semantic-rename-standalone-engine.js +302 -0
  379. package/dist/mutation/semantic-rename-standalone-planner.js +567 -0
  380. package/dist/mutation/semantic-rename-transaction.js +333 -0
  381. package/dist/mutation/semantic-unused-import-cleanup.js +248 -0
  382. package/dist/mutation/semantic-worker-retry.js +40 -0
  383. package/dist/mutation/semantic-workspace.js +804 -0
  384. package/dist/mutation/targeted-import-canonicalizer.js +359 -0
  385. package/dist/observability/config.js +206 -1
  386. package/dist/observability/context.js +59 -1
  387. package/dist/observability/failure-snapshot.js +124 -2
  388. package/dist/observability/recent.js +63 -2
  389. package/dist/payloads/read-stdin-json.js +212 -1
  390. package/dist/rg-wrapper/core.js +714 -0
  391. package/dist/rg-wrapper/options.js +125 -0
  392. package/dist/rtk-wrapper/core.js +144 -0
  393. package/dist/rtk-wrapper/git-safety.js +203 -0
  394. package/dist/rtk-wrapper/output-adapter.js +106 -0
  395. package/dist/runtime/buffered-process.js +114 -0
  396. package/dist/runtime/bundled-node.js +97 -1
  397. package/dist/runtime/command-lifecycle.js +2 -0
  398. package/dist/runtime/input-source.js +238 -1
  399. package/dist/runtime/node-cli-identity.js +37 -0
  400. package/dist/runtime/run-command.js +191 -1
  401. package/dist/selectors/parse-entities.js +84 -1
  402. package/dist/semantic/semantic-context-pool.js +830 -0
  403. package/dist/semantic/semantic-context-provider.js +416 -0
  404. package/dist/semantic/semantic-resident-admission.js +38 -0
  405. package/dist/semantic/semantic-worker-child.js +40 -0
  406. package/dist/semantic/semantic-worker-manager.js +460 -0
  407. package/dist/semantic/semantic-worker-protocol.js +2 -0
  408. package/dist/semantic/semantic-worker-runtime.js +38 -0
  409. package/dist/semantic/workspace-semantic-context-pools.js +136 -0
  410. package/dist/session/client.js +359 -1
  411. package/dist/session/daemon-state.js +185 -0
  412. package/dist/session/external-tool-coordinator.js +88 -0
  413. package/dist/session/external-tool-request.js +52 -0
  414. package/dist/session/lane-owner.js +116 -0
  415. package/dist/session/paths.js +71 -1
  416. package/dist/session/runtime-lifecycle.js +225 -0
  417. package/dist/session/runtime-shutdown.js +95 -0
  418. package/dist/session/server.js +1194 -8
  419. package/dist/session/session-health.js +27 -0
  420. package/dist/shared/agent-text.js +29 -1
  421. package/dist/shared/errors.js +496 -30
  422. package/dist/shared/event-loop.js +6 -1
  423. package/dist/shared/hints.js +37 -1
  424. package/dist/shared/metrics.js +43 -1
  425. package/dist/shared/presentation.js +69 -4
  426. package/dist/shared/stdin-examples.js +77 -3
  427. package/dist/shared/stdout.js +6 -2
  428. package/dist/shared/types.js +23 -1
  429. package/dist/tool-runtime/runtime-tools.js +120 -0
  430. package/dist/topology/availability.js +663 -0
  431. package/dist/topology/cache.js +130 -0
  432. package/dist/topology/candidates.js +372 -0
  433. package/dist/topology/core.js +903 -0
  434. package/dist/topology/dependency-snapshot.js +189 -0
  435. package/dist/topology/model.js +2 -0
  436. package/dist/topology/scope.js +100 -0
  437. package/dist/topology/ts-oracle-batch.js +529 -0
  438. package/dist/topology/ts-oracle-host.js +69 -0
  439. package/dist/topology/ts-oracle-model.js +2 -0
  440. package/dist/topology/ts-oracle.js +224 -0
  441. package/dist/topology/tsconfig-loader.js +105 -0
  442. package/dist/topology/workspace-project-index.js +542 -0
  443. package/dist/tracing/config.js +192 -2
  444. package/dist/tracing/failure-summary.js +100 -0
  445. package/dist/tracing/trace.js +318 -5
  446. package/dist/tsc-wrapper/core.js +697 -0
  447. package/dist/workers/control-plane/aib-control-plane-worker.cjs +80 -0
  448. package/dist/workers/control-plane/client-config.default.json +3 -0
  449. package/dist/workers/lexical-worker-child.js +27 -0
  450. package/dist/workers/lexical-worker-manager.js +394 -0
  451. package/dist/workers/lexical-worker-protocol.js +2 -0
  452. package/dist/workers/lexical-worker-runtime.js +25 -0
  453. package/dist/workers/owned-one-shot-process.js +115 -0
  454. package/dist/workers/product-storage.js +23 -0
  455. package/dist/workers/registry.js +241 -0
  456. package/package.json +8 -11
  457. package/runtimes/tools/rg/darwin-arm64/rg +0 -0
  458. package/runtimes/tools/rg/darwin-x64/rg +0 -0
  459. package/runtimes/tools/rg/linux-arm64/rg +0 -0
  460. package/runtimes/tools/rg/linux-x64/rg +0 -0
  461. package/runtimes/tools/rg/manifest.json +36 -0
  462. package/runtimes/tools/rg/win32-x64/rg.exe +0 -0
  463. package/runtimes/tools/rtk/darwin-arm64/rtk +0 -0
  464. package/runtimes/tools/rtk/darwin-x64/rtk +0 -0
  465. package/runtimes/tools/rtk/linux-arm64/rtk +0 -0
  466. package/runtimes/tools/rtk/linux-x64/rtk +0 -0
  467. package/runtimes/tools/rtk/manifest.json +36 -0
  468. package/runtimes/tools/rtk/win32-x64/rtk.exe +0 -0
  469. package/scripts/postinstall.cjs +29 -29
  470. package/scripts/provision-runtime.cjs +411 -459
  471. package/dist/client/http-client.js +0 -1
  472. package/dist/client/transport-options.js +0 -1
  473. package/dist/client/websocket-client.js +0 -1
  474. package/dist/commands/entity-resolution.js +0 -1
  475. package/dist/commands/inspect-symbol-query.js +0 -1
  476. package/dist/commands/list-instances.js +0 -1
  477. package/dist/commands/module-plan-command.js +0 -1
  478. package/dist/commands/move-command.js +0 -1
  479. package/dist/commands/move-to-file.js +0 -2
  480. package/dist/commands/ping.js +0 -1
  481. package/dist/commands/refactor-command.js +0 -1
  482. package/dist/commands/rename-command.js +0 -1
  483. package/dist/commands/runtime-command.js +0 -4
  484. package/dist/commands/runtime-info.js +0 -1
  485. package/dist/commands/validate-module-plan.js +0 -2
  486. package/dist/compatibility/policy.js +0 -1
  487. package/dist/config/auto-start-ide.js +0 -1
  488. package/dist/discovery/registry.js +0 -1
  489. package/dist/discovery/select-instance.js +0 -1
  490. package/dist/help/docs/mutation.md +0 -50
  491. package/dist/help/docs/refactor.batch.md +0 -44
  492. package/dist/help/dsl/docs/mutation.md +0 -50
  493. package/dist/help/dsl/docs/refactor.batch.md +0 -44
  494. package/dist/help/dsl/topics/mutation.md +0 -48
  495. package/dist/help/dsl/topics/refactor.batch.md +0 -33
  496. package/dist/help/json/bootstrap.md +0 -1085
  497. package/dist/help/json/docs/basics.md +0 -15
  498. package/dist/help/json/docs/config-setup.aliases.md +0 -56
  499. package/dist/help/json/docs/config-setup.excludes.md +0 -45
  500. package/dist/help/json/docs/config-setup.import-normalize.md +0 -86
  501. package/dist/help/json/docs/config-setup.import-rules.md +0 -96
  502. package/dist/help/json/docs/config-setup.tsconfigs.md +0 -33
  503. package/dist/help/json/docs/dsl.md +0 -25
  504. package/dist/help/json/docs/first-setup.md +0 -292
  505. package/dist/help/json/docs/help-format.md +0 -9
  506. package/dist/help/json/docs/help-protocol.md +0 -26
  507. package/dist/help/json/docs/imports.normalize.md +0 -47
  508. package/dist/help/json/docs/inspect.code.md +0 -41
  509. package/dist/help/json/docs/inspect.cycles.md +0 -38
  510. package/dist/help/json/docs/inspect.deps.md +0 -46
  511. package/dist/help/json/docs/inspect.duplicates.md +0 -65
  512. package/dist/help/json/docs/inspect.exports.md +0 -40
  513. package/dist/help/json/docs/inspect.file.md +0 -38
  514. package/dist/help/json/docs/inspect.graph.md +0 -139
  515. package/dist/help/json/docs/inspect.imports.md +0 -15
  516. package/dist/help/json/docs/inspect.md +0 -88
  517. package/dist/help/json/docs/inspect.members.md +0 -32
  518. package/dist/help/json/docs/inspect.tree.md +0 -32
  519. package/dist/help/json/docs/inspect.usages.md +0 -61
  520. package/dist/help/json/docs/modulePlan.md +0 -73
  521. package/dist/help/json/docs/move.md +0 -56
  522. package/dist/help/json/docs/mutation.md +0 -65
  523. package/dist/help/json/docs/patterns.md +0 -76
  524. package/dist/help/json/docs/prefs.md +0 -40
  525. package/dist/help/json/docs/qr.md +0 -37
  526. package/dist/help/json/docs/quick-map.md +0 -30
  527. package/dist/help/json/docs/refactor.batch.md +0 -72
  528. package/dist/help/json/docs/rename.md +0 -47
  529. package/dist/help/json/docs/reveal.md +0 -30
  530. package/dist/help/json/docs/selectors.md +0 -23
  531. package/dist/help/json/docs/session.md +0 -77
  532. package/dist/help/json/docs/view.md +0 -30
  533. package/dist/help/json/full.md +0 -1085
  534. package/dist/help/json/snippets/agents.md +0 -14
  535. package/dist/help/json/topics/basics.md +0 -13
  536. package/dist/help/json/topics/config-setup.aliases.md +0 -54
  537. package/dist/help/json/topics/config-setup.excludes.md +0 -43
  538. package/dist/help/json/topics/config-setup.import-normalize.md +0 -84
  539. package/dist/help/json/topics/config-setup.import-rules.md +0 -94
  540. package/dist/help/json/topics/config-setup.tsconfigs.md +0 -31
  541. package/dist/help/json/topics/dsl.md +0 -23
  542. package/dist/help/json/topics/first-setup.md +0 -290
  543. package/dist/help/json/topics/help-format.md +0 -7
  544. package/dist/help/json/topics/help-protocol.md +0 -24
  545. package/dist/help/json/topics/imports.normalize.md +0 -45
  546. package/dist/help/json/topics/inspect.code.md +0 -39
  547. package/dist/help/json/topics/inspect.cycles.md +0 -36
  548. package/dist/help/json/topics/inspect.deps.md +0 -44
  549. package/dist/help/json/topics/inspect.duplicates.md +0 -37
  550. package/dist/help/json/topics/inspect.exports.md +0 -38
  551. package/dist/help/json/topics/inspect.file.md +0 -36
  552. package/dist/help/json/topics/inspect.graph.md +0 -137
  553. package/dist/help/json/topics/inspect.imports.md +0 -13
  554. package/dist/help/json/topics/inspect.md +0 -86
  555. package/dist/help/json/topics/inspect.members.md +0 -30
  556. package/dist/help/json/topics/inspect.tree.md +0 -22
  557. package/dist/help/json/topics/inspect.usages.md +0 -59
  558. package/dist/help/json/topics/modulePlan.md +0 -60
  559. package/dist/help/json/topics/move.md +0 -46
  560. package/dist/help/json/topics/mutation.md +0 -63
  561. package/dist/help/json/topics/patterns.md +0 -74
  562. package/dist/help/json/topics/prefs.md +0 -38
  563. package/dist/help/json/topics/qr.md +0 -35
  564. package/dist/help/json/topics/quick-map.md +0 -28
  565. package/dist/help/json/topics/refactor.batch.md +0 -61
  566. package/dist/help/json/topics/rename.md +0 -42
  567. package/dist/help/json/topics/reveal.md +0 -28
  568. package/dist/help/json/topics/selectors.md +0 -21
  569. package/dist/help/json/topics/session.md +0 -59
  570. package/dist/help/json/topics/view.md +0 -28
  571. package/dist/help/topics/mutation.md +0 -48
  572. package/dist/help/topics/refactor.batch.md +0 -33
  573. package/dist/ide-launch/common.cjs +0 -162
  574. package/dist/managed-host/extension-vsix-resolver.js +0 -1
  575. package/dist/managed-host/manage-serve-web-host.cjs +0 -141
  576. package/dist/managed-host/serve-web-autostart.js +0 -1
  577. package/dist/managed-host/serve-web-host.cjs +0 -1904
  578. package/dist/runtime/managed-runtime-provisioning.js +0 -1
  579. package/dist/shared/diagnostic-catalog.js +0 -1
  580. package/dist/shared/diagnostics.js +0 -1
  581. package/dist/shared/operations.js +0 -1
  582. package/dist/shared/protocol.js +0 -1
  583. package/dist/shared/routes.js +0 -1
  584. package/extension/vscode-refactor-bridge-extension.vsix +0 -0
  585. package/runtimes/launcher/linux-x64/aib +0 -0
  586. package/runtimes/launcher/win-x64/aib.exe +0 -0
@@ -1,6 +1,993 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.runResultViewCommand=D;const x=require("../shared/agent-text"),h=require("../shared/errors"),E=require("./inspect-cycles"),g=require("./session-workspace");function D(t,e,r){if(r!==void 0)return M(t,r);const n=e.find(u=>!u.startsWith("--"));if(!n)throw new h.CliError("VIEW_HANDLE_REQUIRED","Usage: aib view aib:res_<id>");const i=V(n),s=T(e.slice(1));if(i.short)return L((0,g.readSessionResultViewJson)(t,i.id),s,n);if(i.kind==="cycles")return(0,E.buildCyclesViewResponse)((0,g.readSessionResultJson)(t,i.kind,i.id),{...s.detail!==void 0?{detail:b(s.detail)}:{},...s.offset!==void 0?{offset:s.offset}:{},...s.limit!==void 0?{limit:s.limit}:{},...s.index!==void 0?{index:s.index}:{},...s.kind!==void 0?{kind:A(s.kind)}:{},resultHandle:n});const d={ok:!1,code:"UNSUPPORTED_RESULT_VIEW",error:`aib view does not support result kind: ${i.kind}`};return(0,x.attachAgentText)(d,`unsupported result view: ${i.kind}`)}function M(t,e){const r=Array.isArray(e.views),n=Array.isArray(e.views)?e.views:[],i=r?n.filter(m):m(e.view)?[e.view]:m(e)?[e]:[];if(i.length===0)throw new h.CliError("VIEW_HANDLE_REQUIRED","view expects a handle.");const s=i.map((u,f)=>{try{return N(t,u)}catch(c){if(!r||i.length===1)throw c;return{...(0,h.errorPayload)(c),index:f}}});if(s.length===1)return s[0];const d=s.filter(u=>m(u)&&u.ok===!1).length;return(0,x.attachAgentText)({ok:d===0,...d>0?{batchOk:!1,failedCount:d}:{},results:s},s.map(u=>{if(!m(u))return"";const f=(0,x.readAgentText)(u);return typeof f=="string"?f.trimEnd():""}).filter(u=>u!=="").join(`
2
-
3
- `))}function N(t,e){const r=o(e.handle)??o(e.from)??"";if(!r)throw new h.CliError("VIEW_HANDLE_REQUIRED","view expects a handle.");const n=V(r),i={...o(e.detail)!==void 0?{detail:o(e.detail)}:{},...p(e.offset)!==void 0?{offset:p(e.offset)}:{},...p(e.limit)!==void 0?{limit:p(e.limit)}:{},...p(e.index)!==void 0?{index:p(e.index)}:{},...o(e.kind)!==void 0?{kind:o(e.kind)}:{},...k(e.only).length>0?{only:k(e.only)}:{},...k(e.except).length>0?{except:k(e.except)}:{}};return n.short?L((0,g.readSessionResultViewJson)(t,n.id),i,r):n.kind==="cycles"?(0,E.buildCyclesViewResponse)((0,g.readSessionResultJson)(t,n.kind,n.id),{...i.detail!==void 0?{detail:b(i.detail)}:{},...i.offset!==void 0?{offset:i.offset}:{},...i.limit!==void 0?{limit:i.limit}:{},...i.index!==void 0?{index:i.index}:{},...i.kind!==void 0?{kind:A(i.kind)}:{},resultHandle:r}):(0,x.attachAgentText)({ok:!1,code:"UNSUPPORTED_RESULT_VIEW",error:`aib view does not support result kind: ${n.kind}`},`unsupported result view: ${n.kind}`)}function V(t){if(/^aib:res_[A-Za-z0-9_-]+$/.test(t))return{kind:"view",id:t.slice(4),short:!0};const e=t.split(":");if(e.length!==4||e[0]!=="aib"||e[1]!=="result"||!e[2]||!e[3])throw new h.CliError("INVALID_RESULT_HANDLE",`Invalid result handle: ${t}`,{expected:"aib:res_<id>"});return{kind:e[2],id:e[3],short:!1}}function T(t){const e={},r=I(t,"--detail"),n=_(t,"--offset"),i=_(t,"--limit"),s=_(t,"--index"),d=I(t,"--kind"),u=$(t,"--only").flatMap(w),f=$(t,"--except").flatMap(w);return r!==void 0&&(e.detail=r),n!==void 0&&(e.offset=n),i!==void 0&&(e.limit=i),s!==void 0&&(e.index=s),d!==void 0&&(e.kind=d),u.length>0&&(e.only=u),f.length>0&&(e.except=f),e}function L(t,e,r){const n=o(t.kind);return t.op==="cycles"?(0,E.buildCyclesViewResponse)(t,{...e.detail!==void 0?{detail:b(e.detail)}:{},...e.offset!==void 0?{offset:e.offset}:{},...e.limit!==void 0?{limit:e.limit}:{},...e.index!==void 0?{index:e.index}:{},...e.kind!==void 0?{kind:A(e.kind)}:{},resultHandle:r}):n==="code"?W(t,e,r):n==="members"||n==="duplicates"||n==="usages"?U(t,e,r,n):(0,x.attachAgentText)({ok:!1,code:"UNSUPPORTED_RESULT_VIEW",error:`aib view does not support result kind: ${n??"unknown"}`},`unsupported result view: ${n??"unknown"}`)}function U(t,e,r,n){const i=Array.isArray(t.items)?t.items.filter(m):[],s=C(i,e,y=>[o(y.name),o(y.text)?.split(/\s+/)[0]]),d=Math.max(0,e.offset??0),u=s.length||1,f=Math.max(1,e.limit??u),c=s.slice(d,d+f),l=Math.max(0,s.length-d-c.length),a={ok:!0,op:"view",handle:r,kind:n,source:o(t.source)??"inspect",...o(t.file)!==void 0?{file:o(t.file)}:{},...o(t.entity)!==void 0?{entity:o(t.entity)}:{},...o(t.target)!==void 0?{target:o(t.target)}:{},...o(t.detail)!==void 0?{detail:o(t.detail)}:{},items:c,offset:d,limit:f,...l>0?{hidden:l}:{}};return(0,x.attachAgentText)(a,P(a))}function W(t,e,r){const n=Array.isArray(t.items)?t.items.filter(m):[],i=C(n,e,a=>[o(a.entity),o(a.name)]),s=Math.max(0,e.offset??0),d=i.length||1,u=Math.max(1,e.limit??d),f=i.slice(s,s+u),c=Math.max(0,i.length-s-f.length),l={ok:!0,op:"view",handle:r,kind:"code",source:o(t.source)??"inspect",items:f,offset:s,limit:u,...c>0?{hidden:c}:{},...f.length===0&&n.length>0&&H(e)?{noMatches:!0}:{}};return(0,x.attachAgentText)(l,O(l))}function O(t){const e=[],r=Array.isArray(t.items)?t.items.filter(m):[];if(r.length===0&&t.noMatches===!0)return e.push("no hidden code matched view filters"),e.join(`
4
- `);let n="";for(const s of r){const d=o(s.file)??"";d&&d!==n&&(e.length>0&&e.push(""),e.push(`// ${d}`),n=d);const u=o(s.entity)??"",f=o(s.meta)??o(s.rangeMeta)??"",c=[u,f].filter(a=>a!=="").join(" ");c&&e.push(`// ${c}`);const l=o(s.code);l&&e.push(l.trimEnd())}const i=p(t.hidden)??0;return i>0&&e.push(`+ ${i} more hidden code blocks`),e.join(`
5
- `)}function P(t){const e=[],r=o(t.file),n=o(t.target),i=o(t.kind)??"",s=o(t.detail);r?e.push(`// ${r}`):i==="usages"?e.push(s?`usages ${s}`:"usages"):n&&e.push(`duplicates ${n}`);const d=o(t.entity);d&&e.push(`// ${d}:`);const u=Array.isArray(t.items)?t.items.filter(m):[];if(i==="usages")for(const[c,l]of j(u,a=>o(a.name)??"")){c&&e.push(`${c}:`);for(const a of l){const y=o(a.text);y&&e.push(y.trimEnd())}}else for(const c of u){const l=o(c.text);l&&e.push(l.trimEnd())}const f=p(t.hidden)??0;return f>0&&e.push(`+ ${f} more hidden ${i==="members"?"members":i==="usages"?"usages":"items"}`),e.join(`
6
- `)}function j(t,e){const r=new Map;for(const n of t){const i=e(n),s=r.get(i)??[];s.push(n),r.set(i,s)}return Array.from(r.entries())}function b(t){if(t==="summary"||t==="sum")return"summary";if(t==="imports"||t==="files")return t;throw new h.CliError("INVALID_CYCLES_DETAIL","aib view cycles --detail expects summary, imports, or files.")}function A(t){if(t==="runtime"||t==="type-only"||t==="mixed")return t;throw new h.CliError("INVALID_CYCLES_KIND","aib view cycles --kind expects runtime, type-only, or mixed.")}function I(t,e){const r=t.indexOf(e),n=r>=0?t[r+1]:void 0;return n&&!n.startsWith("--")?n:void 0}function $(t,e){const r=[];for(let n=0;n<t.length;n+=1){if(t[n]!==e)continue;const i=t[n+1];i&&!i.startsWith("--")&&r.push(i)}return r}function _(t,e){const r=I(t,e);if(r===void 0)return;const n=Number(r),i=e==="--offset"?0:1;if(!Number.isInteger(n)||n<i)throw new h.CliError("INVALID_VIEW_OPTION",`${e} expects ${i===0?"a non-negative":"a positive"} integer.`);return n}function m(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}function o(t){return typeof t=="string"&&t!==""?t:void 0}function p(t){return typeof t=="number"&&Number.isFinite(t)?t:void 0}function k(t){return typeof t=="string"&&t!==""?w(t):Array.isArray(t)?t.filter(e=>typeof e=="string"&&e!=="").flatMap(w):[]}function C(t,e,r){const n=e.only??[],i=e.except??[],s=n.length>0?t.filter(d=>S(r(d),n)):t;return i.length===0?s:s.filter(d=>!S(r(d),i))}function H(t){return(t.only?.length??0)>0||(t.except?.length??0)>0}function S(t,e){return t.some(r=>r!==void 0&&e.some(n=>F(r,n)))}function F(t,e){if(t===e)return!0;const r=t.split(".").pop()??t,n=e.split(".").pop()??e;return r===n&&!e.includes(".")}function w(t){const e=t.trim();return(J(e)??R(e)).flatMap(q)}function q(t){const e=t.trim(),r=e.match(/^(.+)\.\{(.+)\}$/);if(r){const n=r[1],i=r[2];if(n&&i)return R(i).map(s=>`${n}.${s}`)}return e?[e]:[]}function J(t){if(!t.startsWith("[")||!t.endsWith("]"))return null;const e=t.slice(1,-1).trim();return e?R(e):[]}function R(t){const e=[];let r="",n=0;for(const i of t){if(i==="{"?n+=1:i==="}"&&n>0&&(n-=1),i===","&&n===0){r.trim()&&e.push(r.trim()),r="";continue}r+=i}return r.trim()&&e.push(r.trim()),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.runResultViewCommand = runResultViewCommand;
37
+ const path = __importStar(require("node:path"));
38
+ const agent_dx_1 = require("../agent-dx/agent-dx");
39
+ const agent_text_1 = require("../shared/agent-text");
40
+ const errors_1 = require("../shared/errors");
41
+ const declaration_format_1 = require("./declaration-format");
42
+ const inspect_cycles_1 = require("./inspect-cycles");
43
+ const object_pack_command_1 = require("./object-pack-command");
44
+ const session_workspace_1 = require("./session-workspace");
45
+ function runResultViewCommand(cwd, restArgs, stdinPayload) {
46
+ const agentDxSignals = collectViewAgentDxSignals(restArgs);
47
+ if (stdinPayload !== undefined) {
48
+ return (0, agent_dx_1.applyAgentDxSignals)(cwd, runResultViewPayload(cwd, stdinPayload), agentDxSignals);
49
+ }
50
+ const handle = restArgs.find((arg) => !arg.startsWith("--"));
51
+ if (!handle) {
52
+ throw new errors_1.CliError("VIEW_HANDLE_REQUIRED", "Usage: aib view aib:res_<id>");
53
+ }
54
+ const parsed = parseResultHandle(handle);
55
+ const options = parseViewOptions(restArgs.slice(1));
56
+ if (parsed.short) {
57
+ return (0, agent_dx_1.applyAgentDxSignals)(cwd, buildGenericViewResponse(cwd, (0, session_workspace_1.readSessionResultViewJson)(cwd, parsed.id), options, handle), agentDxSignals);
58
+ }
59
+ if (parsed.kind === "cycles") {
60
+ return (0, agent_dx_1.applyAgentDxSignals)(cwd, (0, inspect_cycles_1.buildCyclesViewResponse)((0, session_workspace_1.readSessionResultJson)(cwd, parsed.kind, parsed.id), {
61
+ ...(options.detail !== undefined ? { detail: readCyclesDetail(options.detail) } : {}),
62
+ ...(options.offset !== undefined ? { offset: options.offset } : {}),
63
+ ...(options.limit !== undefined ? { limit: options.limit } : {}),
64
+ ...(options.index !== undefined ? { index: options.index } : {}),
65
+ ...(options.kind !== undefined ? { kind: readCyclesKind(options.kind) } : {}),
66
+ resultHandle: handle
67
+ }), agentDxSignals);
68
+ }
69
+ const response = {
70
+ ok: false,
71
+ code: "UNSUPPORTED_RESULT_VIEW",
72
+ error: `aib view does not support result kind: ${parsed.kind}`
73
+ };
74
+ return (0, agent_dx_1.applyAgentDxSignals)(cwd, (0, agent_text_1.attachAgentText)(response, `unsupported result view: ${parsed.kind}`), agentDxSignals);
75
+ }
76
+ function runResultViewPayload(cwd, payload) {
77
+ const batchInput = Array.isArray(payload.views);
78
+ const rawViews = Array.isArray(payload.views) ? payload.views : [];
79
+ const views = batchInput
80
+ ? rawViews.filter(isObject)
81
+ : isObject(payload.view)
82
+ ? [payload.view]
83
+ : isObject(payload)
84
+ ? [payload]
85
+ : [];
86
+ if (views.length === 0) {
87
+ throw new errors_1.CliError("VIEW_HANDLE_REQUIRED", "view expects a handle.");
88
+ }
89
+ const results = views.map((view, index) => {
90
+ try {
91
+ return runSingleResultView(cwd, view);
92
+ }
93
+ catch (error) {
94
+ if (!batchInput || views.length === 1) {
95
+ throw error;
96
+ }
97
+ const failed = (0, errors_1.errorPayload)(error);
98
+ return {
99
+ ...failed,
100
+ index
101
+ };
102
+ }
103
+ });
104
+ if (results.length === 1) {
105
+ return results[0];
106
+ }
107
+ const failedCount = results.filter((result) => isObject(result) && result.ok === false).length;
108
+ return (0, agent_text_1.attachAgentText)({
109
+ ok: failedCount === 0,
110
+ ...(failedCount > 0 ? { batchOk: false, failedCount } : {}),
111
+ results
112
+ }, results
113
+ .map((result) => {
114
+ if (!isObject(result)) {
115
+ return "";
116
+ }
117
+ const text = (0, agent_text_1.readAgentText)(result);
118
+ return typeof text === "string" ? text.trimEnd() : "";
119
+ })
120
+ .filter((text) => text !== "")
121
+ .join("\n\n"));
122
+ }
123
+ function runSingleResultView(cwd, view) {
124
+ const handle = readString(view.handle) ?? readString(view.from) ?? "";
125
+ if (!handle) {
126
+ throw new errors_1.CliError("VIEW_HANDLE_REQUIRED", "view expects a handle.");
127
+ }
128
+ const parsed = parseResultHandle(handle);
129
+ const options = {
130
+ ...(readString(view.detail) !== undefined ? { detail: readString(view.detail) } : {}),
131
+ ...(readNumber(view.offset) !== undefined ? { offset: readNumber(view.offset) } : {}),
132
+ ...(readNumber(view.limit) !== undefined ? { limit: readNumber(view.limit) } : {}),
133
+ ...(readNumber(view.index) !== undefined ? { index: readNumber(view.index) } : {}),
134
+ ...(readString(view.kind) !== undefined ? { kind: readString(view.kind) } : {}),
135
+ ...(readStringList(view.only).length > 0 ? { only: readStringList(view.only) } : {}),
136
+ ...(readStringList(view.except).length > 0 ? { except: readStringList(view.except) } : {})
137
+ };
138
+ if (parsed.short) {
139
+ return buildGenericViewResponse(cwd, (0, session_workspace_1.readSessionResultViewJson)(cwd, parsed.id), options, handle);
140
+ }
141
+ if (parsed.kind === "cycles") {
142
+ return (0, inspect_cycles_1.buildCyclesViewResponse)((0, session_workspace_1.readSessionResultJson)(cwd, parsed.kind, parsed.id), {
143
+ ...(options.detail !== undefined ? { detail: readCyclesDetail(options.detail) } : {}),
144
+ ...(options.offset !== undefined ? { offset: options.offset } : {}),
145
+ ...(options.limit !== undefined ? { limit: options.limit } : {}),
146
+ ...(options.index !== undefined ? { index: options.index } : {}),
147
+ ...(options.kind !== undefined ? { kind: readCyclesKind(options.kind) } : {}),
148
+ resultHandle: handle
149
+ });
150
+ }
151
+ return (0, agent_text_1.attachAgentText)({
152
+ ok: false,
153
+ code: "UNSUPPORTED_RESULT_VIEW",
154
+ error: `aib view does not support result kind: ${parsed.kind}`
155
+ }, `unsupported result view: ${parsed.kind}`);
156
+ }
157
+ function parseResultHandle(handle) {
158
+ if (/^aib:res_[A-Za-z0-9_-]+$/.test(handle)) {
159
+ return {
160
+ kind: "view",
161
+ id: handle.slice("aib:".length),
162
+ short: true
163
+ };
164
+ }
165
+ const parts = handle.split(":");
166
+ if (parts.length !== 4 || parts[0] !== "aib" || parts[1] !== "result" || !parts[2] || !parts[3]) {
167
+ throw new errors_1.CliError("INVALID_RESULT_HANDLE", `Invalid result handle: ${handle}`, {
168
+ expected: "aib:res_<id>"
169
+ });
170
+ }
171
+ return {
172
+ kind: parts[2],
173
+ id: parts[3],
174
+ short: false
175
+ };
176
+ }
177
+ function parseViewOptions(args) {
178
+ const options = {};
179
+ const detail = readFlagValue(args, "--detail");
180
+ const offset = readOptionalIntegerFlag(args, "--offset");
181
+ const limit = readOptionalIntegerFlag(args, "--limit");
182
+ const index = readOptionalIntegerFlag(args, "--index");
183
+ const kind = readFlagValue(args, "--kind");
184
+ const only = readFlagValues(args, "--only").flatMap(expandSelectorInput);
185
+ const except = readFlagValues(args, "--except").flatMap(expandSelectorInput);
186
+ if (detail !== undefined) {
187
+ options.detail = detail;
188
+ }
189
+ if (offset !== undefined) {
190
+ options.offset = offset;
191
+ }
192
+ if (limit !== undefined) {
193
+ options.limit = limit;
194
+ }
195
+ if (index !== undefined) {
196
+ options.index = index;
197
+ }
198
+ if (kind !== undefined) {
199
+ options.kind = kind;
200
+ }
201
+ if (only.length > 0) {
202
+ options.only = only;
203
+ }
204
+ if (except.length > 0) {
205
+ options.except = except;
206
+ }
207
+ return options;
208
+ }
209
+ const VIEW_KNOWN_FLAGS = new Set([
210
+ "--detail",
211
+ "--dsl",
212
+ "--except",
213
+ "--force-dsl",
214
+ "--from",
215
+ "--from-dsl",
216
+ "--from-json",
217
+ "--index",
218
+ "--kind",
219
+ "--limit",
220
+ "--offset",
221
+ "--only",
222
+ "--stdin",
223
+ "--stdin-format"
224
+ ]);
225
+ const VIEW_VALUE_FLAGS = new Set([
226
+ "--detail",
227
+ "--except",
228
+ "--from",
229
+ "--from-dsl",
230
+ "--from-json",
231
+ "--index",
232
+ "--kind",
233
+ "--limit",
234
+ "--offset",
235
+ "--only",
236
+ "--stdin-format"
237
+ ]);
238
+ function collectViewAgentDxSignals(args) {
239
+ const signal = (0, agent_dx_1.collectUnknownFlagSignal)({
240
+ command: "view",
241
+ args,
242
+ knownFlags: VIEW_KNOWN_FLAGS,
243
+ valueFlags: VIEW_VALUE_FLAGS,
244
+ helpRefs: [{ topic: "view", reason: "unknownFlag", priority: 1, mode: "command" }]
245
+ });
246
+ return signal ? [signal] : [];
247
+ }
248
+ function buildGenericViewResponse(cwd, artifact, options, handle) {
249
+ const kind = readString(artifact.kind);
250
+ if (artifact.op === "cycles") {
251
+ return (0, inspect_cycles_1.buildCyclesViewResponse)(artifact, {
252
+ ...(options.detail !== undefined ? { detail: readCyclesDetail(options.detail) } : {}),
253
+ ...(options.offset !== undefined ? { offset: options.offset } : {}),
254
+ ...(options.limit !== undefined ? { limit: options.limit } : {}),
255
+ ...(options.index !== undefined ? { index: options.index } : {}),
256
+ ...(options.kind !== undefined ? { kind: readCyclesKind(options.kind) } : {}),
257
+ resultHandle: handle
258
+ });
259
+ }
260
+ if (kind === "code") {
261
+ return buildCodeViewResponse(artifact, options, handle);
262
+ }
263
+ if (kind === "members" || kind === "duplicates" || kind === "usages") {
264
+ return buildListViewResponse(artifact, options, handle, kind);
265
+ }
266
+ if (kind === "declarationMutation") {
267
+ return buildDeclarationMutationViewResponse(cwd, artifact, handle);
268
+ }
269
+ if (kind === "declarationCleanup") {
270
+ return buildDeclarationCleanupViewResponse(cwd, artifact, handle);
271
+ }
272
+ if (kind === "mutationFiles") {
273
+ return buildMutationFilesViewResponse(cwd, artifact, options, handle);
274
+ }
275
+ if (kind === "importsNormalize") {
276
+ return buildImportsNormalizeViewResponse(cwd, artifact, options, handle);
277
+ }
278
+ if (kind === "objectPack") {
279
+ return (0, object_pack_command_1.buildObjectPackViewResponse)(cwd, artifact, handle);
280
+ }
281
+ if (kind === "exportsStarExpandBatch" || kind === "exportsStarExpandWrite" || kind === "exportsStarExpandWriteBatch" || kind === "exportsStarCollapseBatch" || kind === "exportsStarCollapseWrite" || kind === "exportsStarCollapseWriteBatch") {
282
+ return buildExportsStarViewResponse(artifact, handle, kind);
283
+ }
284
+ return (0, agent_text_1.attachAgentText)({
285
+ ok: false,
286
+ code: "UNSUPPORTED_RESULT_VIEW",
287
+ error: `aib view does not support result kind: ${kind ?? "unknown"}`
288
+ }, `unsupported result view: ${kind ?? "unknown"}`);
289
+ }
290
+ function buildExportsStarViewResponse(artifact, handle, kind) {
291
+ const barrels = kind === "exportsStarExpandBatch" || kind === "exportsStarCollapseBatch"
292
+ ? readObjectList(artifact.barrels)
293
+ : kind === "exportsStarExpandWriteBatch" || kind === "exportsStarCollapseWriteBatch"
294
+ ? readObjectList(artifact.results).flatMap((result) => readObjectList(result.results))
295
+ : readObjectList(artifact.results);
296
+ const plannedCount = barrels.reduce((sum, barrel) => sum + (readNumber(barrel.plannedCount) ?? 0), 0);
297
+ const retainedCount = barrels.reduce((sum, barrel) => sum + (readNumber(barrel.retainedCount) ?? 0), 0);
298
+ const response = {
299
+ ok: true,
300
+ op: "view",
301
+ handle,
302
+ kind,
303
+ artifact
304
+ };
305
+ const lines = [
306
+ `${kind.startsWith("exportsStarCollapse") ? "exports.star.collapse" : "exports.star.expand"} view ${handle}`,
307
+ `${barrels.length} ${barrels.length === 1 ? "barrel" : "barrels"}; ${plannedCount} ${plannedCount === 1 ? "edge" : "edges"} planned; ${retainedCount} retained`,
308
+ kind.startsWith("exportsStarCollapse")
309
+ ? "structured evidence includes exact edits, before hashes, semantic fingerprints, diagnostics, cycles, owners and surfaces"
310
+ : "structured evidence includes exact edits, before hashes, semantic fingerprints, diagnostics, cycles, owners and consumers"
311
+ ];
312
+ return (0, agent_text_1.attachAgentText)(response, lines.join("\n"));
313
+ }
314
+ function buildImportsNormalizeViewResponse(cwd, artifact, options, handle) {
315
+ const rawEdits = readObjectList(artifact.hiddenEdits).length > 0
316
+ ? readObjectList(artifact.hiddenEdits)
317
+ : readObjectList(artifact.edits);
318
+ const filteredEdits = filterItems(rawEdits, options, (item) => [
319
+ readString(item.file),
320
+ readString(item.from),
321
+ readString(item.to),
322
+ ...readStringList(item.specifiers)
323
+ ]);
324
+ const offset = Math.max(0, options.offset ?? 0);
325
+ const defaultLimit = Math.min(filteredEdits.length || 1, 20);
326
+ const limit = Math.max(1, options.limit ?? defaultLimit);
327
+ const edits = filteredEdits.slice(offset, offset + limit);
328
+ const hidden = Math.max(0, filteredEdits.length - offset - edits.length);
329
+ const response = {
330
+ ok: true,
331
+ op: "view",
332
+ handle,
333
+ kind: "importsNormalize",
334
+ operation: readString(artifact.operation) ?? "imports.normalize",
335
+ ...(readString(artifact.mode) !== undefined ? { mode: readString(artifact.mode) } : {}),
336
+ ...(readString(artifact.target) !== undefined ? { target: readString(artifact.target) } : {}),
337
+ policyGroups: readObjectList(artifact.policyGroups),
338
+ edits,
339
+ hiddenFiles: readStringList(artifact.hiddenFiles),
340
+ ...(readNumber(artifact.hiddenFileCount) !== null ? { hiddenFileCount: readNumber(artifact.hiddenFileCount) } : {}),
341
+ offset,
342
+ limit,
343
+ total: filteredEdits.length,
344
+ ...(hidden > 0 ? { hidden } : {})
345
+ };
346
+ return (0, agent_text_1.attachAgentText)(response, formatImportsNormalizeViewResponse(cwd, response));
347
+ }
348
+ function formatImportsNormalizeViewResponse(cwd, response) {
349
+ const handle = readString(response.handle) ?? "";
350
+ const total = readNumber(response.total) ?? readObjectList(response.edits).length;
351
+ const hiddenFiles = readStringList(response.hiddenFiles);
352
+ const totalFiles = readNumber(response.hiddenFileCount) ?? hiddenFiles.length;
353
+ const lines = [
354
+ `imports.normalize ${handle}`,
355
+ `${total} hidden import ${total === 1 ? "edit" : "edits"}${totalFiles > 0 ? `; ${totalFiles} hidden ${totalFiles === 1 ? "file" : "files"}` : ""}`
356
+ ];
357
+ if (readObjectList(response.edits).length > 0) {
358
+ lines.push("hidden edits:");
359
+ }
360
+ for (const [file, edits] of groupBy(readObjectList(response.edits), (item) => readString(item.file) ?? "")) {
361
+ if (file) {
362
+ lines.push(formatViewPath(cwd, file));
363
+ }
364
+ for (const edit of edits) {
365
+ const from = readString(edit.from);
366
+ const to = readString(edit.to);
367
+ if (from && to) {
368
+ lines.push(` ${from} -> ${to}`);
369
+ }
370
+ }
371
+ }
372
+ const hidden = readNumber(response.hidden) ?? 0;
373
+ if (hidden > 0) {
374
+ lines.push(`+ ${hidden} more import edits hidden`);
375
+ }
376
+ if (hiddenFiles.length > 0) {
377
+ lines.push("hidden files:");
378
+ const visibleHiddenFiles = hiddenFiles.slice(0, 12);
379
+ for (const file of visibleHiddenFiles) {
380
+ lines.push(formatViewPath(cwd, file));
381
+ }
382
+ if (totalFiles > visibleHiddenFiles.length) {
383
+ lines.push(`+ ${totalFiles - visibleHiddenFiles.length} more files hidden`);
384
+ }
385
+ }
386
+ return lines.join("\n");
387
+ }
388
+ function buildMutationFilesViewResponse(cwd, artifact, options, handle) {
389
+ const rawFiles = readStringList(artifact.files);
390
+ const filteredFiles = filterStrings(rawFiles, options);
391
+ const offset = Math.max(0, options.offset ?? 0);
392
+ const defaultLimit = filteredFiles.length || 1;
393
+ const limit = Math.max(1, options.limit ?? defaultLimit);
394
+ const files = filteredFiles.slice(offset, offset + limit);
395
+ const hidden = Math.max(0, filteredFiles.length - offset - files.length);
396
+ const response = {
397
+ ok: true,
398
+ op: "view",
399
+ handle,
400
+ kind: "mutationFiles",
401
+ operation: readString(artifact.operation) ?? "mutate",
402
+ label: readString(artifact.label) ?? "files",
403
+ files,
404
+ offset,
405
+ limit,
406
+ total: filteredFiles.length,
407
+ ...(hidden > 0 ? { hidden } : {})
408
+ };
409
+ return (0, agent_text_1.attachAgentText)(response, formatMutationFilesViewResponse(cwd, response));
410
+ }
411
+ function filterStrings(items, options) {
412
+ const only = options.only ?? [];
413
+ const except = options.except ?? [];
414
+ const base = only.length > 0
415
+ ? items.filter((item) => matchesAnySelector([item], only))
416
+ : items;
417
+ return except.length > 0
418
+ ? base.filter((item) => !matchesAnySelector([item], except))
419
+ : base;
420
+ }
421
+ function formatMutationFilesViewResponse(cwd, response) {
422
+ const label = readString(response.label) ?? "files";
423
+ const handle = readString(response.handle) ?? "";
424
+ const total = readNumber(response.total) ?? readStringList(response.files).length;
425
+ const lines = [`hidden ${label} ${handle}`, `${total} hidden ${total === 1 ? "file" : "files"}`];
426
+ for (const file of readStringList(response.files)) {
427
+ lines.push(formatViewPath(cwd, file));
428
+ }
429
+ const hidden = readNumber(response.hidden) ?? 0;
430
+ if (hidden > 0) {
431
+ lines.push(`+ ${hidden} more files hidden`);
432
+ }
433
+ return lines.join("\n");
434
+ }
435
+ function buildListViewResponse(artifact, options, handle, kind) {
436
+ const rawItems = Array.isArray(artifact.items) ? artifact.items.filter(isObject) : [];
437
+ const filteredItems = filterItems(rawItems, options, (item) => [
438
+ readString(item.name),
439
+ readString(item.text)?.split(/\s+/)[0]
440
+ ]);
441
+ const offset = Math.max(0, options.offset ?? 0);
442
+ const defaultLimit = filteredItems.length || 1;
443
+ const limit = Math.max(1, options.limit ?? defaultLimit);
444
+ const items = filteredItems.slice(offset, offset + limit);
445
+ const hidden = Math.max(0, filteredItems.length - offset - items.length);
446
+ const response = {
447
+ ok: true,
448
+ op: "view",
449
+ handle,
450
+ kind,
451
+ source: readString(artifact.source) ?? "inspect",
452
+ ...(readString(artifact.file) !== undefined ? { file: readString(artifact.file) } : {}),
453
+ ...(readString(artifact.entity) !== undefined ? { entity: readString(artifact.entity) } : {}),
454
+ ...(readString(artifact.target) !== undefined ? { target: readString(artifact.target) } : {}),
455
+ ...(readString(artifact.detail) !== undefined ? { detail: readString(artifact.detail) } : {}),
456
+ items,
457
+ offset,
458
+ limit,
459
+ ...(hidden > 0 ? { hidden } : {})
460
+ };
461
+ return (0, agent_text_1.attachAgentText)(response, formatListViewResponse(response));
462
+ }
463
+ function buildCodeViewResponse(artifact, options, handle) {
464
+ const rawItems = Array.isArray(artifact.items) ? artifact.items.filter(isObject) : [];
465
+ const filteredItems = filterItems(rawItems, options, (item) => [readString(item.entity), readString(item.name)]);
466
+ const offset = Math.max(0, options.offset ?? 0);
467
+ const defaultLimit = filteredItems.length || 1;
468
+ const limit = Math.max(1, options.limit ?? defaultLimit);
469
+ const items = filteredItems.slice(offset, offset + limit);
470
+ const hidden = Math.max(0, filteredItems.length - offset - items.length);
471
+ const response = {
472
+ ok: true,
473
+ op: "view",
474
+ handle,
475
+ kind: "code",
476
+ source: readString(artifact.source) ?? "inspect",
477
+ items,
478
+ offset,
479
+ limit,
480
+ ...(hidden > 0 ? { hidden } : {}),
481
+ ...(items.length === 0 && rawItems.length > 0 && hasViewFilters(options) ? { noMatches: true } : {})
482
+ };
483
+ return (0, agent_text_1.attachAgentText)(response, formatCodeViewResponse(response));
484
+ }
485
+ function formatCodeViewResponse(response) {
486
+ const lines = [];
487
+ const items = Array.isArray(response.items) ? response.items.filter(isObject) : [];
488
+ if (items.length === 0 && response.noMatches === true) {
489
+ lines.push("no hidden code matched view filters");
490
+ return lines.join("\n");
491
+ }
492
+ let currentFile = "";
493
+ for (const item of items) {
494
+ const file = readString(item.file) ?? "";
495
+ if (file && file !== currentFile) {
496
+ if (lines.length > 0) {
497
+ lines.push("");
498
+ }
499
+ lines.push(`// ${file}`);
500
+ currentFile = file;
501
+ }
502
+ const entity = readString(item.entity) ?? "";
503
+ const meta = readString(item.meta) ?? readString(item.rangeMeta) ?? "";
504
+ const header = [entity, meta].filter((part) => part !== "").join(" ");
505
+ if (header) {
506
+ lines.push(`// ${header}`);
507
+ }
508
+ const code = readString(item.code);
509
+ if (code) {
510
+ lines.push(code.trimEnd());
511
+ }
512
+ }
513
+ const hidden = readNumber(response.hidden) ?? 0;
514
+ if (hidden > 0) {
515
+ lines.push(`+ ${hidden} more hidden code blocks`);
516
+ }
517
+ return lines.join("\n");
518
+ }
519
+ function formatListViewResponse(response) {
520
+ const lines = [];
521
+ const file = readString(response.file);
522
+ const target = readString(response.target);
523
+ const kind = readString(response.kind) ?? "";
524
+ const detail = readString(response.detail);
525
+ if (file) {
526
+ lines.push(`// ${file}`);
527
+ }
528
+ else if (kind === "usages") {
529
+ lines.push(detail ? `usages ${detail}` : "usages");
530
+ }
531
+ else if (target) {
532
+ lines.push(`duplicates ${target}`);
533
+ }
534
+ const entity = readString(response.entity);
535
+ if (entity) {
536
+ lines.push(`// ${entity}:`);
537
+ }
538
+ const items = Array.isArray(response.items) ? response.items.filter(isObject) : [];
539
+ if (kind === "usages") {
540
+ for (const [name, groupItems] of groupBy(items, (item) => readString(item.name) ?? "")) {
541
+ if (name) {
542
+ lines.push(`${name}:`);
543
+ }
544
+ for (const item of groupItems) {
545
+ const text = readString(item.text);
546
+ if (text) {
547
+ lines.push(text.trimEnd());
548
+ }
549
+ }
550
+ }
551
+ }
552
+ else {
553
+ for (const item of items) {
554
+ const text = readString(item.text);
555
+ if (text) {
556
+ lines.push(text.trimEnd());
557
+ }
558
+ }
559
+ }
560
+ const hidden = readNumber(response.hidden) ?? 0;
561
+ if (hidden > 0) {
562
+ lines.push(`+ ${hidden} more hidden ${kind === "members" ? "members" : kind === "usages" ? "usages" : "items"}`);
563
+ }
564
+ return lines.join("\n");
565
+ }
566
+ function groupBy(items, keyFn) {
567
+ const groups = new Map();
568
+ for (const item of items) {
569
+ const key = keyFn(item);
570
+ const current = groups.get(key) ?? [];
571
+ current.push(item);
572
+ groups.set(key, current);
573
+ }
574
+ return Array.from(groups.entries());
575
+ }
576
+ function readCyclesDetail(value) {
577
+ if (value === "summary" || value === "sum") {
578
+ return "summary";
579
+ }
580
+ if (value === "imports" || value === "files") {
581
+ return value;
582
+ }
583
+ throw new errors_1.CliError("INVALID_CYCLES_DETAIL", "aib view cycles --detail expects summary, imports, or files.");
584
+ }
585
+ function readCyclesKind(value) {
586
+ if (value === "runtime" || value === "type-only" || value === "mixed") {
587
+ return value;
588
+ }
589
+ throw new errors_1.CliError("INVALID_CYCLES_KIND", "aib view cycles --kind expects runtime, type-only, or mixed.");
590
+ }
591
+ function readFlagValue(args, flag) {
592
+ const index = args.indexOf(flag);
593
+ const value = index >= 0 ? args[index + 1] : undefined;
594
+ return value && !value.startsWith("--") ? value : undefined;
595
+ }
596
+ function buildDeclarationMutationViewResponse(cwd, artifact, handle) {
597
+ const rows = Array.isArray(artifact.rows) ? artifact.rows.filter(isObject) : [];
598
+ const operation = readString(artifact.operation) === "addMissing" ? "addMissing" : "remove";
599
+ const response = {
600
+ ok: true,
601
+ op: "view",
602
+ handle,
603
+ kind: "declarationMutation",
604
+ operation,
605
+ rows,
606
+ sourceFailures: Array.isArray(artifact.sourceFailures) ? artifact.sourceFailures.filter(isObject) : [],
607
+ skipped: Array.isArray(artifact.skipped) ? artifact.skipped.filter(isObject) : []
608
+ };
609
+ return (0, agent_text_1.attachAgentText)(response, formatDeclarationMutationView(cwd, response));
610
+ }
611
+ function formatDeclarationMutationView(cwd, response) {
612
+ const lines = [`${readString(response.operation) ?? "declaration"} ${readString(response.handle) ?? ""}`.trim()];
613
+ const rows = Array.isArray(response.rows) ? response.rows.filter(isObject) : [];
614
+ lines.push(...(0, declaration_format_1.formatDeclarationMutationDetails)(cwd, readString(response.operation) === "addMissing" ? "addMissing" : "remove", rows));
615
+ appendDeclarationViewFailureLines(lines, response);
616
+ appendDeclarationViewSkippedLines(lines, response);
617
+ return lines.join("\n");
618
+ }
619
+ function buildDeclarationCleanupViewResponse(cwd, artifact, handle) {
620
+ const cleanups = Array.isArray(artifact.cleanups) ? artifact.cleanups.filter(isObject) : [];
621
+ const response = {
622
+ ok: true,
623
+ op: "view",
624
+ handle,
625
+ kind: "declarationCleanup",
626
+ cleanups,
627
+ filesWritten: readStringList(artifact.filesWritten)
628
+ };
629
+ const operation = readString(artifact.operation);
630
+ if (operation) {
631
+ response.operation = operation;
632
+ }
633
+ return (0, agent_text_1.attachAgentText)(response, formatDeclarationCleanupView(cwd, response));
634
+ }
635
+ function formatDeclarationCleanupView(cwd, response) {
636
+ const lines = [`cleanup ${readString(response.handle) ?? ""}`.trim()];
637
+ const cleanups = Array.isArray(response.cleanups) ? response.cleanups.filter(isObject) : [];
638
+ appendDeclarationCleanupViewOperationLines(cwd, lines, cleanups, "remove");
639
+ appendDeclarationCleanupViewOperationLines(cwd, lines, cleanups, "addMissing");
640
+ appendDeclarationCleanupViewNotFoundLines(cwd, lines, cleanups);
641
+ appendDeclarationCleanupViewFailureLines(cwd, lines, cleanups);
642
+ appendDeclarationCleanupViewSkippedLines(lines, cleanups);
643
+ const filesWritten = readStringList(response.filesWritten);
644
+ if (filesWritten.length > 0) {
645
+ lines.push("filesWritten:");
646
+ for (const file of filesWritten) {
647
+ lines.push(` ${formatViewPath(cwd, file)}`);
648
+ }
649
+ }
650
+ return lines.join("\n");
651
+ }
652
+ function appendDeclarationCleanupViewOperationLines(cwd, lines, cleanups, operation) {
653
+ const noopSelectors = operation === "addMissing" ? collectDeclarationCleanupNoopSelectors(cleanups) : [];
654
+ const rows = cleanups
655
+ .filter((cleanup) => readDeclarationCleanupOperation(cleanup) === operation)
656
+ .flatMap((cleanup) => Array.isArray(cleanup.rows) ? cleanup.rows.filter(isObject) : [])
657
+ .filter((row) => hasDeclarationOperationItems(row, operation))
658
+ .map((row) => sanitizeDeclarationOperationRow(row));
659
+ if (rows.length === 0 && noopSelectors.length === 0) {
660
+ return;
661
+ }
662
+ lines.push(`${operation}:`);
663
+ for (const line of (0, declaration_format_1.formatDeclarationMutationDetails)(cwd, operation, rows)) {
664
+ lines.push(line ? ` ${line}` : "");
665
+ }
666
+ if (noopSelectors.length > 0) {
667
+ lines.push(` no-op selectors: ${noopSelectors.join(", ")}`);
668
+ }
669
+ }
670
+ function appendDeclarationCleanupViewNotFoundLines(cwd, lines, cleanups) {
671
+ const bySelector = new Map();
672
+ for (const cleanup of cleanups) {
673
+ if (!isObject(cleanup.notFound)) {
674
+ continue;
675
+ }
676
+ for (const [selector, files] of Object.entries(cleanup.notFound)) {
677
+ const fileList = Array.isArray(files)
678
+ ? files.filter((file) => typeof file === "string" && file.trim() !== "")
679
+ : [];
680
+ bySelector.set(selector, uniqueStrings([...(bySelector.get(selector) ?? []), ...fileList]));
681
+ }
682
+ }
683
+ if (bySelector.size === 0) {
684
+ return;
685
+ }
686
+ lines.push("notFound:");
687
+ for (const [selector, files] of bySelector.entries()) {
688
+ lines.push(` ${selector}:`);
689
+ for (const file of files) {
690
+ lines.push(` ${formatViewPath(cwd, file)}`);
691
+ }
692
+ }
693
+ }
694
+ function appendDeclarationCleanupViewFailureLines(cwd, lines, cleanups) {
695
+ const failures = uniqueFailureObjects(cleanups.flatMap((cleanup) => [
696
+ ...readObjectList(cleanup.failures),
697
+ ...readObjectList(cleanup.sourceFailures)
698
+ ]));
699
+ if (failures.length === 0) {
700
+ return;
701
+ }
702
+ lines.push("failed:");
703
+ const removeAmbiguous = failures.filter((failure) => readString(failure.code) === "DECLARATION_REMOVE_AMBIGUOUS");
704
+ const addMissingAmbiguous = failures.filter((failure) => readString(failure.code) === "DECLARATION_ADD_MISSING_SOURCE_AMBIGUOUS");
705
+ const addMissingNotFound = failures.filter((failure) => readString(failure.code) === "DECLARATION_ADD_MISSING_SOURCE_NOT_FOUND");
706
+ const otherFailures = failures.filter((failure) => !removeAmbiguous.includes(failure) &&
707
+ !addMissingAmbiguous.includes(failure) &&
708
+ !addMissingNotFound.includes(failure));
709
+ if (removeAmbiguous.length > 0) {
710
+ lines.push(" remove:");
711
+ lines.push(" ambiguous selectors:");
712
+ for (const failure of removeAmbiguous) {
713
+ const selector = readString(failure.selector) ?? "selector";
714
+ const file = readString(failure.file);
715
+ const available = readStringList(failure.availableSelectors);
716
+ lines.push(` ${selector}${file ? ` in ${formatViewPath(cwd, file)}` : ""}${available.length > 0 ? `: ${available.join(", ")}` : ""}`);
717
+ }
718
+ }
719
+ if (addMissingAmbiguous.length > 0 || addMissingNotFound.length > 0 || otherFailures.length > 0) {
720
+ lines.push(" addMissing:");
721
+ if (addMissingAmbiguous.length > 0) {
722
+ lines.push(" ambiguous preferred source:");
723
+ for (const failure of addMissingAmbiguous) {
724
+ const selector = readString(failure.selector) ?? "selector";
725
+ lines.push(` ${selector}:`);
726
+ for (const source of readStringList(failure.sources)) {
727
+ lines.push(` ${formatViewPath(cwd, source)}`);
728
+ }
729
+ }
730
+ }
731
+ if (addMissingNotFound.length > 0) {
732
+ lines.push(` source not found: ${readFailureSelectors(addMissingNotFound).join(", ")}`);
733
+ }
734
+ for (const failure of otherFailures) {
735
+ lines.push(` ${readString(failure.selector) ?? "selector"}: ${readString(failure.error) ?? readString(failure.code) ?? "failed"}`);
736
+ }
737
+ }
738
+ }
739
+ function appendDeclarationCleanupViewSkippedLines(lines, cleanups) {
740
+ const skipped = cleanups.flatMap((cleanup) => readObjectList(cleanup.skipped));
741
+ if (skipped.length === 0) {
742
+ return;
743
+ }
744
+ lines.push("skipped:");
745
+ for (const item of skipped) {
746
+ const selector = readString(item.selector) ?? "selector";
747
+ const operation = readString(item.operation) ?? "operation";
748
+ const reason = readString(item.reason);
749
+ lines.push(` ${selector}: ${operation} skipped${reason ? ` because ${formatSkippedReason(reason)}` : ""}`);
750
+ }
751
+ }
752
+ function readDeclarationCleanupOperation(cleanup) {
753
+ const operation = readString(cleanup.operation);
754
+ if (operation?.includes(".remove.")) {
755
+ return "remove";
756
+ }
757
+ if (operation?.includes(".addMissing.")) {
758
+ return "addMissing";
759
+ }
760
+ return "unknown";
761
+ }
762
+ function appendDeclarationViewFailureLines(lines, response) {
763
+ const failures = Array.isArray(response.sourceFailures) ? response.sourceFailures.filter(isObject) : [];
764
+ if (failures.length === 0) {
765
+ return;
766
+ }
767
+ lines.push("failed:");
768
+ for (const failure of failures) {
769
+ const selector = readString(failure.selector) ?? "selector";
770
+ const code = readString(failure.code);
771
+ if (code === "DECLARATION_ADD_MISSING_SOURCE_AMBIGUOUS") {
772
+ lines.push(`${selector}: multiple preferred sources export selector`);
773
+ const sources = Array.isArray(failure.sources)
774
+ ? failure.sources.filter((item) => typeof item === "string" && item.trim() !== "")
775
+ : [];
776
+ for (const source of sources) {
777
+ lines.push(` ${source}`);
778
+ }
779
+ continue;
780
+ }
781
+ if (code === "DECLARATION_ADD_MISSING_SOURCE_NOT_FOUND") {
782
+ lines.push(`${selector}: no preferred source exports selector`);
783
+ continue;
784
+ }
785
+ lines.push(`${selector}: ${readString(failure.error) ?? code ?? "failed"}`);
786
+ }
787
+ }
788
+ function appendDeclarationViewSkippedLines(lines, response) {
789
+ const skipped = Array.isArray(response.skipped) ? response.skipped.filter(isObject) : [];
790
+ if (skipped.length === 0) {
791
+ return;
792
+ }
793
+ lines.push("skipped:");
794
+ for (const item of skipped) {
795
+ const selector = readString(item.selector) ?? "selector";
796
+ const operation = readString(item.operation);
797
+ const reason = readString(item.reason);
798
+ lines.push(`${selector}: ${operation ?? "operation"} skipped${reason ? ` because ${formatSkippedReason(reason)}` : ""}`);
799
+ }
800
+ }
801
+ function hasDeclarationOperationItems(row, operation) {
802
+ const value = operation === "remove" ? row.removed : row.addedImports;
803
+ return Array.isArray(value) && value.length > 0;
804
+ }
805
+ function collectDeclarationCleanupNoopSelectors(cleanups) {
806
+ const noOp = new Set();
807
+ for (const cleanup of cleanups) {
808
+ if (readDeclarationCleanupOperation(cleanup) !== "addMissing") {
809
+ continue;
810
+ }
811
+ if (isObject(cleanup.noOp)) {
812
+ for (const selector of Object.keys(cleanup.noOp)) {
813
+ noOp.add(selector);
814
+ }
815
+ }
816
+ }
817
+ return uniqueStrings([...noOp]);
818
+ }
819
+ function sanitizeDeclarationOperationRow(row) {
820
+ if (row.ok !== false) {
821
+ return row;
822
+ }
823
+ const sanitized = { ...row, ok: true };
824
+ delete sanitized.failures;
825
+ delete sanitized.failedSelector;
826
+ delete sanitized.availableSelectors;
827
+ delete sanitized.code;
828
+ delete sanitized.error;
829
+ return sanitized;
830
+ }
831
+ function formatSkippedReason(reason) {
832
+ return reason === "remove not applied" ? "remove was not applied" : reason;
833
+ }
834
+ function readObjectList(value) {
835
+ return Array.isArray(value) ? value.filter(isObject) : [];
836
+ }
837
+ function uniqueFailureObjects(items) {
838
+ const seen = new Set();
839
+ const result = [];
840
+ for (const item of items) {
841
+ const key = [
842
+ readString(item.selector),
843
+ readString(item.file),
844
+ readString(item.code),
845
+ readString(item.error),
846
+ readStringList(item.sources).join(","),
847
+ readStringList(item.availableSelectors).join(",")
848
+ ].join("|");
849
+ if (seen.has(key)) {
850
+ continue;
851
+ }
852
+ seen.add(key);
853
+ result.push(item);
854
+ }
855
+ return result;
856
+ }
857
+ function uniqueStrings(values) {
858
+ return [...new Set(values.filter((value) => value.trim() !== ""))];
859
+ }
860
+ function readFailureSelectors(failures) {
861
+ return uniqueStrings(failures.map((failure) => readString(failure.selector)).filter((selector) => Boolean(selector)));
862
+ }
863
+ function formatViewPath(cwd, value) {
864
+ const normalized = value.replace(/\\/g, "/");
865
+ if (!path.isAbsolute(value)) {
866
+ return normalized;
867
+ }
868
+ const relative = path.relative(cwd, value).replace(/\\/g, "/");
869
+ return relative && !relative.startsWith("../") && !path.isAbsolute(relative)
870
+ ? relative
871
+ : normalized;
872
+ }
873
+ function readFlagValues(args, flag) {
874
+ const values = [];
875
+ for (let index = 0; index < args.length; index += 1) {
876
+ if (args[index] !== flag) {
877
+ continue;
878
+ }
879
+ const value = args[index + 1];
880
+ if (value && !value.startsWith("--")) {
881
+ values.push(value);
882
+ }
883
+ }
884
+ return values;
885
+ }
886
+ function readOptionalIntegerFlag(args, flag) {
887
+ const value = readFlagValue(args, flag);
888
+ if (value === undefined) {
889
+ return undefined;
890
+ }
891
+ const parsed = Number(value);
892
+ const minimum = flag === "--offset" ? 0 : 1;
893
+ if (!Number.isInteger(parsed) || parsed < minimum) {
894
+ throw new errors_1.CliError("INVALID_VIEW_OPTION", `${flag} expects ${minimum === 0 ? "a non-negative" : "a positive"} integer.`);
895
+ }
896
+ return parsed;
897
+ }
898
+ function isObject(value) {
899
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
900
+ }
901
+ function readString(value) {
902
+ return typeof value === "string" && value !== "" ? value : undefined;
903
+ }
904
+ function readNumber(value) {
905
+ return typeof value === "number" && Number.isFinite(value) ? value : undefined;
906
+ }
907
+ function numberField(value, field) {
908
+ const raw = value[field];
909
+ return typeof raw === "number" && Number.isFinite(raw) ? raw : 0;
910
+ }
911
+ function readStringList(value) {
912
+ if (typeof value === "string" && value !== "") {
913
+ return expandSelectorInput(value);
914
+ }
915
+ if (Array.isArray(value)) {
916
+ return value.filter((item) => typeof item === "string" && item !== "").flatMap(expandSelectorInput);
917
+ }
918
+ return [];
919
+ }
920
+ function filterItems(items, options, keysForItem) {
921
+ const only = options.only ?? [];
922
+ const except = options.except ?? [];
923
+ const base = only.length > 0
924
+ ? items.filter((item) => matchesAnySelector(keysForItem(item), only))
925
+ : items;
926
+ if (except.length === 0) {
927
+ return base;
928
+ }
929
+ return base.filter((item) => !matchesAnySelector(keysForItem(item), except));
930
+ }
931
+ function hasViewFilters(options) {
932
+ return (options.only?.length ?? 0) > 0 || (options.except?.length ?? 0) > 0;
933
+ }
934
+ function matchesAnySelector(keys, selectors) {
935
+ return keys.some((key) => key !== undefined && selectors.some((selector) => selectorMatches(key, selector)));
936
+ }
937
+ function selectorMatches(value, selector) {
938
+ if (value === selector) {
939
+ return true;
940
+ }
941
+ const valueLast = value.split(".").pop() ?? value;
942
+ const selectorLast = selector.split(".").pop() ?? selector;
943
+ return valueLast === selectorLast && !selector.includes(".");
944
+ }
945
+ function expandSelectorInput(value) {
946
+ const trimmed = value.trim();
947
+ const bracketItems = parseBracketList(trimmed);
948
+ return (bracketItems ?? splitCommaList(trimmed)).flatMap(expandSelectorToken);
949
+ }
950
+ function expandSelectorToken(token) {
951
+ const trimmed = token.trim();
952
+ const groupMatch = trimmed.match(/^(.+)\.\{(.+)\}$/);
953
+ if (groupMatch) {
954
+ const parent = groupMatch[1];
955
+ const members = groupMatch[2];
956
+ if (parent && members) {
957
+ return splitCommaList(members).map((member) => `${parent}.${member}`);
958
+ }
959
+ }
960
+ return trimmed ? [trimmed] : [];
961
+ }
962
+ function parseBracketList(value) {
963
+ if (!value.startsWith("[") || !value.endsWith("]")) {
964
+ return null;
965
+ }
966
+ const inner = value.slice(1, -1).trim();
967
+ return inner ? splitCommaList(inner) : [];
968
+ }
969
+ function splitCommaList(value) {
970
+ const items = [];
971
+ let current = "";
972
+ let braceDepth = 0;
973
+ for (const char of value) {
974
+ if (char === "{") {
975
+ braceDepth += 1;
976
+ }
977
+ else if (char === "}" && braceDepth > 0) {
978
+ braceDepth -= 1;
979
+ }
980
+ if (char === "," && braceDepth === 0) {
981
+ if (current.trim()) {
982
+ items.push(current.trim());
983
+ }
984
+ current = "";
985
+ continue;
986
+ }
987
+ current += char;
988
+ }
989
+ if (current.trim()) {
990
+ items.push(current.trim());
991
+ }
992
+ return items;
993
+ }