gaslamp 2.1.0 → 2.1.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gaslamp",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "Let Claude Code and Codex consult each other from the shell.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/consult.mjs CHANGED
@@ -33,7 +33,7 @@
33
33
  // (one-hop) refusal · 4 network-disabled sandbox · 5 session busy
34
34
 
35
35
  import { spawn } from "node:child_process";
36
- import { createWriteStream, existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync, writeSync } from "node:fs";
36
+ import { createWriteStream, existsSync, mkdirSync, readFileSync, realpathSync, unlinkSync, writeFileSync, writeSync } from "node:fs";
37
37
  import { homedir } from "node:os";
38
38
  import { join } from "node:path";
39
39
  import { which } from "./which.mjs";
@@ -87,8 +87,16 @@ function resolveBin(backend) {
87
87
  if (existsSync(c)) return c;
88
88
  return which("claude") || "claude";
89
89
  }
90
- if (process.env.CODEX_BIN && existsSync(process.env.CODEX_BIN)) return process.env.CODEX_BIN;
91
- return which("codex") || "codex";
90
+ // codex looks for its helper binaries (codex-code-mode-host) as SIBLINGS of
91
+ // the path it was invoked as, without resolving symlinks. The standalone
92
+ // package's ~/.local/bin/codex is a bare symlink, so spawning it kills the
93
+ // consulted agent's whole execution bridge ("failed to spawn code-mode
94
+ // host…"): it can neither read nor write. Spawn the real binary instead.
95
+ const found = process.env.CODEX_BIN && existsSync(process.env.CODEX_BIN)
96
+ ? process.env.CODEX_BIN
97
+ : which("codex");
98
+ if (!found) return "codex";
99
+ try { return realpathSync(found); } catch { return found; }
92
100
  }
93
101
 
94
102
  function parseArgs(argv) {
package/src/setup.mjs CHANGED
@@ -89,6 +89,27 @@ The \`--json\` envelope then carries \`data\` (the parsed object). A reply that
89
89
 
90
90
  Fleets default to \`--sandbox read-only\` (N writers in one cwd race) — pass \`--sandbox\` to opt into writes. Duplicate resume/thread targets are refused up front.
91
91
 
92
+ ## Picking a model
93
+
94
+ ${other === "codex"
95
+ ? `Codex tiers, strongest first — pass the full id to \`--model\` (bare tier names are rejected):
96
+
97
+ | tier | \`--model\` | ≈ claude | reach for it when |
98
+ |------|-----------|----------|-------------------|
99
+ | sol | \`gpt-5.6-sol\` | fable | the hardest reasoning: adversarial verification, design spars, proofs |
100
+ | terra | \`gpt-5.6-terra\` | opus | substantial work: reviews, diagnosis, real implementation |
101
+ | luna | \`gpt-5.6-luna\` | sonnet | quick checks, mechanical transforms, high-N fleets |`
102
+ : `Claude tiers, strongest first — \`--model\` takes the bare alias:
103
+
104
+ | \`--model\` | ≈ codex | reach for it when |
105
+ |-----------|---------|-------------------|
106
+ | \`fable\` | sol | the hardest reasoning: adversarial verification, design spars, proofs |
107
+ | \`opus\` | terra | substantial work: reviews, diagnosis, real implementation |
108
+ | \`sonnet\` | luna | quick checks, mechanical transforms, high-N fleets |
109
+ | \`haiku\` | (below luna) | pings, one-word sanity checks, the cheapest fan-outs |`}
110
+
111
+ Omit \`--model\` to use ${Other}'s own configured default. Match the tier to the stakes: verification you'll rely on deserves the top tier; a fleet vote usually doesn't.
112
+
92
113
  ## Reading the records
93
114
 
94
115
  gaslamp jobs [--json] # recent consults: status, label, thread, tokens