@unimatrix27/ralph-harness 1.0.2 → 1.0.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.
@@ -18,6 +18,7 @@ import { spawnSync } from "node:child_process";
18
18
  import { createRequire } from "node:module";
19
19
  import { loadDotenv } from "../lib/env-loader.js";
20
20
  import { LauncherError, run } from "../lib/fire-launcher.js";
21
+ import { runWizard } from "../lib/ralph-fire-wizard.js";
21
22
  const require = createRequire(import.meta.url);
22
23
  const pkg = require("../../package.json");
23
24
  async function main() {
@@ -31,6 +32,12 @@ async function main() {
31
32
  process.exit(2);
32
33
  }
33
34
  loadDotenv();
35
+ // Issue #36: when invoked from a TTY with required env unset, walk the
36
+ // operator through to a launch (auto-discover RALPH_TARGET_REPO from
37
+ // `git remote get-url origin`, prompt for missing fields, validate the
38
+ // local .ralph/config.yaml schema version). No-op on non-TTY callers
39
+ // (CI, EC2 user-data) — the launcher's existing fail-fast still fires.
40
+ await runWizard({ env: process.env });
34
41
  if (process.env.RALPH_SKIP_BOOTSTRAP !== "1") {
35
42
  const r = spawnSync("ralph-bootstrap-aws", [], {
36
43
  stdio: "inherit",
@@ -1 +1 @@
1
- {"version":3,"file":"ralph-fire.js","sourceRoot":"","sources":["../../src/bin/ralph-fire.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ralph-fire.js","sourceRoot":"","sources":["../../src/bin/ralph-fire.ts"],"names":[],"mappings":";AACA,EAAE;AACF,+DAA+D;AAC/D,0EAA0E;AAC1E,yEAAyE;AACzE,qDAAqD;AACrD,EAAE;AACF,SAAS;AACT,iDAAiD;AACjD,gEAAgE;AAChE,EAAE;AACF,0EAA0E;AAC1E,2DAA2D;AAC3D,EAAE;AACF,uEAAuE;AACvE,4DAA4D;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAEjE,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE,CAAC;QACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qCAAqC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CACxD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,UAAU,EAAE,CAAC;IAEb,uEAAuE;IACvE,qEAAqE;IACrE,uEAAuE;IACvE,qEAAqE;IACrE,uEAAuE;IACvE,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEtC,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,SAAS,CAAC,qBAAqB,EAAE,EAAE,EAAE;YAC7C,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6JAA6J,CAC9J,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,EAAE,qBAAqB,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-runner.d.ts","sourceRoot":"","sources":["../../src/lib/claude-runner.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAM7C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAGxB,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;aACd,KAAK,EAAE,OAAO;gBAAd,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;CAI5D;AAMD,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAKzE;AAED,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAIvE;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,EAAE,CAMV;AAYD,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,YAAY,CAAC,CA6CvB"}
1
+ {"version":3,"file":"claude-runner.d.ts","sourceRoot":"","sources":["../../src/lib/claude-runner.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAM7C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAGxB,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;aACd,KAAK,EAAE,OAAO;gBAAd,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;CAI5D;AAMD,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAKzE;AAED,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAIvE;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,EAAE,CAMV;AAYD,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAmDvB"}
@@ -78,8 +78,14 @@ export async function runClaude(prompt, opts = {}) {
78
78
  return new Promise((resolve, reject) => {
79
79
  let child;
80
80
  try {
81
+ // The harness always runs claude inside a throwaway worker (cloud-init
82
+ // EC2 or equivalent). Cloud-init runs as root; without IS_SANDBOX=1
83
+ // claude refuses --permission-mode bypassPermissions / --dangerously-
84
+ // skip-permissions and exits 1. Setting it here keeps the contract
85
+ // self-contained — system-setup.sh's own export does not propagate
86
+ // back to ralph-orchestrate's process env.
81
87
  child = spawn(bin, argv, {
82
- env: { ...env },
88
+ env: { IS_SANDBOX: "1", ...env },
83
89
  stdio: ["pipe", "pipe", "pipe"],
84
90
  });
85
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude-runner.js","sourceRoot":"","sources":["../../src/lib/claude-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-runner.js","sourceRoot":"","sources":["../../src/lib/claude-runner.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,EAAE;AACF,8EAA8E;AAC9E,yDAAyD;AACzD,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,sEAAsE;AACtE,EAAE;AACF,8DAA8D;AAC9D,gEAAgE;AAChE,4DAA4D;AAC5D,iEAAiE;AACjE,qEAAqE;AACrE,+EAA+E;AAC/E,oEAAoE;AACpE,2EAA2E;AAC3E,0CAA0C;AAC1C,2EAA2E;AAC3E,oEAAoE;AACpE,wCAAwC;AACxC,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,4BAA4B;AAE5B,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAE7C,MAAM,aAAa,GAAG,qCAAqC,CAAC;AAC5D,MAAM,WAAW,GACf,2EAA2E,CAAC;AAkB9E,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACd;IAA5B,YAA4B,KAAc,EAAE,OAAe;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QADW,UAAK,GAAL,KAAK,CAAS;QAExC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,0DAA0D;AAC1D,qEAAqE;AACrE,0CAA0C;AAC1C,8CAA8C;AAC9C,MAAM,UAAU,YAAY,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC/D,IAAI,GAAG,CAAC,sBAAsB,KAAK,GAAG;QAAE,OAAO,WAAW,CAAC;IAC3D,MAAM,QAAQ,GAAG,GAAG,CAAC,kBAAkB,CAAC;IACxC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,OAAO,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAC5D,CAAC,CAAC,GAAG,CAAC,gBAAgB;QACtB,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,KAAa,EACb,KAAc;IAEd,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,yEAAyE;IACzE,qEAAqE;IACrE,4BAA4B;IAC5B,OAAO,CAAC;SACL,KAAK,CAAC,UAAU,CAAC;SACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAc,EACd,OAAyB,EAAE;IAE3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAE7C,OAAO,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnD,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,uEAAuE;YACvE,oEAAoE;YACpE,sEAAsE;YACtE,mEAAmE;YACnE,mEAAmE;YACnE,2CAA2C;YAC3C,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;gBACvB,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,GAAG,EAAuB;gBACrD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CACJ,IAAI,iBAAiB,CACnB,GAAG,EACH,GAAG,aAAa,qBAAqB,GAAG,KACtC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CACjD,EAAE,CACH,CACF,CAAC;YACF,OAAO;QACT,CAAC;QAED,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAC/B,MAAM,CACJ,IAAI,iBAAiB,CACnB,GAAG,EACH,GAAG,aAAa,KAAK,GAAG,aAAa,GAAG,CAAC,OAAO,EAAE,CACnD,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAEzD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -44,6 +44,7 @@ interface WaitOptions {
44
44
  now?: Clock;
45
45
  sleep?: Sleeper;
46
46
  }
47
+ export declare function detectEarlyExit(clients: AwsClients, logGroup: string, instanceId: string): Promise<string | null>;
47
48
  export declare function waitForTerminated(clients: AwsClients, opts: WaitOptions): Promise<number>;
48
49
  export interface RunOptions {
49
50
  env?: NodeJS.ProcessEnv;
@@ -1 +1 @@
1
- {"version":3,"file":"fire-launcher.d.ts","sourceRoot":"","sources":["../../src/lib/fire-launcher.ts"],"names":[],"mappings":"AA4CA,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAI1B,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ;;;;;;;;;;;;;CAcX,CAAC;AAEX,qBAAa,aAAc,SAAQ,KAAK;aACV,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI9D;AAqBD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,qBAAqB,EAAE,MAAM,GAC5B,cAAc,CAoChB;AAiKD,MAAM,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAGpD,MAAM,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;AAGjC,UAAU,WAAW;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAKD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,MAAM,CAAC,CA0CjB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAGxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAG9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAsB,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAwF3D"}
1
+ {"version":3,"file":"fire-launcher.d.ts","sourceRoot":"","sources":["../../src/lib/fire-launcher.ts"],"names":[],"mappings":"AA6CA,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAC;AAI1B,eAAO,MAAM,aAAa,kBAAkB,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,QAAQ;;;;;;;;;;;;;CAcX,CAAC;AAEX,qBAAa,aAAc,SAAQ,KAAK;aACV,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAI9D;AAqBD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,qBAAqB,EAAE,MAAM,GAC5B,cAAc,CAoChB;AAiKD,MAAM,MAAM,OAAO,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAGpD,MAAM,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;AAGjC,UAAU,WAAW;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAWD,wBAAsB,eAAe,CACnC,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyBxB;AAWD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,MAAM,CAAC,CAoEjB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAGxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAG9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAMD,wBAAsB,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAwF3D"}
@@ -31,6 +31,7 @@
31
31
  // 0 instance terminated cleanly within the ceiling
32
32
  // 2 missing AWS-side resource OR missing required env
33
33
  // 3 wall-clock ceiling breached; force terminate-instances was issued
34
+ import { FilterLogEventsCommand } from "@aws-sdk/client-cloudwatch-logs";
34
35
  import { DescribeInstancesCommand, DescribeSecurityGroupsCommand, DescribeSubnetsCommand, DescribeVpcsCommand, RunInstancesCommand, TerminateInstancesCommand, } from "@aws-sdk/client-ec2";
35
36
  import { GetParameterCommand } from "@aws-sdk/client-ssm";
36
37
  import { defaultAwsClients, } from "./aws-clients.js";
@@ -215,13 +216,52 @@ async function runInstance(clients, p) {
215
216
  }
216
217
  const realSleep = (ms) => new Promise((r) => setTimeout(r, ms));
217
218
  const realNow = () => Date.now();
219
+ // detectEarlyExit — issue #37 backstop. Looks at the per-instance
220
+ // CloudWatch stream for sentinel lines that prove the orchestrator is
221
+ // done (`ORCHESTRATOR_EXITED rc=N`) or has reached a terminal outcome
222
+ // (`OUTCOME=...`). The trap-shutdown in user-data is the primary
223
+ // mechanism; this check covers the case where the orchestrator process
224
+ // itself was killed (OOM, signal) before its trap could fire. Returns
225
+ // the matching log line on hit, null otherwise. Any read failure is
226
+ // treated as "no signal" — callers fall back to the describe-instances
227
+ // poll + wall-clock ceiling.
228
+ export async function detectEarlyExit(clients, logGroup, instanceId) {
229
+ try {
230
+ const r = await clients.logs.send(new FilterLogEventsCommand({
231
+ logGroupName: logGroup,
232
+ logStreamNames: [instanceId],
233
+ // Match either marker. The CloudWatch filter pattern grammar uses
234
+ // ?-prefixed terms for OR; quoted string literals match anywhere
235
+ // in the message.
236
+ filterPattern: '?"ORCHESTRATOR_EXITED rc=" ?"OUTCOME="',
237
+ }));
238
+ for (const ev of r.events ?? []) {
239
+ const msg = (ev.message ?? "").trim();
240
+ if (msg.includes("ORCHESTRATOR_EXITED rc=") ||
241
+ msg.includes("OUTCOME=")) {
242
+ return msg;
243
+ }
244
+ }
245
+ return null;
246
+ }
247
+ catch {
248
+ return null;
249
+ }
250
+ }
218
251
  // waitForTerminated — polls describe-instances until State.Name=terminated.
219
252
  // Returns 0 on clean termination, 3 on wall-clock ceiling breach (after
220
253
  // firing terminate-instances on best-effort).
254
+ //
255
+ // Each tick also checks CloudWatch for an early-exit sentinel (issue
256
+ // #37). On hit, terminate-instances is fired immediately and the
257
+ // describe-instances loop continues until the state actually flips to
258
+ // `terminated` — that way callers always see a real terminal state and
259
+ // the post-hoc checker still has time to read the stream.
221
260
  export async function waitForTerminated(clients, opts) {
222
261
  const now = opts.now ?? realNow;
223
262
  const sleep = opts.sleep ?? realSleep;
224
263
  const deadline = now() + opts.config.maxLifetimeMin * 60_000;
264
+ let earlyExitForced = false;
225
265
  for (;;) {
226
266
  let state = "";
227
267
  try {
@@ -241,6 +281,22 @@ export async function waitForTerminated(clients, opts) {
241
281
  else {
242
282
  opts.info(moduleInfo(`instance ${opts.instanceId} state=${state}`));
243
283
  }
284
+ // CloudWatch backstop — only fire terminate-instances once. Once the
285
+ // describe-instances loop sees the resulting `terminated` state we
286
+ // exit cleanly.
287
+ if (!earlyExitForced) {
288
+ const marker = await detectEarlyExit(clients, opts.config.logGroup, opts.instanceId);
289
+ if (marker !== null) {
290
+ opts.info(moduleInfo(`early-exit signal observed in CloudWatch: ${marker}; forcing terminate`));
291
+ try {
292
+ await clients.ec2.send(new TerminateInstancesCommand({ InstanceIds: [opts.instanceId] }));
293
+ }
294
+ catch {
295
+ // best-effort
296
+ }
297
+ earlyExitForced = true;
298
+ }
299
+ }
244
300
  if (now() >= deadline) {
245
301
  opts.info(`${MODULE_PREFIX}: error: wall-clock ceiling (${opts.config.maxLifetimeMin}m) breached; forcing terminate`);
246
302
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"fire-launcher.js","sourceRoot":"","sources":["../../src/lib/fire-launcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fire-launcher.js","sourceRoot":"","sources":["../../src/lib/fire-launcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export declare const MODULE_PREFIX = "ralph-fire-wizard";
2
+ export declare function parseGithubRepoFromGitUrl(url: string): string | null;
3
+ export declare function gitRemoteOriginUrl(cwd: string): string | null;
4
+ export interface WizardIO {
5
+ ask: (question: string) => Promise<string>;
6
+ info: (line: string) => void;
7
+ }
8
+ export interface WizardOptions {
9
+ env: NodeJS.ProcessEnv;
10
+ cwd?: string;
11
+ isTty?: boolean;
12
+ io?: WizardIO;
13
+ gitRemote?: (cwd: string) => string | null;
14
+ }
15
+ export declare function runWizard(opts: WizardOptions): Promise<void>;
16
+ //# sourceMappingURL=ralph-fire-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ralph-fire-wizard.d.ts","sourceRoot":"","sources":["../../src/lib/ralph-fire-wizard.ts"],"names":[],"mappings":"AAoCA,eAAO,MAAM,aAAa,sBAAsB,CAAC;AAUjD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcpE;AAKD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY7D;AAED,MAAM,WAAW,QAAQ;IAEvB,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,QAAQ,CAAC;IAEd,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC5C;AA8BD,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAclE"}
@@ -0,0 +1,166 @@
1
+ // ralph-fire-wizard — interactive UX for `ralph-fire` when run from a TTY.
2
+ //
3
+ // Issue #36: when an operator runs `ralph-fire` from a clone of the
4
+ // target repo with no env vars set, walk them through the launch.
5
+ // Auto-discover RALPH_TARGET_REPO from `git remote get-url origin`,
6
+ // confirm with the operator, prompt for any other missing required
7
+ // fields, and validate the local `.ralph/config.yaml` schema version
8
+ // before handing off to the launcher.
9
+ //
10
+ // Design constraints:
11
+ // - Non-TTY callers (CI, EC2 user-data, the fire-launcher subprocessing
12
+ // `ralph-bootstrap-aws`) MUST NOT block on prompts. We do nothing
13
+ // when stdin or stdout is not a TTY — the launcher's existing fail-
14
+ // fast on missing env still fires downstream, byte-identical to the
15
+ // pre-wizard behaviour.
16
+ // - Operator-typed values always win over auto-discovered ones. If
17
+ // `RALPH_TARGET_REPO` is already set in env, we never overwrite it.
18
+ // - The wizard is purely additive — `ralph-fire` keeps working with
19
+ // no TTY exactly as before.
20
+ //
21
+ // Public surface:
22
+ // parseGithubRepoFromGitUrl(url) — pure, tested in isolation.
23
+ // runWizard(opts) — async; mutates the supplied env.
24
+ import { execFileSync } from "node:child_process";
25
+ import { existsSync, readFileSync } from "node:fs";
26
+ import { resolve as resolvePath } from "node:path";
27
+ import { createInterface } from "node:readline/promises";
28
+ import { CURRENT_SCHEMA_VERSION, validate as validateTargetConfig, ValidateError, readSchemaVersion, } from "./target-config-schema.js";
29
+ export const MODULE_PREFIX = "ralph-fire-wizard";
30
+ // parseGithubRepoFromGitUrl — extract `owner/repo` from a git remote
31
+ // URL. Accepts the three forms `git remote get-url origin` can return:
32
+ // https://github.com/owner/repo(.git)?
33
+ // https://x-access-token:<pat>@github.com/owner/repo(.git)?
34
+ // git@github.com:owner/repo(.git)?
35
+ // Returns null for anything else (gitlab, custom hosts, malformed input).
36
+ // The launcher only knows how to talk to github.com via the gh CLI, so
37
+ // we restrict to that host.
38
+ export function parseGithubRepoFromGitUrl(url) {
39
+ const trimmed = url.trim();
40
+ if (trimmed.length === 0)
41
+ return null;
42
+ // SSH form
43
+ const ssh = trimmed.match(/^[A-Za-z0-9._-]+@github\.com:([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+?)(?:\.git)?$/);
44
+ if (ssh)
45
+ return `${ssh[1]}/${ssh[2]}`;
46
+ // HTTPS form (with or without auth prefix)
47
+ const https = trimmed.match(/^https?:\/\/(?:[^/@]+@)?github\.com\/([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+?)(?:\.git)?\/?$/);
48
+ if (https)
49
+ return `${https[1]}/${https[2]}`;
50
+ return null;
51
+ }
52
+ // gitRemoteOriginUrl — best-effort `git -C <cwd> remote get-url origin`.
53
+ // Returns null if cwd is not in a git repo, the remote doesn't exist,
54
+ // or git isn't installed. Never throws.
55
+ export function gitRemoteOriginUrl(cwd) {
56
+ try {
57
+ const out = execFileSync("git", ["-C", cwd, "remote", "get-url", "origin"], { stdio: ["ignore", "pipe", "ignore"], encoding: "utf8", timeout: 2_000 });
58
+ const trimmed = out.trim();
59
+ return trimmed.length > 0 ? trimmed : null;
60
+ }
61
+ catch {
62
+ return null;
63
+ }
64
+ }
65
+ const DEFAULT_REGION = "eu-central-1";
66
+ function defaultIo() {
67
+ // Lazy readline construction — only wired up when we actually need to
68
+ // prompt, so unit tests that supply their own io stay free of fd leaks.
69
+ let rl = null;
70
+ return {
71
+ ask: async (q) => {
72
+ if (rl === null) {
73
+ rl = createInterface({ input: process.stdin, output: process.stdout });
74
+ }
75
+ const answer = await rl.question(q);
76
+ return answer.trim();
77
+ },
78
+ info: (line) => process.stdout.write(`${line}\n`),
79
+ };
80
+ }
81
+ // confirmYes — Y/n prompt that defaults to yes on empty input.
82
+ async function confirmYes(io, q) {
83
+ const a = (await io.ask(`${q} [Y/n] `)).toLowerCase();
84
+ if (a.length === 0)
85
+ return true;
86
+ return a === "y" || a === "yes";
87
+ }
88
+ // runWizard — interactive prompt path. No-op when not on a TTY. Mutates
89
+ // `opts.env` in place. Operator-typed env always wins; we never override
90
+ // a value the operator already set.
91
+ export async function runWizard(opts) {
92
+ const env = opts.env;
93
+ const cwd = opts.cwd ?? process.cwd();
94
+ const isTty = opts.isTty ??
95
+ (process.stdin.isTTY === true && process.stdout.isTTY === true);
96
+ if (!isTty)
97
+ return;
98
+ const io = opts.io ?? defaultIo();
99
+ const gitRemote = opts.gitRemote ?? gitRemoteOriginUrl;
100
+ await populateTargetRepo(env, cwd, io, gitRemote);
101
+ await populateAwsRegion(env, io);
102
+ await maybeValidateLocalConfig(cwd, io);
103
+ }
104
+ async function populateTargetRepo(env, cwd, io, gitRemote) {
105
+ if (env.RALPH_TARGET_REPO && env.RALPH_TARGET_REPO.length > 0)
106
+ return;
107
+ const remote = gitRemote(cwd);
108
+ const discovered = remote ? parseGithubRepoFromGitUrl(remote) : null;
109
+ if (discovered) {
110
+ if (await confirmYes(io, `Use ${discovered} as RALPH_TARGET_REPO?`)) {
111
+ env.RALPH_TARGET_REPO = discovered;
112
+ return;
113
+ }
114
+ }
115
+ const fallbackHint = discovered ?? "owner/repo";
116
+ for (;;) {
117
+ const typed = await io.ask(`RALPH_TARGET_REPO (${fallbackHint}): `);
118
+ if (typed.length > 0 && /^[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+$/.test(typed)) {
119
+ env.RALPH_TARGET_REPO = typed;
120
+ return;
121
+ }
122
+ io.info(`${MODULE_PREFIX}: expected the form owner/repo (got ${JSON.stringify(typed)})`);
123
+ }
124
+ }
125
+ async function populateAwsRegion(env, io) {
126
+ if (env.RALPH_AWS_REGION && env.RALPH_AWS_REGION.length > 0)
127
+ return;
128
+ const typed = await io.ask(`RALPH_AWS_REGION (${DEFAULT_REGION}): `);
129
+ env.RALPH_AWS_REGION = typed.length > 0 ? typed : DEFAULT_REGION;
130
+ }
131
+ // maybeValidateLocalConfig — when the operator is standing in a clone
132
+ // that already has a `.ralph/config.yaml`, surface schema-version
133
+ // mismatches up-front rather than waiting for system-setup.sh to fail
134
+ // on the EC2 worker. We do NOT block the launch — the authoritative
135
+ // validator runs on the worker against the target's tip-of-default-
136
+ // branch, which may differ from the operator's clone — but we warn so
137
+ // the operator can decide whether to fix it locally first.
138
+ async function maybeValidateLocalConfig(cwd, io) {
139
+ const cfgPath = resolvePath(cwd, ".ralph", "config.yaml");
140
+ if (!existsSync(cfgPath))
141
+ return;
142
+ let raw;
143
+ try {
144
+ raw = readFileSync(cfgPath, "utf8");
145
+ }
146
+ catch {
147
+ return;
148
+ }
149
+ const localVersion = readSchemaVersion(raw);
150
+ if (localVersion === undefined) {
151
+ io.info(`${MODULE_PREFIX}: ${cfgPath} has no schema_version; harness expects ${CURRENT_SCHEMA_VERSION}. Add 'schema_version: ${CURRENT_SCHEMA_VERSION}' to silence this warning.`);
152
+ }
153
+ else if (localVersion !== CURRENT_SCHEMA_VERSION) {
154
+ io.info(`${MODULE_PREFIX}: ${cfgPath} declares schema_version=${localVersion}; harness expects ${CURRENT_SCHEMA_VERSION}. The on-EC2 validator will reject this — update the file before launching.`);
155
+ return;
156
+ }
157
+ try {
158
+ validateTargetConfig(raw);
159
+ }
160
+ catch (err) {
161
+ if (err instanceof ValidateError) {
162
+ io.info(`${MODULE_PREFIX}: ${cfgPath} failed local schema validation (code ${err.code}): ${err.message}`);
163
+ }
164
+ }
165
+ }
166
+ //# sourceMappingURL=ralph-fire-wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ralph-fire-wizard.js","sourceRoot":"","sources":["../../src/lib/ralph-fire-wizard.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,9 @@ export declare class ValidateError extends Error {
4
4
  readonly code: ValidateExitCode;
5
5
  constructor(code: ValidateExitCode, message: string);
6
6
  }
7
+ export declare const CURRENT_SCHEMA_VERSION = 1;
7
8
  export declare const TargetConfigSchema: z.ZodObject<{
9
+ schema_version: z.ZodOptional<z.ZodLiteral<1>>;
8
10
  build_cmd: z.ZodString;
9
11
  test_cmd: z.ZodString;
10
12
  branch_prefix: z.ZodString;
@@ -25,4 +27,5 @@ export declare const TargetConfigSchema: z.ZodObject<{
25
27
  export type TargetConfig = z.infer<typeof TargetConfigSchema>;
26
28
  export declare function validate(yamlString: string): TargetConfig;
27
29
  export declare function moduleErr(message: string): string;
30
+ export declare function readSchemaVersion(yamlString: string): number | undefined;
28
31
  //# sourceMappingURL=target-config-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"target-config-schema.d.ts","sourceRoot":"","sources":["../../src/lib/target-config-schema.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE7C,qBAAa,aAAc,SAAQ,KAAK;aAEpB,IAAI,EAAE,gBAAgB;gBAAtB,IAAI,EAAE,gBAAgB,EACtC,OAAO,EAAE,MAAM;CAKlB;AAwBD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;kBASpB,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAqBzD;AAmGD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD"}
1
+ {"version":3,"file":"target-config-schema.d.ts","sourceRoot":"","sources":["../../src/lib/target-config-schema.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE7C,qBAAa,aAAc,SAAQ,KAAK;aAEpB,IAAI,EAAE,gBAAgB;gBAAtB,IAAI,EAAE,gBAAgB,EACtC,OAAO,EAAE,MAAM;CAKlB;AAYD,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAwBxC,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;kBAUpB,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAqBzD;AAmGD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD;AAQD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiBxE"}
@@ -25,6 +25,17 @@ export class ValidateError extends Error {
25
25
  this.name = "ValidateError";
26
26
  }
27
27
  }
28
+ // CURRENT_SCHEMA_VERSION — the schema major number the harness expects.
29
+ // Bumped when a breaking change is made to TargetConfigSchema. v1 was the
30
+ // first explicit version; configs with no `schema_version` field are
31
+ // treated as v1 (the implicit shape that shipped through 1.0.x).
32
+ //
33
+ // Migration story: when CURRENT bumps to N, configs declaring 1..N-1 will
34
+ // fail validate() with ValidateError(6). Operators bump the field after
35
+ // applying any field renames the new version requires. The wizard
36
+ // (issue #36) surfaces the mismatch up-front so the operator does not
37
+ // have to wait for the on-EC2 validator to fail.
38
+ export const CURRENT_SCHEMA_VERSION = 1;
28
39
  const NonEmptyString = z.string().min(1);
29
40
  const ReviewBotSchema = z
30
41
  .object({
@@ -42,6 +53,7 @@ const PromptExtensionsSchema = z
42
53
  const BranchPrefixSchema = NonEmptyString.refine((v) => !v.includes("/") && !/\s/.test(v), { message: "branch_prefix must not contain '/' or whitespace" });
43
54
  export const TargetConfigSchema = z
44
55
  .object({
56
+ schema_version: z.literal(CURRENT_SCHEMA_VERSION).optional(),
45
57
  build_cmd: NonEmptyString,
46
58
  test_cmd: NonEmptyString,
47
59
  branch_prefix: BranchPrefixSchema,
@@ -154,4 +166,27 @@ function formatReceived(received) {
154
166
  export function moduleErr(message) {
155
167
  return `${MODULE_PREFIX}: error: ${message}`;
156
168
  }
169
+ // readSchemaVersion — best-effort lookup of the `schema_version` top-
170
+ // level key. Returns undefined when the key is absent OR the document is
171
+ // malformed; callers (e.g. the wizard) treat those as "unspecified" and
172
+ // surface a separate diagnostic. We do not throw — the authoritative
173
+ // validator (`validate`) is the gate, and reading the version here is a
174
+ // pure inspection.
175
+ export function readSchemaVersion(yamlString) {
176
+ let parsed;
177
+ try {
178
+ parsed = parseYaml(yamlString, { prettyErrors: false });
179
+ }
180
+ catch {
181
+ return undefined;
182
+ }
183
+ if (parsed === null ||
184
+ parsed === undefined ||
185
+ typeof parsed !== "object" ||
186
+ Array.isArray(parsed)) {
187
+ return undefined;
188
+ }
189
+ const v = parsed.schema_version;
190
+ return typeof v === "number" ? v : undefined;
191
+ }
157
192
  //# sourceMappingURL=target-config-schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"target-config-schema.js","sourceRoot":"","sources":["../../src/lib/target-config-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"target-config-schema.js","sourceRoot":"","sources":["../../src/lib/target-config-schema.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-data-renderer.d.ts","sourceRoot":"","sources":["../../src/lib/user-data-renderer.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,aAAa,uBAAuB,CAAC;AAIlD,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,qBAAa,oBAAqB,SAAQ,KAAK;aACjB,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CAM1C;AAED,MAAM,WAAW,aAAa;IAE5B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IAGxB,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAG5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAOD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAqC3D"}
1
+ {"version":3,"file":"user-data-renderer.d.ts","sourceRoot":"","sources":["../../src/lib/user-data-renderer.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,aAAa,uBAAuB,CAAC;AAIlD,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,qBAAa,oBAAqB,SAAQ,KAAK;aACjB,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM;CAM1C;AAED,MAAM,WAAW,aAAa;IAE5B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IAGxB,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAG5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAOD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CA+C3D"}
@@ -57,14 +57,24 @@ export function renderUserData(input) {
57
57
  // 15-line target — keep this tight. Anything heavyweight goes in
58
58
  // `lib/cloud-init/system-setup.sh` (shipped inside the npm package and
59
59
  // invoked by `ralph-orchestrate` as its first step).
60
+ //
61
+ // The `trap … EXIT` hook (issue #37) emits a sentinel line for the
62
+ // launcher's CloudWatch backstop and runs `shutdown -h now` on any
63
+ // exit so the EC2 instance terminates immediately on orchestrator
64
+ // failure instead of sitting idle until the wall-clock ceiling. The
65
+ // body uses double-quoted single quotes so $rc is expanded by the
66
+ // shell at trap-fire time, not at template render time. We do NOT
67
+ // `exec ralph-orchestrate` because exec replaces the shell and the
68
+ // trap would never fire.
60
69
  const stub = `#!/bin/bash
61
- set -euo pipefail
70
+ set -uo pipefail
62
71
  exec > >(tee -a /var/log/ralph.log) 2>&1
72
+ trap 'rc=$?; printf "ORCHESTRATOR_EXITED rc=%s\\n" "$rc"; shutdown -h now' EXIT
63
73
  ${exports}
64
74
  curl -fsSL https://rpm.nodesource.com/setup_24.x | bash -
65
75
  dnf install -y nodejs git jq awscli
66
76
  npm install -g ${pkg}@${input.harnessVersion}
67
- exec ralph-orchestrate
77
+ ralph-orchestrate
68
78
  `;
69
79
  const bytes = Buffer.byteLength(stub, "utf8");
70
80
  if (bytes > USER_DATA_CAP_BYTES) {
@@ -1 +1 @@
1
- {"version":3,"file":"user-data-renderer.js","sourceRoot":"","sources":["../../src/lib/user-data-renderer.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,kDAAkD;AAClD,EAAE;AACF,sEAAsE;AACtE,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,sEAAsE;AACtE,+DAA+D;AAC/D,EAAE;AACF,kBAAkB;AAClB,oEAAoE;AACpE,kEAAkE;AAClE,mFAAmF;AAEnF,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAElD,sDAAsD;AACtD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACjB;IAA5B,YAA4B,KAAa;QACvC,KAAK,CACH,GAAG,aAAa,2BAA2B,KAAK,kCAAkC,mBAAmB,YAAY,CAClH,CAAC;QAHwB,UAAK,GAAL,KAAK,CAAQ;QAIvC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAmBD,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAE1D,uEAAuE;AACvE,uEAAuE;AACvE,6BAA6B;AAC7B,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAoB;IACjD,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,IAAI,oBAAoB,CAAC;IACtD,kEAAkE;IAClE,uDAAuD;IACvD,MAAM,OAAO,GAA2B;QACtC,iBAAiB,EAAE,KAAK,CAAC,UAAU;QACnC,gBAAgB,EAAE,KAAK,CAAC,SAAS;QACjC,eAAe,EAAE,KAAK,CAAC,QAAQ;QAC/B,0BAA0B,EAAE,KAAK,CAAC,iBAAiB;QACnD,0BAA0B,EAAE,KAAK,CAAC,iBAAiB;QACnD,uBAAuB,EAAE,KAAK,CAAC,eAAe;QAC9C,qBAAqB,EAAE,KAAK,CAAC,cAAc;KAC5C,CAAC;IACF,MAAM,MAAM,GAA2B,EAAE,GAAG,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;IACjF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU;SACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;SACzD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,iEAAiE;IACjE,uEAAuE;IACvE,qDAAqD;IACrD,MAAM,IAAI,GAAG;;;EAGb,OAAO;;;iBAGQ,GAAG,IAAI,KAAK,CAAC,cAAc;;CAE3C,CAAC;IAEA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,KAAK,GAAG,mBAAmB,EAAE,CAAC;QAChC,MAAM,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"user-data-renderer.js","sourceRoot":"","sources":["../../src/lib/user-data-renderer.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,kDAAkD;AAClD,EAAE;AACF,sEAAsE;AACtE,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,yEAAyE;AACzE,sEAAsE;AACtE,+DAA+D;AAC/D,EAAE;AACF,kBAAkB;AAClB,oEAAoE;AACpE,kEAAkE;AAClE,mFAAmF;AAEnF,MAAM,CAAC,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAElD,sDAAsD;AACtD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACjB;IAA5B,YAA4B,KAAa;QACvC,KAAK,CACH,GAAG,aAAa,2BAA2B,KAAK,kCAAkC,mBAAmB,YAAY,CAClH,CAAC;QAHwB,UAAK,GAAL,KAAK,CAAQ;QAIvC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAmBD,MAAM,oBAAoB,GAAG,4BAA4B,CAAC;AAE1D,uEAAuE;AACvE,uEAAuE;AACvE,6BAA6B;AAC7B,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAoB;IACjD,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,IAAI,oBAAoB,CAAC;IACtD,kEAAkE;IAClE,uDAAuD;IACvD,MAAM,OAAO,GAA2B;QACtC,iBAAiB,EAAE,KAAK,CAAC,UAAU;QACnC,gBAAgB,EAAE,KAAK,CAAC,SAAS;QACjC,eAAe,EAAE,KAAK,CAAC,QAAQ;QAC/B,0BAA0B,EAAE,KAAK,CAAC,iBAAiB;QACnD,0BAA0B,EAAE,KAAK,CAAC,iBAAiB;QACnD,uBAAuB,EAAE,KAAK,CAAC,eAAe;QAC9C,qBAAqB,EAAE,KAAK,CAAC,cAAc;KAC5C,CAAC;IACF,MAAM,MAAM,GAA2B,EAAE,GAAG,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;IACjF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU;SACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;SACzD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,iEAAiE;IACjE,uEAAuE;IACvE,qDAAqD;IACrD,EAAE;IACF,mEAAmE;IACnE,mEAAmE;IACnE,kEAAkE;IAClE,oEAAoE;IACpE,kEAAkE;IAClE,kEAAkE;IAClE,mEAAmE;IACnE,yBAAyB;IACzB,MAAM,IAAI,GAAG;;;;EAIb,OAAO;;;iBAGQ,GAAG,IAAI,KAAK,CAAC,cAAc;;CAE3C,CAAC;IAEA,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,KAAK,GAAG,mBAAmB,EAAE,CAAC;QAChC,MAAM,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unimatrix27/ralph-harness",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Throwaway-EC2 loop that picks one ready-for-agent GitHub issue, implements it, opens a PR, runs one auto-review pass, then terminates.",
5
5
  "type": "module",
6
6
  "engines": {