@open-agent-toolkit/cli 0.1.29 → 0.1.31
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/assets/docs/cli-utilities/bootstrap.md +10 -6
- package/assets/docs/cli-utilities/tool-packs.md +1 -0
- package/assets/docs/contributing/documentation.md +1 -1
- package/assets/docs/contributing/markdown-features.md +1 -1
- package/assets/docs/reference/docs-index-contract.md +1 -1
- package/assets/public-package-versions.json +4 -4
- package/dist/app/command-context.d.ts +11 -0
- package/dist/app/command-context.d.ts.map +1 -1
- package/dist/commands/docs/init/scaffold.js +1 -1
- package/dist/commands/init/index.d.ts.map +1 -1
- package/dist/commands/init/index.js +13 -5
- package/dist/commands/init/tools/index.d.ts.map +1 -1
- package/dist/commands/init/tools/index.js +59 -23
- package/dist/engine/hook.d.ts.map +1 -1
- package/dist/engine/hook.js +13 -0
- package/package.json +2 -2
|
@@ -9,7 +9,7 @@ This page covers foundational CLI setup commands that prepare OAT structures and
|
|
|
9
9
|
|
|
10
10
|
## Quick Look
|
|
11
11
|
|
|
12
|
-
- What it does: explains the initial `oat init` setup flow and the optional guided setup path that configures packs, local paths, and provider sync.
|
|
12
|
+
- What it does: explains the initial `oat init` setup flow and the optional guided setup path that configures packs, local paths, documentation metadata, and provider sync.
|
|
13
13
|
- When to use it: when you are first introducing OAT into a repo or need to re-run the guided setup path on an existing checkout.
|
|
14
14
|
- Primary commands: `oat init`, `oat init --setup`, `oat init --scope project`
|
|
15
15
|
|
|
@@ -21,7 +21,7 @@ Purpose:
|
|
|
21
21
|
- Detect and optionally adopt provider strays
|
|
22
22
|
- Initialize sync configuration/manifest state
|
|
23
23
|
- Optionally install drift warning hooks
|
|
24
|
-
- Run guided setup to configure tool packs, local paths, and provider sync in one session
|
|
24
|
+
- Run guided setup to configure tool packs, local paths, documentation metadata, and provider sync in one session
|
|
25
25
|
|
|
26
26
|
Key behavior:
|
|
27
27
|
|
|
@@ -42,17 +42,21 @@ After core initialization completes, `oat init` can enter an interactive guided
|
|
|
42
42
|
|
|
43
43
|
**Steps (each independently skippable):**
|
|
44
44
|
|
|
45
|
-
1. **Tool packs** — install OAT tool packs. The core pack (diagnostics, passive docs access) is checked by default and always installs at user scope.
|
|
45
|
+
1. **Tool packs** — install OAT tool packs. The core pack (diagnostics, passive docs access) is checked by default and always installs at user scope. Guided setup asks whether to customize per-pack scope:
|
|
46
|
+
- choose **Yes** to run the per-pack scope selector for user-eligible packs (`ideas`, `docs`, `utility`, `research`, `brainstorm`)
|
|
47
|
+
- choose **No** to apply additive per-pack defaults without extra scope prompts
|
|
48
|
+
- project-only packs such as `workflows` and `project-management` remain project-scoped
|
|
46
49
|
2. **Local paths** — multi-select from default gitignored artifact paths (analysis, PR, reviews, ideas). Pre-existing paths are pre-checked; only new paths are added.
|
|
47
|
-
3. **
|
|
48
|
-
4. **
|
|
50
|
+
3. **Documentation** — detect or enter docs metadata for the repo when documentation exists.
|
|
51
|
+
4. **Provider sync** — sync provider project views via `oat sync --scope project`.
|
|
52
|
+
5. **Summary** — reports what was configured: active providers, tool packs status, local paths added/existing, and provider sync status. Includes suggested next steps.
|
|
49
53
|
|
|
50
54
|
Hook install note:
|
|
51
55
|
|
|
52
56
|
- The optional OAT pre-commit hook installs into Git's active hook directory.
|
|
53
57
|
- If a repo uses a managed hook folder such as `.githooks/`, that path must already be configured in Git, or OAT must configure it during the prompt flow before hook install.
|
|
54
58
|
|
|
55
|
-
**Non-interactive mode:**
|
|
59
|
+
**Non-interactive mode:** Fresh-init guided setup offers are interactive-only. If `--setup` is passed in non-interactive mode (`--json`, piped input, non-TTY, or `OAT_NON_INTERACTIVE=1`), guided setup does not prompt: tool packs use additive defaults, local-path and documentation prompts are skipped unless already configured, and provider sync is skipped unless separately requested.
|
|
56
60
|
|
|
57
61
|
```bash
|
|
58
62
|
# Explicit guided setup on an existing repo
|
|
@@ -106,6 +106,7 @@ Key behavior:
|
|
|
106
106
|
- Interactive installs show each pack's current install location in the picker so already-installed packs are visible before you submit
|
|
107
107
|
- Installing is **additive**: choosing a scope for a pack never removes it from another scope. A user-eligible pack installed at user scope plus a project install ends up at `project + user`, not moved
|
|
108
108
|
- For each user-eligible pack (`ideas`, `docs`, `utility`, `research`, `brainstorm`), the interactive flow offers a per-pack end-state selector (`project`, `user`, or `both`) defaulting to the pack's current placement; leaving the default makes no changes for that pack
|
|
109
|
+
- `oat init --setup` uses this same additive scope resolver. In guided setup, choosing to customize scope reaches the per-pack selector; choosing the recommended defaults, or running non-interactively, applies additive per-pack defaults without removals
|
|
109
110
|
- The `brainstorm` pack defaults to user scope on fresh installs (driven by `PACK_METADATA[brainstorm].defaultScope = 'user'`); existing installs keep their current placement on re-install, so a re-install never moves a pack between scopes
|
|
110
111
|
- Removing a pack from a scope happens only when you explicitly choose a narrower end-state in the interactive flow (e.g. a pack at `both` set to `project` only). All staged removals are shown in a single change summary and applied only after one batch confirmation — declining makes no changes
|
|
111
112
|
- Non-interactive installs (including `--scope project`, `--scope user`, and the default pack set) are strictly additive and never remove a pack from a scope. Removal is interactive-only
|
|
@@ -59,7 +59,7 @@ Documentation should ship with the code it explains. This page covers the core d
|
|
|
59
59
|
- When you add, remove, or rename docs pages in this Fumadocs app, refresh the generated Fumadocs root index. It is a generated file-tree manifest that should be checked against authored `docs/**/index.md` maps, not hand-edited:
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
pnpm -w run cli -- docs generate-index --docs-dir apps/oat-docs/docs --output apps/oat-docs/index.md
|
|
62
|
+
pnpm -w run cli:source -- docs generate-index --docs-dir apps/oat-docs/docs --output apps/oat-docs/index.md
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
- In MkDocs apps, use `oat docs nav sync` to refresh `mkdocs.yml` instead. Do not use MkDocs nav sync as the Fumadocs regeneration step.
|
|
@@ -115,5 +115,5 @@ Use a language identifier on every opening fence. In this docs app, use `bash` f
|
|
|
115
115
|
After adding or reorganizing docs pages, refresh the generated docs surface:
|
|
116
116
|
|
|
117
117
|
```bash
|
|
118
|
-
pnpm -w run cli -- docs generate-index --docs-dir apps/oat-docs/docs --output apps/oat-docs/index.md
|
|
118
|
+
pnpm -w run cli:source -- docs generate-index --docs-dir apps/oat-docs/docs --output apps/oat-docs/index.md
|
|
119
119
|
```
|
|
@@ -43,7 +43,7 @@ For this Fumadocs app, rendered page routing and sidebar data come from the Fuma
|
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
45
|
fumadocs-mdx
|
|
46
|
-
pnpm -w run cli -- docs generate-index --docs-dir apps/oat-docs/docs --output apps/oat-docs/index.md
|
|
46
|
+
pnpm -w run cli:source -- docs generate-index --docs-dir apps/oat-docs/docs --output apps/oat-docs/index.md
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
`oat docs generate-index` rewrites the generated root manifest from the docs source tree. It is the command to use after adding, removing, or retiring pages in this Fumadocs app. Do not use `oat docs nav sync` as the Fumadocs regeneration step.
|
|
@@ -7,8 +7,19 @@ export interface GlobalOptions {
|
|
|
7
7
|
json?: boolean;
|
|
8
8
|
cwd?: string;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* How per-pack scope resolution behaves in the tools-install flow:
|
|
12
|
+
* - `interactive`: always run the per-pack `Where should X install?` radio.
|
|
13
|
+
* - `defaults`: apply additive per-pack defaults without prompting.
|
|
14
|
+
* - `gate`: deferred guided-setup signal — after pack selection, prompt the
|
|
15
|
+
* `Customize per-pack scope? (y/N)` gate (yes -> interactive radio,
|
|
16
|
+
* no/non-interactive -> defaults), and skip the gate entirely when no
|
|
17
|
+
* user-eligible pack is selected.
|
|
18
|
+
*/
|
|
19
|
+
export type ScopeSelectionMode = 'interactive' | 'defaults' | 'gate';
|
|
10
20
|
export interface CommandContext {
|
|
11
21
|
scope: Scope;
|
|
22
|
+
scopeSelection?: ScopeSelectionMode;
|
|
12
23
|
dryRun: boolean;
|
|
13
24
|
verbose: boolean;
|
|
14
25
|
json: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-context.d.ts","sourceRoot":"","sources":["../../src/app/command-context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAc1E"}
|
|
1
|
+
{"version":3,"file":"command-context.d.ts","sourceRoot":"","sources":["../../src/app/command-context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,YAAY,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG,UAAU,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAc1E"}
|
|
@@ -159,7 +159,7 @@ function buildFumaDevDependencies(lint, format) {
|
|
|
159
159
|
}
|
|
160
160
|
function buildGenerateIndexCmd(isOatRepo, targetDir) {
|
|
161
161
|
if (isOatRepo) {
|
|
162
|
-
return `pnpm -w run cli -- docs generate-index --docs-dir ${targetDir}/docs --output ${targetDir}/index.md`;
|
|
162
|
+
return `pnpm -w run cli:source -- docs generate-index --docs-dir ${targetDir}/docs --output ${targetDir}/index.md`;
|
|
163
163
|
}
|
|
164
164
|
return 'oat docs generate-index --docs-dir docs --output index.md';
|
|
165
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/init/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EAEnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,0BAA0B,CAAC;AAYlC,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,YAAY,EAGlB,MAAM,iCAAiC,CAAC;AAKzC,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,SAAS,EAKf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,eAAe,EAKrB,MAAM,eAAe,CAAC;AASvB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAUzD,OAAO,EACL,KAAK,yBAAyB,EAI9B,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAS,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAE5B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,QAAQ,EAGd,MAAM,SAAS,CAAC;AAyBjB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,YAAY,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,UAAU,gBAAgB;IACxB,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,gBAAgB,EAAE,CAChB,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,mBAAmB,EAAE,CACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,KACjB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,KACjB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/B,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,cAAc,EAAE,EAClC,cAAc,CAAC,EAAE,eAAe,EAAE,KAC/B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACnC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,wBAAwB,EAAE,CAAC,CAAC,SAAS,MAAM,EACzC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,UAAU,EAAE,CACV,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,EACzB,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,KACrC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvB,eAAe,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,kBAAkB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACtE,uBAAuB,EAAE,CACvB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,aAAa,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,WAAW,EAAE,MAAM,eAAe,EAAE,CAAC;IACrC,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5D,cAAc,EAAE,CACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,UAAU,KACf,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,sBAAsB,EAAE,CACtB,QAAQ,EAAE,eAAe,EAAE,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,KACf,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACxC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzE,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,iBAAiB,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,EAAE,CAAC;IACnD,aAAa,EAAE,CACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EAAE,KACZ,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACjD,cAAc,EAAE,CACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAAE,KACjB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjC,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,kBAAkB,EAAE,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,sBAAsB,KACzB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAClC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,gBAAgB,EAAE,CAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5B,eAAe,EAAE,CAAC,CAAC,SAAS,MAAM,EAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAC1B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,cAAc,EAAE,CACd,OAAO,EAAE,cAAc,EACvB,YAAY,EAAE,gBAAgB,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,YAAY,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AAwxBD,wBAAgB,iBAAiB,CAC/B,SAAS,GAAE,OAAO,CAAC,gBAAgB,CAAM,GACxC,OAAO,CAiBT"}
|
|
@@ -308,7 +308,13 @@ async function runGuidedSetupImpl(context, dependencies) {
|
|
|
308
308
|
const resolution = await dependencies.getConfigAwareAdapters(adapters, projectRoot, syncConfig);
|
|
309
309
|
const activeProviderNames = resolution.activeAdapters.map((a) => a.displayName);
|
|
310
310
|
context.logger.info('[1/5] Tool packs…');
|
|
311
|
-
|
|
311
|
+
// Defer the per-pack scope gate to the tools flow: `gate` asks the customize
|
|
312
|
+
// prompt after pack selection (and only when a user-eligible pack is
|
|
313
|
+
// selected). Non-interactive setup applies additive defaults with no prompt.
|
|
314
|
+
const scopeSelection = context.interactive
|
|
315
|
+
? 'gate'
|
|
316
|
+
: 'defaults';
|
|
317
|
+
const guidedContext = { ...context, scopeSelection };
|
|
312
318
|
const installedPacks = await dependencies.runToolPacks(guidedContext);
|
|
313
319
|
const installedPackSet = new Set(installedPacks);
|
|
314
320
|
context.logger.info('[2/5] Local paths (gitignored artifacts)…');
|
|
@@ -319,9 +325,11 @@ async function runGuidedSetupImpl(context, dependencies) {
|
|
|
319
325
|
...c,
|
|
320
326
|
checked: existingPaths.has(c.value) || c.checked,
|
|
321
327
|
}));
|
|
322
|
-
const selectedPaths =
|
|
323
|
-
|
|
324
|
-
|
|
328
|
+
const selectedPaths = context.interactive
|
|
329
|
+
? ((await dependencies.selectManyWithAbort('Select local paths to add', choices, {
|
|
330
|
+
interactive: context.interactive,
|
|
331
|
+
})) ?? [])
|
|
332
|
+
: [];
|
|
325
333
|
let addedCount = 0;
|
|
326
334
|
const guidedPathValues = new Set(applicableChoices.map((c) => c.value));
|
|
327
335
|
const existingGuidedCount = [...existingPaths].filter((p) => guidedPathValues.has(p)).length;
|
|
@@ -542,7 +550,7 @@ async function runInitCommand(context, dependencies, hookFlag, setupFlag) {
|
|
|
542
550
|
}
|
|
543
551
|
process.exitCode = 0;
|
|
544
552
|
const freshInit = projectRoot !== null && !oatDirExistedBefore;
|
|
545
|
-
if (context.interactive &&
|
|
553
|
+
if (setupFlag || (context.interactive && freshInit)) {
|
|
546
554
|
let shouldRunSetup = !!setupFlag;
|
|
547
555
|
if (!shouldRunSetup && freshInit) {
|
|
548
556
|
shouldRunSetup = await dependencies.confirmAction('Would you like to run guided setup?', { interactive: context.interactive });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -276,6 +276,39 @@ async function removePackFromScope(pack, root, dependencies) {
|
|
|
276
276
|
await dependencies.removeFile(join(root, '.agents', 'agents', agent));
|
|
277
277
|
}
|
|
278
278
|
}
|
|
279
|
+
/**
|
|
280
|
+
* Resolve a possibly-deferred scope-selection signal into a concrete mode.
|
|
281
|
+
*
|
|
282
|
+
* The `gate` value is the guided-setup deferred signal: it must only be turned
|
|
283
|
+
* into a prompt once pack selection is complete and at least one user-eligible
|
|
284
|
+
* pack is in play (callers guard the empty case). In an interactive session it
|
|
285
|
+
* shows the `Customize per-pack scope? (y/N)` gate — yes -> `interactive`
|
|
286
|
+
* (per-pack radio), no -> `defaults` (additive per-pack defaults). A
|
|
287
|
+
* non-interactive `gate` never prompts and resolves to `defaults`. Any
|
|
288
|
+
* non-`gate` value passes through unchanged so `oat tools install` keeps its
|
|
289
|
+
* existing behavior (it always offers the per-pack radio).
|
|
290
|
+
*/
|
|
291
|
+
async function resolveDeferredGate(scopeSelection, interactive, dependencies) {
|
|
292
|
+
if (scopeSelection !== 'gate') {
|
|
293
|
+
return scopeSelection;
|
|
294
|
+
}
|
|
295
|
+
if (!interactive) {
|
|
296
|
+
return 'defaults';
|
|
297
|
+
}
|
|
298
|
+
const selection = await dependencies.selectWithAbort('Customize per-pack scope? (y/N)', [
|
|
299
|
+
{
|
|
300
|
+
label: 'No, use recommended defaults',
|
|
301
|
+
value: 'no',
|
|
302
|
+
description: 'Apply per-pack defaults without extra prompts',
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
label: 'Yes, customize each pack',
|
|
306
|
+
value: 'yes',
|
|
307
|
+
description: 'Choose project, user, or both for each eligible pack',
|
|
308
|
+
},
|
|
309
|
+
], { interactive });
|
|
310
|
+
return selection === 'yes' ? 'interactive' : 'defaults';
|
|
311
|
+
}
|
|
279
312
|
async function resolvePackScopes(context, selections, installedPackStates, dependencies) {
|
|
280
313
|
const scopes = {};
|
|
281
314
|
// Workflows is always project-only
|
|
@@ -290,42 +323,45 @@ async function resolvePackScopes(context, selections, installedPackStates, depen
|
|
|
290
323
|
}
|
|
291
324
|
const eligiblePacks = selections.filter((pack) => isUserEligiblePack(pack));
|
|
292
325
|
if (eligiblePacks.length === 0) {
|
|
326
|
+
// No user-eligible pack was selected, so the deferred guided-setup gate is
|
|
327
|
+
// skipped entirely — there is nothing whose scope a user could customize.
|
|
293
328
|
return scopes;
|
|
294
329
|
}
|
|
295
|
-
//
|
|
296
|
-
//
|
|
297
|
-
//
|
|
298
|
-
|
|
330
|
+
// Deferred guided-setup gate: resolve `gate` into a concrete mode now that
|
|
331
|
+
// pack selection is done and at least one user-eligible pack exists. In an
|
|
332
|
+
// interactive session, prompt `Customize per-pack scope? (y/N)`: yes routes
|
|
333
|
+
// to the per-pack radio (`interactive`), no routes to additive defaults.
|
|
334
|
+
// Non-interactive sessions never prompt and always take defaults.
|
|
335
|
+
const scopeSelection = await resolveDeferredGate(context.scopeSelection, context.interactive, dependencies);
|
|
336
|
+
if (scopeSelection === 'defaults') {
|
|
337
|
+
for (const pack of eligiblePacks) {
|
|
338
|
+
scopes[pack] = resolvePackDefaultEndState(pack, installedPackStates[pack].location);
|
|
339
|
+
}
|
|
340
|
+
return scopes;
|
|
341
|
+
}
|
|
342
|
+
// Explicit --scope is additive for regular tools installs: union the
|
|
343
|
+
// requested scope with the pack's current placement so installing at one
|
|
344
|
+
// scope never removes another. Guided setup passes `scopeSelection`, which
|
|
345
|
+
// intentionally takes precedence over this global init scope.
|
|
346
|
+
if (scopeSelection !== 'interactive' &&
|
|
347
|
+
(context.scope === 'project' || context.scope === 'user')) {
|
|
299
348
|
const requested = context.scope;
|
|
300
349
|
for (const pack of eligiblePacks) {
|
|
301
350
|
scopes[pack] = unionScopeWithCurrent(installedPackStates[pack].location, requested);
|
|
302
351
|
}
|
|
303
352
|
return scopes;
|
|
304
353
|
}
|
|
305
|
-
// Non-interactive resolution.
|
|
354
|
+
// Non-interactive resolution (`defaults` mode is already handled above).
|
|
306
355
|
//
|
|
307
356
|
// Migration-safety contract: existing-install detection wins over
|
|
308
357
|
// PACK_METADATA defaultScope. If the pack is already installed at any
|
|
309
|
-
// scope, preserve that placement so
|
|
310
|
-
//
|
|
311
|
-
//
|
|
312
|
-
//
|
|
313
|
-
// to 'project' for backwards compatibility).
|
|
358
|
+
// scope, preserve that placement so non-prompting resolution never silently
|
|
359
|
+
// migrates a user's prior install across scopes. Only when the pack is not
|
|
360
|
+
// yet present do we consult PACK_METADATA[name]?.defaultScope (with absent
|
|
361
|
+
// entries falling back to 'project' for backwards compatibility).
|
|
314
362
|
if (!context.interactive) {
|
|
315
363
|
for (const pack of eligiblePacks) {
|
|
316
|
-
|
|
317
|
-
if (currentLocation === 'user') {
|
|
318
|
-
scopes[pack] = 'user';
|
|
319
|
-
}
|
|
320
|
-
else if (currentLocation === 'both') {
|
|
321
|
-
scopes[pack] = 'both';
|
|
322
|
-
}
|
|
323
|
-
else if (currentLocation === 'project') {
|
|
324
|
-
scopes[pack] = 'project';
|
|
325
|
-
}
|
|
326
|
-
else {
|
|
327
|
-
scopes[pack] = resolvePackDefaultScope(pack);
|
|
328
|
-
}
|
|
364
|
+
scopes[pack] = resolvePackDefaultEndState(pack, installedPackStates[pack].location);
|
|
329
365
|
}
|
|
330
366
|
return scopes;
|
|
331
367
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/engine/hook.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,iBAAiB,kCAAkC,CAAC;AACjE,eAAO,MAAM,eAAe,kCAAkC,CAAC;AAC/D,eAAO,MAAM,kBAAkB,iFACiD,CAAC;AACjF,eAAO,MAAM,eAAe,wFAC2D,CAAC;AACxF,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,eAAe,GAAG,YAAY,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,UAAU,mBAAmB;IAC3B,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../src/engine/hook.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,iBAAiB,kCAAkC,CAAC;AACjE,eAAO,MAAM,eAAe,kCAAkC,CAAC;AAC/D,eAAO,MAAM,kBAAkB,iFACiD,CAAC;AACjF,eAAO,MAAM,eAAe,wFAC2D,CAAC;AACxF,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,eAAe,GAAG,YAAY,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,UAAU,mBAAmB;IAC3B,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAuID,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CA4B1B;AAED,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgB3E;AAED,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgCtE;AAuBD,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCtE;AA8BD,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC,CA2BjC"}
|
package/dist/engine/hook.js
CHANGED
|
@@ -74,6 +74,19 @@ async function resolveHooksDirectory(projectRoot, options = {}) {
|
|
|
74
74
|
}
|
|
75
75
|
return configuredPath;
|
|
76
76
|
}
|
|
77
|
+
try {
|
|
78
|
+
const { stdout } = await execFileAsync('git', ['rev-parse', '--path-format=absolute', '--git-path', 'hooks'], { cwd: projectRoot });
|
|
79
|
+
const gitHooksDir = stdout.trim();
|
|
80
|
+
if (gitHooksDir) {
|
|
81
|
+
if (shouldCreate) {
|
|
82
|
+
await ensureDir(gitHooksDir);
|
|
83
|
+
}
|
|
84
|
+
return gitHooksDir;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Fall back to filesystem resolution for tests and nonstandard fixtures.
|
|
89
|
+
}
|
|
77
90
|
const gitDir = await resolveGitDirectory(projectRoot);
|
|
78
91
|
const hooksDir = join(gitDir, 'hooks');
|
|
79
92
|
try {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-agent-toolkit/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.31",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Open Agent Toolkit CLI",
|
|
6
6
|
"homepage": "https://github.com/voxmedia/open-agent-toolkit/tree/main/packages/cli",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"ora": "^9.0.0",
|
|
35
35
|
"yaml": "2.8.2",
|
|
36
36
|
"zod": "^3.25.76",
|
|
37
|
-
"@open-agent-toolkit/control-plane": "0.1.
|
|
37
|
+
"@open-agent-toolkit/control-plane": "0.1.31"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^22.10.0",
|