@open-agent-toolkit/cli 0.0.60 → 0.0.64
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/tool-packs.md +74 -4
- package/assets/docs/workflows/ideas/index.md +6 -0
- package/assets/docs/workflows/ideas/lifecycle.md +12 -0
- package/assets/docs/workflows/projects/lifecycle.md +20 -0
- package/assets/docs/workflows/skills/index.md +8 -2
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-brainstorm/SKILL.md +600 -0
- package/assets/skills/oat-brainstorm/references/destinations.md +167 -0
- package/assets/skills/oat-brainstorm/references/dogfood-results.md +731 -0
- package/assets/skills/oat-brainstorm/references/visual-companion.md +316 -0
- package/assets/skills/oat-brainstorm/scripts/frame-template.html +214 -0
- package/assets/skills/oat-brainstorm/scripts/helper.js +88 -0
- package/assets/skills/oat-brainstorm/scripts/server.cjs +354 -0
- package/assets/skills/oat-brainstorm/scripts/start-server.sh +176 -0
- package/assets/skills/oat-brainstorm/scripts/stop-server.sh +56 -0
- package/assets/skills/oat-brainstorm/templates/brainstorm-doc.md +79 -0
- package/assets/skills/oat-idea-ideate/SKILL.md +8 -4
- package/assets/skills/oat-pjm-add-backlog-item/SKILL.md +2 -1
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +23 -1
- package/assets/skills/oat-pjm-review-backlog/references/backlog-review-template.md +18 -6
- package/assets/skills/oat-pjm-update-repo-reference/SKILL.md +2 -1
- package/assets/skills/oat-project-document/SKILL.md +2 -1
- package/assets/skills/oat-project-pr-final/SKILL.md +2 -1
- package/assets/skills/oat-project-spec/SKILL.md +2 -2
- package/assets/skills/oat-project-summary/SKILL.md +2 -1
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +12 -0
- package/dist/commands/init/tools/brainstorm/index.d.ts +22 -0
- package/dist/commands/init/tools/brainstorm/index.d.ts.map +1 -0
- package/dist/commands/init/tools/brainstorm/index.js +145 -0
- package/dist/commands/init/tools/brainstorm/install-brainstorm.d.ts +19 -0
- package/dist/commands/init/tools/brainstorm/install-brainstorm.d.ts.map +1 -0
- package/dist/commands/init/tools/brainstorm/install-brainstorm.js +37 -0
- package/dist/commands/init/tools/index.d.ts +3 -1
- package/dist/commands/init/tools/index.d.ts.map +1 -1
- package/dist/commands/init/tools/index.js +76 -6
- package/dist/commands/init/tools/shared/skill-manifest.d.ts +7 -0
- package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.js +11 -0
- package/dist/commands/tools/remove/index.d.ts.map +1 -1
- package/dist/commands/tools/remove/index.js +2 -1
- package/dist/commands/tools/shared/install-sync-context.d.ts.map +1 -1
- package/dist/commands/tools/shared/install-sync-context.js +3 -1
- package/dist/commands/tools/shared/scan-tools.d.ts.map +1 -1
- package/dist/commands/tools/shared/scan-tools.js +3 -1
- package/dist/commands/tools/shared/types.d.ts +1 -1
- package/dist/commands/tools/shared/types.d.ts.map +1 -1
- package/dist/commands/tools/update/index.d.ts.map +1 -1
- package/dist/commands/tools/update/index.js +2 -1
- package/dist/commands/tools/update/update-tools.d.ts.map +1 -1
- package/dist/commands/tools/update/update-tools.js +6 -1
- package/dist/config/oat-config.d.ts +1 -1
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +1 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +1 -0
- package/package.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-idea-ideate
|
|
3
|
-
version: 1.2.
|
|
4
|
-
description: Use when continuing
|
|
3
|
+
version: 1.2.1
|
|
4
|
+
description: Use when continuing an existing tracked idea or expanding an explicit scratchpad seed from {IDEAS_ROOT}/scratchpad.md. Do NOT use to start a brand-new, destinationless brainstorm; use oat-brainstorm for that.
|
|
5
5
|
argument-hint: '[--global]'
|
|
6
6
|
disable-model-invocation: true
|
|
7
7
|
user-invocable: true
|
|
@@ -10,13 +10,13 @@ allowed-tools: Read, Write, Bash, Glob, AskUserQuestion
|
|
|
10
10
|
|
|
11
11
|
# Ideate
|
|
12
12
|
|
|
13
|
-
Resume brainstorming on an existing idea, or
|
|
13
|
+
Resume brainstorming on an existing tracked idea, or expand an explicit scratchpad seed into a tracked idea before continuing ideation.
|
|
14
14
|
|
|
15
15
|
## Mode Assertion
|
|
16
16
|
|
|
17
17
|
**OAT MODE: Ideation**
|
|
18
18
|
|
|
19
|
-
**Purpose:** Lightweight brainstorming through natural, exploratory conversation. Capture the essence of
|
|
19
|
+
**Purpose:** Lightweight brainstorming through natural, exploratory conversation for an idea record that already exists or for a scratchpad seed the user explicitly selects. Capture the essence of that tracked idea without formal structure or implementation detail.
|
|
20
20
|
|
|
21
21
|
**BLOCKED Activities:**
|
|
22
22
|
|
|
@@ -25,6 +25,7 @@ Resume brainstorming on an existing idea, or pick one from the scratchpad to sta
|
|
|
25
25
|
- No technical designs or architecture
|
|
26
26
|
- No task breakdowns or plans
|
|
27
27
|
- No forced structure — let the idea breathe
|
|
28
|
+
- No brand-new destinationless brainstorm activation. Use `oat-brainstorm` when the user says "let's brainstorm", "brainstorm this", or otherwise opens exploratory discussion without naming an existing idea or scratchpad seed.
|
|
28
29
|
|
|
29
30
|
**ALLOWED Activities:**
|
|
30
31
|
|
|
@@ -41,6 +42,7 @@ If you catch yourself:
|
|
|
41
42
|
- Writing implementation details → STOP (capture as an Open Question instead)
|
|
42
43
|
- Formalizing requirements → STOP (keep it conversational)
|
|
43
44
|
- Creating structured deliverables → STOP (save for project workflow)
|
|
45
|
+
- Treating a generic brainstorm request as a scratchpad entry → STOP. Scratchpad mode requires an actual unchecked entry in `{IDEAS_ROOT}/scratchpad.md` or an explicit user reference to one.
|
|
44
46
|
|
|
45
47
|
**Recovery:**
|
|
46
48
|
|
|
@@ -90,6 +92,8 @@ Determine whether to operate at project level or user (global) level.
|
|
|
90
92
|
|
|
91
93
|
### Step 1: Resolve Active Idea
|
|
92
94
|
|
|
95
|
+
This skill is a resume / expand flow, not a blank-slate brainstorm entry point. If the user has only asked to brainstorm and has not named an existing idea, an active idea, or a scratchpad seed, stop and route to `oat-brainstorm`.
|
|
96
|
+
|
|
93
97
|
Read `activeIdea` from config:
|
|
94
98
|
|
|
95
99
|
```bash
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-pjm-add-backlog-item
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.1
|
|
4
4
|
description: Use when the user requests or confirms adding a new repo backlog item — e.g. "add a backlog item for X", "capture that as backlog", "track that follow-up", "file a backlog ticket", or confirms a previously offered backlog capture. Do NOT auto-invoke when a follow-up is mentioned. Creates the item file in the file-per-item backlog structure, regenerates the index, and prompts for curated overview updates.
|
|
5
|
+
disable-model-invocation: false
|
|
5
6
|
user-invocable: true
|
|
6
7
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
7
8
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-pjm-review-backlog
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.1.0
|
|
4
4
|
description: Use when prioritizing the file-backed repo backlog or evaluating roadmap alignment. Produces value-effort ratings, dependency mapping, and execution recommendations.
|
|
5
5
|
argument-hint: '[backlog-root] [--roadmap=<path>] [--output=<path>]'
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -18,6 +18,25 @@ Analyze the file-backed backlog under `.oat/repo/reference/backlog/` to produce
|
|
|
18
18
|
|
|
19
19
|
**Purpose:** Review active backlog item files, evaluate roadmap alignment, and recommend a practical execution order.
|
|
20
20
|
|
|
21
|
+
## Reference Format Convention
|
|
22
|
+
|
|
23
|
+
Whenever a backlog item is referenced — in the written review document, in chat output, or in the inline summary at the end — it **must include both the ID and a human-readable title**. Bare IDs like `bl-281c` are not acceptable in user-facing output, because readers do not have a board lookup in front of them.
|
|
24
|
+
|
|
25
|
+
Use one of these formats:
|
|
26
|
+
|
|
27
|
+
- **Inline / prose:** `` `bl-281c` (control-plane state-read migration) ``
|
|
28
|
+
- **Tables / lists:** `**bl-281c** — Control-plane state-read migration`
|
|
29
|
+
- **Compact lists where space is tight (e.g., dependency graphs):** an ID-only token is acceptable **only if** a legend in the same section maps every ID to its title.
|
|
30
|
+
|
|
31
|
+
This convention applies equally to:
|
|
32
|
+
|
|
33
|
+
- The "Top recommended next actions" summary
|
|
34
|
+
- Risks, gaps, and quick-wins callouts
|
|
35
|
+
- Any chat-level commentary about specific items
|
|
36
|
+
- All tables and item references in the written review document
|
|
37
|
+
|
|
38
|
+
If a title is missing from frontmatter, derive a short noun phrase from the item filename or `## Description` heading rather than falling back to a bare ID.
|
|
39
|
+
|
|
21
40
|
## Progress Indicators (User-Facing)
|
|
22
41
|
|
|
23
42
|
When executing this skill, provide lightweight progress feedback so the user can tell what’s happening after they confirm.
|
|
@@ -162,6 +181,8 @@ After writing the review, provide:
|
|
|
162
181
|
- Top 3 recommended next actions
|
|
163
182
|
- Key risks or gaps discovered
|
|
164
183
|
|
|
184
|
+
When listing specific items in this summary, follow the **Reference Format Convention** above — every backlog item must appear as `` `bl-XXXX` (human-readable title) `` (or the bold-with-em-dash variant in tables). Do not emit bare IDs.
|
|
185
|
+
|
|
165
186
|
## Success Criteria
|
|
166
187
|
|
|
167
188
|
- Every active backlog item file has a value-effort rating with rationale
|
|
@@ -169,3 +190,4 @@ After writing the review, provide:
|
|
|
169
190
|
- Parallel lanes and execution waves are actionable
|
|
170
191
|
- Roadmap alignment gaps are surfaced when roadmap input is present
|
|
171
192
|
- Output document follows the review template structure
|
|
193
|
+
- Every user-facing reference to a backlog item pairs the ID with a human-readable title (per the Reference Format Convention)
|
|
@@ -78,12 +78,19 @@ The backlog contains **{N} items** ({breakdown by section}) spanning {N} themes:
|
|
|
78
78
|
Legend: ──▶ hard dependency (must complete first)
|
|
79
79
|
- -▶ soft dependency (beneficial but not required)
|
|
80
80
|
|
|
81
|
-
{Render the full dependency graph here}
|
|
81
|
+
{Render the full dependency graph here using bare IDs}
|
|
82
82
|
|
|
83
83
|
{Group independent items at the bottom}
|
|
84
84
|
{item} [independent]
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
+
**ID legend** (every ID used above must appear here):
|
|
88
|
+
|
|
89
|
+
| ID | Title |
|
|
90
|
+
| ----- | ------------ |
|
|
91
|
+
| {BNN} | {Item Title} |
|
|
92
|
+
| ... | ... |
|
|
93
|
+
|
|
87
94
|
---
|
|
88
95
|
|
|
89
96
|
## 4. Parallel Lanes
|
|
@@ -95,9 +102,14 @@ These are independent work streams that can be tackled concurrently without conf
|
|
|
95
102
|
{Brief description of this work stream}
|
|
96
103
|
|
|
97
104
|
```
|
|
98
|
-
{Item sequence with arrows showing internal ordering}
|
|
105
|
+
{Item sequence with arrows showing internal ordering — bare IDs OK inside the diagram}
|
|
99
106
|
```
|
|
100
107
|
|
|
108
|
+
**Items in this lane:**
|
|
109
|
+
|
|
110
|
+
- **{BNN}** — {Title}
|
|
111
|
+
- ...
|
|
112
|
+
|
|
101
113
|
**Total estimated effort:** {Low/Medium/High}
|
|
102
114
|
**Cross-lane dependencies:** {Any connections to other lanes}
|
|
103
115
|
|
|
@@ -132,10 +144,10 @@ These are independent work streams that can be tackled concurrently without conf
|
|
|
132
144
|
|
|
133
145
|
### How backlog items map to roadmap phases
|
|
134
146
|
|
|
135
|
-
| Roadmap Phase | Status | Backlog Items
|
|
136
|
-
| ------------- | -------- |
|
|
137
|
-
| {Phase name} | {Status} | {BNN
|
|
138
|
-
| ... | ... | ...
|
|
147
|
+
| Roadmap Phase | Status | Backlog Items | Notes |
|
|
148
|
+
| ------------- | -------- | ---------------------------------------- | ------- |
|
|
149
|
+
| {Phase name} | {Status} | **{BNN}** — {Title}; **{BNN}** — {Title} | {Notes} |
|
|
150
|
+
| ... | ... | ... | ... |
|
|
139
151
|
|
|
140
152
|
### Gaps: Roadmap items without backlog coverage
|
|
141
153
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-pjm-update-repo-reference
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.1
|
|
4
4
|
description: Use when repo reference artifacts need updating — roadmap, decision records, backlog status, or completed history. Frequently invoked at project completion, often chained from `oat-project-document`, to ensure `.oat/repo/reference/` state reflects what shipped.
|
|
5
|
+
disable-model-invocation: false
|
|
5
6
|
user-invocable: true
|
|
6
7
|
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
7
8
|
---
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-document
|
|
3
|
-
version: 1.4.
|
|
3
|
+
version: 1.4.1
|
|
4
4
|
description: Use when the user requests or confirms documenting an active OAT project — e.g. "document the project", "update the docs", "run oat-project-document", or confirms a previously offered documentation run. Do NOT auto-invoke when implementation completes. Analyzes project artifacts, presents a documentation delta plan, and applies approved changes.
|
|
5
5
|
argument-hint: '[project-path] [--auto]'
|
|
6
|
+
disable-model-invocation: false
|
|
6
7
|
user-invocable: true
|
|
7
8
|
allowed-tools: Read, Write, Edit, Bash(git:*), Glob, Grep, AskUserQuestion, Skill
|
|
8
9
|
---
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-pr-final
|
|
3
|
-
version: 1.4.
|
|
3
|
+
version: 1.4.1
|
|
4
4
|
description: Use when the user requests or confirms opening the final PR for an active OAT project — e.g. "open the final PR", "ship it", "run oat-project-pr-final", or confirms a previously offered final-PR step. Do NOT auto-invoke when phases are marked complete. Generates the final lifecycle PR description from artifacts and creates the PR.
|
|
5
|
+
disable-model-invocation: false
|
|
5
6
|
user-invocable: true
|
|
6
7
|
allowed-tools: Read, Write, Bash(git:*), Glob, Grep, AskUserQuestion
|
|
7
8
|
---
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-spec
|
|
3
|
-
version: 2.0.
|
|
4
|
-
description:
|
|
3
|
+
version: 2.0.1
|
|
4
|
+
description: Use when discovery is complete but you're not ready to design yet, and you want to formalize requirements into a structured spec.md as an optional standalone step. Independent of the design workflow — oat-project-design confirms requirements automatically and does not require this skill to be run first.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Write, Bash(git:*), Glob, Grep, AskUserQuestion
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-summary
|
|
3
|
-
version: 1.1.
|
|
3
|
+
version: 1.1.1
|
|
4
4
|
description: Use when the user requests or confirms summarizing an active OAT project — e.g. "summarize the project", "generate the summary", "run oat-project-summary", or confirms a previously offered summary run. Do NOT auto-invoke when implementation completes. Generates summary.md from project artifacts as institutional memory.
|
|
5
|
+
disable-model-invocation: false
|
|
5
6
|
user-invocable: true
|
|
6
7
|
allowed-tools: Read, Write, Bash(git:*), Glob, Grep, AskUserQuestion
|
|
7
8
|
---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,OAAO,EACL,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,UAAU,EAOhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGhF,OAAO,EACL,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,UAAU,EAOhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyDpC,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CACnB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAC/C,cAAc,CAAC;IACpB,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,sBAAsB,EAAE,CACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;CAC/B;AAonCD,wBAAgB,mBAAmB,CACjC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CA0GT"}
|
|
@@ -24,6 +24,7 @@ const KEY_ORDER = [
|
|
|
24
24
|
'documentation.requireForProjectCompletion',
|
|
25
25
|
'git.defaultBranch',
|
|
26
26
|
'projects.root',
|
|
27
|
+
'tools.brainstorm',
|
|
27
28
|
'tools.core',
|
|
28
29
|
'tools.docs',
|
|
29
30
|
'tools.ideas',
|
|
@@ -196,6 +197,17 @@ const CONFIG_CATALOG = [
|
|
|
196
197
|
owningCommand: 'oat config set archive.awsRegion <value>',
|
|
197
198
|
description: 'AWS region forwarded as AWS_REGION to every `aws` invocation made by the archive S3 sync (completion + `oat project archive sync`). Precedence: per-invocation flag > existing shell env > this config value.',
|
|
198
199
|
},
|
|
200
|
+
{
|
|
201
|
+
key: 'tools.brainstorm',
|
|
202
|
+
group: 'Shared Repo (.oat/config.json)',
|
|
203
|
+
file: '.oat/config.json',
|
|
204
|
+
scope: 'shared repo',
|
|
205
|
+
type: 'boolean',
|
|
206
|
+
defaultValue: 'false',
|
|
207
|
+
mutability: 'read/write',
|
|
208
|
+
owningCommand: 'oat tools install / oat tools update',
|
|
209
|
+
description: 'Whether the brainstorm tool pack is installed.',
|
|
210
|
+
},
|
|
199
211
|
{
|
|
200
212
|
key: 'tools.core',
|
|
201
213
|
group: 'Shared Repo (.oat/config.json)',
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type CommandContext, type GlobalOptions } from '../../../../app/command-context.js';
|
|
2
|
+
import { type PromptContext } from '../../../shared/shared.prompts.js';
|
|
3
|
+
import { type ScanToolsOptions } from '../../../tools/shared/scan-tools.js';
|
|
4
|
+
import type { ToolInfo } from '../../../tools/shared/types.js';
|
|
5
|
+
import { type OatConfig } from '../../../../config/oat-config.js';
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import { type InstallBrainstormOptions, type InstallBrainstormResult } from './install-brainstorm.js';
|
|
8
|
+
type InstallScope = 'project' | 'user';
|
|
9
|
+
interface InitToolsBrainstormDependencies {
|
|
10
|
+
buildCommandContext: (options: GlobalOptions) => CommandContext;
|
|
11
|
+
resolveProjectRoot: (cwd: string) => Promise<string>;
|
|
12
|
+
resolveScopeRoot: (scope: InstallScope, cwd: string, home: string) => string;
|
|
13
|
+
resolveAssetsRoot: () => Promise<string>;
|
|
14
|
+
installBrainstorm: (options: InstallBrainstormOptions) => Promise<InstallBrainstormResult>;
|
|
15
|
+
confirmAction: (message: string, ctx: PromptContext) => Promise<boolean>;
|
|
16
|
+
scanTools: (options: ScanToolsOptions) => Promise<ToolInfo[]>;
|
|
17
|
+
readOatConfig: (repoRoot: string) => Promise<OatConfig>;
|
|
18
|
+
writeOatConfig: (repoRoot: string, config: OatConfig) => Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export declare function createInitToolsBrainstormCommand(overrides?: Partial<InitToolsBrainstormDependencies>): Command;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/brainstorm/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAM9B,KAAK,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvC,UAAU,+BAA+B;IACvC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,iBAAiB,EAAE,CACjB,OAAO,EAAE,wBAAwB,KAC9B,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACtC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AA+KD,wBAAgB,gCAAgC,CAC9C,SAAS,GAAE,OAAO,CAAC,+BAA+B,CAAM,GACvD,OAAO,CA2BT"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { buildCommandContext, } from '../../../../app/command-context.js';
|
|
2
|
+
import { resolvePackDefaultScope } from '../../../init/tools/shared/skill-manifest.js';
|
|
3
|
+
import { confirmAction, } from '../../../shared/shared.prompts.js';
|
|
4
|
+
import { readGlobalOptions } from '../../../shared/shared.utils.js';
|
|
5
|
+
import { canonicalPathsForPack, setInstalledCanonicalPaths, } from '../../../tools/shared/install-sync-context.js';
|
|
6
|
+
import { scanTools as defaultScanTools, } from '../../../tools/shared/scan-tools.js';
|
|
7
|
+
import { readOatConfig as defaultReadOatConfig, writeOatConfig as defaultWriteOatConfig, } from '../../../../config/oat-config.js';
|
|
8
|
+
import { resolveAssetsRoot } from '../../../../fs/assets.js';
|
|
9
|
+
import { resolveProjectRoot, resolveScopeRoot } from '../../../../fs/paths.js';
|
|
10
|
+
import { Command } from 'commander';
|
|
11
|
+
import { installBrainstorm as defaultInstallBrainstorm, } from './install-brainstorm.js';
|
|
12
|
+
const DEFAULT_DEPENDENCIES = {
|
|
13
|
+
buildCommandContext,
|
|
14
|
+
resolveProjectRoot,
|
|
15
|
+
resolveScopeRoot,
|
|
16
|
+
resolveAssetsRoot,
|
|
17
|
+
installBrainstorm: defaultInstallBrainstorm,
|
|
18
|
+
confirmAction,
|
|
19
|
+
scanTools: defaultScanTools,
|
|
20
|
+
readOatConfig: defaultReadOatConfig,
|
|
21
|
+
writeOatConfig: defaultWriteOatConfig,
|
|
22
|
+
};
|
|
23
|
+
async function resolveInstallScope(context, projectRoot, userRoot, assetsRoot, dependencies) {
|
|
24
|
+
// Honor explicit --scope before any existing-install or default
|
|
25
|
+
// resolution so callers can always override.
|
|
26
|
+
if (context.scope === 'project') {
|
|
27
|
+
return { scope: 'project', source: 'explicit' };
|
|
28
|
+
}
|
|
29
|
+
if (context.scope === 'user') {
|
|
30
|
+
return { scope: 'user', source: 'explicit' };
|
|
31
|
+
}
|
|
32
|
+
// Existing-install detection MUST short-circuit before PACK_METADATA
|
|
33
|
+
// defaultScope is consulted, so re-installing a pack already placed at
|
|
34
|
+
// a particular scope never silently migrates the user across scopes.
|
|
35
|
+
const [projectTools, userTools] = await Promise.all([
|
|
36
|
+
dependencies.scanTools({
|
|
37
|
+
scope: 'project',
|
|
38
|
+
scopeRoot: projectRoot,
|
|
39
|
+
assetsRoot,
|
|
40
|
+
}),
|
|
41
|
+
dependencies.scanTools({
|
|
42
|
+
scope: 'user',
|
|
43
|
+
scopeRoot: userRoot,
|
|
44
|
+
assetsRoot,
|
|
45
|
+
}),
|
|
46
|
+
]);
|
|
47
|
+
const installedAtProject = projectTools.some((tool) => tool.pack === 'brainstorm');
|
|
48
|
+
const installedAtUser = userTools.some((tool) => tool.pack === 'brainstorm');
|
|
49
|
+
if (installedAtProject) {
|
|
50
|
+
return { scope: 'project', source: 'existing-install' };
|
|
51
|
+
}
|
|
52
|
+
if (installedAtUser) {
|
|
53
|
+
return { scope: 'user', source: 'existing-install' };
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
scope: resolvePackDefaultScope('brainstorm'),
|
|
57
|
+
source: 'pack-default',
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function getCountSummary(result) {
|
|
61
|
+
return {
|
|
62
|
+
skills: `copied=${result.copiedSkills.length}, updated=${result.updatedSkills.length}, skipped=${result.skippedSkills.length}`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function reportSuccess(context, scope, targetRoot, assetsRoot, result) {
|
|
66
|
+
if (context.json) {
|
|
67
|
+
context.logger.json({
|
|
68
|
+
status: 'ok',
|
|
69
|
+
scope,
|
|
70
|
+
targetRoot,
|
|
71
|
+
assetsRoot,
|
|
72
|
+
result,
|
|
73
|
+
});
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const counts = getCountSummary(result);
|
|
77
|
+
context.logger.info('Installed brainstorm tool pack.');
|
|
78
|
+
context.logger.info(`Scope: ${scope}`);
|
|
79
|
+
context.logger.info(`Target root: ${targetRoot}`);
|
|
80
|
+
context.logger.info(`Skills: ${counts.skills}`);
|
|
81
|
+
context.logger.info(`Run: oat sync --scope ${scope}`);
|
|
82
|
+
}
|
|
83
|
+
async function persistConfigAfterInstall(projectRoot, dependencies) {
|
|
84
|
+
const config = await dependencies.readOatConfig(projectRoot);
|
|
85
|
+
const tools = { ...(config.tools ?? {}), brainstorm: true };
|
|
86
|
+
await dependencies.writeOatConfig(projectRoot, { ...config, tools });
|
|
87
|
+
}
|
|
88
|
+
async function runInitToolsBrainstorm(context, options, dependencies) {
|
|
89
|
+
try {
|
|
90
|
+
const projectRoot = await dependencies.resolveProjectRoot(context.cwd);
|
|
91
|
+
const userRoot = dependencies.resolveScopeRoot('user', context.cwd, context.home);
|
|
92
|
+
const assetsRoot = await dependencies.resolveAssetsRoot();
|
|
93
|
+
const { scope } = await resolveInstallScope(context, projectRoot, userRoot, assetsRoot, dependencies);
|
|
94
|
+
const targetRoot = scope === 'project' ? projectRoot : userRoot;
|
|
95
|
+
if (options.force && context.interactive) {
|
|
96
|
+
const confirmed = await dependencies.confirmAction(`Force overwrite existing brainstorm assets in ${scope} scope?`, { interactive: context.interactive });
|
|
97
|
+
if (!confirmed) {
|
|
98
|
+
if (!context.json) {
|
|
99
|
+
context.logger.info('Cancelled: no files were overwritten.');
|
|
100
|
+
}
|
|
101
|
+
process.exitCode = 0;
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const result = await dependencies.installBrainstorm({
|
|
106
|
+
assetsRoot,
|
|
107
|
+
targetRoot,
|
|
108
|
+
force: options.force,
|
|
109
|
+
});
|
|
110
|
+
// Persist tools.brainstorm: true to .oat/config.json after a
|
|
111
|
+
// successful install so config-write semantics match the main
|
|
112
|
+
// installer flow used by `oat init tools`.
|
|
113
|
+
await persistConfigAfterInstall(projectRoot, dependencies);
|
|
114
|
+
reportSuccess(context, scope, targetRoot, assetsRoot, result);
|
|
115
|
+
process.exitCode = 0;
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
120
|
+
if (context.json) {
|
|
121
|
+
context.logger.json({ status: 'error', message });
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
context.logger.error(message);
|
|
125
|
+
}
|
|
126
|
+
process.exitCode = 1;
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
export function createInitToolsBrainstormCommand(overrides = {}) {
|
|
131
|
+
const dependencies = {
|
|
132
|
+
...DEFAULT_DEPENDENCIES,
|
|
133
|
+
...overrides,
|
|
134
|
+
};
|
|
135
|
+
return new Command('brainstorm')
|
|
136
|
+
.description('Install OAT brainstorm skill (always-on entry point with visual companion)')
|
|
137
|
+
.option('--force', 'Overwrite existing files where applicable')
|
|
138
|
+
.action(async (options, command) => {
|
|
139
|
+
const context = dependencies.buildCommandContext(readGlobalOptions(command));
|
|
140
|
+
const didInstall = await runInitToolsBrainstorm(context, options, dependencies);
|
|
141
|
+
if (didInstall) {
|
|
142
|
+
setInstalledCanonicalPaths(command, canonicalPathsForPack('brainstorm'));
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BRAINSTORM_SKILLS } from '../../../init/tools/shared/skill-manifest.js';
|
|
2
|
+
export { BRAINSTORM_SKILLS };
|
|
3
|
+
export interface InstallBrainstormOptions {
|
|
4
|
+
assetsRoot: string;
|
|
5
|
+
targetRoot: string;
|
|
6
|
+
force?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface InstallBrainstormResult {
|
|
9
|
+
copiedSkills: string[];
|
|
10
|
+
updatedSkills: string[];
|
|
11
|
+
skippedSkills: string[];
|
|
12
|
+
outdatedSkills: Array<{
|
|
13
|
+
name: string;
|
|
14
|
+
installed: string | null;
|
|
15
|
+
bundled: string | null;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
export declare function installBrainstorm(options: InstallBrainstormOptions): Promise<InstallBrainstormResult>;
|
|
19
|
+
//# sourceMappingURL=install-brainstorm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-brainstorm.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/brainstorm/install-brainstorm.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAE/E,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,KAAK,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC,CAAC;CACJ;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAqClC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { join } from 'node:path';
|
|
2
|
+
import { copyDirWithVersionCheck } from '../../../init/tools/shared/copy-helpers.js';
|
|
3
|
+
import { BRAINSTORM_SKILLS } from '../../../init/tools/shared/skill-manifest.js';
|
|
4
|
+
export { BRAINSTORM_SKILLS };
|
|
5
|
+
export async function installBrainstorm(options) {
|
|
6
|
+
const force = options.force ?? false;
|
|
7
|
+
const result = {
|
|
8
|
+
copiedSkills: [],
|
|
9
|
+
updatedSkills: [],
|
|
10
|
+
skippedSkills: [],
|
|
11
|
+
outdatedSkills: [],
|
|
12
|
+
};
|
|
13
|
+
for (const skill of BRAINSTORM_SKILLS) {
|
|
14
|
+
const source = join(options.assetsRoot, 'skills', skill);
|
|
15
|
+
const destination = join(options.targetRoot, '.agents', 'skills', skill);
|
|
16
|
+
// The visual-companion bundle (scripts/, references/) ships under the
|
|
17
|
+
// skill directory and copies along with it via copyDirWithVersionCheck.
|
|
18
|
+
const copyResult = await copyDirWithVersionCheck(source, destination, force);
|
|
19
|
+
if (copyResult.status === 'copied') {
|
|
20
|
+
result.copiedSkills.push(skill);
|
|
21
|
+
}
|
|
22
|
+
else if (copyResult.status === 'updated') {
|
|
23
|
+
result.updatedSkills.push(skill);
|
|
24
|
+
}
|
|
25
|
+
else if (copyResult.status === 'outdated') {
|
|
26
|
+
result.outdatedSkills.push({
|
|
27
|
+
name: skill,
|
|
28
|
+
installed: copyResult.installedVersion ?? null,
|
|
29
|
+
bundled: copyResult.bundledVersion ?? null,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
result.skippedSkills.push(skill);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
@@ -6,6 +6,7 @@ import type { ToolInfo } from '../../tools/shared/types.js';
|
|
|
6
6
|
import { type OatConfig } from '../../../config/oat-config.js';
|
|
7
7
|
import type { ConcreteScope } from '../../../shared/types.js';
|
|
8
8
|
import { Command } from 'commander';
|
|
9
|
+
import { type InstallBrainstormOptions, type InstallBrainstormResult } from './brainstorm/install-brainstorm.js';
|
|
9
10
|
import { type InstallCoreOptions, type InstallCoreResult } from './core/install-core.js';
|
|
10
11
|
import { type InstallDocsOptions, type InstallDocsResult } from './docs/install-docs.js';
|
|
11
12
|
import { type InstallIdeasOptions, type InstallIdeasResult } from './ideas/install-ideas.js';
|
|
@@ -15,7 +16,7 @@ import { type InstallUtilityOptions, type InstallUtilityResult } from './utility
|
|
|
15
16
|
import { type InstallWorkflowsOptions, type InstallWorkflowsResult } from './workflows/install-workflows.js';
|
|
16
17
|
type InstallScope = 'project' | 'user';
|
|
17
18
|
type PackInstallTarget = InstallScope | 'both';
|
|
18
|
-
export type ToolPack = 'core' | 'ideas' | 'docs' | 'workflows' | 'utility' | 'project-management' | 'research';
|
|
19
|
+
export type ToolPack = 'core' | 'ideas' | 'docs' | 'workflows' | 'utility' | 'project-management' | 'research' | 'brainstorm';
|
|
19
20
|
export interface InitToolsDependencies {
|
|
20
21
|
buildCommandContext: (options: GlobalOptions) => CommandContext;
|
|
21
22
|
resolveProjectRoot: (cwd: string) => Promise<string>;
|
|
@@ -31,6 +32,7 @@ export interface InitToolsDependencies {
|
|
|
31
32
|
installUtility: (options: InstallUtilityOptions) => Promise<InstallUtilityResult>;
|
|
32
33
|
installProjectManagement: (options: InstallProjectManagementOptions) => Promise<InstallProjectManagementResult>;
|
|
33
34
|
installResearch: (options: InstallResearchOptions) => Promise<InstallResearchResult>;
|
|
35
|
+
installBrainstorm: (options: InstallBrainstormOptions) => Promise<InstallBrainstormResult>;
|
|
34
36
|
copyDirWithStatus: (source: string, destination: string, force: boolean) => Promise<'copied' | 'updated' | 'skipped'>;
|
|
35
37
|
removeDirectory: (target: string) => Promise<void>;
|
|
36
38
|
removeFile: (target: string) => Promise<void>;
|
|
@@ -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,EACnB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,KAAK,mBAAmB,EAGzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,YAAY,EAGlB,MAAM,iCAAiC,CAAC;AAOzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACL,KAAK,SAAS,EAIf,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAEL,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACpC,MAAM,iDAAiD,CAAC;AAEzD,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/index.ts"],"names":[],"mappings":"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"}
|