@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
- writeFileSync(LIB_PATH, bumpPinnedSource(src, obs.installed, today));
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, PR.'
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-03 against 1.2.16.
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.2.16';
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, D6/D8/X10).
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
- * This is a CONSTANT, not this repo's business to author: golden-beans `apps/web/lib/install-prompt.ts`
163
- * is the SOURCE (`export const INSTALL_PROMPT`), and it names only `github.com` /
164
- * `raw.githubusercontent.com` URLs and no site URL — so unlike `getSiteUrl()`-backed strings there, it
165
- * needs no per-environment origin and is safe to transcribe byte-for-byte. This is that transcription,
166
- * exactly as golden-beans' `CopyPromptCard` renders it on the closing CTA, `/install` and onboarding.
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 — a one-word drift fails it. Never hand-edit this without the
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
- "Install the golden-frijoles plugin. If you're in Claude Code, run `claude plugin marketplace add " +
177
- 'golden-frijoles/skills`, then `claude plugin install golden-frijoles@golden-frijoles`. If you\'re in ' +
178
- 'another agent, run `npx skills add golden-frijoles/skills --skill \'*\'` and select your ' +
179
- 'agent. Use one installation method. You can read the skill directly at ' +
180
- 'https://github.com/golden-frijoles/skills/blob/main/plugins/golden-frijoles/skills/golden-frijoles/SKILL.md ' +
181
- '(raw: https://raw.githubusercontent.com/golden-frijoles/skills/main/plugins/golden-frijoles/skills/golden-frijoles/SKILL.md). ' +
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.28.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": {