@sentropic/h2a-runtime 0.85.25 → 0.87.0
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/dist/cli-help-groups.d.ts +124 -0
- package/dist/cli-help-groups.d.ts.map +1 -0
- package/dist/cli-help-groups.js +297 -0
- package/dist/cli-help-groups.js.map +1 -0
- package/dist/enroll.d.ts.map +1 -1
- package/dist/enroll.js +40 -2
- package/dist/enroll.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +314 -27
- package/dist/index.js.map +1 -1
- package/dist/llm-gateway-runtime/accounts.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/accounts.js +2 -6
- package/dist/llm-gateway-runtime/accounts.js.map +1 -1
- package/dist/llm-gateway-runtime/index.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/index.js +9 -1
- package/dist/llm-gateway-runtime/index.js.map +1 -1
- package/dist/llm-gateway-runtime/model-catalog.d.ts +10 -3
- package/dist/llm-gateway-runtime/model-catalog.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/model-catalog.js +49 -119
- package/dist/llm-gateway-runtime/model-catalog.js.map +1 -1
- package/dist/llm-gateway-runtime/proxy-anthropic.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/proxy-anthropic.js +117 -24
- package/dist/llm-gateway-runtime/proxy-anthropic.js.map +1 -1
- package/dist/llm-gateway-runtime/proxy-gemini.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/proxy-gemini.js +0 -2
- package/dist/llm-gateway-runtime/proxy-gemini.js.map +1 -1
- package/dist/llm-gateway-runtime/proxy-openai.d.ts +4 -7
- package/dist/llm-gateway-runtime/proxy-openai.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/proxy-openai.js +18 -13
- package/dist/llm-gateway-runtime/proxy-openai.js.map +1 -1
- package/dist/llm-gateway-runtime/session-ledger.d.ts +34 -0
- package/dist/llm-gateway-runtime/session-ledger.d.ts.map +1 -1
- package/dist/llm-gateway-runtime/session-ledger.js +216 -6
- package/dist/llm-gateway-runtime/session-ledger.js.map +1 -1
- package/dist/llm-mesh.d.ts +3 -0
- package/dist/llm-mesh.d.ts.map +1 -1
- package/dist/llm-mesh.js +23 -0
- package/dist/llm-mesh.js.map +1 -1
- package/dist/protocol-local.d.ts +3 -0
- package/dist/protocol-local.d.ts.map +1 -1
- package/dist/protocol-local.js +7 -0
- package/dist/protocol-local.js.map +1 -1
- package/dist/registry.d.ts +53 -4
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +109 -6
- package/dist/registry.js.map +1 -1
- package/dist/restore.d.ts +75 -4
- package/dist/restore.d.ts.map +1 -1
- package/dist/restore.js +268 -24
- package/dist/restore.js.map +1 -1
- package/dist/session-class.d.ts +10 -0
- package/dist/session-class.d.ts.map +1 -0
- package/dist/session-class.js +11 -0
- package/dist/session-class.js.map +1 -0
- package/dist/status-projection.d.ts +97 -0
- package/dist/status-projection.d.ts.map +1 -0
- package/dist/status-projection.js +464 -0
- package/dist/status-projection.js.map +1 -0
- package/dist/tmux-name-migration.d.ts +52 -0
- package/dist/tmux-name-migration.d.ts.map +1 -0
- package/dist/tmux-name-migration.js +408 -0
- package/dist/tmux-name-migration.js.map +1 -0
- package/dist/tmux.d.ts +54 -1
- package/dist/tmux.d.ts.map +1 -1
- package/dist/tmux.js +232 -16
- package/dist/tmux.js.map +1 -1
- package/package.json +8 -4
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { mkdirSync, readFileSync, renameSync, writeFileSync, } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { withRegistryLock, resolveRegistryPath, } from "./registry.js";
|
|
5
|
+
import { LEGACY_LOCAL_PREFIX, LOCAL_PREFIX, listLocalSessionsWithDiagnostics, parseManagedSessionName, } from "./tmux.js";
|
|
6
|
+
export function tmuxNameMigrationJournalPath() {
|
|
7
|
+
return join(dirname(resolveRegistryPath()), "tmux-name-migration-v1.json");
|
|
8
|
+
}
|
|
9
|
+
export function planTmuxNameMigration(sessions) {
|
|
10
|
+
const names = new Set(sessions.map((session) => session.name));
|
|
11
|
+
return sessions
|
|
12
|
+
.flatMap((session) => {
|
|
13
|
+
const managed = parseManagedSessionName(session.name);
|
|
14
|
+
if (!managed || managed.prefix !== LEGACY_LOCAL_PREFIX)
|
|
15
|
+
return [];
|
|
16
|
+
const newName = `${LOCAL_PREFIX}${managed.slug}`;
|
|
17
|
+
return [{
|
|
18
|
+
tmuxSessionId: session.tmuxId,
|
|
19
|
+
tmuxSessionCreatedAt: session.tmuxCreatedAt,
|
|
20
|
+
tmuxServerPid: session.tmuxServerPid,
|
|
21
|
+
tmuxSocketPath: session.tmuxSocketPath,
|
|
22
|
+
oldName: session.name,
|
|
23
|
+
newName,
|
|
24
|
+
collision: names.has(newName),
|
|
25
|
+
}];
|
|
26
|
+
})
|
|
27
|
+
.sort((a, b) => a.oldName.localeCompare(b.oldName));
|
|
28
|
+
}
|
|
29
|
+
function defaultRenameSession(oldName, newName) {
|
|
30
|
+
const result = spawnSync("tmux", ["rename-session", "-t", `=${oldName}`, newName], { stdio: "ignore" });
|
|
31
|
+
return result.status === 0;
|
|
32
|
+
}
|
|
33
|
+
function defaultUpdateRegistry(oldName, newName) {
|
|
34
|
+
const path = resolveRegistryPath();
|
|
35
|
+
return withRegistryLock(path, (entries) => {
|
|
36
|
+
let changed = 0;
|
|
37
|
+
for (const entry of entries) {
|
|
38
|
+
if (entry.tmuxSession !== oldName)
|
|
39
|
+
continue;
|
|
40
|
+
entry.tmuxSession = newName;
|
|
41
|
+
changed += 1;
|
|
42
|
+
}
|
|
43
|
+
return changed === 0
|
|
44
|
+
? { entries, result: 0, save: false }
|
|
45
|
+
: { entries, result: changed };
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function defaultReadJournal() {
|
|
49
|
+
let text;
|
|
50
|
+
try {
|
|
51
|
+
text = readFileSync(tmuxNameMigrationJournalPath(), "utf8");
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (error.code === "ENOENT")
|
|
55
|
+
return undefined;
|
|
56
|
+
throw new Error("tmux name migration journal could not be read");
|
|
57
|
+
}
|
|
58
|
+
let value;
|
|
59
|
+
try {
|
|
60
|
+
value = JSON.parse(text);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
throw new Error("tmux name migration journal is malformed");
|
|
64
|
+
}
|
|
65
|
+
if (value.version !== 1 ||
|
|
66
|
+
typeof value.createdAt !== "string" ||
|
|
67
|
+
typeof value.updatedAt !== "string" ||
|
|
68
|
+
!Array.isArray(value.entries) ||
|
|
69
|
+
!value.entries.every(validJournalEntry)) {
|
|
70
|
+
throw new Error("tmux name migration journal is invalid");
|
|
71
|
+
}
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
function validJournalEntry(value) {
|
|
75
|
+
if (!value || typeof value !== "object")
|
|
76
|
+
return false;
|
|
77
|
+
const entry = value;
|
|
78
|
+
if (typeof entry.tmuxSessionId !== "string" ||
|
|
79
|
+
!/^\$\d+$/.test(entry.tmuxSessionId) ||
|
|
80
|
+
typeof entry.tmuxSessionCreatedAt !== "string" ||
|
|
81
|
+
!/^\d+$/.test(entry.tmuxSessionCreatedAt) ||
|
|
82
|
+
typeof entry.tmuxServerPid !== "string" ||
|
|
83
|
+
!/^\d+$/.test(entry.tmuxServerPid) ||
|
|
84
|
+
typeof entry.tmuxSocketPath !== "string" ||
|
|
85
|
+
entry.tmuxSocketPath.length === 0 ||
|
|
86
|
+
typeof entry.oldName !== "string" ||
|
|
87
|
+
typeof entry.newName !== "string" ||
|
|
88
|
+
!["planned", "renamed", "applied", "rolled-back"].includes(entry.state ?? "") ||
|
|
89
|
+
!Number.isInteger(entry.registryEntriesUpdated) ||
|
|
90
|
+
(entry.appliedAt !== undefined && typeof entry.appliedAt !== "string") ||
|
|
91
|
+
(entry.rolledBackAt !== undefined && typeof entry.rolledBackAt !== "string")) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
const managed = parseManagedSessionName(entry.oldName);
|
|
95
|
+
return (managed?.prefix === LEGACY_LOCAL_PREFIX &&
|
|
96
|
+
entry.newName === `${LOCAL_PREFIX}${managed.slug}`);
|
|
97
|
+
}
|
|
98
|
+
function sameTmuxIdentity(session, entry) {
|
|
99
|
+
return !!session &&
|
|
100
|
+
session.tmuxId === entry.tmuxSessionId &&
|
|
101
|
+
session.tmuxCreatedAt === entry.tmuxSessionCreatedAt &&
|
|
102
|
+
session.tmuxServerPid === entry.tmuxServerPid &&
|
|
103
|
+
session.tmuxSocketPath === entry.tmuxSocketPath;
|
|
104
|
+
}
|
|
105
|
+
/** Resolve an old client id only when the live tmux identity proves a journalled rename. */
|
|
106
|
+
export function legacyClientSessionIdFromJournal(session, journal) {
|
|
107
|
+
return journal?.entries.find((entry) => (entry.state === "renamed" || entry.state === "applied") &&
|
|
108
|
+
entry.newName === session.name &&
|
|
109
|
+
sameTmuxIdentity(session, entry))?.oldName;
|
|
110
|
+
}
|
|
111
|
+
export function legacyClientSessionIdForMigratedSession(session) {
|
|
112
|
+
let journal;
|
|
113
|
+
try {
|
|
114
|
+
journal = defaultReadJournal();
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
return legacyClientSessionIdFromJournal(session, journal);
|
|
120
|
+
}
|
|
121
|
+
function defaultWriteJournal(journal) {
|
|
122
|
+
const path = tmuxNameMigrationJournalPath();
|
|
123
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
124
|
+
const temporary = `${path}.tmp.${process.pid}`;
|
|
125
|
+
writeFileSync(temporary, `${JSON.stringify(journal, null, 2)}\n`, {
|
|
126
|
+
encoding: "utf8",
|
|
127
|
+
mode: 0o600,
|
|
128
|
+
});
|
|
129
|
+
renameSync(temporary, path);
|
|
130
|
+
}
|
|
131
|
+
function dependencies(overrides) {
|
|
132
|
+
return {
|
|
133
|
+
listSessions: () => {
|
|
134
|
+
const inventory = listLocalSessionsWithDiagnostics();
|
|
135
|
+
if (!inventory.known) {
|
|
136
|
+
throw new Error(inventory.reason ?? "tmux inventory is unavailable");
|
|
137
|
+
}
|
|
138
|
+
return inventory.sessions;
|
|
139
|
+
},
|
|
140
|
+
renameSession: defaultRenameSession,
|
|
141
|
+
updateRegistry: defaultUpdateRegistry,
|
|
142
|
+
readJournal: defaultReadJournal,
|
|
143
|
+
writeJournal: defaultWriteJournal,
|
|
144
|
+
now: () => new Date().toISOString(),
|
|
145
|
+
...overrides,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
export function migrateTmuxNames(mode, overrides = {}) {
|
|
149
|
+
const deps = dependencies(overrides);
|
|
150
|
+
const warnings = [];
|
|
151
|
+
let sessions;
|
|
152
|
+
try {
|
|
153
|
+
sessions = deps.listSessions();
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
return {
|
|
157
|
+
mode,
|
|
158
|
+
changed: 0,
|
|
159
|
+
entries: [],
|
|
160
|
+
collisions: [],
|
|
161
|
+
warnings: [
|
|
162
|
+
`tmux sessions could not be enumerated: ${error instanceof Error ? error.message : String(error)}`,
|
|
163
|
+
],
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
if (mode === "dry-run") {
|
|
167
|
+
const plan = planTmuxNameMigration(sessions);
|
|
168
|
+
return {
|
|
169
|
+
mode,
|
|
170
|
+
changed: 0,
|
|
171
|
+
entries: plan.map((entry) => ({
|
|
172
|
+
tmuxSessionId: entry.tmuxSessionId,
|
|
173
|
+
tmuxSessionCreatedAt: entry.tmuxSessionCreatedAt,
|
|
174
|
+
tmuxServerPid: entry.tmuxServerPid,
|
|
175
|
+
tmuxSocketPath: entry.tmuxSocketPath,
|
|
176
|
+
oldName: entry.oldName,
|
|
177
|
+
newName: entry.newName,
|
|
178
|
+
state: "planned",
|
|
179
|
+
registryEntriesUpdated: 0,
|
|
180
|
+
})),
|
|
181
|
+
collisions: plan.filter((entry) => entry.collision),
|
|
182
|
+
warnings,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
if (mode === "apply") {
|
|
186
|
+
const plan = planTmuxNameMigration(sessions);
|
|
187
|
+
let previous;
|
|
188
|
+
try {
|
|
189
|
+
previous = deps.readJournal();
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
return {
|
|
193
|
+
mode,
|
|
194
|
+
changed: 0,
|
|
195
|
+
entries: [],
|
|
196
|
+
collisions: [],
|
|
197
|
+
warnings: [
|
|
198
|
+
error instanceof Error
|
|
199
|
+
? error.message
|
|
200
|
+
: "tmux name migration journal could not be read",
|
|
201
|
+
],
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
const sessionsByName = new Map(sessions.map((session) => [session.name, session]));
|
|
205
|
+
const priorEntries = previous?.entries.map((entry) => ({ ...entry })) ?? [];
|
|
206
|
+
const byOldName = new Map(priorEntries.map((entry) => [entry.oldName, entry]));
|
|
207
|
+
let journalChanged = false;
|
|
208
|
+
for (const item of plan) {
|
|
209
|
+
const existing = byOldName.get(item.oldName);
|
|
210
|
+
if (!existing) {
|
|
211
|
+
const entry = {
|
|
212
|
+
tmuxSessionId: item.tmuxSessionId,
|
|
213
|
+
tmuxSessionCreatedAt: item.tmuxSessionCreatedAt,
|
|
214
|
+
tmuxServerPid: item.tmuxServerPid,
|
|
215
|
+
tmuxSocketPath: item.tmuxSocketPath,
|
|
216
|
+
oldName: item.oldName,
|
|
217
|
+
newName: item.newName,
|
|
218
|
+
state: "planned",
|
|
219
|
+
registryEntriesUpdated: 0,
|
|
220
|
+
};
|
|
221
|
+
priorEntries.push(entry);
|
|
222
|
+
byOldName.set(entry.oldName, entry);
|
|
223
|
+
journalChanged = true;
|
|
224
|
+
}
|
|
225
|
+
else if (!sessionsByName.has(existing.newName)) {
|
|
226
|
+
existing.tmuxSessionId = item.tmuxSessionId;
|
|
227
|
+
existing.tmuxSessionCreatedAt = item.tmuxSessionCreatedAt;
|
|
228
|
+
existing.tmuxServerPid = item.tmuxServerPid;
|
|
229
|
+
existing.tmuxSocketPath = item.tmuxSocketPath;
|
|
230
|
+
existing.state = "planned";
|
|
231
|
+
existing.registryEntriesUpdated = 0;
|
|
232
|
+
delete existing.appliedAt;
|
|
233
|
+
delete existing.rolledBackAt;
|
|
234
|
+
journalChanged = true;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
const collisionByOldName = new Map();
|
|
238
|
+
for (const item of plan.filter((entry) => entry.collision)) {
|
|
239
|
+
collisionByOldName.set(item.oldName, item);
|
|
240
|
+
}
|
|
241
|
+
for (const entry of priorEntries) {
|
|
242
|
+
if (entry.state !== "rolled-back" &&
|
|
243
|
+
sessionsByName.has(entry.oldName) &&
|
|
244
|
+
sessionsByName.has(entry.newName)) {
|
|
245
|
+
collisionByOldName.set(entry.oldName, {
|
|
246
|
+
tmuxSessionId: entry.tmuxSessionId,
|
|
247
|
+
tmuxSessionCreatedAt: entry.tmuxSessionCreatedAt,
|
|
248
|
+
tmuxServerPid: entry.tmuxServerPid,
|
|
249
|
+
tmuxSocketPath: entry.tmuxSocketPath,
|
|
250
|
+
oldName: entry.oldName,
|
|
251
|
+
newName: entry.newName,
|
|
252
|
+
collision: true,
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
const collisions = [...collisionByOldName.values()];
|
|
257
|
+
if (collisions.length > 0) {
|
|
258
|
+
return { mode, changed: 0, entries: priorEntries, collisions, warnings };
|
|
259
|
+
}
|
|
260
|
+
const now = deps.now();
|
|
261
|
+
const journal = {
|
|
262
|
+
version: 1,
|
|
263
|
+
createdAt: previous?.createdAt ?? now,
|
|
264
|
+
updatedAt: now,
|
|
265
|
+
entries: priorEntries,
|
|
266
|
+
};
|
|
267
|
+
if (journal.entries.length > 0 && (journalChanged || !previous)) {
|
|
268
|
+
deps.writeJournal(journal);
|
|
269
|
+
}
|
|
270
|
+
let changed = 0;
|
|
271
|
+
for (const entry of journal.entries) {
|
|
272
|
+
if (entry.state === "rolled-back")
|
|
273
|
+
continue;
|
|
274
|
+
const oldSession = sessionsByName.get(entry.oldName);
|
|
275
|
+
const newSession = sessionsByName.get(entry.newName);
|
|
276
|
+
const oldExists = oldSession !== undefined;
|
|
277
|
+
const newExists = newSession !== undefined;
|
|
278
|
+
if ((oldExists && !sameTmuxIdentity(oldSession, entry)) ||
|
|
279
|
+
(newExists && !sameTmuxIdentity(newSession, entry))) {
|
|
280
|
+
warnings.push(`tmux identity changed for ${entry.oldName}; refusing journal replay`);
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
if (entry.state === "applied" && newExists && !oldExists)
|
|
284
|
+
continue;
|
|
285
|
+
if (!oldExists && !newExists) {
|
|
286
|
+
warnings.push(`migration source and target are both missing: ${entry.oldName} -> ${entry.newName}`);
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
if (oldExists && !newExists) {
|
|
290
|
+
if (!deps.renameSession(entry.oldName, entry.newName)) {
|
|
291
|
+
warnings.push(`tmux refused ${entry.oldName} -> ${entry.newName}`);
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
sessionsByName.delete(entry.oldName);
|
|
295
|
+
sessionsByName.set(entry.newName, {
|
|
296
|
+
...oldSession,
|
|
297
|
+
name: entry.newName,
|
|
298
|
+
slug: parseManagedSessionName(entry.newName).slug,
|
|
299
|
+
});
|
|
300
|
+
changed += 1;
|
|
301
|
+
entry.state = "renamed";
|
|
302
|
+
journal.updatedAt = deps.now();
|
|
303
|
+
deps.writeJournal(journal);
|
|
304
|
+
}
|
|
305
|
+
else if (!oldExists && newExists && entry.state === "planned") {
|
|
306
|
+
// The process may have stopped after tmux renamed but before journalling.
|
|
307
|
+
entry.state = "renamed";
|
|
308
|
+
journal.updatedAt = deps.now();
|
|
309
|
+
deps.writeJournal(journal);
|
|
310
|
+
}
|
|
311
|
+
if (entry.state !== "renamed")
|
|
312
|
+
continue;
|
|
313
|
+
try {
|
|
314
|
+
entry.registryEntriesUpdated = deps.updateRegistry(entry.oldName, entry.newName);
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
warnings.push(`registry update failed after renaming ${entry.oldName}; rerun --apply to recover`);
|
|
318
|
+
continue;
|
|
319
|
+
}
|
|
320
|
+
entry.state = "applied";
|
|
321
|
+
entry.appliedAt = deps.now();
|
|
322
|
+
journal.updatedAt = entry.appliedAt;
|
|
323
|
+
deps.writeJournal(journal);
|
|
324
|
+
}
|
|
325
|
+
return { mode, changed, entries: journal.entries, collisions, warnings };
|
|
326
|
+
}
|
|
327
|
+
let journal;
|
|
328
|
+
try {
|
|
329
|
+
journal = deps.readJournal();
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
return {
|
|
333
|
+
mode,
|
|
334
|
+
changed: 0,
|
|
335
|
+
entries: [],
|
|
336
|
+
collisions: [],
|
|
337
|
+
warnings: [
|
|
338
|
+
error instanceof Error
|
|
339
|
+
? error.message
|
|
340
|
+
: "tmux name migration journal could not be read",
|
|
341
|
+
],
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
if (!journal) {
|
|
345
|
+
return {
|
|
346
|
+
mode,
|
|
347
|
+
changed: 0,
|
|
348
|
+
entries: [],
|
|
349
|
+
collisions: [],
|
|
350
|
+
warnings: ["no tmux name migration journal exists"],
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
const sessionsByName = new Map(sessions.map((session) => [session.name, session]));
|
|
354
|
+
let changed = 0;
|
|
355
|
+
for (const entry of [...journal.entries].reverse()) {
|
|
356
|
+
if (entry.state === "rolled-back")
|
|
357
|
+
continue;
|
|
358
|
+
const oldSession = sessionsByName.get(entry.oldName);
|
|
359
|
+
const newSession = sessionsByName.get(entry.newName);
|
|
360
|
+
const oldExists = oldSession !== undefined;
|
|
361
|
+
const newExists = newSession !== undefined;
|
|
362
|
+
if ((oldExists && !sameTmuxIdentity(oldSession, entry)) ||
|
|
363
|
+
(newExists && !sameTmuxIdentity(newSession, entry))) {
|
|
364
|
+
warnings.push(`tmux identity changed for ${entry.oldName}; refusing rollback`);
|
|
365
|
+
continue;
|
|
366
|
+
}
|
|
367
|
+
if (oldExists && newExists) {
|
|
368
|
+
warnings.push(`rollback collision: ${entry.oldName} already exists`);
|
|
369
|
+
continue;
|
|
370
|
+
}
|
|
371
|
+
if (!oldExists && !newExists) {
|
|
372
|
+
warnings.push(`rollback source missing: ${entry.newName}`);
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
if (!oldExists && newExists) {
|
|
376
|
+
if (!deps.renameSession(entry.newName, entry.oldName)) {
|
|
377
|
+
warnings.push(`tmux refused ${entry.newName} -> ${entry.oldName}`);
|
|
378
|
+
continue;
|
|
379
|
+
}
|
|
380
|
+
sessionsByName.delete(entry.newName);
|
|
381
|
+
sessionsByName.set(entry.oldName, {
|
|
382
|
+
...newSession,
|
|
383
|
+
name: entry.oldName,
|
|
384
|
+
slug: parseManagedSessionName(entry.oldName).slug,
|
|
385
|
+
});
|
|
386
|
+
changed += 1;
|
|
387
|
+
}
|
|
388
|
+
try {
|
|
389
|
+
entry.registryEntriesUpdated = deps.updateRegistry(entry.newName, entry.oldName);
|
|
390
|
+
}
|
|
391
|
+
catch {
|
|
392
|
+
warnings.push(`registry rollback failed for ${entry.oldName}; rerun --rollback to recover`);
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
entry.state = "rolled-back";
|
|
396
|
+
entry.rolledBackAt = deps.now();
|
|
397
|
+
journal.updatedAt = entry.rolledBackAt;
|
|
398
|
+
deps.writeJournal(journal);
|
|
399
|
+
}
|
|
400
|
+
return {
|
|
401
|
+
mode,
|
|
402
|
+
changed,
|
|
403
|
+
entries: journal.entries,
|
|
404
|
+
collisions: [],
|
|
405
|
+
warnings,
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=tmux-name-migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tmux-name-migration.js","sourceRoot":"","sources":["../src/tmux-name-migration.ts"],"names":[],"mappings":"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"}
|
package/dist/tmux.d.ts
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* middle — this is what fixes "I can't copy the code claude printed".
|
|
12
12
|
*/
|
|
13
13
|
import { type LaunchContext } from "./launch-context.js";
|
|
14
|
+
import { type SessionClass } from "./session-class.js";
|
|
14
15
|
import type { TunnelConfig } from "./config.js";
|
|
15
16
|
/** Canonical tmux session-name prefix for h2a-managed local sessions. */
|
|
16
17
|
export declare const LOCAL_PREFIX = "h2a-";
|
|
@@ -80,7 +81,14 @@ export declare const STRUCTURED_WINDOW_WRAPPER = "agent_pane=\"$1\"; cmd=\"$2\"\
|
|
|
80
81
|
* so the agent is reachable/wakeable through ~/h2a-workspace/.h2a.
|
|
81
82
|
*/
|
|
82
83
|
export declare const H2A_WINDOW_NAME = "h2a";
|
|
84
|
+
export declare const H2A_STATUS_WINDOW_NAME = "h2a-status";
|
|
83
85
|
export type LocalSession = {
|
|
86
|
+
/** Stable tmux identity for this live session (for example `$3`). */
|
|
87
|
+
tmuxId: string;
|
|
88
|
+
/** Session creation epoch from tmux; paired with server identity for replay safety. */
|
|
89
|
+
tmuxCreatedAt: string;
|
|
90
|
+
tmuxServerPid: string;
|
|
91
|
+
tmuxSocketPath: string;
|
|
84
92
|
/** full tmux session name, e.g. `h2a-surch` */
|
|
85
93
|
name: string;
|
|
86
94
|
/** short name shown to the user, e.g. `surch` */
|
|
@@ -115,7 +123,15 @@ export declare function parseManagedSessionName(name: string): ManagedSessionNam
|
|
|
115
123
|
export declare function managedSessionCandidates(slug: string): string[];
|
|
116
124
|
/** Canonical tmux session name for a workdir slug. */
|
|
117
125
|
export declare function localSessionName(slug: string): string;
|
|
126
|
+
/** Build the environment explicitly stamped into a newly-created tmux session. */
|
|
127
|
+
export declare function tmuxEnvironmentArgs(sessionClass?: SessionClass): string[];
|
|
118
128
|
/** List h2a-managed local tmux sessions (best-effort; [] if no server). */
|
|
129
|
+
export declare function listLocalSessionsWithDiagnostics(): {
|
|
130
|
+
readonly sessions: LocalSession[];
|
|
131
|
+
readonly known: boolean;
|
|
132
|
+
readonly reason?: string;
|
|
133
|
+
};
|
|
134
|
+
/** Compatibility reader used by existing callers that accept best-effort []. */
|
|
119
135
|
export declare function listLocalSessions(): LocalSession[];
|
|
120
136
|
/**
|
|
121
137
|
* Resolve a local session by exact managed tmux name or by a unique slug.
|
|
@@ -150,6 +166,8 @@ export type StartLocalResult = {
|
|
|
150
166
|
promptFile?: string;
|
|
151
167
|
};
|
|
152
168
|
export type ManagedLaunchMetadata = {
|
|
169
|
+
/** Durable class inherited by the agent's SessionStart/SessionEnd hooks. */
|
|
170
|
+
sessionClass?: SessionClass;
|
|
153
171
|
/** Conversation id only; never pass arbitrary CLI argv as resume metadata. */
|
|
154
172
|
resumeId?: string;
|
|
155
173
|
/** Sidecar command selected for this launch, if any. */
|
|
@@ -217,6 +235,12 @@ export declare function ensureScrollConfig(profile?: string): void;
|
|
|
217
235
|
export declare function startLocalSession(profile: string, command: string, cwd: string, args?: ReadonlyArray<string>, label?: string, tmuxProfile?: string, metadata?: ManagedLaunchMetadata): StartLocalResult;
|
|
218
236
|
/** PID for one exact tmux pane. Session/window targets are deliberately refused. */
|
|
219
237
|
export declare function localSessionPanePid(agentPane: string): number | undefined;
|
|
238
|
+
/**
|
|
239
|
+
* Read the recorded agent pane's pid without discovering or mutating tmux
|
|
240
|
+
* metadata. Status callers use this to prove an attested worker is still the
|
|
241
|
+
* same process, not merely a recycled session name.
|
|
242
|
+
*/
|
|
243
|
+
export declare function localSessionAgentPanePid(session: string): number | undefined;
|
|
220
244
|
/**
|
|
221
245
|
* Start a HEADLESS delegated job in a detached local tmux session under the
|
|
222
246
|
* run-once-exit wrapper: the CLI runs, its output is captured to `outputLog`,
|
|
@@ -225,7 +249,7 @@ export declare function localSessionPanePid(agentPane: string): number | undefin
|
|
|
225
249
|
* startLocalSession unless `refuseExisting` is set for structured launches.
|
|
226
250
|
* Returns the session name + slug.
|
|
227
251
|
*/
|
|
228
|
-
export declare function startHeadlessSession(profile: string, command: string, cwd: string, args: ReadonlyArray<string>, resultJson: string, outputLog: string, label: string, tmuxProfile?: string, promptInput?: string, refuseExisting?: boolean): StartLocalResult;
|
|
252
|
+
export declare function startHeadlessSession(profile: string, command: string, cwd: string, args: ReadonlyArray<string>, resultJson: string, outputLog: string, label: string, tmuxProfile?: string, promptInput?: string, refuseExisting?: boolean, sessionClass?: SessionClass): StartLocalResult;
|
|
229
253
|
/** Best-effort cleanup for a headless prompt that the wrapper did not consume. */
|
|
230
254
|
export declare function cleanupHeadlessPromptFile(promptFile?: string): void;
|
|
231
255
|
/**
|
|
@@ -258,6 +282,28 @@ export declare function sessionWindowNames(session: string): string[];
|
|
|
258
282
|
export declare function addSessionWindow(session: string, windowName: string, cwd: string, commandLine: string, agentPane?: string): boolean;
|
|
259
283
|
/** Is `cmd` resolvable in PATH (login shell, same as the tmux windows use)? */
|
|
260
284
|
export declare function commandAvailable(cmd: string): boolean;
|
|
285
|
+
export declare function h2aStatusSurfaceOptions(_previousRight?: string): ReadonlyArray<readonly [string, string]>;
|
|
286
|
+
export interface H2aStatusOptionAccess {
|
|
287
|
+
readonly read: (session: string, option: string) => string | undefined;
|
|
288
|
+
readonly set: (session: string, option: string, value: string) => boolean;
|
|
289
|
+
readonly unset: (session: string, option: string) => boolean;
|
|
290
|
+
}
|
|
291
|
+
/** Restore a prior bar using captured effective values, with retryable recovery state. */
|
|
292
|
+
export declare function uninstallH2aStatusSurfaceWithAccess(session: string, access: H2aStatusOptionAccess): boolean;
|
|
293
|
+
/**
|
|
294
|
+
* Install transaction used by the tmux wrapper and executable failure-injection
|
|
295
|
+
* tests. No live option changes until all six prior values are captured.
|
|
296
|
+
*/
|
|
297
|
+
export declare function installH2aStatusSurfaceWithAccess(session: string, access: H2aStatusOptionAccess): boolean;
|
|
298
|
+
/** Install the composable 5-second status projection on one exact session. */
|
|
299
|
+
export declare function installH2aStatusSurface(session: string): boolean;
|
|
300
|
+
/** Restore every user option captured on first install. */
|
|
301
|
+
export declare function uninstallH2aStatusSurface(session: string): boolean;
|
|
302
|
+
export declare function h2aStatusWindowCommand(session: string, ownerInstance: string | undefined): string;
|
|
303
|
+
/** Open or reuse the detailed in-process watcher in a distinct tmux window. */
|
|
304
|
+
export declare function openH2aStatusWindow(session: string, cwd: string): boolean;
|
|
305
|
+
/** Exact current tmux session, only when this process is itself inside tmux. */
|
|
306
|
+
export declare function currentTmuxSessionName(): string | undefined;
|
|
261
307
|
/**
|
|
262
308
|
* Resolve the durable agent pane for a given h2a instance.
|
|
263
309
|
* Parses host:label[:uuid] → finds the matching managed tmux session
|
|
@@ -268,6 +314,13 @@ export declare function commandAvailable(cmd: string): boolean;
|
|
|
268
314
|
export declare function resolveAgentPaneForInstance(instance: string): string | undefined;
|
|
269
315
|
/** Agent pane used as h2a local-tmux wake target, persisted on the tmux session. */
|
|
270
316
|
export declare function resolveAgentPane(session: string): string | undefined;
|
|
317
|
+
/**
|
|
318
|
+
* Record the diagnostic launch context (gateway on/off, model-map source, resume id, …) as
|
|
319
|
+
* `@remote_launch_*` tmux options so `h2a` can show WHICH options produced the session without
|
|
320
|
+
* the user reading raw tmux state. Applied on every create AND reuse so a reused session refreshes
|
|
321
|
+
* a stale context. Best-effort + secret-free (see launch-context.ts). Spec 2026-07-11.
|
|
322
|
+
*/
|
|
323
|
+
export declare function persistLaunchContext(session: string, ctx: LaunchContext): void;
|
|
271
324
|
/** Read the launch context recorded on a managed session, or undefined if none. */
|
|
272
325
|
export declare function readLaunchContext(session: string): LaunchContext | undefined;
|
|
273
326
|
/**
|
package/dist/tmux.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../src/tmux.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiBH,OAAO,EAML,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,yEAAyE;AACzE,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC,gFAAgF;AAChF,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC,0EAA0E;AAC1E,eAAO,MAAM,wBAAwB,WAAW,CAAC;AAMjD;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;CA0BtB,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,aAAa,ySAIiC,CAAC;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,qCACpB,CAAC;AAElB;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,mYASwC,CAAC;AAEtE;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,UAAU,GAAE,aAAa,CAAC,MAAM,CAAM,GACrC,MAAM,CASR;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAGlE;AAgBD,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,4HAErB,CAAC;AAElB;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../src/tmux.ts"],"names":[],"mappings":"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"}
|