@slowcook-ai/cli 0.19.0-alpha.14 → 0.19.0-alpha.16
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/AGENTS.md +27 -0
- package/REPORTING.md +40 -1
- package/dist/cli.js +13 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/garnish/index.d.ts +56 -0
- package/dist/commands/garnish/index.d.ts.map +1 -0
- package/dist/commands/garnish/index.js +281 -0
- package/dist/commands/garnish/index.js.map +1 -0
- package/dist/commands/garnish/trailer.d.ts +79 -0
- package/dist/commands/garnish/trailer.d.ts.map +1 -0
- package/dist/commands/garnish/trailer.js +118 -0
- package/dist/commands/garnish/trailer.js.map +1 -0
- package/dist/commands/run-mock/index.d.ts.map +1 -1
- package/dist/commands/run-mock/index.js +128 -21
- package/dist/commands/run-mock/index.js.map +1 -1
- package/package.json +4 -4
package/AGENTS.md
CHANGED
|
@@ -128,6 +128,8 @@ All commands accept `--help` for full flag listings. One-line summaries:
|
|
|
128
128
|
| `slowcook recipe --regression --bug-profile <path>` | Emit failing regression test for a sift'd bug | ~$0.50–1 |
|
|
129
129
|
| `slowcook sift --bug-profile <path>` | Narrow red→green ratchet for a bug fix, bounded by `fix_scope` | ~$0.50–2 |
|
|
130
130
|
| `slowcook refactor` | Read `.brewing/refactor/proposals.json`, rank by benefit/cost | $0 |
|
|
131
|
+
| `slowcook garnish` | Local commit-gate for human tweaks on agent work — runs scoped tests, commits with `Tweaks-output-of:` trailers (learning signal for the upstream agent) | $0 |
|
|
132
|
+
| `slowcook run-mock <story> --garnish` | DevTools Workspaces flow — boots mock locally, disables overlay, prints Chrome pairing instructions, auto-watches saves + auto-commits via garnish on green | $0 (per-commit; LLM only if test infra needs one) |
|
|
131
133
|
| `slowcook docs <topic>` | Print bundled doc (`reporting`, `agents`, `read-only`) | $0 |
|
|
132
134
|
| `slowcook help` | List all commands | $0 |
|
|
133
135
|
|
|
@@ -199,6 +201,31 @@ non-negotiable defaults unless the user specifically overrides.
|
|
|
199
201
|
- **Use `SLOWCOOK_READ_ONLY=1`** when reproducing a bug on someone else's
|
|
200
202
|
repo. Blocks every GitHub-side write.
|
|
201
203
|
|
|
204
|
+
### Local-developer flow (alternative to the remote overlay)
|
|
205
|
+
|
|
206
|
+
- **`slowcook garnish`** is the right command when you (or another
|
|
207
|
+
engineer) edits files on top of an agent's commit. It runs the
|
|
208
|
+
relevant tests, commits on green with trailers that record which
|
|
209
|
+
upstream agent's work you tweaked. Don't `git commit` by hand on
|
|
210
|
+
top of agent work — you lose the learning-signal trailer.
|
|
211
|
+
- **`slowcook run-mock <story> --garnish`** is the right command if
|
|
212
|
+
you want to edit the mock app via Chrome DevTools Workspaces.
|
|
213
|
+
It prints the one-time Chrome setup, then auto-garnishes on save.
|
|
214
|
+
The remote overlay is disabled in this mode — they're alternative
|
|
215
|
+
feedback channels, not stacked.
|
|
216
|
+
|
|
217
|
+
### CI/CD posture (2026-05-12)
|
|
218
|
+
|
|
219
|
+
- `main` is branch-protected: no force-push, no deletion. Admin
|
|
220
|
+
bypass is on, so solo merges still work. When you arrive as a
|
|
221
|
+
contributor, expect PR + 1 approval to land.
|
|
222
|
+
- Dependabot opens weekly grouped PRs (anthropic / vitest /
|
|
223
|
+
typescript / testing) and monthly GitHub Actions version PRs.
|
|
224
|
+
Auto-merge is OFF; everything goes through a human glance.
|
|
225
|
+
- Open ops backlog lives at [`docs/plans/ci-cd-roadmap.md`](./docs/plans/ci-cd-roadmap.md).
|
|
226
|
+
Two HIGH items are filed as GitHub issues; the rest are queued
|
|
227
|
+
in the doc until they become pressing.
|
|
228
|
+
|
|
202
229
|
---
|
|
203
230
|
|
|
204
231
|
## What to read next
|
package/REPORTING.md
CHANGED
|
@@ -142,7 +142,9 @@ without any custom bundling.
|
|
|
142
142
|
|
|
143
143
|
## Where to file
|
|
144
144
|
|
|
145
|
-
- **Public bug reports**: <https://github.com/aminazar/slowcook/issues
|
|
145
|
+
- **Public bug reports**: <https://github.com/aminazar/slowcook/issues>.
|
|
146
|
+
The bug-report issue template (auto-applied when you click "New issue")
|
|
147
|
+
asks for the four URLs the maintainer needs.
|
|
146
148
|
- **Private bug reports** (when artifacts can't be public): same repo,
|
|
147
149
|
**but file a public issue** with the description + your reproduction
|
|
148
150
|
arrangement. Don't paste private logs into a public issue. The
|
|
@@ -150,5 +152,42 @@ without any custom bundling.
|
|
|
150
152
|
|
|
151
153
|
---
|
|
152
154
|
|
|
155
|
+
## What you'll see when a fix ships
|
|
156
|
+
|
|
157
|
+
When the maintainer ships a fix in a new alpha (e.g., `cli@0.19.0-alpha.X`),
|
|
158
|
+
expect a comment on your bug issue along these lines:
|
|
159
|
+
|
|
160
|
+
> Fixed in `cli@0.19.0-alpha.X`. Bump your `.brewing/slowcook-cli-version`
|
|
161
|
+
> and re-run. Close this issue if resolved; comment if not.
|
|
162
|
+
>
|
|
163
|
+
> `<!-- slowcook:fix-notice cli=0.19.0-alpha.X issue=N -->`
|
|
164
|
+
|
|
165
|
+
The issue stays **open** until you confirm the fix worked. You close it.
|
|
166
|
+
That gives the maintainer signal that the fix actually landed in your
|
|
167
|
+
context — not just in slowcook's own test suite.
|
|
168
|
+
|
|
169
|
+
If the fix didn't work, comment on the issue with what's still broken.
|
|
170
|
+
The maintainer reopens (if you closed) or continues debugging.
|
|
171
|
+
|
|
172
|
+
## Triage labels
|
|
173
|
+
|
|
174
|
+
The slowcook repo uses a small label set so you can filter for what's
|
|
175
|
+
actionable:
|
|
176
|
+
|
|
177
|
+
| Label | Meaning |
|
|
178
|
+
|---|---|
|
|
179
|
+
| `bug` | Confirmed bug. Auto-applied by the issue template. |
|
|
180
|
+
| `needs-info` | Maintainer needs more context (additional URL, runner output, etc.). |
|
|
181
|
+
| `confirmed` | Maintainer reproduced; working on a fix. |
|
|
182
|
+
| `regression-test-pending` | Fix landed but the regression test is still TODO. |
|
|
183
|
+
| `fixed-in-α.X` | Fix shipped in `cli@0.19.0-alpha.X`. Reporter to confirm + close. |
|
|
184
|
+
| `blocked-on-anthropic` | Bug is in the Anthropic API / SDK, not slowcook. |
|
|
185
|
+
| `wont-fix` | Out of scope or incompatible with architectural intent. |
|
|
186
|
+
|
|
187
|
+
Filter via GitHub's issue search, e.g.:
|
|
188
|
+
`gh issue list --repo aminazar/slowcook --label "fixed-in-α.13"`
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
153
192
|
*This doc is intentionally short. Read [AGENTS.md](./AGENTS.md) for
|
|
154
193
|
the slowcook architecture overview.*
|
package/dist/cli.js
CHANGED
|
@@ -87,6 +87,7 @@ Commands available in ${VERSION}:
|
|
|
87
87
|
chef-drift (0.18.0-α.9 L1) Surgical drift-fixer. Triggered by mock-isolation / recon / brew / navigator halts.
|
|
88
88
|
chef-orchestrate (0.19.0-α.2 L3) Pipeline orchestrator. Decides redispatch_brew / rebase / escalate / close on a halted PR.
|
|
89
89
|
refactor (0.19.0-α.7) Rank refactor proposals by benefit/cost. Reads .brewing/refactor/proposals.json.
|
|
90
|
+
garnish (0.19.0-α.15) Local commit-gate for human tweaks on agent work. Runs tests, commits with learning-signal trailers.
|
|
90
91
|
catchup Detect + run pipeline steps that should have triggered but didn't.
|
|
91
92
|
brew Ratcheted implementation loop: flip red tests to green for one story.
|
|
92
93
|
map Generate / check the repo-wide code map (APIs, pages, components, helpers, types).
|
|
@@ -238,6 +239,18 @@ async function main() {
|
|
|
238
239
|
await docs(args.slice(1), VERSION);
|
|
239
240
|
return;
|
|
240
241
|
}
|
|
242
|
+
case "garnish":
|
|
243
|
+
// 0.19.0-α.15 — local commit-gate for human (or other-agent)
|
|
244
|
+
// tweaks layered on top of an agent's work. Detects uncommitted
|
|
245
|
+
// changes, runs scoped tests, commits with Tweaks-output-of:
|
|
246
|
+
// trailers marking each agent-authored file the tweak touched.
|
|
247
|
+
// A future `slowcook reflect` mines these trailers for learning
|
|
248
|
+
// signal (eval-set fixtures, prompt-amendment candidates).
|
|
249
|
+
{
|
|
250
|
+
const { garnish } = await import("./commands/garnish/index.js");
|
|
251
|
+
await garnish(args.slice(1), VERSION);
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
241
254
|
case "vibe":
|
|
242
255
|
// 0.15.0-α.1 — design-first mockup generator (plate-pipeline α.1).
|
|
243
256
|
// Reads spec + brownfield extracts + code-map; emits a runnable
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,uEAAuE;AACvE,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,yBAAyB;AACzB,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAC9D,MAAM,OAAO,GAAW,CAAC,GAAG,EAAE;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,eAAe,CAAC;IACzB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA4BU,OAAO
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,uEAAuE;AACvE,2EAA2E;AAC3E,yEAAyE;AACzE,uEAAuE;AACvE,yBAAyB;AACzB,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;AAC9D,MAAM,OAAO,GAAW,CAAC,GAAG,EAAE;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,OAAO,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,eAAe,CAAC;IACzB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA4BU,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiC9B,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACnC,OAAO;QACT,KAAK,OAAO;YACV,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,OAAO;QACT,KAAK,UAAU;YACb,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO;QACT,KAAK,gBAAgB;YACnB,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO;QACT,KAAK,iBAAiB;YACpB,MAAM,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,OAAO;QACT,KAAK,gBAAgB;YACnB,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO;QACT,KAAK,oBAAoB;YACvB,4DAA4D;YAC5D,8DAA8D;YAC9D,sDAAsD;YACtD,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO;QACT,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACX,2DAA2D;YAC3D,4DAA4D;YAC5D,6DAA6D;YAC7D,6DAA6D;YAC7D,0DAA0D;YAC1D,EAAE;YACF,2DAA2D;YAC3D,6DAA6D;YAC7D,4DAA4D;YAC5D,uDAAuD;YACvD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC3C,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO;QACT,KAAK,aAAa;YAChB,gEAAgE;YAChE,wEAAwE;YACxE,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1C,OAAO;QACT,KAAK,MAAM;YACT,+DAA+D;YAC/D,iEAAiE;YACjE,sCAAsC;YACtC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACnC,OAAO;QACT,KAAK,MAAM;YACT,4DAA4D;YAC5D,iEAAiE;YACjE,mDAAmD;YACnD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACnC,OAAO;QACT,KAAK,SAAS;YACZ,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO;QACT,KAAK,MAAM;YACT,6DAA6D;YAC7D,0DAA0D;YAC1D,6DAA6D;YAC7D,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACzC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;gBAChE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YACD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACnC,OAAO;QACT,KAAK,YAAY;YACf,+DAA+D;YAC/D,gEAAgE;YAChE,gEAAgE;YAChE,2DAA2D;YAC3D,oEAAoE;YACpE,oEAAoE;YACpE,CAAC;gBACC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;gBACnE,MAAM,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACxC,OAAO;YACT,CAAC;QACH,KAAK,kBAAkB;YACrB,iEAAiE;YACjE,gEAAgE;YAChE,gEAAgE;YAChE,gEAAgE;YAChE,gEAAgE;YAChE,uCAAuC;YACvC,CAAC;gBACC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;gBAC3E,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;QACH,KAAK,KAAK;YACR,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO;QACT,KAAK,SAAS;YACZ,sEAAsE;YACtE,iEAAiE;YACjE,kEAAkE;YAClE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO;QACT,KAAK,UAAU;YACb,gEAAgE;YAChE,8DAA8D;YAC9D,qDAAqD;YACrD,6DAA6D;YAC7D,yCAAyC;YACzC,CAAC;gBACC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;gBAClE,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;QACH,KAAK,MAAM;YACT,6DAA6D;YAC7D,gEAAgE;YAChE,8DAA8D;YAC9D,CAAC;gBACC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAC1D,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;QACH,KAAK,SAAS;YACZ,6DAA6D;YAC7D,gEAAgE;YAChE,6DAA6D;YAC7D,+DAA+D;YAC/D,gEAAgE;YAChE,2DAA2D;YAC3D,CAAC;gBACC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;gBAChE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBACtC,OAAO;YACT,CAAC;QACH,KAAK,MAAM;YACT,mEAAmE;YACnE,gEAAgE;YAChE,uDAAuD;YACvD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACnC,OAAO;QACT,KAAK,OAAO;YACV,6DAA6D;YAC7D,2DAA2D;YAC3D,qDAAqD;YACrD,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO;QACT,KAAK,MAAM;YACT,yDAAyD;YACzD,8DAA8D;YAC9D,0DAA0D;YAC1D,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACnC,OAAO;QACT,KAAK,SAAS;YACZ,gEAAgE;YAChE,+DAA+D;YAC/D,0DAA0D;YAC1D,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO;QACT,KAAK,OAAO;YACV,yDAAyD;YACzD,mDAAmD;YACnD,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO;QACT,KAAK,OAAO;YACV,4DAA4D;YAC5D,yDAAyD;YACzD,sDAAsD;YACtD,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACpC,OAAO;QACT,KAAK,UAAU;YACb,6DAA6D;YAC7D,gEAAgE;YAChE,kDAAkD;YAClD,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO;QACT,KAAK,UAAU;YACb,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,UAAU;YACb,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,SAAS,CAAC;QACf,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;YACnC,OAAO;QACT,KAAK,SAAS,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO;QACT;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW;IACjC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `slowcook garnish` — 0.19.0-α.15.
|
|
3
|
+
*
|
|
4
|
+
* Local commit-gate for human (or other-agent) tweaks layered on top
|
|
5
|
+
* of an agent's work. The PM (or engineer) edits files in the working
|
|
6
|
+
* tree — by hand, via DevTools Workspaces, via any editor — then runs
|
|
7
|
+
* `slowcook garnish`. The cli:
|
|
8
|
+
*
|
|
9
|
+
* 1. Detects uncommitted changes in the working tree.
|
|
10
|
+
* 2. For each changed file, identifies the agent (if any) whose last
|
|
11
|
+
* commit touched the file. Files last touched by humans get no
|
|
12
|
+
* trailer entry (no learning signal for an agent).
|
|
13
|
+
* 3. Runs the relevant tests scoped to the changed files (or the
|
|
14
|
+
* caller-provided test glob via --scope).
|
|
15
|
+
* 4. If tests pass: commits the staged changes with a subject naming
|
|
16
|
+
* the touched files + `Tweaks-output-of:` trailer lines marking
|
|
17
|
+
* each agent-authored file the tweak touched. Optionally pushes.
|
|
18
|
+
* 5. If tests fail: prints the failure summary + exits non-zero
|
|
19
|
+
* without committing.
|
|
20
|
+
*
|
|
21
|
+
* The trailer lines are the load-bearing piece — a future `slowcook
|
|
22
|
+
* reflect` command mines them to surface learning signal for the
|
|
23
|
+
* upstream agent (eval-set fixtures, prompt-amendment candidates).
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* 0.19.0-α.16 — runGarnish, the reusable core. Other commands
|
|
27
|
+
* (run-mock --garnish, for one) call this in-process on debounced
|
|
28
|
+
* file-save batches; doing it as a subprocess invocation would
|
|
29
|
+
* re-pay node startup every time.
|
|
30
|
+
*
|
|
31
|
+
* Returns a structured result; never calls process.exit. Caller
|
|
32
|
+
* decides what to do on each kind.
|
|
33
|
+
*/
|
|
34
|
+
export interface RunGarnishOptions {
|
|
35
|
+
repoRoot: string;
|
|
36
|
+
scope?: string | null;
|
|
37
|
+
message?: string | null;
|
|
38
|
+
push?: boolean;
|
|
39
|
+
silent?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export type RunGarnishResult = {
|
|
42
|
+
kind: "no-changes";
|
|
43
|
+
} | {
|
|
44
|
+
kind: "tests-failed";
|
|
45
|
+
touchedFiles: string[];
|
|
46
|
+
outputTail: string;
|
|
47
|
+
} | {
|
|
48
|
+
kind: "committed";
|
|
49
|
+
sha: string;
|
|
50
|
+
touchedFiles: string[];
|
|
51
|
+
agentRefCount: number;
|
|
52
|
+
pushed: boolean;
|
|
53
|
+
};
|
|
54
|
+
export declare function runGarnish(opts: RunGarnishOptions): Promise<RunGarnishResult>;
|
|
55
|
+
export declare function garnish(argv: string[], _cliVersion: string): Promise<void>;
|
|
56
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/garnish/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAsJH;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACpE;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEN,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmEnF;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDhF"}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `slowcook garnish` — 0.19.0-α.15.
|
|
3
|
+
*
|
|
4
|
+
* Local commit-gate for human (or other-agent) tweaks layered on top
|
|
5
|
+
* of an agent's work. The PM (or engineer) edits files in the working
|
|
6
|
+
* tree — by hand, via DevTools Workspaces, via any editor — then runs
|
|
7
|
+
* `slowcook garnish`. The cli:
|
|
8
|
+
*
|
|
9
|
+
* 1. Detects uncommitted changes in the working tree.
|
|
10
|
+
* 2. For each changed file, identifies the agent (if any) whose last
|
|
11
|
+
* commit touched the file. Files last touched by humans get no
|
|
12
|
+
* trailer entry (no learning signal for an agent).
|
|
13
|
+
* 3. Runs the relevant tests scoped to the changed files (or the
|
|
14
|
+
* caller-provided test glob via --scope).
|
|
15
|
+
* 4. If tests pass: commits the staged changes with a subject naming
|
|
16
|
+
* the touched files + `Tweaks-output-of:` trailer lines marking
|
|
17
|
+
* each agent-authored file the tweak touched. Optionally pushes.
|
|
18
|
+
* 5. If tests fail: prints the failure summary + exits non-zero
|
|
19
|
+
* without committing.
|
|
20
|
+
*
|
|
21
|
+
* The trailer lines are the load-bearing piece — a future `slowcook
|
|
22
|
+
* reflect` command mines them to surface learning signal for the
|
|
23
|
+
* upstream agent (eval-set fixtures, prompt-amendment candidates).
|
|
24
|
+
*/
|
|
25
|
+
import { execSync, spawnSync } from "node:child_process";
|
|
26
|
+
import { existsSync, writeFileSync } from "node:fs";
|
|
27
|
+
import { join } from "node:path";
|
|
28
|
+
import { composeCommitMessage, agentFromAuthor, } from "./trailer.js";
|
|
29
|
+
function parseArgs(argv) {
|
|
30
|
+
const args = {
|
|
31
|
+
repoRoot: process.cwd(),
|
|
32
|
+
scope: null,
|
|
33
|
+
push: false,
|
|
34
|
+
message: null,
|
|
35
|
+
dryRun: false,
|
|
36
|
+
};
|
|
37
|
+
for (let i = 0; i < argv.length; i++) {
|
|
38
|
+
const a = argv[i];
|
|
39
|
+
const next = argv[i + 1];
|
|
40
|
+
if (a === "--cwd" && next) {
|
|
41
|
+
args.repoRoot = next;
|
|
42
|
+
i++;
|
|
43
|
+
}
|
|
44
|
+
else if (a === "--scope" && next) {
|
|
45
|
+
args.scope = next;
|
|
46
|
+
i++;
|
|
47
|
+
}
|
|
48
|
+
else if (a === "--push") {
|
|
49
|
+
args.push = true;
|
|
50
|
+
}
|
|
51
|
+
else if (a === "--message" && next) {
|
|
52
|
+
args.message = next;
|
|
53
|
+
i++;
|
|
54
|
+
}
|
|
55
|
+
else if (a === "-m" && next) {
|
|
56
|
+
args.message = next;
|
|
57
|
+
i++;
|
|
58
|
+
}
|
|
59
|
+
else if (a === "--dry-run") {
|
|
60
|
+
args.dryRun = true;
|
|
61
|
+
}
|
|
62
|
+
else if (a === "--help" || a === "-h") {
|
|
63
|
+
printHelp();
|
|
64
|
+
process.exit(0);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return args;
|
|
68
|
+
}
|
|
69
|
+
function printHelp() {
|
|
70
|
+
console.log(`
|
|
71
|
+
slowcook garnish — commit a human (or other-agent) tweak on top of agent work
|
|
72
|
+
|
|
73
|
+
Detects uncommitted changes, runs the relevant tests, and (if green) commits
|
|
74
|
+
with \`Tweaks-output-of:\` trailers marking which upstream agent's work was
|
|
75
|
+
tweaked. A future \`slowcook reflect\` mines these trailers for learning signal.
|
|
76
|
+
|
|
77
|
+
Usage:
|
|
78
|
+
slowcook garnish [options]
|
|
79
|
+
|
|
80
|
+
Options:
|
|
81
|
+
--cwd <path> Repo root (default: cwd).
|
|
82
|
+
--scope <glob> Pass through to vitest (\`vitest run <glob>\`). Default:
|
|
83
|
+
run vitest related to the changed files.
|
|
84
|
+
--message <text> Optional commit body. Default: subject-only.
|
|
85
|
+
-m <text> Short form of --message.
|
|
86
|
+
--push Push to origin after committing.
|
|
87
|
+
--dry-run Print what would happen; do not run tests or commit.
|
|
88
|
+
|
|
89
|
+
Examples:
|
|
90
|
+
# Edit some files via DevTools Workspaces / by hand, then:
|
|
91
|
+
slowcook garnish
|
|
92
|
+
|
|
93
|
+
# Force a specific test scope:
|
|
94
|
+
slowcook garnish --scope 'tests/integration/story-018-*'
|
|
95
|
+
|
|
96
|
+
# Commit + push:
|
|
97
|
+
slowcook garnish -m "Tightened the spacing on the Pin button." --push
|
|
98
|
+
`);
|
|
99
|
+
}
|
|
100
|
+
function gitChangedFiles(repoRoot) {
|
|
101
|
+
const out = execSync(`git -C "${repoRoot}" status --porcelain`, {
|
|
102
|
+
encoding: "utf8",
|
|
103
|
+
});
|
|
104
|
+
const lines = out.split("\n").filter((l) => l.length > 0);
|
|
105
|
+
return lines
|
|
106
|
+
.map((line) => {
|
|
107
|
+
// Format: "XY path" or "XY path-old -> path-new" for renames.
|
|
108
|
+
// Take the rightmost path; safe enough for our use.
|
|
109
|
+
const status = line.slice(0, 2).trim();
|
|
110
|
+
const rest = line.slice(3).trim();
|
|
111
|
+
const path = rest.includes(" -> ") ? rest.split(" -> ")[1] : rest;
|
|
112
|
+
return { path, status };
|
|
113
|
+
})
|
|
114
|
+
.filter((f) => f.status !== "??"); // skip untracked-only (user can `git add` first)
|
|
115
|
+
}
|
|
116
|
+
function lastTouchingCommit(repoRoot, file) {
|
|
117
|
+
try {
|
|
118
|
+
const sha = execSync(`git -C "${repoRoot}" log -n 1 --format=%H -- "${file}"`, { encoding: "utf8" }).trim();
|
|
119
|
+
if (!sha)
|
|
120
|
+
return null;
|
|
121
|
+
const author = execSync(`git -C "${repoRoot}" show -s --format=%an "${sha}"`, { encoding: "utf8" }).trim();
|
|
122
|
+
return { sha, author };
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function resolveUpstreamRefs(repoRoot, files) {
|
|
129
|
+
const refs = [];
|
|
130
|
+
const humanFiles = [];
|
|
131
|
+
for (const file of files) {
|
|
132
|
+
const upstream = lastTouchingCommit(repoRoot, file);
|
|
133
|
+
if (!upstream) {
|
|
134
|
+
// File doesn't exist in history yet — must be newly-added by this tweak.
|
|
135
|
+
humanFiles.push(file);
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
const agent = agentFromAuthor(upstream.author);
|
|
139
|
+
if (agent) {
|
|
140
|
+
refs.push({ agent, sha: upstream.sha, file });
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
humanFiles.push(file);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return { refs, humanFiles };
|
|
147
|
+
}
|
|
148
|
+
function runTests(repoRoot, files, scopeOverride) {
|
|
149
|
+
const cmd = scopeOverride
|
|
150
|
+
? `npx vitest run ${scopeOverride}`
|
|
151
|
+
: `npx vitest related ${files.map((f) => `"${f}"`).join(" ")}`;
|
|
152
|
+
const result = spawnSync(cmd, {
|
|
153
|
+
cwd: repoRoot,
|
|
154
|
+
shell: true,
|
|
155
|
+
encoding: "utf8",
|
|
156
|
+
maxBuffer: 4 * 1024 * 1024,
|
|
157
|
+
});
|
|
158
|
+
const output = (result.stdout || "") + (result.stderr || "");
|
|
159
|
+
const ok = result.status === 0;
|
|
160
|
+
return { ok, output };
|
|
161
|
+
}
|
|
162
|
+
export async function runGarnish(opts) {
|
|
163
|
+
const repoRoot = opts.repoRoot;
|
|
164
|
+
const scope = opts.scope ?? null;
|
|
165
|
+
const log = opts.silent ? () => undefined : (msg) => console.log(msg);
|
|
166
|
+
const warn = opts.silent ? () => undefined : (msg) => console.warn(msg);
|
|
167
|
+
const changed = gitChangedFiles(repoRoot);
|
|
168
|
+
if (changed.length === 0) {
|
|
169
|
+
return { kind: "no-changes" };
|
|
170
|
+
}
|
|
171
|
+
const touchedFiles = changed.map((c) => c.path);
|
|
172
|
+
const { refs, humanFiles } = resolveUpstreamRefs(repoRoot, touchedFiles);
|
|
173
|
+
if (!opts.silent) {
|
|
174
|
+
log(` ${touchedFiles.length} file(s) with uncommitted changes:`);
|
|
175
|
+
for (const f of touchedFiles)
|
|
176
|
+
log(` ${f}`);
|
|
177
|
+
log(` upstream: ${refs.length} agent-authored, ${humanFiles.length} human/new`);
|
|
178
|
+
if (refs.length > 0) {
|
|
179
|
+
const byAgent = {};
|
|
180
|
+
for (const r of refs)
|
|
181
|
+
byAgent[r.agent] = (byAgent[r.agent] ?? 0) + 1;
|
|
182
|
+
const summary = Object.entries(byAgent).map(([a, n]) => `${a}=${n}`).join(", ");
|
|
183
|
+
log(` (${summary})`);
|
|
184
|
+
}
|
|
185
|
+
log("\n running tests" + (scope ? ` (--scope ${scope})` : " (vitest related)") + "...");
|
|
186
|
+
}
|
|
187
|
+
const tests = runTests(repoRoot, touchedFiles, scope);
|
|
188
|
+
if (!tests.ok) {
|
|
189
|
+
const tail = tests.output.split("\n").slice(-40).join("\n");
|
|
190
|
+
return { kind: "tests-failed", touchedFiles, outputTail: tail };
|
|
191
|
+
}
|
|
192
|
+
log(" ✓ tests passed.");
|
|
193
|
+
const message = composeCommitMessage({
|
|
194
|
+
touchedFiles,
|
|
195
|
+
upstreamRefs: refs,
|
|
196
|
+
userMessage: opts.message ?? undefined,
|
|
197
|
+
});
|
|
198
|
+
const msgFile = join(repoRoot, ".brewing/.garnish-commit-msg.tmp");
|
|
199
|
+
if (!existsSync(join(repoRoot, ".brewing"))) {
|
|
200
|
+
execSync(`mkdir -p "${join(repoRoot, ".brewing")}"`);
|
|
201
|
+
}
|
|
202
|
+
writeFileSync(msgFile, message, "utf8");
|
|
203
|
+
for (const f of touchedFiles) {
|
|
204
|
+
try {
|
|
205
|
+
execSync(`git -C "${repoRoot}" add -- "${f}"`, { stdio: "ignore" });
|
|
206
|
+
}
|
|
207
|
+
catch { /* deleted file; ignore */ }
|
|
208
|
+
}
|
|
209
|
+
try {
|
|
210
|
+
execSync(`git -C "${repoRoot}" commit -F "${msgFile}"`, {
|
|
211
|
+
stdio: opts.silent ? "ignore" : "inherit",
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
catch (e) {
|
|
215
|
+
warn(` garnish commit failed: ${e.message.slice(0, 200)}`);
|
|
216
|
+
return { kind: "tests-failed", touchedFiles, outputTail: e.message };
|
|
217
|
+
}
|
|
218
|
+
const sha = execSync(`git -C "${repoRoot}" rev-parse HEAD`, { encoding: "utf8" }).trim();
|
|
219
|
+
let pushed = false;
|
|
220
|
+
if (opts.push) {
|
|
221
|
+
try {
|
|
222
|
+
execSync(`git -C "${repoRoot}" push`, { stdio: opts.silent ? "ignore" : "inherit" });
|
|
223
|
+
pushed = true;
|
|
224
|
+
}
|
|
225
|
+
catch (e) {
|
|
226
|
+
warn(` warn: push failed: ${e.message.slice(0, 200)}`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return { kind: "committed", sha, touchedFiles, agentRefCount: refs.length, pushed };
|
|
230
|
+
}
|
|
231
|
+
export async function garnish(argv, _cliVersion) {
|
|
232
|
+
const args = parseArgs(argv);
|
|
233
|
+
console.log(`slowcook garnish · cwd: ${args.repoRoot.replace(process.cwd() + "/", ".")}`);
|
|
234
|
+
if (args.dryRun) {
|
|
235
|
+
const changed = gitChangedFiles(args.repoRoot);
|
|
236
|
+
if (changed.length === 0) {
|
|
237
|
+
console.log(" no uncommitted changes; nothing to garnish.");
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
const touchedFiles = changed.map((c) => c.path);
|
|
241
|
+
const { refs, humanFiles } = resolveUpstreamRefs(args.repoRoot, touchedFiles);
|
|
242
|
+
console.log(` ${touchedFiles.length} file(s) with uncommitted changes:`);
|
|
243
|
+
for (const f of touchedFiles)
|
|
244
|
+
console.log(` ${f}`);
|
|
245
|
+
console.log(` upstream: ${refs.length} agent-authored, ${humanFiles.length} human/new`);
|
|
246
|
+
if (refs.length > 0) {
|
|
247
|
+
const byAgent = {};
|
|
248
|
+
for (const r of refs)
|
|
249
|
+
byAgent[r.agent] = (byAgent[r.agent] ?? 0) + 1;
|
|
250
|
+
const summary = Object.entries(byAgent).map(([a, n]) => `${a}=${n}`).join(", ");
|
|
251
|
+
console.log(` (${summary})`);
|
|
252
|
+
}
|
|
253
|
+
console.log("\n [dry-run] would run tests + commit; skipping.");
|
|
254
|
+
const message = composeCommitMessage({
|
|
255
|
+
touchedFiles,
|
|
256
|
+
upstreamRefs: refs,
|
|
257
|
+
userMessage: args.message ?? undefined,
|
|
258
|
+
});
|
|
259
|
+
console.log("\n commit message would be:\n");
|
|
260
|
+
for (const line of message.split("\n"))
|
|
261
|
+
console.log(` ${line}`);
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const result = await runGarnish({
|
|
265
|
+
repoRoot: args.repoRoot,
|
|
266
|
+
scope: args.scope,
|
|
267
|
+
message: args.message,
|
|
268
|
+
push: args.push,
|
|
269
|
+
});
|
|
270
|
+
if (result.kind === "no-changes") {
|
|
271
|
+
console.log(" no uncommitted changes; nothing to garnish.");
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
if (result.kind === "tests-failed") {
|
|
275
|
+
console.error("\n ✗ tests failed. Garnish blocked; working tree unchanged.\n");
|
|
276
|
+
console.error(result.outputTail);
|
|
277
|
+
process.exit(1);
|
|
278
|
+
}
|
|
279
|
+
console.log(`\n ✓ garnished: ${result.sha.slice(0, 7)} (${result.agentRefCount} agent ref(s) recorded)${result.pushed ? " · pushed" : ""}`);
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/garnish/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 0.19.0-α.15 — `slowcook garnish` trailer helpers.
|
|
3
|
+
*
|
|
4
|
+
* When a human (or another agent) commits a tweak on top of an agent's
|
|
5
|
+
* work, we mark the commit with `Tweaks-output-of:` git trailer lines —
|
|
6
|
+
* one per file the tweak touched, naming the upstream agent + sha. A
|
|
7
|
+
* future `slowcook reflect` command mines these trailers to surface
|
|
8
|
+
* learning signal for the upstream agent (eval-set fixtures, prompt
|
|
9
|
+
* amendment candidates, drift catalogs).
|
|
10
|
+
*
|
|
11
|
+
* Trailer format (one line per file):
|
|
12
|
+
*
|
|
13
|
+
* Tweaks-output-of: agent=<name> sha=<commit-sha> file=<repo-relative-path>
|
|
14
|
+
*
|
|
15
|
+
* Examples:
|
|
16
|
+
* Tweaks-output-of: agent=vibe sha=a7df238 file=mock/src/components/Foo.tsx
|
|
17
|
+
* Tweaks-output-of: agent=plate sha=00905ae file=mock/src/components/Bar.tsx
|
|
18
|
+
*
|
|
19
|
+
* Pure module — no IO. Caller composes the trailer lines into the commit
|
|
20
|
+
* message and runs git separately.
|
|
21
|
+
*/
|
|
22
|
+
export interface UpstreamRef {
|
|
23
|
+
/** Upstream agent name (vibe / plate / brew / chef / etc). */
|
|
24
|
+
agent: string;
|
|
25
|
+
/** Upstream commit SHA (short or full; renderer trims to 7). */
|
|
26
|
+
sha: string;
|
|
27
|
+
/** Repo-relative file path the tweak touched. */
|
|
28
|
+
file: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Format a list of upstream refs into trailer lines (one per ref).
|
|
32
|
+
* Pure: returns a single string with `\n` separators, no leading or
|
|
33
|
+
* trailing newline. Caller appends to the commit-message body.
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatTrailer(refs: UpstreamRef[]): string;
|
|
36
|
+
/**
|
|
37
|
+
* Parse a single trailer line, returning the parsed ref or null if the
|
|
38
|
+
* line doesn't match the expected shape. Tolerates leading/trailing
|
|
39
|
+
* whitespace + the optional " " indent some `git interpret-trailers`
|
|
40
|
+
* outputs add.
|
|
41
|
+
*/
|
|
42
|
+
export declare function parseTrailerLine(line: string): UpstreamRef | null;
|
|
43
|
+
/**
|
|
44
|
+
* Parse all `Tweaks-output-of:` trailers from a full commit-message
|
|
45
|
+
* body (multi-line). Returns refs in the order they appeared.
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseTrailers(commitBody: string): UpstreamRef[];
|
|
48
|
+
/**
|
|
49
|
+
* Inspect a git author line + return the upstream agent name, if the
|
|
50
|
+
* author follows slowcook's agent convention. Otherwise null.
|
|
51
|
+
*
|
|
52
|
+
* Conventions detected:
|
|
53
|
+
* slowcook-vibe[bot] → "vibe"
|
|
54
|
+
* slowcook-plate[bot] → "plate"
|
|
55
|
+
* slowcook-brew[bot] → "brew"
|
|
56
|
+
* slowcook-chef[bot] → "chef"
|
|
57
|
+
* slowcook-refine[bot] → "refine"
|
|
58
|
+
* slowcook-testgen[bot] → "testgen"
|
|
59
|
+
* slowcook-recipe[bot] → "recipe"
|
|
60
|
+
* anything else → null (human or unrelated bot)
|
|
61
|
+
*
|
|
62
|
+
* Pure: no IO. Caller pipes git author through it.
|
|
63
|
+
*/
|
|
64
|
+
export declare function agentFromAuthor(author: string): string | null;
|
|
65
|
+
/**
|
|
66
|
+
* Compose the full commit message body for a garnish commit: a one-line
|
|
67
|
+
* subject naming the touched files, a blank line, optional user-provided
|
|
68
|
+
* body, a blank line, then the trailer block.
|
|
69
|
+
*
|
|
70
|
+
* Pure: caller passes the staged-file list + the parsed upstream refs +
|
|
71
|
+
* the optional user message. Returns the body string ready for `git
|
|
72
|
+
* commit -F`.
|
|
73
|
+
*/
|
|
74
|
+
export declare function composeCommitMessage(args: {
|
|
75
|
+
touchedFiles: string[];
|
|
76
|
+
upstreamRefs: UpstreamRef[];
|
|
77
|
+
userMessage?: string;
|
|
78
|
+
}): string;
|
|
79
|
+
//# sourceMappingURL=trailer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trailer.d.ts","sourceRoot":"","sources":["../../../src/commands/garnish/trailer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,WAAW;IAC1B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAIzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAYjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,EAAE,CAO/D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAUT"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 0.19.0-α.15 — `slowcook garnish` trailer helpers.
|
|
3
|
+
*
|
|
4
|
+
* When a human (or another agent) commits a tweak on top of an agent's
|
|
5
|
+
* work, we mark the commit with `Tweaks-output-of:` git trailer lines —
|
|
6
|
+
* one per file the tweak touched, naming the upstream agent + sha. A
|
|
7
|
+
* future `slowcook reflect` command mines these trailers to surface
|
|
8
|
+
* learning signal for the upstream agent (eval-set fixtures, prompt
|
|
9
|
+
* amendment candidates, drift catalogs).
|
|
10
|
+
*
|
|
11
|
+
* Trailer format (one line per file):
|
|
12
|
+
*
|
|
13
|
+
* Tweaks-output-of: agent=<name> sha=<commit-sha> file=<repo-relative-path>
|
|
14
|
+
*
|
|
15
|
+
* Examples:
|
|
16
|
+
* Tweaks-output-of: agent=vibe sha=a7df238 file=mock/src/components/Foo.tsx
|
|
17
|
+
* Tweaks-output-of: agent=plate sha=00905ae file=mock/src/components/Bar.tsx
|
|
18
|
+
*
|
|
19
|
+
* Pure module — no IO. Caller composes the trailer lines into the commit
|
|
20
|
+
* message and runs git separately.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Format a list of upstream refs into trailer lines (one per ref).
|
|
24
|
+
* Pure: returns a single string with `\n` separators, no leading or
|
|
25
|
+
* trailing newline. Caller appends to the commit-message body.
|
|
26
|
+
*/
|
|
27
|
+
export function formatTrailer(refs) {
|
|
28
|
+
return refs
|
|
29
|
+
.map((r) => `Tweaks-output-of: agent=${r.agent} sha=${r.sha.slice(0, 7)} file=${r.file}`)
|
|
30
|
+
.join("\n");
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parse a single trailer line, returning the parsed ref or null if the
|
|
34
|
+
* line doesn't match the expected shape. Tolerates leading/trailing
|
|
35
|
+
* whitespace + the optional " " indent some `git interpret-trailers`
|
|
36
|
+
* outputs add.
|
|
37
|
+
*/
|
|
38
|
+
export function parseTrailerLine(line) {
|
|
39
|
+
const trimmed = line.trim();
|
|
40
|
+
if (!trimmed.startsWith("Tweaks-output-of:"))
|
|
41
|
+
return null;
|
|
42
|
+
const body = trimmed.slice("Tweaks-output-of:".length).trim();
|
|
43
|
+
// body looks like: "agent=vibe sha=abc1234 file=mock/src/X.tsx"
|
|
44
|
+
// file= may contain spaces in the rare case of weird paths; capture
|
|
45
|
+
// greedily as the last field.
|
|
46
|
+
const m = body.match(/^agent=(\S+)\s+sha=(\S+)\s+file=(.+)$/);
|
|
47
|
+
if (!m)
|
|
48
|
+
return null;
|
|
49
|
+
const [, agent, sha, file] = m;
|
|
50
|
+
if (!agent || !sha || !file)
|
|
51
|
+
return null;
|
|
52
|
+
return { agent, sha, file };
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Parse all `Tweaks-output-of:` trailers from a full commit-message
|
|
56
|
+
* body (multi-line). Returns refs in the order they appeared.
|
|
57
|
+
*/
|
|
58
|
+
export function parseTrailers(commitBody) {
|
|
59
|
+
const out = [];
|
|
60
|
+
for (const line of commitBody.split("\n")) {
|
|
61
|
+
const ref = parseTrailerLine(line);
|
|
62
|
+
if (ref)
|
|
63
|
+
out.push(ref);
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Inspect a git author line + return the upstream agent name, if the
|
|
69
|
+
* author follows slowcook's agent convention. Otherwise null.
|
|
70
|
+
*
|
|
71
|
+
* Conventions detected:
|
|
72
|
+
* slowcook-vibe[bot] → "vibe"
|
|
73
|
+
* slowcook-plate[bot] → "plate"
|
|
74
|
+
* slowcook-brew[bot] → "brew"
|
|
75
|
+
* slowcook-chef[bot] → "chef"
|
|
76
|
+
* slowcook-refine[bot] → "refine"
|
|
77
|
+
* slowcook-testgen[bot] → "testgen"
|
|
78
|
+
* slowcook-recipe[bot] → "recipe"
|
|
79
|
+
* anything else → null (human or unrelated bot)
|
|
80
|
+
*
|
|
81
|
+
* Pure: no IO. Caller pipes git author through it.
|
|
82
|
+
*/
|
|
83
|
+
export function agentFromAuthor(author) {
|
|
84
|
+
const m = author.match(/^slowcook-([a-z][\w-]*)\[bot\]$/);
|
|
85
|
+
if (!m)
|
|
86
|
+
return null;
|
|
87
|
+
return m[1];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Compose the full commit message body for a garnish commit: a one-line
|
|
91
|
+
* subject naming the touched files, a blank line, optional user-provided
|
|
92
|
+
* body, a blank line, then the trailer block.
|
|
93
|
+
*
|
|
94
|
+
* Pure: caller passes the staged-file list + the parsed upstream refs +
|
|
95
|
+
* the optional user message. Returns the body string ready for `git
|
|
96
|
+
* commit -F`.
|
|
97
|
+
*/
|
|
98
|
+
export function composeCommitMessage(args) {
|
|
99
|
+
const subject = `[garnish] ${formatTouchedFilesSummary(args.touchedFiles)}`;
|
|
100
|
+
const parts = [subject, ""];
|
|
101
|
+
if (args.userMessage && args.userMessage.trim().length > 0) {
|
|
102
|
+
parts.push(args.userMessage.trim(), "");
|
|
103
|
+
}
|
|
104
|
+
if (args.upstreamRefs.length > 0) {
|
|
105
|
+
parts.push(formatTrailer(args.upstreamRefs));
|
|
106
|
+
}
|
|
107
|
+
return parts.join("\n");
|
|
108
|
+
}
|
|
109
|
+
function formatTouchedFilesSummary(files) {
|
|
110
|
+
if (files.length === 0)
|
|
111
|
+
return "(no files)";
|
|
112
|
+
if (files.length === 1)
|
|
113
|
+
return files[0];
|
|
114
|
+
if (files.length === 2)
|
|
115
|
+
return `${files[0]} + ${files[1]}`;
|
|
116
|
+
return `${files[0]} + ${files.length - 1} more`;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=trailer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trailer.js","sourceRoot":"","sources":["../../../src/commands/garnish/trailer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/run-mock/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/run-mock/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAqJH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyPhF"}
|
|
@@ -45,6 +45,7 @@ function parseArgs(argv) {
|
|
|
45
45
|
pollSeconds: 15,
|
|
46
46
|
skipInstall: false,
|
|
47
47
|
branchOverride: null,
|
|
48
|
+
garnish: false,
|
|
48
49
|
};
|
|
49
50
|
// Positional first arg is story id (consumer convenience).
|
|
50
51
|
if (argv.length > 0 && argv[0] && !argv[0].startsWith("-")) {
|
|
@@ -76,6 +77,9 @@ function parseArgs(argv) {
|
|
|
76
77
|
else if (a === "--skip-install") {
|
|
77
78
|
args.skipInstall = true;
|
|
78
79
|
}
|
|
80
|
+
else if (a === "--garnish") {
|
|
81
|
+
args.garnish = true;
|
|
82
|
+
}
|
|
79
83
|
else if (a === "--help" || a === "-h") {
|
|
80
84
|
printHelp();
|
|
81
85
|
process.exit(0);
|
|
@@ -109,6 +113,13 @@ Options:
|
|
|
109
113
|
--poll-seconds <n> Auto-pull interval (default 15; 0 disables).
|
|
110
114
|
--no-poll Disable auto-pull.
|
|
111
115
|
--skip-install Skip npm install even on lockfile drift.
|
|
116
|
+
--garnish (0.19.0-α.16) DevTools Workspaces mode. Disables
|
|
117
|
+
the review-overlay; instead prints Chrome
|
|
118
|
+
Workspaces pairing instructions + watches
|
|
119
|
+
mock/src/ for file saves. Each debounced batch
|
|
120
|
+
runs vitest related + auto-commits via garnish
|
|
121
|
+
on green (Tweaks-output-of: trailers recorded
|
|
122
|
+
for learning signal).
|
|
112
123
|
|
|
113
124
|
What it does:
|
|
114
125
|
1. git fetch + git checkout the mockup branch
|
|
@@ -242,35 +253,61 @@ export async function runMock(argv, _cliVersion) {
|
|
|
242
253
|
// without prompting the PM for a PAT. Uses `gh auth token` from the
|
|
243
254
|
// local gh CLI; falls back silently when gh isn't installed or the
|
|
244
255
|
// user hasn't logged in (overlay then uses its old PAT-prompt path).
|
|
256
|
+
//
|
|
257
|
+
// 0.19.0-α.16 — in --garnish mode the overlay is disabled, so we
|
|
258
|
+
// skip starting the proxy (saves a port + a couple of stderr lines).
|
|
245
259
|
let proxy = null;
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
260
|
+
if (!args.garnish) {
|
|
261
|
+
const ghToken = readGhToken();
|
|
262
|
+
if (ghToken) {
|
|
263
|
+
try {
|
|
264
|
+
proxy = await startGhProxy(ghToken);
|
|
265
|
+
console.log(` proxy gh-proxy on ${proxy.url} (no PAT prompt — uses 'gh auth token')`);
|
|
266
|
+
}
|
|
267
|
+
catch (e) {
|
|
268
|
+
console.warn(` proxy gh-proxy failed to start (${e.message}); overlay will fall back to PAT prompt.`);
|
|
269
|
+
}
|
|
251
270
|
}
|
|
252
|
-
|
|
253
|
-
console.warn(` proxy gh
|
|
271
|
+
else {
|
|
272
|
+
console.warn(` proxy gh CLI not authenticated ('gh auth token' returned empty). Overlay will prompt for a PAT instead.`);
|
|
254
273
|
}
|
|
255
274
|
}
|
|
256
275
|
else {
|
|
257
|
-
console.
|
|
276
|
+
console.log(` proxy skipped (--garnish mode; overlay disabled)`);
|
|
258
277
|
}
|
|
259
278
|
// Step 4: spawn next dev with env vars.
|
|
260
|
-
const env = {
|
|
261
|
-
|
|
262
|
-
NEXT_PUBLIC_SLOWCOOK_REVIEW
|
|
263
|
-
NEXT_PUBLIC_SLOWCOOK_OWNER
|
|
264
|
-
NEXT_PUBLIC_SLOWCOOK_REPO
|
|
265
|
-
NEXT_PUBLIC_SLOWCOOK_PR_NUMBER
|
|
266
|
-
NEXT_PUBLIC_SLOWCOOK_STORY_ID
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
279
|
+
const env = { ...process.env };
|
|
280
|
+
if (!args.garnish) {
|
|
281
|
+
env["NEXT_PUBLIC_SLOWCOOK_REVIEW"] = "1";
|
|
282
|
+
env["NEXT_PUBLIC_SLOWCOOK_OWNER"] = detected.owner;
|
|
283
|
+
env["NEXT_PUBLIC_SLOWCOOK_REPO"] = detected.repo;
|
|
284
|
+
env["NEXT_PUBLIC_SLOWCOOK_PR_NUMBER"] = prNumber ? String(prNumber) : "0";
|
|
285
|
+
env["NEXT_PUBLIC_SLOWCOOK_STORY_ID"] = args.story;
|
|
286
|
+
if (proxy)
|
|
287
|
+
env["NEXT_PUBLIC_SLOWCOOK_GH_PROXY"] = proxy.url;
|
|
288
|
+
}
|
|
270
289
|
console.log(` npm run dev (next dev :3100)`);
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
290
|
+
if (!args.garnish) {
|
|
291
|
+
console.log(` overlay env: REVIEW=1 OWNER=${detected.owner} REPO=${detected.repo} PR=${prNumber ?? "?"} STORY=${args.story}${proxy ? ` GH_PROXY=${proxy.url}` : ""}`);
|
|
292
|
+
if (!prNumber) {
|
|
293
|
+
console.warn(` (no open mockup PR found for branch ${branch}; overlay submits will fail until one exists)`);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
const srcDir = join(mockDir, "src");
|
|
298
|
+
console.log(` (--garnish mode: overlay disabled; DevTools Workspaces pairing instructions below)`);
|
|
299
|
+
console.log(``);
|
|
300
|
+
console.log(` ─── Chrome DevTools Workspaces ─────────────────────────────────────`);
|
|
301
|
+
console.log(` Once-only setup (Chrome saves the workspace mapping after this):`);
|
|
302
|
+
console.log(` 1. Open the mock at http://localhost:3100`);
|
|
303
|
+
console.log(` 2. F12 → Sources panel → Filesystem (left sidebar) → "+ Add folder"`);
|
|
304
|
+
console.log(` 3. Paste this path: ${srcDir}`);
|
|
305
|
+
console.log(` 4. Approve the permission dialog Chrome shows`);
|
|
306
|
+
console.log(``);
|
|
307
|
+
console.log(` After that, your DevTools Sources-panel edits save directly to`);
|
|
308
|
+
console.log(` the mock app's source files. slowcook watches them + auto-commits.`);
|
|
309
|
+
console.log(` ─────────────────────────────────────────────────────────────────────`);
|
|
310
|
+
console.log(``);
|
|
274
311
|
}
|
|
275
312
|
const dev = spawn("npm", ["run", "dev"], { cwd: mockDir, env, stdio: "inherit" });
|
|
276
313
|
// Step 5: background poll for branch updates.
|
|
@@ -299,6 +336,66 @@ export async function runMock(argv, _cliVersion) {
|
|
|
299
336
|
}
|
|
300
337
|
}, args.pollSeconds * 1000);
|
|
301
338
|
}
|
|
339
|
+
// Step 5b: --garnish mode — watch mock/src/ for file saves +
|
|
340
|
+
// auto-commit via the shared runGarnish core. Debounced so a flurry
|
|
341
|
+
// of saves (Chrome DevTools sometimes saves twice in quick succession;
|
|
342
|
+
// editors can too) collapses to one commit.
|
|
343
|
+
let watcher = null;
|
|
344
|
+
let watcherDebounceTimer = null;
|
|
345
|
+
let garnishInFlight = false;
|
|
346
|
+
if (args.garnish) {
|
|
347
|
+
const { watch } = await import("node:fs");
|
|
348
|
+
const { runGarnish } = await import("../garnish/index.js");
|
|
349
|
+
const watchTarget = join(mockDir, "src");
|
|
350
|
+
console.log(`[run-mock] watching ${watchTarget.replace(args.repoRoot + "/", "")} for file saves (debounce 1.5s)`);
|
|
351
|
+
const onSaveBatch = async () => {
|
|
352
|
+
if (garnishInFlight)
|
|
353
|
+
return; // skip overlapping runs
|
|
354
|
+
garnishInFlight = true;
|
|
355
|
+
try {
|
|
356
|
+
console.log(`\n[run-mock] file save detected; running tests + garnishing...`);
|
|
357
|
+
const result = await runGarnish({
|
|
358
|
+
repoRoot: args.repoRoot,
|
|
359
|
+
push: false,
|
|
360
|
+
});
|
|
361
|
+
if (result.kind === "no-changes") {
|
|
362
|
+
console.log(`[run-mock] no committable changes (test files or transient saves).`);
|
|
363
|
+
}
|
|
364
|
+
else if (result.kind === "tests-failed") {
|
|
365
|
+
console.log(`[run-mock] ✗ tests failed; not committing. Leave the file as-is + fix, slowcook will re-test on next save.`);
|
|
366
|
+
const tail = result.outputTail.split("\n").slice(-12).join("\n");
|
|
367
|
+
console.log(` ${tail.replace(/\n/g, "\n ")}`);
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
console.log(`[run-mock] ✓ garnished ${result.sha.slice(0, 7)} (${result.touchedFiles.length} file(s), ${result.agentRefCount} agent ref(s))`);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
finally {
|
|
374
|
+
garnishInFlight = false;
|
|
375
|
+
}
|
|
376
|
+
};
|
|
377
|
+
try {
|
|
378
|
+
watcher = watch(watchTarget, { recursive: true }, (_eventType, filename) => {
|
|
379
|
+
if (!filename)
|
|
380
|
+
return;
|
|
381
|
+
const f = filename.toString();
|
|
382
|
+
if (f.startsWith("node_modules/"))
|
|
383
|
+
return;
|
|
384
|
+
if (f.startsWith(".next/"))
|
|
385
|
+
return;
|
|
386
|
+
if (f.startsWith("scenarios/"))
|
|
387
|
+
return; // vibe's output; tweaking these by hand is unusual
|
|
388
|
+
if (!/\.(tsx?|css|json)$/.test(f))
|
|
389
|
+
return;
|
|
390
|
+
if (watcherDebounceTimer)
|
|
391
|
+
clearTimeout(watcherDebounceTimer);
|
|
392
|
+
watcherDebounceTimer = setTimeout(() => { void onSaveBatch(); }, 1500);
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
catch (e) {
|
|
396
|
+
console.warn(`[run-mock] could not start file watcher (${e.message}); --garnish mode disabled.`);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
302
399
|
// Step 6: clean shutdown on Ctrl-C / dev exit. Pop any stash we
|
|
303
400
|
// pushed in step 1 so the user's working tree is restored to its
|
|
304
401
|
// pre-run-mock state — same UX guarantee as `git stash pop` after
|
|
@@ -306,6 +403,16 @@ export async function runMock(argv, _cliVersion) {
|
|
|
306
403
|
const cleanup = (signal) => {
|
|
307
404
|
if (pollTimer)
|
|
308
405
|
clearInterval(pollTimer);
|
|
406
|
+
if (watcher) {
|
|
407
|
+
try {
|
|
408
|
+
watcher.close();
|
|
409
|
+
}
|
|
410
|
+
catch { /* ignore */ }
|
|
411
|
+
}
|
|
412
|
+
if (watcherDebounceTimer) {
|
|
413
|
+
clearTimeout(watcherDebounceTimer);
|
|
414
|
+
watcherDebounceTimer = null;
|
|
415
|
+
}
|
|
309
416
|
if (proxy) {
|
|
310
417
|
try {
|
|
311
418
|
proxy.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/run-mock/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/run-mock/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slowcook-ai/cli",
|
|
3
|
-
"version": "0.19.0-alpha.
|
|
3
|
+
"version": "0.19.0-alpha.16",
|
|
4
4
|
"description": "CLI for the slowcook brewing harness",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "aminazar",
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
"yaml": "^2.6.0",
|
|
42
42
|
"zod": "^3.23.8",
|
|
43
43
|
"@slowcook-ai/core": "^0.13.0",
|
|
44
|
-
"@slowcook-ai/forge-github": "^0.12.0",
|
|
45
44
|
"@slowcook-ai/stack-ts": "^0.9.9-alpha.0",
|
|
46
|
-
"@slowcook-ai/
|
|
45
|
+
"@slowcook-ai/forge-github": "^0.12.0",
|
|
46
|
+
"@slowcook-ai/llm-anthropic": "^0.16.0-alpha.1",
|
|
47
47
|
"@slowcook-ai/review-overlay": "^0.5.5",
|
|
48
|
-
"@slowcook-ai/
|
|
48
|
+
"@slowcook-ai/recorder": "^0.9.1"
|
|
49
49
|
},
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"access": "public"
|