@grant-vine/wunderkind 0.8.0 → 0.9.2
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/.claude-plugin/plugin.json +1 -1
- package/README.md +209 -27
- package/commands/docs-index.md +44 -0
- package/dist/agents/docs-config.d.ts +6 -0
- package/dist/agents/docs-config.d.ts.map +1 -1
- package/dist/agents/docs-config.js +15 -1
- package/dist/agents/docs-config.js.map +1 -1
- package/dist/agents/docs-index-plan.d.ts +28 -0
- package/dist/agents/docs-index-plan.d.ts.map +1 -0
- package/dist/agents/docs-index-plan.js +118 -0
- package/dist/agents/docs-index-plan.js.map +1 -0
- package/dist/cli/cli-installer.d.ts +9 -1
- package/dist/cli/cli-installer.d.ts.map +1 -1
- package/dist/cli/cli-installer.js +65 -7
- package/dist/cli/cli-installer.js.map +1 -1
- package/dist/cli/config-manager/index.d.ts +17 -1
- package/dist/cli/config-manager/index.d.ts.map +1 -1
- package/dist/cli/config-manager/index.js +415 -177
- package/dist/cli/config-manager/index.js.map +1 -1
- package/dist/cli/doctor.d.ts +4 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +113 -35
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/index.js +69 -22
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +0 -4
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +144 -38
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/personality-meta.d.ts +8 -0
- package/dist/cli/personality-meta.d.ts.map +1 -0
- package/dist/cli/personality-meta.js +213 -0
- package/dist/cli/personality-meta.js.map +1 -0
- package/dist/cli/tui-installer.d.ts.map +1 -1
- package/dist/cli/tui-installer.js +57 -42
- package/dist/cli/tui-installer.js.map +1 -1
- package/dist/cli/types.d.ts +34 -22
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/uninstall.d.ts +6 -0
- package/dist/cli/uninstall.d.ts.map +1 -0
- package/dist/cli/uninstall.js +64 -0
- package/dist/cli/uninstall.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -8
- package/dist/index.js.map +1 -1
- package/package.json +3 -1
- package/schemas/wunderkind.config.schema.json +67 -0
package/README.md
CHANGED
|
@@ -16,8 +16,10 @@ Wunderkind provides a tiered CLI for installation, project setup, and health che
|
|
|
16
16
|
| Command | Purpose | Modifies |
|
|
17
17
|
|---|---|---|
|
|
18
18
|
| `wunderkind install` | Registers the plugin in OpenCode | `opencode.json` (Global or Project) |
|
|
19
|
+
| `wunderkind upgrade` | Upgrade lifecycle entry point for existing installs | None yet (surface only) |
|
|
19
20
|
| `wunderkind init` | Bootstraps a project with soul files | `.wunderkind/`, `AGENTS.md`, `.sisyphus/` |
|
|
20
21
|
| `wunderkind doctor` | Read-only diagnostics | None |
|
|
22
|
+
| `wunderkind uninstall` | Safely removes Wunderkind plugin wiring | OpenCode plugin config (+ global Wunderkind config when applicable) |
|
|
21
23
|
| `wunderkind gitignore` | Adds AI traces to `.gitignore` | `.gitignore` |
|
|
22
24
|
|
|
23
25
|
---
|
|
@@ -55,20 +57,16 @@ The guide contains all flags for non-interactive install so the agent can run a
|
|
|
55
57
|
### Interactive TUI (recommended)
|
|
56
58
|
|
|
57
59
|
```bash
|
|
58
|
-
bunx @grant-vine/wunderkind
|
|
60
|
+
bunx @grant-vine/wunderkind install
|
|
59
61
|
```
|
|
60
62
|
|
|
61
63
|
or
|
|
62
64
|
|
|
63
|
-
```bash
|
|
64
|
-
npx @grant-vine/wunderkind
|
|
65
|
-
```
|
|
66
|
-
|
|
67
65
|
The TUI will guide you through:
|
|
68
66
|
1. Installing oh-my-openagent if it isn't already (runs its own setup flow first).
|
|
69
67
|
2. Selecting the install scope (Global vs Project).
|
|
70
|
-
3. Configuring your
|
|
71
|
-
4.
|
|
68
|
+
3. Configuring your shared baseline context: region, industry, and data-protection regulations.
|
|
69
|
+
4. Optionally initializing the current project immediately.
|
|
72
70
|
|
|
73
71
|
### Non-interactive install
|
|
74
72
|
|
|
@@ -98,6 +96,25 @@ bunx @grant-vine/wunderkind install --no-tui \
|
|
|
98
96
|
--primary-regulation=CCPA
|
|
99
97
|
```
|
|
100
98
|
|
|
99
|
+
> Running `wunderkind` with no subcommand now shows help and exits. Installation must be explicit via `wunderkind install`.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Upgrade
|
|
104
|
+
|
|
105
|
+
Wunderkind exposes an explicit upgrade lifecycle command:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
wunderkind upgrade --scope=global
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Current first-wave upgrade behavior is intentionally narrow:
|
|
112
|
+
- it validates that Wunderkind is already installed in the requested scope
|
|
113
|
+
- it preserves all project-local soul/docs settings
|
|
114
|
+
- it currently behaves as a safe no-op until future baseline override flags are introduced
|
|
115
|
+
|
|
116
|
+
This keeps the lifecycle concept explicit without overloading `install`.
|
|
117
|
+
|
|
101
118
|
---
|
|
102
119
|
|
|
103
120
|
## Init
|
|
@@ -113,10 +130,12 @@ wunderkind init [options]
|
|
|
113
130
|
| Option | Description | Default |
|
|
114
131
|
|---|---|---|
|
|
115
132
|
| `--docs-path <path>` | Relative path for agent docs output | `./docs` |
|
|
116
|
-
| `--docs-history-mode <mode>` | Update style
|
|
117
|
-
| `--
|
|
133
|
+
| `--docs-history-mode <mode>` | Update style: `overwrite` (default), `append-dated`, `new-dated-file`, `overwrite-archive` | `overwrite` |
|
|
134
|
+
| `--docs-enabled <yes\|no>` | Enable or disable documentation output | `no` |
|
|
118
135
|
| `--no-tui` | Skip interactive prompts | (false) |
|
|
119
136
|
|
|
137
|
+
Interactive `wunderkind init` always asks for team culture, org structure, and docs-output settings. It can also optionally walk you through specialist personality overrides; if you skip that step, Wunderkind keeps the current/default specialist personalities already in effect.
|
|
138
|
+
|
|
120
139
|
`wunderkind init` creates the following project "soul files":
|
|
121
140
|
- `.wunderkind/wunderkind.config.jsonc` — Project-specific configuration
|
|
122
141
|
- `AGENTS.md` — Project knowledge base for agents
|
|
@@ -132,6 +151,19 @@ wunderkind init [options]
|
|
|
132
151
|
| `new-dated-file` | Creates a new file with a date suffix |
|
|
133
152
|
| `overwrite-archive` | Overwrites the current file and archives the old one |
|
|
134
153
|
|
|
154
|
+
### JSON Schema
|
|
155
|
+
|
|
156
|
+
Generated Wunderkind config files now include a top-level `$schema` field for editor validation.
|
|
157
|
+
|
|
158
|
+
- Latest schema URL:
|
|
159
|
+
- `https://raw.githubusercontent.com/grant-vine/wunderkind/main/schemas/wunderkind.config.schema.json`
|
|
160
|
+
- Immutable tagged schema URLs should use the same path on a release tag:
|
|
161
|
+
- `https://raw.githubusercontent.com/grant-vine/wunderkind/<tag>/schemas/wunderkind.config.schema.json`
|
|
162
|
+
|
|
163
|
+
The schema is scope-aware:
|
|
164
|
+
- global config validates only baseline fields (`region`, `industry`, `primaryRegulation`, `secondaryRegulation`)
|
|
165
|
+
- project config validates only soul/personality/docs fields
|
|
166
|
+
|
|
135
167
|
---
|
|
136
168
|
|
|
137
169
|
## Doctor
|
|
@@ -150,6 +182,51 @@ wunderkind doctor
|
|
|
150
182
|
|
|
151
183
|
`wunderkind doctor` is strictly read-only and makes no changes to your filesystem.
|
|
152
184
|
|
|
185
|
+
### Doctor Verbose (`--verbose`)
|
|
186
|
+
|
|
187
|
+
`wunderkind doctor --verbose` additionally shows:
|
|
188
|
+
- Full path resolution for global and project OpenCode configs
|
|
189
|
+
- Active region, industry, and regulation baseline
|
|
190
|
+
- All agent personality settings with human-readable descriptions
|
|
191
|
+
- Docs output configuration (path, history mode, enabled status)
|
|
192
|
+
|
|
193
|
+
Example output (project context with defaults):
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
Agent Personalities
|
|
197
|
+
- ciso: pragmatic-risk-manager (Balances risk vs. velocity; default posture)
|
|
198
|
+
- fullstack: code-archaeologist (Deep digs into legacy systems; explains history)
|
|
199
|
+
- marketing: data-driven (Metrics and attribution first; no vanity metrics)
|
|
200
|
+
- qa: risk-based-pragmatist (Tests what matters most; ships with confidence)
|
|
201
|
+
- product: outcome-obsessed (Business outcomes and measurable impact first)
|
|
202
|
+
- ops: on-call-veteran (Incident-hardened; runbook-first)
|
|
203
|
+
- creative: pragmatic-problem-solver (Design that ships; form follows function)
|
|
204
|
+
- brand: authentic-builder (No spin; build trust through radical transparency)
|
|
205
|
+
- devrel: dx-engineer (Developer experience as a product; DX metrics)
|
|
206
|
+
- legal: pragmatic-advisor (Risk-calibrated; enables the business to move)
|
|
207
|
+
- support: systematic-triage (Classification, routing, and severity-driven)
|
|
208
|
+
- data analyst: insight-storyteller (Translates data into narratives for decisions)
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Uninstall
|
|
214
|
+
|
|
215
|
+
Safely remove Wunderkind plugin/config wiring:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
wunderkind uninstall
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Optional scope targeting:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
wunderkind uninstall --scope=global
|
|
225
|
+
wunderkind uninstall --scope=project
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
`wunderkind uninstall` removes Wunderkind plugin registration from OpenCode config. On global uninstall it also removes `~/.wunderkind/wunderkind.config.jsonc` (and the parent `~/.wunderkind/` directory if it becomes empty). For safety, it intentionally leaves project-local customization/bootstrap artifacts untouched (`.wunderkind/`, `AGENTS.md`, `.sisyphus/`, docs folders).
|
|
229
|
+
|
|
153
230
|
---
|
|
154
231
|
|
|
155
232
|
## Documentation Output
|
|
@@ -158,7 +235,7 @@ When enabled, agents can persist their decisions and strategies to your project'
|
|
|
158
235
|
|
|
159
236
|
1. **Enable** via `wunderkind init --docs-path ./docs`
|
|
160
237
|
2. **Configure** in `.wunderkind/wunderkind.config.jsonc` via `docsEnabled`, `docsPath`, and `docHistoryMode`.
|
|
161
|
-
3. **Index** via `/docs-index`. This is a **prompt
|
|
238
|
+
3. **Index** via `/docs-index`. This is currently a **prompt convention only**, not an executable Wunderkind CLI/runtime command. The current plugin surface can inject system instructions, but it cannot intercept raw user slash commands yet. Treat `/docs-index` as documentation guidance until a future runtime hook makes it executable.
|
|
162
239
|
|
|
163
240
|
---
|
|
164
241
|
|
|
@@ -171,6 +248,8 @@ When enabled, agents can persist their decisions and strategies to your project'
|
|
|
171
248
|
|
|
172
249
|
Wunderkind writes its own agent config to a separate file — it never modifies your existing oh-my-openagent configuration. Removing Wunderkind leaves oh-my-openagent intact.
|
|
173
250
|
|
|
251
|
+
> **Project-scope install note**: When installing with `--scope=project`, Wunderkind automatically writes `.opencode/oh-my-opencode.jsonc` to the current directory. This file configures the OMO agent suite for this project and is required for agents to load. Running `wunderkind init` also writes this file. If this file is missing, `wunderkind doctor` will report a warning.
|
|
252
|
+
|
|
174
253
|
---
|
|
175
254
|
|
|
176
255
|
## Agents
|
|
@@ -211,20 +290,23 @@ Agent models are determined by category inheritance configured in `oh-my-opencod
|
|
|
211
290
|
|
|
212
291
|
## Configuration
|
|
213
292
|
|
|
214
|
-
Wunderkind uses a
|
|
293
|
+
Wunderkind uses a split configuration model:
|
|
294
|
+
- global config stores shared market/regulation baseline
|
|
295
|
+
- project config stores soul/personality/docs settings
|
|
215
296
|
|
|
216
297
|
| File | Scope |
|
|
217
298
|
|---|---|
|
|
218
299
|
| `~/.wunderkind/wunderkind.config.jsonc` | Global baseline (applies to all projects) |
|
|
219
|
-
| `.wunderkind/wunderkind.config.jsonc` | Per-project
|
|
300
|
+
| `.wunderkind/wunderkind.config.jsonc` | Per-project soul/personality/docs settings |
|
|
220
301
|
|
|
221
|
-
Edit
|
|
302
|
+
Edit the global file to change region/industry/regulation defaults after install. Edit the project file to change team culture, personalities, or docs-output settings after init.
|
|
222
303
|
|
|
223
304
|
### Configuration Reference
|
|
224
305
|
|
|
225
306
|
```jsonc
|
|
226
|
-
//
|
|
307
|
+
// Global baseline config
|
|
227
308
|
{
|
|
309
|
+
"$schema": "https://raw.githubusercontent.com/grant-vine/wunderkind/main/schemas/wunderkind.config.schema.json",
|
|
228
310
|
// Geographic region — e.g. "South Africa", "United States", "United Kingdom", "Australia"
|
|
229
311
|
"region": "South Africa",
|
|
230
312
|
// Industry vertical — e.g. "SaaS", "FinTech", "eCommerce", "HealthTech"
|
|
@@ -232,44 +314,144 @@ Edit either file directly to change any value after install. The installer pre-f
|
|
|
232
314
|
// Primary data-protection regulation — e.g. "GDPR", "POPIA", "CCPA", "LGPD"
|
|
233
315
|
"primaryRegulation": "POPIA",
|
|
234
316
|
// Optional secondary regulation
|
|
235
|
-
"secondaryRegulation": ""
|
|
317
|
+
"secondaryRegulation": ""
|
|
318
|
+
}
|
|
319
|
+
```
|
|
236
320
|
|
|
321
|
+
```jsonc
|
|
322
|
+
// Project-local soul/docs config
|
|
323
|
+
{
|
|
324
|
+
"$schema": "https://raw.githubusercontent.com/grant-vine/wunderkind/main/schemas/wunderkind.config.schema.json",
|
|
237
325
|
// Team culture baseline — affects all agents' communication style and decision rigour
|
|
238
|
-
// "formal-strict" | "pragmatic-balanced" | "experimental-informal"
|
|
239
326
|
"teamCulture": "pragmatic-balanced",
|
|
240
327
|
// Org structure — "flat" (peers) | "hierarchical" (domain authority applies)
|
|
241
328
|
"orgStructure": "flat",
|
|
242
329
|
|
|
243
330
|
// Agent personalities — controls each agent's default character archetype
|
|
244
|
-
// CISO: "paranoid-enforcer" | "pragmatic-risk-manager" | "educator-collaborator"
|
|
245
331
|
"cisoPersonality": "pragmatic-risk-manager",
|
|
246
|
-
// CTO/Fullstack: "grizzled-sysadmin" | "startup-bro" | "code-archaeologist"
|
|
247
332
|
"ctoPersonality": "code-archaeologist",
|
|
248
|
-
// CMO/Marketing: "data-driven" | "brand-storyteller" | "growth-hacker"
|
|
249
333
|
"cmoPersonality": "data-driven",
|
|
250
|
-
// QA: "rule-enforcer" | "risk-based-pragmatist" | "rubber-duck"
|
|
251
334
|
"qaPersonality": "risk-based-pragmatist",
|
|
252
|
-
// Product: "user-advocate" | "velocity-optimizer" | "outcome-obsessed"
|
|
253
335
|
"productPersonality": "outcome-obsessed",
|
|
254
|
-
// Operations: "on-call-veteran" | "efficiency-maximiser" | "process-purist"
|
|
255
336
|
"opsPersonality": "on-call-veteran",
|
|
256
|
-
// Creative Director: "perfectionist-craftsperson" | "bold-provocateur" | "pragmatic-problem-solver"
|
|
257
337
|
"creativePersonality": "pragmatic-problem-solver",
|
|
258
|
-
// Brand Builder: "community-evangelist" | "pr-spinner" | "authentic-builder"
|
|
259
338
|
"brandPersonality": "authentic-builder",
|
|
339
|
+
"devrelPersonality": "dx-engineer",
|
|
340
|
+
"legalPersonality": "pragmatic-advisor",
|
|
341
|
+
"supportPersonality": "systematic-triage",
|
|
342
|
+
"dataAnalystPersonality": "insight-storyteller",
|
|
260
343
|
|
|
261
344
|
// Documentation Output (Init-only customizations)
|
|
262
|
-
// "true" | "false"
|
|
263
345
|
"docsEnabled": false,
|
|
264
|
-
// Relative path (e.g. "./docs", "./documentation")
|
|
265
346
|
"docsPath": "./docs",
|
|
266
|
-
// "overwrite" | "append-dated" | "new-dated-file" | "overwrite-archive"
|
|
267
347
|
"docHistoryMode": "overwrite"
|
|
268
348
|
}
|
|
269
349
|
```
|
|
270
350
|
|
|
271
351
|
---
|
|
272
352
|
|
|
353
|
+
## Personality Reference
|
|
354
|
+
|
|
355
|
+
Each agent's behaviour is controlled by a `*Personality` key in your project config. Choose the archetype that matches your team's operating style.
|
|
356
|
+
|
|
357
|
+
### CISO (`cisoPersonality`)
|
|
358
|
+
|
|
359
|
+
| Value | What it means |
|
|
360
|
+
|---|---|
|
|
361
|
+
| `paranoid-enforcer` | Maximum threat paranoia; blocks anything unproven |
|
|
362
|
+
| `pragmatic-risk-manager` | Balances risk vs. velocity; default posture (default) |
|
|
363
|
+
| `educator-collaborator` | Guides teams through security thinking collaboratively |
|
|
364
|
+
|
|
365
|
+
### CTO / Fullstack (`ctoPersonality`)
|
|
366
|
+
|
|
367
|
+
| Value | What it means |
|
|
368
|
+
|---|---|
|
|
369
|
+
| `grizzled-sysadmin` | Battle-hardened ops mindset; stability over novelty |
|
|
370
|
+
| `startup-bro` | Move fast; bias toward shipping |
|
|
371
|
+
| `code-archaeologist` | Deep digs into legacy systems; explains history (default) |
|
|
372
|
+
|
|
373
|
+
### CMO / Marketing (`cmoPersonality`)
|
|
374
|
+
|
|
375
|
+
| Value | What it means |
|
|
376
|
+
|---|---|
|
|
377
|
+
| `data-driven` | Metrics and attribution first; no vanity metrics (default) |
|
|
378
|
+
| `brand-storyteller` | Narrative and emotional resonance over raw data |
|
|
379
|
+
| `growth-hacker` | Experiments, loops, and funnel obsession |
|
|
380
|
+
|
|
381
|
+
### QA (`qaPersonality`)
|
|
382
|
+
|
|
383
|
+
| Value | What it means |
|
|
384
|
+
|---|---|
|
|
385
|
+
| `rule-enforcer` | Strict standards; gates every release |
|
|
386
|
+
| `risk-based-pragmatist` | Tests what matters most; ships with confidence (default) |
|
|
387
|
+
| `rubber-duck` | Walks devs through their own bugs; collaborative |
|
|
388
|
+
|
|
389
|
+
### Product (`productPersonality`)
|
|
390
|
+
|
|
391
|
+
| Value | What it means |
|
|
392
|
+
|---|---|
|
|
393
|
+
| `user-advocate` | User pain and delight over internal efficiency |
|
|
394
|
+
| `velocity-optimizer` | Throughput and cycle time over perfect specs |
|
|
395
|
+
| `outcome-obsessed` | Business outcomes and measurable impact first (default) |
|
|
396
|
+
|
|
397
|
+
### Operations (`opsPersonality`)
|
|
398
|
+
|
|
399
|
+
| Value | What it means |
|
|
400
|
+
|---|---|
|
|
401
|
+
| `on-call-veteran` | Incident-hardened; runbook-first (default) |
|
|
402
|
+
| `efficiency-maximiser` | Automates everything; cost and throughput focused |
|
|
403
|
+
| `process-purist` | Change management and process integrity |
|
|
404
|
+
|
|
405
|
+
### Creative Director (`creativePersonality`)
|
|
406
|
+
|
|
407
|
+
| Value | What it means |
|
|
408
|
+
|---|---|
|
|
409
|
+
| `perfectionist-craftsperson` | Pixel-perfect; never ships unpolished |
|
|
410
|
+
| `bold-provocateur` | Intentionally disruptive visual choices |
|
|
411
|
+
| `pragmatic-problem-solver` | Design that ships; form follows function (default) |
|
|
412
|
+
|
|
413
|
+
### Brand Builder (`brandPersonality`)
|
|
414
|
+
|
|
415
|
+
| Value | What it means |
|
|
416
|
+
|---|---|
|
|
417
|
+
| `community-evangelist` | Builds through authentic community engagement |
|
|
418
|
+
| `pr-spinner` | Narrative control and media-savvy messaging |
|
|
419
|
+
| `authentic-builder` | No spin; build trust through radical transparency (default) |
|
|
420
|
+
|
|
421
|
+
### DevRel (`devrelPersonality`)
|
|
422
|
+
|
|
423
|
+
| Value | What it means |
|
|
424
|
+
|---|---|
|
|
425
|
+
| `community-champion` | Forum presence, events, OSS contribution |
|
|
426
|
+
| `docs-perfectionist` | Every API documented; no gaps tolerated |
|
|
427
|
+
| `dx-engineer` | Developer experience as a product; DX metrics (default) |
|
|
428
|
+
|
|
429
|
+
### Legal Counsel (`legalPersonality`)
|
|
430
|
+
|
|
431
|
+
| Value | What it means |
|
|
432
|
+
|---|---|
|
|
433
|
+
| `cautious-gatekeeper` | Blocks anything legally ambiguous |
|
|
434
|
+
| `pragmatic-advisor` | Risk-calibrated; enables the business to move (default) |
|
|
435
|
+
| `plain-english-counselor` | Translates legalese into plain language |
|
|
436
|
+
|
|
437
|
+
### Support Engineer (`supportPersonality`)
|
|
438
|
+
|
|
439
|
+
| Value | What it means |
|
|
440
|
+
|---|---|
|
|
441
|
+
| `empathetic-resolver` | Treats every ticket as a relationship |
|
|
442
|
+
| `systematic-triage` | Classification, routing, and severity-driven (default) |
|
|
443
|
+
| `knowledge-builder` | Every fix becomes a doc; knowledge loop focus |
|
|
444
|
+
|
|
445
|
+
### Data Analyst (`dataAnalystPersonality`)
|
|
446
|
+
|
|
447
|
+
| Value | What it means |
|
|
448
|
+
|---|---|
|
|
449
|
+
| `rigorous-statistician` | Significance, confidence intervals, no p-hacking |
|
|
450
|
+
| `insight-storyteller` | Translates data into narratives for decisions (default) |
|
|
451
|
+
| `pragmatic-quant` | Good-enough analysis fast; directional signals |
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
273
455
|
## Directory Structure
|
|
274
456
|
|
|
275
457
|
### Per-project (gitignored automatically)
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Regenerate Wunderkind-managed project documentation and refresh the docs index
|
|
3
|
+
agent: wunderkind:product-wunderkind
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
You are coordinating the Wunderkind documentation refresh workflow for this project.
|
|
7
|
+
|
|
8
|
+
## Command
|
|
9
|
+
|
|
10
|
+
This command is invoked as `/wunderkind:docs-index`.
|
|
11
|
+
|
|
12
|
+
## Responsibilities
|
|
13
|
+
|
|
14
|
+
1. Inspect the configured docs directory and existing documentation files.
|
|
15
|
+
2. Use the Wunderkind docs ownership rules and canonical filenames from the local docs-index planning support.
|
|
16
|
+
3. Preflight the docs-index plan and abort early on any collision or invalid target state.
|
|
17
|
+
4. Launch one parallel background task per docs-eligible Wunderkind agent.
|
|
18
|
+
5. Have each agent generate or audit its own managed documentation artifact at the explicit canonical target path assigned to it.
|
|
19
|
+
6. Require each child task to return an explicit structured completion result for its own target file.
|
|
20
|
+
7. Consolidate the completed child results into a refreshed docs index, even if some children timed out or failed.
|
|
21
|
+
8. Only after full success across all planned children, run `init-deep` so the refreshed documentation structure is reflected in agent knowledge.
|
|
22
|
+
|
|
23
|
+
## Constraints
|
|
24
|
+
|
|
25
|
+
- Only docs-eligible Wunderkind agents should participate.
|
|
26
|
+
- One background task per eligible docs agent.
|
|
27
|
+
- Use canonical filenames and normalize non-canonical legacy files.
|
|
28
|
+
- Do not let individual agents invent output paths; use the explicit per-agent target paths from the docs-index plan.
|
|
29
|
+
- If the docs-index plan reports collisions, abort before fan-out.
|
|
30
|
+
- Each child must emit an explicit completion result for its own canonical target.
|
|
31
|
+
- If a critical failure occurs in generation or normalization, do **not** run `init-deep`.
|
|
32
|
+
- Surface partial failures clearly, but still write an index for the successfully completed child outputs.
|
|
33
|
+
|
|
34
|
+
## Notes
|
|
35
|
+
|
|
36
|
+
- This command is namespaced and should be treated as `/wunderkind:docs-index`.
|
|
37
|
+
- Use the configured docs path and history mode from project-local Wunderkind config.
|
|
38
|
+
- The coordinator owns orchestration and the docs index; individual agents own their own document outputs.
|
|
39
|
+
- Full success means all planned canonical files exist after the run and all children explicitly reported `complete`.
|
|
40
|
+
- Partial success means some child docs completed and can be indexed, but `init-deep` must be skipped.
|
|
41
|
+
|
|
42
|
+
<user-request>
|
|
43
|
+
$ARGUMENTS
|
|
44
|
+
</user-request>
|
|
@@ -3,6 +3,12 @@ export interface AgentDocsConfig {
|
|
|
3
3
|
canonicalFilename: string;
|
|
4
4
|
eligible: boolean;
|
|
5
5
|
}
|
|
6
|
+
export declare const DOCS_INDEX_RUNTIME_STATUS: {
|
|
7
|
+
readonly invocation: "/wunderkind:docs-index";
|
|
8
|
+
readonly executable: true;
|
|
9
|
+
readonly reason: "Implemented as a plugin command via commands/docs-index.md and intended to fan out parallel background doc tasks.";
|
|
10
|
+
};
|
|
11
|
+
export declare function getDocsEligibleAgentKeys(): string[];
|
|
6
12
|
export declare const AGENT_DOCS_CONFIG: Record<string, AgentDocsConfig>;
|
|
7
13
|
export declare function buildDocsInstruction(agentKey: string, docsPath: string, docHistoryMode: DocHistoryMode): string;
|
|
8
14
|
//# sourceMappingURL=docs-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-config.d.ts","sourceRoot":"","sources":["../../src/agents/docs-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAErD,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAiD7D,CAAA;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,GAC7B,MAAM,
|
|
1
|
+
{"version":3,"file":"docs-config.d.ts","sourceRoot":"","sources":["../../src/agents/docs-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAErD,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,yBAAyB;;;;CAI5B,CAAA;AAEV,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAInD;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAiD7D,CAAA;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,cAAc,GAC7B,MAAM,CAqBR"}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
export const DOCS_INDEX_RUNTIME_STATUS = {
|
|
2
|
+
invocation: "/wunderkind:docs-index",
|
|
3
|
+
executable: true,
|
|
4
|
+
reason: "Implemented as a plugin command via commands/docs-index.md and intended to fan out parallel background doc tasks.",
|
|
5
|
+
};
|
|
6
|
+
export function getDocsEligibleAgentKeys() {
|
|
7
|
+
return Object.entries(AGENT_DOCS_CONFIG)
|
|
8
|
+
.filter(([, config]) => config.eligible)
|
|
9
|
+
.map(([key]) => key);
|
|
10
|
+
}
|
|
1
11
|
export const AGENT_DOCS_CONFIG = {
|
|
2
12
|
"marketing-wunderkind": {
|
|
3
13
|
canonicalFilename: "marketing-strategy.md",
|
|
@@ -63,6 +73,10 @@ History mode: ${docHistoryMode}
|
|
|
63
73
|
|
|
64
74
|
Use the configured docs path exactly as provided: ${docsPath}
|
|
65
75
|
|
|
66
|
-
After writing,
|
|
76
|
+
After writing, participate in the \`/wunderkind:docs-index\` workflow to refresh the project documentation index.
|
|
77
|
+
|
|
78
|
+
Each eligible docs agent owns its own canonical document output. When your work is complete, return an explicit completion result for your target file so the coordinator can decide whether to write a partial index or a full success index.
|
|
79
|
+
|
|
80
|
+
The namespaced plugin command coordinates one parallel background task per eligible docs agent, writes the index from completed child outputs, and only runs \`init-deep\` after full success.`;
|
|
67
81
|
}
|
|
68
82
|
//# sourceMappingURL=docs-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-config.js","sourceRoot":"","sources":["../../src/agents/docs-config.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,iBAAiB,GAAoC;IAChE,sBAAsB,EAAE;QACtB,iBAAiB,EAAE,uBAAuB;QAC1C,QAAQ,EAAE,IAAI;KACf;IACD,mBAAmB,EAAE;QACnB,iBAAiB,EAAE,qBAAqB;QACxC,QAAQ,EAAE,IAAI;KACf;IACD,oBAAoB,EAAE;QACpB,iBAAiB,EAAE,sBAAsB;QACzC,QAAQ,EAAE,IAAI;KACf;IACD,sBAAsB,EAAE;QACtB,iBAAiB,EAAE,0BAA0B;QAC7C,QAAQ,EAAE,IAAI;KACf;IACD,eAAe,EAAE;QACf,iBAAiB,EAAE,qBAAqB;QACxC,QAAQ,EAAE,IAAI;KACf;IACD,eAAe,EAAE;QACf,iBAAiB,EAAE,iBAAiB;QACpC,QAAQ,EAAE,IAAI;KACf;IACD,iBAAiB,EAAE;QACjB,iBAAiB,EAAE,iBAAiB;QACpC,QAAQ,EAAE,IAAI;KACf;IACD,IAAI,EAAE;QACJ,iBAAiB,EAAE,uBAAuB;QAC1C,QAAQ,EAAE,IAAI;KACf;IACD,mBAAmB,EAAE;QACnB,iBAAiB,EAAE,qBAAqB;QACxC,QAAQ,EAAE,IAAI;KACf;IACD,eAAe,EAAE;QACf,iBAAiB,EAAE,gBAAgB;QACnC,QAAQ,EAAE,KAAK;KAChB;IACD,kBAAkB,EAAE;QAClB,iBAAiB,EAAE,kBAAkB;QACrC,QAAQ,EAAE,KAAK;KAChB;IACD,cAAc,EAAE;QACd,iBAAiB,EAAE,kBAAkB;QACrC,QAAQ,EAAE,KAAK;KAChB;CACF,CAAA;AAED,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,QAAgB,EAChB,cAA8B;IAE9B,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,0CAA0C,QAAQ,IAAI,MAAM,CAAC,iBAAiB;;gBAEvE,cAAc;;;;;;oDAMsB,QAAQ
|
|
1
|
+
{"version":3,"file":"docs-config.js","sourceRoot":"","sources":["../../src/agents/docs-config.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,UAAU,EAAE,wBAAwB;IACpC,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,mHAAmH;CACnH,CAAA;AAEV,MAAM,UAAU,wBAAwB;IACtC,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;SACrC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAoC;IAChE,sBAAsB,EAAE;QACtB,iBAAiB,EAAE,uBAAuB;QAC1C,QAAQ,EAAE,IAAI;KACf;IACD,mBAAmB,EAAE;QACnB,iBAAiB,EAAE,qBAAqB;QACxC,QAAQ,EAAE,IAAI;KACf;IACD,oBAAoB,EAAE;QACpB,iBAAiB,EAAE,sBAAsB;QACzC,QAAQ,EAAE,IAAI;KACf;IACD,sBAAsB,EAAE;QACtB,iBAAiB,EAAE,0BAA0B;QAC7C,QAAQ,EAAE,IAAI;KACf;IACD,eAAe,EAAE;QACf,iBAAiB,EAAE,qBAAqB;QACxC,QAAQ,EAAE,IAAI;KACf;IACD,eAAe,EAAE;QACf,iBAAiB,EAAE,iBAAiB;QACpC,QAAQ,EAAE,IAAI;KACf;IACD,iBAAiB,EAAE;QACjB,iBAAiB,EAAE,iBAAiB;QACpC,QAAQ,EAAE,IAAI;KACf;IACD,IAAI,EAAE;QACJ,iBAAiB,EAAE,uBAAuB;QAC1C,QAAQ,EAAE,IAAI;KACf;IACD,mBAAmB,EAAE;QACnB,iBAAiB,EAAE,qBAAqB;QACxC,QAAQ,EAAE,IAAI;KACf;IACD,eAAe,EAAE;QACf,iBAAiB,EAAE,gBAAgB;QACnC,QAAQ,EAAE,KAAK;KAChB;IACD,kBAAkB,EAAE;QAClB,iBAAiB,EAAE,kBAAkB;QACrC,QAAQ,EAAE,KAAK;KAChB;IACD,cAAc,EAAE;QACd,iBAAiB,EAAE,kBAAkB;QACrC,QAAQ,EAAE,KAAK;KAChB;CACF,CAAA;AAED,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,QAAgB,EAChB,cAA8B;IAE9B,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,OAAO,0CAA0C,QAAQ,IAAI,MAAM,CAAC,iBAAiB;;gBAEvE,cAAc;;;;;;oDAMsB,QAAQ;;;;;;+LAMmI,CAAA;AAC/L,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface DocsIndexPlanEntry {
|
|
2
|
+
agentKey: string;
|
|
3
|
+
canonicalFilename: string;
|
|
4
|
+
targetPath: string;
|
|
5
|
+
}
|
|
6
|
+
export type DocsIndexTaskStatus = "complete" | "failed" | "timed_out";
|
|
7
|
+
export interface DocsIndexTaskResult {
|
|
8
|
+
agentKey: string;
|
|
9
|
+
targetPath: string;
|
|
10
|
+
status: DocsIndexTaskStatus;
|
|
11
|
+
notes: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface DocsIndexPlan {
|
|
14
|
+
docsPath: string;
|
|
15
|
+
entries: DocsIndexPlanEntry[];
|
|
16
|
+
}
|
|
17
|
+
export interface DocsIndexAggregation {
|
|
18
|
+
completed: DocsIndexTaskResult[];
|
|
19
|
+
incomplete: DocsIndexTaskResult[];
|
|
20
|
+
canRunInitDeep: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function buildDocsIndexPlan(docsPath: string): DocsIndexPlan;
|
|
23
|
+
export declare function detectDocsIndexCollisions(plan: DocsIndexPlan): string[];
|
|
24
|
+
export declare function hasCompleteDocsIndexOutputs(plan: DocsIndexPlan, existingPaths: string[]): boolean;
|
|
25
|
+
export declare function buildDocsIndexCompletionTag(result: DocsIndexTaskResult): string;
|
|
26
|
+
export declare function parseDocsIndexCompletionTag(output: string): DocsIndexTaskResult | null;
|
|
27
|
+
export declare function aggregateDocsIndexResults(plan: DocsIndexPlan, results: DocsIndexTaskResult[], existingPaths: string[]): DocsIndexAggregation;
|
|
28
|
+
//# sourceMappingURL=docs-index-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-index-plan.d.ts","sourceRoot":"","sources":["../../src/agents/docs-index-plan.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAA;AAErE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,mBAAmB,CAAA;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,kBAAkB,EAAE,CAAA;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,mBAAmB,EAAE,CAAA;IAChC,UAAU,EAAE,mBAAmB,EAAE,CAAA;IACjC,cAAc,EAAE,OAAO,CAAA;CACxB;AAQD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAmBlE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,EAAE,CAcvE;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAGjG;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAU/E;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAkBtF;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,aAAa,EAAE,MAAM,EAAE,GACtB,oBAAoB,CAuDtB"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { AGENT_DOCS_CONFIG, getDocsEligibleAgentKeys } from "./docs-config.js";
|
|
2
|
+
function normalizeDocsPath(docsPath) {
|
|
3
|
+
const trimmed = docsPath.trim();
|
|
4
|
+
if (trimmed === "")
|
|
5
|
+
return "./docs";
|
|
6
|
+
return trimmed.endsWith("/") ? trimmed.slice(0, -1) : trimmed;
|
|
7
|
+
}
|
|
8
|
+
export function buildDocsIndexPlan(docsPath) {
|
|
9
|
+
const normalizedDocsPath = normalizeDocsPath(docsPath);
|
|
10
|
+
const entries = getDocsEligibleAgentKeys().map((agentKey) => {
|
|
11
|
+
const config = AGENT_DOCS_CONFIG[agentKey];
|
|
12
|
+
if (!config) {
|
|
13
|
+
throw new Error(`Unknown docs agent key: ${agentKey}`);
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
agentKey,
|
|
17
|
+
canonicalFilename: config.canonicalFilename,
|
|
18
|
+
targetPath: `${normalizedDocsPath}/${config.canonicalFilename}`,
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
docsPath: normalizedDocsPath,
|
|
23
|
+
entries,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function detectDocsIndexCollisions(plan) {
|
|
27
|
+
const seen = new Map();
|
|
28
|
+
const collisions = [];
|
|
29
|
+
for (const entry of plan.entries) {
|
|
30
|
+
const existing = seen.get(entry.targetPath);
|
|
31
|
+
if (existing) {
|
|
32
|
+
collisions.push(`${existing} <-> ${entry.agentKey} => ${entry.targetPath}`);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
seen.set(entry.targetPath, entry.agentKey);
|
|
36
|
+
}
|
|
37
|
+
return collisions;
|
|
38
|
+
}
|
|
39
|
+
export function hasCompleteDocsIndexOutputs(plan, existingPaths) {
|
|
40
|
+
const existing = new Set(existingPaths);
|
|
41
|
+
return plan.entries.every((entry) => existing.has(entry.targetPath));
|
|
42
|
+
}
|
|
43
|
+
export function buildDocsIndexCompletionTag(result) {
|
|
44
|
+
const notes = result.notes.join(" | ");
|
|
45
|
+
return [
|
|
46
|
+
"<wunderkind-docs-index-result>",
|
|
47
|
+
`agentKey=${result.agentKey}`,
|
|
48
|
+
`targetPath=${result.targetPath}`,
|
|
49
|
+
`status=${result.status}`,
|
|
50
|
+
`notes=${notes}`,
|
|
51
|
+
"</wunderkind-docs-index-result>",
|
|
52
|
+
].join("\n");
|
|
53
|
+
}
|
|
54
|
+
export function parseDocsIndexCompletionTag(output) {
|
|
55
|
+
const match = output.match(/<wunderkind-docs-index-result>\s*agentKey=(.+)\s*targetPath=(.+)\s*status=(complete|failed|timed_out)\s*notes=(.*)\s*<\/wunderkind-docs-index-result>/s);
|
|
56
|
+
if (!match)
|
|
57
|
+
return null;
|
|
58
|
+
const [, agentKey, targetPath, status, notes] = match;
|
|
59
|
+
if (agentKey === undefined || targetPath === undefined || status === undefined || notes === undefined) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
agentKey: agentKey.trim(),
|
|
64
|
+
targetPath: targetPath.trim(),
|
|
65
|
+
status: status.trim(),
|
|
66
|
+
notes: notes.trim() === "" ? [] : notes.split("|").map((item) => item.trim()).filter(Boolean),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export function aggregateDocsIndexResults(plan, results, existingPaths) {
|
|
70
|
+
const existing = new Set(existingPaths);
|
|
71
|
+
const resultsByEntry = new Map();
|
|
72
|
+
for (const result of results) {
|
|
73
|
+
const key = `${result.agentKey}::${result.targetPath}`;
|
|
74
|
+
const current = resultsByEntry.get(key);
|
|
75
|
+
if (current) {
|
|
76
|
+
current.push(result);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
resultsByEntry.set(key, [result]);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const completed = [];
|
|
83
|
+
const incomplete = [];
|
|
84
|
+
for (const entry of plan.entries) {
|
|
85
|
+
const key = `${entry.agentKey}::${entry.targetPath}`;
|
|
86
|
+
const matching = resultsByEntry.get(key) ?? [];
|
|
87
|
+
if (matching.length !== 1) {
|
|
88
|
+
incomplete.push({
|
|
89
|
+
agentKey: entry.agentKey,
|
|
90
|
+
targetPath: entry.targetPath,
|
|
91
|
+
status: "failed",
|
|
92
|
+
notes: [matching.length === 0 ? "missing completion result" : "duplicate completion results"],
|
|
93
|
+
});
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
const [result] = matching;
|
|
97
|
+
if (result === undefined) {
|
|
98
|
+
incomplete.push({
|
|
99
|
+
agentKey: entry.agentKey,
|
|
100
|
+
targetPath: entry.targetPath,
|
|
101
|
+
status: "failed",
|
|
102
|
+
notes: ["missing completion result"],
|
|
103
|
+
});
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (result.status === "complete" && existing.has(entry.targetPath)) {
|
|
107
|
+
completed.push(result);
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
incomplete.push(result);
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
completed,
|
|
114
|
+
incomplete,
|
|
115
|
+
canRunInitDeep: incomplete.length === 0 && completed.length === plan.entries.length,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=docs-index-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-index-plan.js","sourceRoot":"","sources":["../../src/agents/docs-index-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { InstallArgs } from "./types.js";
|
|
1
|
+
import type { InstallArgs, InstallScope } from "./types.js";
|
|
2
2
|
export declare const SYMBOLS: {
|
|
3
3
|
check: string;
|
|
4
4
|
cross: string;
|
|
@@ -19,5 +19,13 @@ export declare function validateNonTuiArgs(args: InstallArgs): {
|
|
|
19
19
|
valid: boolean;
|
|
20
20
|
errors: string[];
|
|
21
21
|
};
|
|
22
|
+
export interface UpgradeArgs {
|
|
23
|
+
scope: InstallScope;
|
|
24
|
+
region?: string;
|
|
25
|
+
industry?: string;
|
|
26
|
+
primaryRegulation?: string;
|
|
27
|
+
secondaryRegulation?: string;
|
|
28
|
+
}
|
|
22
29
|
export declare function runCliInstaller(args: InstallArgs): Promise<number>;
|
|
30
|
+
export declare function runCliUpgrade(args: UpgradeArgs): Promise<number>;
|
|
23
31
|
//# sourceMappingURL=cli-installer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-installer.d.ts","sourceRoot":"","sources":["../../src/cli/cli-installer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"cli-installer.d.ts","sourceRoot":"","sources":["../../src/cli/cli-installer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAiB,YAAY,EAAE,MAAM,YAAY,CAAA;AAY1E,eAAO,MAAM,OAAO;;;;;;;;CAQnB,CAAA;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAKnD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE5E;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CA8B9D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAM1F;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAuGxE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAqEtE"}
|