godpowers 1.6.21 → 1.6.22
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/CHANGELOG.md +35 -0
- package/README.md +25 -9
- package/RELEASE.md +29 -18
- package/bin/install.js +81 -1
- package/fixtures/dogfood/extension-authoring/manifest.json +13 -0
- package/fixtures/dogfood/half-migrated-gsd/.planning/PROJECT.md +5 -0
- package/fixtures/dogfood/half-migrated-gsd/.planning/REQUIREMENTS.md +5 -0
- package/fixtures/dogfood/half-migrated-gsd/.planning/ROADMAP.md +5 -0
- package/fixtures/dogfood/half-migrated-gsd/manifest.json +16 -0
- package/fixtures/dogfood/host-degraded/manifest.json +5 -0
- package/fixtures/dogfood/host-full/home/.codex/agents/god-orchestrator.toml +2 -0
- package/fixtures/dogfood/host-full/manifest.json +5 -0
- package/fixtures/dogfood/suite-release-dry-run/.godpowers/suite-config.yaml +9 -0
- package/fixtures/dogfood/suite-release-dry-run/manifest.json +7 -0
- package/fixtures/dogfood/suite-release-dry-run/repo-a/package.json +4 -0
- package/fixtures/dogfood/suite-release-dry-run/repo-b/package.json +7 -0
- package/lib/README.md +3 -0
- package/lib/dashboard.js +30 -1
- package/lib/dogfood-runner.js +193 -0
- package/lib/extension-authoring.js +154 -0
- package/lib/feature-awareness.js +18 -0
- package/lib/host-capabilities.js +125 -0
- package/lib/release-surface-sync.js +6 -0
- package/lib/repo-surface-sync.js +58 -0
- package/lib/suite-state.js +90 -1
- package/package.json +4 -3
- package/routing/god-dogfood.yaml +35 -0
- package/skills/god-doctor.md +1 -1
- package/skills/god-dogfood.md +63 -0
- package/skills/god-version.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,41 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.6.22] - 2026-05-16
|
|
11
|
+
|
|
12
|
+
Dogfooding, host guarantees, extension authoring, and suite release dry-runs.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- Added `lib/dogfood-runner.js`, `/god-dogfood`, and `npx godpowers dogfood`
|
|
16
|
+
for deterministic messy-repo dogfood scenarios.
|
|
17
|
+
- Added `fixtures/dogfood/` scenarios for half-migrated GSD import,
|
|
18
|
+
degraded and full host guarantees, extension scaffolding, and Mode D suite
|
|
19
|
+
release dry-run planning.
|
|
20
|
+
- Added `lib/host-capabilities.js` and dashboard host guarantee reporting for
|
|
21
|
+
full, degraded, and unknown runtime capability states.
|
|
22
|
+
- Added compact dashboard rendering with `npx godpowers status --brief`.
|
|
23
|
+
- Added `lib/extension-authoring.js` and
|
|
24
|
+
`npx godpowers extension-scaffold --name=@scope/pack --output=.`.
|
|
25
|
+
- Added Mode D suite release dry-run planning through
|
|
26
|
+
`suiteState.planRelease`.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
- Release-surface sync now requires dogfood, host capability, and extension
|
|
30
|
+
authoring test gates.
|
|
31
|
+
- Repo-surface sync now checks dogfood runner presence, test wiring, and
|
|
32
|
+
required fixture manifests.
|
|
33
|
+
- Package payload checks now include dogfood fixtures and the new runtime
|
|
34
|
+
helpers.
|
|
35
|
+
- README, architecture, reference, release checklist, and runtime docs now
|
|
36
|
+
document dogfood, host guarantees, extension authoring, and suite dry-runs.
|
|
37
|
+
|
|
38
|
+
### Guardrails
|
|
39
|
+
- Dogfood runs copy fixtures into temporary directories before executing.
|
|
40
|
+
- Host capability detection does not require network access.
|
|
41
|
+
- Extension scaffolding does not overwrite existing files unless requested.
|
|
42
|
+
- Suite release dry-runs return planned writes and impacted dependents without
|
|
43
|
+
mutating sibling repositories.
|
|
44
|
+
|
|
10
45
|
## [1.6.21] - 2026-05-16
|
|
11
46
|
|
|
12
47
|
Dashboard compression, trace guardrails, and suite release readiness.
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/aihxp/godpowers/actions/workflows/ci.yml)
|
|
4
4
|
[](LICENSE)
|
|
5
|
-
[](CHANGELOG.md)
|
|
6
6
|
[](https://www.npmjs.com/package/godpowers)
|
|
7
7
|
|
|
8
8
|
**Ship fast. Ship right. Ship everything. Ship accountably.**
|
|
@@ -12,14 +12,15 @@ idea to hardened production. It runs as **slash commands inside your AI coding
|
|
|
12
12
|
tool** (Claude Code, Codex, Cursor, etc.) that orchestrate **specialist agents**
|
|
13
13
|
in fresh contexts to do the work.
|
|
14
14
|
|
|
15
|
-
Version 1.6.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
Version 1.6.22 turns the last "needs more outside use" gaps into executable
|
|
16
|
+
surface area. Godpowers now ships a messy-repo dogfood runner, dashboard host
|
|
17
|
+
guarantee reporting, compact dashboard output, extension scaffolding, and
|
|
18
|
+
Mode D suite release dry-run planning.
|
|
19
19
|
|
|
20
|
-
The dashboard now starts with an action brief
|
|
21
|
-
recommended, whether the project is ready,
|
|
22
|
-
|
|
20
|
+
The dashboard now starts with an action brief and a host guarantee line: the
|
|
21
|
+
next command, why it is recommended, whether the project is ready, the first
|
|
22
|
+
blockers that need attention, and whether the current host can provide full,
|
|
23
|
+
degraded, or unknown runtime guarantees.
|
|
23
24
|
|
|
24
25
|
It fuses four disciplines into one unified workflow:
|
|
25
26
|
|
|
@@ -120,7 +121,10 @@ runtime that can execute Node:
|
|
|
120
121
|
```bash
|
|
121
122
|
npx godpowers status --project=.
|
|
122
123
|
npx godpowers next --project=.
|
|
124
|
+
npx godpowers status --project=. --brief
|
|
123
125
|
npx godpowers status --project=. --json
|
|
126
|
+
npx godpowers dogfood
|
|
127
|
+
npx godpowers extension-scaffold --name=@godpowers/my-pack --output=.
|
|
124
128
|
```
|
|
125
129
|
|
|
126
130
|
### Slash Commands
|
|
@@ -145,6 +149,7 @@ npx godpowers status --project=. --json
|
|
|
145
149
|
| `/god-status` | Re-derive state from disk | (built-in) |
|
|
146
150
|
| `/god-automation-status` | Show host automation provider support | (built-in) |
|
|
147
151
|
| `/god-automation-setup` | Prepare opt-in automation setup | (built-in) |
|
|
152
|
+
| `/god-dogfood` | Run messy-repo dogfood scenarios for release and autonomy readiness | (built-in) |
|
|
148
153
|
| `/god-migrate` | Detect GSD, BMAD, and Superpowers context; import and sync back | god-greenfieldifier when needed |
|
|
149
154
|
| `/god-preflight` | Read-only intake audit before project-run readiness and pillars | god-auditor |
|
|
150
155
|
| `/god-audit` | Score artifacts against have-nots | god-auditor |
|
|
@@ -212,6 +217,17 @@ npx godpowers automation-status --project=.
|
|
|
212
217
|
npx godpowers automation-setup --project=.
|
|
213
218
|
```
|
|
214
219
|
|
|
220
|
+
Godpowers can dogfood itself against shipped messy-repo fixtures:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
npx godpowers dogfood
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
The dogfood suite covers a half-migrated GSD project, full and degraded host
|
|
227
|
+
guarantee detection, extension scaffold validation, and a Mode D suite release
|
|
228
|
+
dry-run. `/god-dogfood` reports failures with scoped specialist ownership
|
|
229
|
+
rather than treating fixture checks as silent background work.
|
|
230
|
+
|
|
215
231
|
Automation setup is opt-in. The installer does not create schedules, routines,
|
|
216
232
|
background agents, API triggers, or CI workflows. Safe starting templates are
|
|
217
233
|
read-only status, checkpoint, review queue, hygiene, and release readiness
|
|
@@ -362,7 +378,7 @@ Pi. T3 Code inherits from the underlying agent (Codex / Claude / OpenCode).
|
|
|
362
378
|
|
|
363
379
|
- [Getting Started](docs/getting-started.md)
|
|
364
380
|
- [Concepts](docs/concepts.md)
|
|
365
|
-
- [Command reference (all
|
|
381
|
+
- [Command reference (all 110 skills + 40 agents)](docs/reference.md)
|
|
366
382
|
- [Feature awareness](docs/feature-awareness.md)
|
|
367
383
|
- [Repository documentation sync](docs/repo-doc-sync.md)
|
|
368
384
|
- [Repository surface sync](docs/repo-surface-sync.md)
|
package/RELEASE.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# Godpowers 1.6.
|
|
1
|
+
# Godpowers 1.6.22 Release
|
|
2
2
|
|
|
3
3
|
Date: 2026-05-16
|
|
4
4
|
|
|
5
|
-
Godpowers 1.6.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
Godpowers 1.6.22 turns the remaining "needs more real use" risks into
|
|
6
|
+
executable surfaces. It adds deterministic messy-repo dogfooding, dashboard
|
|
7
|
+
host guarantees, compact status output, extension authoring scaffolds, and
|
|
8
|
+
Mode D suite release dry-run planning.
|
|
9
9
|
|
|
10
10
|
## What is stable
|
|
11
11
|
|
|
12
|
-
-
|
|
12
|
+
- 110 slash commands
|
|
13
13
|
- 40 specialist agents
|
|
14
14
|
- 13 executable workflows
|
|
15
15
|
- 40 intent recipes
|
|
@@ -28,21 +28,24 @@ dogfood, extension publish, Mode D suite, and installer smoke gates.
|
|
|
28
28
|
- Repository surface sync checks
|
|
29
29
|
- Route quality, recipe coverage, and release surface sync checks
|
|
30
30
|
- Dashboard action briefs for next-step compression
|
|
31
|
+
- Dashboard host guarantees for full, degraded, and unknown runtime capability
|
|
31
32
|
- Agent-spawn trace event guardrails
|
|
32
33
|
- Mode D suite readiness checks
|
|
34
|
+
- Messy-repo dogfood scenarios
|
|
35
|
+
- Extension authoring scaffold helper
|
|
36
|
+
- Mode D suite release dry-run planner
|
|
33
37
|
|
|
34
38
|
## What is new
|
|
35
39
|
|
|
36
|
-
- Added `
|
|
37
|
-
- Added
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
- Added
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
to declare `agent.start`.
|
|
40
|
+
- Added `lib/dogfood-runner.js`, `/god-dogfood`, and CLI `dogfood`.
|
|
41
|
+
- Added dogfood fixtures for half-migrated GSD import and sync-back, full and
|
|
42
|
+
degraded host guarantees, extension scaffold validation, and suite release
|
|
43
|
+
dry-run planning.
|
|
44
|
+
- Added `lib/host-capabilities.js` and dashboard host guarantee reporting.
|
|
45
|
+
- Added compact dashboard output through `--brief`.
|
|
46
|
+
- Added `lib/extension-authoring.js` and CLI `extension-scaffold`.
|
|
47
|
+
- Added `suiteState.planRelease` for Mode D dependent impact planning before
|
|
48
|
+
mutation.
|
|
46
49
|
|
|
47
50
|
## Automation surface behavior
|
|
48
51
|
|
|
@@ -59,6 +62,9 @@ For a Godpowers repository, the helper checks:
|
|
|
59
62
|
- release checklist policy names the current sync guards
|
|
60
63
|
- release gates include dogfood, extension publish, Mode D suite, and installer
|
|
61
64
|
smoke checks
|
|
65
|
+
- dogfood fixtures cover migration, host guarantees, extension authoring, and
|
|
66
|
+
suite release dry-runs
|
|
67
|
+
- host guarantees are visible in dashboard and compact dashboard output
|
|
62
68
|
|
|
63
69
|
Detection is read-only by default. Applying sync writes logs and leaves
|
|
64
70
|
judgment-heavy rewrites to scoped specialists.
|
|
@@ -77,11 +83,16 @@ Godpowers recommends scoped specialists only when judgment is needed:
|
|
|
77
83
|
- `god-roadmap-reconciler` for workflow or recipe lifecycle drift
|
|
78
84
|
- `god-coordinator` for extension pack drift
|
|
79
85
|
- `god-docs-writer` for release prose drift
|
|
86
|
+
- `god-greenfieldifier` for dogfood migration failures
|
|
87
|
+
- `god-context-writer` for host capability failures
|
|
80
88
|
|
|
81
89
|
## Validation
|
|
82
90
|
|
|
83
91
|
Release validation includes:
|
|
84
92
|
|
|
93
|
+
- `node scripts/test-dogfood-runner.js`
|
|
94
|
+
- `node scripts/test-host-capabilities.js`
|
|
95
|
+
- `node scripts/test-extension-authoring.js`
|
|
85
96
|
- `node scripts/test-repo-surface-sync.js`
|
|
86
97
|
- `node scripts/test-automation-surface-sync.js`
|
|
87
98
|
- `node scripts/test-repo-doc-sync.js`
|
|
@@ -97,5 +108,5 @@ Release validation includes:
|
|
|
97
108
|
- `git diff --check`
|
|
98
109
|
- `npm run release:check`
|
|
99
110
|
|
|
100
|
-
The `v1.6.
|
|
101
|
-
`godpowers@1.6.
|
|
111
|
+
The `v1.6.22` tag should point to the release commit that matches the npm
|
|
112
|
+
`godpowers@1.6.22` package.
|
package/bin/install.js
CHANGED
|
@@ -303,6 +303,12 @@ function parseArgs(argv) {
|
|
|
303
303
|
command: null,
|
|
304
304
|
project: process.cwd(),
|
|
305
305
|
json: false,
|
|
306
|
+
brief: false,
|
|
307
|
+
extensionName: null,
|
|
308
|
+
extensionOutput: process.cwd(),
|
|
309
|
+
extensionSkill: null,
|
|
310
|
+
extensionAgent: null,
|
|
311
|
+
extensionWorkflow: null,
|
|
306
312
|
runtimes: [],
|
|
307
313
|
global: false,
|
|
308
314
|
local: false,
|
|
@@ -318,11 +324,16 @@ function parseArgs(argv) {
|
|
|
318
324
|
case 'next':
|
|
319
325
|
case 'automation-status':
|
|
320
326
|
case 'automation-setup':
|
|
327
|
+
case 'dogfood':
|
|
328
|
+
case 'extension-scaffold':
|
|
321
329
|
opts.command = arg;
|
|
322
330
|
break;
|
|
323
331
|
case '--json':
|
|
324
332
|
opts.json = true;
|
|
325
333
|
break;
|
|
334
|
+
case '--brief':
|
|
335
|
+
opts.brief = true;
|
|
336
|
+
break;
|
|
326
337
|
case '--project':
|
|
327
338
|
if (args[i + 1]) {
|
|
328
339
|
opts.project = path.resolve(args[i + 1]);
|
|
@@ -351,6 +362,16 @@ function parseArgs(argv) {
|
|
|
351
362
|
default:
|
|
352
363
|
if (arg.startsWith('--project=')) {
|
|
353
364
|
opts.project = path.resolve(arg.slice('--project='.length));
|
|
365
|
+
} else if (arg.startsWith('--name=')) {
|
|
366
|
+
opts.extensionName = arg.slice('--name='.length);
|
|
367
|
+
} else if (arg.startsWith('--output=')) {
|
|
368
|
+
opts.extensionOutput = path.resolve(arg.slice('--output='.length));
|
|
369
|
+
} else if (arg.startsWith('--skill=')) {
|
|
370
|
+
opts.extensionSkill = arg.slice('--skill='.length);
|
|
371
|
+
} else if (arg.startsWith('--agent=')) {
|
|
372
|
+
opts.extensionAgent = arg.slice('--agent='.length);
|
|
373
|
+
} else if (arg.startsWith('--workflow=')) {
|
|
374
|
+
opts.extensionWorkflow = arg.slice('--workflow='.length);
|
|
354
375
|
} else if (arg.startsWith('--') && RUNTIMES[arg.slice(2)]) {
|
|
355
376
|
opts.runtimes.push(arg.slice(2));
|
|
356
377
|
}
|
|
@@ -575,10 +596,18 @@ function showHelp() {
|
|
|
575
596
|
log(' next Show the dashboard and recommended next command');
|
|
576
597
|
log(' automation-status Show host automation provider support');
|
|
577
598
|
log(' automation-setup Show an opt-in automation setup plan');
|
|
599
|
+
log(' dogfood Run built-in messy-repo dogfood scenarios');
|
|
600
|
+
log(' extension-scaffold Create a publishable extension pack skeleton');
|
|
578
601
|
log('');
|
|
579
602
|
log('Options:');
|
|
580
603
|
log(' --project=<path> Project root for status, next, or automation commands');
|
|
581
604
|
log(' --json Emit JSON for status, next, or automation commands');
|
|
605
|
+
log(' --brief Render a compact dashboard for status or next');
|
|
606
|
+
log(' --name=<scope/name> Extension package name for extension-scaffold');
|
|
607
|
+
log(' --output=<path> Extension output root for extension-scaffold');
|
|
608
|
+
log(' --skill=<name> Extension skill name for extension-scaffold');
|
|
609
|
+
log(' --agent=<name> Extension agent name for extension-scaffold');
|
|
610
|
+
log(' --workflow=<name> Extension workflow name for extension-scaffold');
|
|
582
611
|
log(' -g, --global Install globally (to config directory)');
|
|
583
612
|
log(' -l, --local Install locally (to current directory)');
|
|
584
613
|
log(' --claude Install for Claude Code');
|
|
@@ -605,6 +634,8 @@ function showHelp() {
|
|
|
605
634
|
log(' npx godpowers next --project=.');
|
|
606
635
|
log(' npx godpowers automation-status --project=.');
|
|
607
636
|
log(' npx godpowers automation-setup --project=.');
|
|
637
|
+
log(' npx godpowers dogfood');
|
|
638
|
+
log(' npx godpowers extension-scaffold --name=@godpowers/my-pack --output=.');
|
|
608
639
|
log(' npx godpowers --claude --global');
|
|
609
640
|
log(' npx godpowers --all');
|
|
610
641
|
log(' npx godpowers --codex --cursor');
|
|
@@ -630,7 +661,7 @@ function runDashboardCommand(opts) {
|
|
|
630
661
|
if (opts.json) {
|
|
631
662
|
console.log(JSON.stringify(result, null, 2));
|
|
632
663
|
} else {
|
|
633
|
-
|
|
664
|
+
console.log(dashboard.render(result, { brief: opts.brief }));
|
|
634
665
|
if (opts.command === 'next') {
|
|
635
666
|
console.log('');
|
|
636
667
|
console.log('Suggested next command:');
|
|
@@ -639,6 +670,45 @@ function runDashboardCommand(opts) {
|
|
|
639
670
|
}
|
|
640
671
|
}
|
|
641
672
|
|
|
673
|
+
function runDogfoodCommand(opts) {
|
|
674
|
+
const dogfood = require('../lib/dogfood-runner');
|
|
675
|
+
const result = dogfood.runAll();
|
|
676
|
+
if (opts.json) {
|
|
677
|
+
console.log(JSON.stringify(result, null, 2));
|
|
678
|
+
} else {
|
|
679
|
+
console.log(dogfood.render(result));
|
|
680
|
+
}
|
|
681
|
+
if (result.status !== 'pass') process.exit(1);
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
function runExtensionScaffoldCommand(opts) {
|
|
685
|
+
const authoring = require('../lib/extension-authoring');
|
|
686
|
+
if (!opts.extensionName) {
|
|
687
|
+
error('extension-scaffold requires --name=@scope/package');
|
|
688
|
+
process.exit(1);
|
|
689
|
+
}
|
|
690
|
+
const result = authoring.scaffold(opts.extensionOutput, {
|
|
691
|
+
name: opts.extensionName,
|
|
692
|
+
skill: opts.extensionSkill || undefined,
|
|
693
|
+
agent: opts.extensionAgent || undefined,
|
|
694
|
+
workflow: opts.extensionWorkflow || undefined,
|
|
695
|
+
runtimeVersion: VERSION
|
|
696
|
+
});
|
|
697
|
+
if (opts.json) {
|
|
698
|
+
console.log(JSON.stringify(result, null, 2));
|
|
699
|
+
} else {
|
|
700
|
+
success(`Scaffolded ${result.name} at ${result.path}`);
|
|
701
|
+
if (result.written.length > 0) {
|
|
702
|
+
log(`Wrote ${result.written.length} file(s): ${result.written.join(', ')}`);
|
|
703
|
+
}
|
|
704
|
+
if (result.validation.length > 0) {
|
|
705
|
+
warn(`Validation warnings: ${result.validation.join('; ')}`);
|
|
706
|
+
} else {
|
|
707
|
+
success('Extension manifest validates');
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
|
|
642
712
|
// ---------------------------------------------------------------------------
|
|
643
713
|
// Main
|
|
644
714
|
// ---------------------------------------------------------------------------
|
|
@@ -661,6 +731,16 @@ function main() {
|
|
|
661
731
|
return;
|
|
662
732
|
}
|
|
663
733
|
|
|
734
|
+
if (opts.command === 'dogfood') {
|
|
735
|
+
runDogfoodCommand(opts);
|
|
736
|
+
return;
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
if (opts.command === 'extension-scaffold') {
|
|
740
|
+
runExtensionScaffoldCommand(opts);
|
|
741
|
+
return;
|
|
742
|
+
}
|
|
743
|
+
|
|
664
744
|
console.log(BANNER);
|
|
665
745
|
|
|
666
746
|
const srcDir = path.resolve(__dirname, '..');
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Extension authoring scaffold",
|
|
3
|
+
"kind": "extension-authoring",
|
|
4
|
+
"extensionName": "@godpowers/dogfood-pack",
|
|
5
|
+
"expectedFiles": [
|
|
6
|
+
"manifest.yaml",
|
|
7
|
+
"package.json",
|
|
8
|
+
"README.md",
|
|
9
|
+
"skills/god-dogfood-extension.md",
|
|
10
|
+
"agents/god-dogfood-agent.md",
|
|
11
|
+
"workflows/dogfood-workflow.yaml"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Half migrated GSD project",
|
|
3
|
+
"kind": "planning-migration",
|
|
4
|
+
"actions": [
|
|
5
|
+
"import-planning-context",
|
|
6
|
+
"sync-back"
|
|
7
|
+
],
|
|
8
|
+
"expectedSystems": [
|
|
9
|
+
"gsd"
|
|
10
|
+
],
|
|
11
|
+
"expectedFiles": [
|
|
12
|
+
".godpowers/prep/IMPORTED-CONTEXT.md",
|
|
13
|
+
".godpowers/prd/PRD.md",
|
|
14
|
+
".planning/GODPOWERS-SYNC.md"
|
|
15
|
+
]
|
|
16
|
+
}
|
package/lib/README.md
CHANGED
|
@@ -13,11 +13,13 @@ package-level integrations.
|
|
|
13
13
|
| `intent.js` | Read and validate `intent.yaml` from project roots or `.godpowers/`. |
|
|
14
14
|
| `checkpoint.js` | Create and inspect resumable checkpoint artifacts. |
|
|
15
15
|
| `feature-awareness.js` | Detect and refresh existing-project awareness after runtime upgrades. |
|
|
16
|
+
| `host-capabilities.js` | Detect host guarantees for shell, git, npm, agent spawning, extension authoring, and suite dry-runs. |
|
|
16
17
|
| `repo-doc-sync.js` | Detect and refresh mechanical repository documentation surfaces. |
|
|
17
18
|
| `repo-surface-sync.js` | Detect structural drift across commands, routes, packages, agents, workflows, recipes, extensions, and release policy. |
|
|
18
19
|
| `route-quality-sync.js` | Detect symbolic route spawns, unresolved agent targets, and unapproved contextual route exits. |
|
|
19
20
|
| `recipe-coverage-sync.js` | Detect missing high-frequency intent recipe coverage. |
|
|
20
21
|
| `release-surface-sync.js` | Detect release-facing drift across badges, release notes, changelog, package checks, and release checklist policy. |
|
|
22
|
+
| `dogfood-runner.js` | Run deterministic messy-repo scenarios against migration, host, extension, and suite release behavior. |
|
|
21
23
|
| `budget.js` | Read and enforce configured budget controls. |
|
|
22
24
|
| `cost-tracker.js` | Track token and cost estimates from event streams. |
|
|
23
25
|
|
|
@@ -68,6 +70,7 @@ package-level integrations.
|
|
|
68
70
|
| `skillui-bridge.js` | Bridge skill metadata into UI surfaces. |
|
|
69
71
|
| `impeccable-bridge.js` | Bridge runtime checks into impeccable quality workflows. |
|
|
70
72
|
| `extensions.js` | Load and validate extension packs. |
|
|
73
|
+
| `extension-authoring.js` | Scaffold publishable extension packs with manifest, package, README, skill, agent, and workflow files. |
|
|
71
74
|
|
|
72
75
|
## Repository and graph helpers
|
|
73
76
|
|
package/lib/dashboard.js
CHANGED
|
@@ -14,6 +14,7 @@ const router = require('./router');
|
|
|
14
14
|
const automationProviders = require('./automation-providers');
|
|
15
15
|
const repoDocSync = require('./repo-doc-sync');
|
|
16
16
|
const repoSurfaceSync = require('./repo-surface-sync');
|
|
17
|
+
const hostCapabilities = require('./host-capabilities');
|
|
17
18
|
|
|
18
19
|
const GOD_DIR = '.godpowers';
|
|
19
20
|
const PRD_PATH = '.godpowers/prd/PRD.md';
|
|
@@ -168,6 +169,7 @@ function proactiveChecks(projectRoot, changedFiles = []) {
|
|
|
168
169
|
const repoSurfaceStatus = repoSurface.status === 'fresh'
|
|
169
170
|
? 'fresh'
|
|
170
171
|
: `${repoSurface.stale.length} stale, suggest /god-doctor`;
|
|
172
|
+
const host = hostCapabilities.detect(projectRoot);
|
|
171
173
|
|
|
172
174
|
return {
|
|
173
175
|
checkpoint,
|
|
@@ -175,6 +177,7 @@ function proactiveChecks(projectRoot, changedFiles = []) {
|
|
|
175
177
|
sync,
|
|
176
178
|
docs: repoDocsStatus,
|
|
177
179
|
repoSurface: repoSurfaceStatus,
|
|
180
|
+
host: hostCapabilities.summary(host),
|
|
178
181
|
runtime: 'not-applicable',
|
|
179
182
|
automation: automationSummary(projectRoot),
|
|
180
183
|
security: sensitiveChanged ? 'sensitive files changed, suggest /god-harden' : 'clear',
|
|
@@ -234,6 +237,7 @@ function compute(projectRoot, opts = {}) {
|
|
|
234
237
|
completionBasis: 'missing .godpowers/state.json'
|
|
235
238
|
},
|
|
236
239
|
proactive: proactiveChecks(projectRoot, git.entries.map(statusPath)),
|
|
240
|
+
host: hostCapabilities.detect(projectRoot, opts.host || {}),
|
|
237
241
|
next,
|
|
238
242
|
openItems: ['No .godpowers/state.json found']
|
|
239
243
|
};
|
|
@@ -263,6 +267,7 @@ function compute(projectRoot, opts = {}) {
|
|
|
263
267
|
index: git.index,
|
|
264
268
|
planning: planningVisibility(projectRoot, progress),
|
|
265
269
|
proactive: proactiveChecks(projectRoot, git.entries.map(statusPath)),
|
|
270
|
+
host: hostCapabilities.detect(projectRoot, opts.host || {}),
|
|
266
271
|
next,
|
|
267
272
|
openItems
|
|
268
273
|
};
|
|
@@ -277,6 +282,7 @@ function actionBrief(dashboard) {
|
|
|
277
282
|
for (const [label, value] of [
|
|
278
283
|
['Repo surface', proactive.repoSurface],
|
|
279
284
|
['Docs', proactive.docs],
|
|
285
|
+
['Host', proactive.host],
|
|
280
286
|
['Reviews', proactive.reviews],
|
|
281
287
|
['Sync', proactive.sync],
|
|
282
288
|
['Security', proactive.security],
|
|
@@ -285,6 +291,7 @@ function actionBrief(dashboard) {
|
|
|
285
291
|
]) {
|
|
286
292
|
if (!value) continue;
|
|
287
293
|
if (value === 'fresh' || value === 'none' || value === 'clear' || value === 'not-applicable') continue;
|
|
294
|
+
if (/^full on /.test(value)) continue;
|
|
288
295
|
if (/^available via /.test(value)) continue;
|
|
289
296
|
blockers.push(`${label}: ${value}`);
|
|
290
297
|
}
|
|
@@ -299,7 +306,7 @@ function actionBrief(dashboard) {
|
|
|
299
306
|
};
|
|
300
307
|
}
|
|
301
308
|
|
|
302
|
-
function render(dashboard) {
|
|
309
|
+
function render(dashboard, opts = {}) {
|
|
303
310
|
const current = dashboard.current || {};
|
|
304
311
|
const planning = dashboard.planning || {};
|
|
305
312
|
const proactive = dashboard.proactive || {};
|
|
@@ -311,6 +318,26 @@ function render(dashboard) {
|
|
|
311
318
|
? dashboard.openItems
|
|
312
319
|
: ['none'];
|
|
313
320
|
const brief = dashboard.actionBrief || actionBrief(dashboard);
|
|
321
|
+
if (opts.mode === 'brief' || opts.brief === true) {
|
|
322
|
+
return [
|
|
323
|
+
'Godpowers Dashboard',
|
|
324
|
+
'',
|
|
325
|
+
'Action brief:',
|
|
326
|
+
` Next: ${brief.recommended}`,
|
|
327
|
+
` Why: ${brief.reason}`,
|
|
328
|
+
` Readiness: ${brief.confidence}`,
|
|
329
|
+
` Attention: ${brief.blockers && brief.blockers.length > 0 ? brief.blockers.join('; ') : 'none'}${brief.overflow ? `; ${brief.overflow} more` : ''}`,
|
|
330
|
+
` Host guarantees: ${dashboard.host ? hostCapabilities.summary(dashboard.host) : proactive.host || 'unknown'}`,
|
|
331
|
+
'',
|
|
332
|
+
'Current status:',
|
|
333
|
+
` State: ${dashboard.state}`,
|
|
334
|
+
` Progress: ${progress.percent || 0}% workflow progress (${progress.completed || 0} of ${progress.total || 0} tracked steps complete)`,
|
|
335
|
+
'',
|
|
336
|
+
'Next:',
|
|
337
|
+
` Recommended: ${next.command || 'describe the next intent'}`,
|
|
338
|
+
` Why: ${next.reason || 'No route was computed.'}`
|
|
339
|
+
].join('\n');
|
|
340
|
+
}
|
|
314
341
|
|
|
315
342
|
return [
|
|
316
343
|
'Godpowers Dashboard',
|
|
@@ -330,6 +357,7 @@ function render(dashboard) {
|
|
|
330
357
|
` Why: ${brief.reason}`,
|
|
331
358
|
` Readiness: ${brief.confidence}`,
|
|
332
359
|
` Attention: ${brief.blockers && brief.blockers.length > 0 ? brief.blockers.join('; ') : 'none'}${brief.overflow ? `; ${brief.overflow} more` : ''}`,
|
|
360
|
+
` Host guarantees: ${dashboard.host ? hostCapabilities.summary(dashboard.host) : proactive.host || 'unknown'}`,
|
|
333
361
|
'',
|
|
334
362
|
'Planning visibility:',
|
|
335
363
|
` PRD: ${prd.status || 'missing'}${prd.path ? ` ${prd.path}` : ''}`,
|
|
@@ -343,6 +371,7 @@ function render(dashboard) {
|
|
|
343
371
|
` Sync: ${proactive.sync || 'unknown'}`,
|
|
344
372
|
` Docs: ${proactive.docs || 'unknown'}`,
|
|
345
373
|
` Repo surface: ${proactive.repoSurface || 'unknown'}`,
|
|
374
|
+
` Host: ${proactive.host || 'unknown'}`,
|
|
346
375
|
` Runtime: ${proactive.runtime || 'unknown'}`,
|
|
347
376
|
` Automation: ${proactive.automation || 'unknown'}`,
|
|
348
377
|
` Security: ${proactive.security || 'unknown'}`,
|