@automaton-labs/aib 0.0.7 → 0.0.9

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 +21 -578
  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 +217 -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,793 @@
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.buildUsagesDetail = buildUsagesDetail;
37
+ exports.readUsagesDetail = readUsagesDetail;
38
+ exports.readUsagesDetailOptions = readUsagesDetailOptions;
39
+ exports.readOptionalUsagesDetail = readOptionalUsagesDetail;
40
+ exports.copyUsageDetailSummaryFields = copyUsageDetailSummaryFields;
41
+ exports.attachUsagesViewAll = attachUsagesViewAll;
42
+ exports.stripUsagesViewRecords = stripUsagesViewRecords;
43
+ exports.formatUsagesDetailResponseAgentText = formatUsagesDetailResponseAgentText;
44
+ exports.formatUsagesDetailAgentText = formatUsagesDetailAgentText;
45
+ exports.displayPath = displayPath;
46
+ exports.isObject = isObject;
47
+ exports.readString = readString;
48
+ exports.readStringArray = readStringArray;
49
+ const fs = __importStar(require("node:fs"));
50
+ const node_crypto_1 = require("node:crypto");
51
+ const errors_1 = require("../shared/errors");
52
+ const agent_text_1 = require("../shared/agent-text");
53
+ const path_display_1 = require("../config/path-display");
54
+ const path_display_2 = require("../config/path-display");
55
+ const inspect_format_1 = require("./inspect-format");
56
+ const inspect_usages_evidence_1 = require("./inspect-usages-evidence");
57
+ const session_workspace_1 = require("./session-workspace");
58
+ function buildUsagesDetail(cwd, artifact, focus, options, keepViewRecord = false) {
59
+ const result = options.detail === "code"
60
+ ? buildUsagesCodeDetail(cwd, artifact, focus, options)
61
+ : buildUsagesLocationsDetail(cwd, artifact, focus, options);
62
+ attachUsagesDetailView(cwd, result, keepViewRecord);
63
+ return result;
64
+ }
65
+ function readUsagesDetail(cwd, value) {
66
+ return parseUsagesDetail(value ?? (0, session_workspace_1.readSessionStringPref)(cwd, "inspect.usages.detail", "locations"));
67
+ }
68
+ function readUsagesDetailOptions(cwd, input) {
69
+ const all = input.all === true;
70
+ const locationLimit = all
71
+ ? Number.MAX_SAFE_INTEGER
72
+ : input.limit ?? (0, session_workspace_1.readSessionNumberPref)(cwd, "inspect.usages.maxLocations", 12);
73
+ const codeBlockLimit = all
74
+ ? Number.MAX_SAFE_INTEGER
75
+ : input.limit ?? (0, session_workspace_1.readSessionNumberPref)(cwd, "inspect.usages.maxCodeBlocks", 8);
76
+ return {
77
+ detail: readUsagesDetail(cwd, input.detail),
78
+ locationLimit,
79
+ codeBlockLimit,
80
+ maxCodeLines: input.maxCodeLines ?? (0, session_workspace_1.readSessionNumberPref)(cwd, "inspect.code.maxNonEmptyLines", 120),
81
+ all
82
+ };
83
+ }
84
+ function readOptionalUsagesDetail(value) {
85
+ return typeof value === "string" ? value : null;
86
+ }
87
+ function parseUsagesDetail(value) {
88
+ const normalized = value.trim().toLowerCase();
89
+ if (normalized === "location") {
90
+ return "locations";
91
+ }
92
+ if (normalized === "locations" || normalized === "code" || normalized === "summary") {
93
+ return normalized;
94
+ }
95
+ throw new errors_1.CliError("INVALID_USAGES_DETAIL", "usages detail expects summary, locations, or code.", {
96
+ detail: value
97
+ });
98
+ }
99
+ function copyUsageDetailSummaryFields(from, to) {
100
+ for (const field of ["summary", "saved", "next", "input", "targetLocalUsagesHidden"]) {
101
+ if (from[field] !== undefined) {
102
+ to[field] = from[field];
103
+ }
104
+ }
105
+ const reverseModuleClosure = (0, inspect_usages_evidence_1.projectReverseModuleClosureEvidence)(from.reverseModuleClosure);
106
+ if (reverseModuleClosure) {
107
+ to.reverseModuleClosure = reverseModuleClosure;
108
+ }
109
+ }
110
+ function attachUsagesDetailView(cwd, result, keepViewRecord) {
111
+ const items = Array.isArray(result.__viewItems) ? result.__viewItems.filter(isObject) : [];
112
+ delete result.__viewItems;
113
+ if (items.length === 0) {
114
+ return;
115
+ }
116
+ const record = compactViewObject({
117
+ version: 1,
118
+ kind: "usages",
119
+ source: "inspect",
120
+ detail: readString(result.detail) ?? "locations",
121
+ target: readString(result.target) ?? "",
122
+ items
123
+ });
124
+ const saved = (0, session_workspace_1.saveSessionResultViewJson)(cwd, createShortResultId(record), record);
125
+ if (!saved) {
126
+ return;
127
+ }
128
+ result.view = saved.saved;
129
+ if (keepViewRecord) {
130
+ result.__viewRecord = record;
131
+ }
132
+ }
133
+ function attachUsagesViewAll(cwd, rows) {
134
+ const records = rows
135
+ .map((row) => isObject(row.__viewRecord) ? row.__viewRecord : null)
136
+ .filter((record) => record !== null && readString(record.kind) === "usages");
137
+ if (records.length <= 1) {
138
+ return;
139
+ }
140
+ const details = Array.from(new Set(records
141
+ .map((record) => readString(record.detail) ?? "")
142
+ .filter((detail) => detail !== "")));
143
+ const items = records.flatMap((record) => Array.isArray(record.items) ? record.items.filter(isObject) : []);
144
+ if (items.length === 0) {
145
+ return;
146
+ }
147
+ const record = compactViewObject({
148
+ version: 1,
149
+ kind: "usages",
150
+ source: "inspect",
151
+ detail: details.length === 1 ? details[0] : "mixed",
152
+ items
153
+ });
154
+ const saved = (0, session_workspace_1.saveSessionResultViewJson)(cwd, createShortResultId(record), record);
155
+ if (!saved) {
156
+ return;
157
+ }
158
+ for (const row of rows) {
159
+ if (isObject(row.__viewRecord) && readString(row.__viewRecord.kind) === "usages") {
160
+ row.viewAllUsages = saved.saved;
161
+ }
162
+ }
163
+ }
164
+ function stripUsagesViewRecords(rows) {
165
+ for (const row of rows) {
166
+ delete row.__viewRecord;
167
+ delete row.__viewItems;
168
+ }
169
+ }
170
+ function createShortResultId(record) {
171
+ return `res_${(0, node_crypto_1.createHash)("sha256").update(JSON.stringify(record)).digest("hex").slice(0, 8)}`;
172
+ }
173
+ function compactViewObject(value) {
174
+ const compacted = {};
175
+ for (const [key, item] of Object.entries(value)) {
176
+ if (item !== undefined && item !== "") {
177
+ compacted[key] = item;
178
+ }
179
+ }
180
+ return compacted;
181
+ }
182
+ function formatUsagesDetailResponseAgentText(cwd, result, fallback) {
183
+ if (Array.isArray(result.results)) {
184
+ const lines = [];
185
+ const rows = result.results.filter(isObject);
186
+ let pendingMixedRows = [];
187
+ const flushMixedRows = () => {
188
+ if (pendingMixedRows.length === 0) {
189
+ return;
190
+ }
191
+ const text = (0, inspect_format_1.formatInspectMixedAgentText)({ results: pendingMixedRows });
192
+ if (text) {
193
+ lines.push(text);
194
+ }
195
+ pendingMixedRows = [];
196
+ };
197
+ for (const row of rows) {
198
+ const detail = readString(row.detail);
199
+ if (detail === "locations" || detail === "code") {
200
+ flushMixedRows();
201
+ const text = formatUsagesDetailAgentText(cwd, row);
202
+ if (text) {
203
+ lines.push(text);
204
+ }
205
+ continue;
206
+ }
207
+ if (readString(row.op) === "usages") {
208
+ flushMixedRows();
209
+ const summaryText = formatUsagesSummaryAgentText(row);
210
+ if (summaryText) {
211
+ lines.push(summaryText);
212
+ }
213
+ continue;
214
+ }
215
+ pendingMixedRows.push(row);
216
+ }
217
+ flushMixedRows();
218
+ appendUsageDetailViewAllLines(lines, rows);
219
+ return lines.length > 0 ? lines.join("\n\n") : null;
220
+ }
221
+ const detail = readString(result.detail);
222
+ if (detail === "locations" || detail === "code") {
223
+ return formatUsagesDetailAgentText(cwd, result);
224
+ }
225
+ return (0, agent_text_1.readAgentText)(fallback);
226
+ }
227
+ function appendUsageDetailViewAllLines(lines, rows) {
228
+ const views = Array.from(new Set(rows
229
+ .map((row) => readString(row.viewAllUsages) ?? "")
230
+ .filter((view) => view !== "")));
231
+ if (views.length === 0) {
232
+ return;
233
+ }
234
+ const homogeneousUsages = rows.every((row) => readString(row.op) === "usages");
235
+ lines.push(homogeneousUsages
236
+ ? `view all: ${views[0]}`
237
+ : ["view all:", `usages: ${views[0]}`].join("\n"));
238
+ }
239
+ function formatUsagesSummaryAgentText(row) {
240
+ const lines = [];
241
+ const target = readString(row.target);
242
+ lines.push(target ? `usages ${target}` : "usages");
243
+ const summary = readString(row.summary);
244
+ if (summary) {
245
+ lines.push(summary);
246
+ }
247
+ appendTargetLocalUsagesHint(lines, row);
248
+ const items = Array.isArray(row.items) ? row.items.filter(isObject) : [];
249
+ for (const item of items) {
250
+ const entity = readString(item.entity) ?? "";
251
+ const itemSummary = readString(item.summary) ?? "";
252
+ lines.push(`${entity}: ${itemSummary}`.trim());
253
+ const usedBy = Array.isArray(item.usedBy) ? item.usedBy.filter((value) => typeof value === "string") : [];
254
+ lines.push(...usedBy);
255
+ }
256
+ return lines.length > 1 ? lines.join("\n") : null;
257
+ }
258
+ function buildUsagesLocationsDetail(cwd, artifact, focus, options) {
259
+ const sourceItems = filterUsageArtifactItems(artifact, focus);
260
+ const hiddenViewItems = [];
261
+ const items = sourceItems.map((item) => {
262
+ const entityDisplay = usageItemDisplay(item);
263
+ let visibleLocations = 0;
264
+ let hiddenLocations = 0;
265
+ const hiddenUsedBy = [];
266
+ const usedBy = Array.isArray(item.usedBy) ? item.usedBy.filter(isObject).flatMap((usage) => {
267
+ const locations = Array.isArray(usage.locations) ? usage.locations.filter(isObject) : [];
268
+ const fileDisplay = displayPath(cwd, readString(usage.file) ?? "");
269
+ const hiddenForUsage = [];
270
+ const visible = locations.flatMap((location) => {
271
+ const line = typeof location.line === "number" ? location.line : 0;
272
+ const container = isObject(location.container) ? symbolDisplayName(location.container) : "";
273
+ if (visibleLocations >= options.locationLimit) {
274
+ hiddenLocations += 1;
275
+ hiddenForUsage.push({
276
+ line,
277
+ ...(container !== "" ? { container } : {})
278
+ });
279
+ hiddenViewItems.push(compactViewObject({
280
+ name: entityDisplay,
281
+ text: container ? `${fileDisplay}:${line} ${container}` : `${fileDisplay}:${line}`
282
+ }));
283
+ return [];
284
+ }
285
+ visibleLocations += 1;
286
+ return [{
287
+ line,
288
+ ...(container !== "" ? { container } : {}),
289
+ ...(isObject(location.boundary) ? { boundary: location.boundary } : {})
290
+ }];
291
+ });
292
+ if (hiddenForUsage.length > 0) {
293
+ hiddenUsedBy.push({
294
+ file: fileDisplay,
295
+ locations: hiddenForUsage
296
+ });
297
+ }
298
+ return visible.length > 0
299
+ ? [{
300
+ file: fileDisplay,
301
+ locations: visible
302
+ }]
303
+ : [];
304
+ }) : [];
305
+ const displayItem = {
306
+ entity: entityDisplay,
307
+ referenceCount: numberOrZero(item.referenceCount),
308
+ ...(numberOrZero(item.boundaryReferenceCount) > 0
309
+ ? { boundaryReferenceCount: numberOrZero(item.boundaryReferenceCount) }
310
+ : {}),
311
+ usedBy,
312
+ ...(hiddenLocations > 0 ? { hidden: `+ ${hiddenLocations} more locations` } : {})
313
+ };
314
+ const hiddenItem = hiddenUsedBy.length > 0
315
+ ? {
316
+ entity: entityDisplay,
317
+ referenceCount: hiddenLocations,
318
+ usedBy: hiddenUsedBy
319
+ }
320
+ : null;
321
+ return {
322
+ displayItem,
323
+ hiddenItem
324
+ };
325
+ });
326
+ const displayItems = items.map((item) => item.displayItem);
327
+ const reverseModuleClosure = (0, inspect_usages_evidence_1.projectReverseModuleClosureEvidence)(artifact.reverseModuleClosure);
328
+ return {
329
+ op: "usages",
330
+ detail: "locations",
331
+ target: displayPath(cwd, readString(artifact.targetPath) ?? ""),
332
+ summary: readString(artifact.summary) ?? "",
333
+ referenceCount: numberOrZero(artifact.referenceCount),
334
+ itemCount: numberOrZero(artifact.itemCount),
335
+ fileCount: numberOrZero(artifact.fileCount),
336
+ scopeLabel: usageScopeLabel(cwd, artifact),
337
+ targetMode: readString(artifact.targetMode) ?? "",
338
+ queryMode: readString(artifact.queryMode) ?? "",
339
+ targetLocalUsagesHidden: artifact.targetLocalUsagesHidden === true,
340
+ ...(reverseModuleClosure ? { reverseModuleClosure } : {}),
341
+ unused: usageUnusedItems(sourceItems),
342
+ items: displayItems,
343
+ ...(hiddenViewItems.length > 0 ? { __viewItems: hiddenViewItems } : {})
344
+ };
345
+ }
346
+ function buildUsagesCodeDetail(cwd, artifact, focus, options) {
347
+ const maxLines = options.maxCodeLines;
348
+ const blocks = [];
349
+ const seen = new Set();
350
+ const visibleByEntity = new Map();
351
+ const hiddenByEntity = new Map();
352
+ const hiddenViewItems = [];
353
+ const sourceItems = filterUsageArtifactItems(artifact, focus);
354
+ for (const item of sourceItems) {
355
+ const entity = usageItemDisplay(item);
356
+ const usedBy = Array.isArray(item.usedBy) ? item.usedBy.filter(isObject) : [];
357
+ for (const usage of usedBy) {
358
+ const file = readString(usage.file);
359
+ if (!file) {
360
+ continue;
361
+ }
362
+ const locations = Array.isArray(usage.locations) ? usage.locations.filter(isObject) : [];
363
+ for (const location of locations) {
364
+ const container = isObject(location.container) ? location.container : null;
365
+ const range = container && isObject(container.range) ? container.range : null;
366
+ const start = range && isObject(range.start) ? range.start : null;
367
+ const end = range && isObject(range.end) ? range.end : null;
368
+ if (!start || !end || typeof start.line !== "number" || typeof start.character !== "number" || typeof end.line !== "number" || typeof end.character !== "number") {
369
+ continue;
370
+ }
371
+ const key = `${entity}:${file}:${start.line}:${start.character}:${end.line}:${end.character}`;
372
+ if (seen.has(key)) {
373
+ continue;
374
+ }
375
+ seen.add(key);
376
+ const visibleCount = visibleByEntity.get(entity) ?? 0;
377
+ const code = sliceFileByRange(file, start.line, start.character, end.line, end.character);
378
+ const line = start.line + 1;
379
+ const viewBlock = {
380
+ entity,
381
+ file: displayPath(cwd, file),
382
+ container: container ? symbolDisplayName(container) : "",
383
+ line,
384
+ code
385
+ };
386
+ if (visibleCount >= options.codeBlockLimit) {
387
+ hiddenByEntity.set(entity, (hiddenByEntity.get(entity) ?? 0) + 1);
388
+ hiddenViewItems.push(compactViewObject({
389
+ name: entity,
390
+ text: formatUsageCodeViewBlockText(viewBlock, false).join("\n").trim()
391
+ }));
392
+ continue;
393
+ }
394
+ visibleByEntity.set(entity, visibleCount + 1);
395
+ const nonEmptyLines = countNonEmptyLines(code);
396
+ const omittedMessage = `code omitted: ${nonEmptyLines} non-empty lines; exceeds inspect.code.maxNonEmptyLines=${maxLines}`;
397
+ if (nonEmptyLines > maxLines) {
398
+ hiddenViewItems.push(compactViewObject({
399
+ name: entity,
400
+ text: formatUsageCodeViewBlockText(viewBlock, false).join("\n").trim()
401
+ }));
402
+ }
403
+ blocks.push({
404
+ entity,
405
+ file: displayPath(cwd, file),
406
+ container: container ? symbolDisplayName(container) : "",
407
+ line,
408
+ ...(nonEmptyLines <= maxLines
409
+ ? { code }
410
+ : {
411
+ omitted: omittedMessage,
412
+ compactCode: compactCodePreview(code)
413
+ })
414
+ });
415
+ }
416
+ }
417
+ }
418
+ const reverseModuleClosure = (0, inspect_usages_evidence_1.projectReverseModuleClosureEvidence)(artifact.reverseModuleClosure);
419
+ return {
420
+ op: "usages",
421
+ detail: "code",
422
+ target: displayPath(cwd, readString(artifact.targetPath) ?? ""),
423
+ summary: readString(artifact.summary) ?? "",
424
+ referenceCount: numberOrZero(artifact.referenceCount),
425
+ itemCount: numberOrZero(artifact.itemCount),
426
+ fileCount: numberOrZero(artifact.fileCount),
427
+ scopeLabel: usageScopeLabel(cwd, artifact),
428
+ targetMode: readString(artifact.targetMode) ?? "",
429
+ queryMode: readString(artifact.queryMode) ?? "",
430
+ targetLocalUsagesHidden: artifact.targetLocalUsagesHidden === true,
431
+ ...(reverseModuleClosure ? { reverseModuleClosure } : {}),
432
+ unused: usageUnusedItems(sourceItems),
433
+ blocks,
434
+ hiddenBlocks: Array.from(hiddenByEntity.entries()).map(([entity, hidden]) => ({
435
+ entity,
436
+ hidden: `+ ${hidden} more code blocks`
437
+ })),
438
+ ...(hiddenViewItems.length > 0 ? { __viewItems: hiddenViewItems } : {})
439
+ };
440
+ }
441
+ function filterUsageArtifactItems(artifact, focus) {
442
+ const items = Array.isArray(artifact.items) ? artifact.items.filter(isObject) : [];
443
+ if (focus.length === 0) {
444
+ return items;
445
+ }
446
+ const normalizedFocus = new Set(focus.map((item) => item.trim()).filter(Boolean));
447
+ return items.filter((item) => {
448
+ const name = usageItemName(item);
449
+ const display = usageItemDisplay(item);
450
+ return normalizedFocus.has(name) || normalizedFocus.has(display);
451
+ });
452
+ }
453
+ function usageItemName(item) {
454
+ return isObject(item.entity) ? readString(item.entity.name) ?? "" : "";
455
+ }
456
+ function usageItemDisplay(item) {
457
+ return isObject(item.entity) ? symbolDisplayName(item.entity) : "";
458
+ }
459
+ function usageUnusedItems(items) {
460
+ return items
461
+ .filter((item) => numberOrZero(item.referenceCount) === 0)
462
+ .map((item) => usageItemDisplay(item))
463
+ .filter((item) => item !== "");
464
+ }
465
+ function usageScopeLabel(cwd, artifact) {
466
+ const scopes = readStringArray(artifact.usageScopes) ?? [];
467
+ if (scopes.length === 0) {
468
+ return "project";
469
+ }
470
+ if (scopes.length === 1) {
471
+ return displayPath(cwd, scopes[0]);
472
+ }
473
+ return `${scopes.length} scopes`;
474
+ }
475
+ function compactCodePreview(code) {
476
+ const lines = code.trim().split(/\r?\n/).map((line) => line.trimEnd()).filter((line) => line.trim() !== "");
477
+ const first = lines[0] ?? "";
478
+ if (!first) {
479
+ return "";
480
+ }
481
+ const braceIndex = first.indexOf("{");
482
+ if (braceIndex >= 0) {
483
+ return `${first.slice(0, braceIndex + 1)}...}`;
484
+ }
485
+ return `${first} ...`;
486
+ }
487
+ function compactStringList(items, limit, suffix) {
488
+ const visible = items.slice(0, limit);
489
+ const hidden = items.length - visible.length;
490
+ return hidden > 0 ? `${visible.join(", ")}, + ${hidden} ${suffix}` : visible.join(", ");
491
+ }
492
+ function numberOrZero(value) {
493
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
494
+ }
495
+ function symbolDisplayName(symbol) {
496
+ const pathValue = Array.isArray(symbol.path)
497
+ ? symbol.path.filter((item) => typeof item === "string" && item.trim() !== "")
498
+ : [];
499
+ if (pathValue.length > 0) {
500
+ return pathValue.join(".");
501
+ }
502
+ return readString(symbol.name) ?? "";
503
+ }
504
+ function formatUsagesDetailAgentText(cwd, result) {
505
+ const detail = readString(result.detail);
506
+ if (numberOrZero(result.referenceCount) === 0) {
507
+ const target = readString(result.target);
508
+ const scope = readString(result.scopeLabel) ?? "project";
509
+ const lines = [target ? `usages ${target}` : "usages", `0 refs in ${scope}`];
510
+ appendTargetLocalUsagesHint(lines, result);
511
+ const itemCount = numberOrZero(result.itemCount);
512
+ if ((readString(result.targetMode) === "directory" || readString(result.queryMode) !== "explicit") && itemCount > 0) {
513
+ lines.push(`symbols checked: ${itemCount}`);
514
+ }
515
+ return lines.join("\n");
516
+ }
517
+ const lines = [`usages ${detail ?? "detail"}`];
518
+ appendTargetLocalUsagesHint(lines, result);
519
+ if (detail === "code") {
520
+ const blocks = Array.isArray(result.blocks) ? result.blocks.filter(isObject) : [];
521
+ const { ownerGroups, standalone } = groupUsageRowsByOwner(blocks, (block) => readString(block.entity) ?? "");
522
+ for (const [owner, ownerBlocks] of ownerGroups) {
523
+ lines.push("");
524
+ lines.push(`// ${owner}:`);
525
+ for (const [entity, entityBlocks] of groupBy(ownerBlocks, (block) => splitUsageEntityReference(readString(block.entity) ?? "").name)) {
526
+ if (entity) {
527
+ lines.push(`// ${entity}`);
528
+ }
529
+ lines.push(...formatUsageCodeEntityBlocks(cwd, result, entityBlocks));
530
+ }
531
+ }
532
+ if (standalone.length > 0) {
533
+ if (ownerGroups.length > 0) {
534
+ lines.push("");
535
+ }
536
+ for (const [entity, entityBlocks] of groupBy(standalone, (block) => readString(block.entity) ?? "")) {
537
+ if (entity) {
538
+ lines.push(`// ${entity}`);
539
+ }
540
+ lines.push(...formatUsageCodeEntityBlocks(cwd, result, entityBlocks));
541
+ }
542
+ }
543
+ appendUsageUnusedLines(lines, result);
544
+ appendUsagesViewLine(lines, result);
545
+ return lines.join("\n").replace(/\n{3,}/g, "\n\n").trimEnd();
546
+ }
547
+ const items = Array.isArray(result.items)
548
+ ? result.items.filter(isObject).filter((item) => numberOrZero(item.referenceCount) > 0)
549
+ : [];
550
+ const { ownerGroups, standalone } = groupUsageRowsByOwner(items, (item) => readString(item.entity) ?? "");
551
+ for (const [owner, ownerItems] of ownerGroups) {
552
+ lines.push("");
553
+ lines.push(`// ${owner}:`);
554
+ for (const item of ownerItems) {
555
+ lines.push(...formatUsageLocationsItemText(item, false));
556
+ }
557
+ }
558
+ if (standalone.length > 0 && ownerGroups.length > 0) {
559
+ lines.push("");
560
+ }
561
+ for (const item of standalone) {
562
+ lines.push(...formatUsageLocationsItemText(item, true));
563
+ }
564
+ appendUsageUnusedLines(lines, result);
565
+ appendUsagesViewLine(lines, result);
566
+ return lines.join("\n").trimEnd();
567
+ }
568
+ function appendUsagesViewLine(lines, result) {
569
+ const view = readString(result.view);
570
+ if (!view) {
571
+ return;
572
+ }
573
+ if (lines.length > 0 && lines[lines.length - 1] !== "") {
574
+ lines.push("");
575
+ }
576
+ lines.push(`view: ${view}`);
577
+ }
578
+ function appendUsageUnusedLines(lines, result) {
579
+ const unused = Array.isArray(result.unused) ? result.unused.filter((value) => typeof value === "string" && value !== "") : [];
580
+ if (unused.length === 0) {
581
+ return;
582
+ }
583
+ if (readString(result.queryMode) === "explicit") {
584
+ lines.push("");
585
+ lines.push(`unused: ${compactStringList(unused, 2, "more")}`);
586
+ return;
587
+ }
588
+ if (readString(result.targetMode) === "file") {
589
+ lines.push("");
590
+ lines.push(`unused symbols: ${unused.length}`);
591
+ }
592
+ }
593
+ function appendTargetLocalUsagesHint(lines, result) {
594
+ if (result.targetLocalUsagesHidden === true) {
595
+ lines.push("target-local usages hidden; use +includeTarget to show");
596
+ }
597
+ }
598
+ function formatUsageCodeEntityBlocks(cwd, result, entityBlocks) {
599
+ const lines = [];
600
+ const fileGroups = groupBy(entityBlocks, (block) => readString(block.file) ?? "");
601
+ for (const [file, fileBlocks] of fileGroups) {
602
+ if (file) {
603
+ lines.push(`// ${file}`);
604
+ }
605
+ lines.push(...formatUsageCodeContainerGroups(cwd, fileBlocks));
606
+ }
607
+ const entity = readString(entityBlocks[0]?.entity) ?? "";
608
+ const hidden = readHiddenUsageDetail(result, "hiddenBlocks", entity);
609
+ if (hidden) {
610
+ lines.push(`// ${hidden}`);
611
+ }
612
+ return lines;
613
+ }
614
+ function formatUsageCodeContainerGroups(cwd, blocks) {
615
+ const lines = [];
616
+ const { ownerGroups, standalone } = groupUsageRowsByOwner(blocks, (block) => readString(block.container) ?? "");
617
+ for (const [owner, ownerBlocks] of ownerGroups) {
618
+ lines.push(`// ${owner}:`);
619
+ lines.push(...formatUsageCodeBlocks(cwd, ownerBlocks));
620
+ }
621
+ if (standalone.length > 0) {
622
+ lines.push(...formatUsageCodeBlocks(cwd, standalone));
623
+ }
624
+ return lines;
625
+ }
626
+ function formatUsageCodeBlocks(cwd, blocks) {
627
+ const lines = [];
628
+ for (const block of blocks) {
629
+ if (typeof block.code === "string") {
630
+ lines.push(block.code.trimEnd());
631
+ }
632
+ else if (typeof block.omitted === "string") {
633
+ const omittedMessage = (0, session_workspace_1.useSessionGuidance)(cwd, "inspect.usages.codeOmitted", block.omitted) ?? "code omitted";
634
+ lines.push(`// ${omittedMessage}`);
635
+ if (typeof block.compactCode === "string" && block.compactCode !== "") {
636
+ lines.push(block.compactCode);
637
+ }
638
+ }
639
+ lines.push("");
640
+ }
641
+ return lines;
642
+ }
643
+ function formatUsageCodeViewBlockText(block, includeEntity = true) {
644
+ const lines = [];
645
+ const entity = readString(block.entity);
646
+ if (includeEntity && entity) {
647
+ lines.push(`// ${entity}`);
648
+ }
649
+ const file = readString(block.file) ?? "";
650
+ const line = typeof block.line === "number" ? ` l${block.line}` : "";
651
+ if (file || line) {
652
+ lines.push(`// ${file}${line}`.trim());
653
+ }
654
+ const code = readString(block.code);
655
+ if (code) {
656
+ lines.push(code.trimEnd());
657
+ }
658
+ return lines;
659
+ }
660
+ function formatUsageLocationsItemText(item, includeOwner) {
661
+ const entity = readString(item.entity) ?? "";
662
+ const reference = splitUsageEntityReference(entity);
663
+ const lines = [`${includeOwner ? entity : reference.name}:`];
664
+ const usedBy = Array.isArray(item.usedBy) ? item.usedBy.filter(isObject) : [];
665
+ for (const usage of usedBy) {
666
+ const file = readString(usage.file) ?? "";
667
+ const locations = Array.isArray(usage.locations) ? usage.locations.filter(isObject) : [];
668
+ if (locations.length === 0) {
669
+ continue;
670
+ }
671
+ if (locations.length === 1) {
672
+ const [location] = locations;
673
+ const line = typeof location?.line === "number" ? location.line : 0;
674
+ const container = readString(location?.container);
675
+ lines.push(container ? `${file}:${line} ${container}` : `${file}:${line}`);
676
+ continue;
677
+ }
678
+ lines.push(`${file}:`);
679
+ lines.push(...formatUsageLocationContainerGroups(locations));
680
+ }
681
+ const hidden = readString(item.hidden);
682
+ if (hidden) {
683
+ lines.push(hidden);
684
+ }
685
+ return lines;
686
+ }
687
+ function formatUsageLocationContainerGroups(locations) {
688
+ const lines = [];
689
+ const { ownerGroups, standalone } = groupUsageRowsByOwner(locations, (location) => readString(location.container) ?? "");
690
+ for (const [owner, ownerLocations] of ownerGroups) {
691
+ lines.push(`// ${owner}:`);
692
+ for (const location of ownerLocations) {
693
+ const line = typeof location.line === "number" ? location.line : 0;
694
+ const container = splitUsageEntityReference(readString(location.container) ?? "").name;
695
+ lines.push(container ? `${container} l${line}` : `l${line}`);
696
+ }
697
+ }
698
+ for (const location of standalone) {
699
+ const line = typeof location.line === "number" ? location.line : 0;
700
+ const container = readString(location.container);
701
+ lines.push(container ? `${container} l${line}` : `l${line}`);
702
+ }
703
+ return lines;
704
+ }
705
+ function readHiddenUsageDetail(result, field, entity) {
706
+ const rows = Array.isArray(result[field]) ? result[field].filter(isObject) : [];
707
+ const row = rows.find((item) => readString(item.entity) === entity);
708
+ return row ? readString(row.hidden) : null;
709
+ }
710
+ function groupUsageRowsByOwner(rows, entityOf) {
711
+ const ownerGroups = new Map();
712
+ const standalone = [];
713
+ for (const row of rows) {
714
+ const reference = splitUsageEntityReference(entityOf(row));
715
+ if (!reference.owner) {
716
+ standalone.push(row);
717
+ continue;
718
+ }
719
+ const group = ownerGroups.get(reference.owner) ?? [];
720
+ group.push(row);
721
+ ownerGroups.set(reference.owner, group);
722
+ }
723
+ return {
724
+ ownerGroups: Array.from(ownerGroups.entries()),
725
+ standalone
726
+ };
727
+ }
728
+ function splitUsageEntityReference(entity) {
729
+ const index = entity.lastIndexOf(".");
730
+ if (index <= 0 || index >= entity.length - 1) {
731
+ return { owner: null, name: entity };
732
+ }
733
+ return {
734
+ owner: entity.slice(0, index),
735
+ name: entity.slice(index + 1)
736
+ };
737
+ }
738
+ function groupBy(items, keyFn) {
739
+ const groups = new Map();
740
+ for (const item of items) {
741
+ const key = keyFn(item);
742
+ const current = groups.get(key) ?? [];
743
+ current.push(item);
744
+ groups.set(key, current);
745
+ }
746
+ return Array.from(groups.entries());
747
+ }
748
+ function sliceFileByRange(file, startLine, startCharacter, endLine, endCharacter) {
749
+ const text = fs.readFileSync(file, "utf8");
750
+ const start = textOffsetAt(text, startLine, startCharacter);
751
+ const end = textOffsetAt(text, endLine, endCharacter);
752
+ return text.slice(start, end);
753
+ }
754
+ function textOffsetAt(text, targetLine, targetCharacter) {
755
+ let line = 0;
756
+ let offset = 0;
757
+ while (offset < text.length && line < targetLine) {
758
+ const code = text.charCodeAt(offset);
759
+ if (code === 13) {
760
+ offset += text.charCodeAt(offset + 1) === 10 ? 2 : 1;
761
+ line += 1;
762
+ }
763
+ else if (code === 10) {
764
+ offset += 1;
765
+ line += 1;
766
+ }
767
+ else {
768
+ offset += 1;
769
+ }
770
+ }
771
+ return Math.max(0, Math.min(offset + targetCharacter, text.length));
772
+ }
773
+ function countNonEmptyLines(text) {
774
+ return text.split(/\r?\n/).filter((line) => line.trim() !== "").length;
775
+ }
776
+ function displayPath(cwd, file) {
777
+ return (0, path_display_1.compactDisplayPath)(cwd, file, (0, path_display_2.buildDisplayPathAliases)(cwd, (0, session_workspace_1.readEffectiveSessionPathAliases)(cwd)));
778
+ }
779
+ function isObject(value) {
780
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
781
+ }
782
+ function readString(value) {
783
+ return typeof value === "string" && value.trim() !== "" ? value.trim() : null;
784
+ }
785
+ function readStringArray(value) {
786
+ if (typeof value === "string" && value.trim() !== "") {
787
+ return [value.trim()];
788
+ }
789
+ if (!Array.isArray(value)) {
790
+ return null;
791
+ }
792
+ return value.filter((item) => typeof item === "string" && item.trim() !== "").map((item) => item.trim());
793
+ }