@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.
Files changed (47) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.md +209 -27
  3. package/commands/docs-index.md +44 -0
  4. package/dist/agents/docs-config.d.ts +6 -0
  5. package/dist/agents/docs-config.d.ts.map +1 -1
  6. package/dist/agents/docs-config.js +15 -1
  7. package/dist/agents/docs-config.js.map +1 -1
  8. package/dist/agents/docs-index-plan.d.ts +28 -0
  9. package/dist/agents/docs-index-plan.d.ts.map +1 -0
  10. package/dist/agents/docs-index-plan.js +118 -0
  11. package/dist/agents/docs-index-plan.js.map +1 -0
  12. package/dist/cli/cli-installer.d.ts +9 -1
  13. package/dist/cli/cli-installer.d.ts.map +1 -1
  14. package/dist/cli/cli-installer.js +65 -7
  15. package/dist/cli/cli-installer.js.map +1 -1
  16. package/dist/cli/config-manager/index.d.ts +17 -1
  17. package/dist/cli/config-manager/index.d.ts.map +1 -1
  18. package/dist/cli/config-manager/index.js +415 -177
  19. package/dist/cli/config-manager/index.js.map +1 -1
  20. package/dist/cli/doctor.d.ts +4 -0
  21. package/dist/cli/doctor.d.ts.map +1 -1
  22. package/dist/cli/doctor.js +113 -35
  23. package/dist/cli/doctor.js.map +1 -1
  24. package/dist/cli/index.js +69 -22
  25. package/dist/cli/index.js.map +1 -1
  26. package/dist/cli/init.d.ts +0 -4
  27. package/dist/cli/init.d.ts.map +1 -1
  28. package/dist/cli/init.js +144 -38
  29. package/dist/cli/init.js.map +1 -1
  30. package/dist/cli/personality-meta.d.ts +8 -0
  31. package/dist/cli/personality-meta.d.ts.map +1 -0
  32. package/dist/cli/personality-meta.js +213 -0
  33. package/dist/cli/personality-meta.js.map +1 -0
  34. package/dist/cli/tui-installer.d.ts.map +1 -1
  35. package/dist/cli/tui-installer.js +57 -42
  36. package/dist/cli/tui-installer.js.map +1 -1
  37. package/dist/cli/types.d.ts +34 -22
  38. package/dist/cli/types.d.ts.map +1 -1
  39. package/dist/cli/uninstall.d.ts +6 -0
  40. package/dist/cli/uninstall.d.ts.map +1 -0
  41. package/dist/cli/uninstall.js +64 -0
  42. package/dist/cli/uninstall.js.map +1 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +6 -8
  45. package/dist/index.js.map +1 -1
  46. package/package.json +3 -1
  47. package/schemas/wunderkind.config.schema.json +67 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wunderkind",
3
- "version": "0.8.0",
3
+ "version": "0.9.2",
4
4
  "description": "Wunderkind \u2014 specialist AI agents for any software product team, built as an oh-my-openagent addon",
5
5
  "main": "dist/index.js"
6
6
  }
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 project context: region, industry, and data-protection regulations.
71
- 4. Tailoring agent personalities and your team's culture baseline.
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 for documentation | `overwrite` |
117
- | `--no-docs` | Disable documentation output | (false) |
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-text slash command** that agents respond to (not a CLI command). Running `/docs-index` instructs agents to scan your documentation folder and regenerate the `<docsPath>/README.md` index.
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 hierarchical configuration system. The per-project config is merged on top of the global baseline at runtime — project values take precedence.
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 override |
300
+ | `.wunderkind/wunderkind.config.jsonc` | Per-project soul/personality/docs settings |
220
301
 
221
- Edit either file directly to change any value after install. The installer pre-fills both files with the values you provided during setup.
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
- // Wunderkind configuration — edit these values to tailor agents to your project context
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,CAiBR"}
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, run /docs-index to update the project documentation index.`;
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;;0EAEc,CAAA;AAC1E,CAAC"}
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;AAI5D,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,wBAAsB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAgGxE"}
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"}