@automaton-labs/aib 0.0.3 → 0.0.5
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.
- package/dist/bin/cli.js +2 -2
- package/dist/commands/config-command.js +1 -3
- package/dist/commands/config-output.js +8 -0
- package/dist/commands/help-command.js +7 -3
- package/dist/commands/init-workspace.js +1 -3
- package/dist/commands/inspect-tree.js +3 -3
- package/dist/commands/reveal-command.js +5 -0
- package/dist/commands/session-workspace.js +4 -4
- package/dist/commands/sync-command.js +2 -2
- package/dist/config/local-config.js +3 -3
- package/dist/config/resolve-command-alias.js +1 -1
- package/dist/config/tsconfig-discovery.js +1 -0
- package/dist/config/workspace-root.js +3 -3
- package/dist/config/workspace-state.js +1 -1
- package/dist/dsl/aib-dsl.js +1 -1
- package/dist/help/bootstrap.md +108 -94
- package/dist/help/docs/config-setup.aliases.md +56 -0
- package/dist/help/docs/config-setup.excludes.md +45 -0
- package/dist/help/docs/config-setup.import-normalize.md +86 -0
- package/dist/help/docs/config-setup.import-rules.md +96 -0
- package/dist/help/docs/config-setup.tsconfigs.md +33 -0
- package/dist/help/docs/first-setup.md +292 -0
- package/dist/help/docs/help-protocol.md +26 -0
- package/dist/help/docs/inspect.cycles.md +38 -0
- package/dist/help/docs/inspect.md +1 -0
- package/dist/help/docs/inspect.tree.md +8 -6
- package/dist/help/docs/modulePlan.md +3 -0
- package/dist/help/docs/move.md +3 -0
- package/dist/help/docs/mutation.md +3 -0
- package/dist/help/docs/patterns.md +16 -118
- package/dist/help/docs/qr.md +6 -2
- package/dist/help/docs/quick-map.md +30 -0
- package/dist/help/docs/reveal.md +30 -0
- package/dist/help/dsl/bootstrap.md +108 -94
- package/dist/help/dsl/docs/config-setup.aliases.md +56 -0
- package/dist/help/dsl/docs/config-setup.excludes.md +45 -0
- package/dist/help/dsl/docs/config-setup.import-normalize.md +86 -0
- package/dist/help/dsl/docs/config-setup.import-rules.md +96 -0
- package/dist/help/dsl/docs/config-setup.tsconfigs.md +33 -0
- package/dist/help/dsl/docs/first-setup.md +292 -0
- package/dist/help/dsl/docs/help-protocol.md +26 -0
- package/dist/help/dsl/docs/inspect.cycles.md +38 -0
- package/dist/help/dsl/docs/inspect.md +1 -0
- package/dist/help/dsl/docs/inspect.tree.md +8 -6
- package/dist/help/dsl/docs/modulePlan.md +3 -0
- package/dist/help/dsl/docs/move.md +3 -0
- package/dist/help/dsl/docs/mutation.md +3 -0
- package/dist/help/dsl/docs/patterns.md +16 -118
- package/dist/help/dsl/docs/qr.md +6 -2
- package/dist/help/dsl/docs/quick-map.md +30 -0
- package/dist/help/dsl/docs/reveal.md +30 -0
- package/dist/help/dsl/full.md +108 -94
- package/dist/help/dsl/topics/config-setup.aliases.md +54 -0
- package/dist/help/dsl/topics/config-setup.excludes.md +43 -0
- package/dist/help/dsl/topics/config-setup.import-normalize.md +84 -0
- package/dist/help/dsl/topics/config-setup.import-rules.md +94 -0
- package/dist/help/dsl/topics/config-setup.tsconfigs.md +31 -0
- package/dist/help/dsl/topics/first-setup.md +290 -0
- package/dist/help/dsl/topics/help-protocol.md +24 -0
- package/dist/help/dsl/topics/inspect.cycles.md +36 -0
- package/dist/help/dsl/topics/inspect.md +1 -0
- package/dist/help/dsl/topics/inspect.tree.md +8 -6
- package/dist/help/dsl/topics/modulePlan.md +3 -0
- package/dist/help/dsl/topics/move.md +3 -0
- package/dist/help/dsl/topics/mutation.md +3 -0
- package/dist/help/dsl/topics/patterns.md +16 -118
- package/dist/help/dsl/topics/qr.md +6 -2
- package/dist/help/dsl/topics/quick-map.md +28 -0
- package/dist/help/dsl/topics/reveal.md +28 -0
- package/dist/help/full.md +108 -94
- package/dist/help/help-meta.json +57 -17
- package/dist/help/index.md +60 -0
- package/dist/help/json/bootstrap.md +108 -94
- package/dist/help/json/docs/config-setup.aliases.md +56 -0
- package/dist/help/json/docs/config-setup.excludes.md +45 -0
- package/dist/help/json/docs/config-setup.import-normalize.md +86 -0
- package/dist/help/json/docs/config-setup.import-rules.md +96 -0
- package/dist/help/json/docs/config-setup.tsconfigs.md +33 -0
- package/dist/help/json/docs/first-setup.md +292 -0
- package/dist/help/json/docs/help-protocol.md +26 -0
- package/dist/help/json/docs/inspect.cycles.md +38 -0
- package/dist/help/json/docs/inspect.md +1 -0
- package/dist/help/json/docs/inspect.tree.md +8 -6
- package/dist/help/json/docs/modulePlan.md +3 -0
- package/dist/help/json/docs/move.md +3 -0
- package/dist/help/json/docs/mutation.md +3 -0
- package/dist/help/json/docs/patterns.md +16 -118
- package/dist/help/json/docs/qr.md +6 -2
- package/dist/help/json/docs/quick-map.md +30 -0
- package/dist/help/json/docs/reveal.md +30 -0
- package/dist/help/json/full.md +108 -94
- package/dist/help/json/topics/config-setup.aliases.md +54 -0
- package/dist/help/json/topics/config-setup.excludes.md +43 -0
- package/dist/help/json/topics/config-setup.import-normalize.md +84 -0
- package/dist/help/json/topics/config-setup.import-rules.md +94 -0
- package/dist/help/json/topics/config-setup.tsconfigs.md +31 -0
- package/dist/help/json/topics/first-setup.md +290 -0
- package/dist/help/json/topics/help-protocol.md +24 -0
- package/dist/help/json/topics/inspect.cycles.md +36 -0
- package/dist/help/json/topics/inspect.md +1 -0
- package/dist/help/json/topics/inspect.tree.md +8 -6
- package/dist/help/json/topics/modulePlan.md +3 -0
- package/dist/help/json/topics/move.md +3 -0
- package/dist/help/json/topics/mutation.md +3 -0
- package/dist/help/json/topics/patterns.md +16 -118
- package/dist/help/json/topics/qr.md +6 -2
- package/dist/help/json/topics/quick-map.md +28 -0
- package/dist/help/json/topics/reveal.md +28 -0
- package/dist/help/topics/config-setup.aliases.md +54 -0
- package/dist/help/topics/config-setup.excludes.md +43 -0
- package/dist/help/topics/config-setup.import-normalize.md +84 -0
- package/dist/help/topics/config-setup.import-rules.md +94 -0
- package/dist/help/topics/config-setup.tsconfigs.md +31 -0
- package/dist/help/topics/first-setup.md +290 -0
- package/dist/help/topics/help-protocol.md +24 -0
- package/dist/help/topics/inspect.cycles.md +36 -0
- package/dist/help/topics/inspect.md +1 -0
- package/dist/help/topics/inspect.tree.md +8 -6
- package/dist/help/topics/modulePlan.md +3 -0
- package/dist/help/topics/move.md +3 -0
- package/dist/help/topics/mutation.md +3 -0
- package/dist/help/topics/patterns.md +16 -118
- package/dist/help/topics/qr.md +6 -2
- package/dist/help/topics/quick-map.md +28 -0
- package/dist/help/topics/reveal.md +28 -0
- package/dist/runtime/run-command.js +1 -1
- package/dist/session/server.js +3 -3
- package/dist/shared/diagnostic-catalog.js +1 -1
- package/dist/shared/errors.js +6 -5
- package/extension/vscode-refactor-bridge-extension.vsix +0 -0
- package/package.json +1 -1
- package/runtimes/launcher/win-x64/aib.exe +0 -0
- package/scripts/install-windows-launcher.cjs +1 -0
- package/scripts/provision-runtime.cjs +99 -41
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
If you have not just checked the full config, check current aliases:
|
|
2
|
+
|
|
3
|
+
aib config aliases
|
|
4
|
+
|
|
5
|
+
pathAliases define short request aliases for paths agents repeat in AIB commands.
|
|
6
|
+
Use them to reduce input tokens for repeated inspect and mutation work.
|
|
7
|
+
|
|
8
|
+
Aliases are for AIB request paths.
|
|
9
|
+
They do not change TypeScript imports by themselves.
|
|
10
|
+
For import style after mutations, use importRules.
|
|
11
|
+
|
|
12
|
+
Check TypeScript aliases for hints:
|
|
13
|
+
|
|
14
|
+
aib reveal tsaliases
|
|
15
|
+
|
|
16
|
+
Use this to see existing tsconfig paths and baseUrl values.
|
|
17
|
+
They can reveal stable work areas, but they are not a list to copy.
|
|
18
|
+
|
|
19
|
+
Add pathAliases for long paths that are likely to appear repeatedly in AIB requests.
|
|
20
|
+
Prefer aliases for real work areas, package roots, or deep directories.
|
|
21
|
+
|
|
22
|
+
A good alias:
|
|
23
|
+
- saves meaningful path tokens;
|
|
24
|
+
- points to a stable work area;
|
|
25
|
+
- is easy to recognize later.
|
|
26
|
+
|
|
27
|
+
A bad alias:
|
|
28
|
+
- duplicates a short path like "src": "src", "packages": "packages", "scripts": "scripts";
|
|
29
|
+
- points to a rarely used folder;
|
|
30
|
+
- mirrors the directory tree without a workflow reason.
|
|
31
|
+
|
|
32
|
+
Having 20-30 good aliases is fine for a large repo or monorepo.
|
|
33
|
+
|
|
34
|
+
Example:
|
|
35
|
+
|
|
36
|
+
"pathAliases": {
|
|
37
|
+
"wstore": "apps/web/src/shared/store",
|
|
38
|
+
"wapi": "apps/web/src/shared/api",
|
|
39
|
+
"whooks": "apps/web/src/shared/utils/hooks",
|
|
40
|
+
"pmail": "packages/email/src",
|
|
41
|
+
"putils": "packages/utils/src",
|
|
42
|
+
"arules": "docs/agent/rules"
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
After editing aib.json, run:
|
|
46
|
+
|
|
47
|
+
aib sync
|
|
48
|
+
|
|
49
|
+
Verify aliases with a small tree or inspect request:
|
|
50
|
+
|
|
51
|
+
aib inspect --stdin
|
|
52
|
+
|
|
53
|
+
Input:
|
|
54
|
+
tree @<alias> depth=3 +onlyDirs limit=80
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
Tree excludes affect directory and file discovery output.
|
|
2
|
+
Graph excludes affect graph counts, hubs, entrypoints, leaves, edges, imports, importedBy, and saved graph views.
|
|
3
|
+
|
|
4
|
+
Built-in excludes already skip common noise such as node_modules, .git, dist, build, out, and .tmp.
|
|
5
|
+
Add config excludes for repository-specific noise.
|
|
6
|
+
|
|
7
|
+
For example, if the user often creates hard-copy directories or backup files before risky edits, those copies can make tree and graph output noisy.
|
|
8
|
+
Exclude them explicitly:
|
|
9
|
+
|
|
10
|
+
"inspect.tree.onlyDirs.exclude": [
|
|
11
|
+
"**/*copy",
|
|
12
|
+
"**/*copy/**"
|
|
13
|
+
],
|
|
14
|
+
"inspect.tree.files.exclude": [
|
|
15
|
+
"**/* copy.ts",
|
|
16
|
+
"**/*.generated.ts"
|
|
17
|
+
],
|
|
18
|
+
"inspect.graph.exclude": [
|
|
19
|
+
"**/* copy.ts",
|
|
20
|
+
"**/*.generated.ts",
|
|
21
|
+
"src/generated/**"
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
Prefer narrow patterns for known noise:
|
|
25
|
+
- generated files;
|
|
26
|
+
- local copy/backup folders;
|
|
27
|
+
- build artifacts not already skipped by defaults;
|
|
28
|
+
- vendored or checked-in output.
|
|
29
|
+
|
|
30
|
+
These are common cases, not mandatory rules.
|
|
31
|
+
If the repository needs one of these areas for reasoning or mutation impact checks, do not exclude it.
|
|
32
|
+
|
|
33
|
+
Do not exclude broad source areas to make output smaller.
|
|
34
|
+
If output is too large, use scope, depth, limit, graph view, or graph toggles first.
|
|
35
|
+
|
|
36
|
+
After editing aib.json, run:
|
|
37
|
+
|
|
38
|
+
aib sync
|
|
39
|
+
|
|
40
|
+
Then verify with a compact tree request and the graph view that was noisy.
|
|
41
|
+
|
|
42
|
+
If excluded paths still appear, check the glob pattern against repo-relative paths.
|
|
43
|
+
If important source disappeared, narrow or remove the exclude.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
Configure import normalization intent.
|
|
2
|
+
|
|
3
|
+
importNormalize defines default normalization rules for explicit aib imports normalize commands.
|
|
4
|
+
Use it before broad or important import cleanup so the scope, target style, preferred alias, and excludes are stored in aib.json instead of repeated in command arguments.
|
|
5
|
+
|
|
6
|
+
It does not run automatically during move/modulePlan.
|
|
7
|
+
Use importRules for mutation-time import cleanup.
|
|
8
|
+
|
|
9
|
+
Set importNormalize when the intended cleanup has project meaning:
|
|
10
|
+
- adopting a new tsconfig alias across a project area;
|
|
11
|
+
- converting an area to aliases;
|
|
12
|
+
- converting scripts/tools or extracted modules to relative imports;
|
|
13
|
+
- excluding generated or bundled output from normalization.
|
|
14
|
+
|
|
15
|
+
For tiny one-file checks, inline options are fine.
|
|
16
|
+
Before wider cleanup, put the intended rule in config and preview the smallest useful scope.
|
|
17
|
+
|
|
18
|
+
Fields:
|
|
19
|
+
scope repo-relative file or directory scope; most specific scope wins
|
|
20
|
+
to relative|alias|shortestAlias
|
|
21
|
+
preferAlias tsconfig paths pattern used when to=alias
|
|
22
|
+
exclude files, directories, or glob-like patterns to skip
|
|
23
|
+
|
|
24
|
+
to:
|
|
25
|
+
relative rewrite resolved local imports to relative paths
|
|
26
|
+
alias rewrite resolved local imports to a matching tsconfig alias
|
|
27
|
+
shortestAlias rewrite to the shortest valid alias specifier
|
|
28
|
+
|
|
29
|
+
preferAlias:
|
|
30
|
+
@shared/* prefer one alias pattern when several aliases can resolve the same file
|
|
31
|
+
|
|
32
|
+
Alias cleanup:
|
|
33
|
+
|
|
34
|
+
"importNormalize": [
|
|
35
|
+
{
|
|
36
|
+
"scope": "src",
|
|
37
|
+
"to": "shortestAlias",
|
|
38
|
+
"preferAlias": "@/*",
|
|
39
|
+
"exclude": [
|
|
40
|
+
"src/generated",
|
|
41
|
+
"src/**/dist"
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
Relative cleanup for scripts/tools:
|
|
47
|
+
|
|
48
|
+
"importNormalize": [
|
|
49
|
+
{
|
|
50
|
+
"scope": "scripts",
|
|
51
|
+
"to": "relative",
|
|
52
|
+
"exclude": [
|
|
53
|
+
"scripts/**/*.cjs",
|
|
54
|
+
"scripts/**/*.mjs"
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
|
|
59
|
+
If you have not just checked config rules, run:
|
|
60
|
+
|
|
61
|
+
aib config rules
|
|
62
|
+
|
|
63
|
+
After editing aib.json, run:
|
|
64
|
+
|
|
65
|
+
aib sync
|
|
66
|
+
|
|
67
|
+
Then preview the smallest useful scope before applying:
|
|
68
|
+
|
|
69
|
+
aib imports normalize preview <scope>
|
|
70
|
+
|
|
71
|
+
Preview shows counts, sample import rewrites, a planId, and the apply command.
|
|
72
|
+
It does not change project files.
|
|
73
|
+
|
|
74
|
+
If preview changes imports outside the intended area, narrow scope or add exclude.
|
|
75
|
+
|
|
76
|
+
If preview does not use the expected alias, check tsconfig aliases:
|
|
77
|
+
|
|
78
|
+
aib reveal tsaliases
|
|
79
|
+
|
|
80
|
+
If the config and aliases look correct but preview still looks stale or strange, run:
|
|
81
|
+
|
|
82
|
+
aib sync
|
|
83
|
+
|
|
84
|
+
Then preview again.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
Use this when move/modulePlan creates imports that do not match the repository style.
|
|
2
|
+
|
|
3
|
+
Do not keep fixing the same generated import style by hand.
|
|
4
|
+
Tune importRules, sync config, then retry the smallest useful mutation before continuing larger mutation work.
|
|
5
|
+
|
|
6
|
+
Check current config:
|
|
7
|
+
|
|
8
|
+
aib config rules
|
|
9
|
+
|
|
10
|
+
importRules control imports created or expanded by move/modulePlan mutation cleanup.
|
|
11
|
+
They do not rewrite the whole project.
|
|
12
|
+
|
|
13
|
+
AIB starts from IDE/TS import preferences.
|
|
14
|
+
For mutation cleanup, matching importRules in aib.json take priority.
|
|
15
|
+
Do not assume IDE/TS defaults match the repo style.
|
|
16
|
+
|
|
17
|
+
Fields:
|
|
18
|
+
scope repo-relative file or directory scope; most specific scope wins
|
|
19
|
+
specifier relative|shortest|project-relative|non-relative
|
|
20
|
+
ending auto|minimal|index|js
|
|
21
|
+
builtin node|bare
|
|
22
|
+
unusedImports remove|preserve
|
|
23
|
+
|
|
24
|
+
Defaults:
|
|
25
|
+
specifier omitted IDE/TS decides
|
|
26
|
+
ending omitted IDE/TS decides
|
|
27
|
+
builtin omitted keep TS/project builtin style
|
|
28
|
+
unusedImports omitted keep unused imports
|
|
29
|
+
|
|
30
|
+
specifier:
|
|
31
|
+
relative best for local relative imports
|
|
32
|
+
shortest best for shortest valid alias/path output
|
|
33
|
+
project-relative best for root-relative project imports
|
|
34
|
+
non-relative best for package or alias imports
|
|
35
|
+
|
|
36
|
+
ending:
|
|
37
|
+
minimal best for extensionless TS imports
|
|
38
|
+
js best for ESM-style TS projects that require .js
|
|
39
|
+
auto leaves the decision to TypeScript
|
|
40
|
+
index best for explicit index import style
|
|
41
|
+
|
|
42
|
+
builtin:
|
|
43
|
+
node path -> node:path; best for explicit Node builtin imports
|
|
44
|
+
bare node:path -> path; best for bare Node builtin imports
|
|
45
|
+
omit field keeps TypeScript/project output; add builtin if agents keep fixing this manually
|
|
46
|
+
|
|
47
|
+
unusedImports:
|
|
48
|
+
remove clean unused imports in mutation-touched files
|
|
49
|
+
preserve keep unused imports
|
|
50
|
+
omit same as preserve
|
|
51
|
+
|
|
52
|
+
Mutation-touched files are files where TS produced edits: source/target files and any reference/update files TS changed.
|
|
53
|
+
Recommended value: remove
|
|
54
|
+
|
|
55
|
+
If the repository has one import style, use one broad rule:
|
|
56
|
+
|
|
57
|
+
"importRules": [
|
|
58
|
+
{
|
|
59
|
+
"scope": ".",
|
|
60
|
+
"specifier": "shortest",
|
|
61
|
+
"ending": "auto",
|
|
62
|
+
"builtin": "node",
|
|
63
|
+
"unusedImports": "remove"
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
Use scoped rules only when areas differ by style, for example packages use aliases but scripts use relative imports:
|
|
68
|
+
|
|
69
|
+
"importRules": [
|
|
70
|
+
{
|
|
71
|
+
"scope": "packages",
|
|
72
|
+
"specifier": "shortest",
|
|
73
|
+
"ending": "auto",
|
|
74
|
+
"builtin": "node",
|
|
75
|
+
"unusedImports": "remove"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"scope": "scripts",
|
|
79
|
+
"specifier": "relative",
|
|
80
|
+
"ending": "auto",
|
|
81
|
+
"builtin": "node",
|
|
82
|
+
"unusedImports": "remove"
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
|
|
86
|
+
Use the most specific scope that matches the real convention.
|
|
87
|
+
Do not add scoped rules just because directories exist.
|
|
88
|
+
|
|
89
|
+
After editing aib.json, run:
|
|
90
|
+
|
|
91
|
+
aib sync
|
|
92
|
+
|
|
93
|
+
Then rerun the smallest affected move/modulePlan preview or execute request.
|
|
94
|
+
If imports are still wrong, update importRules again before doing more manual cleanup.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
AIB syncs and watches visible tsconfigs.
|
|
2
|
+
Keep real app/package configs visible.
|
|
3
|
+
Exclude nested workspaces, seed projects, snapshots, backups, copied apps, or other non-primary projects.
|
|
4
|
+
|
|
5
|
+
Do not exclude real package/app configs just to reduce output.
|
|
6
|
+
|
|
7
|
+
Check which TypeScript configs AIB will sync and watch:
|
|
8
|
+
|
|
9
|
+
aib reveal tsconfigs +all
|
|
10
|
+
|
|
11
|
+
If output includes non-primary projects, exclude them:
|
|
12
|
+
|
|
13
|
+
"sync.tsconfig.exclude": [
|
|
14
|
+
"dev-seed/**",
|
|
15
|
+
"snapshots/**"
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
After editing aib.json, run:
|
|
19
|
+
|
|
20
|
+
aib sync
|
|
21
|
+
|
|
22
|
+
Then check again:
|
|
23
|
+
|
|
24
|
+
aib reveal tsconfigs +all
|
|
25
|
+
|
|
26
|
+
Visible tsconfigs should describe the active project surface.
|
|
27
|
+
Excluded tsconfigs should be things the agent should not use for setup decisions.
|
|
28
|
+
|
|
29
|
+
Use +nec only when you need to compare visible configs with config-excluded configs:
|
|
30
|
+
|
|
31
|
+
aib reveal tsconfigs +nec
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
Use this when the user asks you to set up AIB for a repository.
|
|
2
|
+
|
|
3
|
+
If you have not loaded the current bootstrap, run:
|
|
4
|
+
aib help bootstrap
|
|
5
|
+
|
|
6
|
+
1. Detect existing setup
|
|
7
|
+
|
|
8
|
+
Run:
|
|
9
|
+
|
|
10
|
+
aib config
|
|
11
|
+
|
|
12
|
+
If AIB reports that no config exists, continue to initialization.
|
|
13
|
+
|
|
14
|
+
If config exists:
|
|
15
|
+
- verify that root is the intended repository root;
|
|
16
|
+
- keep existing settings if they are still valid and useful;
|
|
17
|
+
- only add missing project-specific aliases, rules, or excludes;
|
|
18
|
+
- do not regenerate aib.json.
|
|
19
|
+
|
|
20
|
+
If config resolves from a parent directory, verify that this is intentional.
|
|
21
|
+
Do not continue setup inside a nested worktree or copied project if AIB is using the parent repository config.
|
|
22
|
+
|
|
23
|
+
2. Initialize if missing
|
|
24
|
+
|
|
25
|
+
From the repository root, run:
|
|
26
|
+
|
|
27
|
+
aib init --session-dir .tmp/aib
|
|
28
|
+
|
|
29
|
+
Use the output to check:
|
|
30
|
+
- root is the intended repository root;
|
|
31
|
+
- config is <root>/aib.json;
|
|
32
|
+
- sessionDir is set;
|
|
33
|
+
- cleanup/deletion/runtime TTLs are shown;
|
|
34
|
+
- not set includes the setup sections that still need decisions.
|
|
35
|
+
|
|
36
|
+
Do not create sessions yet.
|
|
37
|
+
|
|
38
|
+
3. Configure repository-specific behavior
|
|
39
|
+
|
|
40
|
+
Edit aib.json directly.
|
|
41
|
+
|
|
42
|
+
Keep existing settings if they are still valid and useful.
|
|
43
|
+
Update settings that are stale, noisy, too broad, or no longer match the repository.
|
|
44
|
+
|
|
45
|
+
Use not set as the checklist for the setup sections below.
|
|
46
|
+
|
|
47
|
+
4. Configure path aliases
|
|
48
|
+
|
|
49
|
+
Check TypeScript aliases for hints:
|
|
50
|
+
|
|
51
|
+
aib reveal tsaliases
|
|
52
|
+
|
|
53
|
+
Use this to see existing tsconfig paths and baseUrl values.
|
|
54
|
+
They can reveal stable work areas, but they are not a list to copy.
|
|
55
|
+
|
|
56
|
+
Add pathAliases for long paths that are likely to appear repeatedly in AIB requests.
|
|
57
|
+
Prefer aliases for real work areas, package roots, or deep directories.
|
|
58
|
+
|
|
59
|
+
A good alias:
|
|
60
|
+
- saves meaningful path tokens;
|
|
61
|
+
- points to a stable work area;
|
|
62
|
+
- is easy to recognize later.
|
|
63
|
+
|
|
64
|
+
A bad alias:
|
|
65
|
+
- duplicates a short path like "src": "src", "packages": "packages", "scripts": "scripts";
|
|
66
|
+
- points to a rarely used folder;
|
|
67
|
+
- mirrors the directory tree without a workflow reason.
|
|
68
|
+
|
|
69
|
+
Having 20-30 good aliases is fine for a large repo or monorepo.
|
|
70
|
+
|
|
71
|
+
Example:
|
|
72
|
+
|
|
73
|
+
"pathAliases": {
|
|
74
|
+
"wstore": "apps/web/src/shared/store",
|
|
75
|
+
"wapi": "apps/web/src/shared/api",
|
|
76
|
+
"whooks": "apps/web/src/shared/utils/hooks",
|
|
77
|
+
"pmail": "packages/email/src",
|
|
78
|
+
"putils": "packages/utils/src",
|
|
79
|
+
"arules": "docs/agent/rules"
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
5. Configure import rules
|
|
83
|
+
|
|
84
|
+
importRules control imports created or expanded by move/modulePlan mutation cleanup.
|
|
85
|
+
They do not rewrite the whole project.
|
|
86
|
+
|
|
87
|
+
AIB starts from IDE/TS import preferences.
|
|
88
|
+
For mutation cleanup, matching importRules in aib.json take priority.
|
|
89
|
+
Do not assume IDE/TS defaults match the repo style.
|
|
90
|
+
|
|
91
|
+
Fields:
|
|
92
|
+
scope repo-relative file or directory scope; most specific scope wins
|
|
93
|
+
specifier relative|shortest|project-relative|non-relative
|
|
94
|
+
ending auto|minimal|index|js
|
|
95
|
+
builtin node|bare
|
|
96
|
+
unusedImports remove|preserve
|
|
97
|
+
|
|
98
|
+
Defaults:
|
|
99
|
+
specifier omitted IDE/TS decides
|
|
100
|
+
ending omitted IDE/TS decides
|
|
101
|
+
builtin omitted keep TS/project builtin style
|
|
102
|
+
unusedImports omitted keep unused imports
|
|
103
|
+
|
|
104
|
+
specifier:
|
|
105
|
+
relative best for local relative imports
|
|
106
|
+
shortest best for shortest valid alias/path output
|
|
107
|
+
project-relative best for root-relative project imports
|
|
108
|
+
non-relative best for package or alias imports
|
|
109
|
+
|
|
110
|
+
ending:
|
|
111
|
+
minimal best for extensionless TS imports
|
|
112
|
+
js best for ESM-style TS projects that require .js
|
|
113
|
+
auto leaves the decision to TypeScript
|
|
114
|
+
index best for explicit index import style
|
|
115
|
+
|
|
116
|
+
builtin:
|
|
117
|
+
node path -> node:path; best for explicit Node builtin imports
|
|
118
|
+
bare node:path -> path; best for bare Node builtin imports
|
|
119
|
+
omit field keeps TypeScript/project output; add builtin if agents keep fixing this manually
|
|
120
|
+
|
|
121
|
+
unusedImports:
|
|
122
|
+
remove clean unused imports in mutation-touched files
|
|
123
|
+
preserve keep unused imports
|
|
124
|
+
omit same as preserve
|
|
125
|
+
|
|
126
|
+
Mutation-touched files are files where TS produced edits: source/target files and any reference/update files TS changed.
|
|
127
|
+
Recommended value: remove
|
|
128
|
+
|
|
129
|
+
If the repository has one import style, use one broad rule:
|
|
130
|
+
|
|
131
|
+
"importRules": [
|
|
132
|
+
{
|
|
133
|
+
"scope": ".",
|
|
134
|
+
"specifier": "shortest",
|
|
135
|
+
"ending": "auto",
|
|
136
|
+
"builtin": "node",
|
|
137
|
+
"unusedImports": "remove"
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
|
|
141
|
+
Use scoped rules only when areas differ by style, for example packages use aliases but scripts use relative imports:
|
|
142
|
+
|
|
143
|
+
"importRules": [
|
|
144
|
+
{
|
|
145
|
+
"scope": "packages",
|
|
146
|
+
"specifier": "shortest",
|
|
147
|
+
"ending": "auto",
|
|
148
|
+
"builtin": "node",
|
|
149
|
+
"unusedImports": "remove"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"scope": "scripts",
|
|
153
|
+
"specifier": "relative",
|
|
154
|
+
"ending": "auto",
|
|
155
|
+
"builtin": "node",
|
|
156
|
+
"unusedImports": "remove"
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
|
|
160
|
+
Use the most specific scope that matches the real convention.
|
|
161
|
+
Do not add scoped rules just because directories exist.
|
|
162
|
+
|
|
163
|
+
6. Configure tree and graph excludes
|
|
164
|
+
|
|
165
|
+
Tree excludes affect directory and file discovery output.
|
|
166
|
+
Graph excludes affect graph counts, hubs, entrypoints, leaves, edges, imports, importedBy, and saved graph views.
|
|
167
|
+
|
|
168
|
+
Built-in excludes already skip common noise such as node_modules, .git, dist, build, out, and .tmp.
|
|
169
|
+
Add config excludes for repository-specific noise.
|
|
170
|
+
|
|
171
|
+
For example, if the user often creates hard-copy directories or backup files before risky edits, those copies can make tree and graph output noisy.
|
|
172
|
+
Exclude them explicitly:
|
|
173
|
+
|
|
174
|
+
"inspect.tree.onlyDirs.exclude": [
|
|
175
|
+
"**/*copy",
|
|
176
|
+
"**/*copy/**"
|
|
177
|
+
],
|
|
178
|
+
"inspect.tree.files.exclude": [
|
|
179
|
+
"**/* copy.ts",
|
|
180
|
+
"**/*.generated.ts"
|
|
181
|
+
],
|
|
182
|
+
"inspect.graph.exclude": [
|
|
183
|
+
"**/* copy.ts",
|
|
184
|
+
"**/*.generated.ts",
|
|
185
|
+
"src/generated/**"
|
|
186
|
+
]
|
|
187
|
+
|
|
188
|
+
Prefer narrow patterns for known noise:
|
|
189
|
+
- generated files;
|
|
190
|
+
- local copy/backup folders;
|
|
191
|
+
- build artifacts not already skipped by defaults;
|
|
192
|
+
- vendored or checked-in output.
|
|
193
|
+
|
|
194
|
+
These are common cases, not mandatory rules.
|
|
195
|
+
If the repository needs one of these areas for reasoning or mutation impact checks, do not exclude it.
|
|
196
|
+
|
|
197
|
+
Do not exclude broad source areas to make output smaller.
|
|
198
|
+
If output is too large, use scope, depth, limit, graph view, or graph toggles first.
|
|
199
|
+
|
|
200
|
+
7. Configure TypeScript config discovery
|
|
201
|
+
|
|
202
|
+
AIB syncs and watches visible tsconfigs.
|
|
203
|
+
Keep real app/package configs visible.
|
|
204
|
+
Exclude nested workspaces, seed projects, snapshots, backups, copied apps, or other non-primary projects.
|
|
205
|
+
|
|
206
|
+
Do not exclude real package/app configs just to reduce output.
|
|
207
|
+
|
|
208
|
+
Check which TypeScript configs AIB will sync and watch:
|
|
209
|
+
|
|
210
|
+
aib reveal tsconfigs +all
|
|
211
|
+
|
|
212
|
+
If output includes non-primary projects, exclude them:
|
|
213
|
+
|
|
214
|
+
"sync.tsconfig.exclude": [
|
|
215
|
+
"dev-seed/**",
|
|
216
|
+
"snapshots/**"
|
|
217
|
+
]
|
|
218
|
+
|
|
219
|
+
After editing aib.json, run:
|
|
220
|
+
|
|
221
|
+
aib sync
|
|
222
|
+
|
|
223
|
+
Then check again:
|
|
224
|
+
|
|
225
|
+
aib reveal tsconfigs +all
|
|
226
|
+
|
|
227
|
+
Visible tsconfigs should describe the active project surface.
|
|
228
|
+
Excluded tsconfigs should be things the agent should not use for setup decisions.
|
|
229
|
+
|
|
230
|
+
Use +nec only when you need to compare visible configs with config-excluded configs:
|
|
231
|
+
|
|
232
|
+
aib reveal tsconfigs +nec
|
|
233
|
+
|
|
234
|
+
8. Sync and verify
|
|
235
|
+
|
|
236
|
+
After all aib.json edits, run:
|
|
237
|
+
|
|
238
|
+
aib sync
|
|
239
|
+
|
|
240
|
+
If sync fails, fix aib.json and rerun sync.
|
|
241
|
+
|
|
242
|
+
Check the final config summary:
|
|
243
|
+
|
|
244
|
+
aib config
|
|
245
|
+
|
|
246
|
+
Run one compact tree batch using important aliases:
|
|
247
|
+
|
|
248
|
+
aib inspect --stdin
|
|
249
|
+
|
|
250
|
+
Input:
|
|
251
|
+
tree @<important-alias> depth=3 +onlyDirs limit=80
|
|
252
|
+
tree @<another-important-alias> depth=3 +onlyDirs limit=80
|
|
253
|
+
|
|
254
|
+
Check final TypeScript config discovery:
|
|
255
|
+
|
|
256
|
+
aib reveal tsconfigs
|
|
257
|
+
|
|
258
|
+
Confirm:
|
|
259
|
+
- aliases resolve;
|
|
260
|
+
- obvious tree noise is hidden;
|
|
261
|
+
- visible tsconfigs match the active project surface;
|
|
262
|
+
- config sections are set intentionally.
|
|
263
|
+
|
|
264
|
+
9. Note operational constraints
|
|
265
|
+
|
|
266
|
+
Before reporting back, identify any constraints the user should know.
|
|
267
|
+
|
|
268
|
+
Worktrees:
|
|
269
|
+
AIB resolves config from the nearest parent aib.json.
|
|
270
|
+
If the repository uses nested copied projects or worktrees inside the repo root, AIB may resolve the parent config.
|
|
271
|
+
Do not set up AIB inside nested worktrees that should behave as independent repositories.
|
|
272
|
+
Independent worktrees should live outside the main repo root or have their own intended aib.json boundary.
|
|
273
|
+
|
|
274
|
+
TTL:
|
|
275
|
+
Sessions and managed runtime are cleaned up after inactivity according to aib config session.
|
|
276
|
+
Tell the user if you changed these defaults or left them as-is.
|
|
277
|
+
|
|
278
|
+
Watchers:
|
|
279
|
+
AIB watches aib.json and visible tsconfig files after sync.
|
|
280
|
+
If config changes are not reflected, run aib sync.
|
|
281
|
+
|
|
282
|
+
10. Report to user
|
|
283
|
+
|
|
284
|
+
Report:
|
|
285
|
+
- whether AIB config already existed or was initialized;
|
|
286
|
+
- which aliases were added and why;
|
|
287
|
+
- which importRules settings were added or intentionally left unset;
|
|
288
|
+
- which tree/graph/tsconfig excludes were added;
|
|
289
|
+
- whether sync and verification passed;
|
|
290
|
+
- any worktree, TTL, watcher, or tsconfig discovery constraints the user should know.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
After context compaction, always run:
|
|
2
|
+
aib help help-protocol quick-map
|
|
3
|
+
aib config aliases
|
|
4
|
+
|
|
5
|
+
Use focused help when you would otherwise guess how a known AIB capability works.
|
|
6
|
+
|
|
7
|
+
Reread bootstrap when you need to restore the overall AIB workflow faster than piecing it together from focused topics.
|
|
8
|
+
If you just reread bootstrap, do not also read focused topics unless you need details that bootstrap does not cover.
|
|
9
|
+
|
|
10
|
+
Do not reread bootstrap automatically if focused help is enough.
|
|
11
|
+
|
|
12
|
+
If you are about to change import style across files, add or adopt tsconfig aliases, or clean imports repeatedly, read:
|
|
13
|
+
aib help config-setup.import-normalize imports.normalize
|
|
14
|
+
|
|
15
|
+
Refresh focused config help by signal:
|
|
16
|
+
- repeated long paths: aib help config-setup.aliases
|
|
17
|
+
- wrong move/modulePlan imports: aib help config-setup.import-rules
|
|
18
|
+
- noisy tree/graph output: aib help config-setup.excludes
|
|
19
|
+
- too many visible tsconfigs: aib help config-setup.tsconfigs
|
|
20
|
+
|
|
21
|
+
When refreshing multiple areas, request them together instead of one by one.
|
|
22
|
+
|
|
23
|
+
Example:
|
|
24
|
+
aib help patterns mutation inspect inspect.file inspect.code imports.normalize
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Use cycles to find import cycles in a file or directory scope.
|
|
2
|
+
|
|
3
|
+
Cycles reports cyclic components, not every possible path through a dense graph.
|
|
4
|
+
It classifies cycles as runtime, type-only, or mixed.
|
|
5
|
+
|
|
6
|
+
Start broad with summary output.
|
|
7
|
+
Use detail=imports when you need the import edges that explain a cycle.
|
|
8
|
+
Use detail=files when file membership is enough.
|
|
9
|
+
|
|
10
|
+
Controls:
|
|
11
|
+
scope file or directory scope
|
|
12
|
+
files focus cycles that include one or more files
|
|
13
|
+
detail summary|imports|files
|
|
14
|
+
limit max cyclic components shown
|
|
15
|
+
|
|
16
|
+
Run:
|
|
17
|
+
aib inspect cycles <scope>
|
|
18
|
+
|
|
19
|
+
Inline:
|
|
20
|
+
aib inspect cycles src/features --limit 20
|
|
21
|
+
aib inspect cycles src/features --detail imports --limit 20
|
|
22
|
+
aib inspect cycles --files src/features/service.ts --detail imports
|
|
23
|
+
|
|
24
|
+
Stdin:
|
|
25
|
+
aib inspect --stdin
|
|
26
|
+
|
|
27
|
+
Input:
|
|
28
|
+
cycles src/features limit=20
|
|
29
|
+
cycles src/features detail=imports limit=20
|
|
30
|
+
cycles scope=src/features files=[src/features/service.ts] detail=imports
|
|
31
|
+
|
|
32
|
+
If output hides components and shows a view handle, inspect only the hidden part:
|
|
33
|
+
|
|
34
|
+
aib view <handle> --offset 2 --limit 2
|
|
35
|
+
aib view <handle> --index 4 --detail imports
|
|
36
|
+
aib view <handle> --index 5 --detail files
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
Use tree to list a compact directory layout.
|
|
2
2
|
It is useful before focused inspect when you know the area but not the exact file.
|
|
3
3
|
|
|
4
|
-
node_modules, .git, dist, build, out, and .tmp are skipped by default.
|
|
5
|
-
|
|
6
4
|
Controls:
|
|
7
|
-
scope, depth, minDepth, limit,
|
|
5
|
+
scope, depth, minDepth, limit, only, exclude, onlyDirs, ned, nec
|
|
8
6
|
|
|
9
7
|
Specific:
|
|
10
8
|
depth max nesting depth; depth=N
|
|
11
9
|
minDepth hide shallower paths; minDepth=N
|
|
12
10
|
onlyDirs show directories only; +onlyDirs
|
|
13
|
-
|
|
11
|
+
only only matching files/dirs; only=[...]
|
|
12
|
+
exclude skip matching files/dirs; exclude=[...]
|
|
13
|
+
ned no-default-exclude; ignore built-in excludes; +ned
|
|
14
|
+
nec no-config-exclude; ignore aib.json tree excludes; +nec
|
|
14
15
|
|
|
15
16
|
Run:
|
|
16
17
|
aib inspect --stdin
|
|
17
18
|
|
|
18
19
|
Input:
|
|
19
|
-
tree src depth=4 +onlyDirs limit=200
|
|
20
|
-
tree @svc depth=3
|
|
20
|
+
tree src depth=4 +onlyDirs limit=200 +ned +nec
|
|
21
|
+
tree @svc depth=3 only=["**/*.ts"] exclude=["**/*.test.ts","**/* copy.ts"]
|
|
22
|
+
tree src depth=3 only=["src/services/**"] limit=80
|