@slowcook-ai/cli 0.15.0-alpha.2 → 0.15.0-alpha.4
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/dist/cli.js +9 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/brew/agent.d.ts +16 -0
- package/dist/commands/brew/agent.d.ts.map +1 -1
- package/dist/commands/brew/agent.js +36 -2
- package/dist/commands/brew/agent.js.map +1 -1
- package/dist/commands/brew/halt.d.ts +1 -1
- package/dist/commands/brew/halt.d.ts.map +1 -1
- package/dist/commands/brew/halt.js +18 -0
- package/dist/commands/brew/halt.js.map +1 -1
- package/dist/commands/brew/index.d.ts.map +1 -1
- package/dist/commands/brew/index.js +109 -4
- package/dist/commands/brew/index.js.map +1 -1
- package/dist/commands/brew/prompts.d.ts +1 -1
- package/dist/commands/brew/prompts.d.ts.map +1 -1
- package/dist/commands/brew/prompts.js +1 -1
- package/dist/commands/brew/prompts.js.map +1 -1
- package/dist/commands/plate/agent.d.ts +55 -0
- package/dist/commands/plate/agent.d.ts.map +1 -0
- package/dist/commands/plate/agent.js +75 -0
- package/dist/commands/plate/agent.js.map +1 -0
- package/dist/commands/plate/index.d.ts +12 -0
- package/dist/commands/plate/index.d.ts.map +1 -0
- package/dist/commands/plate/index.js +364 -0
- package/dist/commands/plate/index.js.map +1 -0
- package/dist/commands/plate/prompts.d.ts +6 -0
- package/dist/commands/plate/prompts.d.ts.map +1 -0
- package/dist/commands/plate/prompts.js +6 -0
- package/dist/commands/plate/prompts.js.map +1 -0
- package/dist/commands/vibe/index.js +10 -1
- package/dist/commands/vibe/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -13,6 +13,7 @@ function parseArgs(argv) {
|
|
|
13
13
|
wallClockMs: 60 * 60 * 1000, // 1 hour
|
|
14
14
|
model: "claude-sonnet-4-6",
|
|
15
15
|
baseBranch: "main",
|
|
16
|
+
mode: "auto",
|
|
16
17
|
};
|
|
17
18
|
for (let i = 0; i < argv.length; i++) {
|
|
18
19
|
const arg = argv[i];
|
|
@@ -53,6 +54,14 @@ function parseArgs(argv) {
|
|
|
53
54
|
args.baseBranch = next;
|
|
54
55
|
i++;
|
|
55
56
|
}
|
|
57
|
+
else if (arg === "--mode" && next) {
|
|
58
|
+
if (next !== "auto" && next !== "plate" && next !== "legacy") {
|
|
59
|
+
console.error(`--mode must be one of: auto, plate, legacy. Got: ${next}`);
|
|
60
|
+
process.exit(64);
|
|
61
|
+
}
|
|
62
|
+
args.mode = next;
|
|
63
|
+
i++;
|
|
64
|
+
}
|
|
56
65
|
else if (arg === "--help" || arg === "-h") {
|
|
57
66
|
printHelp();
|
|
58
67
|
process.exit(0);
|
|
@@ -99,6 +108,77 @@ Exit codes:
|
|
|
99
108
|
2 script error (missing env, bad args, etc.)
|
|
100
109
|
`);
|
|
101
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* 0.15.0-α.4 — resolve brew's execution mode.
|
|
113
|
+
*
|
|
114
|
+
* `requested === "plate"` or `"legacy"` → return as-is.
|
|
115
|
+
*
|
|
116
|
+
* `requested === "auto"` → detect from spec + GitHub state:
|
|
117
|
+
* plate-mode requires BOTH (a) the spec has at least one populated
|
|
118
|
+
* `proposals.fixtures.by_domain.<domain>` entry (UI surface), AND (b)
|
|
119
|
+
* a slowcook-mockup PR for this story has been merged on the repo.
|
|
120
|
+
* If either condition is unmet → legacy.
|
|
121
|
+
*
|
|
122
|
+
* GitHub check uses `gh pr list` to look for closed PRs whose head
|
|
123
|
+
* branch matches `slowcook/mockup/story-<id>`. Cheaper than fetching
|
|
124
|
+
* a single PR by branch name (which 404s instead of returning empty).
|
|
125
|
+
*/
|
|
126
|
+
async function resolveBrewMode(args) {
|
|
127
|
+
if (args.requested === "plate")
|
|
128
|
+
return "plate";
|
|
129
|
+
if (args.requested === "legacy")
|
|
130
|
+
return "legacy";
|
|
131
|
+
// auto path
|
|
132
|
+
const specPath = join(args.repoRoot, "specs", `story-${args.storyId}.yaml`);
|
|
133
|
+
let specYaml = "";
|
|
134
|
+
try {
|
|
135
|
+
specYaml = require("node:fs").readFileSync(specPath, "utf8");
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return "legacy";
|
|
139
|
+
}
|
|
140
|
+
// Same hasUiSurface heuristic as the vibe command.
|
|
141
|
+
const proposalsIdx = specYaml.search(/^proposals\s*:\s*$/m);
|
|
142
|
+
if (proposalsIdx < 0)
|
|
143
|
+
return "legacy";
|
|
144
|
+
const tail = specYaml.slice(proposalsIdx);
|
|
145
|
+
const fixturesMatch = tail.match(/^(\s+)fixtures\s*:\s*$/m);
|
|
146
|
+
if (!fixturesMatch)
|
|
147
|
+
return "legacy";
|
|
148
|
+
const fixturesBlockStart = tail.indexOf(fixturesMatch[0]) + fixturesMatch[0].length;
|
|
149
|
+
const byDomainMatch = tail
|
|
150
|
+
.slice(fixturesBlockStart)
|
|
151
|
+
.match(/^(\s+)by_domain\s*:\s*$/m);
|
|
152
|
+
if (!byDomainMatch)
|
|
153
|
+
return "legacy";
|
|
154
|
+
const byDomainIndentLen = byDomainMatch[1].length;
|
|
155
|
+
const after = tail.slice(fixturesBlockStart +
|
|
156
|
+
tail.slice(fixturesBlockStart).indexOf(byDomainMatch[0]) +
|
|
157
|
+
byDomainMatch[0].length);
|
|
158
|
+
const entryRe = new RegExp(`^( {${byDomainIndentLen + 1},}|\\t+)([a-z][a-z0-9_-]*)\\s*:\\s*$`, "m");
|
|
159
|
+
if (!entryRe.test(after))
|
|
160
|
+
return "legacy";
|
|
161
|
+
// Check for a merged slowcook-mockup PR.
|
|
162
|
+
try {
|
|
163
|
+
const branch = `slowcook/mockup/story-${args.storyId}`;
|
|
164
|
+
const out = execSync(`gh pr list --state merged --head ${JSON.stringify(branch)} --json number --limit 1`, {
|
|
165
|
+
cwd: args.repoRoot,
|
|
166
|
+
encoding: "utf8",
|
|
167
|
+
env: { ...process.env, GH_TOKEN: args.githubToken },
|
|
168
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
169
|
+
}).trim();
|
|
170
|
+
const arr = JSON.parse(out);
|
|
171
|
+
if (arr.length === 0) {
|
|
172
|
+
console.log(`(brew auto-detect: spec has fixtures but no merged slowcook-mockup PR for story-${args.storyId} found → legacy mode)`);
|
|
173
|
+
return "legacy";
|
|
174
|
+
}
|
|
175
|
+
return "plate";
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
console.warn(`(brew auto-detect: gh pr list failed — ${e.message}; defaulting to legacy)`);
|
|
179
|
+
return "legacy";
|
|
180
|
+
}
|
|
181
|
+
}
|
|
102
182
|
function detectOwnerRepo(cwd) {
|
|
103
183
|
try {
|
|
104
184
|
const url = execSync("git remote get-url origin", {
|
|
@@ -137,10 +217,34 @@ export async function brew(argv, cliVersion) {
|
|
|
137
217
|
const spec = loadSpec(args.repoRoot, args.storyId);
|
|
138
218
|
const stackConfig = readStackConfig(args.repoRoot);
|
|
139
219
|
const frozenPaths = readFrozenPaths(args.repoRoot);
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
|
|
220
|
+
// 0.15.0-α.4 — mode resolution. `auto` checks: does the spec have
|
|
221
|
+
// `proposals.fixtures.by_domain.*` populated AND has a slowcook-mockup
|
|
222
|
+
// PR for this story merged? If both yes → plate. Otherwise → legacy.
|
|
223
|
+
// Force-modes (plate / legacy) skip the check.
|
|
224
|
+
const resolvedMode = await resolveBrewMode({
|
|
225
|
+
requested: args.mode,
|
|
226
|
+
repoRoot: args.repoRoot,
|
|
227
|
+
storyId: args.storyId,
|
|
228
|
+
owner,
|
|
229
|
+
repo,
|
|
230
|
+
githubToken,
|
|
231
|
+
});
|
|
232
|
+
console.log(`brew mode: ${resolvedMode}${args.mode === "auto" ? " (auto-detected)" : ""}`);
|
|
233
|
+
// 0.15.0-α.4 — plate-mode pulls the latest mockup files onto main BEFORE
|
|
234
|
+
// brew starts, so the agent reads them as ground truth. The
|
|
235
|
+
// slowcook-mockup PR is expected to be MERGED before brew fires.
|
|
236
|
+
// We don't re-fetch here; the caller workflow pulls origin/main.
|
|
237
|
+
// Allowed paths. In plate-mode, restrict to data-layer + API + migrations
|
|
238
|
+
// + tests. Frozen-paths guard then physically rejects any UI edit.
|
|
239
|
+
// In legacy mode, fall through to today's "wide allowed_paths" behavior.
|
|
240
|
+
const allowedPaths = resolvedMode === "plate"
|
|
241
|
+
? [
|
|
242
|
+
"src/lib/data/**", // brew rewrites .ts stub; .mock.ts protected by extension check
|
|
243
|
+
"src/app/api/**",
|
|
244
|
+
"supabase/migrations/**",
|
|
245
|
+
"tests/**",
|
|
246
|
+
]
|
|
247
|
+
: [];
|
|
144
248
|
const forge = new GitHubAdapter({ owner, repo, token: githubToken });
|
|
145
249
|
const anthropic = new Anthropic({ apiKey: anthropicKey });
|
|
146
250
|
const startedAt = new Date();
|
|
@@ -174,6 +278,7 @@ export async function brew(argv, cliVersion) {
|
|
|
174
278
|
haltDir,
|
|
175
279
|
runLogPath,
|
|
176
280
|
cliVersion,
|
|
281
|
+
mode: resolvedMode,
|
|
177
282
|
};
|
|
178
283
|
try {
|
|
179
284
|
const outcome = await runBrew(ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/brew/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EACL,OAAO,EACP,eAAe,EACf,eAAe,EACf,QAAQ,GAET,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/brew/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Re-export shim — see investigate/prompts.ts for the rationale.
|
|
3
3
|
* Source of truth: `@slowcook-ai/llm-anthropic/prompts/brew`.
|
|
4
4
|
*/
|
|
5
|
-
export { BREW_SYSTEM, BREW_TOOLS, turnPrompt, turnPromptParts, } from "@slowcook-ai/llm-anthropic";
|
|
5
|
+
export { BREW_SYSTEM, BREW_TOOLS, turnPrompt, turnPromptParts, BREW_PLATE_MODE_ADDENDUM, } from "@slowcook-ai/llm-anthropic";
|
|
6
6
|
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/commands/brew/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAe,
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/commands/brew/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAe,EACf,wBAAwB,GACzB,MAAM,4BAA4B,CAAC"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Re-export shim — see investigate/prompts.ts for the rationale.
|
|
3
3
|
* Source of truth: `@slowcook-ai/llm-anthropic/prompts/brew`.
|
|
4
4
|
*/
|
|
5
|
-
export { BREW_SYSTEM, BREW_TOOLS, turnPrompt, turnPromptParts, } from "@slowcook-ai/llm-anthropic";
|
|
5
|
+
export { BREW_SYSTEM, BREW_TOOLS, turnPrompt, turnPromptParts, BREW_PLATE_MODE_ADDENDUM, } from "@slowcook-ai/llm-anthropic";
|
|
6
6
|
//# sourceMappingURL=prompts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/commands/brew/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAe,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/commands/brew/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAe,EACf,wBAAwB,GACzB,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plate agent — mockup-amendment loop (0.15.0-α.3).
|
|
3
|
+
*
|
|
4
|
+
* Single-shot LLM call per `/plate` trigger. Reads PR comments + image
|
|
5
|
+
* attachments since the last plate commit, amends mockup files with
|
|
6
|
+
* minimum diff, returns the parsed result for the index.ts wrapper to
|
|
7
|
+
* write + force-push.
|
|
8
|
+
*
|
|
9
|
+
* Same shape as vibe's agent but accepts vision-message inputs (image
|
|
10
|
+
* blocks alongside text). No format-compliance retry — plate is mid-
|
|
11
|
+
* iteration; if the model emits prose-only on round 1, the calling
|
|
12
|
+
* dispatch surfaces the problem to the PM via a comment ("plate
|
|
13
|
+
* couldn't parse a response — re-run with `/plate` to retry").
|
|
14
|
+
*/
|
|
15
|
+
import { type PlateFeedback } from "./prompts.js";
|
|
16
|
+
import { type VibeChangeRequest, type VibeFileBlock } from "../vibe/emit.js";
|
|
17
|
+
export interface PlateContext {
|
|
18
|
+
repoRoot: string;
|
|
19
|
+
anthropicApiKey: string;
|
|
20
|
+
model: string;
|
|
21
|
+
storyId: string;
|
|
22
|
+
prNumber: number;
|
|
23
|
+
cliVersion: string;
|
|
24
|
+
/** Pre-rendered project-context blob (same shape as vibe). */
|
|
25
|
+
projectContext: string;
|
|
26
|
+
/** Spec YAML, for context only. */
|
|
27
|
+
specYaml: string;
|
|
28
|
+
/** Current state of mockup files on the branch. */
|
|
29
|
+
currentFiles: Array<{
|
|
30
|
+
path: string;
|
|
31
|
+
contents: string;
|
|
32
|
+
}>;
|
|
33
|
+
/** PM feedback to act on. */
|
|
34
|
+
feedback: PlateFeedback;
|
|
35
|
+
}
|
|
36
|
+
export type PlateResult = {
|
|
37
|
+
kind: "amended";
|
|
38
|
+
files: VibeFileBlock[];
|
|
39
|
+
changeRequests: VibeChangeRequest[];
|
|
40
|
+
summary: string;
|
|
41
|
+
spendUsd: number;
|
|
42
|
+
} | {
|
|
43
|
+
kind: "no-op";
|
|
44
|
+
summary: string;
|
|
45
|
+
spendUsd: number;
|
|
46
|
+
} | {
|
|
47
|
+
kind: "format-failure";
|
|
48
|
+
finalText: string;
|
|
49
|
+
spendUsd: number;
|
|
50
|
+
};
|
|
51
|
+
/** Extract the optional `<plate_summary>` block. */
|
|
52
|
+
declare function parsePlateSummary(body: string): string | null;
|
|
53
|
+
export declare function runPlate(ctx: PlateContext): Promise<PlateResult>;
|
|
54
|
+
export { parsePlateSummary };
|
|
55
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/commands/plate/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AAKzB,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxD,6BAA6B;IAC7B,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,MAAM,WAAW,GACnB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,cAAc,EAAE,iBAAiB,EAAE,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD;IACE,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,GACD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEN,oDAAoD;AACpD,iBAAS,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtD;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA6CtE;AAeD,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plate agent — mockup-amendment loop (0.15.0-α.3).
|
|
3
|
+
*
|
|
4
|
+
* Single-shot LLM call per `/plate` trigger. Reads PR comments + image
|
|
5
|
+
* attachments since the last plate commit, amends mockup files with
|
|
6
|
+
* minimum diff, returns the parsed result for the index.ts wrapper to
|
|
7
|
+
* write + force-push.
|
|
8
|
+
*
|
|
9
|
+
* Same shape as vibe's agent but accepts vision-message inputs (image
|
|
10
|
+
* blocks alongside text). No format-compliance retry — plate is mid-
|
|
11
|
+
* iteration; if the model emits prose-only on round 1, the calling
|
|
12
|
+
* dispatch surfaces the problem to the PM via a comment ("plate
|
|
13
|
+
* couldn't parse a response — re-run with `/plate` to retry").
|
|
14
|
+
*/
|
|
15
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
16
|
+
import { PLATE_AMENDMENT_SYSTEM, buildPlateAmendmentPrompt, } from "./prompts.js";
|
|
17
|
+
import { parseVibeOutput, } from "../vibe/emit.js";
|
|
18
|
+
import { costUsdForUsage } from "@slowcook-ai/llm-anthropic";
|
|
19
|
+
const MAX_TOKENS = 8192;
|
|
20
|
+
/** Extract the optional `<plate_summary>` block. */
|
|
21
|
+
function parsePlateSummary(body) {
|
|
22
|
+
const m = body.match(/<plate_summary>([\s\S]*?)<\/plate_summary>/);
|
|
23
|
+
return m ? m[1].trim() : null;
|
|
24
|
+
}
|
|
25
|
+
export async function runPlate(ctx) {
|
|
26
|
+
const anthropic = new Anthropic({ apiKey: ctx.anthropicApiKey });
|
|
27
|
+
const userBlocks = buildPlateAmendmentPrompt({
|
|
28
|
+
storyId: ctx.storyId,
|
|
29
|
+
prNumber: ctx.prNumber,
|
|
30
|
+
specYaml: ctx.specYaml,
|
|
31
|
+
currentFiles: ctx.currentFiles,
|
|
32
|
+
feedback: ctx.feedback,
|
|
33
|
+
});
|
|
34
|
+
const response = await anthropic.messages.create({
|
|
35
|
+
model: ctx.model,
|
|
36
|
+
max_tokens: MAX_TOKENS,
|
|
37
|
+
system: PLATE_AMENDMENT_SYSTEM(ctx.projectContext),
|
|
38
|
+
messages: [{ role: "user", content: userBlocks }],
|
|
39
|
+
});
|
|
40
|
+
const spendUsd = costUsd(response, ctx.model);
|
|
41
|
+
let finalText = "";
|
|
42
|
+
for (const block of response.content) {
|
|
43
|
+
if (block.type === "text")
|
|
44
|
+
finalText = block.text;
|
|
45
|
+
}
|
|
46
|
+
const parsed = parseVibeOutput(finalText);
|
|
47
|
+
const summary = parsePlateSummary(finalText) ?? "";
|
|
48
|
+
// No-op case: summary present but no file blocks. Plate explicitly
|
|
49
|
+
// chose not to amend (because feedback was answered by existing state,
|
|
50
|
+
// or it surfaced a clarifying question). We still post the summary.
|
|
51
|
+
if (parsed.files.length === 0) {
|
|
52
|
+
if (summary) {
|
|
53
|
+
return { kind: "no-op", summary, spendUsd };
|
|
54
|
+
}
|
|
55
|
+
return { kind: "format-failure", finalText, spendUsd };
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
kind: "amended",
|
|
59
|
+
files: parsed.files,
|
|
60
|
+
changeRequests: parsed.changeRequests,
|
|
61
|
+
summary: summary || "(no summary block emitted)",
|
|
62
|
+
spendUsd,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function costUsd(response, model) {
|
|
66
|
+
const usage = response.usage;
|
|
67
|
+
return costUsdForUsage(model, {
|
|
68
|
+
inputTokens: usage.input_tokens,
|
|
69
|
+
outputTokens: usage.output_tokens,
|
|
70
|
+
cacheReadTokens: usage.cache_read_input_tokens ?? 0,
|
|
71
|
+
cacheCreateTokens: usage.cache_creation_input_tokens ?? 0,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
export { parsePlateSummary };
|
|
75
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/commands/plate/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `slowcook plate --pr <number>` — 0.15.0-α.3.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors `slowcook refine --pr` for the mockup branch. Triggered by
|
|
5
|
+
* `/plate <prose>` PR comments + reviews on a slowcook-mockup PR.
|
|
6
|
+
*
|
|
7
|
+
* α.3 ships without screenshot-attachment vision (text-only feedback).
|
|
8
|
+
* Vision support (PlateImageAttachment) is wired in the prompt + agent
|
|
9
|
+
* but the index doesn't fetch image attachments yet — coming α.3.1.
|
|
10
|
+
*/
|
|
11
|
+
export declare function plate(argv: string[], cliVersion: string): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/plate/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA8OH,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiM7E"}
|