@golden-frijoles/kit 0.24.0 → 0.24.1
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/lib/cross-agent-cli.mjs +15 -6
- package/package.json +1 -1
|
@@ -53,10 +53,10 @@ export const AGENT_BIN = {
|
|
|
53
53
|
// Harmless here since AGY_MODEL/AGY_FALLBACK_MODEL below are always valid, listed model names (checked via
|
|
54
54
|
// `agy models`), but it means a future typo in either constant would silently review with the WRONG model
|
|
55
55
|
// instead of failing loud — watch for that if either constant is ever edited.
|
|
56
|
-
// agy-doctor: last verified 2026-10-
|
|
56
|
+
// agy-doctor: last verified 2026-10-03 against 1.2.16.
|
|
57
57
|
// ^ machine-managed marker — `node scripts/cross-agent-doctor.mjs agy --fix` rewrites it (with the constant
|
|
58
58
|
// below) after a green live contract probe. Don't hand-edit the marker's shape.
|
|
59
|
-
export const AGY_PINNED = '1.2.
|
|
59
|
+
export const AGY_PINNED = '1.2.16';
|
|
60
60
|
|
|
61
61
|
// agy's `--print` mode prints NOTHING unless `--model` names a model — and, crucially, it ALSO prints
|
|
62
62
|
// nothing (exit 0, empty stdout — the error lands only in agy's log, see --log-file) when the model is
|
|
@@ -1405,6 +1405,18 @@ export function runClaudeCode(prompt, stdin, opts = {}, deps = {}) {
|
|
|
1405
1405
|
// over agy's argv path for large diffs. Empty stdout is a failure (a quota-capped devin, like agy, exits 0
|
|
1406
1406
|
// with nothing). Uses the account default model. `deps` is injectable so a node:test drives it without a
|
|
1407
1407
|
// real devin binary or touching the real filesystem.
|
|
1408
|
+
/**
|
|
1409
|
+
* The line of devin's stderr that says what went wrong. Devin ends its errors with a JSON detail block, so the LAST
|
|
1410
|
+
* line is a bare `}` — which is all the 📝 rail logged for ten days while the real line read "Your weekly usage quota
|
|
1411
|
+
* has been exhausted". Prefer the first `Error:` line, else the last line that is not JSON punctuation.
|
|
1412
|
+
*/
|
|
1413
|
+
export function devinErrorLine(stderr) {
|
|
1414
|
+
const lines = String(stderr || '').trim().split('\n').map((l) => l.trim()).filter(Boolean);
|
|
1415
|
+
const error = lines.find((l) => /^error\b/i.test(l));
|
|
1416
|
+
if (error) return error.replace(/:?\s*\{\s*$/, '');
|
|
1417
|
+
return lines.filter((l) => !/^[{}\[\],]+$/.test(l)).pop() || 'unknown error';
|
|
1418
|
+
}
|
|
1419
|
+
|
|
1408
1420
|
export function runDevin(prompt, opts = {}, deps = {}) {
|
|
1409
1421
|
const { spawn = spawnSync, writeFile = writeFileSync, mkdtemp = mkdtempSync, rm = rmSync } = deps;
|
|
1410
1422
|
let dir;
|
|
@@ -1425,10 +1437,7 @@ export function runDevin(prompt, opts = {}, deps = {}) {
|
|
|
1425
1437
|
opts.soft,
|
|
1426
1438
|
`devin not found or failed to spawn (${r.error.message}) — install the Devin CLI or use --agent codex/antigravity.`
|
|
1427
1439
|
);
|
|
1428
|
-
if (r.status !== 0) {
|
|
1429
|
-
const last = (r.stderr || '').trim().split('\n').filter(Boolean).pop() || 'unknown error';
|
|
1430
|
-
return fail(opts.soft, `devin -p failed: ${last}`);
|
|
1431
|
-
}
|
|
1440
|
+
if (r.status !== 0) return fail(opts.soft, `devin -p failed: ${devinErrorLine(r.stderr)}`);
|
|
1432
1441
|
const out = (r.stdout || '').trim();
|
|
1433
1442
|
if (!out) {
|
|
1434
1443
|
return fail(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golden-frijoles/kit",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.1",
|
|
4
4
|
"description": "The scripts the Golden Frijoles skills run, packaged so they work in any repo: planning, build-order, reporting and verification rails. Zero dependencies.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|