labgate 0.1.0 → 0.2.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/README.md CHANGED
@@ -8,6 +8,8 @@ Policy-controlled sandboxes for LLM coding agents on HPC systems.
8
8
  npm i -g labgate
9
9
  ```
10
10
 
11
+ Note: LabGate uses `node-pty` only for the optional sticky footer. On minimal Linux installs, that dependency may fail to build without a compiler toolchain. If it fails, the install still works and LabGate falls back to non-sticky output.
12
+
11
13
  LabGate auto-detects your container runtime (Apptainer, Singularity, Podman, or Docker) and offers to install one if none is found.
12
14
 
13
15
  ## Quick start
@@ -60,6 +62,7 @@ labgate init --force
60
62
  ```bash
61
63
  labgate claude [workdir] # launch Claude Code
62
64
  labgate codex [workdir] # launch Codex
65
+ labgate feedback # submit feedback (interactive or piped)
63
66
  labgate status # list running sessions
64
67
  labgate stop <id> # stop a session
65
68
  labgate init [--force] # create/reset config
@@ -73,6 +76,20 @@ labgate claude --image my-image:tag # use a different container image
73
76
  labgate claude --no-footer # disable the status footer line
74
77
  ```
75
78
 
79
+ ## Feedback
80
+
81
+ Submit feedback from the CLI:
82
+
83
+ ```bash
84
+ labgate feedback
85
+ echo "This was great" | labgate feedback
86
+ labgate feedback "Short feedback message"
87
+ ```
88
+
89
+ If `LABGATE_FEEDBACK_URL` is set, LabGate will `POST` feedback JSON to that URL.
90
+ If `LABGATE_FEEDBACK_TOKEN` is set, it will be sent as a Bearer token.
91
+ If no URL is configured or the request fails, feedback is saved locally at `~/.labgate/feedback.jsonl`.
92
+
76
93
  ## How it works
77
94
 
78
95
  LabGate builds a sandboxed container from your config:
package/dist/cli.js CHANGED
@@ -7,12 +7,16 @@ const config_js_1 = require("./lib/config.js");
7
7
  const init_js_1 = require("./lib/init.js");
8
8
  const container_js_1 = require("./lib/container.js");
9
9
  const runtime_js_1 = require("./lib/runtime.js");
10
+ const feedback_js_1 = require("./lib/feedback.js");
10
11
  const AGENTS = ['claude', 'codex'];
12
+ // Read version from package.json so it stays in sync
13
+ const pkgPath = (0, path_1.resolve)(__dirname, '..', 'package.json');
14
+ const PKG_VERSION = JSON.parse((0, fs_1.readFileSync)(pkgPath, 'utf-8')).version;
11
15
  const program = new commander_1.Command();
12
16
  program
13
17
  .name('labgate')
14
18
  .description('Policy-controlled sandboxes for LLM coding agents')
15
- .version('0.1.0');
19
+ .version(PKG_VERSION);
16
20
  // ── labgate init ──────────────────────────────────────────
17
21
  program
18
22
  .command('init')
@@ -38,11 +42,172 @@ for (const agent of AGENTS) {
38
42
  .option('--dry-run', 'Print the container command without running it')
39
43
  .option('--image <uri>', 'Override container image')
40
44
  .option('--no-footer', 'Disable status footer line')
41
- .option('--no-statusline', 'Disable Claude Code status line')
45
+ .option('--verbose', 'Show detailed debug output')
42
46
  .action(async (workdir, opts) => {
43
47
  await runAgent(agent, workdir, opts);
44
48
  });
45
49
  }
50
+ // ── labgate feedback ──────────────────────────────────────
51
+ program
52
+ .command('feedback')
53
+ .description('Submit feedback to LabGate')
54
+ .argument('[message...]', 'Feedback message (omit to enter interactively)')
55
+ .action(async (messageParts) => {
56
+ try {
57
+ const message = await (0, feedback_js_1.collectFeedback)(messageParts ?? []);
58
+ if (!message) {
59
+ console.error('Error: feedback cannot be empty');
60
+ process.exit(1);
61
+ }
62
+ const result = await (0, feedback_js_1.submitFeedback)(message);
63
+ console.log(result.detail);
64
+ }
65
+ catch (err) {
66
+ console.error(`Error: ${err?.message ?? String(err)}`);
67
+ process.exit(1);
68
+ }
69
+ });
70
+ // ── labgate config [key] [value] ──────────────────────────
71
+ const configCmd = program
72
+ .command('config')
73
+ .description('View or modify config');
74
+ configCmd
75
+ .command('get')
76
+ .description('Get a config value (dot-notation key)')
77
+ .argument('<key>', 'Config key (e.g. network.mode, session_timeout_hours)')
78
+ .action((key) => {
79
+ const config = (0, config_js_1.loadConfig)();
80
+ const value = getNestedValue(config, key);
81
+ if (value === undefined) {
82
+ console.error(`Unknown config key: ${key}`);
83
+ process.exit(1);
84
+ }
85
+ console.log(typeof value === 'object' ? JSON.stringify(value, null, 2) : String(value));
86
+ });
87
+ configCmd
88
+ .command('set')
89
+ .description('Set a config value (dot-notation key)')
90
+ .argument('<key>', 'Config key (e.g. network.mode, session_timeout_hours)')
91
+ .argument('<value>', 'Value to set')
92
+ .action((key, value) => {
93
+ const configPath = (0, config_js_1.getConfigPath)();
94
+ if (!(0, fs_1.existsSync)(configPath)) {
95
+ console.error('No config file found. Run "labgate init" first.');
96
+ process.exit(1);
97
+ }
98
+ try {
99
+ const rawText = (0, fs_1.readFileSync)(configPath, 'utf-8');
100
+ // Strip comments for JSON parsing
101
+ const stripped = rawText
102
+ .split('\n')
103
+ .filter(line => !line.trimStart().startsWith('//'))
104
+ .join('\n');
105
+ const obj = JSON.parse(stripped);
106
+ // Parse the value (numbers, booleans, JSON arrays/objects)
107
+ let parsed;
108
+ if (value === 'true')
109
+ parsed = true;
110
+ else if (value === 'false')
111
+ parsed = false;
112
+ else if (/^\d+(\.\d+)?$/.test(value))
113
+ parsed = Number(value);
114
+ else {
115
+ try {
116
+ parsed = JSON.parse(value);
117
+ }
118
+ catch {
119
+ parsed = value;
120
+ }
121
+ }
122
+ setNestedValue(obj, key, parsed);
123
+ // Re-validate before writing
124
+ const testConfig = { ...(0, config_js_1.loadConfig)(), ...obj };
125
+ const errors = (0, config_js_1.validateConfig)(testConfig);
126
+ if (errors.length > 0) {
127
+ console.error('Invalid config value:');
128
+ for (const e of errors)
129
+ console.error(` - ${e}`);
130
+ process.exit(1);
131
+ }
132
+ (0, fs_1.writeFileSync)(configPath, JSON.stringify(obj, null, 2) + '\n', 'utf-8');
133
+ console.log(`Set ${key} = ${JSON.stringify(parsed)}`);
134
+ }
135
+ catch (err) {
136
+ console.error(`Error: ${err.message}`);
137
+ process.exit(1);
138
+ }
139
+ });
140
+ configCmd
141
+ .command('show')
142
+ .description('Show the full resolved config')
143
+ .action(() => {
144
+ const config = (0, config_js_1.loadConfig)();
145
+ console.log(JSON.stringify(config, null, 2));
146
+ });
147
+ configCmd
148
+ .command('path')
149
+ .description('Print the config file path')
150
+ .action(() => {
151
+ console.log((0, config_js_1.getConfigPath)());
152
+ });
153
+ // ── labgate logs ──────────────────────────────────────────
154
+ program
155
+ .command('logs')
156
+ .description('View audit logs')
157
+ .option('-n, --lines <count>', 'Number of recent lines to show', '20')
158
+ .option('--follow', 'Follow the log file for new entries')
159
+ .action(async (opts) => {
160
+ const config = (0, config_js_1.loadConfig)();
161
+ if (!config.audit.enabled) {
162
+ console.log('Audit logging is disabled. Enable it in config: audit.enabled = true');
163
+ return;
164
+ }
165
+ const logDir = (0, config_js_1.getLogDir)(config);
166
+ if (!(0, fs_1.existsSync)(logDir)) {
167
+ console.log('No audit logs found yet.');
168
+ return;
169
+ }
170
+ // Find the most recent log file
171
+ const files = (0, fs_1.readdirSync)(logDir)
172
+ .filter((f) => f.endsWith('.jsonl'))
173
+ .sort()
174
+ .reverse();
175
+ if (files.length === 0) {
176
+ console.log('No audit logs found yet.');
177
+ return;
178
+ }
179
+ const logFile = (0, path_1.resolve)(logDir, files[0]);
180
+ console.log(`Log file: ${logFile}\n`);
181
+ const content = (0, fs_1.readFileSync)(logFile, 'utf-8').trim();
182
+ if (!content) {
183
+ console.log('Log file is empty.');
184
+ return;
185
+ }
186
+ const allLines = content.split('\n');
187
+ const count = parseInt(opts.lines, 10) || 20;
188
+ const lines = allLines.slice(-count);
189
+ for (const line of lines) {
190
+ try {
191
+ const event = JSON.parse(line);
192
+ const time = event.timestamp?.slice(11, 19) ?? '??:??:??';
193
+ const sess = event.session?.slice(0, 8) ?? '????????';
194
+ const ev = event.event ?? 'unknown';
195
+ const extra = [];
196
+ if (event.agent)
197
+ extra.push(`agent=${event.agent}`);
198
+ if (event.exit_code !== undefined)
199
+ extra.push(`exit=${event.exit_code}`);
200
+ if (event.timeout_hours)
201
+ extra.push(`timeout=${event.timeout_hours}h`);
202
+ if (event.network_mode)
203
+ extra.push(`net=${event.network_mode}`);
204
+ console.log(`${time} [${sess}] ${ev}${extra.length ? ' ' + extra.join(' ') : ''}`);
205
+ }
206
+ catch {
207
+ console.log(line);
208
+ }
209
+ }
210
+ });
46
211
  // ── labgate status ────────────────────────────────────────
47
212
  program
48
213
  .command('status')
@@ -60,6 +225,28 @@ program
60
225
  const { stopSession } = await import('./lib/container.js');
61
226
  await stopSession(id);
62
227
  });
228
+ // ── Dot-notation helpers ──────────────────────────────────
229
+ function getNestedValue(obj, key) {
230
+ const parts = key.split('.');
231
+ let current = obj;
232
+ for (const part of parts) {
233
+ if (current == null || typeof current !== 'object')
234
+ return undefined;
235
+ current = current[part];
236
+ }
237
+ return current;
238
+ }
239
+ function setNestedValue(obj, key, value) {
240
+ const parts = key.split('.');
241
+ let current = obj;
242
+ for (let i = 0; i < parts.length - 1; i++) {
243
+ if (current[parts[i]] == null || typeof current[parts[i]] !== 'object') {
244
+ current[parts[i]] = {};
245
+ }
246
+ current = current[parts[i]];
247
+ }
248
+ current[parts[parts.length - 1]] = value;
249
+ }
63
250
  async function runAgent(agent, workdir, opts) {
64
251
  // Resolve workdir
65
252
  const resolved = (0, path_1.resolve)(workdir);
@@ -67,13 +254,25 @@ async function runAgent(agent, workdir, opts) {
67
254
  console.error(`Error: directory does not exist: ${resolved}`);
68
255
  process.exit(1);
69
256
  }
257
+ const verbose = opts.verbose ?? false;
70
258
  // Load config (creates default if missing) — need config.runtime for runtime check
71
- const configPath = (0, config_js_1.getConfigPath)();
72
- if (!(0, fs_1.existsSync)(configPath)) {
259
+ const cfgPath = (0, config_js_1.getConfigPath)();
260
+ if (!(0, fs_1.existsSync)(cfgPath)) {
73
261
  console.log('[labgate] No config found. Running "labgate init" first...\n');
74
262
  await (0, init_js_1.initConfig)({ force: false });
75
263
  }
76
264
  const config = (0, config_js_1.loadConfig)();
265
+ if (verbose) {
266
+ console.log(`[labgate] Config: ${cfgPath}`);
267
+ console.log(`[labgate] Runtime preference: ${config.runtime}`);
268
+ console.log(`[labgate] Image: ${opts.image ?? config.image}`);
269
+ console.log(`[labgate] Network mode: ${config.network.mode}`);
270
+ console.log(`[labgate] Blocked patterns: ${config.filesystem.blocked_patterns.length}`);
271
+ console.log(`[labgate] Command blacklist: ${config.commands.blacklist.join(', ')}`);
272
+ console.log(`[labgate] Extra mounts: ${config.filesystem.extra_paths.length}`);
273
+ console.log(`[labgate] Sandbox home: ${config_js_1.LABGATE_DIR}/ai-home`);
274
+ console.log('');
275
+ }
77
276
  // Check container runtime is available — offer to install if missing
78
277
  // (skip for dry-run so users can preview without runtime)
79
278
  if (!opts.dryRun) {
@@ -81,6 +280,9 @@ async function runAgent(agent, workdir, opts) {
81
280
  if (!runtime.ok) {
82
281
  process.exit(1);
83
282
  }
283
+ if (verbose) {
284
+ console.log(`[labgate] Detected runtime: ${runtime.runtime} (${runtime.version})`);
285
+ }
84
286
  }
85
287
  // Start the session
86
288
  await (0, container_js_1.startSession)({
@@ -90,7 +292,6 @@ async function runAgent(agent, workdir, opts) {
90
292
  dryRun: opts.dryRun ?? false,
91
293
  imageOverride: opts.image,
92
294
  footerMode: opts.footer === false ? 'off' : 'once',
93
- statusline: opts.statusline ?? true,
94
295
  });
95
296
  }
96
297
  program.parse();
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -44,4 +44,5 @@ export declare function getSandboxHome(): string;
44
44
  export declare function getImagesDir(): string;
45
45
  export declare function getEmptyDir(): string;
46
46
  export declare function getLogDir(config: LabgateConfig): string;
47
+ export declare function validateConfig(config: LabgateConfig): string[];
47
48
  export declare function loadConfig(): LabgateConfig;
@@ -6,6 +6,7 @@ exports.getSandboxHome = getSandboxHome;
6
6
  exports.getImagesDir = getImagesDir;
7
7
  exports.getEmptyDir = getEmptyDir;
8
8
  exports.getLogDir = getLogDir;
9
+ exports.validateConfig = validateConfig;
9
10
  exports.loadConfig = loadConfig;
10
11
  const fs_1 = require("fs");
11
12
  const path_1 = require("path");
@@ -82,33 +83,73 @@ function getEmptyDir() {
82
83
  function getLogDir(config) {
83
84
  return config.audit.log_dir.replace(/^~/, (0, os_1.homedir)());
84
85
  }
86
+ // ── Deep clone helper ──────────────────────────────────────
87
+ function cloneConfig(config) {
88
+ return JSON.parse(JSON.stringify(config));
89
+ }
90
+ // ── Validation ────────────────────────────────────────────
91
+ const VALID_RUNTIMES = ['auto', 'apptainer', 'singularity', 'podman', 'docker'];
92
+ const VALID_NETWORK_MODES = ['none', 'filtered', 'host'];
93
+ const VALID_MOUNT_MODES = ['rw', 'ro'];
94
+ function validateConfig(config) {
95
+ const errors = [];
96
+ if (!VALID_RUNTIMES.includes(config.runtime)) {
97
+ errors.push(`Invalid runtime: "${config.runtime}". Must be one of: ${VALID_RUNTIMES.join(', ')}`);
98
+ }
99
+ if (!config.image || typeof config.image !== 'string') {
100
+ errors.push('image must be a non-empty string');
101
+ }
102
+ if (typeof config.session_timeout_hours !== 'number' || config.session_timeout_hours < 0) {
103
+ errors.push('session_timeout_hours must be a non-negative number');
104
+ }
105
+ if (!VALID_NETWORK_MODES.includes(config.network.mode)) {
106
+ errors.push(`Invalid network.mode: "${config.network.mode}". Must be one of: ${VALID_NETWORK_MODES.join(', ')}`);
107
+ }
108
+ if (!Array.isArray(config.filesystem.blocked_patterns)) {
109
+ errors.push('filesystem.blocked_patterns must be an array');
110
+ }
111
+ if (!Array.isArray(config.commands.blacklist)) {
112
+ errors.push('commands.blacklist must be an array');
113
+ }
114
+ for (const mount of config.filesystem.extra_paths) {
115
+ if (!mount.path || typeof mount.path !== 'string') {
116
+ errors.push('Each extra_paths entry must have a non-empty "path" string');
117
+ }
118
+ if (!VALID_MOUNT_MODES.includes(mount.mode)) {
119
+ errors.push(`Invalid mount mode "${mount.mode}" for path "${mount.path}". Must be "rw" or "ro"`);
120
+ }
121
+ }
122
+ return errors;
123
+ }
85
124
  // ── Loader ────────────────────────────────────────────────
86
125
  function loadConfig() {
87
126
  const configPath = getConfigPath();
88
127
  if (!(0, fs_1.existsSync)(configPath)) {
89
- return { ...exports.DEFAULT_CONFIG };
128
+ return cloneConfig(exports.DEFAULT_CONFIG);
90
129
  }
91
130
  try {
92
131
  const rawText = (0, fs_1.readFileSync)(configPath, 'utf-8');
93
- // Strip // comments (our config uses them for documentation)
94
- const stripped = rawText.replace(/^\s*\/\/.*$/gm, '');
132
+ // Strip full-line // comments (our config uses them for documentation)
133
+ const stripped = rawText
134
+ .split('\n')
135
+ .filter(line => !line.trimStart().startsWith('//'))
136
+ .join('\n');
95
137
  const raw = JSON.parse(stripped);
96
- // Merge with defaults so missing fields get filled in.
97
- // Shallow merge per section — good enough for M0.
98
- return {
138
+ // Merge with defaults so missing fields get filled in
139
+ const config = {
99
140
  runtime: raw.runtime ?? exports.DEFAULT_CONFIG.runtime,
100
141
  image: raw.image ?? exports.DEFAULT_CONFIG.image,
101
142
  session_timeout_hours: raw.session_timeout_hours ?? exports.DEFAULT_CONFIG.session_timeout_hours,
102
143
  filesystem: {
103
- extra_paths: raw.filesystem?.extra_paths ?? exports.DEFAULT_CONFIG.filesystem.extra_paths,
104
- blocked_patterns: raw.filesystem?.blocked_patterns ?? exports.DEFAULT_CONFIG.filesystem.blocked_patterns,
144
+ extra_paths: raw.filesystem?.extra_paths ?? [...exports.DEFAULT_CONFIG.filesystem.extra_paths],
145
+ blocked_patterns: raw.filesystem?.blocked_patterns ?? [...exports.DEFAULT_CONFIG.filesystem.blocked_patterns],
105
146
  },
106
147
  commands: {
107
- blacklist: raw.commands?.blacklist ?? exports.DEFAULT_CONFIG.commands.blacklist,
148
+ blacklist: raw.commands?.blacklist ?? [...exports.DEFAULT_CONFIG.commands.blacklist],
108
149
  },
109
150
  network: {
110
151
  mode: raw.network?.mode ?? exports.DEFAULT_CONFIG.network.mode,
111
- allowed_domains: raw.network?.allowed_domains ?? exports.DEFAULT_CONFIG.network.allowed_domains,
152
+ allowed_domains: raw.network?.allowed_domains ?? [...exports.DEFAULT_CONFIG.network.allowed_domains],
112
153
  },
113
154
  slurm: {
114
155
  enabled: raw.slurm?.enabled ?? exports.DEFAULT_CONFIG.slurm.enabled,
@@ -118,11 +159,20 @@ function loadConfig() {
118
159
  log_dir: raw.audit?.log_dir ?? exports.DEFAULT_CONFIG.audit.log_dir,
119
160
  },
120
161
  };
162
+ const errors = validateConfig(config);
163
+ if (errors.length > 0) {
164
+ console.error(`Warning: invalid config in ${configPath}:`);
165
+ for (const e of errors)
166
+ console.error(` - ${e}`);
167
+ console.error('Using default config.');
168
+ return cloneConfig(exports.DEFAULT_CONFIG);
169
+ }
170
+ return config;
121
171
  }
122
172
  catch (err) {
123
173
  console.error(`Warning: could not parse ${configPath}: ${err.message}`);
124
174
  console.error('Using default config.');
125
- return { ...exports.DEFAULT_CONFIG };
175
+ return cloneConfig(exports.DEFAULT_CONFIG);
126
176
  }
127
177
  }
128
178
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -6,14 +6,13 @@ export interface SessionOpts {
6
6
  dryRun: boolean;
7
7
  imageOverride?: string;
8
8
  footerMode?: 'off' | 'once' | 'sticky';
9
- statusline?: boolean;
10
9
  }
11
10
  /**
12
11
  * Convert a container image URI to a local SIF filename.
13
12
  * e.g. "docker.io/library/ubuntu:22.04" → "docker.io_library_ubuntu_22.04.sif"
14
13
  */
15
14
  export declare function imageToSifName(image: string): string;
16
- export declare function buildEntrypoint(agent: string, statuslineEnabled?: boolean): string;
15
+ export declare function buildEntrypoint(agent: string): string;
17
16
  export declare function startSession(session: SessionOpts): Promise<void>;
18
17
  export declare function listSessions(): Promise<void>;
19
18
  export declare function stopSession(id: string): Promise<void>;
@@ -12,7 +12,6 @@ const child_process_1 = require("child_process");
12
12
  const fs_1 = require("fs");
13
13
  const path_1 = require("path");
14
14
  const os_1 = require("os");
15
- const child_process_2 = require("child_process");
16
15
  const crypto_1 = require("crypto");
17
16
  const fast_glob_1 = __importDefault(require("fast-glob"));
18
17
  const config_js_1 = require("./config.js");
@@ -172,17 +171,32 @@ function buildNetworkArgs(config, runtime) {
172
171
  // filtered
173
172
  return runtime === 'podman' ? ['--network=slirp4netns'] : ['--network=bridge'];
174
173
  }
175
- // ── Build Podman/Docker arguments ─────────────────────────
176
- function buildPodmanArgs(session, runtime, sessionId, tokenEnv = []) {
177
- const { agent, workdir, config, imageOverride } = session;
178
- const image = imageOverride ?? config.image;
174
+ function prepareCommonArgs(session, sessionId, tokenEnv) {
175
+ const { agent, config } = session;
179
176
  const sandboxHome = (0, config_js_1.getSandboxHome)();
180
177
  (0, fs_1.mkdirSync)(sandboxHome, { recursive: true });
181
178
  const blockedMounts = resolveBlockedMounts(config.filesystem.blocked_patterns, getMountRoots(session));
182
179
  const emptyDir = ensureEmptyDir();
183
180
  const commandBlacklist = resolveCommandBlacklist(config);
184
181
  const proxyEnv = config.network.mode === 'filtered' && !session.dryRun ? buildFilteredProxyEnv(config) : [];
185
- const args = [
182
+ const envArgs = [
183
+ '--env', `LABGATE_AGENT=${agent}`,
184
+ '--env', `LABGATE_SESSION=${sessionId}`,
185
+ '--env', `LABGATE_NETWORK_MODE=${config.network.mode}`,
186
+ '--env', 'HOME=/home/sandbox',
187
+ ...(commandBlacklist ? ['--env', `LABGATE_CMD_BLACKLIST=${commandBlacklist}`] : []),
188
+ ...tokenEnv,
189
+ ...proxyEnv,
190
+ ];
191
+ return { blockedMounts, emptyDir, envArgs };
192
+ }
193
+ // ── Build Podman/Docker arguments ─────────────────────────
194
+ function buildPodmanArgs(session, runtime, sessionId, tokenEnv = []) {
195
+ const { agent, workdir, config, imageOverride } = session;
196
+ const image = imageOverride ?? config.image;
197
+ const sandboxHome = (0, config_js_1.getSandboxHome)();
198
+ const { blockedMounts, emptyDir, envArgs } = prepareCommonArgs(session, sessionId, tokenEnv);
199
+ return [
186
200
  'run',
187
201
  '--rm',
188
202
  '--interactive',
@@ -211,30 +225,19 @@ function buildPodmanArgs(session, runtime, sessionId, tokenEnv = []) {
211
225
  return ['--volume', `${source}:${containerPath}:ro`];
212
226
  }),
213
227
  // ── Environment ──
214
- '--env', `LABGATE_AGENT=${agent}`,
215
- '--env', `LABGATE_SESSION=${sessionId}`,
216
- '--env', `LABGATE_NETWORK_MODE=${config.network.mode}`,
217
- '--env', 'HOME=/home/sandbox',
218
- ...(commandBlacklist ? ['--env', `LABGATE_CMD_BLACKLIST=${commandBlacklist}`] : []),
219
- ...tokenEnv,
220
- ...proxyEnv,
228
+ ...envArgs,
221
229
  // ── Image ──
222
230
  image,
223
231
  // ── Entrypoint ──
224
- 'bash', '-lc', buildEntrypoint(agent, session.statusline ?? true),
232
+ 'bash', '-lc', buildEntrypoint(agent),
225
233
  ];
226
- return args;
227
234
  }
228
235
  // ── Build Apptainer/Singularity arguments ─────────────────
229
236
  function buildApptainerArgs(session, runtime, sifPath, sessionId, tokenEnv = []) {
230
237
  const { agent, workdir, config } = session;
231
238
  const sandboxHome = (0, config_js_1.getSandboxHome)();
232
- (0, fs_1.mkdirSync)(sandboxHome, { recursive: true });
233
- const blockedMounts = resolveBlockedMounts(config.filesystem.blocked_patterns, getMountRoots(session));
234
- const emptyDir = ensureEmptyDir();
235
- const commandBlacklist = resolveCommandBlacklist(config);
236
- const proxyEnv = config.network.mode === 'filtered' && !session.dryRun ? buildFilteredProxyEnv(config) : [];
237
- const args = [
239
+ const { blockedMounts, emptyDir, envArgs } = prepareCommonArgs(session, sessionId, tokenEnv);
240
+ return [
238
241
  'exec',
239
242
  '--containall',
240
243
  '--cleanenv',
@@ -256,22 +259,15 @@ function buildApptainerArgs(session, runtime, sifPath, sessionId, tokenEnv = [])
256
259
  return ['--bind', `${source}:${containerPath}`];
257
260
  }),
258
261
  // ── Environment ──
259
- '--env', `LABGATE_AGENT=${agent}`,
260
- '--env', `LABGATE_SESSION=${sessionId}`,
261
- '--env', `LABGATE_NETWORK_MODE=${config.network.mode}`,
262
- '--env', `HOME=/home/sandbox`,
263
- ...(commandBlacklist ? ['--env', `LABGATE_CMD_BLACKLIST=${commandBlacklist}`] : []),
264
- ...tokenEnv,
265
- ...proxyEnv,
262
+ ...envArgs,
266
263
  // ── SIF image ──
267
264
  sifPath,
268
265
  // ── Entrypoint ──
269
- 'bash', '-lc', buildEntrypoint(agent, session.statusline ?? true),
266
+ 'bash', '-lc', buildEntrypoint(agent),
270
267
  ];
271
- return args;
272
268
  }
273
269
  // ── Entrypoint script (inline, same logic for both backends) ──
274
- function buildEntrypoint(agent, statuslineEnabled = true) {
270
+ function buildEntrypoint(agent) {
275
271
  const agentSetup = {
276
272
  claude: {
277
273
  pkg: '@anthropic-ai/claude-code',
@@ -305,8 +301,8 @@ function buildEntrypoint(agent, statuslineEnabled = true) {
305
301
  'fi',
306
302
  '',
307
303
  ];
308
- if (agent === 'claude' && statuslineEnabled) {
309
- lines.push('mkdir -p "$HOME/.claude"', 'STATUSLINE_PATH="$HOME/.claude/statusline.js"', 'SETTINGS_PATH="$HOME/.claude/settings.json"', 'if [ ! -f "$STATUSLINE_PATH" ] || grep -q "LABGATE_STATUSLINE" "$STATUSLINE_PATH" || grep -q "statusline.js" "$SETTINGS_PATH" 2>/dev/null; then', ' cat > "$STATUSLINE_PATH" <<\'LABGATE_STATUSLINE\'', '#!/usr/bin/env node', '// LABGATE_STATUSLINE', 'const fs = require("fs");', 'const path = require("path");', 'let input = "";', 'try { input = fs.readFileSync(0, "utf8"); } catch {}', 'let data = {};', 'try { data = JSON.parse(input || "{}"); } catch {}', 'const model = (data.model && data.model.display_name) || "unknown";', 'const currentDir = (data.workspace && data.workspace.current_dir) || "";', 'const dirBase = currentDir ? path.basename(currentDir) : "";', 'let branch = "";', 'try {', ' const headPath = path.join(currentDir || process.cwd(), ".git", "HEAD");', ' const head = fs.readFileSync(headPath, "utf8").trim();', ' if (head.startsWith("ref: ")) {', ' branch = head.replace("ref: refs/heads/", "");', ' }', '} catch {}', 'let percentUsed = null;', 'const cw = data.context_window || {};', 'const usage = cw.current_usage || null;', 'if (usage && typeof cw.context_window_size === "number" && cw.context_window_size > 0) {', ' const currentTokens = (usage.input_tokens || 0) + (usage.cache_creation_input_tokens || 0) + (usage.cache_read_input_tokens || 0);', ' percentUsed = Math.round((currentTokens * 100) / cw.context_window_size);', '}', 'const parts = ["Gated by LabGate"];', 'const agent = process.env.LABGATE_AGENT || "";', 'if (agent) parts.push(agent);', 'const session = process.env.LABGATE_SESSION || "";', 'if (session) parts.push(`id=${session.slice(0, 8)}`);', 'if (process.env.LABGATE_NETWORK_MODE) parts.push(`net=${process.env.LABGATE_NETWORK_MODE}`);', 'parts.push(`model=${model}`);', 'if (dirBase) parts.push(`dir=${dirBase}`);', 'if (branch) parts.push(`git=${branch}`);', 'if (typeof percentUsed === "number") parts.push(`ctx=${percentUsed}%`);', 'process.stdout.write(parts.join(" | "));', 'LABGATE_STATUSLINE', ' chmod +x "$STATUSLINE_PATH"', 'fi', 'node - <<\'LABGATE_STATUSLINE_SETTINGS\'', 'const fs = require("fs");', 'const path = require("path");', 'const home = process.env.HOME || "/home/sandbox";', 'const settingsPath = path.join(home, ".claude", "settings.json");', 'let settings = {};', 'try { settings = JSON.parse(fs.readFileSync(settingsPath, "utf8")); } catch {}', 'const desired = { type: "command", command: path.join(home, ".claude", "statusline.js"), padding: 0 };', 'const existingCmd = settings.statusLine && settings.statusLine.command;', 'if (!settings.statusLine || (typeof existingCmd === "string" && existingCmd.includes("statusline.js"))) {', ' settings.statusLine = desired;', ' fs.mkdirSync(path.dirname(settingsPath), { recursive: true });', ' fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));', '}', 'LABGATE_STATUSLINE_SETTINGS', '');
304
+ if (agent === 'claude') {
305
+ lines.push('node - <<\'LABGATE_STATUSLINE_CLEANUP\'', 'const fs = require("fs");', 'const path = require("path");', 'const home = process.env.HOME || "/home/sandbox";', 'const settingsPath = path.join(home, ".claude", "settings.json");', 'const statusPath = path.join(home, ".claude", "statusline.js");', 'let settings = null;', 'try { settings = JSON.parse(fs.readFileSync(settingsPath, "utf8")); } catch {}', 'let statusContent = "";', 'try { statusContent = fs.readFileSync(statusPath, "utf8"); } catch {}', 'const isLabgate = statusContent.includes("LABGATE_STATUSLINE");', 'const cmd = settings && settings.statusLine && settings.statusLine.command;', 'if (cmd && typeof cmd === "string" && cmd.includes("statusline.js") && isLabgate) {', ' delete settings.statusLine;', ' fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));', '}', 'if (isLabgate) {', ' try { fs.unlinkSync(statusPath); } catch {}', '}', 'LABGATE_STATUSLINE_CLEANUP', '');
310
306
  }
311
307
  lines.push(`if ! command -v ${setup.bin} >/dev/null 2>&1; then`, ` echo "[labgate] Installing ${setup.pkg}..."`, ` ${setup.installer}`, 'fi', `echo "[labgate] Starting ${setup.bin} in /work"`, `exec ${setup.bin}`);
312
308
  return lines.join('\n');
@@ -372,7 +368,7 @@ function setupBrowserHook() {
372
368
  const port = parseInt(portMatch[1], 10);
373
369
  if (port > 0 && port < 65536) {
374
370
  try {
375
- (0, child_process_2.execSync)(`podman machine ssh -- -f -N -L ${port}:localhost:${port}`, {
371
+ (0, child_process_1.execFileSync)('podman', ['machine', 'ssh', '--', '-f', '-N', '-L', `${port}:localhost:${port}`], {
376
372
  timeout: 5000,
377
373
  stdio: 'ignore',
378
374
  });
@@ -382,11 +378,11 @@ function setupBrowserHook() {
382
378
  }
383
379
  }
384
380
  try {
385
- (0, child_process_2.execSync)(`printf '%s' ${JSON.stringify(url)} | pbcopy`);
381
+ (0, child_process_1.execFileSync)('pbcopy', [], { input: url, stdio: ['pipe', 'ignore', 'ignore'] });
386
382
  }
387
383
  catch { /* best effort */ }
388
384
  try {
389
- (0, child_process_2.execSync)(`open ${JSON.stringify(url)}`);
385
+ (0, child_process_1.execFileSync)('open', [url]);
390
386
  }
391
387
  catch { /* best effort */ }
392
388
  console.log('\n[labgate] Login URL opened in browser and copied to clipboard.');
@@ -394,7 +390,7 @@ function setupBrowserHook() {
394
390
  else {
395
391
  // Linux with display
396
392
  try {
397
- (0, child_process_2.execSync)(`xdg-open ${JSON.stringify(url)}`);
393
+ (0, child_process_1.execFileSync)('xdg-open', [url]);
398
394
  }
399
395
  catch {
400
396
  console.log(`\n[labgate] Login URL:\n${url}`);
@@ -493,6 +489,85 @@ function formatStatusFooter(session, runtime, sessionId, image) {
493
489
  const net = session.config.network.mode;
494
490
  return `[labgate] Status: session=${sessionId} | runtime=${runtime} | net=${net} | timeout=${timeoutLabel} | audit=${audit} | image=${image}`;
495
491
  }
492
+ // ── Shared session helpers ─────────────────────────────────
493
+ function logSessionStart(session, sessionId) {
494
+ if (!session.config.audit.enabled)
495
+ return;
496
+ const event = {
497
+ timestamp: new Date().toISOString(),
498
+ session: sessionId,
499
+ event: 'session_start',
500
+ agent: session.agent,
501
+ workdir: session.workdir,
502
+ network_mode: session.config.network.mode,
503
+ mounts: [
504
+ { path: session.workdir, target: '/work', mode: 'rw' },
505
+ ...session.config.filesystem.extra_paths.map(p => ({
506
+ path: p.path.replace(/^~/, (0, os_1.homedir)()),
507
+ target: `/mnt/${(0, path_1.basename)(p.path)}`,
508
+ mode: p.mode,
509
+ })),
510
+ ],
511
+ };
512
+ (0, audit_js_1.writeAuditEvent)(session.config, event);
513
+ }
514
+ function logSessionEnd(session, sessionId, exitCode) {
515
+ if (!session.config.audit.enabled)
516
+ return;
517
+ (0, audit_js_1.writeAuditEvent)(session.config, {
518
+ timestamp: new Date().toISOString(),
519
+ session: sessionId,
520
+ event: 'session_end',
521
+ exit_code: exitCode,
522
+ });
523
+ }
524
+ function setupSessionTimeout(session, sessionId, runtime, isExited, killChild) {
525
+ const timeoutHours = session.config.session_timeout_hours;
526
+ if (!Number.isFinite(timeoutHours) || timeoutHours <= 0)
527
+ return undefined;
528
+ const timeoutMs = timeoutHours * 60 * 60 * 1000;
529
+ const handle = setTimeout(() => {
530
+ if (isExited())
531
+ return;
532
+ console.error(`\n[labgate] Session ${sessionId} reached timeout (${timeoutHours}h). Stopping...`);
533
+ if (session.config.audit.enabled) {
534
+ (0, audit_js_1.writeAuditEvent)(session.config, {
535
+ timestamp: new Date().toISOString(),
536
+ session: sessionId,
537
+ event: 'session_timeout',
538
+ timeout_hours: timeoutHours,
539
+ });
540
+ }
541
+ if (!(0, runtime_js_1.isApptainerFamily)(runtime)) {
542
+ try {
543
+ (0, child_process_1.execFileSync)(runtime, ['stop', `labgate-${sessionId}`], { stdio: 'ignore' });
544
+ }
545
+ catch { /* best effort */ }
546
+ }
547
+ killChild();
548
+ }, timeoutMs);
549
+ handle.unref();
550
+ return handle;
551
+ }
552
+ function printSessionInfo(session, sessionId, runtime) {
553
+ const mode = session.config.network.mode;
554
+ console.log(`[labgate] Session ${sessionId}`);
555
+ console.log(`[labgate] Runtime: ${runtime}`);
556
+ console.log(`[labgate] Agent: ${session.agent}`);
557
+ console.log(`[labgate] Workdir: ${session.workdir} → /work`);
558
+ console.log(`[labgate] Network: ${mode}`);
559
+ if (mode === 'filtered') {
560
+ console.warn('[labgate] Note: filtered mode relies on your proxy for enforcement. ' +
561
+ 'Set LABGATE_PROXY/HTTP_PROXY/HTTPS_PROXY to a policy-enforcing proxy.');
562
+ }
563
+ console.log(`[labgate] Blocked: ${session.config.filesystem.blocked_patterns.length} patterns`);
564
+ if (session.config.commands.blacklist.length > 0) {
565
+ console.log('[labgate] Note: command blacklist is advisory (PATH-based shims), not a hard security boundary.');
566
+ }
567
+ if (session.config.audit.enabled) {
568
+ console.log(`[labgate] Audit log: ${(0, config_js_1.getLogDir)(session.config)}`);
569
+ }
570
+ }
496
571
  // ── Session lifecycle ─────────────────────────────────────
497
572
  async function startSession(session) {
498
573
  const preferred = session.config.runtime;
@@ -511,7 +586,6 @@ async function startSession(session) {
511
586
  }
512
587
  let args;
513
588
  if ((0, runtime_js_1.isApptainerFamily)(runtime)) {
514
- // Apptainer/Singularity path
515
589
  let sifPath;
516
590
  if (session.dryRun) {
517
591
  sifPath = (0, path_1.join)((0, config_js_1.getImagesDir)(), imageToSifName(image));
@@ -522,7 +596,6 @@ async function startSession(session) {
522
596
  args = buildApptainerArgs(session, runtime, sifPath, sessionId, [...tokenEnv, ...(browserHook?.env ?? [])]);
523
597
  }
524
598
  else {
525
- // Podman/Docker path
526
599
  if (!session.dryRun) {
527
600
  ensureOciImage(runtime, image);
528
601
  }
@@ -532,37 +605,8 @@ async function startSession(session) {
532
605
  prettyPrintCommand(runtime, args);
533
606
  return;
534
607
  }
535
- // Log session start
536
- if (session.config.audit.enabled) {
537
- const event = {
538
- timestamp: new Date().toISOString(),
539
- session: sessionId,
540
- event: 'session_start',
541
- agent: session.agent,
542
- workdir: session.workdir,
543
- network_mode: session.config.network.mode,
544
- mounts: [
545
- { path: session.workdir, target: '/work', mode: 'rw' },
546
- ...session.config.filesystem.extra_paths.map(p => ({
547
- path: p.path.replace(/^~/, (0, os_1.homedir)()),
548
- target: `/mnt/${(0, path_1.basename)(p.path)}`,
549
- mode: p.mode,
550
- })),
551
- ],
552
- };
553
- (0, audit_js_1.writeAuditEvent)(session.config, event);
554
- }
555
- // Print session info
556
- const mode = session.config.network.mode;
557
- console.log(`[labgate] Session ${sessionId}`);
558
- console.log(`[labgate] Runtime: ${runtime}`);
559
- console.log(`[labgate] Agent: ${session.agent}`);
560
- console.log(`[labgate] Workdir: ${session.workdir} → /work`);
561
- console.log(`[labgate] Network: ${mode}`);
562
- console.log(`[labgate] Blocked: ${session.config.filesystem.blocked_patterns.length} patterns`);
563
- if (session.config.audit.enabled) {
564
- console.log(`[labgate] Audit log: ${(0, config_js_1.getLogDir)(session.config)}`);
565
- }
608
+ logSessionStart(session, sessionId);
609
+ printSessionInfo(session, sessionId, runtime);
566
610
  if (footerMode === 'once') {
567
611
  console.log(footerLine);
568
612
  }
@@ -616,33 +660,7 @@ async function startSession(session) {
616
660
  process.stdin.on('data', (data) => {
617
661
  child.write(data.toString());
618
662
  });
619
- // Session timeout
620
- let timeoutHandle;
621
- const timeoutHours = session.config.session_timeout_hours;
622
- if (Number.isFinite(timeoutHours) && timeoutHours > 0) {
623
- const timeoutMs = timeoutHours * 60 * 60 * 1000;
624
- timeoutHandle = setTimeout(() => {
625
- if (exited)
626
- return;
627
- console.error(`\n[labgate] Session ${sessionId} reached timeout (${timeoutHours}h). Stopping...`);
628
- if (session.config.audit.enabled) {
629
- (0, audit_js_1.writeAuditEvent)(session.config, {
630
- timestamp: new Date().toISOString(),
631
- session: sessionId,
632
- event: 'session_timeout',
633
- timeout_hours: timeoutHours,
634
- });
635
- }
636
- if (!(0, runtime_js_1.isApptainerFamily)(runtime)) {
637
- try {
638
- (0, child_process_1.execFileSync)(runtime, ['stop', `labgate-${sessionId}`], { stdio: 'ignore' });
639
- }
640
- catch { /* best effort */ }
641
- }
642
- child.kill('SIGTERM');
643
- }, timeoutMs);
644
- timeoutHandle.unref();
645
- }
663
+ const timeoutHandle = setupSessionTimeout(session, sessionId, runtime, () => exited, () => child.kill('SIGTERM'));
646
664
  child.onExit((event) => {
647
665
  exited = true;
648
666
  if (timeoutHandle)
@@ -652,20 +670,11 @@ async function startSession(session) {
652
670
  process.stdin.setRawMode(false);
653
671
  }
654
672
  process.stdout.off('resize', resizeHandler);
655
- if (session.config.audit.enabled) {
656
- (0, audit_js_1.writeAuditEvent)(session.config, {
657
- timestamp: new Date().toISOString(),
658
- session: sessionId,
659
- event: 'session_end',
660
- exit_code: event.exitCode ?? 0,
661
- });
662
- }
673
+ logSessionEnd(session, sessionId, event.exitCode ?? 0);
663
674
  process.exit(event.exitCode ?? 0);
664
675
  });
665
676
  for (const sig of ['SIGINT', 'SIGTERM']) {
666
- process.on(sig, () => {
667
- child.kill(sig);
668
- });
677
+ process.on(sig, () => child.kill(sig));
669
678
  }
670
679
  return;
671
680
  }
@@ -675,57 +684,17 @@ async function startSession(session) {
675
684
  console.log(footerLine);
676
685
  }
677
686
  console.log('');
678
- // Spawn container (inherit stdio so it's fully interactive with TTY)
679
- const child = (0, child_process_1.spawn)(runtime, args, {
680
- stdio: 'inherit',
681
- });
682
- // Session timeout
683
- let timeoutHandle;
684
- const timeoutHours = session.config.session_timeout_hours;
685
- if (Number.isFinite(timeoutHours) && timeoutHours > 0) {
686
- const timeoutMs = timeoutHours * 60 * 60 * 1000;
687
- timeoutHandle = setTimeout(() => {
688
- if (child.exitCode !== null)
689
- return;
690
- console.error(`\n[labgate] Session ${sessionId} reached timeout (${timeoutHours}h). Stopping...`);
691
- if (session.config.audit.enabled) {
692
- (0, audit_js_1.writeAuditEvent)(session.config, {
693
- timestamp: new Date().toISOString(),
694
- session: sessionId,
695
- event: 'session_timeout',
696
- timeout_hours: timeoutHours,
697
- });
698
- }
699
- if (!(0, runtime_js_1.isApptainerFamily)(runtime)) {
700
- try {
701
- (0, child_process_1.execFileSync)(runtime, ['stop', `labgate-${sessionId}`], { stdio: 'ignore' });
702
- }
703
- catch { /* best effort */ }
704
- }
705
- child.kill('SIGTERM');
706
- }, timeoutMs);
707
- timeoutHandle.unref();
708
- }
709
- // Handle exit
687
+ const child = (0, child_process_1.spawn)(runtime, args, { stdio: 'inherit' });
688
+ const timeoutHandle = setupSessionTimeout(session, sessionId, runtime, () => child.exitCode !== null, () => child.kill('SIGTERM'));
710
689
  child.on('close', (code) => {
711
690
  if (timeoutHandle)
712
691
  clearTimeout(timeoutHandle);
713
692
  browserHook?.cleanup();
714
- if (session.config.audit.enabled) {
715
- (0, audit_js_1.writeAuditEvent)(session.config, {
716
- timestamp: new Date().toISOString(),
717
- session: sessionId,
718
- event: 'session_end',
719
- exit_code: code ?? 0,
720
- });
721
- }
693
+ logSessionEnd(session, sessionId, code ?? 0);
722
694
  process.exit(code ?? 0);
723
695
  });
724
- // Forward signals
725
696
  for (const sig of ['SIGINT', 'SIGTERM']) {
726
- process.on(sig, () => {
727
- child.kill(sig);
728
- });
697
+ process.on(sig, () => child.kill(sig));
729
698
  }
730
699
  }
731
700
  // ── List running sessions ─────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/lib/container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/lib/container.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function collectFeedback(messageParts?: string[]): Promise<string>;
2
+ export declare function submitFeedback(message: string): Promise<{
3
+ mode: 'remote' | 'local';
4
+ detail: string;
5
+ }>;
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.collectFeedback = collectFeedback;
4
+ exports.submitFeedback = submitFeedback;
5
+ const readline_1 = require("readline");
6
+ const os_1 = require("os");
7
+ const path_1 = require("path");
8
+ const fs_1 = require("fs");
9
+ const crypto_1 = require("crypto");
10
+ const FEEDBACK_URL_ENV = 'LABGATE_FEEDBACK_URL';
11
+ const FEEDBACK_TOKEN_ENV = 'LABGATE_FEEDBACK_TOKEN';
12
+ const LOCAL_FILENAME = 'feedback.jsonl';
13
+ function buildRecord(message) {
14
+ return {
15
+ id: (0, crypto_1.randomUUID)(),
16
+ message,
17
+ created_at: new Date().toISOString(),
18
+ source: 'cli',
19
+ };
20
+ }
21
+ async function readAllStdin() {
22
+ let data = '';
23
+ for await (const chunk of process.stdin) {
24
+ data += chunk;
25
+ }
26
+ return data.trim();
27
+ }
28
+ async function readInteractive() {
29
+ console.log('[labgate] Enter feedback. Finish with Ctrl-D.');
30
+ const rl = (0, readline_1.createInterface)({ input: process.stdin, output: process.stdout, terminal: true });
31
+ const lines = [];
32
+ rl.on('line', (line) => lines.push(line));
33
+ return await new Promise((resolve) => {
34
+ rl.on('close', () => resolve(lines.join('\n').trim()));
35
+ });
36
+ }
37
+ async function collectFeedback(messageParts) {
38
+ if (messageParts && messageParts.length > 0) {
39
+ return messageParts.join(' ').trim();
40
+ }
41
+ if (process.stdin.isTTY) {
42
+ return await readInteractive();
43
+ }
44
+ return await readAllStdin();
45
+ }
46
+ async function writeLocal(record) {
47
+ const dir = (0, path_1.join)((0, os_1.homedir)(), '.labgate');
48
+ const path = (0, path_1.join)(dir, LOCAL_FILENAME);
49
+ await fs_1.promises.mkdir(dir, { recursive: true });
50
+ await fs_1.promises.appendFile(path, `${JSON.stringify(record)}\n`, 'utf8');
51
+ return path;
52
+ }
53
+ async function submitFeedback(message) {
54
+ const record = buildRecord(message);
55
+ const url = process.env[FEEDBACK_URL_ENV];
56
+ if (url) {
57
+ try {
58
+ const headers = { 'content-type': 'application/json' };
59
+ const token = process.env[FEEDBACK_TOKEN_ENV];
60
+ if (token)
61
+ headers.authorization = `Bearer ${token}`;
62
+ const res = await fetch(url, { method: 'POST', headers, body: JSON.stringify(record) });
63
+ if (res.ok) {
64
+ return { mode: 'remote', detail: '[labgate] Feedback sent.' };
65
+ }
66
+ const body = await res.text().catch(() => '');
67
+ const path = await writeLocal(record);
68
+ return {
69
+ mode: 'local',
70
+ detail: `[labgate] Feedback saved locally (remote error ${res.status}). ${body ? body.trim().slice(0, 200) : ''} Path: ${path}`,
71
+ };
72
+ }
73
+ catch (err) {
74
+ const path = await writeLocal(record);
75
+ const msg = err instanceof Error ? err.message : String(err);
76
+ return { mode: 'local', detail: `[labgate] Feedback saved locally (remote failed: ${msg}). Path: ${path}` };
77
+ }
78
+ }
79
+ const path = await writeLocal(record);
80
+ return { mode: 'local', detail: `[labgate] Feedback saved locally. Path: ${path}` };
81
+ }
82
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/lib/feedback.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,11 @@ function checkRuntime(preferred) {
38
38
  const result = tryRuntime(preferred);
39
39
  if (result)
40
40
  return result;
41
+ // Explicit preference not found — don't silently fall back
42
+ return {
43
+ ok: false,
44
+ error: `Error: requested runtime "${preferred}" not found in PATH.\n\nInstall it or set runtime to "auto" in ~/.labgate/config.json.`,
45
+ };
41
46
  }
42
47
  for (const cmd of AUTO_ORDER) {
43
48
  const result = tryRuntime(cmd);
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/lib/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/lib/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,10 @@
1
1
  {
2
2
  "name": "labgate",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Policy-controlled sandboxes for LLM coding agents on HPC",
5
- "bin": "bin/labgate.js",
5
+ "bin": {
6
+ "labgate": "bin/labgate.js"
7
+ },
6
8
  "scripts": {
7
9
  "build": "tsc",
8
10
  "dev": "tsc --watch",
@@ -18,7 +20,9 @@
18
20
  ],
19
21
  "dependencies": {
20
22
  "commander": "^12.1.0",
21
- "fast-glob": "^3.3.3",
23
+ "fast-glob": "^3.3.3"
24
+ },
25
+ "optionalDependencies": {
22
26
  "node-pty": "^1.1.0"
23
27
  },
24
28
  "devDependencies": {