@automaton-labs/aib 0.0.6 → 0.0.7

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 (247) hide show
  1. package/dist/bin/cli.js +4 -2
  2. package/dist/commands/apply-module-plan.js +3 -3
  3. package/dist/commands/background-command.js +2 -0
  4. package/dist/commands/captured-input.js +1 -2
  5. package/dist/commands/config-command.js +2 -2
  6. package/dist/commands/config-output.js +10 -10
  7. package/dist/commands/control-plane-command.js +1 -0
  8. package/dist/commands/declaration-command.js +7 -0
  9. package/dist/commands/declaration-execution-cache.js +1 -0
  10. package/dist/commands/declaration-format.js +1 -0
  11. package/dist/commands/declaration-preview-cache.js +2 -0
  12. package/dist/commands/doctor.js +3 -2
  13. package/dist/commands/execution-command.js +1 -1
  14. package/dist/commands/file-command.js +1 -0
  15. package/dist/commands/file-move-to-dir-execution-cache.js +1 -0
  16. package/dist/commands/file-move-to-dir-preview-cache.js +2 -0
  17. package/dist/commands/file-move-to-dir.js +5 -0
  18. package/dist/commands/file-mutation-runtime.js +1 -0
  19. package/dist/commands/file-refactor-batch-execution-cache.js +1 -0
  20. package/dist/commands/file-refactor-batch-preview-cache.js +2 -0
  21. package/dist/commands/file-refactor-batch.js +5 -0
  22. package/dist/commands/file-rename-execution-cache.js +1 -0
  23. package/dist/commands/file-rename-preview-cache.js +2 -0
  24. package/dist/commands/file-rename.js +5 -0
  25. package/dist/commands/help-command.js +5 -5
  26. package/dist/commands/host-command.js +1 -0
  27. package/dist/commands/inspect-cycles.js +3 -3
  28. package/dist/commands/inspect-format.js +15 -15
  29. package/dist/commands/inspect-tree.js +2 -2
  30. package/dist/commands/inspect.js +12 -12
  31. package/dist/commands/move-to-file.js +2 -2
  32. package/dist/commands/ota-command.js +2 -0
  33. package/dist/commands/quick-read.js +4 -4
  34. package/dist/commands/refactor-batch.js +4 -4
  35. package/dist/commands/rename-entities.js +4 -4
  36. package/dist/commands/result-view.js +6 -5
  37. package/dist/commands/worker-command.js +1 -0
  38. package/dist/config/defaults.js +1 -1
  39. package/dist/config/env-vars.js +1 -1
  40. package/dist/config/path-aliases.js +1 -1
  41. package/dist/config/resolve-command-alias.js +1 -1
  42. package/dist/content/content-bundle.js +1 -1
  43. package/dist/dsl/aib-dsl.js +1 -1
  44. package/dist/dsl/declaration-dsl.js +1 -0
  45. package/dist/dsl/file-move-to-dir-dsl.js +1 -0
  46. package/dist/dsl/file-refactor-batch-dsl.js +1 -0
  47. package/dist/dsl/file-rename-dsl.js +1 -0
  48. package/dist/help/{json/bootstrap.md → bootstrap.bash.md} +214 -392
  49. package/dist/help/bootstrap.md +101 -137
  50. package/dist/help/{json/full.md → bootstrap.pwsh.md} +214 -392
  51. package/dist/help/docs/dsl.md +4 -3
  52. package/dist/help/docs/file.move.md +46 -0
  53. package/dist/help/docs/file.rename.md +35 -0
  54. package/dist/help/docs/inspect.code.md +5 -5
  55. package/dist/help/docs/inspect.deps.md +7 -7
  56. package/dist/help/docs/inspect.file.md +2 -1
  57. package/dist/help/docs/inspect.graph.md +3 -3
  58. package/dist/help/docs/inspect.md +5 -5
  59. package/dist/help/docs/mutation.md +23 -13
  60. package/dist/help/docs/patterns.md +1 -5
  61. package/dist/help/docs/qr.md +7 -22
  62. package/dist/help/docs/quick-map.md +1 -0
  63. package/dist/help/docs/recipe.file-layout.md +15 -0
  64. package/dist/help/docs/rg.md +22 -0
  65. package/dist/help/docs/selectors.md +3 -2
  66. package/dist/help/docs/session.md +1 -1
  67. package/dist/help/dsl/bootstrap.bash.md +907 -0
  68. package/dist/help/dsl/bootstrap.md +101 -137
  69. package/dist/help/dsl/bootstrap.pwsh.md +907 -0
  70. package/dist/help/dsl/docs/dsl.md +4 -3
  71. package/dist/help/dsl/docs/file.move.md +46 -0
  72. package/dist/help/dsl/docs/file.rename.md +35 -0
  73. package/dist/help/dsl/docs/inspect.code.md +5 -5
  74. package/dist/help/dsl/docs/inspect.deps.md +7 -7
  75. package/dist/help/dsl/docs/inspect.file.md +2 -1
  76. package/dist/help/dsl/docs/inspect.graph.md +3 -3
  77. package/dist/help/dsl/docs/inspect.md +5 -5
  78. package/dist/help/dsl/docs/mutation.md +23 -13
  79. package/dist/help/dsl/docs/patterns.md +1 -5
  80. package/dist/help/dsl/docs/qr.md +7 -22
  81. package/dist/help/dsl/docs/quick-map.md +1 -0
  82. package/dist/help/dsl/docs/recipe.file-layout.md +15 -0
  83. package/dist/help/dsl/docs/rg.md +22 -0
  84. package/dist/help/dsl/docs/selectors.md +3 -2
  85. package/dist/help/dsl/docs/session.md +1 -1
  86. package/dist/help/dsl/full.md +101 -137
  87. package/dist/help/dsl/help-index.md +44 -0
  88. package/dist/help/dsl/tokens/qr.inline.examples.md +2 -0
  89. package/dist/help/dsl/tokens/stdin.examples.bash.md +8 -0
  90. package/dist/help/dsl/tokens/stdin.examples.pwsh.md +8 -0
  91. package/dist/help/dsl/tokens/stdin.examples.with-qr.bash.md +12 -0
  92. package/dist/help/dsl/tokens/stdin.examples.with-qr.pwsh.md +12 -0
  93. package/dist/help/dsl/topics/dsl.md +4 -3
  94. package/dist/help/dsl/topics/file.move.md +44 -0
  95. package/dist/help/dsl/topics/file.rename.md +33 -0
  96. package/dist/help/dsl/topics/inspect.code.md +5 -5
  97. package/dist/help/dsl/topics/inspect.deps.md +7 -7
  98. package/dist/help/dsl/topics/inspect.file.md +2 -1
  99. package/dist/help/dsl/topics/inspect.graph.md +3 -3
  100. package/dist/help/dsl/topics/inspect.md +5 -5
  101. package/dist/help/dsl/topics/mutation.md +23 -13
  102. package/dist/help/dsl/topics/patterns.md +1 -5
  103. package/dist/help/dsl/topics/qr.md +7 -22
  104. package/dist/help/dsl/topics/quick-map.md +1 -0
  105. package/dist/help/dsl/topics/recipe.file-layout.md +13 -0
  106. package/dist/help/dsl/topics/rg.md +20 -0
  107. package/dist/help/dsl/topics/selectors.md +3 -2
  108. package/dist/help/dsl/topics/session.md +1 -1
  109. package/dist/help/full.md +101 -137
  110. package/dist/help/help-index.md +44 -0
  111. package/dist/help/help-meta.json +43 -27
  112. package/dist/help/index.md +32 -75
  113. package/dist/help/tokens/qr.inline.examples.md +2 -0
  114. package/dist/help/tokens/stdin.examples.bash.md +8 -0
  115. package/dist/help/tokens/stdin.examples.pwsh.md +8 -0
  116. package/dist/help/tokens/stdin.examples.with-qr.bash.md +12 -0
  117. package/dist/help/tokens/stdin.examples.with-qr.pwsh.md +12 -0
  118. package/dist/help/topics/dsl.md +4 -3
  119. package/dist/help/topics/file.move.md +44 -0
  120. package/dist/help/topics/file.rename.md +33 -0
  121. package/dist/help/topics/inspect.code.md +5 -5
  122. package/dist/help/topics/inspect.deps.md +7 -7
  123. package/dist/help/topics/inspect.file.md +2 -1
  124. package/dist/help/topics/inspect.graph.md +3 -3
  125. package/dist/help/topics/inspect.md +5 -5
  126. package/dist/help/topics/mutation.md +23 -13
  127. package/dist/help/topics/patterns.md +1 -5
  128. package/dist/help/topics/qr.md +7 -22
  129. package/dist/help/topics/quick-map.md +1 -0
  130. package/dist/help/topics/recipe.file-layout.md +13 -0
  131. package/dist/help/topics/rg.md +20 -0
  132. package/dist/help/topics/selectors.md +3 -2
  133. package/dist/help/topics/session.md +1 -1
  134. package/dist/host/capabilities.js +1 -0
  135. package/dist/ide-launch/common.cjs +162 -162
  136. package/dist/managed-host/extension-vsix-resolver.js +1 -1
  137. package/dist/managed-host/manage-serve-web-host.cjs +141 -141
  138. package/dist/managed-host/serve-web-autostart.js +1 -1
  139. package/dist/managed-host/serve-web-host.cjs +1781 -1570
  140. package/dist/payloads/read-stdin-json.js +1 -1
  141. package/dist/rg-wrapper/core.js +6 -0
  142. package/dist/rg-wrapper/options.js +1 -0
  143. package/dist/rtk-wrapper/core.js +2 -0
  144. package/dist/runtime/input-source.js +1 -1
  145. package/dist/runtime/run-command.js +1 -1
  146. package/dist/selectors/parse-entities.js +1 -1
  147. package/dist/session/daemon-state.js +2 -0
  148. package/dist/session/server.js +7 -8
  149. package/dist/shared/operations.js +1 -1
  150. package/dist/shared/protocol.js +1 -1
  151. package/dist/shared/routes.js +1 -1
  152. package/dist/shared/stdin-examples.js +1 -3
  153. package/dist/shared/types.js +1 -1
  154. package/dist/tool-runtime/runtime-tools.js +1 -0
  155. package/dist/workers/control-plane/aib-control-plane-worker.cjs +80 -0
  156. package/dist/workers/control-plane/client-config.default.json +3 -0
  157. package/dist/workers/product-storage.js +1 -0
  158. package/dist/workers/registry.js +1 -0
  159. package/extension/vscode-refactor-bridge-extension.vsix +0 -0
  160. package/package.json +6 -4
  161. package/runtimes/launcher/linux-x64/aib +0 -0
  162. package/runtimes/launcher/win-x64/aib.exe +0 -0
  163. package/runtimes/tools/rg/darwin-arm64/rg +0 -0
  164. package/runtimes/tools/rg/darwin-x64/rg +0 -0
  165. package/runtimes/tools/rg/linux-arm64/rg +0 -0
  166. package/runtimes/tools/rg/linux-x64/rg +0 -0
  167. package/runtimes/tools/rg/manifest.json +36 -0
  168. package/runtimes/tools/rg/win32-x64/rg.exe +0 -0
  169. package/runtimes/tools/rtk/darwin-arm64/rtk +0 -0
  170. package/runtimes/tools/rtk/darwin-x64/rtk +0 -0
  171. package/runtimes/tools/rtk/linux-arm64/rtk +0 -0
  172. package/runtimes/tools/rtk/linux-x64/rtk +0 -0
  173. package/runtimes/tools/rtk/manifest.json +36 -0
  174. package/runtimes/tools/rtk/win32-x64/rtk.exe +0 -0
  175. package/dist/help/json/docs/basics.md +0 -15
  176. package/dist/help/json/docs/config-setup.aliases.md +0 -56
  177. package/dist/help/json/docs/config-setup.excludes.md +0 -45
  178. package/dist/help/json/docs/config-setup.import-normalize.md +0 -86
  179. package/dist/help/json/docs/config-setup.import-rules.md +0 -96
  180. package/dist/help/json/docs/config-setup.tsconfigs.md +0 -33
  181. package/dist/help/json/docs/dsl.md +0 -25
  182. package/dist/help/json/docs/first-setup.md +0 -292
  183. package/dist/help/json/docs/help-format.md +0 -9
  184. package/dist/help/json/docs/help-protocol.md +0 -26
  185. package/dist/help/json/docs/imports.normalize.md +0 -47
  186. package/dist/help/json/docs/inspect.code.md +0 -41
  187. package/dist/help/json/docs/inspect.cycles.md +0 -38
  188. package/dist/help/json/docs/inspect.deps.md +0 -46
  189. package/dist/help/json/docs/inspect.duplicates.md +0 -65
  190. package/dist/help/json/docs/inspect.exports.md +0 -40
  191. package/dist/help/json/docs/inspect.file.md +0 -38
  192. package/dist/help/json/docs/inspect.graph.md +0 -139
  193. package/dist/help/json/docs/inspect.imports.md +0 -15
  194. package/dist/help/json/docs/inspect.md +0 -88
  195. package/dist/help/json/docs/inspect.members.md +0 -32
  196. package/dist/help/json/docs/inspect.tree.md +0 -32
  197. package/dist/help/json/docs/inspect.usages.md +0 -61
  198. package/dist/help/json/docs/modulePlan.md +0 -73
  199. package/dist/help/json/docs/move.md +0 -56
  200. package/dist/help/json/docs/mutation.md +0 -65
  201. package/dist/help/json/docs/patterns.md +0 -76
  202. package/dist/help/json/docs/prefs.md +0 -40
  203. package/dist/help/json/docs/qr.md +0 -37
  204. package/dist/help/json/docs/quick-map.md +0 -30
  205. package/dist/help/json/docs/refactor.batch.md +0 -72
  206. package/dist/help/json/docs/rename.md +0 -47
  207. package/dist/help/json/docs/reveal.md +0 -30
  208. package/dist/help/json/docs/selectors.md +0 -23
  209. package/dist/help/json/docs/session.md +0 -77
  210. package/dist/help/json/docs/view.md +0 -30
  211. package/dist/help/json/snippets/agents.md +0 -14
  212. package/dist/help/json/topics/basics.md +0 -13
  213. package/dist/help/json/topics/config-setup.aliases.md +0 -54
  214. package/dist/help/json/topics/config-setup.excludes.md +0 -43
  215. package/dist/help/json/topics/config-setup.import-normalize.md +0 -84
  216. package/dist/help/json/topics/config-setup.import-rules.md +0 -94
  217. package/dist/help/json/topics/config-setup.tsconfigs.md +0 -31
  218. package/dist/help/json/topics/dsl.md +0 -23
  219. package/dist/help/json/topics/first-setup.md +0 -290
  220. package/dist/help/json/topics/help-format.md +0 -7
  221. package/dist/help/json/topics/help-protocol.md +0 -24
  222. package/dist/help/json/topics/imports.normalize.md +0 -45
  223. package/dist/help/json/topics/inspect.code.md +0 -39
  224. package/dist/help/json/topics/inspect.cycles.md +0 -36
  225. package/dist/help/json/topics/inspect.deps.md +0 -44
  226. package/dist/help/json/topics/inspect.duplicates.md +0 -37
  227. package/dist/help/json/topics/inspect.exports.md +0 -38
  228. package/dist/help/json/topics/inspect.file.md +0 -36
  229. package/dist/help/json/topics/inspect.graph.md +0 -137
  230. package/dist/help/json/topics/inspect.imports.md +0 -13
  231. package/dist/help/json/topics/inspect.md +0 -86
  232. package/dist/help/json/topics/inspect.members.md +0 -30
  233. package/dist/help/json/topics/inspect.tree.md +0 -22
  234. package/dist/help/json/topics/inspect.usages.md +0 -59
  235. package/dist/help/json/topics/modulePlan.md +0 -60
  236. package/dist/help/json/topics/move.md +0 -46
  237. package/dist/help/json/topics/mutation.md +0 -63
  238. package/dist/help/json/topics/patterns.md +0 -74
  239. package/dist/help/json/topics/prefs.md +0 -38
  240. package/dist/help/json/topics/qr.md +0 -35
  241. package/dist/help/json/topics/quick-map.md +0 -28
  242. package/dist/help/json/topics/refactor.batch.md +0 -61
  243. package/dist/help/json/topics/rename.md +0 -42
  244. package/dist/help/json/topics/reveal.md +0 -28
  245. package/dist/help/json/topics/selectors.md +0 -21
  246. package/dist/help/json/topics/session.md +0 -59
  247. package/dist/help/json/topics/view.md +0 -28
