labgate 0.5.29 → 0.5.31

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.
@@ -1,8 +1,11 @@
1
+ import type { RuntimeType } from './runtime.js';
1
2
  export type WebTerminalAgent = 'claude' | 'codex';
2
3
  export type WebTerminalStatus = 'running' | 'exited' | 'failed';
3
4
  export interface WebTerminalRecord {
4
5
  id: string;
6
+ name?: string;
5
7
  agent: WebTerminalAgent;
8
+ runtime?: RuntimeType;
6
9
  workdir: string;
7
10
  node: string;
8
11
  tmuxSession: string;
@@ -17,6 +20,7 @@ export interface WebTerminalExitInfo {
17
20
  finishedAt: string;
18
21
  }
19
22
  export declare function isValidWebTerminalId(raw: string): boolean;
23
+ export declare function isValidWebTerminalName(raw: string): boolean;
20
24
  export declare function getWebTerminalsDir(): string;
21
25
  export declare function getWebTerminalRecordPath(id: string): string;
22
26
  export declare function getWebTerminalExitPath(id: string): string;
@@ -25,6 +29,7 @@ export declare function tmuxSessionNameForWebTerminalId(id: string): string;
25
29
  export declare function createWebTerminalRecord(input: {
26
30
  id: string;
27
31
  agent: WebTerminalAgent;
32
+ runtime?: RuntimeType;
28
33
  workdir: string;
29
34
  }): WebTerminalRecord;
30
35
  export declare function writeWebTerminalRecord(record: WebTerminalRecord): void;
@@ -35,6 +40,14 @@ export declare function resolveWebTerminalRecord(idOrPrefix: string): {
35
40
  record: WebTerminalRecord | null;
36
41
  matches: WebTerminalRecord[];
37
42
  };
43
+ export declare function renameWebTerminalRecord(id: string, nextNameRaw: string): {
44
+ ok: true;
45
+ record: WebTerminalRecord;
46
+ } | {
47
+ ok: false;
48
+ code: 'not_found' | 'invalid_name' | 'name_taken';
49
+ error: string;
50
+ };
38
51
  export declare function updateWebTerminalRecordStatus(id: string, next: {
39
52
  status: WebTerminalStatus;
40
53
  exitCode?: number | null;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isValidWebTerminalId = isValidWebTerminalId;
4
+ exports.isValidWebTerminalName = isValidWebTerminalName;
4
5
  exports.getWebTerminalsDir = getWebTerminalsDir;
5
6
  exports.getWebTerminalRecordPath = getWebTerminalRecordPath;
6
7
  exports.getWebTerminalExitPath = getWebTerminalExitPath;
@@ -12,6 +13,7 @@ exports.clearWebTerminalExitInfo = clearWebTerminalExitInfo;
12
13
  exports.readWebTerminalRecord = readWebTerminalRecord;
13
14
  exports.listWebTerminalRecords = listWebTerminalRecords;
14
15
  exports.resolveWebTerminalRecord = resolveWebTerminalRecord;
16
+ exports.renameWebTerminalRecord = renameWebTerminalRecord;
15
17
  exports.updateWebTerminalRecordStatus = updateWebTerminalRecordStatus;
16
18
  exports.readWebTerminalExitInfo = readWebTerminalExitInfo;
17
19
  exports.getTmuxBinary = getTmuxBinary;
@@ -29,13 +31,25 @@ const config_js_1 = require("./config.js");
29
31
  const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
30
32
  const TMUX_BIN_OVERRIDE_ENV = 'LABGATE_TMUX_BIN';
31
33
  const TMUX_BIN_CANDIDATES = ['tmux', '/opt/homebrew/bin/tmux', '/usr/local/bin/tmux', '/usr/bin/tmux'];
34
+ const WEB_TERMINAL_ID_RE = /^wt-[a-z0-9_-]{4,80}$/i;
35
+ const WEB_TERMINAL_NAME_RE = /^[a-z0-9](?:[a-z0-9._-]{0,63})$/i;
32
36
  let cachedTmuxBinary = null;
33
37
  function normalizeId(raw) {
34
38
  return (raw || '').trim();
35
39
  }
40
+ function normalizeName(raw) {
41
+ return (raw || '').trim();
42
+ }
43
+ function nameKey(raw) {
44
+ return normalizeName(raw).toLowerCase();
45
+ }
36
46
  function isValidWebTerminalId(raw) {
37
47
  const id = normalizeId(raw);
38
- return /^wt-[a-z0-9_-]{4,80}$/i.test(id);
48
+ return WEB_TERMINAL_ID_RE.test(id);
49
+ }
50
+ function isValidWebTerminalName(raw) {
51
+ const name = normalizeName(raw);
52
+ return WEB_TERMINAL_NAME_RE.test(name);
39
53
  }
40
54
  function getWebTerminalsDir() {
41
55
  return (0, path_1.join)(config_js_1.LABGATE_DIR, 'web-terminals');
@@ -58,6 +72,7 @@ function createWebTerminalRecord(input) {
58
72
  return {
59
73
  id: input.id,
60
74
  agent: input.agent,
75
+ ...(input.runtime ? { runtime: input.runtime } : {}),
61
76
  workdir: input.workdir,
62
77
  node: (0, os_1.hostname)(),
63
78
  tmuxSession: tmuxSessionNameForWebTerminalId(input.id),
@@ -68,6 +83,41 @@ function createWebTerminalRecord(input) {
68
83
  error: null,
69
84
  };
70
85
  }
86
+ function parseWebTerminalRecord(raw) {
87
+ if (!raw || typeof raw !== 'object')
88
+ return null;
89
+ const parsed = raw;
90
+ const id = normalizeId(String(parsed.id || ''));
91
+ if (!isValidWebTerminalId(id))
92
+ return null;
93
+ const rawName = typeof parsed.name === 'string' ? parsed.name : '';
94
+ const name = normalizeName(rawName);
95
+ const runtime = parsed.runtime === 'apptainer' || parsed.runtime === 'podman'
96
+ ? parsed.runtime
97
+ : null;
98
+ return {
99
+ id,
100
+ ...(name && isValidWebTerminalName(name) ? { name } : {}),
101
+ agent: parsed.agent,
102
+ ...(runtime ? { runtime } : {}),
103
+ workdir: String(parsed.workdir || ''),
104
+ node: String(parsed.node || ''),
105
+ tmuxSession: String(parsed.tmuxSession || ''),
106
+ createdAt: String(parsed.createdAt || ''),
107
+ updatedAt: String(parsed.updatedAt || ''),
108
+ status: parsed.status,
109
+ exitCode: typeof parsed.exitCode === 'number'
110
+ ? parsed.exitCode
111
+ : parsed.exitCode === null
112
+ ? null
113
+ : null,
114
+ error: typeof parsed.error === 'string'
115
+ ? parsed.error
116
+ : parsed.error === null
117
+ ? null
118
+ : null,
119
+ };
120
+ }
71
121
  function writeWebTerminalRecord(record) {
72
122
  ensureWebTerminalsDir();
73
123
  const target = getWebTerminalRecordPath(record.id);
@@ -106,10 +156,7 @@ function readWebTerminalRecord(id) {
106
156
  return null;
107
157
  try {
108
158
  const raw = (0, fs_1.readFileSync)(path, 'utf-8');
109
- const parsed = JSON.parse(raw);
110
- if (!parsed || typeof parsed !== 'object')
111
- return null;
112
- return parsed;
159
+ return parseWebTerminalRecord(JSON.parse(raw));
113
160
  }
114
161
  catch {
115
162
  return null;
@@ -123,8 +170,8 @@ function listWebTerminalRecords() {
123
170
  if (!file.endsWith('.json'))
124
171
  continue;
125
172
  try {
126
- const parsed = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(dir, file), 'utf-8'));
127
- if (!parsed || typeof parsed !== 'object' || !isValidWebTerminalId(parsed.id || ''))
173
+ const parsed = parseWebTerminalRecord(JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(dir, file), 'utf-8')));
174
+ if (!parsed)
128
175
  continue;
129
176
  out.push(parsed);
130
177
  }
@@ -144,10 +191,58 @@ function resolveWebTerminalRecord(idOrPrefix) {
144
191
  if (exact)
145
192
  return { record: exact, matches: [exact] };
146
193
  }
194
+ const queryNameKey = nameKey(query);
147
195
  const all = listWebTerminalRecords();
148
- const matches = all.filter((r) => r.id.startsWith(query));
196
+ const exactByName = all.filter((r) => nameKey(r.name || '') === queryNameKey);
197
+ if (exactByName.length === 1) {
198
+ return { record: exactByName[0], matches: exactByName };
199
+ }
200
+ const seen = new Set();
201
+ const matches = all.filter((r) => {
202
+ if (seen.has(r.id))
203
+ return false;
204
+ const byIdPrefix = r.id.startsWith(query);
205
+ const byNamePrefix = nameKey(r.name || '').startsWith(queryNameKey);
206
+ if (!byIdPrefix && !byNamePrefix)
207
+ return false;
208
+ seen.add(r.id);
209
+ return true;
210
+ });
149
211
  return { record: matches.length === 1 ? matches[0] : null, matches };
150
212
  }
213
+ function renameWebTerminalRecord(id, nextNameRaw) {
214
+ const existing = readWebTerminalRecord(id);
215
+ if (!existing) {
216
+ return { ok: false, code: 'not_found', error: 'Terminal session not found.' };
217
+ }
218
+ const nextName = normalizeName(nextNameRaw);
219
+ if (nextName && !isValidWebTerminalName(nextName)) {
220
+ return {
221
+ ok: false,
222
+ code: 'invalid_name',
223
+ error: 'Session name must match [a-zA-Z0-9][a-zA-Z0-9._-]{0,63}.',
224
+ };
225
+ }
226
+ if (nextName) {
227
+ const nextKey = nameKey(nextName);
228
+ for (const record of listWebTerminalRecords()) {
229
+ if (!record || record.id === existing.id)
230
+ continue;
231
+ if (nameKey(record.id) === nextKey || nameKey(record.name || '') === nextKey) {
232
+ return { ok: false, code: 'name_taken', error: 'Session name is already in use.' };
233
+ }
234
+ }
235
+ }
236
+ const updated = {
237
+ ...existing,
238
+ ...(nextName ? { name: nextName } : {}),
239
+ updatedAt: new Date().toISOString(),
240
+ };
241
+ if (!nextName)
242
+ delete updated.name;
243
+ writeWebTerminalRecord(updated);
244
+ return { ok: true, record: updated };
245
+ }
151
246
  function updateWebTerminalRecordStatus(id, next) {
152
247
  const existing = readWebTerminalRecord(id);
153
248
  if (!existing)
@@ -242,9 +337,17 @@ async function ensureTmuxAvailable() {
242
337
  }
243
338
  catch (err) {
244
339
  const detail = err?.message ?? String(err);
340
+ const isMac = process.platform === 'darwin';
245
341
  const guidance = [
246
342
  'tmux is required but unavailable.',
247
343
  `Detected error: ${detail}`,
344
+ ...(isMac
345
+ ? [
346
+ 'macOS quick fix:',
347
+ ' 1. Install tmux with Homebrew: `brew install tmux`',
348
+ ' 2. Verify availability: `tmux -V`',
349
+ ]
350
+ : []),
248
351
  'HPC quick fixes:',
249
352
  ' 1. If your cluster uses environment modules: `module avail tmux` then `module load tmux`',
250
353
  ' 2. Verify availability: `tmux -V`',
@@ -289,14 +392,22 @@ async function startTmuxWebTerminalSession(record, cliEntrypoint) {
289
392
  const shell = (process.env.SHELL || '/bin/bash').trim() || '/bin/bash';
290
393
  const launch = `${shellQuote(shell)} -lc ${shellQuote(launchScript)}`;
291
394
  await execFileAsync(tmuxBin, ['new-session', '-d', '-s', record.tmuxSession, '-c', record.workdir, launch], { timeout: 120_000 });
292
- try {
395
+ const sessionOptions = [
293
396
  // Web terminal sessions should not render tmux status/footer lines.
294
- await execFileAsync(tmuxBin, ['set-option', '-t', record.tmuxSession, 'status', 'off'], { timeout: 10_000 });
295
- }
296
- catch (err) {
297
- // If the command exited immediately, the session may already be gone.
298
- if (!isMissingTmuxSessionError(err))
299
- throw err;
397
+ ['status', 'off'],
398
+ // Keep mouse wheel behavior intuitive: scroll terminal history instead of
399
+ // sending cursor-up/down events that cycle shell command history.
400
+ ['mouse', 'on'],
401
+ ];
402
+ for (const [key, value] of sessionOptions) {
403
+ try {
404
+ await execFileAsync(tmuxBin, ['set-option', '-t', record.tmuxSession, key, value], { timeout: 10_000 });
405
+ }
406
+ catch (err) {
407
+ // If the command exited immediately, the session may already be gone.
408
+ if (!isMissingTmuxSessionError(err))
409
+ throw err;
410
+ }
300
411
  }
301
412
  }
302
413
  async function killTmuxSession(sessionName) {
@@ -1 +1 @@
1
- {"version":3,"file":"web-terminal.js","sourceRoot":"","sources":["../../src/lib/web-terminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-terminal.js","sourceRoot":"","sources":["../../src/lib/web-terminal.ts"],"names":[],"mappings":"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"}
@@ -29963,6 +29963,9 @@ function ensurePrivateFile(path) {
29963
29963
  } catch {
29964
29964
  }
29965
29965
  }
29966
+ function getSandboxHome() {
29967
+ return join(LABGATE_DIR, "ai-home");
29968
+ }
29966
29969
  function getResultsDbPath() {
29967
29970
  return join(LABGATE_DIR, "results.json");
29968
29971
  }
@@ -30036,10 +30039,21 @@ function buildSearchText(result) {
30036
30039
  function sortByUpdatedDesc(items) {
30037
30040
  return [...items].sort((a, b) => b.updated_at.localeCompare(a.updated_at));
30038
30041
  }
30042
+ function countParsedResults(raw) {
30043
+ try {
30044
+ const parsed = JSON.parse(raw || "{}");
30045
+ return Array.isArray(parsed?.results) ? parsed.results.length : 0;
30046
+ } catch {
30047
+ return 0;
30048
+ }
30049
+ }
30039
30050
  var ResultsStore = class {
30040
30051
  dbPath;
30041
30052
  constructor(dbPath = getResultsDbPath()) {
30042
30053
  this.dbPath = dbPath;
30054
+ if (dbPath === getResultsDbPath()) {
30055
+ this.migrateLegacySandboxResultsIfNeeded();
30056
+ }
30043
30057
  this.ensureFile();
30044
30058
  }
30045
30059
  getPath() {
@@ -30186,6 +30200,39 @@ var ResultsStore = class {
30186
30200
  this.writeFile(file2);
30187
30201
  return true;
30188
30202
  }
30203
+ migrateLegacySandboxResultsIfNeeded() {
30204
+ const legacyPath = join2(getSandboxHome(), ".labgate", "results.json");
30205
+ if (!legacyPath || legacyPath === this.dbPath) return;
30206
+ if (!existsSync2(legacyPath)) return;
30207
+ let legacyRaw = "";
30208
+ try {
30209
+ legacyRaw = readFileSync2(legacyPath, "utf-8");
30210
+ } catch {
30211
+ return;
30212
+ }
30213
+ if (countParsedResults(legacyRaw) === 0) return;
30214
+ if (existsSync2(this.dbPath)) {
30215
+ try {
30216
+ const currentRaw = readFileSync2(this.dbPath, "utf-8");
30217
+ if (countParsedResults(currentRaw) > 0) return;
30218
+ } catch {
30219
+ }
30220
+ }
30221
+ try {
30222
+ ensurePrivateDir(dirname(this.dbPath));
30223
+ const normalizedRaw = legacyRaw.trimEnd();
30224
+ writeFileSync(
30225
+ this.dbPath,
30226
+ (normalizedRaw || JSON.stringify({ version: 1, results: [] }, null, 2)) + "\n",
30227
+ {
30228
+ encoding: "utf-8",
30229
+ mode: PRIVATE_FILE_MODE
30230
+ }
30231
+ );
30232
+ ensurePrivateFile(this.dbPath);
30233
+ } catch {
30234
+ }
30235
+ }
30189
30236
  ensureFile() {
30190
30237
  ensurePrivateDir(dirname(this.dbPath));
30191
30238
  if (!existsSync2(this.dbPath)) {
@@ -30269,8 +30316,28 @@ function asError(text) {
30269
30316
  isError: true
30270
30317
  };
30271
30318
  }
30272
- async function main() {
30273
- const store = new ResultsStore();
30319
+ function parseDbPathFromArgs(args) {
30320
+ let dbPath;
30321
+ for (let i = 0; i < args.length; i++) {
30322
+ const arg = args[i];
30323
+ if (arg === "--db") {
30324
+ const next = args[i + 1];
30325
+ if (!next) throw new Error("Missing value for --db");
30326
+ dbPath = next;
30327
+ i++;
30328
+ continue;
30329
+ }
30330
+ if (arg.startsWith("--db=")) {
30331
+ const inline = arg.slice("--db=".length);
30332
+ if (!inline) throw new Error("Missing value for --db");
30333
+ dbPath = inline;
30334
+ }
30335
+ }
30336
+ return dbPath;
30337
+ }
30338
+ async function main(args = process.argv.slice(2)) {
30339
+ const dbPath = parseDbPathFromArgs(args);
30340
+ const store = dbPath ? new ResultsStore(dbPath) : new ResultsStore();
30274
30341
  const server = new McpServer(
30275
30342
  {
30276
30343
  name: "labgate-results",
@@ -30439,7 +30506,7 @@ function isDirectRun() {
30439
30506
  return /(?:^|\/|\\)results-mcp(?:\.bundle)?(?:\.(?:js|mjs))?$/.test(argv1);
30440
30507
  }
30441
30508
  if (isDirectRun()) {
30442
- main().catch((err) => {
30509
+ main(process.argv.slice(2)).catch((err) => {
30443
30510
  console.error("Results MCP server error:", err);
30444
30511
  process.exit(1);
30445
30512
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "labgate",
3
- "version": "0.5.29",
3
+ "version": "0.5.31",
4
4
  "description": "Secure HPC wrapper for AI coding agents (Claude-first): policy controls, Apptainer sandboxes, and SLURM workflows — https://labgate.dev",
5
5
  "homepage": "https://labgate.dev",
6
6
  "keywords": [
@@ -21,7 +21,7 @@
21
21
  "build": "tsc && cp src/lib/ui.html dist/lib/ui.html && node scripts/bundle-mcp.mjs",
22
22
  "bundle:mcp": "node scripts/bundle-mcp.mjs",
23
23
  "dev": "tsc --watch",
24
- "dev:ui": "npm run build && node -e \"require('./dist/lib/ui.js').startUI(7700, true); setInterval(()=>{},60000)\"",
24
+ "dev:ui": "npm run build && LABGATE_UI_PREWARM_ON_START=1 node dist/cli.js ui --port 7700",
25
25
  "dev:claude": "./scripts/dev-claude.sh",
26
26
  "start": "node bin/labgate.js",
27
27
  "verify:quick": "npm run build && npm run test:unit",