@golden-frijoles/kit 0.28.0 → 0.29.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.
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
codexExecArgs,
|
|
37
37
|
isCodexCapped,
|
|
38
38
|
} from './lib/cross-agent-cli.mjs';
|
|
39
|
-
import { readFileSync, realpathSync, writeFileSync } from 'node:fs';
|
|
39
|
+
import { existsSync, readFileSync, realpathSync, writeFileSync } from 'node:fs';
|
|
40
40
|
|
|
41
41
|
// ═══ CODEX ════════════════════════════════════════════════════════════════════════════════════
|
|
42
42
|
// The codex half — diagnose why the Codex CLI can't run, and name the exact fix.
|
|
@@ -211,6 +211,10 @@ async function codexMain() {
|
|
|
211
211
|
// (isMain-guarded, per LEARNINGS).
|
|
212
212
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
213
213
|
const LIB_PATH = join(__dirname, 'lib', 'cross-agent-cli.mjs');
|
|
214
|
+
// The byte-identical template mirror, when this runs in the repo that carries one (golden-beans:
|
|
215
|
+
// `skills/template/scripts/`, held identical by check-script-parity). Bumping only LIB_PATH broke that
|
|
216
|
+
// parity on 2026-10-06 (PR #278); in a consumer project the path does not exist and is skipped.
|
|
217
|
+
const MIRROR_LIB_PATH = join(__dirname, '..', 'skills', 'template', 'scripts', 'lib', 'cross-agent-cli.mjs');
|
|
214
218
|
|
|
215
219
|
// ── Pure decision core (the unit under test) ─────────────────────────────────────────────────────────
|
|
216
220
|
// Given the observed facts, decide ONE action, most severe first:
|
|
@@ -554,7 +558,10 @@ async function agyMain() {
|
|
|
554
558
|
}
|
|
555
559
|
const src = readFileSync(LIB_PATH, 'utf8');
|
|
556
560
|
const today = new Date().toISOString().slice(0, 10);
|
|
557
|
-
|
|
561
|
+
const bumped = bumpPinnedSource(src, obs.installed, today);
|
|
562
|
+
writeFileSync(LIB_PATH, bumped);
|
|
563
|
+
const mirrored = existsSync(MIRROR_LIB_PATH);
|
|
564
|
+
if (mirrored) writeFileSync(MIRROR_LIB_PATH, bumped);
|
|
558
565
|
line(`✓ AGY_PINNED bumped ${obs.pinned} → ${obs.installed} (probe green; marker dated ${today}).`);
|
|
559
566
|
const t = spawnSync(process.execPath, ['--test', 'scripts/lib/*.test.mjs', 'scripts/*.test.mjs'], {
|
|
560
567
|
encoding: 'utf8',
|
|
@@ -577,7 +584,9 @@ async function agyMain() {
|
|
|
577
584
|
line(
|
|
578
585
|
' branch `chore/agy-pin-bump-' +
|
|
579
586
|
obs.installed +
|
|
580
|
-
'`, path-limited commit of scripts/lib/cross-agent-cli.mjs
|
|
587
|
+
'`, path-limited commit of scripts/lib/cross-agent-cli.mjs' +
|
|
588
|
+
(mirrored ? ' and skills/template/scripts/lib/cross-agent-cli.mjs' : '') +
|
|
589
|
+
', PR.'
|
|
581
590
|
);
|
|
582
591
|
return;
|
|
583
592
|
}
|
|
@@ -54,10 +54,10 @@ export const AGENT_BIN = {
|
|
|
54
54
|
// Harmless here since AGY_MODEL/AGY_FALLBACK_MODEL below are always valid, listed model names (checked via
|
|
55
55
|
// `agy models`), but it means a future typo in either constant would silently review with the WRONG model
|
|
56
56
|
// instead of failing loud — watch for that if either constant is ever edited.
|
|
57
|
-
// agy-doctor: last verified 2026-10-
|
|
57
|
+
// agy-doctor: last verified 2026-10-06 against 1.3.0.
|
|
58
58
|
// ^ machine-managed marker — `node scripts/cross-agent-doctor.mjs agy --fix` rewrites it (with the constant
|
|
59
59
|
// below) after a green live contract probe. Don't hand-edit the marker's shape.
|
|
60
|
-
export const AGY_PINNED = '1.
|
|
60
|
+
export const AGY_PINNED = '1.3.0';
|
|
61
61
|
|
|
62
62
|
// agy's `--print` mode prints NOTHING unless `--model` names a model — and, crucially, it ALSO prints
|
|
63
63
|
// nothing (exit 0, empty stdout — the error lands only in agy's log, see --log-file) when the model is
|
|
@@ -157,29 +157,24 @@ export function compareVersions(a, b) {
|
|
|
157
157
|
}
|
|
158
158
|
|
|
159
159
|
/**
|
|
160
|
-
* The ONE install prompt a stranger pastes into their agent (golden-frijoles-plugin S3.3/S3.4
|
|
160
|
+
* The ONE install prompt a stranger pastes into their agent (golden-frijoles-plugin S3.3/S3.4;
|
|
161
|
+
* account-from-the-terminal S1.2, D2).
|
|
161
162
|
*
|
|
162
|
-
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
163
|
+
* golden-beans `apps/web/lib/install-prompt.ts` is the SOURCE: `installPrompt(siteUrl)`, built from
|
|
164
|
+
* `getSiteUrl()` there because the prompt now sends the agent to read `<site>/install.md` before it
|
|
165
|
+
* installs anything. This is its transcription against the PRODUCTION origin — never a preview URL —
|
|
166
|
+
* and golden-beans' `install-prompt.test.ts` imports this constant and asserts it equals
|
|
167
|
+
* `installPrompt('https://goldenfrijoles.com')`, so a one-sided edit goes red there.
|
|
167
168
|
* `scripts/check-onboarding-parity.mjs` asserts this string appears VERBATIM in the repo README.md and
|
|
168
|
-
* the `golden-frijoles` umbrella SKILL.md
|
|
169
|
-
* source (golden-beans `apps/web/lib/install-prompt.ts`) changing first.
|
|
170
|
-
*
|
|
171
|
-
* Text: the audit's §3.1 prompt (`Roadmap/00-ideas/audits/golden-frijoles-unification-2026-09-23.md`,
|
|
172
|
-
* golden-beans checkout), verbatim, its soft-wrapped blockquote lines joined into the one paragraph it
|
|
173
|
-
* renders as.
|
|
169
|
+
* the `golden-frijoles` umbrella SKILL.md. Never hand-edit this without the source changing first.
|
|
174
170
|
*/
|
|
175
171
|
export const INSTALL_PROMPT =
|
|
176
|
-
|
|
177
|
-
'
|
|
178
|
-
'
|
|
179
|
-
'
|
|
180
|
-
'
|
|
181
|
-
'
|
|
182
|
-
'Then use the golden-frijoles skill when working on this project, and start with its setup.';
|
|
172
|
+
'Set up Golden Frijoles in this project. ' +
|
|
173
|
+
'1. Read https://goldenfrijoles.com/install.md before installing anything. ' +
|
|
174
|
+
'2. Tell me in a few lines what it installs, what changes on this machine and which services it contacts. ' +
|
|
175
|
+
'Offer me a security review, and wait for my go-ahead. ' +
|
|
176
|
+
'3. Install it the way install.md says for the agent you are. ' +
|
|
177
|
+
'4. Run the golden-frijoles skill and start its setup.';
|
|
183
178
|
|
|
184
179
|
/**
|
|
185
180
|
* The value of `name` in a dotenv file, or null.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golden-frijoles/kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.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": {
|