agent-coord-mcp 0.26.24 → 0.26.26
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/README.md +31 -70
- package/dist/capabilities.js +169 -4
- package/dist/capabilities.js.map +1 -1
- package/dist/gated-head.js +12 -1
- package/dist/gated-head.js.map +1 -1
- package/dist/server-spread.js +60 -53
- package/dist/server-spread.js.map +1 -1
- package/dist/server.js +53 -4
- package/dist/server.js.map +1 -1
- package/dist/tools/herdr-delivery.js +86 -26
- package/dist/tools/herdr-delivery.js.map +1 -1
- package/dist/tools/herdr-tail.js +243 -0
- package/dist/tools/herdr-tail.js.map +1 -0
- package/dist/tools/jsonl-offsets.js +37 -0
- package/dist/tools/jsonl-offsets.js.map +1 -0
- package/dist/tools/messaging.js +18 -0
- package/dist/tools/messaging.js.map +1 -1
- package/dist/tools/records.js +18 -2
- package/dist/tools/records.js.map +1 -1
- package/dist/tools/registry.js +56 -21
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/transport.js +17 -148
- package/dist/tools/transport.js.map +1 -1
- package/dist/transports/config.js +22 -11
- package/dist/transports/config.js.map +1 -1
- package/dist/transports/herdr.js +134 -18
- package/dist/transports/herdr.js.map +1 -1
- package/dist/transports/index.js +4 -3
- package/dist/transports/index.js.map +1 -1
- package/dist/transports/tmux.js +5 -2
- package/dist/transports/tmux.js.map +1 -1
- package/dist/transports/types.js +18 -3
- package/dist/transports/types.js.map +1 -1
- package/hooks/control-bytes.mjs +69 -0
- package/hooks/submit.mjs +227 -9
- package/hooks/tier.mjs +7 -1
- package/package.json +4 -2
- package/scripts/check-global-mcp-fallback.mjs +85 -0
- package/scripts/coord-pusher.mjs +5 -1
- package/scripts/coord-seat.mjs +96 -0
- package/scripts/coord-token.mjs +79 -4
- package/scripts/stop-agent.sh +8 -4
- package/src/capabilities.ts +170 -5
- package/src/gated-head.ts +12 -1
- package/src/server-spread.ts +52 -4
- package/src/server.ts +49 -3
- package/src/tools/herdr-delivery.ts +92 -24
- package/src/tools/herdr-tail.ts +276 -0
- package/src/tools/jsonl-offsets.ts +29 -0
- package/src/tools/messaging.ts +20 -0
- package/src/tools/records.ts +18 -2
- package/src/tools/registry.ts +56 -20
- package/src/tools/transport.ts +17 -154
- package/src/transports/config.ts +25 -12
- package/src/transports/herdr.ts +193 -17
- package/src/transports/index.ts +4 -3
- package/src/transports/tmux.ts +5 -2
- package/src/transports/types.ts +24 -4
- package/hooks/tmux-pusher.mjs +0 -967
- package/scripts/spawn-agent.sh +0 -94
package/dist/transports/herdr.js
CHANGED
|
@@ -35,6 +35,15 @@
|
|
|
35
35
|
*/
|
|
36
36
|
import { spawnSync } from "node:child_process";
|
|
37
37
|
import { HERDR, TICK_READS_AS, TICK_STORED_AS, targetOf } from "./types.js";
|
|
38
|
+
// ⟨q-dc83023a⟩ The chip grammar and the pane-unsafe byte class are single-sourced in hooks/, shared
|
|
39
|
+
// with both pushers. `hooks/` ships beside `dist/`, so these resolve the same when installed.
|
|
40
|
+
// @ts-expect-error — untyped .mjs sibling, deliberately not duplicated in TS
|
|
41
|
+
import { PASTE_CHIP_RE, readReadyBox, readyProfile, refusalBeforeKeys, boxHoldsPayload, transcriptGained } from "../../hooks/submit.mjs";
|
|
42
|
+
// @ts-expect-error — untyped .mjs sibling, deliberately not duplicated in TS
|
|
43
|
+
import { neutralizeControls } from "../../hooks/control-bytes.mjs";
|
|
44
|
+
/** Bracketed-paste markers (xterm mode 2004), which Claude Code and tmux `paste-buffer -p` both speak. */
|
|
45
|
+
export const PASTE_START = "\x1b[200~";
|
|
46
|
+
export const PASTE_END = "\x1b[201~";
|
|
38
47
|
export const HERDR_BINARY = "herdr";
|
|
39
48
|
export const HERDR_ABSENT_MESSAGE = `herdr binary not found on PATH — herdr is a Rust binary (brew install herdr, or https://herdr.dev), ` +
|
|
40
49
|
`NOT an npm package (npm's "herdr" is a reserved 0.0.0 name). Install it, or use the tmux-push transport.`;
|
|
@@ -101,12 +110,26 @@ function processInfoOf(r) {
|
|
|
101
110
|
return r.json?.result?.process_info;
|
|
102
111
|
}
|
|
103
112
|
const LIVE_STATUSES = new Set(["idle", "working", "blocked", "done"]);
|
|
113
|
+
export function herdrMarkerPid(kill = (p, s) => process.kill(p, s)) {
|
|
114
|
+
try {
|
|
115
|
+
kill(1, 0);
|
|
116
|
+
return { pid: 0, why: "this process may signal pid 1 (root, or a container whose pid 1 is ours), so pid 1 is not safe to advertise; pre-herdr readers will reap this marker" };
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
const code = e.code;
|
|
120
|
+
if (code === "EPERM")
|
|
121
|
+
return { pid: 1, why: "pid 1 exists and this process may not signal it, so pre-herdr readers keep the marker and their detach cannot signal it" };
|
|
122
|
+
return { pid: 0, why: `kill(1, 0) answered ${code ?? "an unexpected error"}, not EPERM — pid 1 not advertised` };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
104
125
|
export class HerdrTransport {
|
|
105
126
|
kind = HERDR;
|
|
106
127
|
#run;
|
|
107
128
|
#settleMs;
|
|
108
129
|
#sleep;
|
|
109
130
|
#readLines;
|
|
131
|
+
#markerPid;
|
|
132
|
+
#env;
|
|
110
133
|
constructor(opts = {}) {
|
|
111
134
|
this.#run = opts.run ?? defaultHerdrRunner;
|
|
112
135
|
// MEASURED on a shell pane in a task-owned workspace: after a single enter the output had
|
|
@@ -115,7 +138,9 @@ export class HerdrTransport {
|
|
|
115
138
|
// the spike measured is Claude's input box; the retry exists for that, bounded to one.
|
|
116
139
|
this.#settleMs = opts.settleMs ?? 400;
|
|
117
140
|
this.#sleep = opts.sleep ?? ((ms) => { const end = Date.now() + ms; while (Date.now() < end) { /* spin: tiny and rare */ } });
|
|
118
|
-
this.#readLines = opts.readLines ??
|
|
141
|
+
this.#readLines = opts.readLines ?? 40;
|
|
142
|
+
this.#markerPid = opts.markerPid ?? (() => herdrMarkerPid());
|
|
143
|
+
this.#env = opts.env ?? process.env;
|
|
119
144
|
}
|
|
120
145
|
/** Is herdr on this host AND is its server running? Both, or the reason. */
|
|
121
146
|
availability() {
|
|
@@ -141,8 +166,24 @@ export class HerdrTransport {
|
|
|
141
166
|
const avail = this.availability();
|
|
142
167
|
if (!avail.available)
|
|
143
168
|
throw new Error(`herdr transport cannot attach '${args.agentId}': ${avail.reason}`);
|
|
144
|
-
let target = args.target ??
|
|
169
|
+
let target = args.target ?? this.#env.HERDR_PANE_ID;
|
|
145
170
|
if (!target) {
|
|
171
|
+
// ⟨q-e439e4ad⟩ `herdr pane current` asks HERDR FOR WHATEVER PANE IS CURRENTLY
|
|
172
|
+
// FOCUSED ON THIS HOST — under stdio that is correct, because the server process
|
|
173
|
+
// itself lives inside the caller's own pane (the same relationship $TMUX_PANE has
|
|
174
|
+
// to a tmux server). AGENT_COORD_HTTP_PORT set means this process is instead the
|
|
175
|
+
// shared bus DAEMON: one long-lived process with no pane of its own, answering
|
|
176
|
+
// every seat on the host. "Current" there names whichever terminal a human last
|
|
177
|
+
// focused — measured attaching two different seats onto ANOTHER FLEET's panes,
|
|
178
|
+
// both calls returning `ok`. Same rule as transports/config.ts's unknown-transport
|
|
179
|
+
// refusal: a silent fallback and a correct default produce identical evidence, so
|
|
180
|
+
// this refuses instead of guessing.
|
|
181
|
+
if (this.#env.AGENT_COORD_HTTP_PORT) {
|
|
182
|
+
throw new Error(`herdr target not provided for '${args.agentId}': this server is the shared HTTP daemon ` +
|
|
183
|
+
`(AGENT_COORD_HTTP_PORT set) and has no pane of its own, so \`herdr pane current\` would name ` +
|
|
184
|
+
`whichever pane last had focus on this host, not '${args.agentId}''s. Pass target explicitly ` +
|
|
185
|
+
`(e.g. 'w2:p1').`);
|
|
186
|
+
}
|
|
146
187
|
const cur = this.#run(["pane", "current"]);
|
|
147
188
|
target = paneOf(cur)?.pane_id;
|
|
148
189
|
}
|
|
@@ -152,10 +193,12 @@ export class HerdrTransport {
|
|
|
152
193
|
const got = this.#run(["pane", "get", target]);
|
|
153
194
|
if (!got.ok)
|
|
154
195
|
throw new Error(`herdr pane '${target}' not found: ${got.error?.message ?? got.stderr}`);
|
|
196
|
+
const markerPid = this.#markerPid();
|
|
155
197
|
return {
|
|
156
198
|
agentId: args.agentId,
|
|
157
199
|
transport: HERDR,
|
|
158
|
-
pid:
|
|
200
|
+
pid: markerPid.pid,
|
|
201
|
+
pidWhy: markerPid.why,
|
|
159
202
|
target,
|
|
160
203
|
tmuxTarget: target,
|
|
161
204
|
since: Date.now(),
|
|
@@ -174,47 +217,119 @@ export class HerdrTransport {
|
|
|
174
217
|
* Type `text` into the pane and press enter; VERIFY by reading the pane back, and if
|
|
175
218
|
* the line is still sitting unsubmitted (the spike's race), press enter once more.
|
|
176
219
|
* Reports the enters it took so the race is measured on every delivery.
|
|
220
|
+
*
|
|
221
|
+
* ⟨q-dc83023a⟩ A DELIVERY IS A BRACKETED PASTE BY DEFAULT. `send-text` types keystrokes and
|
|
222
|
+
* herdr writes them in 1022-byte chunks; Claude Code v2.1.273 folds each large chunk into a
|
|
223
|
+
* `[Pasted text #N]` chip and, on submit, KEPT ONLY THE LAST CHUNK — a 2668-byte message
|
|
224
|
+
* arrived as its final 624 bytes, the PR, sha and gate gone. Wrapped in paste markers, the
|
|
225
|
+
* same bytes arrived whole (measured at 2668 B, 5 KB multi-line and 20 KB). The body is
|
|
226
|
+
* neutralised first so it can never carry the closing marker itself (⟨q-e5cb3538⟩).
|
|
227
|
+
* `paste: false` is for control commands only: a slash command must arrive as typing.
|
|
177
228
|
*/
|
|
178
|
-
async push(marker, text) {
|
|
229
|
+
async push(marker, text, opts = {}) {
|
|
179
230
|
const avail = this.availability();
|
|
180
231
|
if (!avail.available)
|
|
181
|
-
return { delivered: false, error: avail.reason };
|
|
232
|
+
return { delivered: false, outcome: "held", safeToRetry: true, error: avail.reason };
|
|
182
233
|
const target = targetOf(marker);
|
|
183
234
|
if (!target)
|
|
184
|
-
return { delivered: false, error: "no target recorded on the marker" };
|
|
185
|
-
const
|
|
186
|
-
if (!typed.ok)
|
|
187
|
-
return { delivered: false, error: `send-text to ${target} refused: ${typed.error?.message ?? typed.stderr}` };
|
|
235
|
+
return { delivered: false, outcome: "held", safeToRetry: true, error: "no target recorded on the marker" };
|
|
236
|
+
const payload = opts.paste === false ? text : `${PASTE_START}${neutralizeControls(text)}${PASTE_END}`;
|
|
188
237
|
const enterKey = herdrKeyName("enter");
|
|
189
238
|
if (!enterKey.ok)
|
|
190
|
-
return { delivered: false, error: enterKey.error };
|
|
239
|
+
return { delivered: false, outcome: "held", safeToRetry: true, error: enterKey.error };
|
|
240
|
+
if (readyProfile().profile === "none")
|
|
241
|
+
return this.#pushUnguarded(target, text, payload, enterKey.key);
|
|
242
|
+
// ⟨q-15d763dc⟩ BEFORE ANY KEY: the screen must be Claude Code's ready, empty input box. The text
|
|
243
|
+
// is held as firmly as the Enter — a digit typed into an open dialog selects an option.
|
|
244
|
+
const before = readReadyBox(this.#screen(target));
|
|
245
|
+
const refusal = refusalBeforeKeys(before);
|
|
246
|
+
if (refusal)
|
|
247
|
+
return { delivered: false, verified: false, outcome: "held", safeToRetry: true, error: `held, nothing typed into ${target}: ${refusal}` };
|
|
248
|
+
const typed = this.#run(["pane", "send-text", target, payload]);
|
|
249
|
+
if (!typed.ok)
|
|
250
|
+
return { delivered: false, verified: false, outcome: "held", safeToRetry: true, error: `send-text to ${target} refused: ${typed.error?.message ?? typed.stderr}` };
|
|
251
|
+
this.#sleep(this.#settleMs);
|
|
252
|
+
let box = readReadyBox(this.#screen(target));
|
|
253
|
+
if (!boxHoldsPayload(box, text)) {
|
|
254
|
+
return { delivered: false, verified: false, outcome: "typed-unconfirmed", safeToRetry: false, error: `typed into ${target}, but the text did not show in the input box (${box.ready ? "box holds something else" : box.reason}) — Enter NOT sent` };
|
|
255
|
+
}
|
|
191
256
|
let enters = 0;
|
|
192
257
|
for (let attempt = 0; attempt < 2; attempt++) {
|
|
258
|
+
// Every Enter follows a read that saw THIS payload in the ready box, never a stale one.
|
|
193
259
|
const pressed = this.#run(["pane", "send-keys", target, enterKey.key]);
|
|
194
260
|
if (!pressed.ok)
|
|
195
|
-
return { delivered: false, error: `send-keys enter to ${target} refused: ${pressed.error?.message ?? pressed.stderr}`, enters };
|
|
261
|
+
return { delivered: false, verified: false, outcome: "typed-unconfirmed", safeToRetry: false, error: `send-keys enter to ${target} refused: ${pressed.error?.message ?? pressed.stderr}`, enters };
|
|
262
|
+
enters++;
|
|
263
|
+
this.#sleep(this.#settleMs);
|
|
264
|
+
box = readReadyBox(this.#screen(target));
|
|
265
|
+
if (transcriptGained(before, box, text))
|
|
266
|
+
return { delivered: true, verified: true, outcome: "delivered", safeToRetry: false, enters, busy: box.ready ? box.busy ?? undefined : undefined };
|
|
267
|
+
if (boxHoldsPayload(box, text))
|
|
268
|
+
continue;
|
|
269
|
+
return { delivered: false, verified: false, outcome: "unverified", safeToRetry: false, enters, error: `enter sent to ${target}, but the screen after it does not show the message submitted (${box.ready ? (box.draft ? "the box holds other text" : "the box is empty and the transcript gained no line carrying it") : box.reason})` };
|
|
270
|
+
}
|
|
271
|
+
return { delivered: false, verified: true, outcome: "pending", safeToRetry: false, enters, error: `text still sitting unsubmitted in ${target}'s input after ${enters} enters` };
|
|
272
|
+
}
|
|
273
|
+
/** The screen, styled, so the ready-box reader can tell a ghost suggestion from a draft. null = unreadable. */
|
|
274
|
+
#screen(target) {
|
|
275
|
+
const read = this.#run(["pane", "read", target, "--source", "visible", "--lines", String(this.#readLines), "--format", "ansi"]);
|
|
276
|
+
return read.ok ? read.stdout : null;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* AGENT_COORD_READY_PROFILE=none, chosen by whoever started this process: #357's push, with no
|
|
280
|
+
* readiness check. Reported `unguarded`, and an unreadable screen still never counts as verified.
|
|
281
|
+
*/
|
|
282
|
+
#pushUnguarded(target, text, payload, enter) {
|
|
283
|
+
const typed = this.#run(["pane", "send-text", target, payload]);
|
|
284
|
+
if (!typed.ok)
|
|
285
|
+
return { delivered: false, unguarded: true, outcome: "held", safeToRetry: true, error: `send-text to ${target} refused: ${typed.error?.message ?? typed.stderr}` };
|
|
286
|
+
let enters = 0;
|
|
287
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
288
|
+
const pressed = this.#run(["pane", "send-keys", target, enter]);
|
|
289
|
+
if (!pressed.ok)
|
|
290
|
+
return { delivered: false, unguarded: true, outcome: "typed-unconfirmed", safeToRetry: false, error: `send-keys enter to ${target} refused: ${pressed.error?.message ?? pressed.stderr}`, enters };
|
|
196
291
|
enters++;
|
|
197
292
|
this.#sleep(this.#settleMs);
|
|
198
293
|
const pending = this.#stillPending(target, text);
|
|
199
294
|
if (pending === false)
|
|
200
|
-
return { delivered: true,
|
|
295
|
+
return { delivered: true, verified: true, unguarded: true, outcome: "delivered", safeToRetry: false, enters };
|
|
201
296
|
if (pending === null)
|
|
202
|
-
return { delivered: true,
|
|
297
|
+
return { delivered: false, verified: false, unguarded: true, outcome: "unverified", safeToRetry: false, enters, error: `enter sent to ${target}, but the pane could not be read back to verify it` };
|
|
203
298
|
}
|
|
204
|
-
return { delivered: false,
|
|
299
|
+
return { delivered: false, verified: true, unguarded: true, outcome: "pending", safeToRetry: false, enters, error: `text still sitting unsubmitted in ${target}'s input after ${enters} enters` };
|
|
205
300
|
}
|
|
206
301
|
/**
|
|
207
|
-
* Read the pane back: is the typed text still
|
|
302
|
+
* Read the pane back: is the typed text still sitting in the INPUT (unsubmitted)?
|
|
208
303
|
* true = pending · false = submitted · null = could not read (unverified, not failed).
|
|
304
|
+
*
|
|
305
|
+
* ⟨q-dc83023a⟩ THE INPUT IS THE PROMPT LINE, NOT THE LAST LINE. Claude Code draws a border,
|
|
306
|
+
* a footer and hints ("paste again to expand") BELOW its `❯` input, so the last non-empty
|
|
307
|
+
* line is never the input and the old last-line check answered "submitted" for a message
|
|
308
|
+
* still sitting there. The prompt line is pending when it shows a paste chip or the start
|
|
309
|
+
* of what was typed (a long first line wraps, so either may be a prefix of the other).
|
|
310
|
+
*
|
|
311
|
+
* NO PROMPT LINE → null (UNVERIFIED), never the last-line reading: that reading was measured
|
|
312
|
+
* to answer "submitted" for text still sitting in Claude's input, so falling back to it would
|
|
313
|
+
* let a changed Claude version, an open dialog or a read mid-render verify silently again
|
|
314
|
+
* (the coordinator's condition on ⟨q-dc83023a⟩, from worker-2). What a caller does with an
|
|
315
|
+
* unverified delivery is ⟨q-15d763dc⟩.
|
|
209
316
|
*/
|
|
210
317
|
#stillPending(target, text) {
|
|
211
318
|
const read = this.#run(["pane", "read", target, "--source", "visible", "--lines", String(this.#readLines), "--format", "text"]);
|
|
212
319
|
if (!read.ok)
|
|
213
320
|
return null;
|
|
214
321
|
const lines = read.stdout.split("\n").map((l) => l.replace(/\s+$/, "")).filter((l) => l.trim().length > 0);
|
|
215
|
-
const last = lines.at(-1) ?? "";
|
|
216
322
|
const firstLine = text.split("\n")[0];
|
|
217
|
-
|
|
323
|
+
const prompt = [...lines].reverse().find((l) => /^\s*❯/.test(l));
|
|
324
|
+
if (prompt !== undefined) {
|
|
325
|
+
const content = prompt.replace(/^\s*❯\s?/, "").trim();
|
|
326
|
+
if (!content)
|
|
327
|
+
return false;
|
|
328
|
+
if (PASTE_CHIP_RE.test(content))
|
|
329
|
+
return true;
|
|
330
|
+
return firstLine.startsWith(content) || content.startsWith(firstLine);
|
|
331
|
+
}
|
|
332
|
+
return null;
|
|
218
333
|
}
|
|
219
334
|
/**
|
|
220
335
|
* THREE ANSWERS FROM HERDR'S OWN STATUS, never a pid heuristic:
|
|
@@ -257,7 +372,8 @@ export class HerdrTransport {
|
|
|
257
372
|
* not measured) and are said so in the result.
|
|
258
373
|
*/
|
|
259
374
|
async sendControl(marker, cmd) {
|
|
260
|
-
const r = await this.push(marker, `/${cmd}
|
|
375
|
+
const r = await this.push(marker, `/${cmd}`, { paste: false });
|
|
376
|
+
// push reports delivered only when verified (⟨q-15d763dc⟩), so `delivered` is the whole test here.
|
|
261
377
|
if (!r.delivered)
|
|
262
378
|
return { ok: false, error: r.error ?? "control not delivered", enters: r.enters };
|
|
263
379
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"herdr.js","sourceRoot":"","sources":["../../src/transports/herdr.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"herdr.js","sourceRoot":"","sources":["../../src/transports/herdr.ts"],"names":[],"mappings":"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"}
|
package/dist/transports/index.js
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
* fall-through at a call site. Until Task 3, tmux is the only registered
|
|
7
7
|
* implementation and that is the rollback plan — the seam lands behind no config.
|
|
8
8
|
*/
|
|
9
|
-
import { HERDR,
|
|
9
|
+
import { HERDR, TMUX_PUSH_REMOTE, TRANSPORT_KINDS } from "./types.js";
|
|
10
10
|
import { TmuxTransport } from "./tmux.js";
|
|
11
11
|
import { HerdrTransport } from "./herdr.js";
|
|
12
12
|
import { configuredTransport } from "./config.js";
|
|
13
13
|
export * from "./types.js";
|
|
14
14
|
export * from "./config.js";
|
|
15
15
|
export { TmuxTransport, tmuxAvailable, paneExists, probePane, tmuxVersion } from "./tmux.js";
|
|
16
|
-
export { HerdrTransport, defaultHerdrRunner, interpretHerdrReply, herdrKeyName, herdrPaneExists, HERDR_KEYS, HERDR_ABSENT_MESSAGE } from "./herdr.js";
|
|
16
|
+
export { HerdrTransport, defaultHerdrRunner, interpretHerdrReply, herdrKeyName, herdrPaneExists, herdrMarkerPid, HERDR_KEYS, HERDR_ABSENT_MESSAGE } from "./herdr.js";
|
|
17
17
|
let host;
|
|
18
18
|
/** Wire the process-layer implementation in once, at module init. */
|
|
19
19
|
export function registerTmuxHost(h) {
|
|
@@ -25,7 +25,8 @@ export function resolveTransport(kind) {
|
|
|
25
25
|
"this is a wiring error, not a runtime condition");
|
|
26
26
|
}
|
|
27
27
|
switch (kind) {
|
|
28
|
-
|
|
28
|
+
// ⟨q-ec020f6a⟩ local tmux-push deleted outright — TmuxTransport now only ever
|
|
29
|
+
// backs the remote kind. Kept fully intact: only this construction site changed.
|
|
29
30
|
case TMUX_PUSH_REMOTE:
|
|
30
31
|
return new TmuxTransport(host, kind);
|
|
31
32
|
case HERDR:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":"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"}
|
package/dist/transports/tmux.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* that baked in a pusher could not host an implementation that has none.
|
|
14
14
|
*/
|
|
15
15
|
import { spawnSync } from "node:child_process";
|
|
16
|
-
import {
|
|
16
|
+
import { TMUX_PUSH_REMOTE, isLocallyProbeable, isTmuxKind, targetOf } from "./types.js";
|
|
17
17
|
/** `tmux -V` — is tmux on this host at all? */
|
|
18
18
|
export function tmuxAvailable() {
|
|
19
19
|
return spawnSync("tmux", ["-V"]).status === 0;
|
|
@@ -56,7 +56,10 @@ export function tmuxVersion() {
|
|
|
56
56
|
export class TmuxTransport {
|
|
57
57
|
kind;
|
|
58
58
|
#host;
|
|
59
|
-
|
|
59
|
+
// ⟨q-ec020f6a⟩ local tmux-push deleted: this class now only ever backs the remote kind,
|
|
60
|
+
// so the default (used only by tests that omit `kind`) follows that — everything else
|
|
61
|
+
// in this file is unchanged, per the slice's "keep TmuxTransport fully intact" scope.
|
|
62
|
+
constructor(host, kind = TMUX_PUSH_REMOTE) {
|
|
60
63
|
this.#host = host;
|
|
61
64
|
this.kind = kind;
|
|
62
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/transports/tmux.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/transports/tmux.ts"],"names":[],"mappings":"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"}
|
package/dist/transports/types.js
CHANGED
|
@@ -26,13 +26,28 @@
|
|
|
26
26
|
* instead of reading the field, and a `string` discriminant cannot tell the
|
|
27
27
|
* compiler that a branch was missed. Not a two-member union either — see (1).
|
|
28
28
|
*/
|
|
29
|
+
/**
|
|
30
|
+
* ⟨q-ec020f6a⟩ LOCAL tmux-push was DELETED outright (0 of 13 live seats used it; keeping
|
|
31
|
+
* it meant a second delivery mechanism — hooks/tmux-pusher.mjs, now removed — plus a
|
|
32
|
+
* role-card precondition that halted every live herdr seat on a false requirement).
|
|
33
|
+
*
|
|
34
|
+
* `TMUX_PUSH` stays DEFINED AND EXPORTED, but OUT of `TransportKind`/`TRANSPORT_KINDS`, for
|
|
35
|
+
* exactly one reason: a marker written to disk before this change can still literally read
|
|
36
|
+
* `"tmux-push"`, and `isLocallyProbeable`/`isTmuxKind` below must keep classifying that
|
|
37
|
+
* HISTORICAL value correctly (never `"dead"` where it used to read `"unknown"`) even
|
|
38
|
+
* though nothing can construct a NEW one — `resolveTransport` has no case for it and
|
|
39
|
+
* `config.ts` refuses it. Classifying old data and constructing new data are different
|
|
40
|
+
* questions; removing it from the union answers only the second.
|
|
41
|
+
*/
|
|
29
42
|
export const TMUX_PUSH = "tmux-push";
|
|
30
43
|
export const TMUX_PUSH_REMOTE = "tmux-push-remote";
|
|
31
44
|
export const HERDR = "herdr";
|
|
32
|
-
export const TRANSPORT_KINDS = [
|
|
45
|
+
export const TRANSPORT_KINDS = [TMUX_PUSH_REMOTE, HERDR];
|
|
33
46
|
/**
|
|
34
|
-
* The tmux family
|
|
35
|
-
*
|
|
47
|
+
* The tmux family, for LIVENESS CLASSIFICATION of whatever a marker on disk says —
|
|
48
|
+
* including the historical, no-longer-constructible local kind (`TMUX_PUSH`, above).
|
|
49
|
+
* Both members are delivered by a pusher process typing into a pane; they differed in
|
|
50
|
+
* WHERE that pane was, which is why liveness splits below.
|
|
36
51
|
*
|
|
37
52
|
* THIS IS THE ONE PLACE THE TMUX LITERALS LIVE. Twelve call sites used to spell
|
|
38
53
|
* them; they now ask.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/transports/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,WAAoB,CAAC;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,KAAK,GAAG,OAAgB,CAAC;AAItC,MAAM,CAAC,MAAM,eAAe,GAA6B,CAAC,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/transports/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;GAMG;AACH;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,WAAoB,CAAC;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,KAAK,GAAG,OAAgB,CAAC;AAItC,MAAM,CAAC,MAAM,eAAe,GAA6B,CAAC,gBAAgB,EAAE,KAAK,CAAU,CAAC;AAE5F;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAElE,mEAAmE;AACnE,MAAM,UAAU,UAAU,CAAC,SAA6B;IACtD,OAAO,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAA6B;IAC9D,OAAO,SAAS,KAAK,SAAS,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAA6B;IAC5D,OAAO,SAAS,KAAK,gBAAgB,CAAC;AACxC,CAAC;AAyDD;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAsD;IAC7E,OAAO,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAmB,MAAS,EAAE,MAA0B;IAChF,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AACnD,CAAC;AAeD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAGnE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAC3I,MAAM,CAAC,MAAM,aAAa,GAAwC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAKxJ,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAU,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// ⟨q-e5cb3538⟩ — CONTROL BYTES IN MESSAGE CONTENT NEVER REACH A PANE AS KEYSTROKES.
|
|
2
|
+
//
|
|
3
|
+
// `herdr pane send-text` types its argument as keystrokes, not as a bracketed paste
|
|
4
|
+
// (measured: with bracketed-paste mode ON in the receiving pty, plain text still arrives
|
|
5
|
+
// with no ESC[200~ wrapper). So a CR in a message body is Enter in the recipient's live
|
|
6
|
+
// session, ESC interrupts its turn, ETX is Ctrl-C. Any bus writer could press keys in a
|
|
7
|
+
// seat it has no authority over. The tmux pusher pastes bracketed, but a body carrying
|
|
8
|
+
// ESC[201~ closes that bracket from the inside, so it is not a defence either.
|
|
9
|
+
//
|
|
10
|
+
// ONE BYTE CLASS, TWO USES — defined here and nowhere else:
|
|
11
|
+
// · render (hooks/tier.mjs `injectLine`): every such byte becomes a VISIBLE escape.
|
|
12
|
+
// Visible, not deleted: a silent strip hides the attempt from the reader it targeted.
|
|
13
|
+
// Render-time is required even with ingress closed, because stored history already
|
|
14
|
+
// holds raw bytes and scripts can append to the bus dir directly.
|
|
15
|
+
// · ingress (src/tools/messaging.ts `send_message`): a new send carrying one is REFUSED.
|
|
16
|
+
//
|
|
17
|
+
// THE CLASS: C0 (0x00–0x1F) except LINE FEED, plus DEL (0x7F), plus C1 (U+0080–U+009F).
|
|
18
|
+
//
|
|
19
|
+
// ⚠ WHY LINE FEED IS KEPT, stated rather than assumed. It is the one C0 byte with a
|
|
20
|
+
// legitimate structural role in message text (multi-line prose, record renderings), and
|
|
21
|
+
// it is measured inert on both paste paths: typed through herdr send-text into Claude
|
|
22
|
+
// Code v2.1.273 without a bracket, "A\nB" stayed in the input unsubmitted, while "A\rB"
|
|
23
|
+
// submitted A. On the tmux path a line feed sits inside a bracketed paste. Escaping it
|
|
24
|
+
// would change the bytes of every legitimate multi-line message for no measured gain.
|
|
25
|
+
// TAB is NOT kept at render (a Tab keystroke drives completion in a TUI input); it is
|
|
26
|
+
// accepted at ingress because it is harmless in storage and common in quoted code.
|
|
27
|
+
export const PANE_UNSAFE_RE = /[\x00-\x09\x0b-\x1f\x7f\u0080-\u009f]/g;
|
|
28
|
+
|
|
29
|
+
// Ingress additionally accepts TAB (see above).
|
|
30
|
+
const INGRESS_UNSAFE_RE = /[\x00-\x08\x0b-\x1f\x7f\u0080-\u009f]/;
|
|
31
|
+
|
|
32
|
+
const NAMED = { "\r": "\\r", "\t": "\\t" };
|
|
33
|
+
|
|
34
|
+
/** One unsafe character → its visible escape: `\r`, `\t`, `\x1b`, `\u0085`. */
|
|
35
|
+
export function visibleEscape(ch) {
|
|
36
|
+
if (NAMED[ch]) return NAMED[ch];
|
|
37
|
+
const code = ch.charCodeAt(0);
|
|
38
|
+
return code <= 0x7f ? `\\x${code.toString(16).padStart(2, "0")}` : `\\u${code.toString(16).padStart(4, "0")}`;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Render-time neutraliser: every pane-unsafe character becomes a visible, inert escape. */
|
|
42
|
+
export function neutralizeControls(s) {
|
|
43
|
+
return String(s ?? "").replace(PANE_UNSAFE_RE, visibleEscape);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Ingress check. Walks strings, arrays and plain objects; returns the FIRST offending
|
|
48
|
+
* character with the path to the field that carries it, or null when the value is clean.
|
|
49
|
+
*/
|
|
50
|
+
export function findControlByte(value, path = "") {
|
|
51
|
+
if (typeof value === "string") {
|
|
52
|
+
const m = INGRESS_UNSAFE_RE.exec(value);
|
|
53
|
+
return m ? { path: path || "(value)", offset: m.index, escape: visibleEscape(m[0]) } : null;
|
|
54
|
+
}
|
|
55
|
+
if (Array.isArray(value)) {
|
|
56
|
+
for (let i = 0; i < value.length; i++) {
|
|
57
|
+
const hit = findControlByte(value[i], `${path}[${i}]`);
|
|
58
|
+
if (hit) return hit;
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
if (value && typeof value === "object") {
|
|
63
|
+
for (const [k, v] of Object.entries(value)) {
|
|
64
|
+
const hit = findControlByte(v, path ? `${path}.${k}` : k);
|
|
65
|
+
if (hit) return hit;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|