labgate 0.5.37 → 0.5.39

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,6 +1,7 @@
1
1
  import type { RuntimeType } from './runtime.js';
2
2
  export type WebTerminalAgent = 'claude' | 'codex';
3
3
  export type WebTerminalStatus = 'running' | 'exited' | 'failed';
4
+ export type WebTerminalPermissionMode = 'default' | 'dangerous';
4
5
  export interface WebTerminalRecord {
5
6
  id: string;
6
7
  name?: string;
@@ -62,6 +63,8 @@ export declare function ensureTmuxAvailable(): Promise<{
62
63
  error: string;
63
64
  }>;
64
65
  export declare function hasTmuxSession(sessionName: string): Promise<boolean>;
65
- export declare function startTmuxWebTerminalSession(record: WebTerminalRecord, cliEntrypoint: string): Promise<void>;
66
+ export declare function startTmuxWebTerminalSession(record: WebTerminalRecord, cliEntrypoint: string, opts?: {
67
+ permissionMode?: WebTerminalPermissionMode;
68
+ }): Promise<void>;
66
69
  export declare function killTmuxSession(sessionName: string): Promise<void>;
67
70
  export declare function sanitizeExistingWebTerminalRecords(): void;
@@ -368,17 +368,32 @@ async function hasTmuxSession(sessionName) {
368
368
  return false;
369
369
  }
370
370
  }