@@ -0,0 +1,907 @@
1
+ AIB
2
+
3
+ aib is a local CLI for TS/JS code work backed by IDE and TypeScript APIs.
4
+ It can inspect symbols, usages, dependencies, duplicates, focused code, and run IDE-backed mutations.
5
+
6
+ aib is designed for agent workflows:
7
+ batch requests, compact text output, session handles, and reusable artifacts.
8
+
9
+ Inline commands omit the aib prefix.
10
+ When you see:
11
+ session clear
12
+
13
+ Run:
14
+ aib session clear
15
+
16
+ Stdin examples show command and input separately to avoid shell-specific syntax.
17
+ Stdin Run lines include the aib prefix to avoid confusion.
18
+
19
+ PowerShell:
20
+ @'
21
+ <input>
22
+ '@ | aib <command> --stdin
23
+
24
+ @'
25
+ tree . +onlyDirs limit=20
26
+ '@ | aib inspect --stdin
27
+
28
+ Basics
29
+
30
+ Use the active session while you work.
31
+
32
+ Examples are patterns, not limits.
33
+ Feature sections show common high-value uses, not every valid use.
34
+ Adapt requests to the task: combine features, batch related questions, and skip steps when you already have enough context.
35
+
36
+ Prefer batch DSL instead of one-off inline calls.
37
+ One request can inspect/mutate several files/entities and save reusable artifacts when supported.
38
+ Use one-off commands only for small checks/changes.
39
+
40
+ For mutations, aib asks TS/IDE refactors to update affected references and imports.
41
+ After a successful mutation, do not manually patch the same imports unless aib reports a follow-up or the build/checks show a real issue.
42
+
43
+ Working patterns
44
+
45
+ Help refresh
46
+
47
+ After context compaction, always run:
48
+ aib help help-protocol quick-map
49
+ aib config aliases
50
+
51
+ Use focused help when you would otherwise guess how a known AIB capability works.
52
+
53
+ Reread bootstrap when you need to restore the overall AIB workflow faster than piecing it together from focused topics.
54
+ If you just reread bootstrap, do not also read focused topics unless you need details that bootstrap does not cover.
55
+
56
+ Do not reread bootstrap automatically if focused help is enough.
57
+ When refreshing multiple areas, request them together instead of one by one.
58
+
59
+ Example:
60
+ aib help patterns mutation inspect inspect.file inspect.code imports.normalize
61
+
62
+ Use aib before broad file reads when the question is about TS/JS structure, references, dependencies, or focused code.
63
+ Use qr for cross-OS quick reads of text files, logs, JSON, scripts, and line windows.
64
+ It is not a replacement for inspect.
65
+ Use normal text search when the question is just text.
66
+
67
+ For a first pass in a new codebase, map directories before reading files:
68
+
69
+ aib inspect tree src --depth 5 --only-dirs --limit 200
70
+
71
+ Start compact for broad scans.
72
+ Use summary, locations, or local graph views first when output could be large.
73
+ Expand to code or wider graph views only for the parts that matter now.
74
+ If output hides data and shows `view: aib:res_<id>`, use `aib view ...` to fetch only the hidden part instead of repeating the original request.
75
+
76
+ Compact output is a starting point, not a substitute for needed code.
77
+ Fetch exact code when correctness depends on implementation details.
78
+
79
+ For mutation commands, set the shell/tool harness timeout to 3 minutes.
80
+
81
+ If a mutation command times out or returns no final output, use:
82
+
83
+ aib execution status last
84
+
85
+ This is an escape hatch for recovering the latest mutation status/result.
86
+
87
+ After reading bootstrap for the first time in a repo, run:
88
+
89
+ aib config
90
+
91
+ Use the output as the repo-local AIB map:
92
+ - pathAliases show short paths to use in AIB requests;
93
+ - importRules show how move/modulePlan should create imports;
94
+ - importNormalize shows defaults for explicit imports normalize;
95
+ - excludes show which noise is intentionally hidden from tree/graph/sync.
96
+
97
+ If pathAliases are missing, stale, or weak for repeated paths, run:
98
+ aib help config-setup.aliases
99
+
100
+ If move/modulePlan imports do not match the repo style, run:
101
+ aib help config-setup.import-rules
102
+
103
+ If you are about to change import style across files, add or adopt tsconfig aliases, or clean imports repeatedly, run:
104
+ aib help config-setup.import-normalize imports.normalize
105
+
106
+ If tree/graph output includes known repo noise, run:
107
+ aib help config-setup.excludes
108
+
109
+ If sync or reveal shows too many visible TypeScript configs, run:
110
+ aib help config-setup.tsconfigs
111
+
112
+ Example aib.json config:
113
+
114
+ {
115
+ "pathAliases": {
116
+ "svc": "src/services",
117
+ "cli": "packages/cli/src",
118
+ "ext": "packages/extension/src"
119
+ },
120
+ "importRules": [
121
+ {
122
+ "scope": ".",
123
+ "specifier": "shortest",
124
+ "ending": "auto",
125
+ "builtin": "bare",
126
+ "unusedImports": "remove"
127
+ }
128
+ ],
129
+ "importNormalize": [
130
+ {
131
+ "scope": "src",
132
+ "to": "shortestAlias",
133
+ "exclude": ["src/generated"]
134
+ }
135
+ ],
136
+ "inspect.graph.exclude": [
137
+ "**/* copy.ts"
138
+ ]
139
+ }
140
+
141
+ pathAliases define short request aliases for paths agents repeat in aib commands.
142
+ Use them to reduce input tokens for repeated inspect and mutation work.
143
+
144
+ Aliases are for aib request paths. They do not change TypeScript imports by themselves.
145
+ For import style after mutations, use importRules.
146
+
147
+ importRules control imports created or expanded by move/modulePlan mutation cleanup.
148
+ They do not rewrite the whole project.
149
+
150
+ AIB starts from IDE/TS import preferences.
151
+ For mutation cleanup, matching importRules in aib.json take priority.
152
+
153
+ Do not assume IDE/TS defaults match the repo style.
154
+ Set importRules before large move/modulePlan work so imports do not need manual cleanup.
155
+
156
+ importNormalize defines default rules for explicit aib imports normalize commands.
157
+
158
+ It does not run automatically during move/modulePlan; use importRules for mutation-time cleanup.
159
+
160
+ AIB has four config exclude fields:
161
+ inspect.graph.exclude
162
+ inspect.tree.files.exclude
163
+ inspect.tree.onlyDirs.exclude
164
+ sync.tsconfig.exclude
165
+
166
+ For all of them, node_modules, .git, dist, build, out, and .tmp are skipped by default.
167
+
168
+ Use config excludes for generated files, backups, local copies, nested workspaces, seed projects, or other repository-specific noise.
169
+
170
+ Graph excludes affect graph counts, hubs, entrypoints, leaves, edges, imports, importedBy, and saved graph files.
171
+ Tree excludes affect directory/file discovery output.
172
+ AIB syncs and watches visible tsconfigs.
173
+ sync.tsconfig.exclude affects which TypeScript configs AIB syncs and watches.
174
+
175
+ Important: leave feedback while working.
176
+
177
+ aib is built for agents. Agent feedback is the main signal for improving output, docs, mutations, and token efficiency.
178
+
179
+ Use feedback when something is wrong, unclear, noisy, or could be more efficient.
180
+
181
+ Format:
182
+ feedback "kind | message"
183
+ feedback "kind | topic | message"
184
+
185
+ Kinds:
186
+ bug, confusion, friction, idea, other
187
+
188
+ Topic is optional. Choose any short topic that helps classify the feedback.
189
+
190
+ Example:
191
+ feedback "friction | imports | normalize required manual cleanup"
192
+
193
+ Session
194
+
195
+ Start by creating or selecting your session.
196
+ Create it once, then reuse it.
197
+ Do not create a new session for every command or subtask.
198
+
199
+ Session stores saved artifacts and aliases.
200
+
201
+ Prefer short session names:
202
+ aa, tr, qa, a2
203
+
204
+ Create:
205
+ session init --name <name>
206
+
207
+ Follow the command output.
208
+ If aib says multiple sessions exist, use the session you created explicitly:
209
+ aib -s <name> <command>
210
+
211
+ Or bind this shell:
212
+ AIB=<name>
213
+
214
+ If you want to prune session data, use:
215
+ session clear
216
+
217
+ After clear, keep using the same session.
218
+
219
+ Check:
220
+ session status
221
+
222
+ Reusable index handles look like:
223
+ `aib:graph:<name>` `aib:usages:<name>`
224
+
225
+ Pass index handles back to the matching inspect command with `--from-file` or `from` in DSL.
226
+
227
+ Selectors identify symbols when names are ambiguous.
228
+ Use plain names when they are unambiguous.
229
+ Use selectors when aib reports ambiguity or when different symbol kinds share a name.
230
+
231
+ Example:
232
+ type WsOptions
233
+ class WsOptions
234
+
235
+ If aib needs the exact entity, use:
236
+ t-WsOptions
237
+ c-WsOptions
238
+
239
+ Selectors list:
240
+ f-name function
241
+ c-Name class
242
+ i-Name interface
243
+ t-Name type
244
+ v-name variable
245
+ e-Name enum
246
+ ns-Name namespace
247
+ m-name method, usually with parent
248
+ p-name property, usually with parent
249
+
250
+ DSL request model:
251
+ - directives set defaults for following requests
252
+ - each request line can override defaults with key=value
253
+ - +flag means true
254
+ - -flag means false
255
+ - file/imports/exports/members/code/deps accept a path as the first positional argument; examples below use this shape.
256
+ - Use @file when several following operations share the same file.
257
+ - For one-off file operations, pass the path directly.
258
+
259
+ Syntax:
260
+ @file <path> default file
261
+ @source <path> default sourceFile for mutations
262
+ @base <dir> default base dir for file mutations
263
+ op arg arg key=value request
264
+ +flag boolean true
265
+ -flag boolean false
266
+ >name save reusable artifact when supported
267
+ old->new rename pair
268
+ Parent.member parent-qualified member
269
+ Parent.{a,b} several members under one parent
270
+ key=[a,b] list value for repeatable fields
271
+ file="path with spaces.ts" quote values with spaces
272
+ detail=sum|loc|code aliases for summary|locations|code
273
+ from=... alias for fromFile
274
+
275
+ Inspect
276
+
277
+ Inspect helps you turn an unknown code area into a small working model.
278
+
279
+ Use it to understand what exists, how pieces connect, what repeats, where a change can spread, and which exact code should enter context next.
280
+
281
+ One useful flow:
282
+ map -> focus -> code
283
+
284
+ map: learn what exists and how it connects
285
+ focus: choose files/entities/usages that matter
286
+ code: fetch exact code needed
287
+
288
+ Choose inspect operation:
289
+
290
+ declarations in one file file
291
+ static/dynamic imports imports
292
+ public API exports
293
+ methods/properties of parent members
294
+ exact implementation code
295
+ outgoing deps of one entity deps
296
+ incoming references/callers usages
297
+ file/module connectivity graph
298
+ compact directory layout tree
299
+ repeated declarations/helpers duplicates
300
+ local import cycles cycles
301
+
302
+ Cycles are available but not expanded in bootstrap:
303
+ aib help inspect.cycles
304
+
305
+ Prefer one batch DSL request for related questions.
306
+
307
+ Batch example:
308
+
309
+ Run:
310
+ aib inspect --stdin
311
+
312
+ Input:
313
+ @file @svc/service.ts
314
+ file
315
+ file @svc/serviceB.ts
316
+ members Service
317
+ code entities=[Service.{render,reset},normalize,default,IIFE#1]
318
+ code @svc/serviceC.ts ServiceC -ranges
319
+ usages target=@svc/service.ts normalize scope=src detail=loc
320
+ duplicates scope=src/scripts detail=sum limit=20
321
+
322
+ How inheritance works above:
323
+ @file sets the default file for following file-like inspect requests.
324
+ file uses @svc/service.ts.
325
+ file @svc/serviceB.ts overrides the default for that one request.
326
+ members Service uses @svc/service.ts because it has no file override.
327
+ code entities=[...] also uses @svc/service.ts.
328
+ code @svc/serviceC.ts ServiceC overrides the file and disables ranges for that request.
329
+ usages sets its own target/scope/detail because it searches references instead of reading the default file.
330
+ duplicates sets its own scope because it scans a directory.
331
+
332
+ Inspect request fields:
333
+
334
+ file source file; first positional path, @file path, or file=path
335
+ target file or directory to analyze; target=path
336
+ scope where to search; scope=path or scope=[a,b]
337
+ entity one symbol selector; entity=name or positional selector
338
+ entities several symbol selectors; entities=[...] or positional selectors
339
+ parent parent class/interface for methods/properties; Parent.member or parent=Name
340
+ ranges include line/range metadata
341
+ exclude skip paths or names depending on operation; exclude=[...]
342
+ detail output level; detail=sum|loc|code
343
+ all return all items; +all
344
+ limit max items in one page; limit=N
345
+ offset page offset; offset=N
346
+ save save reusable artifact where supported; >name
347
+
348
+ Operation sections list their supported controls.
349
+ Specific explains controls whose meaning is local to that operation.
350
+
351
+ Inspect File
352
+
353
+ Use file to map top-level declarations physically present in one file.
354
+ Exported declarations are marked in the output.
355
+ It shows what lives in the file before you decide whether to read code.
356
+
357
+ Good for:
358
+ - mapping a file
359
+ - listing top-level declarations
360
+ - seeing default exports, decorators, IIFEs, and runtime calls
361
+ - checking whether a file contains real declarations or mostly re-exports
362
+
363
+ Do not add limit just in case.
364
+ file output is compact and most files have far fewer than 100 top-level declarations.
365
+ Use limit only after file output is actually too large.
366
+
367
+ Controls:
368
+ file, ranges, localOnly
369
+
370
+ Specific:
371
+ localOnly show local declarations and reexports without resolving facade API; +localOnly
372
+
373
+ Defaults: +ranges
374
+ Use -ranges to show names without ranges.
375
+
376
+ Run:
377
+ aib inspect --stdin
378
+
379
+ Input:
380
+ file @svc/service.ts +localOnly
381
+ file src/index.ts
382
+
383
+ inspect file src/service.ts [--ranges] [--local-only]
384
+
385
+ Inspect Imports
386
+
387
+ Use imports to inspect static and dynamic imports in a file.
388
+ If there are no dynamic imports, the dynamic imports block is omitted.
389
+
390
+ Controls:
391
+ file, ranges
392
+
393
+ Defaults: +ranges
394
+
395
+ Run:
396
+ aib inspect --stdin
397
+
398
+ Input:
399
+ imports @svc/service.ts
400
+
401
+ Inspect Exports
402
+
403
+ Use exports to see the public API of one file.
404
+ It answers what other files can import from that file.
405
+
406
+ Important:
407
+ inspect.file marks exported declarations already.
408
+
409
+ Do not batch this for a plain implementation file:
410
+ file src/service.ts
411
+ exports src/service.ts
412
+
413
+ Use exports when you need public module surface, barrels, re-exports, export *, or resolveStar.
414
+
415
+ Good for:
416
+ - checking a module boundary or public surface
417
+ - understanding facade/barrel files
418
+ - resolving export * when the local file only re-exports from elsewhere
419
+ - comparing API shape when public imports matter
420
+
421
+ Controls:
422
+ file, ranges, resolveStar
423
+
424
+ Specific:
425
+ resolveStar resolve export * through re-exported modules; +resolveStar
426
+
427
+ Run:
428
+ aib inspect --stdin
429
+
430
+ Input:
431
+ exports src/service.ts +ranges
432
+ exports src/index.ts +resolveStar
433
+
434
+ inspect exports src/service.ts [--ranges] [--resolve-star]
435
+
436
+ Inspect Members
437
+
438
+ Use members to map a class/interface/object-like symbol without reading its body.
439
+ It shows the internal shape of a parent entity without reading its full body.
440
+
441
+ Good for:
442
+ - listing member names when the parent entity is known
443
+ - narrowing a large parent entity to relevant members
444
+ - understanding object shape before changing or moving related code
445
+
446
+ Controls:
447
+ file, entity, entities, ranges, limit, offset, all
448
+
449
+ Run:
450
+ aib inspect --stdin
451
+
452
+ Input:
453
+ members @svc/service.ts entities=[Service,ServiceOptions] +all +ranges
454
+
455
+ inspect members src/service.ts Service [--limit N] [--offset N] [--all] [--ranges]
456
+
457
+ Inspect Code
458
+
459
+ Use code to fetch exact declarations or members.
460
+ It returns focused code without reading the whole file.
461
+
462
+ Good for:
463
+ - reading a known function, class, method, declaration, `default`, or `IIFE#N`
464
+ - fetching several related code blocks in one request
465
+ - keeping context focused on code needed for the current task
466
+
467
+ Controls:
468
+ file, entity, entities, parent, show, ranges
469
+
470
+ Specific:
471
+ show include source output
472
+
473
+ Defaults: +show +ranges
474
+ Use -show for names/ranges only.
475
+ Use -ranges for source without ranges.
476
+
477
+ Run:
478
+ aib inspect --stdin
479
+
480
+ Input:
481
+ code @svc/service.ts Service.{render,reset} normalize
482
+ code @svc/serviceB.ts ServiceB.{constructor} default IIFE#1
483
+
484
+ Inspect Deps
485
+
486
+ Use deps to see what one entity depends on inside its file.
487
+ It separates type-only dependencies from runtime value dependencies.
488
+
489
+ Good for:
490
+ - checking what a symbol may need when moved or extracted
491
+ - spotting nearby types, constants, or helpers tied to one entity
492
+ - deciding whether one symbol is standalone or tied to nearby declarations
493
+ - debugging mutation failures caused by local dependency shape
494
+
495
+ Controls:
496
+ file, entity, entities, parent
497
+
498
+ Run:
499
+ aib inspect --stdin
500
+
501
+ Input:
502
+ deps @svc/service.ts entities=[createService,normalize,Service.{render,reset}]
503
+ deps @svc/serviceB.ts ServiceB.{constructor} getConfig
504
+
505
+ Inspect Usages
506
+
507
+ Use usages to find who references a file, directory, or entity inside a scope.
508
+ It reports real references, not unused imports or text matches.
509
+ For broad impact checks, target-local usages are hidden automatically when the target is inside a wider scope.
510
+ Use includeTarget only when references inside the target file or directory matter.
511
+
512
+ Good for:
513
+ - checking impact before changing behavior
514
+ - finding consumers of an entity or module area
515
+ - confirming whether extracted or renamed code still has callers
516
+ - getting caller locations or caller code without broad file scans
517
+
518
+ Use detail=code directly when you already need caller code.
519
+ Use detail=loc + save when the first question is impact shape and you may expand only part of it later.
520
+
521
+ Controls:
522
+ target, scope, entity, entities, parent, detail, limit, all, save, includeTarget
523
+
524
+ Specific:
525
+ includeTarget include references inside the target file/directory; +includeTarget
526
+
527
+ Run:
528
+ aib inspect --stdin
529
+
530
+ Input:
531
+ usages target=@svc/service.ts entities=[createService,normalize,Service.{render,reset}] scope=[src/app,src/tests] detail=loc >service-usages
532
+
533
+ Expand saved usages when needed:
534
+ inspect usages --from-file aib:usages:service-usages --focus createService --detail code --limit 20
535
+
536
+ Inspect Graph
537
+
538
+ Use graph when the question is about file/module boundaries, not one symbol.
539
+ It builds a reusable map of local import relationships, then lets you focus files inside that map.
540
+
541
+ Good for:
542
+ - mapping an unfamiliar directory or subsystem
543
+ - seeing which files are hubs, entrypoints, or leaves
544
+ - comparing a few known areas without mapping all src
545
+ - choosing files/entities to inspect next
546
+ - checking module boundaries when ownership is unclear
547
+
548
+ Use deps for one entity's outgoing dependencies.
549
+ Use usages for real incoming references.
550
+ Use graph for file-level connectivity.
551
+
552
+ Model:
553
+ build graph: scope + view + save
554
+ query graph: from + focus + output toggles
555
+
556
+ view controls what enters the saved graph.
557
+ focus only expands details for files already inside it.
558
+ If focus misses a file, rebuild with wider scope or view.
559
+
560
+ Default view:
561
+ directory scope -> local
562
+ file or multiple scopes -> neighbors
563
+ from -> uses the saved graph
564
+
565
+ Views:
566
+ local only files inside scope; best directory map
567
+ neighbors direct import neighborhood; best file-centered map
568
+ expanded wider neighborhood; more output
569
+
570
+ Scope choice:
571
+ scope=src creates a broad reusable map for src.
572
+ scope=src/services is cheaper for local work.
573
+ scope=[src/services,src/components] compares known areas without mapping all src.
574
+
575
+ After you understand which graph sections matter, hide the rest with flags.
576
+ Graph can be noisy; shape it for the current task.
577
+
578
+ Controls:
579
+ scope, view, from, focus, symbolUsage, edges, hubs, entrypoints, leaves, exclude, save
580
+
581
+ Specific:
582
+ view local|neighbors|expanded
583
+ from reuse saved graph index; from=aib:graph:<name>
584
+ focus focus a file inside the graph; focus=path
585
+ symbolUsage show imported symbols on edges; +symbolUsage
586
+
587
+ edges/hubs/entrypoints/leaves output section toggles; +name or -name
588
+
589
+ Run:
590
+ aib inspect --stdin
591
+
592
+ Input:
593
+ graph scope=@svc view=local >services-graph
594
+ graph from=aib:graph:services-graph focus=[@svc/users.ts,@svc/admins.ts] +symbolUsage -edges
595
+
596
+ Focus saved graph later:
597
+ inspect graph --from-file aib:graph:services-graph --focus @svc/messages.ts --focus @svc/posts.ts --symbol-usage
598
+
599
+ Inline graph focus can add focus and symbolUsage.
600
+ Use DSL or request flags to hide sections such as edges/hubs/entrypoints/leaves.
601
+
602
+ Inspect Tree
603
+
604
+ Use tree to list a compact directory layout.
605
+ It is useful before focused inspect when you know the area but not the exact file.
606
+
607
+ Controls:
608
+ scope, depth, minDepth, limit, only, exclude, onlyDirs, ned, nec
609
+
610
+ Specific:
611
+ depth max nesting depth; depth=N
612
+ minDepth hide shallower paths; minDepth=N
613
+ onlyDirs show directories only; +onlyDirs
614
+ only keep only matching files/dirs; only=[...]
615
+ exclude skip matching files/dirs; exclude=[...]
616
+ ned no-default-exclude; show paths hidden by built-in excludes; +ned
617
+ nec no-config-exclude; ignore inspect.tree.*.exclude from aib.json; +nec
618
+
619
+ Run:
620
+ aib inspect --stdin
621
+
622
+ Input:
623
+ tree src depth=4 +onlyDirs limit=200 +ned +nec
624
+ tree @svc depth=3 only=["**/*.ts"] exclude=["**/*.test.ts","**/* copy.ts"]
625
+ tree src depth=3 only=["src/services/**"] limit=80
626
+
627
+ Inspect Duplicates
628
+
629
+ Use duplicates to find repeated top-level names and exact declaration copies.
630
+ It is useful when many files may contain copied local helpers, duplicated types, or repeated declarations.
631
+
632
+ Start with summary for broad scopes.
633
+ Use locations when you need files/lines.
634
+ Use code only for duplicate names you are ready to inspect.
635
+
636
+ Controls:
637
+ scope, detail, limit, offset, kinds, entities, exclude, pathExclude
638
+
639
+ Specific:
640
+ entities only these duplicate names/selectors
641
+ exclude skip these names/selectors
642
+ pathExclude skip files or path/glob-like patterns
643
+ kinds selector kinds, e.g. f, t, c, etc.; kinds=[...]
644
+
645
+ Run:
646
+ aib inspect --stdin
647
+
648
+ Input:
649
+ duplicates scope=src detail=sum exclude=[config,baseUrl] kinds=[t,i] limit=20
650
+ duplicates scope=@svc detail=loc pathExclude=[src/generated,"**/* copy.ts"] limit=20
651
+
652
+ Mutation
653
+
654
+ Mutation commands change code and files through TS/IDE-backed operations.
655
+ Successful mutations update affected references and imports.
656
+
657
+ Semantic mutations change TypeScript symbols/declarations.
658
+ File mutations change file layout.
659
+
660
+ After a successful mutation, do not manually patch the same imports unless aib reports a follow-up or checks show a real issue.
661
+
662
+ If mutation imports do not match the repo style, run:
663
+ aib help config-setup.import-rules
664
+
665
+ AIB mutations are designed to reduce manual checking.
666
+ Your job is to express the intent in DSL.
667
+ AIB's job is to convert that intent into code changes.
668
+
669
+ Choose the mutation by intent:
670
+ rename - rename TypeScript symbols
671
+ move toFile - move TypeScript declarations into one file
672
+ modulePlan - split one source file into several modules
673
+ file move toDir - move whole files into directories
674
+ file rename - rename whole files.
675
+
676
+ Do not read all changed files just because a mutation touched them.
677
+ That defeats the purpose of using AIB for mechanical refactors.
678
+
679
+ If the command succeeds, the requested mechanical change was applied.
680
+ After failure or partial success, use the output to decide the next request.
681
+
682
+ When running mutation commands, set the harness timeout to 3 minutes.
683
+ If the harness stops waiting before final output appears, recover with:
684
+
685
+ aib execution status last
686
+
687
+ Modes:
688
+ preview inspect planned edits, then apply by id
689
+ apply write a previewed change
690
+ execute write immediately
691
+
692
+ Use execute for routine requests.
693
+
694
+ Use preview/apply when you are learning a mutation command, or when one request contains a large multi-step change that you want to inspect before writing files.
695
+ Typical examples: a huge modulePlan or refactor batch.
696
+
697
+ preview/apply uses more tool calls and more output tokens.
698
+ preview validates input and planned edits, but writing files can still hit a TS/IDE refactor error.
699
+ execute writes immediately and reports what changed.
700
+
701
+ If a mutation cannot be completed, aib reports the failed part.
702
+
703
+ Prefer batch DSL for related mutations.
704
+ One request can describe several related changes.
705
+
706
+ When a batch mutation partly fails, split the next request by failure type.
707
+
708
+ If the failure is wrong input, fix the selector/entity/file and run the corrected remaining intent.
709
+ If TS/IDE cannot apply one part of the batch, do not treat the whole intent as failed.
710
+ Run the next request without the failed part and let aib report any later failures.
711
+ Then decide whether failed parts need smaller requests or manual fallback.
712
+
713
+ Rename
714
+
715
+ Rename is for semantic symbol renames.
716
+ It follows TypeScript references.
717
+ It is not plain-text replacement.
718
+
719
+ Run:
720
+ aib rename execute --stdin
721
+
722
+ Input:
723
+ @file src/service.ts
724
+ rename oldName->newName OldService->NewService
725
+
726
+ Move
727
+
728
+ Move transfers one or more symbols from one file to another.
729
+ Move is semantic; it moves supported declarations and updates affected imports/references.
730
+ Use it for focused extraction into a single target file.
731
+ For large file splitting across several target files, use modulePlan.
732
+
733
+ If imports created by move do not match the repo style, run:
734
+ aib help config-setup.import-rules
735
+
736
+ Move several entities into one target:
737
+ Run:
738
+ aib move toFile execute --stdin
739
+
740
+ Input:
741
+ @source src/service.ts
742
+ move src/service.helpers.ts: oldHelper OtherHelper
743
+
744
+ Module Plan
745
+
746
+ modulePlan is for splitting large files into smaller modules.
747
+ Use it when a large file should be refactored into several target files.
748
+
749
+ modulePlan orchestrates semantic moves and updates affected references/imports.
750
+
751
+ If imports created by modulePlan do not match the repo style, run:
752
+ aib help config-setup.import-rules
753
+
754
+ Use +expectEmpty when your modulePlan intent is to move all declarations out of the source file.
755
+ It does not change the move behavior; it only asks output to report remaining source declarations if any remain.
756
+ Use it only when remaining declarations would mean the split did not match your intent.
757
+ Do not use it for partial extractions.
758
+
759
+ Split one large source file into several targets:
760
+ Run:
761
+ aib modulePlan execute --stdin
762
+
763
+ Input:
764
+ @source src/large-service.ts +expectEmpty
765
+ module src/large-service.types.ts: ServiceOptions ServiceMode
766
+ module src/large-service.core.ts: LargeService createLargeService
767
+
768
+ How inheritance works above:
769
+ @source sets the source file once.
770
+ +expectEmpty says no declarations should remain in the source after the plan.
771
+ Each module line declares one target and the entities that should move there.
772
+
773
+ Refactor Batch
774
+
775
+ refactor batch runs related mutation requests together.
776
+ Use it when one workflow needs ordered steps, such as rename plus move.
777
+
778
+ Use modulePlan when the main intent is only to split one large file into target modules.
779
+ Use refactor batch when the split also includes coordinated renames or mixed mutation steps.
780
+
781
+ Example: rename and move in one request
782
+
783
+ Run:
784
+ aib refactor batch execute --stdin
785
+
786
+ Input:
787
+ @source src/service.ts
788
+ rename oldHelper->newHelper oldType->newType
789
+ move src/service.helpers.ts: newHelper
790
+ move src/service.types.ts: newType
791
+
792
+ This keeps related mutation intent together:
793
+ rename first, then move the renamed symbols.
794
+
795
+ File Move and File Rename
796
+
797
+ Use file move/rename when the filesystem layout is the intent.
798
+ Do not change filesystem layout manually.
799
+
800
+ Focused topics:
801
+ aib help file.move file.rename
802
+
803
+ Layout smell trigger:
804
+ If a directory has many related files sharing a prefix, mixed responsibilities, or files that should be grouped by feature, read:
805
+ aib help recipe.file-layout
806
+
807
+ Imports Normalize
808
+
809
+ Use imports normalize for explicit import-style cleanup.
810
+
811
+ Focused topic:
812
+ aib help imports.normalize
813
+
814
+ JS/TS compatibility
815
+
816
+ With tsconfig:
817
+ TS/TSX inspect + rename + move + modulePlan
818
+ JS/MJS/JSX ESM inspect + rename + move + modulePlan
819
+ CJS / JS CommonJS inspect + rename
820
+
821
+ Without tsconfig:
822
+ JS/MJS/JSX/CJS inspect only
823
+ rename/move/modulePlan require tsconfig
824
+
825
+ CommonJS means .cjs or module.exports / exports.*.
826
+
827
+ View Hidden Output
828
+
829
+ AIB keeps large outputs compact.
830
+ When part of a result is hidden, output may include:
831
+
832
+ view: aib:res_<id>
833
+
834
+ Use view to fetch the hidden part without repeating what you already saw.
835
+
836
+ When a batch has several hidden results of the same kind, output may include:
837
+
838
+ view all code: aib:res_<id>
839
+ view all members: aib:res_<id>
840
+
841
+ A `view all` handle covers hidden parts from all results of that kind.
842
+
843
+ For code views, narrow what you fetch:
844
+ only show only these hidden code entities
845
+ except show all hidden code except these entities
846
+
847
+ Run:
848
+ aib view --stdin
849
+
850
+ Input:
851
+ view aib:res_<id_1> only=[ClassA.{bigA,bigB},bigQ,ClassB.bigB]
852
+ view aib:res_<id_2> except=[ClassC.bigC]
853
+
854
+ Inline:
855
+ aib view aib:res_<id_1> --only bigQ --only "ClassA.{bigA,bigB}"
856
+ aib view aib:res_<id_2> --except ClassB.bigB --except ClassC.bigC
857
+
858
+ Quick Read
859
+
860
+ Use qr for cross-OS quick reads of text files: ts, js, cmd, sh, json, log, txt, ndjson, etc.
861
+ Use it for compact line windows and batching.
862
+ qr supports AIB path aliases.
863
+
864
+ It is not a replacement for inspect.
865
+ Use it as a token-efficient way to read text data when semantic inspect is not needed.
866
+
867
+ For focused text reads, prefer qr over cat/Get-Content/type, especially when aliases, line windows, or batching help.
868
+ Use shell reads only when piping into shell tooling or qr is unavailable.
869
+
870
+ Controls:
871
+ h=N head; first N lines
872
+ t=N tail; last N lines
873
+ o=N l=N range; starting line and line count
874
+ all whole file
875
+
876
+ If no window is provided, qr uses h=80.
877
+ If all is present, it wins over other window flags.
878
+
879
+ Inline:
880
+ aib qr @scripts/a.txt h=80 @scripts/b.py o=300 l=50 @logs/app.log all
881
+
882
+ aib rg
883
+
884
+ Run ripgrep through AIB.
885
+
886
+ Regular rg:
887
+ rg <args>
888
+
889
+ AIB rg:
890
+ aib rg -- <args>
891
+
892
+ Everything after `--` is passed as normal ripgrep arguments.
893
+ Use the same args you would pass to `rg`.
894
+ Use normal paths in input. Do not use AIB path aliases here.
895
+
896
+ Examples:
897
+ rg -n "TODO" src/core
898
+ aib rg -- -n "TODO" src/core
899
+
900
+ rg -n --column "SomeValue" ws/commands ws/config
901
+ aib rg -- -n --column "SomeValue" ws/commands ws/config
902
+
903
+ Need to see TypeScript configs in the repo:
904
+ aib reveal tsconfigs
905
+
906
+ Need to see TypeScript aliases across the repo:
907
+ aib reveal tsaliases