371
- async function startTmuxWebTerminalSession(record, cliEntrypoint) {
371
+ async function startTmuxWebTerminalSession(record, cliEntrypoint, opts = {}) {
372
372
  const tmuxBin = await getTmuxBinary();
373
373
  clearWebTerminalExitInfo(record.id);
374
- const launchInner = [
374
+ const permissionMode = opts.permissionMode === 'dangerous' ? 'dangerous' : 'default';
375
+ const launchEnv = [
375
376
  `LABGATE_WEB_TERMINAL_ID=${shellQuote(record.id)}`,
377
+ ];
378
+ if (record.agent === 'claude') {
379
+ // The web UI already has its own footer/status affordances; disable Claude
380
+ // statusLine rendering to keep the terminal canvas uncluttered.
381
+ launchEnv.push('LABGATE_DISABLE_CLAUDE_STATUSLINE=1');
382
+ }
383
+ const launchArgs = [
384
+ ...launchEnv,
376
385
  shellQuote(process.execPath),
377
386
  shellQuote(cliEntrypoint),
378
387
  shellQuote(record.agent),
379
388
  shellQuote(record.workdir),
380
389
  '--no-footer',
381
- ].join(' ');
390
+ ];
391
+ if (permissionMode === 'dangerous') {
392
+ launchArgs.push(record.agent === 'codex'
393
+ ? '--dangerously-bypass-approvals-and-sandbox'
394
+ : '--dangerously-skip-permissions');
395
+ }
396
+ const launchInner = launchArgs.join(' ');
382
397
  const exitsDir = shellQuote(getWebTerminalsDir());
383
398
  const exitFile = shellQuote(getWebTerminalExitPath(record.id));
384
399
  const launchScript = [
@@ -411,6 +426,21 @@ async function startTmuxWebTerminalSession(record, cliEntrypoint) {
411
426
  throw err;
412
427
  }
413
428
  }
429
+ const windowOptions = [
430
+ // Keep full-screen TUIs in the primary buffer so browser/xterm scrollback
431
+ // remains usable in the web terminal.
432
+ ['alternate-screen', 'off'],
433
+ ];
434
+ for (const [key, value] of windowOptions) {
435
+ try {
436
+ await execFileAsync(tmuxBin, ['set-window-option', '-t', record.tmuxSession, key, value], { timeout: 10_000 });
437
+ }
438
+ catch (err) {
439
+ // If the command exited immediately, the session may already be gone.
440
+ if (!isMissingTmuxSessionError(err))
441
+ throw err;
442
+ }
443
+ }
414
444
  }
415
445
  async function killTmuxSession(sessionName) {
416
446
  const tmuxBin = await getTmuxBinary();
@@ -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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"}
@@ -30000,10 +30000,55 @@ var DEFAULT_CONFIG = {
30000
30000
  enabled: true,
30001
30001
  log_dir: "~/.labgate/logs"
30002
30002
  },
30003
+ plugins: {
30004
+ files: true,
30005
+ datasets: false,
30006
+ results: false,
30007
+ charting: true,
30008
+ molecular: true,
30009
+ genomics: true,
30010
+ phylogenetics: true,
30011
+ network: true,
30012
+ slurm: true,
30013
+ explorer: true,
30014
+ automation: false
30015
+ },
30016
+ automation: {
30017
+ model: "claude-sonnet-4-5-20250929",
30018
+ system_prompt: "You are an automation assistant helping guide a coding agent. When the agent asks a question or waits for input, provide a concise, helpful response based on the context.",
30019
+ trigger_patterns: [
30020
+ "\\?\\s*$",
30021
+ "^>\\s*$",
30022
+ "Do you want to proceed",
30023
+ "Press Enter to continue",
30024
+ "Y/n\\]?\\s*$"
30025
+ ],
30026
+ context_lines: 100,
30027
+ delay_ms: 3e3,
30028
+ max_turns: 20,
30029
+ max_tokens: 1024
30030
+ },
30003
30031
  headless: {
30004
- claude_run_with_allowed_permissions: true
30032
+ claude_run_with_allowed_permissions: true,
30033
+ continuation_in_other_terminals: true,
30034
+ git_integration: false
30005
30035
  }
30006
30036
  };
30037
+ var KNOWN_PLUGIN_IDS = Object.freeze(Object.keys(DEFAULT_CONFIG.plugins));
30038
+ var KNOWN_PLUGIN_ID_SET = new Set(KNOWN_PLUGIN_IDS);
30039
+ function isKnownPluginId(pluginId) {
30040
+ return KNOWN_PLUGIN_ID_SET.has(pluginId);
30041
+ }
30042
+ function sanitizePluginMap(rawPlugins) {
30043
+ const merged = { ...DEFAULT_CONFIG.plugins };
30044
+ if (!rawPlugins || typeof rawPlugins !== "object" || Array.isArray(rawPlugins)) return merged;
30045
+ for (const [pluginId, enabled] of Object.entries(rawPlugins)) {
30046
+ if (!isKnownPluginId(pluginId)) continue;
30047
+ if (typeof enabled !== "boolean") continue;
30048
+ merged[pluginId] = enabled;
30049
+ }
30050
+ return merged;
30051
+ }
30007
30052
  var LABGATE_DIR = process.env.LABGATE_DIR ?? join(homedir(), ".labgate");
30008
30053
  var CONFIG_FILE = "config.json";
30009
30054
  var PRIVATE_DIR_MODE = 448;
@@ -30037,6 +30082,7 @@ function validateConfig(config2) {
30037
30082
  const blockedPatterns = config2.filesystem?.blocked_patterns;
30038
30083
  const extraPaths = config2.filesystem?.extra_paths;
30039
30084
  const blacklist = config2.commands?.blacklist;
30085
+ const plugins = config2.plugins;
30040
30086
  const headless = config2.headless;
30041
30087
  if (!VALID_RUNTIMES.includes(config2.runtime)) {
30042
30088
  errors.push(`Invalid runtime: "${config2.runtime}". Must be one of: ${VALID_RUNTIMES.join(", ")}`);
@@ -30062,11 +30108,28 @@ function validateConfig(config2) {
30062
30108
  if (!Array.isArray(blacklist)) {
30063
30109
  errors.push("commands.blacklist must be an array");
30064
30110
  }
30111
+ if (plugins !== void 0) {
30112
+ if (!plugins || typeof plugins !== "object" || Array.isArray(plugins)) {
30113
+ errors.push("plugins must be an object");
30114
+ } else {
30115
+ for (const [pluginId, enabled] of Object.entries(plugins)) {
30116
+ if (!isKnownPluginId(pluginId)) {
30117
+ errors.push(`Unknown plugin id "${pluginId}"`);
30118
+ } else if (typeof enabled !== "boolean") {
30119
+ errors.push(`plugins.${pluginId} must be a boolean`);
30120
+ }
30121
+ }
30122
+ }
30123
+ }
30065
30124
  if (headless !== void 0) {
30066
30125
  if (!headless || typeof headless !== "object" || Array.isArray(headless)) {
30067
30126
  errors.push("headless must be an object");
30068
30127
  } else if (headless.claude_run_with_allowed_permissions !== void 0 && typeof headless.claude_run_with_allowed_permissions !== "boolean") {
30069
30128
  errors.push("headless.claude_run_with_allowed_permissions must be a boolean");
30129
+ } else if (headless.continuation_in_other_terminals !== void 0 && typeof headless.continuation_in_other_terminals !== "boolean") {
30130
+ errors.push("headless.continuation_in_other_terminals must be a boolean");
30131
+ } else if (headless.git_integration !== void 0 && typeof headless.git_integration !== "boolean") {
30132
+ errors.push("headless.git_integration must be a boolean");
30070
30133
  }
30071
30134
  }
30072
30135
  const mounts = Array.isArray(extraPaths) ? extraPaths : [];
@@ -30082,6 +30145,47 @@ function validateConfig(config2) {
30082
30145
  errors.push(`Invalid mount mode "${mount.mode}" for path "${mount.path}". Must be "rw" or "ro"`);
30083
30146
  }
30084
30147
  }
30148
+ const automation = config2.automation;
30149
+ if (automation !== void 0) {
30150
+ if (!automation || typeof automation !== "object" || Array.isArray(automation)) {
30151
+ errors.push("automation must be an object");
30152
+ } else {
30153
+ if (typeof automation.model !== "string" || !automation.model) {
30154
+ errors.push("automation.model must be a non-empty string");
30155
+ }
30156
+ if (typeof automation.system_prompt !== "string") {
30157
+ errors.push("automation.system_prompt must be a string");
30158
+ }
30159
+ if (!Array.isArray(automation.trigger_patterns)) {
30160
+ errors.push("automation.trigger_patterns must be an array");
30161
+ } else {
30162
+ for (let i = 0; i < automation.trigger_patterns.length; i++) {
30163
+ const pat = automation.trigger_patterns[i];
30164
+ if (typeof pat !== "string") {
30165
+ errors.push(`automation.trigger_patterns[${i}] must be a string`);
30166
+ } else {
30167
+ try {
30168
+ new RegExp(pat);
30169
+ } catch {
30170
+ errors.push(`automation.trigger_patterns[${i}] is not a valid regex: "${pat}"`);
30171
+ }
30172
+ }
30173
+ }
30174
+ }
30175
+ if (typeof automation.context_lines !== "number" || automation.context_lines < 1) {
30176
+ errors.push("automation.context_lines must be a number >= 1");
30177
+ }
30178
+ if (typeof automation.delay_ms !== "number" || automation.delay_ms < 0) {
30179
+ errors.push("automation.delay_ms must be a non-negative number");
30180
+ }
30181
+ if (typeof automation.max_turns !== "number" || automation.max_turns < 1) {
30182
+ errors.push("automation.max_turns must be a number >= 1");
30183
+ }
30184
+ if (typeof automation.max_tokens !== "number" || automation.max_tokens < 1) {
30185
+ errors.push("automation.max_tokens must be a number >= 1");
30186
+ }
30187
+ }
30188
+ }
30085
30189
  if (config2.slurm) {
30086
30190
  if (typeof config2.slurm.poll_interval_seconds !== "number" || config2.slurm.poll_interval_seconds < 1) {
30087
30191
  errors.push("slurm.poll_interval_seconds must be a number >= 1");
@@ -30168,9 +30272,22 @@ function loadConfig() {
30168
30272
  enabled: raw.audit?.enabled ?? DEFAULT_CONFIG.audit.enabled,
30169
30273
  log_dir: raw.audit?.log_dir ?? DEFAULT_CONFIG.audit.log_dir
30170
30274
  },
30275
+ automation: {
30276
+ api_key: raw.automation?.api_key ?? DEFAULT_CONFIG.automation?.api_key,
30277
+ model: raw.automation?.model ?? DEFAULT_CONFIG.automation.model,
30278
+ system_prompt: raw.automation?.system_prompt ?? DEFAULT_CONFIG.automation.system_prompt,
30279
+ trigger_patterns: raw.automation?.trigger_patterns ?? [...DEFAULT_CONFIG.automation.trigger_patterns],
30280
+ context_lines: raw.automation?.context_lines ?? DEFAULT_CONFIG.automation.context_lines,
30281
+ delay_ms: raw.automation?.delay_ms ?? DEFAULT_CONFIG.automation.delay_ms,
30282
+ max_turns: raw.automation?.max_turns ?? DEFAULT_CONFIG.automation.max_turns,
30283
+ max_tokens: raw.automation?.max_tokens ?? DEFAULT_CONFIG.automation.max_tokens
30284
+ },
30171
30285
  headless: {
30172
- claude_run_with_allowed_permissions: raw.headless?.claude_run_with_allowed_permissions ?? DEFAULT_CONFIG.headless?.claude_run_with_allowed_permissions ?? true
30173
- }
30286
+ claude_run_with_allowed_permissions: raw.headless?.claude_run_with_allowed_permissions ?? DEFAULT_CONFIG.headless?.claude_run_with_allowed_permissions ?? true,
30287
+ continuation_in_other_terminals: raw.headless?.continuation_in_other_terminals ?? DEFAULT_CONFIG.headless?.continuation_in_other_terminals ?? true,
30288
+ git_integration: raw.headless?.git_integration ?? DEFAULT_CONFIG.headless?.git_integration ?? false
30289
+ },
30290
+ plugins: sanitizePluginMap(raw.plugins)
30174
30291
  };
30175
30292
  const errors = validateConfig(config2);
30176
30293
  if (errors.length > 0) {
@@ -29947,6 +29947,100 @@ import { dirname, join as join2 } from "path";
29947
29947
  import { readFileSync, existsSync, chmodSync, mkdirSync } from "fs";
29948
29948
  import { join } from "path";
29949
29949
  import { homedir } from "os";
29950
+ var DEFAULT_CONFIG = {
29951
+ runtime: "auto",
29952
+ // Default sandbox image: includes python3 + basic build tools (git/make/g++).
29953
+ // Note: pip/venv are not included by default in Debian; users may still need a
29954
+ // custom image for richer Python workflows.
29955
+ image: "docker.io/library/node:20-bookworm",
29956
+ session_timeout_hours: 8,
29957
+ filesystem: {
29958
+ extra_paths: [],
29959
+ blocked_patterns: [
29960
+ "**/.ssh",
29961
+ "**/.gnupg",
29962
+ "**/.aws",
29963
+ "**/.config/gcloud",
29964
+ "**/.azure",
29965
+ "**/.env",
29966
+ "**/.netrc",
29967
+ "**/.git-credentials",
29968
+ "**/*.pem",
29969
+ "**/*.key",
29970
+ "**/id_rsa*",
29971
+ "**/id_ed25519*",
29972
+ "**/credentials*",
29973
+ "**/secrets*"
29974
+ ]
29975
+ },
29976
+ datasets: [],
29977
+ commands: {
29978
+ blacklist: [
29979
+ "mount",
29980
+ "umount",
29981
+ "mkfs",
29982
+ "reboot",
29983
+ "shutdown"
29984
+ ]
29985
+ },
29986
+ network: {
29987
+ mode: "host",
29988
+ allowed_domains: [
29989
+ "api.anthropic.com",
29990
+ "api.openai.com",
29991
+ "pypi.org",
29992
+ "files.pythonhosted.org",
29993
+ "conda.anaconda.org",
29994
+ "registry.npmjs.org",
29995
+ "github.com"
29996
+ ]
29997
+ },
29998
+ slurm: {
29999
+ enabled: true,
30000
+ poll_interval_seconds: 5,
30001
+ sacct_lookback_hours: 24,
30002
+ mcp_server: true
30003
+ },
30004
+ audit: {
30005
+ enabled: true,
30006
+ log_dir: "~/.labgate/logs"
30007
+ },
30008
+ plugins: {
30009
+ files: true,
30010
+ datasets: false,
30011
+ results: false,
30012
+ charting: true,
30013
+ molecular: true,
30014
+ genomics: true,
30015
+ phylogenetics: true,
30016
+ network: true,
30017
+ slurm: true,
30018
+ explorer: true,
30019
+ automation: false
30020
+ },
30021
+ automation: {
30022
+ model: "claude-sonnet-4-5-20250929",
30023
+ system_prompt: "You are an automation assistant helping guide a coding agent. When the agent asks a question or waits for input, provide a concise, helpful response based on the context.",
30024
+ trigger_patterns: [
30025
+ "\\?\\s*$",
30026
+ "^>\\s*$",
30027
+ "Do you want to proceed",
30028
+ "Press Enter to continue",
30029
+ "Y/n\\]?\\s*$"
30030
+ ],
30031
+ context_lines: 100,
30032
+ delay_ms: 3e3,
30033
+ max_turns: 20,
30034
+ max_tokens: 1024
30035
+ },
30036
+ headless: {
30037
+ claude_run_with_allowed_permissions: true,
30038
+ continuation_in_other_terminals: true,
30039
+ git_integration: false
30040
+ }
30041
+ };
30042
+ var KNOWN_PLUGIN_IDS = Object.freeze(Object.keys(DEFAULT_CONFIG.plugins));
30043
+ var KNOWN_PLUGIN_ID_SET = new Set(KNOWN_PLUGIN_IDS);
29950
30044
  var LABGATE_DIR = process.env.LABGATE_DIR ?? join(homedir(), ".labgate");
29951
30045
  var PRIVATE_DIR_MODE = 448;
29952
30046
  var PRIVATE_FILE_MODE = 384;
@@ -7205,6 +7205,7 @@ var config_exports = {};
7205
7205
  __export(config_exports, {
7206
7206
  CONFIG_FILE: () => CONFIG_FILE,
7207
7207
  DEFAULT_CONFIG: () => DEFAULT_CONFIG,
7208
+ KNOWN_PLUGIN_IDS: () => KNOWN_PLUGIN_IDS,
7208
7209
  LABGATE_DIR: () => LABGATE_DIR,
7209
7210
  PRIVATE_DIR_MODE: () => PRIVATE_DIR_MODE,
7210
7211
  PRIVATE_FILE_MODE: () => PRIVATE_FILE_MODE,
@@ -7231,6 +7232,7 @@ __export(config_exports, {
7231
7232
  getSessionsDir: () => getSessionsDir,
7232
7233
  getSlurmDbPath: () => getSlurmDbPath,
7233
7234
  getUiSocketPath: () => getUiSocketPath,
7235
+ isKnownPluginId: () => isKnownPluginId,
7234
7236
  loadConfig: () => loadConfig,
7235
7237
  loadEffectiveConfig: () => loadEffectiveConfig,
7236
7238
  shouldClaudeHeadlessRunWithAllowedPermissions: () => shouldClaudeHeadlessRunWithAllowedPermissions,
@@ -7239,6 +7241,19 @@ __export(config_exports, {
7239
7241
  import { readFileSync as readFileSync3, existsSync as existsSync3, chmodSync, mkdirSync } from "fs";
7240
7242
  import { join as join3 } from "path";
7241
7243
  import { homedir as homedir3 } from "os";
7244
+ function isKnownPluginId(pluginId) {
7245
+ return KNOWN_PLUGIN_ID_SET.has(pluginId);
7246
+ }
7247
+ function sanitizePluginMap(rawPlugins) {
7248
+ const merged = { ...DEFAULT_CONFIG.plugins };
7249
+ if (!rawPlugins || typeof rawPlugins !== "object" || Array.isArray(rawPlugins)) return merged;
7250
+ for (const [pluginId, enabled] of Object.entries(rawPlugins)) {
7251
+ if (!isKnownPluginId(pluginId)) continue;
7252
+ if (typeof enabled !== "boolean") continue;
7253
+ merged[pluginId] = enabled;
7254
+ }
7255
+ return merged;
7256
+ }
7242
7257
  function ensurePrivateDir(path) {
7243
7258
  mkdirSync(path, { recursive: true, mode: PRIVATE_DIR_MODE });
7244
7259
  try {
@@ -7325,6 +7340,7 @@ function validateConfig(config2) {
7325
7340
  const blockedPatterns = config2.filesystem?.blocked_patterns;
7326
7341
  const extraPaths = config2.filesystem?.extra_paths;
7327
7342
  const blacklist = config2.commands?.blacklist;
7343
+ const plugins = config2.plugins;
7328
7344
  const headless = config2.headless;
7329
7345
  if (!VALID_RUNTIMES2.includes(config2.runtime)) {
7330
7346
  errors.push(`Invalid runtime: "${config2.runtime}". Must be one of: ${VALID_RUNTIMES2.join(", ")}`);
@@ -7350,11 +7366,28 @@ function validateConfig(config2) {
7350
7366
  if (!Array.isArray(blacklist)) {
7351
7367
  errors.push("commands.blacklist must be an array");
7352
7368
  }
7369
+ if (plugins !== void 0) {
7370
+ if (!plugins || typeof plugins !== "object" || Array.isArray(plugins)) {
7371
+ errors.push("plugins must be an object");
7372
+ } else {
7373
+ for (const [pluginId, enabled] of Object.entries(plugins)) {
7374
+ if (!isKnownPluginId(pluginId)) {
7375
+ errors.push(`Unknown plugin id "${pluginId}"`);
7376
+ } else if (typeof enabled !== "boolean") {
7377
+ errors.push(`plugins.${pluginId} must be a boolean`);
7378
+ }
7379
+ }
7380
+ }
7381
+ }
7353
7382
  if (headless !== void 0) {
7354
7383
  if (!headless || typeof headless !== "object" || Array.isArray(headless)) {
7355
7384
  errors.push("headless must be an object");
7356
7385
  } else if (headless.claude_run_with_allowed_permissions !== void 0 && typeof headless.claude_run_with_allowed_permissions !== "boolean") {
7357
7386
  errors.push("headless.claude_run_with_allowed_permissions must be a boolean");
7387
+ } else if (headless.continuation_in_other_terminals !== void 0 && typeof headless.continuation_in_other_terminals !== "boolean") {
7388
+ errors.push("headless.continuation_in_other_terminals must be a boolean");
7389
+ } else if (headless.git_integration !== void 0 && typeof headless.git_integration !== "boolean") {
7390
+ errors.push("headless.git_integration must be a boolean");
7358
7391
  }
7359
7392
  }
7360
7393
  const mounts = Array.isArray(extraPaths) ? extraPaths : [];
@@ -7370,6 +7403,47 @@ function validateConfig(config2) {
7370
7403
  errors.push(`Invalid mount mode "${mount.mode}" for path "${mount.path}". Must be "rw" or "ro"`);
7371
7404
  }
7372
7405
  }
7406
+ const automation = config2.automation;
7407
+ if (automation !== void 0) {
7408
+ if (!automation || typeof automation !== "object" || Array.isArray(automation)) {
7409
+ errors.push("automation must be an object");
7410
+ } else {
7411
+ if (typeof automation.model !== "string" || !automation.model) {
7412
+ errors.push("automation.model must be a non-empty string");
7413
+ }
7414
+ if (typeof automation.system_prompt !== "string") {
7415
+ errors.push("automation.system_prompt must be a string");
7416
+ }
7417
+ if (!Array.isArray(automation.trigger_patterns)) {
7418
+ errors.push("automation.trigger_patterns must be an array");
7419
+ } else {
7420
+ for (let i = 0; i < automation.trigger_patterns.length; i++) {
7421
+ const pat = automation.trigger_patterns[i];
7422
+ if (typeof pat !== "string") {
7423
+ errors.push(`automation.trigger_patterns[${i}] must be a string`);
7424
+ } else {
7425
+ try {
7426
+ new RegExp(pat);
7427
+ } catch {
7428
+ errors.push(`automation.trigger_patterns[${i}] is not a valid regex: "${pat}"`);
7429
+ }
7430
+ }
7431
+ }
7432
+ }
7433
+ if (typeof automation.context_lines !== "number" || automation.context_lines < 1) {
7434
+ errors.push("automation.context_lines must be a number >= 1");
7435
+ }
7436
+ if (typeof automation.delay_ms !== "number" || automation.delay_ms < 0) {
7437
+ errors.push("automation.delay_ms must be a non-negative number");
7438
+ }
7439
+ if (typeof automation.max_turns !== "number" || automation.max_turns < 1) {
7440
+ errors.push("automation.max_turns must be a number >= 1");
7441
+ }
7442
+ if (typeof automation.max_tokens !== "number" || automation.max_tokens < 1) {
7443
+ errors.push("automation.max_tokens must be a number >= 1");
7444
+ }
7445
+ }
7446
+ }
7373
7447
  if (config2.slurm) {
7374
7448
  if (typeof config2.slurm.poll_interval_seconds !== "number" || config2.slurm.poll_interval_seconds < 1) {
7375
7449
  errors.push("slurm.poll_interval_seconds must be a number >= 1");
@@ -7456,9 +7530,22 @@ function loadConfig() {
7456
7530
  enabled: raw.audit?.enabled ?? DEFAULT_CONFIG.audit.enabled,
7457
7531
  log_dir: raw.audit?.log_dir ?? DEFAULT_CONFIG.audit.log_dir
7458
7532
  },
7533
+ automation: {
7534
+ api_key: raw.automation?.api_key ?? DEFAULT_CONFIG.automation?.api_key,
7535
+ model: raw.automation?.model ?? DEFAULT_CONFIG.automation.model,
7536
+ system_prompt: raw.automation?.system_prompt ?? DEFAULT_CONFIG.automation.system_prompt,
7537
+ trigger_patterns: raw.automation?.trigger_patterns ?? [...DEFAULT_CONFIG.automation.trigger_patterns],
7538
+ context_lines: raw.automation?.context_lines ?? DEFAULT_CONFIG.automation.context_lines,
7539
+ delay_ms: raw.automation?.delay_ms ?? DEFAULT_CONFIG.automation.delay_ms,
7540
+ max_turns: raw.automation?.max_turns ?? DEFAULT_CONFIG.automation.max_turns,
7541
+ max_tokens: raw.automation?.max_tokens ?? DEFAULT_CONFIG.automation.max_tokens
7542
+ },
7459
7543
  headless: {
7460
- claude_run_with_allowed_permissions: raw.headless?.claude_run_with_allowed_permissions ?? DEFAULT_CONFIG.headless?.claude_run_with_allowed_permissions ?? true
7461
- }
7544
+ claude_run_with_allowed_permissions: raw.headless?.claude_run_with_allowed_permissions ?? DEFAULT_CONFIG.headless?.claude_run_with_allowed_permissions ?? true,
7545
+ continuation_in_other_terminals: raw.headless?.continuation_in_other_terminals ?? DEFAULT_CONFIG.headless?.continuation_in_other_terminals ?? true,
7546
+ git_integration: raw.headless?.git_integration ?? DEFAULT_CONFIG.headless?.git_integration ?? false
7547
+ },
7548
+ plugins: sanitizePluginMap(raw.plugins)
7462
7549
  };
7463
7550
  const errors = validateConfig(config2);
7464
7551
  if (errors.length > 0) {
@@ -7530,7 +7617,7 @@ function loadEffectiveConfig() {
7530
7617
  sharedAuditDir: policy.shared_audit_dir
7531
7618
  };
7532
7619
  }
7533
- var DEFAULT_CONFIG, LABGATE_DIR, CONFIG_FILE, PRIVATE_DIR_MODE, PRIVATE_FILE_MODE, VALID_RUNTIMES2, VALID_NETWORK_MODES2, VALID_MOUNT_MODES;
7620
+ var DEFAULT_CONFIG, KNOWN_PLUGIN_IDS, KNOWN_PLUGIN_ID_SET, LABGATE_DIR, CONFIG_FILE, PRIVATE_DIR_MODE, PRIVATE_FILE_MODE, VALID_RUNTIMES2, VALID_NETWORK_MODES2, VALID_MOUNT_MODES;
7534
7621
  var init_config = __esm({
7535
7622
  "src/lib/config.ts"() {
7536
7623
  "use strict";
@@ -7592,10 +7679,42 @@ var init_config = __esm({
7592
7679
  enabled: true,
7593
7680
  log_dir: "~/.labgate/logs"
7594
7681
  },
7682
+ plugins: {
7683
+ files: true,
7684
+ datasets: false,
7685
+ results: false,
7686
+ charting: true,
7687
+ molecular: true,
7688
+ genomics: true,
7689
+ phylogenetics: true,
7690
+ network: true,
7691
+ slurm: true,
7692
+ explorer: true,
7693
+ automation: false
7694
+ },
7695
+ automation: {
7696
+ model: "claude-sonnet-4-5-20250929",
7697
+ system_prompt: "You are an automation assistant helping guide a coding agent. When the agent asks a question or waits for input, provide a concise, helpful response based on the context.",
7698
+ trigger_patterns: [
7699
+ "\\?\\s*$",
7700
+ "^>\\s*$",
7701
+ "Do you want to proceed",
7702
+ "Press Enter to continue",
7703
+ "Y/n\\]?\\s*$"
7704
+ ],
7705
+ context_lines: 100,
7706
+ delay_ms: 3e3,
7707
+ max_turns: 20,
7708
+ max_tokens: 1024
7709
+ },
7595
7710
  headless: {
7596
- claude_run_with_allowed_permissions: true
7711
+ claude_run_with_allowed_permissions: true,
7712
+ continuation_in_other_terminals: true,
7713
+ git_integration: false
7597
7714
  }
7598
7715
  };
7716
+ KNOWN_PLUGIN_IDS = Object.freeze(Object.keys(DEFAULT_CONFIG.plugins));
7717
+ KNOWN_PLUGIN_ID_SET = new Set(KNOWN_PLUGIN_IDS);
7599
7718
  LABGATE_DIR = process.env.LABGATE_DIR ?? join3(homedir3(), ".labgate");
7600
7719
  CONFIG_FILE = "config.json";
7601
7720
  PRIVATE_DIR_MODE = 448;