@elizaos/plugin-shell 2.0.0-alpha.7 → 2.0.0-alpha.9

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/index.js CHANGED
@@ -2957,35 +2957,11 @@ ${addHeader("# Shell History (Last 10)", historyText)}${fileOpsText}`;
2957
2957
  }
2958
2958
  };
2959
2959
  // providers/terminalUsage.ts
2960
- import { validateActionKeywords, validateActionRegex } from "@elizaos/core";
2961
2960
  var terminalUsageProvider = {
2962
2961
  name: "terminalUsage",
2963
2962
  description: "Terminal usage instructions",
2964
2963
  dynamic: true,
2965
- relevanceKeywords: [
2966
- "terminalusage",
2967
- "terminalusageprovider",
2968
- "plugin",
2969
- "shell",
2970
- "status",
2971
- "state",
2972
- "context",
2973
- "info",
2974
- "details",
2975
- "chat",
2976
- "conversation",
2977
- "agent",
2978
- "room",
2979
- "channel"
2980
- ],
2981
2964
  get: async (_runtime, _message, _state) => {
2982
- const __providerKeywords = ["terminalusage", "terminalusageprovider", "plugin", "shell", "status", "state", "context", "info", "details", "chat", "conversation", "agent", "room", "channel"];
2983
- const __providerRegex = new RegExp(`\\b(${__providerKeywords.join("|")})\\b`, "i");
2984
- const __recentMessages = _state?.recentMessagesData || [];
2985
- const __isRelevant = validateActionKeywords(_message, __recentMessages, __providerKeywords) || validateActionRegex(_message, __recentMessages, __providerRegex);
2986
- if (!__isRelevant) {
2987
- return { text: "" };
2988
- }
2989
2965
  const settings = _runtime.character?.settings;
2990
2966
  if (settings?.DISABLE_TERMINAL) {
2991
2967
  return { text: "" };
@@ -5299,4 +5275,4 @@ export {
5299
5275
  BRACKETED_PASTE_END
5300
5276
  };
5301
5277
 
5302
- //# debugId=EB43D3D65D87A50A64756E2164756E21
5278
+ //# debugId=89E93595C791F9E464756E2164756E21
package/dist/index.js.map CHANGED
@@ -20,7 +20,7 @@
20
20
  "/**\n * Command Analysis\n *\n * Functions for analyzing shell commands for security evaluation.\n * Parses commands, resolves executables, and evaluates against allowlists.\n */\n\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { matchAllowlist } from \"./allowlist\";\nimport type {\n\tCommandResolution,\n\tExecAllowlistAnalysis,\n\tExecAllowlistEntry,\n\tExecAllowlistEvaluation,\n\tExecCommandAnalysis,\n\tExecCommandSegment,\n} from \"./types\";\nimport { DEFAULT_SAFE_BINS } from \"./types\";\n\n/**\n * Disallowed tokens in pipeline commands\n */\nconst DISALLOWED_PIPELINE_TOKENS = new Set([\n\t\">\",\n\t\"<\",\n\t\"`\",\n\t\"\\n\",\n\t\"\\r\",\n\t\"(\",\n\t\")\",\n]);\n\n/**\n * Escape characters inside double quotes\n */\nconst DOUBLE_QUOTE_ESCAPES = new Set([\"\\\\\", '\"', \"$\", \"`\", \"\\n\", \"\\r\"]);\n\n/**\n * Windows-specific unsupported tokens\n */\nconst WINDOWS_UNSUPPORTED_TOKENS = new Set([\n\t\"&\",\n\t\"|\",\n\t\"<\",\n\t\">\",\n\t\"^\",\n\t\"(\",\n\t\")\",\n\t\"%\",\n\t\"!\",\n\t\"\\n\",\n\t\"\\r\",\n]);\n\n/**\n * Check if next char is a double-quote escape\n */\nfunction isDoubleQuoteEscape(next: string | undefined): next is string {\n\treturn Boolean(next && DOUBLE_QUOTE_ESCAPES.has(next));\n}\n\n/**\n * Check if a file is executable\n */\nfunction isExecutableFile(filePath: string): boolean {\n\ttry {\n\t\tconst stat = fs.statSync(filePath);\n\t\tif (!stat.isFile()) return false;\n\t\tif (process.platform !== \"win32\") {\n\t\t\tfs.accessSync(filePath, fs.constants.X_OK);\n\t\t}\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Expand home directory\n */\nfunction expandHome(value: string): string {\n\tif (!value) return value;\n\tif (value === \"~\") return require(\"node:os\").homedir();\n\tif (value.startsWith(\"~/\"))\n\t\treturn path.join(require(\"node:os\").homedir(), value.slice(2));\n\treturn value;\n}\n\n/**\n * Parse the first token from a command string\n */\nfunction parseFirstToken(command: string): string | null {\n\tconst trimmed = command.trim();\n\tif (!trimmed) return null;\n\n\tconst first = trimmed[0];\n\tif (first === '\"' || first === \"'\") {\n\t\tconst end = trimmed.indexOf(first, 1);\n\t\tif (end > 1) return trimmed.slice(1, end);\n\t\treturn trimmed.slice(1);\n\t}\n\n\tconst match = /^[^\\s]+/.exec(trimmed);\n\treturn match ? match[0] : null;\n}\n\n/**\n * Resolve executable path from PATH\n */\nfunction resolveExecutablePath(\n\trawExecutable: string,\n\tcwd?: string,\n\tenv?: NodeJS.ProcessEnv,\n): string | undefined {\n\tconst expanded = rawExecutable.startsWith(\"~\")\n\t\t? expandHome(rawExecutable)\n\t\t: rawExecutable;\n\n\tif (expanded.includes(\"/\") || expanded.includes(\"\\\\\")) {\n\t\tif (path.isAbsolute(expanded)) {\n\t\t\treturn isExecutableFile(expanded) ? expanded : undefined;\n\t\t}\n\t\tconst base = cwd?.trim() || process.cwd();\n\t\tconst candidate = path.resolve(base, expanded);\n\t\treturn isExecutableFile(candidate) ? candidate : undefined;\n\t}\n\n\tconst envPath =\n\t\tenv?.PATH ?? env?.Path ?? process.env.PATH ?? process.env.Path ?? \"\";\n\tconst entries = envPath.split(path.delimiter).filter(Boolean);\n\tconst hasExtension =\n\t\tprocess.platform === \"win32\" && path.extname(expanded).length > 0;\n\n\tconst extensions =\n\t\tprocess.platform === \"win32\"\n\t\t\t? hasExtension\n\t\t\t\t? [\"\"]\n\t\t\t\t: (\n\t\t\t\t\t\tenv?.PATHEXT ??\n\t\t\t\t\t\tenv?.Pathext ??\n\t\t\t\t\t\tprocess.env.PATHEXT ??\n\t\t\t\t\t\tprocess.env.Pathext ??\n\t\t\t\t\t\t\".EXE;.CMD;.BAT;.COM\"\n\t\t\t\t\t)\n\t\t\t\t\t\t.split(\";\")\n\t\t\t\t\t\t.map((ext) => ext.toLowerCase())\n\t\t\t: [\"\"];\n\n\tfor (const entry of entries) {\n\t\tfor (const ext of extensions) {\n\t\t\tconst candidate = path.join(entry, expanded + ext);\n\t\t\tif (isExecutableFile(candidate)) {\n\t\t\t\treturn candidate;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Resolve command to executable info\n */\nexport function resolveCommandResolution(\n\tcommand: string,\n\tcwd?: string,\n\tenv?: NodeJS.ProcessEnv,\n): CommandResolution | null {\n\tconst rawExecutable = parseFirstToken(command);\n\tif (!rawExecutable) return null;\n\n\tconst resolvedPath = resolveExecutablePath(rawExecutable, cwd, env);\n\tconst executableName = resolvedPath\n\t\t? path.basename(resolvedPath)\n\t\t: rawExecutable;\n\n\treturn { rawExecutable, resolvedPath, executableName };\n}\n\n/**\n * Resolve command from argv\n */\nexport function resolveCommandFromArgv(\n\targv: string[],\n\tcwd?: string,\n\tenv?: NodeJS.ProcessEnv,\n): CommandResolution | null {\n\tconst rawExecutable = argv[0]?.trim();\n\tif (!rawExecutable) return null;\n\n\tconst resolvedPath = resolveExecutablePath(rawExecutable, cwd, env);\n\tconst executableName = resolvedPath\n\t\t? path.basename(resolvedPath)\n\t\t: rawExecutable;\n\n\treturn { rawExecutable, resolvedPath, executableName };\n}\n\n/**\n * Iterator action types\n */\ntype IteratorAction = \"split\" | \"skip\" | \"include\" | { reject: string };\n\n/**\n * Iterate through command while respecting shell quoting\n */\nfunction iterateQuoteAware(\n\tcommand: string,\n\tonChar: (\n\t\tch: string,\n\t\tnext: string | undefined,\n\t\tindex: number,\n\t) => IteratorAction,\n):\n\t| { ok: true; parts: string[]; hasSplit: boolean }\n\t| { ok: false; reason: string } {\n\tconst parts: string[] = [];\n\tlet buf = \"\";\n\tlet inSingle = false;\n\tlet inDouble = false;\n\tlet escaped = false;\n\tlet hasSplit = false;\n\n\tconst pushPart = () => {\n\t\tconst trimmed = buf.trim();\n\t\tif (trimmed) parts.push(trimmed);\n\t\tbuf = \"\";\n\t};\n\n\tfor (let i = 0; i < command.length; i += 1) {\n\t\tconst ch = command[i];\n\t\tconst next = command[i + 1];\n\n\t\tif (escaped) {\n\t\t\tbuf += ch;\n\t\t\tescaped = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!inSingle && !inDouble && ch === \"\\\\\") {\n\t\t\tescaped = true;\n\t\t\tbuf += ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (inSingle) {\n\t\t\tif (ch === \"'\") inSingle = false;\n\t\t\tbuf += ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (inDouble) {\n\t\t\tif (ch === \"\\\\\" && isDoubleQuoteEscape(next)) {\n\t\t\t\tbuf += ch;\n\t\t\t\tbuf += next;\n\t\t\t\ti += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ch === \"$\" && next === \"(\") {\n\t\t\t\treturn { ok: false, reason: \"unsupported shell token: $()\" };\n\t\t\t}\n\t\t\tif (ch === \"`\") {\n\t\t\t\treturn { ok: false, reason: \"unsupported shell token: `\" };\n\t\t\t}\n\t\t\tif (ch === \"\\n\" || ch === \"\\r\") {\n\t\t\t\treturn { ok: false, reason: \"unsupported shell token: newline\" };\n\t\t\t}\n\t\t\tif (ch === '\"') inDouble = false;\n\t\t\tbuf += ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === \"'\") {\n\t\t\tinSingle = true;\n\t\t\tbuf += ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '\"') {\n\t\t\tinDouble = true;\n\t\t\tbuf += ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst action = onChar(ch, next, i);\n\t\tif (typeof action === \"object\" && \"reject\" in action) {\n\t\t\treturn { ok: false, reason: action.reject };\n\t\t}\n\t\tif (action === \"split\") {\n\t\t\tpushPart();\n\t\t\thasSplit = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (action === \"skip\") continue;\n\t\tbuf += ch;\n\t}\n\n\tif (escaped || inSingle || inDouble) {\n\t\treturn { ok: false, reason: \"unterminated shell quote/escape\" };\n\t}\n\n\tpushPart();\n\treturn { ok: true, parts, hasSplit };\n}\n\n/**\n * Split command by pipeline operators\n */\nfunction splitShellPipeline(command: string): {\n\tok: boolean;\n\treason?: string;\n\tsegments: string[];\n} {\n\tlet emptySegment = false;\n\n\tconst result = iterateQuoteAware(command, (ch, next) => {\n\t\tif (ch === \"|\" && next === \"|\") {\n\t\t\treturn { reject: \"unsupported shell token: ||\" };\n\t\t}\n\t\tif (ch === \"|\" && next === \"&\") {\n\t\t\treturn { reject: \"unsupported shell token: |&\" };\n\t\t}\n\t\tif (ch === \"|\") {\n\t\t\temptySegment = true;\n\t\t\treturn \"split\";\n\t\t}\n\t\tif (ch === \"&\" || ch === \";\") {\n\t\t\treturn { reject: `unsupported shell token: ${ch}` };\n\t\t}\n\t\tif (DISALLOWED_PIPELINE_TOKENS.has(ch)) {\n\t\t\treturn { reject: `unsupported shell token: ${ch}` };\n\t\t}\n\t\tif (ch === \"$\" && next === \"(\") {\n\t\t\treturn { reject: \"unsupported shell token: $()\" };\n\t\t}\n\t\temptySegment = false;\n\t\treturn \"include\";\n\t});\n\n\tif (!result.ok) {\n\t\treturn { ok: false, reason: result.reason, segments: [] };\n\t}\n\tif (emptySegment || result.parts.length === 0) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\treason:\n\t\t\t\tresult.parts.length === 0 ? \"empty command\" : \"empty pipeline segment\",\n\t\t\tsegments: [],\n\t\t};\n\t}\n\n\treturn { ok: true, segments: result.parts };\n}\n\n/**\n * Tokenize shell segment into argv\n */\nfunction tokenizeShellSegment(segment: string): string[] | null {\n\tconst tokens: string[] = [];\n\tlet buf = \"\";\n\tlet inSingle = false;\n\tlet inDouble = false;\n\tlet escaped = false;\n\n\tconst pushToken = () => {\n\t\tif (buf.length > 0) {\n\t\t\ttokens.push(buf);\n\t\t\tbuf = \"\";\n\t\t}\n\t};\n\n\tfor (let i = 0; i < segment.length; i += 1) {\n\t\tconst ch = segment[i];\n\n\t\tif (escaped) {\n\t\t\tbuf += ch;\n\t\t\tescaped = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!inSingle && !inDouble && ch === \"\\\\\") {\n\t\t\tescaped = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (inSingle) {\n\t\t\tif (ch === \"'\") inSingle = false;\n\t\t\telse buf += ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (inDouble) {\n\t\t\tconst next = segment[i + 1];\n\t\t\tif (ch === \"\\\\\" && isDoubleQuoteEscape(next)) {\n\t\t\t\tbuf += next;\n\t\t\t\ti += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ch === '\"') inDouble = false;\n\t\t\telse buf += ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === \"'\") {\n\t\t\tinSingle = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (ch === '\"') {\n\t\t\tinDouble = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/\\s/.test(ch)) {\n\t\t\tpushToken();\n\t\t\tcontinue;\n\t\t}\n\n\t\tbuf += ch;\n\t}\n\n\tif (escaped || inSingle || inDouble) return null;\n\tpushToken();\n\treturn tokens;\n}\n\n/**\n * Parse segments from parts\n */\nfunction parseSegmentsFromParts(\n\tparts: string[],\n\tcwd?: string,\n\tenv?: NodeJS.ProcessEnv,\n): ExecCommandSegment[] | null {\n\tconst segments: ExecCommandSegment[] = [];\n\n\tfor (const raw of parts) {\n\t\tconst argv = tokenizeShellSegment(raw);\n\t\tif (!argv || argv.length === 0) return null;\n\n\t\tsegments.push({\n\t\t\traw,\n\t\t\targv,\n\t\t\tresolution: resolveCommandFromArgv(argv, cwd, env),\n\t\t});\n\t}\n\n\treturn segments;\n}\n\n/**\n * Check if running on Windows\n */\nfunction isWindowsPlatform(platform?: string | null): boolean {\n\tconst normalized = String(platform ?? \"\")\n\t\t.trim()\n\t\t.toLowerCase();\n\treturn normalized.startsWith(\"win\");\n}\n\n/**\n * Analyze a shell command\n */\nexport function analyzeShellCommand(params: {\n\tcommand: string;\n\tcwd?: string;\n\tenv?: NodeJS.ProcessEnv;\n\tplatform?: string | null;\n}): ExecCommandAnalysis {\n\tif (isWindowsPlatform(params.platform)) {\n\t\treturn analyzeWindowsCommand(params);\n\t}\n\n\t// Try splitting by chain operators\n\tconst chainParts = splitCommandChain(params.command);\n\tif (chainParts) {\n\t\tconst chains: ExecCommandSegment[][] = [];\n\t\tconst allSegments: ExecCommandSegment[] = [];\n\n\t\tfor (const part of chainParts) {\n\t\t\tconst pipelineSplit = splitShellPipeline(part);\n\t\t\tif (!pipelineSplit.ok) {\n\t\t\t\treturn { ok: false, reason: pipelineSplit.reason, segments: [] };\n\t\t\t}\n\n\t\t\tconst segments = parseSegmentsFromParts(\n\t\t\t\tpipelineSplit.segments,\n\t\t\t\tparams.cwd,\n\t\t\t\tparams.env,\n\t\t\t);\n\t\t\tif (!segments) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\treason: \"unable to parse shell segment\",\n\t\t\t\t\tsegments: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tchains.push(segments);\n\t\t\tallSegments.push(...segments);\n\t\t}\n\n\t\treturn { ok: true, segments: allSegments, chains };\n\t}\n\n\t// No chain operators, parse as simple pipeline\n\tconst split = splitShellPipeline(params.command);\n\tif (!split.ok) {\n\t\treturn { ok: false, reason: split.reason, segments: [] };\n\t}\n\n\tconst segments = parseSegmentsFromParts(\n\t\tsplit.segments,\n\t\tparams.cwd,\n\t\tparams.env,\n\t);\n\tif (!segments) {\n\t\treturn { ok: false, reason: \"unable to parse shell segment\", segments: [] };\n\t}\n\n\treturn { ok: true, segments };\n}\n\n/**\n * Analyze Windows command\n */\nfunction analyzeWindowsCommand(params: {\n\tcommand: string;\n\tcwd?: string;\n\tenv?: NodeJS.ProcessEnv;\n}): ExecCommandAnalysis {\n\tfor (const ch of params.command) {\n\t\tif (WINDOWS_UNSUPPORTED_TOKENS.has(ch)) {\n\t\t\tconst tokenName = ch === \"\\n\" || ch === \"\\r\" ? \"newline\" : ch;\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `unsupported windows shell token: ${tokenName}`,\n\t\t\t\tsegments: [],\n\t\t\t};\n\t\t}\n\t}\n\n\tconst argv = tokenizeWindowsSegment(params.command);\n\tif (!argv || argv.length === 0) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\treason: \"unable to parse windows command\",\n\t\t\tsegments: [],\n\t\t};\n\t}\n\n\treturn {\n\t\tok: true,\n\t\tsegments: [\n\t\t\t{\n\t\t\t\traw: params.command,\n\t\t\t\targv,\n\t\t\t\tresolution: resolveCommandFromArgv(argv, params.cwd, params.env),\n\t\t\t},\n\t\t],\n\t};\n}\n\n/**\n * Tokenize Windows command segment\n */\nfunction tokenizeWindowsSegment(segment: string): string[] | null {\n\tconst tokens: string[] = [];\n\tlet buf = \"\";\n\tlet inDouble = false;\n\n\tconst pushToken = () => {\n\t\tif (buf.length > 0) {\n\t\t\ttokens.push(buf);\n\t\t\tbuf = \"\";\n\t\t}\n\t};\n\n\tfor (const ch of segment) {\n\t\tif (ch === '\"') {\n\t\t\tinDouble = !inDouble;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!inDouble && /\\s/.test(ch)) {\n\t\t\tpushToken();\n\t\t\tcontinue;\n\t\t}\n\t\tbuf += ch;\n\t}\n\n\tif (inDouble) return null;\n\tpushToken();\n\treturn tokens.length > 0 ? tokens : null;\n}\n\n/**\n * Split command by chain operators (&&, ||, ;)\n */\nfunction splitCommandChain(command: string): string[] | null {\n\tconst parts: string[] = [];\n\tlet buf = \"\";\n\tlet inSingle = false;\n\tlet inDouble = false;\n\tlet escaped = false;\n\tlet foundChain = false;\n\tlet invalidChain = false;\n\n\tconst pushPart = () => {\n\t\tconst trimmed = buf.trim();\n\t\tif (trimmed) {\n\t\t\tparts.push(trimmed);\n\t\t\tbuf = \"\";\n\t\t\treturn true;\n\t\t}\n\t\tbuf = \"\";\n\t\treturn false;\n\t};\n\n\tfor (let i = 0; i < command.length; i += 1) {\n\t\tconst ch = command[i];\n\t\tconst next = command[i + 1];\n\n\t\tif (escaped) {\n\t\t\tbuf += ch;\n\t\t\tescaped = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!inSingle && !inDouble && ch === \"\\\\\") {\n\t\t\tescaped = true;\n\t\t\tbuf += ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (inSingle) {\n\t\t\tif (ch === \"'\") inSingle = false;\n\t\t\tbuf += ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (inDouble) {\n\t\t\tif (ch === \"\\\\\" && isDoubleQuoteEscape(next)) {\n\t\t\t\tbuf += ch;\n\t\t\t\tbuf += next;\n\t\t\t\ti += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ch === '\"') inDouble = false;\n\t\t\tbuf += ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === \"'\") {\n\t\t\tinSingle = true;\n\t\t\tbuf += ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === '\"') {\n\t\t\tinDouble = true;\n\t\t\tbuf += ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === \"&\" && next === \"&\") {\n\t\t\tif (!pushPart()) invalidChain = true;\n\t\t\ti += 1;\n\t\t\tfoundChain = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === \"|\" && next === \"|\") {\n\t\t\tif (!pushPart()) invalidChain = true;\n\t\t\ti += 1;\n\t\t\tfoundChain = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch === \";\") {\n\t\t\tif (!pushPart()) invalidChain = true;\n\t\t\tfoundChain = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tbuf += ch;\n\t}\n\n\tconst pushedFinal = pushPart();\n\tif (!foundChain) return null;\n\tif (invalidChain || !pushedFinal) return null;\n\treturn parts.length > 0 ? parts : null;\n}\n\n/**\n * Normalize safe bins set\n */\nexport function normalizeSafeBins(entries?: string[]): Set<string> {\n\tif (!Array.isArray(entries)) return new Set();\n\tconst normalized = entries\n\t\t.map((entry) => entry.trim().toLowerCase())\n\t\t.filter((entry) => entry.length > 0);\n\treturn new Set(normalized);\n}\n\n/**\n * Resolve safe bins with defaults\n */\nexport function resolveSafeBins(entries?: string[] | null): Set<string> {\n\tif (entries === undefined) {\n\t\treturn normalizeSafeBins([...DEFAULT_SAFE_BINS]);\n\t}\n\treturn normalizeSafeBins(entries ?? []);\n}\n\n/**\n * Check if path-like token\n */\nfunction isPathLikeToken(value: string): boolean {\n\tconst trimmed = value.trim();\n\tif (!trimmed || trimmed === \"-\") return false;\n\tif (\n\t\ttrimmed.startsWith(\"./\") ||\n\t\ttrimmed.startsWith(\"../\") ||\n\t\ttrimmed.startsWith(\"~\")\n\t)\n\t\treturn true;\n\tif (trimmed.startsWith(\"/\")) return true;\n\treturn /^[A-Za-z]:[\\\\/]/.test(trimmed);\n}\n\n/**\n * Default file existence check\n */\nfunction defaultFileExists(filePath: string): boolean {\n\ttry {\n\t\treturn fs.existsSync(filePath);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Check if command is safe bin usage (no file args)\n */\nexport function isSafeBinUsage(params: {\n\targv: string[];\n\tresolution: CommandResolution | null;\n\tsafeBins: Set<string>;\n\tcwd?: string;\n\tfileExists?: (filePath: string) => boolean;\n}): boolean {\n\tif (params.safeBins.size === 0) return false;\n\n\tconst resolution = params.resolution;\n\tconst execName = resolution?.executableName?.toLowerCase();\n\tif (!execName) return false;\n\n\tconst matchesSafeBin =\n\t\tparams.safeBins.has(execName) ||\n\t\t(process.platform === \"win32\" &&\n\t\t\tparams.safeBins.has(path.parse(execName).name));\n\n\tif (!matchesSafeBin) return false;\n\tif (!resolution?.resolvedPath) return false;\n\n\tconst cwd = params.cwd ?? process.cwd();\n\tconst exists = params.fileExists ?? defaultFileExists;\n\tconst argv = params.argv.slice(1);\n\n\tfor (const token of argv) {\n\t\tif (!token || token === \"-\") continue;\n\n\t\tif (token.startsWith(\"-\")) {\n\t\t\tconst eqIndex = token.indexOf(\"=\");\n\t\t\tif (eqIndex > 0) {\n\t\t\t\tconst value = token.slice(eqIndex + 1);\n\t\t\t\tif (\n\t\t\t\t\tvalue &&\n\t\t\t\t\t(isPathLikeToken(value) || exists(path.resolve(cwd, value)))\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isPathLikeToken(token)) return false;\n\t\tif (exists(path.resolve(cwd, token))) return false;\n\t}\n\n\treturn true;\n}\n\n/**\n * Resolve allowlist candidate path\n */\nfunction resolveAllowlistCandidatePath(\n\tresolution: CommandResolution | null,\n\tcwd?: string,\n): string | undefined {\n\tif (!resolution) return undefined;\n\tif (resolution.resolvedPath) return resolution.resolvedPath;\n\n\tconst raw = resolution.rawExecutable?.trim();\n\tif (!raw) return undefined;\n\n\tconst expanded = raw.startsWith(\"~\") ? expandHome(raw) : raw;\n\tif (!expanded.includes(\"/\") && !expanded.includes(\"\\\\\")) return undefined;\n\n\tif (path.isAbsolute(expanded)) return expanded;\n\n\tconst base = cwd?.trim() || process.cwd();\n\treturn path.resolve(base, expanded);\n}\n\n/**\n * Evaluate segments against allowlist\n */\nfunction evaluateSegments(\n\tsegments: ExecCommandSegment[],\n\tparams: {\n\t\tallowlist: ExecAllowlistEntry[];\n\t\tsafeBins: Set<string>;\n\t\tcwd?: string;\n\t\tskillBins?: Set<string>;\n\t\tautoAllowSkills?: boolean;\n\t},\n): { satisfied: boolean; matches: ExecAllowlistEntry[] } {\n\tconst matches: ExecAllowlistEntry[] = [];\n\tconst allowSkills =\n\t\tparams.autoAllowSkills === true && (params.skillBins?.size ?? 0) > 0;\n\n\tconst satisfied = segments.every((segment) => {\n\t\tconst candidatePath = resolveAllowlistCandidatePath(\n\t\t\tsegment.resolution,\n\t\t\tparams.cwd,\n\t\t);\n\t\tconst candidateResolution =\n\t\t\tcandidatePath && segment.resolution\n\t\t\t\t? { ...segment.resolution, resolvedPath: candidatePath }\n\t\t\t\t: segment.resolution;\n\n\t\tconst match = matchAllowlist(params.allowlist, candidateResolution);\n\t\tif (match) matches.push(match);\n\n\t\tconst safe = isSafeBinUsage({\n\t\t\targv: segment.argv,\n\t\t\tresolution: segment.resolution,\n\t\t\tsafeBins: params.safeBins,\n\t\t\tcwd: params.cwd,\n\t\t});\n\n\t\tconst skillAllow =\n\t\t\tallowSkills && segment.resolution?.executableName\n\t\t\t\t? params.skillBins?.has(segment.resolution.executableName)\n\t\t\t\t: false;\n\n\t\treturn Boolean(match || safe || skillAllow);\n\t});\n\n\treturn { satisfied, matches };\n}\n\n/**\n * Evaluate command against allowlist\n */\nexport function evaluateExecAllowlist(params: {\n\tanalysis: ExecCommandAnalysis;\n\tallowlist: ExecAllowlistEntry[];\n\tsafeBins: Set<string>;\n\tcwd?: string;\n\tskillBins?: Set<string>;\n\tautoAllowSkills?: boolean;\n}): ExecAllowlistEvaluation {\n\tconst allowlistMatches: ExecAllowlistEntry[] = [];\n\n\tif (!params.analysis.ok || params.analysis.segments.length === 0) {\n\t\treturn { allowlistSatisfied: false, allowlistMatches };\n\t}\n\n\t// If analysis contains chains, evaluate each separately\n\tif (params.analysis.chains) {\n\t\tfor (const chainSegments of params.analysis.chains) {\n\t\t\tconst result = evaluateSegments(chainSegments, {\n\t\t\t\tallowlist: params.allowlist,\n\t\t\t\tsafeBins: params.safeBins,\n\t\t\t\tcwd: params.cwd,\n\t\t\t\tskillBins: params.skillBins,\n\t\t\t\tautoAllowSkills: params.autoAllowSkills,\n\t\t\t});\n\n\t\t\tif (!result.satisfied) {\n\t\t\t\treturn { allowlistSatisfied: false, allowlistMatches: [] };\n\t\t\t}\n\t\t\tallowlistMatches.push(...result.matches);\n\t\t}\n\t\treturn { allowlistSatisfied: true, allowlistMatches };\n\t}\n\n\t// No chains, evaluate all segments together\n\tconst result = evaluateSegments(params.analysis.segments, {\n\t\tallowlist: params.allowlist,\n\t\tsafeBins: params.safeBins,\n\t\tcwd: params.cwd,\n\t\tskillBins: params.skillBins,\n\t\tautoAllowSkills: params.autoAllowSkills,\n\t});\n\n\treturn {\n\t\tallowlistSatisfied: result.satisfied,\n\t\tallowlistMatches: result.matches,\n\t};\n}\n\n/**\n * Evaluate shell command for allowlist (combined analysis + evaluation)\n */\nexport function evaluateShellAllowlist(params: {\n\tcommand: string;\n\tallowlist: ExecAllowlistEntry[];\n\tsafeBins: Set<string>;\n\tcwd?: string;\n\tenv?: NodeJS.ProcessEnv;\n\tskillBins?: Set<string>;\n\tautoAllowSkills?: boolean;\n\tplatform?: string | null;\n}): ExecAllowlistAnalysis {\n\tconst chainParts = isWindowsPlatform(params.platform)\n\t\t? null\n\t\t: splitCommandChain(params.command);\n\n\tif (!chainParts) {\n\t\tconst analysis = analyzeShellCommand({\n\t\t\tcommand: params.command,\n\t\t\tcwd: params.cwd,\n\t\t\tenv: params.env,\n\t\t\tplatform: params.platform,\n\t\t});\n\n\t\tif (!analysis.ok) {\n\t\t\treturn {\n\t\t\t\tanalysisOk: false,\n\t\t\t\tallowlistSatisfied: false,\n\t\t\t\tallowlistMatches: [],\n\t\t\t\tsegments: [],\n\t\t\t};\n\t\t}\n\n\t\tconst evaluation = evaluateExecAllowlist({\n\t\t\tanalysis,\n\t\t\tallowlist: params.allowlist,\n\t\t\tsafeBins: params.safeBins,\n\t\t\tcwd: params.cwd,\n\t\t\tskillBins: params.skillBins,\n\t\t\tautoAllowSkills: params.autoAllowSkills,\n\t\t});\n\n\t\treturn {\n\t\t\tanalysisOk: true,\n\t\t\tallowlistSatisfied: evaluation.allowlistSatisfied,\n\t\t\tallowlistMatches: evaluation.allowlistMatches,\n\t\t\tsegments: analysis.segments,\n\t\t};\n\t}\n\n\tconst allowlistMatches: ExecAllowlistEntry[] = [];\n\tconst segments: ExecCommandSegment[] = [];\n\n\tfor (const part of chainParts) {\n\t\tconst analysis = analyzeShellCommand({\n\t\t\tcommand: part,\n\t\t\tcwd: params.cwd,\n\t\t\tenv: params.env,\n\t\t\tplatform: params.platform,\n\t\t});\n\n\t\tif (!analysis.ok) {\n\t\t\treturn {\n\t\t\t\tanalysisOk: false,\n\t\t\t\tallowlistSatisfied: false,\n\t\t\t\tallowlistMatches: [],\n\t\t\t\tsegments: [],\n\t\t\t};\n\t\t}\n\n\t\tsegments.push(...analysis.segments);\n\n\t\tconst evaluation = evaluateExecAllowlist({\n\t\t\tanalysis,\n\t\t\tallowlist: params.allowlist,\n\t\t\tsafeBins: params.safeBins,\n\t\t\tcwd: params.cwd,\n\t\t\tskillBins: params.skillBins,\n\t\t\tautoAllowSkills: params.autoAllowSkills,\n\t\t});\n\n\t\tallowlistMatches.push(...evaluation.allowlistMatches);\n\n\t\tif (!evaluation.allowlistSatisfied) {\n\t\t\treturn {\n\t\t\t\tanalysisOk: true,\n\t\t\t\tallowlistSatisfied: false,\n\t\t\t\tallowlistMatches,\n\t\t\t\tsegments,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn {\n\t\tanalysisOk: true,\n\t\tallowlistSatisfied: true,\n\t\tallowlistMatches,\n\t\tsegments,\n\t};\n}\n\n/**\n * Check if approval is required\n */\nexport function requiresExecApproval(params: {\n\task: \"off\" | \"on-miss\" | \"always\";\n\tsecurity: \"deny\" | \"allowlist\" | \"full\";\n\tanalysisOk: boolean;\n\tallowlistSatisfied: boolean;\n}): boolean {\n\treturn (\n\t\tparams.ask === \"always\" ||\n\t\t(params.ask === \"on-miss\" &&\n\t\t\tparams.security === \"allowlist\" &&\n\t\t\t(!params.analysisOk || !params.allowlistSatisfied))\n\t);\n}\n",
21
21
  "/**\n * ExecApprovalService\n *\n * Service for managing command execution approvals in plugin-shell.\n * Integrates with Eliza's ApprovalService for approval UI,\n * and provides allowlist management and command analysis.\n *\n * @example\n * ```typescript\n * const approvalService = runtime.getService('exec_approval') as ExecApprovalService;\n *\n * // Check if command needs approval\n * const check = await approvalService.checkCommand({\n * command: 'rm -rf /tmp/cache',\n * cwd: '/home/user',\n * roomId: message.roomId,\n * });\n *\n * if (check.requiresApproval) {\n * const result = await approvalService.requestApproval(check.request);\n * if (result.decision === 'deny') {\n * return { error: 'Command denied' };\n * }\n * if (result.decision === 'allow-always') {\n * await approvalService.addToAllowlist(command);\n * }\n * }\n * ```\n */\n\nimport type { IAgentRuntime, Task, UUID } from \"@elizaos/core\";\nimport { type ApprovalService, logger, Service } from \"@elizaos/core\";\n\n// Define our own approval options to avoid import issues\nconst EXEC_APPROVAL_OPTIONS: Array<{\n\tname: string;\n\tdescription: string;\n\tisCancel?: boolean;\n}> = [\n\t{ name: \"allow-once\", description: \"Allow this one time\" },\n\t{ name: \"allow-always\", description: \"Always allow this\" },\n\t{ name: \"deny\", description: \"Deny the request\", isCancel: true },\n];\n\nimport {\n\taddAllowlistEntry,\n\tloadApprovals,\n\trecordAllowlistUse,\n\tresolveApprovals,\n} from \"./allowlist\";\nimport {\n\tanalyzeShellCommand,\n\tevaluateShellAllowlist,\n\trequiresExecApproval,\n\tresolveSafeBins,\n} from \"./analysis\";\nimport type {\n\tExecAllowlistEntry,\n\tExecApprovalDecision,\n\tExecApprovalRequest,\n\tExecApprovalResult,\n\tExecApprovalsResolved,\n\tExecAsk,\n\tExecCommandAnalysis,\n\tExecSecurity,\n} from \"./types\";\nimport { EXEC_APPROVAL_DEFAULTS } from \"./types\";\n\n/**\n * Command check result\n */\nexport interface CommandCheckResult {\n\t/** Whether the command can be executed */\n\tallowed: boolean;\n\t/** Whether approval is required */\n\trequiresApproval: boolean;\n\t/** Reason for denial (if not allowed and no approval needed) */\n\treason?: string;\n\t/** Approval request (if approval required) */\n\trequest?: ExecApprovalRequest;\n\t/** Command analysis result */\n\tanalysis: ExecCommandAnalysis;\n\t/** Matching allowlist entries */\n\tallowlistMatches: ExecAllowlistEntry[];\n}\n\n/**\n * ExecApprovalService provides command execution approval management.\n */\nexport class ExecApprovalService extends Service {\n\tstatic serviceType = \"exec_approval\";\n\tcapabilityDescription =\n\t\t\"Manages command execution approvals with allowlist and user confirmation\";\n\n\tprivate approvalConfig: ExecApprovalsResolved | null = null;\n\tprivate safeBins: Set<string>;\n\tprivate skillBins: Set<string>;\n\n\tconstructor(runtime?: IAgentRuntime) {\n\t\tsuper(runtime);\n\t\tthis.safeBins = resolveSafeBins();\n\t\tthis.skillBins = new Set();\n\t}\n\n\t/**\n\t * Start the ExecApprovalService\n\t */\n\tstatic async start(runtime: IAgentRuntime): Promise<Service> {\n\t\tconst service = new ExecApprovalService(runtime);\n\n\t\t// Load config - handle errors gracefully to not crash startup\n\t\ttry {\n\t\t\tservice.approvalConfig = resolveApprovals(runtime.agentId);\n\t\t} catch (error) {\n\t\t\tlogger.error(\n\t\t\t\t{ src: \"service:exec_approval\", error, agentId: runtime.agentId },\n\t\t\t\t\"Failed to load approval config during startup - using in-memory defaults. \" +\n\t\t\t\t\t\"Approvals may not persist. Check file permissions for ~/.eliza/exec-approvals.json\",\n\t\t\t);\n\t\t\t// Use a minimal in-memory config so the service can still function\n\t\t\tservice.approvalConfig = {\n\t\t\t\tpath: \"\",\n\t\t\t\tsocketPath: \"\",\n\t\t\t\ttoken: \"\",\n\t\t\t\tdefaults: {\n\t\t\t\t\tsecurity: \"deny\",\n\t\t\t\t\task: \"on-miss\",\n\t\t\t\t\taskFallback: \"deny\",\n\t\t\t\t\tautoAllowSkills: false,\n\t\t\t\t},\n\t\t\t\tagent: {\n\t\t\t\t\tsecurity: \"deny\",\n\t\t\t\t\task: \"on-miss\",\n\t\t\t\t\taskFallback: \"deny\",\n\t\t\t\t\tautoAllowSkills: false,\n\t\t\t\t},\n\t\t\t\tallowlist: [],\n\t\t\t\tfile: { version: 1, agents: {} },\n\t\t\t};\n\t\t}\n\n\t\tlogger.info(\n\t\t\t{ src: \"service:exec_approval\", agentId: runtime.agentId },\n\t\t\t\"ExecApprovalService started\",\n\t\t);\n\t\treturn service;\n\t}\n\n\t/**\n\t * Stop the ExecApprovalService\n\t */\n\tasync stop(): Promise<void> {\n\t\tlogger.debug(\n\t\t\t{ src: \"service:exec_approval\" },\n\t\t\t\"ExecApprovalService stopped\",\n\t\t);\n\t}\n\n\t/**\n\t * Load/reload configuration\n\t */\n\tloadConfig(agentId?: string): ExecApprovalsResolved {\n\t\tthis.approvalConfig = resolveApprovals(agentId ?? this.runtime?.agentId);\n\t\treturn this.approvalConfig;\n\t}\n\n\t/**\n\t * Get current configuration\n\t */\n\tgetConfig(): ExecApprovalsResolved {\n\t\tif (!this.approvalConfig) {\n\t\t\tthis.approvalConfig = resolveApprovals(this.runtime?.agentId);\n\t\t}\n\t\treturn this.approvalConfig;\n\t}\n\n\t/**\n\t * Set safe binaries that don't need approval\n\t */\n\tsetSafeBins(bins: string[]): void {\n\t\tthis.safeBins = resolveSafeBins(bins);\n\t}\n\n\t/**\n\t * Set skill binaries that are auto-allowed\n\t */\n\tsetSkillBins(bins: string[]): void {\n\t\tthis.skillBins = new Set(bins.map((b) => b.toLowerCase()));\n\t}\n\n\t/**\n\t * Check if a command is allowed to execute\n\t */\n\tasync checkCommand(params: {\n\t\tcommand: string;\n\t\tcwd?: string;\n\t\troomId: UUID;\n\t\tenv?: NodeJS.ProcessEnv;\n\t\tagentId?: string;\n\t}): Promise<CommandCheckResult> {\n\t\tconst config = this.getConfig();\n\n\t\t// Analyze the command\n\t\tconst analysis = analyzeShellCommand({\n\t\t\tcommand: params.command,\n\t\t\tcwd: params.cwd,\n\t\t\tenv: params.env,\n\t\t});\n\n\t\tif (!analysis.ok) {\n\t\t\treturn {\n\t\t\t\tallowed: false,\n\t\t\t\trequiresApproval: false,\n\t\t\t\treason: analysis.reason ?? \"Command analysis failed\",\n\t\t\t\tanalysis,\n\t\t\t\tallowlistMatches: [],\n\t\t\t};\n\t\t}\n\n\t\t// Evaluate against allowlist\n\t\tconst evaluation = evaluateShellAllowlist({\n\t\t\tcommand: params.command,\n\t\t\tallowlist: config.allowlist,\n\t\t\tsafeBins: this.safeBins,\n\t\t\tcwd: params.cwd,\n\t\t\tenv: params.env,\n\t\t\tskillBins: this.skillBins,\n\t\t\tautoAllowSkills: config.agent.autoAllowSkills,\n\t\t});\n\n\t\t// Check security mode\n\t\tconst security = config.agent.security;\n\t\tconst ask = config.agent.ask;\n\n\t\t// Full security mode - always allow\n\t\tif (security === \"full\") {\n\t\t\treturn {\n\t\t\t\tallowed: true,\n\t\t\t\trequiresApproval: false,\n\t\t\t\tanalysis,\n\t\t\t\tallowlistMatches: evaluation.allowlistMatches,\n\t\t\t};\n\t\t}\n\n\t\t// Deny mode - always deny unless explicitly allowed\n\t\tif (security === \"deny\") {\n\t\t\treturn {\n\t\t\t\tallowed: false,\n\t\t\t\trequiresApproval: false,\n\t\t\t\treason: \"Command execution is disabled\",\n\t\t\t\tanalysis,\n\t\t\t\tallowlistMatches: [],\n\t\t\t};\n\t\t}\n\n\t\t// Allowlist mode - check if command is in allowlist\n\t\tif (evaluation.allowlistSatisfied) {\n\t\t\t// Record usage (best-effort, don't fail command if recording fails)\n\t\t\tlet recordingFailed = false;\n\t\t\tfor (const match of evaluation.allowlistMatches) {\n\t\t\t\tconst approvals = loadApprovals();\n\t\t\t\tconst recorded = recordAllowlistUse(\n\t\t\t\t\tapprovals,\n\t\t\t\t\tparams.agentId ?? this.runtime?.agentId,\n\t\t\t\t\tmatch,\n\t\t\t\t\tparams.command,\n\t\t\t\t\tanalysis.segments[0]?.resolution?.resolvedPath,\n\t\t\t\t);\n\t\t\t\tif (!recorded) {\n\t\t\t\t\trecordingFailed = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (recordingFailed) {\n\t\t\t\tlogger.debug(\n\t\t\t\t\t{ src: \"service:exec_approval\", command: params.command },\n\t\t\t\t\t\"Some allowlist usage records failed to save - command will still proceed\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tallowed: true,\n\t\t\t\trequiresApproval: false,\n\t\t\t\tanalysis,\n\t\t\t\tallowlistMatches: evaluation.allowlistMatches,\n\t\t\t};\n\t\t}\n\n\t\t// Check if we need to ask for approval\n\t\tconst needsApproval = requiresExecApproval({\n\t\t\task,\n\t\t\tsecurity,\n\t\t\tanalysisOk: analysis.ok,\n\t\t\tallowlistSatisfied: evaluation.allowlistSatisfied,\n\t\t});\n\n\t\tif (!needsApproval) {\n\t\t\t// No approval configured, deny based on fallback\n\t\t\tconst fallback = config.agent.askFallback;\n\t\t\tif (fallback === \"deny\") {\n\t\t\t\treturn {\n\t\t\t\t\tallowed: false,\n\t\t\t\t\trequiresApproval: false,\n\t\t\t\t\treason: \"Command not in allowlist\",\n\t\t\t\t\tanalysis,\n\t\t\t\t\tallowlistMatches: [],\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Fallback is 'full' - allow\n\t\t\treturn {\n\t\t\t\tallowed: true,\n\t\t\t\trequiresApproval: false,\n\t\t\t\tanalysis,\n\t\t\t\tallowlistMatches: [],\n\t\t\t};\n\t\t}\n\n\t\t// Build approval request\n\t\tconst requestId = crypto.randomUUID();\n\t\tconst request: ExecApprovalRequest = {\n\t\t\tid: requestId,\n\t\t\tcommand: params.command,\n\t\t\tcwd: params.cwd,\n\t\t\tsecurity,\n\t\t\task,\n\t\t\tagentId: params.agentId ?? this.runtime?.agentId,\n\t\t\tresolvedPath: analysis.segments[0]?.resolution?.resolvedPath,\n\t\t\troomId: params.roomId,\n\t\t\ttimeoutMs: EXEC_APPROVAL_DEFAULTS.timeoutMs,\n\t\t};\n\n\t\treturn {\n\t\t\tallowed: false,\n\t\t\trequiresApproval: true,\n\t\t\trequest,\n\t\t\tanalysis,\n\t\t\tallowlistMatches: [],\n\t\t};\n\t}\n\n\t/**\n\t * Request approval for a command\n\t */\n\tasync requestApproval(\n\t\trequest: ExecApprovalRequest,\n\t): Promise<ExecApprovalResult> {\n\t\tconst approvalService = this.runtime?.getService(\n\t\t\t\"approval\",\n\t\t) as ApprovalService | null;\n\n\t\tif (!approvalService) {\n\t\t\tlogger.warn(\n\t\t\t\t{ src: \"service:exec_approval\" },\n\t\t\t\t\"ApprovalService not available, denying by default\",\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tdecision: \"deny\",\n\t\t\t\ttimedOut: false,\n\t\t\t};\n\t\t}\n\n\t\t// Build description\n\t\tconst descriptionLines = [\n\t\t\t\"**Exec Approval Required**\",\n\t\t\t\"\",\n\t\t\t`Command: \\`${request.command}\\``,\n\t\t];\n\n\t\tif (request.cwd) {\n\t\t\tdescriptionLines.push(`CWD: \\`${request.cwd}\\``);\n\t\t}\n\t\tif (request.resolvedPath) {\n\t\t\tdescriptionLines.push(`Executable: \\`${request.resolvedPath}\\``);\n\t\t}\n\n\t\tconst description = descriptionLines.join(\"\\n\");\n\n\t\t// Request approval via Eliza's task system\n\t\tconst result = await approvalService.requestApproval({\n\t\t\tname: \"EXEC_APPROVAL\",\n\t\t\tdescription,\n\t\t\troomId: request.roomId,\n\t\t\toptions: EXEC_APPROVAL_OPTIONS,\n\t\t\ttimeoutMs: request.timeoutMs ?? EXEC_APPROVAL_DEFAULTS.timeoutMs,\n\t\t\ttimeoutDefault: \"deny\",\n\t\t\ttags: [\"EXEC\", request.id],\n\t\t\tmetadata: {\n\t\t\t\texecRequest: {\n\t\t\t\t\tid: request.id,\n\t\t\t\t\tcommand: request.command,\n\t\t\t\t\tcwd: request.cwd,\n\t\t\t\t\tsecurity: request.security,\n\t\t\t\t\task: request.ask,\n\t\t\t\t\tagentId: request.agentId,\n\t\t\t\t\tresolvedPath: request.resolvedPath,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\tconst decision = mapOptionToDecision(result.selectedOption);\n\n\t\t// If allow-always, add to allowlist\n\t\tif (decision === \"allow-always\" && request.resolvedPath) {\n\t\t\tawait this.addToAllowlist(request.resolvedPath, request.agentId);\n\t\t}\n\n\t\treturn {\n\t\t\tdecision,\n\t\t\ttimedOut: result.timedOut,\n\t\t\tresolvedBy: result.resolvedBy,\n\t\t};\n\t}\n\n\t/**\n\t * Request approval asynchronously (fire and forget with callbacks)\n\t */\n\tasync requestApprovalAsync(\n\t\trequest: ExecApprovalRequest,\n\t\tcallbacks?: {\n\t\t\tonApproved?: (decision: ExecApprovalDecision) => Promise<void>;\n\t\t\tonDenied?: () => Promise<void>;\n\t\t\tonTimeout?: () => Promise<void>;\n\t\t},\n\t): Promise<UUID> {\n\t\tconst approvalService = this.runtime?.getService(\n\t\t\t\"approval\",\n\t\t) as ApprovalService | null;\n\n\t\tif (!approvalService) {\n\t\t\tlogger.warn(\n\t\t\t\t{ src: \"service:exec_approval\" },\n\t\t\t\t\"ApprovalService not available\",\n\t\t\t);\n\t\t\tif (callbacks?.onDenied) {\n\t\t\t\tawait callbacks.onDenied();\n\t\t\t}\n\t\t\tthrow new Error(\"ApprovalService not available\");\n\t\t}\n\n\t\tconst descriptionLines = [\n\t\t\t\"**Exec Approval Required**\",\n\t\t\t\"\",\n\t\t\t`Command: \\`${request.command}\\``,\n\t\t];\n\n\t\tif (request.cwd) {\n\t\t\tdescriptionLines.push(`CWD: \\`${request.cwd}\\``);\n\t\t}\n\n\t\tconst taskId = await approvalService.requestApprovalAsync({\n\t\t\tname: \"EXEC_APPROVAL\",\n\t\t\tdescription: descriptionLines.join(\"\\n\"),\n\t\t\troomId: request.roomId,\n\t\t\toptions: EXEC_APPROVAL_OPTIONS,\n\t\t\ttimeoutMs: request.timeoutMs ?? EXEC_APPROVAL_DEFAULTS.timeoutMs,\n\t\t\ttimeoutDefault: \"deny\",\n\t\t\ttags: [\"EXEC\", request.id],\n\t\t\tmetadata: {\n\t\t\t\texecRequest: {\n\t\t\t\t\tid: request.id,\n\t\t\t\t\tcommand: request.command,\n\t\t\t\t\tcwd: request.cwd,\n\t\t\t\t\tsecurity: request.security,\n\t\t\t\t\task: request.ask,\n\t\t\t\t\tagentId: request.agentId,\n\t\t\t\t\tresolvedPath: request.resolvedPath,\n\t\t\t\t},\n\t\t\t},\n\t\t\tonSelect: async (option: string, _task: Task, _rt: IAgentRuntime) => {\n\t\t\t\tconst decision = mapOptionToDecision(option);\n\n\t\t\t\t// If allow-always, add to allowlist\n\t\t\t\tif (decision === \"allow-always\" && request.resolvedPath) {\n\t\t\t\t\tawait this.addToAllowlist(request.resolvedPath, request.agentId);\n\t\t\t\t}\n\n\t\t\t\tif (decision === \"allow-once\" || decision === \"allow-always\") {\n\t\t\t\t\tif (callbacks?.onApproved) {\n\t\t\t\t\t\tawait callbacks.onApproved(decision);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (callbacks?.onDenied) {\n\t\t\t\t\t\tawait callbacks.onDenied();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tonTimeout: async (_task: Task, _rt: IAgentRuntime) => {\n\t\t\t\tif (callbacks?.onTimeout) {\n\t\t\t\t\tawait callbacks.onTimeout();\n\t\t\t\t} else if (callbacks?.onDenied) {\n\t\t\t\t\tawait callbacks.onDenied();\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\n\t\treturn taskId;\n\t}\n\n\t/**\n\t * Add a pattern to the allowlist\n\t * @returns true if pattern was added successfully\n\t */\n\tasync addToAllowlist(pattern: string, agentId?: string): Promise<boolean> {\n\t\tconst approvals = loadApprovals();\n\t\tconst added = addAllowlistEntry(\n\t\t\tapprovals,\n\t\t\tagentId ?? this.runtime?.agentId,\n\t\t\tpattern,\n\t\t);\n\t\tif (added) {\n\t\t\t// Reload config to pick up the new entry\n\t\t\tthis.approvalConfig = null;\n\t\t}\n\t\treturn added;\n\t}\n\n\t/**\n\t * Cancel a pending approval\n\t */\n\tasync cancelApproval(taskId: UUID): Promise<void> {\n\t\tconst approvalService = this.runtime?.getService(\n\t\t\t\"approval\",\n\t\t) as ApprovalService | null;\n\n\t\tif (approvalService) {\n\t\t\tawait approvalService.cancelApproval(taskId);\n\t\t}\n\t}\n\n\t/**\n\t * Get all pending exec approvals for a room\n\t */\n\tasync getPendingApprovals(roomId: UUID): Promise<ExecApprovalRequest[]> {\n\t\tif (!this.runtime) {\n\t\t\tlogger.warn(\n\t\t\t\t{ src: \"service:exec_approval\" },\n\t\t\t\t\"Cannot get pending approvals - runtime not available\",\n\t\t\t);\n\t\t\treturn [];\n\t\t}\n\n\t\ttry {\n\t\t\tconst tasks = await this.runtime.getTasks({\n\t\t\t\troomId,\n\t\t\t\ttags: [\"AWAITING_CHOICE\", \"EXEC\"],\n\t\t\t});\n\n\t\t\tif (!tasks) return [];\n\n\t\t\treturn tasks\n\t\t\t\t.filter((t) => t.metadata?.execRequest)\n\t\t\t\t.map((t) => {\n\t\t\t\t\tconst execRequest = t.metadata?.execRequest as Record<\n\t\t\t\t\t\tstring,\n\t\t\t\t\t\tunknown\n\t\t\t\t\t>;\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: execRequest.id as string,\n\t\t\t\t\t\tcommand: execRequest.command as string,\n\t\t\t\t\t\tcwd: execRequest.cwd as string | undefined,\n\t\t\t\t\t\tsecurity: execRequest.security as ExecSecurity | undefined,\n\t\t\t\t\t\task: execRequest.ask as ExecAsk | undefined,\n\t\t\t\t\t\tagentId: execRequest.agentId as string | undefined,\n\t\t\t\t\t\tresolvedPath: execRequest.resolvedPath as string | undefined,\n\t\t\t\t\t\troomId,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t} catch (error) {\n\t\t\tlogger.error(\n\t\t\t\t{ src: \"service:exec_approval\", error, roomId },\n\t\t\t\t\"Failed to get pending approvals\",\n\t\t\t);\n\t\t\treturn [];\n\t\t}\n\t}\n}\n\n/**\n * Map approval option to exec decision\n */\nfunction mapOptionToDecision(option: string): ExecApprovalDecision {\n\tswitch (option) {\n\t\tcase \"allow-once\":\n\t\t\treturn \"allow-once\";\n\t\tcase \"allow-always\":\n\t\t\treturn \"allow-always\";\n\t\tdefault:\n\t\t\treturn \"deny\";\n\t}\n}\n\nexport default ExecApprovalService;\n",
22
22
  "import {\n\taddHeader,\n\ttype IAgentRuntime,\n\tlogger,\n\ttype Memory,\n\ttype Provider,\n\ttype State,\n} from \"@elizaos/core\";\nimport { requireProviderSpec } from \"../generated/specs/spec-helpers\";\nimport type { ShellService } from \"../services/shellService\";\nimport type { CommandHistoryEntry, FileOperation } from \"../types\";\n\nconst MAX_OUTPUT_LENGTH = 8000;\nconst TRUNCATE_SEGMENT_LENGTH = 4000;\n\nconst spec = requireProviderSpec(\"SHELL_HISTORY\");\n\nexport const shellHistoryProvider: Provider = {\n\tname: spec.name,\n\tdescription:\n\t\t\"Provides recent shell command history, current working directory, and file operations within the restricted environment\",\n\tposition: 99,\n\t\tdynamic: true,\nget: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n\nconst shellService = runtime.getService<ShellService>(\"shell\");\n\n\t\tif (!shellService) {\n\t\t\tlogger.warn(\"[shellHistoryProvider] Shell service not found\");\n\t\t\treturn {\n\t\t\t\tvalues: {\n\t\t\t\t\tshellHistory: \"Shell service is not available\",\n\t\t\t\t\tcurrentWorkingDirectory: \"N/A\",\n\t\t\t\t\tallowedDirectory: \"N/A\",\n\t\t\t\t},\n\t\t\t\ttext: addHeader(\"# Shell Status\", \"Shell service is not available\"),\n\t\t\t\tdata: { historyCount: 0, cwd: \"N/A\", allowedDir: \"N/A\" },\n\t\t\t};\n\t\t}\n\n\t\tconst conversationId = message.roomId || message.agentId;\n\t\tif (!conversationId) {\n\t\t\treturn {\n\t\t\t\ttext: \"No conversation ID available\",\n\t\t\t\tvalues: { historyCount: 0, cwd: \"N/A\", allowedDir: \"N/A\" },\n\t\t\t\tdata: { historyCount: 0, cwd: \"N/A\", allowedDir: \"N/A\" },\n\t\t\t};\n\t\t}\n\t\tconst history = shellService.getCommandHistory(conversationId, 10);\n\t\tconst cwd = shellService.getCurrentDirectory(conversationId);\n\t\tconst allowedDir = shellService.getAllowedDirectory();\n\n\t\tlet historyText = \"No commands in history.\";\n\t\tif (history.length > 0) {\n\t\t\thistoryText = history\n\t\t\t\t.map((entry: CommandHistoryEntry) => {\n\t\t\t\t\tlet entryStr = `[${new Date(entry.timestamp).toISOString()}] ${entry.workingDirectory}> ${entry.command}`;\n\n\t\t\t\t\tif (entry.stdout) {\n\t\t\t\t\t\tif (entry.stdout.length > MAX_OUTPUT_LENGTH) {\n\t\t\t\t\t\t\tentryStr += `\\n Output: ${entry.stdout.substring(0, TRUNCATE_SEGMENT_LENGTH)}\\n ... [TRUNCATED] ...\\n ${entry.stdout.substring(entry.stdout.length - TRUNCATE_SEGMENT_LENGTH)}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tentryStr += `\\n Output: ${entry.stdout}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (entry.stderr) {\n\t\t\t\t\t\tif (entry.stderr.length > MAX_OUTPUT_LENGTH) {\n\t\t\t\t\t\t\tentryStr += `\\n Error: ${entry.stderr.substring(0, TRUNCATE_SEGMENT_LENGTH)}\\n ... [TRUNCATED] ...\\n ${entry.stderr.substring(entry.stderr.length - TRUNCATE_SEGMENT_LENGTH)}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tentryStr += `\\n Error: ${entry.stderr}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tentryStr += `\\n Exit Code: ${entry.exitCode}`;\n\n\t\t\t\t\tif (entry.fileOperations && entry.fileOperations.length > 0) {\n\t\t\t\t\t\tentryStr += \"\\n File Operations:\";\n\t\t\t\t\t\tentry.fileOperations.forEach((op: FileOperation) => {\n\t\t\t\t\t\t\tif (op.secondaryTarget) {\n\t\t\t\t\t\t\t\tentryStr += `\\n - ${op.type}: ${op.target} → ${op.secondaryTarget}`;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tentryStr += `\\n - ${op.type}: ${op.target}`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn entryStr;\n\t\t\t\t})\n\t\t\t\t.join(\"\\n\\n\");\n\t\t}\n\n\t\tconst recentFileOps = history\n\t\t\t.filter(\n\t\t\t\t(entry: CommandHistoryEntry) =>\n\t\t\t\t\tentry.fileOperations && entry.fileOperations.length > 0,\n\t\t\t)\n\t\t\t.flatMap((entry: CommandHistoryEntry) => entry.fileOperations ?? [])\n\t\t\t.slice(-5);\n\n\t\tlet fileOpsText = \"\";\n\t\tif (recentFileOps.length > 0) {\n\t\t\tfileOpsText =\n\t\t\t\t\"\\n\\n\" +\n\t\t\t\taddHeader(\n\t\t\t\t\t\"# Recent File Operations\",\n\t\t\t\t\trecentFileOps\n\t\t\t\t\t\t.map((op: FileOperation) => {\n\t\t\t\t\t\t\tif (op.secondaryTarget) {\n\t\t\t\t\t\t\t\treturn `- ${op.type}: ${op.target} → ${op.secondaryTarget}`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn `- ${op.type}: ${op.target}`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(\"\\n\"),\n\t\t\t\t);\n\t\t}\n\n\t\tconst text = `Current Directory: ${cwd}\nAllowed Directory: ${allowedDir}\n\n${addHeader(\"# Shell History (Last 10)\", historyText)}${fileOpsText}`;\n\n\t\treturn {\n\t\t\tvalues: {\n\t\t\t\tshellHistory: historyText,\n\t\t\t\tcurrentWorkingDirectory: cwd,\n\t\t\t\tallowedDirectory: allowedDir,\n\t\t\t},\n\t\t\ttext,\n\t\t\tdata: {\n\t\t\t\thistoryCount: history.length,\n\t\t\t\tcwd,\n\t\t\t\tallowedDir,\n\t\t\t},\n\t\t};\n\t},\n};\n\nexport default shellHistoryProvider;\n",
23
- "import {\n type IAgentRuntime,\n type Memory,\n type Provider,\n type ProviderResult,\n type State,\n} from \"@elizaos/core\";\nimport { validateActionKeywords, validateActionRegex } from \"@elizaos/core\";\n\nexport const terminalUsageProvider: Provider = {\n name: \"terminalUsage\",\n description: \"Terminal usage instructions\",\n dynamic: true,\n relevanceKeywords: [\n \"terminalusage\",\n \"terminalusageprovider\",\n \"plugin\",\n \"shell\",\n \"status\",\n \"state\",\n \"context\",\n \"info\",\n \"details\",\n \"chat\",\n \"conversation\",\n \"agent\",\n \"room\",\n \"channel\",\n ],\n get: async (\n _runtime: IAgentRuntime,\n _message: Memory,\n _state: State,\n ): Promise<ProviderResult> => {\n const __providerKeywords = [\"terminalusage\", \"terminalusageprovider\", \"plugin\", \"shell\", \"status\", \"state\", \"context\", \"info\", \"details\", \"chat\", \"conversation\", \"agent\", \"room\", \"channel\"];\n const __providerRegex = new RegExp(`\\\\b(${__providerKeywords.join(\"|\")})\\\\b`, \"i\");\n const __recentMessages = (_state?.recentMessagesData || []) as Memory[];\n const __isRelevant =\n validateActionKeywords(_message, __recentMessages, __providerKeywords) ||\n validateActionRegex(_message, __recentMessages, __providerRegex);\n if (!__isRelevant) {\n return { text: \"\" };\n }\n\n\n // Skip terminal docs for agents that don't need shell access.\n // Set character.settings.DISABLE_TERMINAL = true to save ~100 tokens.\n const settings = _runtime.character?.settings;\n if (settings?.DISABLE_TERMINAL) {\n return { text: \"\" };\n }\n\n return {\n text: [\n \"## Terminal\",\n \"\",\n \"You can run shell commands in the user's embedded terminal using the RUN_IN_TERMINAL action.\",\n \"Use this when the user asks you to run a command, execute a script, install packages, etc.\",\n \"The terminal auto-opens and shows the command output in real time.\",\n ].join(\"\\n\"),\n };\n },\n};\n",
23
+ "import {\n type IAgentRuntime,\n type Memory,\n type Provider,\n type ProviderResult,\n type State\n} from \"@elizaos/core\";\nexport const terminalUsageProvider: Provider = {\n name: \"terminalUsage\",\n description: \"Terminal usage instructions\",\n dynamic: true,\n get: async (\n _runtime: IAgentRuntime,\n _message: Memory,\n _state: State,\n ): Promise<ProviderResult> => {\n// Skip terminal docs for agents that don't need shell access.\n // Set character.settings.DISABLE_TERMINAL = true to save ~100 tokens.\n const settings = _runtime.character?.settings;\n if (settings?.DISABLE_TERMINAL) {\n return { text: \"\" };\n }\n\n return {\n text: [\n \"## Terminal\",\n \"\",\n \"You can run shell commands in the user's embedded terminal using the RUN_IN_TERMINAL action.\",\n \"Use this when the user asks you to run a command, execute a script, install packages, etc.\",\n \"The terminal auto-opens and shows the command output in real time.\",\n ].join(\"\\n\"),\n };\n },\n};\n",
24
24
  "/**\n * Enhanced Shell Service with PTY, background execution, and session management\n * Migrated from otto bash-tools.exec.ts, bash-tools.process.ts\n */\n\nimport type { ChildProcessWithoutNullStreams } from \"node:child_process\";\nimport path from \"node:path\";\nimport { type IAgentRuntime, logger, Service } from \"@elizaos/core\";\nimport spawn from \"cross-spawn\";\nimport type {\n\tCommandHistoryEntry,\n\tCommandResult,\n\tExecResult,\n\tExecuteOptions,\n\tFileOperation,\n\tFileOperationType,\n\tFinishedSession,\n\tProcessActionParams,\n\tProcessSession,\n\tPtyHandle,\n\tPtySpawn,\n\tShellConfig,\n} from \"../types\";\nimport {\n\tisForbiddenCommand,\n\tisSafeCommand,\n\tloadShellConfig,\n\tvalidatePath,\n} from \"../utils\";\nimport {\n\tbuildCursorPositionResponse,\n\tencodeKeySequence,\n\tencodePaste,\n\tstripDsrRequests,\n} from \"../utils/ptyKeys\";\nimport {\n\tchunkString,\n\tclampNumber,\n\tcoerceEnv,\n\tderiveSessionName,\n\tformatDuration,\n\tgetShellConfig,\n\tkillSession,\n\tpad,\n\treadEnvInt,\n\tresolveWorkdir,\n\tsanitizeBinaryOutput,\n\tsliceLogLines,\n\ttruncateMiddle,\n} from \"../utils/shellUtils\";\nimport {\n\taddSession,\n\tappendOutput,\n\tcreateSessionSlug,\n\tdeleteSession,\n\tdrainSession,\n\tgetFinishedSession,\n\tgetSession,\n\tlistFinishedSessions,\n\tlistRunningSessions,\n\tmarkBackgrounded,\n\tmarkExited,\n} from \"./processRegistry\";\n\nconst DEFAULT_MAX_OUTPUT = clampNumber(\n\treadEnvInt(\"SHELL_MAX_OUTPUT_CHARS\"),\n\t200_000,\n\t1_000,\n\t200_000,\n);\nconst DEFAULT_PENDING_MAX_OUTPUT = clampNumber(\n\treadEnvInt(\"SHELL_PENDING_MAX_OUTPUT_CHARS\"),\n\t200_000,\n\t1_000,\n\t200_000,\n);\nconst DEFAULT_BACKGROUND_MS = clampNumber(\n\treadEnvInt(\"SHELL_BACKGROUND_MS\"),\n\t10_000,\n\t10,\n\t120_000,\n);\nconst DEFAULT_TIMEOUT_SEC = 1800; // 30 minutes\n\nexport class ShellService extends Service {\n\tpublic static serviceType = \"shell\";\n\tprivate shellConfig: ShellConfig;\n\tprivate currentDirectory: string;\n\tprivate commandHistory: Map<string, CommandHistoryEntry[]>;\n\tprivate maxHistoryPerConversation = 100;\n\tprivate scopeKey?: string;\n\n\tconstructor(runtime: IAgentRuntime) {\n\t\tsuper(runtime);\n\t\tthis.shellConfig = loadShellConfig();\n\t\tthis.currentDirectory = this.shellConfig.allowedDirectory;\n\t\tthis.commandHistory = new Map();\n\t}\n\n\tstatic async start(runtime: IAgentRuntime): Promise<ShellService> {\n\t\tconst instance = new ShellService(runtime);\n\t\tlogger.info(\n\t\t\t\"Shell service initialized with PTY, background execution, and history tracking\",\n\t\t);\n\t\treturn instance;\n\t}\n\n\tasync stop(): Promise<void> {\n\t\t// Clean up all running sessions by killing their processes\n\t\tconst runningSessions = listRunningSessions();\n\t\tfor (const session of runningSessions) {\n\t\t\ttry {\n\t\t\t\tkillSession(session);\n\t\t\t\tlogger.debug(`Killed shell session: ${session.id}`);\n\t\t\t} catch (err) {\n\t\t\t\tlogger.warn(`Failed to kill shell session ${session.id}: ${err}`);\n\t\t\t}\n\t\t}\n\n\t\t// Clear command history\n\t\tthis.commandHistory.clear();\n\n\t\tlogger.info(\n\t\t\t`Shell service stopped, cleaned up ${runningSessions.length} running sessions`,\n\t\t);\n\t}\n\n\tget capabilityDescription(): string {\n\t\treturn \"Execute shell commands with PTY support, background execution, and session management\";\n\t}\n\n\t/**\n\t * Set scope key for session isolation\n\t */\n\tsetScopeKey(scopeKey: string): void {\n\t\tthis.scopeKey = scopeKey;\n\t}\n\n\t/**\n\t * Simple command execution (original API for backward compatibility)\n\t */\n\tasync executeCommand(\n\t\tcommand: string,\n\t\tconversationId?: string,\n\t): Promise<CommandResult> {\n\t\tif (!command || typeof command !== \"string\") {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\tstdout: \"\",\n\t\t\t\tstderr: \"Invalid command\",\n\t\t\t\texitCode: 1,\n\t\t\t\terror: \"Command must be a non-empty string\",\n\t\t\t\texecutedIn: this.currentDirectory,\n\t\t\t};\n\t\t}\n\n\t\t// Sandbox remote mode: route to host capability API\n\t\tif (\n\t\t\tthis.runtime &&\n\t\t\t(this.runtime as unknown as Record<string, unknown>).sandboxMode\n\t\t) {\n\t\t\tconst hostApiUrl =\n\t\t\t\t(this.runtime.getSetting(\"SANDBOX_HOST_API_URL\") as string | null) ??\n\t\t\t\t\"http://localhost:2138\";\n\t\t\tconst runtimeFetch = this.runtime.fetch ?? globalThis.fetch;\n\t\t\tlogger.info(\n\t\t\t\t`[shell:sandbox] routing exec to ${hostApiUrl}: ${command.substring(0, 100)}`,\n\t\t\t);\n\t\t\ttry {\n\t\t\t\tconst response = await runtimeFetch(`${hostApiUrl}/api/sandbox/exec`, {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\t\tcommand,\n\t\t\t\t\t\tworkdir: this.currentDirectory,\n\t\t\t\t\t\ttimeoutMs: 30000,\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t\tconst result = (await response.json()) as {\n\t\t\t\t\texitCode: number;\n\t\t\t\t\tstdout: string;\n\t\t\t\t\tstderr: string;\n\t\t\t\t\tdurationMs: number;\n\t\t\t\t\texecutedInSandbox: boolean;\n\t\t\t\t};\n\t\t\t\tlogger.info(\n\t\t\t\t\t`[shell:sandbox] exec completed: exit=${result.exitCode} duration=${result.durationMs}ms`,\n\t\t\t\t);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: result.exitCode === 0,\n\t\t\t\t\tstdout: result.stdout,\n\t\t\t\t\tstderr: result.stderr,\n\t\t\t\t\texitCode: result.exitCode,\n\t\t\t\t\texecutedIn: this.currentDirectory,\n\t\t\t\t};\n\t\t\t} catch (err) {\n\t\t\t\tconst errMsg = err instanceof Error ? err.message : String(err);\n\t\t\t\tlogger.error(`[shell:sandbox] exec failed: ${errMsg}`);\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\tstdout: \"\",\n\t\t\t\t\tstderr: `Sandbox exec failed: ${errMsg}`,\n\t\t\t\t\texitCode: 1,\n\t\t\t\t\terror: \"Sandbox remote execution failed\",\n\t\t\t\t\texecutedIn: this.currentDirectory,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tconst trimmedCommand = command.trim();\n\n\t\tif (!isSafeCommand(trimmedCommand)) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\tstdout: \"\",\n\t\t\t\tstderr: \"Command contains forbidden patterns\",\n\t\t\t\texitCode: 1,\n\t\t\t\terror: \"Security policy violation\",\n\t\t\t\texecutedIn: this.currentDirectory,\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tisForbiddenCommand(trimmedCommand, this.shellConfig.forbiddenCommands)\n\t\t) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\tstdout: \"\",\n\t\t\t\tstderr: \"Command is forbidden by security policy\",\n\t\t\t\texitCode: 1,\n\t\t\t\terror: \"Forbidden command\",\n\t\t\t\texecutedIn: this.currentDirectory,\n\t\t\t};\n\t\t}\n\n\t\tif (trimmedCommand.startsWith(\"cd \")) {\n\t\t\tconst result = await this.handleCdCommand(trimmedCommand);\n\t\t\tthis.addToHistory(conversationId, trimmedCommand, result);\n\t\t\treturn result;\n\t\t}\n\n\t\tconst result = await this.runCommandSimple(trimmedCommand);\n\n\t\tif (result.success) {\n\t\t\tconst fileOps = this.detectFileOperations(\n\t\t\t\ttrimmedCommand,\n\t\t\t\tthis.currentDirectory,\n\t\t\t);\n\t\t\tif (fileOps && conversationId) {\n\t\t\t\tthis.addToHistory(conversationId, trimmedCommand, result, fileOps);\n\t\t\t} else {\n\t\t\t\tthis.addToHistory(conversationId, trimmedCommand, result);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.addToHistory(conversationId, trimmedCommand, result);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Enhanced command execution with PTY, background support, and session management\n\t * This is the main execution method that supports all advanced features\n\t */\n\tasync exec(\n\t\tcommand: string,\n\t\toptions: ExecuteOptions = {},\n\t): Promise<ExecResult> {\n\t\tif (!command || typeof command !== \"string\") {\n\t\t\treturn {\n\t\t\t\tstatus: \"failed\",\n\t\t\t\texitCode: 1,\n\t\t\t\tdurationMs: 0,\n\t\t\t\taggregated: \"Invalid command\",\n\t\t\t\treason: \"Command must be a non-empty string\",\n\t\t\t};\n\t\t}\n\n\t\tconst trimmedCommand = command.trim();\n\n\t\tif (!isSafeCommand(trimmedCommand)) {\n\t\t\treturn {\n\t\t\t\tstatus: \"failed\",\n\t\t\t\texitCode: 1,\n\t\t\t\tdurationMs: 0,\n\t\t\t\taggregated: \"Command contains forbidden patterns\",\n\t\t\t\treason: \"Security policy violation\",\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tisForbiddenCommand(trimmedCommand, this.shellConfig.forbiddenCommands)\n\t\t) {\n\t\t\treturn {\n\t\t\t\tstatus: \"failed\",\n\t\t\t\texitCode: 1,\n\t\t\t\tdurationMs: 0,\n\t\t\t\taggregated: \"Command is forbidden by security policy\",\n\t\t\t\treason: \"Forbidden command\",\n\t\t\t};\n\t\t}\n\n\t\tconst warnings: string[] = [];\n\t\tconst maxOutput = this.shellConfig.maxOutputChars ?? DEFAULT_MAX_OUTPUT;\n\t\tconst pendingMaxOutput =\n\t\t\tthis.shellConfig.pendingMaxOutputChars ?? DEFAULT_PENDING_MAX_OUTPUT;\n\t\tconst defaultBackgroundMs =\n\t\t\tthis.shellConfig.defaultBackgroundMs ?? DEFAULT_BACKGROUND_MS;\n\t\tconst allowBackground = this.shellConfig.allowBackground ?? true;\n\n\t\t// Resolve background/yield settings\n\t\tconst backgroundRequested = options.background === true;\n\t\tconst yieldRequested = typeof options.yieldMs === \"number\";\n\t\tif (!allowBackground && (backgroundRequested || yieldRequested)) {\n\t\t\twarnings.push(\n\t\t\t\t\"Warning: background execution is disabled; running synchronously.\",\n\t\t\t);\n\t\t}\n\t\tconst yieldWindow = allowBackground\n\t\t\t? backgroundRequested\n\t\t\t\t? 0\n\t\t\t\t: clampNumber(\n\t\t\t\t\t\toptions.yieldMs ?? defaultBackgroundMs,\n\t\t\t\t\t\tdefaultBackgroundMs,\n\t\t\t\t\t\t10,\n\t\t\t\t\t\t120_000,\n\t\t\t\t\t)\n\t\t\t: null;\n\n\t\t// Resolve workdir\n\t\tconst rawWorkdir =\n\t\t\toptions.workdir?.trim() || this.currentDirectory || process.cwd();\n\t\tconst workdir = resolveWorkdir(rawWorkdir, warnings);\n\n\t\t// Build environment\n\t\tconst baseEnv = coerceEnv(process.env);\n\t\tconst mergedEnv = options.env ? { ...baseEnv, ...options.env } : baseEnv;\n\n\t\tconst timeoutSec =\n\t\t\ttypeof options.timeout === \"number\" && options.timeout > 0\n\t\t\t\t? options.timeout\n\t\t\t\t: DEFAULT_TIMEOUT_SEC;\n\t\tconst usePty = options.pty === true;\n\t\tconst notifyOnExit = options.notifyOnExit !== false;\n\n\t\t// Run the process\n\t\tconst handle = await this.runExecProcess({\n\t\t\tcommand: trimmedCommand,\n\t\t\tworkdir,\n\t\t\tenv: mergedEnv,\n\t\t\tusePty,\n\t\t\twarnings,\n\t\t\tmaxOutput,\n\t\t\tpendingMaxOutput,\n\t\t\tnotifyOnExit,\n\t\t\tscopeKey: options.scopeKey ?? this.scopeKey,\n\t\t\tsessionKey: options.sessionKey,\n\t\t\ttimeoutSec,\n\t\t\tonUpdate: options.onUpdate,\n\t\t});\n\n\t\t// Handle background/yield\n\t\tif (allowBackground && yieldWindow !== null) {\n\t\t\tif (yieldWindow === 0) {\n\t\t\t\tmarkBackgrounded(handle.session);\n\t\t\t\treturn {\n\t\t\t\t\tstatus: \"running\",\n\t\t\t\t\tsessionId: handle.session.id,\n\t\t\t\t\tpid: handle.session.pid,\n\t\t\t\t\tstartedAt: handle.startedAt,\n\t\t\t\t\tcwd: handle.session.cwd,\n\t\t\t\t\ttail: handle.session.tail,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Wait for yieldWindow or completion\n\t\t\tconst raceResult = await Promise.race([\n\t\t\t\thandle.promise,\n\t\t\t\tnew Promise<\"yield\">((resolve) =>\n\t\t\t\t\tsetTimeout(() => resolve(\"yield\"), yieldWindow),\n\t\t\t\t),\n\t\t\t]);\n\n\t\t\tif (raceResult === \"yield\" && !handle.session.exited) {\n\t\t\t\tmarkBackgrounded(handle.session);\n\t\t\t\tconst warningText = warnings.length ? `${warnings.join(\"\\n\")}\\n\\n` : \"\";\n\t\t\t\treturn {\n\t\t\t\t\tstatus: \"running\",\n\t\t\t\t\tsessionId: handle.session.id,\n\t\t\t\t\tpid: handle.session.pid,\n\t\t\t\t\tstartedAt: handle.startedAt,\n\t\t\t\t\tcwd: handle.session.cwd,\n\t\t\t\t\ttail: `${warningText}Command still running (session ${handle.session.id}, pid ${handle.session.pid ?? \"n/a\"}).`,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Process completed within yield window\n\t\t\tconst outcome =\n\t\t\t\traceResult === \"yield\" ? await handle.promise : raceResult;\n\t\t\tconst warningText = warnings.length ? `${warnings.join(\"\\n\")}\\n\\n` : \"\";\n\n\t\t\tif (outcome.status === \"failed\") {\n\t\t\t\treturn {\n\t\t\t\t\tstatus: \"failed\",\n\t\t\t\t\texitCode: outcome.exitCode ?? null,\n\t\t\t\t\tdurationMs: outcome.durationMs,\n\t\t\t\t\taggregated: outcome.aggregated,\n\t\t\t\t\tcwd: workdir,\n\t\t\t\t\ttimedOut: outcome.timedOut,\n\t\t\t\t\treason: `${warningText}${outcome.reason ?? \"Command failed.\"}`,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tstatus: \"completed\",\n\t\t\t\texitCode: outcome.exitCode ?? 0,\n\t\t\t\tdurationMs: outcome.durationMs,\n\t\t\t\taggregated: `${warningText}${outcome.aggregated || \"(no output)\"}`,\n\t\t\t\tcwd: workdir,\n\t\t\t};\n\t\t}\n\n\t\t// Synchronous execution (no yield/background)\n\t\tconst outcome = await handle.promise;\n\t\tconst warningText = warnings.length ? `${warnings.join(\"\\n\")}\\n\\n` : \"\";\n\n\t\tif (outcome.status === \"failed\") {\n\t\t\treturn {\n\t\t\t\tstatus: \"failed\",\n\t\t\t\texitCode: outcome.exitCode ?? null,\n\t\t\t\tdurationMs: outcome.durationMs,\n\t\t\t\taggregated: outcome.aggregated,\n\t\t\t\tcwd: workdir,\n\t\t\t\ttimedOut: outcome.timedOut,\n\t\t\t\treason: `${warningText}${outcome.reason ?? \"Command failed.\"}`,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tstatus: \"completed\",\n\t\t\texitCode: outcome.exitCode ?? 0,\n\t\t\tdurationMs: outcome.durationMs,\n\t\t\taggregated: `${warningText}${outcome.aggregated || \"(no output)\"}`,\n\t\t\tcwd: workdir,\n\t\t};\n\t}\n\n\t/**\n\t * Process management action handler\n\t * Supports: list, poll, log, write, send-keys, submit, paste, kill, clear, remove\n\t */\n\tasync processAction(params: ProcessActionParams): Promise<{\n\t\tsuccess: boolean;\n\t\tmessage: string;\n\t\tdata?: Record<string, unknown>;\n\t}> {\n\t\tconst scopeKey = this.scopeKey;\n\t\tconst isInScope = (session?: { scopeKey?: string } | null) =>\n\t\t\t!scopeKey || session?.scopeKey === scopeKey;\n\n\t\tif (params.action === \"list\") {\n\t\t\tconst running = listRunningSessions()\n\t\t\t\t.filter((s) => isInScope(s))\n\t\t\t\t.map((s) => ({\n\t\t\t\t\tsessionId: s.id,\n\t\t\t\t\tstatus: \"running\",\n\t\t\t\t\tpid: s.pid ?? undefined,\n\t\t\t\t\tstartedAt: s.startedAt,\n\t\t\t\t\truntimeMs: Date.now() - s.startedAt,\n\t\t\t\t\tcwd: s.cwd,\n\t\t\t\t\tcommand: s.command,\n\t\t\t\t\tname: deriveSessionName(s.command),\n\t\t\t\t\ttail: s.tail,\n\t\t\t\t\ttruncated: s.truncated,\n\t\t\t\t}));\n\t\t\tconst finished = listFinishedSessions()\n\t\t\t\t.filter((s) => isInScope(s))\n\t\t\t\t.map((s) => ({\n\t\t\t\t\tsessionId: s.id,\n\t\t\t\t\tstatus: s.status,\n\t\t\t\t\tstartedAt: s.startedAt,\n\t\t\t\t\tendedAt: s.endedAt,\n\t\t\t\t\truntimeMs: s.endedAt - s.startedAt,\n\t\t\t\t\tcwd: s.cwd,\n\t\t\t\t\tcommand: s.command,\n\t\t\t\t\tname: deriveSessionName(s.command),\n\t\t\t\t\ttail: s.tail,\n\t\t\t\t\ttruncated: s.truncated,\n\t\t\t\t\texitCode: s.exitCode ?? undefined,\n\t\t\t\t\texitSignal: s.exitSignal ?? undefined,\n\t\t\t\t}));\n\t\t\tconst sessions = [...running, ...finished]\n\t\t\t\t.slice()\n\t\t\t\t.sort(\n\t\t\t\t\t(\n\t\t\t\t\t\ta: (typeof running)[number] | (typeof finished)[number],\n\t\t\t\t\t\tb: (typeof running)[number] | (typeof finished)[number],\n\t\t\t\t\t) => b.startedAt - a.startedAt,\n\t\t\t\t);\n\t\t\tconst lines = sessions.map((s: (typeof sessions)[number]) => {\n\t\t\t\tconst label = s.name\n\t\t\t\t\t? truncateMiddle(s.name, 80)\n\t\t\t\t\t: truncateMiddle(s.command, 120);\n\t\t\t\treturn `${s.sessionId} ${pad(s.status, 9)} ${formatDuration(s.runtimeMs)} :: ${label}`;\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tmessage: lines.join(\"\\n\") || \"No running or recent sessions.\",\n\t\t\t\tdata: { sessions },\n\t\t\t};\n\t\t}\n\n\t\tif (!params.sessionId) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\tmessage: \"sessionId is required for this action.\",\n\t\t\t};\n\t\t}\n\n\t\tconst session = getSession(params.sessionId);\n\t\tconst finished = getFinishedSession(params.sessionId);\n\t\tconst scopedSession = isInScope(session) ? session : undefined;\n\t\tconst scopedFinished = isInScope(finished) ? finished : undefined;\n\n\t\tswitch (params.action) {\n\t\t\tcase \"poll\": {\n\t\t\t\tif (!scopedSession) {\n\t\t\t\t\tif (scopedFinished) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t\t(scopedFinished.tail ||\n\t\t\t\t\t\t\t\t\t`(no output recorded${scopedFinished.truncated ? \" — truncated to cap\" : \"\"})`) +\n\t\t\t\t\t\t\t\t`\\n\\nProcess exited with ${\n\t\t\t\t\t\t\t\t\tscopedFinished.exitSignal\n\t\t\t\t\t\t\t\t\t\t? `signal ${scopedFinished.exitSignal}`\n\t\t\t\t\t\t\t\t\t\t: `code ${scopedFinished.exitCode ?? 0}`\n\t\t\t\t\t\t\t\t}.`,\n\t\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\t\tstatus:\n\t\t\t\t\t\t\t\t\tscopedFinished.status === \"completed\"\n\t\t\t\t\t\t\t\t\t\t? \"completed\"\n\t\t\t\t\t\t\t\t\t\t: \"failed\",\n\t\t\t\t\t\t\t\tsessionId: params.sessionId,\n\t\t\t\t\t\t\t\texitCode: scopedFinished.exitCode ?? undefined,\n\t\t\t\t\t\t\t\taggregated: scopedFinished.aggregated,\n\t\t\t\t\t\t\t\tname: deriveSessionName(scopedFinished.command),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `No session found for ${params.sessionId}`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!scopedSession.backgrounded) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `Session ${params.sessionId} is not backgrounded.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst { stdout, stderr } = drainSession(scopedSession);\n\t\t\t\tconst exited = scopedSession.exited;\n\t\t\t\tconst exitCode = scopedSession.exitCode ?? 0;\n\t\t\t\tconst exitSignal = scopedSession.exitSignal ?? undefined;\n\t\t\t\tif (exited) {\n\t\t\t\t\tconst status =\n\t\t\t\t\t\texitCode === 0 && exitSignal == null ? \"completed\" : \"failed\";\n\t\t\t\t\tmarkExited(\n\t\t\t\t\t\tscopedSession,\n\t\t\t\t\t\tscopedSession.exitCode ?? null,\n\t\t\t\t\t\tscopedSession.exitSignal ?? null,\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tconst status = exited\n\t\t\t\t\t? exitCode === 0 && exitSignal == null\n\t\t\t\t\t\t? \"completed\"\n\t\t\t\t\t\t: \"failed\"\n\t\t\t\t\t: \"running\";\n\t\t\t\tconst output = [stdout.trimEnd(), stderr.trimEnd()]\n\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t.join(\"\\n\")\n\t\t\t\t\t.trim();\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t(output || \"(no new output)\") +\n\t\t\t\t\t\t(exited\n\t\t\t\t\t\t\t? `\\n\\nProcess exited with ${\n\t\t\t\t\t\t\t\t\texitSignal ? `signal ${exitSignal}` : `code ${exitCode}`\n\t\t\t\t\t\t\t\t}.`\n\t\t\t\t\t\t\t: \"\\n\\nProcess still running.\"),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tsessionId: params.sessionId,\n\t\t\t\t\t\texitCode: exited ? exitCode : undefined,\n\t\t\t\t\t\taggregated: scopedSession.aggregated,\n\t\t\t\t\t\tname: deriveSessionName(scopedSession.command),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tcase \"log\": {\n\t\t\t\tif (scopedSession) {\n\t\t\t\t\tif (!scopedSession.backgrounded) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\tmessage: `Session ${params.sessionId} is not backgrounded.`,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\tconst { slice, totalLines, totalChars } = sliceLogLines(\n\t\t\t\t\t\tscopedSession.aggregated,\n\t\t\t\t\t\tparams.offset,\n\t\t\t\t\t\tparams.limit,\n\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tmessage: slice || \"(no output yet)\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tstatus: scopedSession.exited ? \"completed\" : \"running\",\n\t\t\t\t\t\t\tsessionId: params.sessionId,\n\t\t\t\t\t\t\ttotalLines,\n\t\t\t\t\t\t\ttotalChars,\n\t\t\t\t\t\t\ttruncated: scopedSession.truncated,\n\t\t\t\t\t\t\tname: deriveSessionName(scopedSession.command),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (scopedFinished) {\n\t\t\t\t\tconst { slice, totalLines, totalChars } = sliceLogLines(\n\t\t\t\t\t\tscopedFinished.aggregated,\n\t\t\t\t\t\tparams.offset,\n\t\t\t\t\t\tparams.limit,\n\t\t\t\t\t);\n\t\t\t\t\tconst status =\n\t\t\t\t\t\tscopedFinished.status === \"completed\" ? \"completed\" : \"failed\";\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tmessage: slice || \"(no output recorded)\",\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\tsessionId: params.sessionId,\n\t\t\t\t\t\t\ttotalLines,\n\t\t\t\t\t\t\ttotalChars,\n\t\t\t\t\t\t\ttruncated: scopedFinished.truncated,\n\t\t\t\t\t\t\texitCode: scopedFinished.exitCode ?? undefined,\n\t\t\t\t\t\t\texitSignal: scopedFinished.exitSignal ?? undefined,\n\t\t\t\t\t\t\tname: deriveSessionName(scopedFinished.command),\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\tmessage: `No session found for ${params.sessionId}`,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tcase \"write\": {\n\t\t\t\tif (!scopedSession) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `No active session found for ${params.sessionId}`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!scopedSession.backgrounded) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `Session ${params.sessionId} is not backgrounded.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst stdin = scopedSession.stdin ?? scopedSession.child?.stdin;\n\t\t\t\tif (!stdin || stdin.destroyed) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `Session ${params.sessionId} stdin is not writable.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\t\tstdin.write(params.data ?? \"\", (err) => {\n\t\t\t\t\t\tif (err) reject(err);\n\t\t\t\t\t\telse resolve();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (params.eof) {\n\t\t\t\t\tstdin.end();\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tmessage: `Wrote ${(params.data ?? \"\").length} bytes to session ${params.sessionId}${\n\t\t\t\t\t\tparams.eof ? \" (stdin closed)\" : \"\"\n\t\t\t\t\t}.`,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tsessionId: params.sessionId,\n\t\t\t\t\t\tname: deriveSessionName(scopedSession.command),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tcase \"send-keys\": {\n\t\t\t\tif (!scopedSession) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `No active session found for ${params.sessionId}`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!scopedSession.backgrounded) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `Session ${params.sessionId} is not backgrounded.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst stdin = scopedSession.stdin ?? scopedSession.child?.stdin;\n\t\t\t\tif (!stdin || stdin.destroyed) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `Session ${params.sessionId} stdin is not writable.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst { data, warnings } = encodeKeySequence({\n\t\t\t\t\tkeys: params.keys,\n\t\t\t\t\thex: params.hex,\n\t\t\t\t\tliteral: params.literal,\n\t\t\t\t});\n\t\t\t\tif (!data) {\n\t\t\t\t\treturn { success: false, message: \"No key data provided.\" };\n\t\t\t\t}\n\t\t\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\t\tstdin.write(data, (err) => {\n\t\t\t\t\t\tif (err) reject(err);\n\t\t\t\t\t\telse resolve();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t`Sent ${data.length} bytes to session ${params.sessionId}.` +\n\t\t\t\t\t\t(warnings.length ? `\\nWarnings:\\n- ${warnings.join(\"\\n- \")}` : \"\"),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tsessionId: params.sessionId,\n\t\t\t\t\t\tname: deriveSessionName(scopedSession.command),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tcase \"submit\": {\n\t\t\t\tif (!scopedSession) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `No active session found for ${params.sessionId}`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!scopedSession.backgrounded) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `Session ${params.sessionId} is not backgrounded.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst stdin = scopedSession.stdin ?? scopedSession.child?.stdin;\n\t\t\t\tif (!stdin || stdin.destroyed) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `Session ${params.sessionId} stdin is not writable.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\t\tstdin.write(\"\\r\", (err) => {\n\t\t\t\t\t\tif (err) reject(err);\n\t\t\t\t\t\telse resolve();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tmessage: `Submitted session ${params.sessionId} (sent CR).`,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tsessionId: params.sessionId,\n\t\t\t\t\t\tname: deriveSessionName(scopedSession.command),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tcase \"paste\": {\n\t\t\t\tif (!scopedSession) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `No active session found for ${params.sessionId}`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!scopedSession.backgrounded) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `Session ${params.sessionId} is not backgrounded.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst stdin = scopedSession.stdin ?? scopedSession.child?.stdin;\n\t\t\t\tif (!stdin || stdin.destroyed) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `Session ${params.sessionId} stdin is not writable.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst payload = encodePaste(\n\t\t\t\t\tparams.text ?? \"\",\n\t\t\t\t\tparams.bracketed !== false,\n\t\t\t\t);\n\t\t\t\tif (!payload) {\n\t\t\t\t\treturn { success: false, message: \"No paste text provided.\" };\n\t\t\t\t}\n\t\t\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\t\t\tstdin.write(payload, (err) => {\n\t\t\t\t\t\tif (err) reject(err);\n\t\t\t\t\t\telse resolve();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tmessage: `Pasted ${params.text?.length ?? 0} chars to session ${params.sessionId}.`,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tsessionId: params.sessionId,\n\t\t\t\t\t\tname: deriveSessionName(scopedSession.command),\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tcase \"kill\": {\n\t\t\t\tif (!scopedSession) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `No active session found for ${params.sessionId}`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!scopedSession.backgrounded) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tmessage: `Session ${params.sessionId} is not backgrounded.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tkillSession(scopedSession);\n\t\t\t\tmarkExited(scopedSession, null, \"SIGKILL\", \"failed\");\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\tmessage: `Killed session ${params.sessionId}.`,\n\t\t\t\t\tdata: { name: deriveSessionName(scopedSession.command) },\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tcase \"clear\": {\n\t\t\t\tif (scopedFinished) {\n\t\t\t\t\tdeleteSession(params.sessionId);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tmessage: `Cleared session ${params.sessionId}.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\tmessage: `No finished session found for ${params.sessionId}`,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tcase \"remove\": {\n\t\t\t\tif (scopedSession) {\n\t\t\t\t\tkillSession(scopedSession);\n\t\t\t\t\tmarkExited(scopedSession, null, \"SIGKILL\", \"failed\");\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tmessage: `Removed session ${params.sessionId}.`,\n\t\t\t\t\t\tdata: { name: deriveSessionName(scopedSession.command) },\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (scopedFinished) {\n\t\t\t\t\tdeleteSession(params.sessionId);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tmessage: `Removed session ${params.sessionId}.`,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\tmessage: `No session found for ${params.sessionId}`,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\tmessage: `Unknown action ${params.action as string}`,\n\t\t};\n\t}\n\n\t// ===== Public Service Methods for External Use =====\n\n\t/**\n\t * List all running sessions\n\t */\n\tlistRunningSessions(): ProcessSession[] {\n\t\tconst scopeKey = this.scopeKey;\n\t\treturn listRunningSessions().filter(\n\t\t\t(s) => !scopeKey || s.scopeKey === scopeKey,\n\t\t);\n\t}\n\n\t/**\n\t * List all finished sessions\n\t */\n\tlistFinishedSessions(): FinishedSession[] {\n\t\tconst scopeKey = this.scopeKey;\n\t\treturn listFinishedSessions().filter(\n\t\t\t(s) => !scopeKey || s.scopeKey === scopeKey,\n\t\t);\n\t}\n\n\t/**\n\t * Get a specific session by ID\n\t */\n\tgetSession(id: string): ProcessSession | undefined {\n\t\tconst session = getSession(id);\n\t\tif (!session) return undefined;\n\t\tif (this.scopeKey && session.scopeKey !== this.scopeKey) return undefined;\n\t\treturn session;\n\t}\n\n\t/**\n\t * Get a specific finished session by ID\n\t */\n\tgetFinishedSession(id: string): FinishedSession | undefined {\n\t\tconst session = getFinishedSession(id);\n\t\tif (!session) return undefined;\n\t\tif (this.scopeKey && session.scopeKey !== this.scopeKey) return undefined;\n\t\treturn session;\n\t}\n\n\t/**\n\t * Kill a session by ID\n\t */\n\tkillSessionById(id: string): boolean {\n\t\tconst session = this.getSession(id);\n\t\tif (!session) return false;\n\t\tkillSession(session);\n\t\tmarkExited(session, null, \"SIGKILL\", \"killed\");\n\t\treturn true;\n\t}\n\n\t/**\n\t * Get command history for a conversation\n\t */\n\tgetCommandHistory(\n\t\tconversationId: string,\n\t\tlimit?: number,\n\t): CommandHistoryEntry[] {\n\t\tconst history = this.commandHistory.get(conversationId) || [];\n\t\tif (limit && limit > 0) {\n\t\t\treturn history.slice(-limit);\n\t\t}\n\t\treturn history;\n\t}\n\n\t/**\n\t * Clear command history for a conversation\n\t */\n\tclearCommandHistory(conversationId: string): void {\n\t\tthis.commandHistory.delete(conversationId);\n\t\tlogger.info(`Cleared command history for conversation: ${conversationId}`);\n\t}\n\n\t/**\n\t * Get current working directory\n\t */\n\tgetCurrentDirectory(_conversationId?: string): string {\n\t\treturn this.currentDirectory;\n\t}\n\n\t/**\n\t * Set current working directory\n\t */\n\tsetCurrentDirectory(directory: string): boolean {\n\t\tconst validatedPath = validatePath(\n\t\t\tdirectory,\n\t\t\tthis.shellConfig.allowedDirectory,\n\t\t\tthis.currentDirectory,\n\t\t);\n\t\tif (!validatedPath) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.currentDirectory = validatedPath;\n\t\treturn true;\n\t}\n\n\t/**\n\t * Get allowed directory\n\t */\n\tgetAllowedDirectory(): string {\n\t\treturn this.shellConfig.allowedDirectory;\n\t}\n\n\t/**\n\t * Get shell configuration\n\t */\n\tgetShellConfig(): ShellConfig {\n\t\treturn { ...this.shellConfig };\n\t}\n\n\t// ===== Private Methods =====\n\n\tprivate async handleCdCommand(command: string): Promise<CommandResult> {\n\t\tconst parts = command.split(/\\s+/);\n\t\tif (parts.length < 2) {\n\t\t\tthis.currentDirectory = this.shellConfig.allowedDirectory;\n\t\t\treturn {\n\t\t\t\tsuccess: true,\n\t\t\t\tstdout: `Changed directory to: ${this.currentDirectory}`,\n\t\t\t\tstderr: \"\",\n\t\t\t\texitCode: 0,\n\t\t\t\texecutedIn: this.currentDirectory,\n\t\t\t};\n\t\t}\n\n\t\tconst targetPath = parts.slice(1).join(\" \");\n\t\tconst validatedPath = validatePath(\n\t\t\ttargetPath,\n\t\t\tthis.shellConfig.allowedDirectory,\n\t\t\tthis.currentDirectory,\n\t\t);\n\n\t\tif (!validatedPath) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\tstdout: \"\",\n\t\t\t\tstderr: \"Cannot navigate outside allowed directory\",\n\t\t\t\texitCode: 1,\n\t\t\t\terror: \"Permission denied\",\n\t\t\t\texecutedIn: this.currentDirectory,\n\t\t\t};\n\t\t}\n\n\t\tthis.currentDirectory = validatedPath;\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tstdout: `Changed directory to: ${this.currentDirectory}`,\n\t\t\tstderr: \"\",\n\t\t\texitCode: 0,\n\t\t\texecutedIn: this.currentDirectory,\n\t\t};\n\t}\n\n\tprivate async runCommandSimple(command: string): Promise<CommandResult> {\n\t\treturn new Promise((resolve) => {\n\t\t\tconst useShell =\n\t\t\t\tcommand.includes(\">\") || command.includes(\"<\") || command.includes(\"|\");\n\n\t\t\tlet cmd: string;\n\t\t\tlet args: string[];\n\n\t\t\tif (useShell) {\n\t\t\t\tcmd = \"sh\";\n\t\t\t\targs = [\"-c\", command];\n\t\t\t\tlogger.info(\n\t\t\t\t\t`Executing shell command: sh -c \"${command}\" in ${this.currentDirectory}`,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst parts = command.split(/\\s+/);\n\t\t\t\tcmd = parts[0];\n\t\t\t\targs = parts.slice(1);\n\t\t\t\tlogger.info(\n\t\t\t\t\t`Executing command: ${cmd} ${args.join(\" \")} in ${this.currentDirectory}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlet stdout = \"\";\n\t\t\tlet stderr = \"\";\n\t\t\tlet timedOut = false;\n\n\t\t\tconst child = spawn(cmd, args, {\n\t\t\t\tcwd: this.currentDirectory,\n\t\t\t\tenv: process.env,\n\t\t\t\tshell: false,\n\t\t\t});\n\n\t\t\tconst timeout = setTimeout(() => {\n\t\t\t\ttimedOut = true;\n\t\t\t\tchild.kill(\"SIGTERM\");\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (!child.killed) {\n\t\t\t\t\t\tchild.kill(\"SIGKILL\");\n\t\t\t\t\t}\n\t\t\t\t}, 5000);\n\t\t\t}, this.shellConfig.timeout);\n\n\t\t\tif (child.stdout) {\n\t\t\t\tchild.stdout.on(\"data\", (data: Buffer) => {\n\t\t\t\t\tstdout += data.toString();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (child.stderr) {\n\t\t\t\tchild.stderr.on(\"data\", (data: Buffer) => {\n\t\t\t\t\tstderr += data.toString();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tchild.on(\"exit\", (code) => {\n\t\t\t\tclearTimeout(timeout);\n\n\t\t\t\tif (timedOut) {\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\tstdout,\n\t\t\t\t\t\tstderr: `${stderr}\\nCommand timed out`,\n\t\t\t\t\t\texitCode: code,\n\t\t\t\t\t\terror: \"Command execution timeout\",\n\t\t\t\t\t\texecutedIn: this.currentDirectory,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve({\n\t\t\t\t\tsuccess: code === 0,\n\t\t\t\t\tstdout,\n\t\t\t\t\tstderr,\n\t\t\t\t\texitCode: code,\n\t\t\t\t\texecutedIn: this.currentDirectory,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tchild.on(\"error\", (err: Error) => {\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\tresolve({\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\tstdout,\n\t\t\t\t\tstderr: err.message,\n\t\t\t\t\texitCode: 1,\n\t\t\t\t\terror: \"Failed to execute command\",\n\t\t\t\t\texecutedIn: this.currentDirectory,\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate async runExecProcess(opts: {\n\t\tcommand: string;\n\t\tworkdir: string;\n\t\tenv: Record<string, string>;\n\t\tusePty: boolean;\n\t\twarnings: string[];\n\t\tmaxOutput: number;\n\t\tpendingMaxOutput: number;\n\t\tnotifyOnExit: boolean;\n\t\tscopeKey?: string;\n\t\tsessionKey?: string;\n\t\ttimeoutSec: number;\n\t\tonUpdate?: (session: ProcessSession) => void;\n\t}): Promise<{\n\t\tsession: ProcessSession;\n\t\tstartedAt: number;\n\t\tpromise: Promise<{\n\t\t\tstatus: \"completed\" | \"failed\";\n\t\t\texitCode: number | null;\n\t\t\texitSignal: NodeJS.Signals | number | null;\n\t\t\tdurationMs: number;\n\t\t\taggregated: string;\n\t\t\ttimedOut: boolean;\n\t\t\treason?: string;\n\t\t}>;\n\t\tkill: () => void;\n\t}> {\n\t\tconst startedAt = Date.now();\n\t\tconst sessionId = createSessionSlug();\n\t\tlet child: ChildProcessWithoutNullStreams | null = null;\n\t\tlet pty: PtyHandle | null = null;\n\t\tlet stdin: ProcessSession[\"stdin\"] | undefined;\n\n\t\tif (opts.usePty) {\n\t\t\tconst { shell, args: shellArgs } = getShellConfig();\n\t\t\ttry {\n\t\t\t\tconst ptyModule = (await import(\"@lydell/node-pty\")) as {\n\t\t\t\t\tspawn?: PtySpawn;\n\t\t\t\t\tdefault?: { spawn?: PtySpawn };\n\t\t\t\t};\n\t\t\t\tconst spawnPty = ptyModule.spawn ?? ptyModule.default?.spawn;\n\t\t\t\tif (!spawnPty) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\"PTY support is unavailable (node-pty spawn not found).\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tpty = spawnPty(shell, [...shellArgs, opts.command], {\n\t\t\t\t\tcwd: opts.workdir,\n\t\t\t\t\tenv: opts.env,\n\t\t\t\t\tname: process.env.TERM ?? \"xterm-256color\",\n\t\t\t\t\tcols: 120,\n\t\t\t\t\trows: 30,\n\t\t\t\t});\n\t\t\t\tstdin = {\n\t\t\t\t\tdestroyed: false,\n\t\t\t\t\twrite: (data, cb) => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tpty?.write(data);\n\t\t\t\t\t\t\tcb?.(null);\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\tcb?.(err as Error);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tend: () => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst eof = process.platform === \"win32\" ? \"\\x1a\" : \"\\x04\";\n\t\t\t\t\t\t\tpty?.write(eof);\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// ignore EOF errors\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t} catch (err) {\n\t\t\t\tconst errText = String(err);\n\t\t\t\tconst warning = `Warning: PTY spawn failed (${errText}); retrying without PTY.`;\n\t\t\t\tlogger.warn(\n\t\t\t\t\t`exec: PTY spawn failed (${errText}); retrying without PTY.`,\n\t\t\t\t);\n\t\t\t\topts.warnings.push(warning);\n\t\t\t\t// Fall through to non-PTY execution\n\t\t\t}\n\t\t}\n\n\t\tif (!pty) {\n\t\t\tconst { shell, args: shellArgs } = getShellConfig();\n\t\t\tconst proc = spawn(shell, [...shellArgs, opts.command], {\n\t\t\t\tcwd: opts.workdir,\n\t\t\t\tenv: opts.env,\n\t\t\t\tdetached: process.platform !== \"win32\",\n\t\t\t\tstdio: [\"pipe\", \"pipe\", \"pipe\"],\n\t\t\t\twindowsHide: true,\n\t\t\t}) as ChildProcessWithoutNullStreams;\n\t\t\tchild = proc;\n\t\t\tstdin = child.stdin;\n\t\t}\n\n\t\tconst session: ProcessSession = {\n\t\t\tid: sessionId,\n\t\t\tcommand: opts.command,\n\t\t\tscopeKey: opts.scopeKey,\n\t\t\tsessionKey: opts.sessionKey,\n\t\t\tnotifyOnExit: opts.notifyOnExit,\n\t\t\texitNotified: false,\n\t\t\tchild: child ?? undefined,\n\t\t\tstdin,\n\t\t\tpid: child?.pid ?? pty?.pid,\n\t\t\tstartedAt,\n\t\t\tcwd: opts.workdir,\n\t\t\tmaxOutputChars: opts.maxOutput,\n\t\t\tpendingMaxOutputChars: opts.pendingMaxOutput,\n\t\t\ttotalOutputChars: 0,\n\t\t\tpendingStdout: [],\n\t\t\tpendingStderr: [],\n\t\t\tpendingStdoutChars: 0,\n\t\t\tpendingStderrChars: 0,\n\t\t\taggregated: \"\",\n\t\t\ttail: \"\",\n\t\t\texited: false,\n\t\t\texitCode: undefined,\n\t\t\texitSignal: undefined,\n\t\t\ttruncated: false,\n\t\t\tbackgrounded: false,\n\t\t};\n\t\taddSession(session);\n\n\t\tlet settled = false;\n\t\tlet timeoutTimer: NodeJS.Timeout | null = null;\n\t\tlet timeoutFinalizeTimer: NodeJS.Timeout | null = null;\n\t\tlet timedOut = false;\n\t\tconst timeoutFinalizeMs = 1000;\n\t\tlet resolveFn:\n\t\t\t| ((outcome: {\n\t\t\t\t\tstatus: \"completed\" | \"failed\";\n\t\t\t\t\texitCode: number | null;\n\t\t\t\t\texitSignal: NodeJS.Signals | number | null;\n\t\t\t\t\tdurationMs: number;\n\t\t\t\t\taggregated: string;\n\t\t\t\t\ttimedOut: boolean;\n\t\t\t\t\treason?: string;\n\t\t\t }) => void)\n\t\t\t| null = null;\n\n\t\tconst settle = (outcome: {\n\t\t\tstatus: \"completed\" | \"failed\";\n\t\t\texitCode: number | null;\n\t\t\texitSignal: NodeJS.Signals | number | null;\n\t\t\tdurationMs: number;\n\t\t\taggregated: string;\n\t\t\ttimedOut: boolean;\n\t\t\treason?: string;\n\t\t}) => {\n\t\t\tif (settled) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettled = true;\n\t\t\tresolveFn?.(outcome);\n\t\t};\n\n\t\tconst finalizeTimeout = () => {\n\t\t\tif (session.exited) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tmarkExited(session, null, \"SIGKILL\", \"failed\");\n\t\t\tconst aggregated = session.aggregated.trim();\n\t\t\tconst reason = `Command timed out after ${opts.timeoutSec} seconds`;\n\t\t\tsettle({\n\t\t\t\tstatus: \"failed\",\n\t\t\t\texitCode: null,\n\t\t\t\texitSignal: \"SIGKILL\",\n\t\t\t\tdurationMs: Date.now() - startedAt,\n\t\t\t\taggregated,\n\t\t\t\ttimedOut: true,\n\t\t\t\treason: aggregated ? `${aggregated}\\n\\n${reason}` : reason,\n\t\t\t});\n\t\t};\n\n\t\tconst onTimeout = () => {\n\t\t\ttimedOut = true;\n\t\t\tkillSession(session);\n\t\t\tif (!timeoutFinalizeTimer) {\n\t\t\t\ttimeoutFinalizeTimer = setTimeout(() => {\n\t\t\t\t\tfinalizeTimeout();\n\t\t\t\t}, timeoutFinalizeMs);\n\t\t\t}\n\t\t};\n\n\t\tif (opts.timeoutSec > 0) {\n\t\t\ttimeoutTimer = setTimeout(() => {\n\t\t\t\tonTimeout();\n\t\t\t}, opts.timeoutSec * 1000);\n\t\t}\n\n\t\tconst emitUpdate = () => {\n\t\t\tif (opts.onUpdate) {\n\t\t\t\topts.onUpdate(session);\n\t\t\t}\n\t\t};\n\n\t\tconst handleStdout = (data: string) => {\n\t\t\tconst str = sanitizeBinaryOutput(data.toString());\n\t\t\tfor (const chunk of chunkString(str)) {\n\t\t\t\tappendOutput(session, \"stdout\", chunk);\n\t\t\t\temitUpdate();\n\t\t\t}\n\t\t};\n\n\t\tconst handleStderr = (data: string) => {\n\t\t\tconst str = sanitizeBinaryOutput(data.toString());\n\t\t\tfor (const chunk of chunkString(str)) {\n\t\t\t\tappendOutput(session, \"stderr\", chunk);\n\t\t\t\temitUpdate();\n\t\t\t}\n\t\t};\n\n\t\tif (pty) {\n\t\t\tconst cursorResponse = buildCursorPositionResponse();\n\t\t\tpty.onData((data) => {\n\t\t\t\tconst raw = data.toString();\n\t\t\t\tconst { cleaned, requests } = stripDsrRequests(raw);\n\t\t\t\tif (requests > 0) {\n\t\t\t\t\tfor (let i = 0; i < requests; i += 1) {\n\t\t\t\t\t\tpty.write(cursorResponse);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\thandleStdout(cleaned);\n\t\t\t});\n\t\t} else if (child) {\n\t\t\tchild.stdout.on(\"data\", handleStdout);\n\t\t\tchild.stderr.on(\"data\", handleStderr);\n\t\t}\n\n\t\tconst promise = new Promise<{\n\t\t\tstatus: \"completed\" | \"failed\";\n\t\t\texitCode: number | null;\n\t\t\texitSignal: NodeJS.Signals | number | null;\n\t\t\tdurationMs: number;\n\t\t\taggregated: string;\n\t\t\ttimedOut: boolean;\n\t\t\treason?: string;\n\t\t}>((resolve) => {\n\t\t\tresolveFn = resolve;\n\t\t\tconst handleExit = (\n\t\t\t\tcode: number | null,\n\t\t\t\texitSignal: NodeJS.Signals | number | null,\n\t\t\t) => {\n\t\t\t\tif (timeoutTimer) {\n\t\t\t\t\tclearTimeout(timeoutTimer);\n\t\t\t\t}\n\t\t\t\tif (timeoutFinalizeTimer) {\n\t\t\t\t\tclearTimeout(timeoutFinalizeTimer);\n\t\t\t\t}\n\t\t\t\tconst durationMs = Date.now() - startedAt;\n\t\t\t\tconst wasSignal = exitSignal != null;\n\t\t\t\tconst isSuccess = code === 0 && !wasSignal && !timedOut;\n\t\t\t\tconst status: \"completed\" | \"failed\" = isSuccess\n\t\t\t\t\t? \"completed\"\n\t\t\t\t\t: \"failed\";\n\t\t\t\tmarkExited(session, code, exitSignal, status);\n\t\t\t\tif (!session.child && session.stdin) {\n\t\t\t\t\tsession.stdin.destroyed = true;\n\t\t\t\t}\n\n\t\t\t\tif (settled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst aggregated = session.aggregated.trim();\n\t\t\t\tif (!isSuccess) {\n\t\t\t\t\tconst reason = timedOut\n\t\t\t\t\t\t? `Command timed out after ${opts.timeoutSec} seconds`\n\t\t\t\t\t\t: wasSignal && exitSignal\n\t\t\t\t\t\t\t? `Command aborted by signal ${exitSignal}`\n\t\t\t\t\t\t\t: code === null\n\t\t\t\t\t\t\t\t? \"Command aborted before exit code was captured\"\n\t\t\t\t\t\t\t\t: `Command exited with code ${code}`;\n\t\t\t\t\tconst message = aggregated ? `${aggregated}\\n\\n${reason}` : reason;\n\t\t\t\t\tsettle({\n\t\t\t\t\t\tstatus: \"failed\",\n\t\t\t\t\t\texitCode: code ?? null,\n\t\t\t\t\t\texitSignal: exitSignal ?? null,\n\t\t\t\t\t\tdurationMs,\n\t\t\t\t\t\taggregated,\n\t\t\t\t\t\ttimedOut,\n\t\t\t\t\t\treason: message,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsettle({\n\t\t\t\t\tstatus: \"completed\",\n\t\t\t\t\texitCode: code ?? 0,\n\t\t\t\t\texitSignal: exitSignal ?? null,\n\t\t\t\t\tdurationMs,\n\t\t\t\t\taggregated,\n\t\t\t\t\ttimedOut: false,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tif (pty) {\n\t\t\t\tpty.onExit((event) => {\n\t\t\t\t\tconst rawSignal = event.signal ?? null;\n\t\t\t\t\tconst normalizedSignal = rawSignal === 0 ? null : rawSignal;\n\t\t\t\t\thandleExit(event.exitCode ?? null, normalizedSignal);\n\t\t\t\t});\n\t\t\t} else if (child) {\n\t\t\t\tchild.once(\"close\", (code, exitSignal) => {\n\t\t\t\t\thandleExit(code, exitSignal);\n\t\t\t\t});\n\n\t\t\t\tchild.once(\"error\", (err) => {\n\t\t\t\t\tif (timeoutTimer) {\n\t\t\t\t\t\tclearTimeout(timeoutTimer);\n\t\t\t\t\t}\n\t\t\t\t\tif (timeoutFinalizeTimer) {\n\t\t\t\t\t\tclearTimeout(timeoutFinalizeTimer);\n\t\t\t\t\t}\n\t\t\t\t\tmarkExited(session, null, null, \"failed\");\n\t\t\t\t\tconst aggregated = session.aggregated.trim();\n\t\t\t\t\tconst message = aggregated\n\t\t\t\t\t\t? `${aggregated}\\n\\n${String(err)}`\n\t\t\t\t\t\t: String(err);\n\t\t\t\t\tsettle({\n\t\t\t\t\t\tstatus: \"failed\",\n\t\t\t\t\t\texitCode: null,\n\t\t\t\t\t\texitSignal: null,\n\t\t\t\t\t\tdurationMs: Date.now() - startedAt,\n\t\t\t\t\t\taggregated,\n\t\t\t\t\t\ttimedOut,\n\t\t\t\t\t\treason: message,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tsession,\n\t\t\tstartedAt,\n\t\t\tpromise,\n\t\t\tkill: () => killSession(session),\n\t\t};\n\t}\n\n\tprivate addToHistory(\n\t\tconversationId: string | undefined,\n\t\tcommand: string,\n\t\tresult: CommandResult,\n\t\tfileOperations?: FileOperation[],\n\t): void {\n\t\tif (!conversationId) return;\n\n\t\tconst historyEntry: CommandHistoryEntry = {\n\t\t\tcommand,\n\t\t\tstdout: result.stdout,\n\t\t\tstderr: result.stderr,\n\t\t\texitCode: result.exitCode,\n\t\t\ttimestamp: Date.now(),\n\t\t\tworkingDirectory: result.executedIn,\n\t\t\tfileOperations,\n\t\t};\n\n\t\tif (!this.commandHistory.has(conversationId)) {\n\t\t\tthis.commandHistory.set(conversationId, []);\n\t\t}\n\n\t\tconst history = this.commandHistory.get(conversationId);\n\t\tif (!history) {\n\t\t\tthrow new Error(`No history found for conversation ${conversationId}`);\n\t\t}\n\t\thistory.push(historyEntry);\n\n\t\tif (history.length > this.maxHistoryPerConversation) {\n\t\t\thistory.shift();\n\t\t}\n\t}\n\n\tprivate detectFileOperations(\n\t\tcommand: string,\n\t\tcwd: string,\n\t): FileOperation[] | undefined {\n\t\tconst operations: FileOperation[] = [];\n\t\tconst parts = command.trim().split(/\\s+/);\n\t\tconst cmd = parts[0].toLowerCase();\n\n\t\tif (cmd === \"touch\" && parts.length > 1) {\n\t\t\toperations.push({\n\t\t\t\ttype: \"create\" as FileOperationType,\n\t\t\t\ttarget: this.resolvePath(parts[1], cwd),\n\t\t\t});\n\t\t} else if (cmd === \"echo\" && command.includes(\">\")) {\n\t\t\tconst match = command.match(/>\\s*([^\\s]+)$/);\n\t\t\tif (match) {\n\t\t\t\toperations.push({\n\t\t\t\t\ttype: \"write\" as FileOperationType,\n\t\t\t\t\ttarget: this.resolvePath(match[1], cwd),\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (cmd === \"mkdir\" && parts.length > 1) {\n\t\t\toperations.push({\n\t\t\t\ttype: \"mkdir\" as FileOperationType,\n\t\t\t\ttarget: this.resolvePath(parts[1], cwd),\n\t\t\t});\n\t\t} else if (cmd === \"cat\" && parts.length > 1 && !command.includes(\">\")) {\n\t\t\toperations.push({\n\t\t\t\ttype: \"read\" as FileOperationType,\n\t\t\t\ttarget: this.resolvePath(parts[1], cwd),\n\t\t\t});\n\t\t} else if (cmd === \"mv\" && parts.length > 2) {\n\t\t\toperations.push({\n\t\t\t\ttype: \"move\" as FileOperationType,\n\t\t\t\ttarget: this.resolvePath(parts[1], cwd),\n\t\t\t\tsecondaryTarget: this.resolvePath(parts[2], cwd),\n\t\t\t});\n\t\t} else if (cmd === \"cp\" && parts.length > 2) {\n\t\t\toperations.push({\n\t\t\t\ttype: \"copy\" as FileOperationType,\n\t\t\t\ttarget: this.resolvePath(parts[1], cwd),\n\t\t\t\tsecondaryTarget: this.resolvePath(parts[2], cwd),\n\t\t\t});\n\t\t}\n\n\t\treturn operations.length > 0 ? operations : undefined;\n\t}\n\n\tprivate resolvePath(filePath: string, cwd: string): string {\n\t\tif (path.isAbsolute(filePath)) {\n\t\t\treturn filePath;\n\t\t}\n\t\treturn path.join(cwd, filePath);\n\t}\n}\n",
25
25
  "import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { logger } from \"@elizaos/core\";\nimport { z } from \"zod\";\nimport type { ShellConfig } from \"../types\";\n\nconst configSchema = z.object({\n\tenabled: z.boolean(),\n\tallowedDirectory: z.string(),\n\ttimeout: z.number().positive().default(30000),\n\tforbiddenCommands: z.array(z.string()),\n\tmaxOutputChars: z.number().positive().default(200000),\n\tpendingMaxOutputChars: z.number().positive().default(200000),\n\tdefaultBackgroundMs: z.number().positive().default(10000),\n\tallowBackground: z.boolean().default(true),\n});\n\nexport const DEFAULT_FORBIDDEN_COMMANDS: readonly string[] = [\n\t\"rm -rf /\",\n\t\"rmdir\",\n\t\"chmod 777\",\n\t\"chown\",\n\t\"chgrp\",\n\t\"shutdown\",\n\t\"reboot\",\n\t\"halt\",\n\t\"poweroff\",\n\t\"kill -9\",\n\t\"killall\",\n\t\"pkill\",\n\t\"sudo rm -rf\",\n\t\"su\",\n\t\"passwd\",\n\t\"useradd\",\n\t\"userdel\",\n\t\"groupadd\",\n\t\"groupdel\",\n\t\"format\",\n\t\"fdisk\",\n\t\"mkfs\",\n\t\"dd if=/dev/zero\",\n\t\"shred\",\n\t\":(){:|:&};:\",\n] as const;\n\nexport function loadShellConfig(): ShellConfig {\n\tconst allowedDirectory = process.env.SHELL_ALLOWED_DIRECTORY || process.cwd();\n\tconst timeout = parseInt(process.env.SHELL_TIMEOUT || \"30000\", 10);\n\tconst maxOutputChars = parseInt(\n\t\tprocess.env.SHELL_MAX_OUTPUT_CHARS || \"200000\",\n\t\t10,\n\t);\n\tconst pendingMaxOutputChars = parseInt(\n\t\tprocess.env.SHELL_PENDING_MAX_OUTPUT_CHARS || \"200000\",\n\t\t10,\n\t);\n\tconst defaultBackgroundMs = parseInt(\n\t\tprocess.env.SHELL_BACKGROUND_MS || \"10000\",\n\t\t10,\n\t);\n\tconst allowBackground = process.env.SHELL_ALLOW_BACKGROUND !== \"false\";\n\n\tconst customForbidden = process.env.SHELL_FORBIDDEN_COMMANDS\n\t\t? process.env.SHELL_FORBIDDEN_COMMANDS.split(\",\").map((cmd) => cmd.trim())\n\t\t: [];\n\n\tconst forbiddenCommands = [\n\t\t...new Set([...DEFAULT_FORBIDDEN_COMMANDS, ...customForbidden]),\n\t];\n\n\tconst config: ShellConfig = {\n\t\tenabled: true,\n\t\tallowedDirectory,\n\t\ttimeout,\n\t\tforbiddenCommands,\n\t\tmaxOutputChars,\n\t\tpendingMaxOutputChars,\n\t\tdefaultBackgroundMs,\n\t\tallowBackground,\n\t};\n\n\tconst parseResult = configSchema.safeParse(config);\n\tif (!parseResult.success) {\n\t\tconst errorMessage =\n\t\t\tparseResult.error.issues?.[0]?.message || parseResult.error.toString();\n\t\tthrow new Error(`Shell plugin configuration error: ${errorMessage}`);\n\t}\n\n\ttry {\n\t\tconst stats = fs.statSync(allowedDirectory);\n\t\tif (!stats.isDirectory()) {\n\t\t\tthrow new Error(\n\t\t\t\t`SHELL_ALLOWED_DIRECTORY is not a directory: ${allowedDirectory}`,\n\t\t\t);\n\t\t}\n\t\tconfig.allowedDirectory = path.resolve(allowedDirectory);\n\t\tlogger.info(\n\t\t\t`Shell plugin enabled with allowed directory: ${config.allowedDirectory}, ` +\n\t\t\t\t`background: ${allowBackground}, timeout: ${timeout}ms`,\n\t\t);\n\t} catch (error) {\n\t\tif (\n\t\t\terror instanceof Error &&\n\t\t\t\"code\" in error &&\n\t\t\t(error as NodeJS.ErrnoException).code === \"ENOENT\"\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t`SHELL_ALLOWED_DIRECTORY does not exist: ${allowedDirectory}`,\n\t\t\t);\n\t\t}\n\t\tthrow error;\n\t}\n\n\treturn config;\n}\n",
26
26
  "import path from \"node:path\";\nimport { logger } from \"@elizaos/core\";\n\nexport function validatePath(\n\tcommandPath: string,\n\tallowedDir: string,\n\tcurrentDir: string,\n): string | null {\n\tconst resolvedPath = path.resolve(currentDir, commandPath);\n\tconst normalizedPath = path.normalize(resolvedPath);\n\tconst normalizedAllowed = path.normalize(allowedDir);\n\n\tif (!normalizedPath.startsWith(normalizedAllowed)) {\n\t\tlogger.warn(\n\t\t\t`Path validation failed: ${normalizedPath} is outside allowed directory ${normalizedAllowed}`,\n\t\t);\n\t\treturn null;\n\t}\n\n\treturn normalizedPath;\n}\n\nexport function isSafeCommand(command: string): boolean {\n\tconst pathTraversalPatterns = [/\\.\\.\\//g, /\\.\\.\\\\/g, /\\/\\.\\./g, /\\\\\\.\\./g];\n\n\tconst dangerousPatterns = [\n\t\t/\\$\\(/g,\n\t\t/`[^']*`/g,\n\t\t/\\|\\s*sudo/g,\n\t\t/;\\s*sudo/g,\n\t\t/&\\s*&/g,\n\t\t/\\|\\s*\\|/g,\n\t];\n\n\tfor (const pattern of pathTraversalPatterns) {\n\t\tif (pattern.test(command)) {\n\t\t\tlogger.warn(`Path traversal detected in command: ${command}`);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tfor (const pattern of dangerousPatterns) {\n\t\tif (pattern.test(command)) {\n\t\t\tlogger.warn(`Dangerous pattern detected in command: ${command}`);\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tconst pipeCount = (command.match(/\\|/g) || []).length;\n\tif (pipeCount > 1) {\n\t\tlogger.warn(`Multiple pipes detected in command: ${command}`);\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nexport function extractBaseCommand(fullCommand: string): string {\n\tconst parts = fullCommand.trim().split(/\\s+/);\n\treturn parts[0] || \"\";\n}\n\nexport function isForbiddenCommand(\n\tcommand: string,\n\tforbiddenCommands: string[],\n): boolean {\n\tconst normalizedCommand = command.trim().toLowerCase();\n\n\treturn forbiddenCommands.some((forbidden) => {\n\t\tconst forbiddenLower = forbidden.toLowerCase();\n\n\t\tif (normalizedCommand.startsWith(forbiddenLower)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (!forbidden.includes(\" \")) {\n\t\t\tconst baseCommand = extractBaseCommand(command);\n\t\t\tif (baseCommand.toLowerCase() === forbiddenLower) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t});\n}\n",
@@ -29,7 +29,7 @@
29
29
  "/**\n * Process Registry - Manages running and finished shell sessions\n * Ported from otto bash-process-registry.ts\n */\n\nimport type { FinishedSession, ProcessSession, ProcessStatus } from \"../types\";\n\nconst DEFAULT_JOB_TTL_MS = 30 * 60 * 1000; // 30 minutes\nconst MIN_JOB_TTL_MS = 60 * 1000; // 1 minute\nconst MAX_JOB_TTL_MS = 3 * 60 * 60 * 1000; // 3 hours\nconst DEFAULT_PENDING_OUTPUT_CHARS = 30_000;\n\nfunction clampTtl(value: number | undefined): number {\n\tif (!value || Number.isNaN(value)) {\n\t\treturn DEFAULT_JOB_TTL_MS;\n\t}\n\treturn Math.min(Math.max(value, MIN_JOB_TTL_MS), MAX_JOB_TTL_MS);\n}\n\nlet jobTtlMs = clampTtl(\n\tNumber.parseInt(process.env.SHELL_JOB_TTL_MS ?? \"\", 10),\n);\n\nconst runningSessions = new Map<string, ProcessSession>();\nconst finishedSessions = new Map<string, FinishedSession>();\n\nlet sweeper: NodeJS.Timeout | null = null;\n\nfunction isSessionIdTaken(id: string): boolean {\n\treturn runningSessions.has(id) || finishedSessions.has(id);\n}\n\n// Session slug generation\nconst SLUG_ADJECTIVES = [\n\t\"amber\",\n\t\"briny\",\n\t\"brisk\",\n\t\"calm\",\n\t\"clear\",\n\t\"cool\",\n\t\"crisp\",\n\t\"dawn\",\n\t\"delta\",\n\t\"ember\",\n\t\"faint\",\n\t\"fast\",\n\t\"fresh\",\n\t\"gentle\",\n\t\"glow\",\n\t\"good\",\n\t\"grand\",\n\t\"keen\",\n\t\"kind\",\n\t\"lucky\",\n\t\"marine\",\n\t\"mellow\",\n\t\"mild\",\n\t\"neat\",\n\t\"nimble\",\n\t\"nova\",\n\t\"oceanic\",\n\t\"plaid\",\n\t\"quick\",\n\t\"quiet\",\n\t\"rapid\",\n\t\"salty\",\n\t\"sharp\",\n\t\"swift\",\n\t\"tender\",\n\t\"tidal\",\n\t\"tidy\",\n\t\"tide\",\n\t\"vivid\",\n\t\"warm\",\n\t\"wild\",\n\t\"young\",\n];\n\nconst SLUG_NOUNS = [\n\t\"atlas\",\n\t\"basil\",\n\t\"bison\",\n\t\"bloom\",\n\t\"breeze\",\n\t\"canyon\",\n\t\"cedar\",\n\t\"claw\",\n\t\"cloud\",\n\t\"comet\",\n\t\"coral\",\n\t\"cove\",\n\t\"crest\",\n\t\"daisy\",\n\t\"dune\",\n\t\"ember\",\n\t\"falcon\",\n\t\"fjord\",\n\t\"forest\",\n\t\"glade\",\n\t\"gulf\",\n\t\"harbor\",\n\t\"haven\",\n\t\"kelp\",\n\t\"lagoon\",\n\t\"meadow\",\n\t\"mist\",\n\t\"nexus\",\n\t\"ocean\",\n\t\"orbit\",\n\t\"otter\",\n\t\"pine\",\n\t\"prairie\",\n\t\"reef\",\n\t\"ridge\",\n\t\"river\",\n\t\"rook\",\n\t\"sable\",\n\t\"sage\",\n\t\"shell\",\n\t\"shoal\",\n\t\"shore\",\n\t\"slug\",\n\t\"summit\",\n\t\"trail\",\n\t\"valley\",\n\t\"wharf\",\n\t\"willow\",\n\t\"zephyr\",\n];\n\nfunction randomChoice(values: string[], fallback: string): string {\n\treturn values[Math.floor(Math.random() * values.length)] ?? fallback;\n}\n\nfunction createSlugBase(words = 2): string {\n\tconst parts = [\n\t\trandomChoice(SLUG_ADJECTIVES, \"steady\"),\n\t\trandomChoice(SLUG_NOUNS, \"harbor\"),\n\t];\n\tif (words > 2) {\n\t\tparts.push(randomChoice(SLUG_NOUNS, \"reef\"));\n\t}\n\treturn parts.join(\"-\");\n}\n\nexport function createSessionSlug(isTaken?: (id: string) => boolean): string {\n\tconst isIdTaken = isTaken ?? isSessionIdTaken;\n\tfor (let attempt = 0; attempt < 12; attempt += 1) {\n\t\tconst base = createSlugBase(2);\n\t\tif (!isIdTaken(base)) {\n\t\t\treturn base;\n\t\t}\n\t\tfor (let i = 2; i <= 12; i += 1) {\n\t\t\tconst candidate = `${base}-${i}`;\n\t\t\tif (!isIdTaken(candidate)) {\n\t\t\t\treturn candidate;\n\t\t\t}\n\t\t}\n\t}\n\tfor (let attempt = 0; attempt < 12; attempt += 1) {\n\t\tconst base = createSlugBase(3);\n\t\tif (!isIdTaken(base)) {\n\t\t\treturn base;\n\t\t}\n\t\tfor (let i = 2; i <= 12; i += 1) {\n\t\t\tconst candidate = `${base}-${i}`;\n\t\t\tif (!isIdTaken(candidate)) {\n\t\t\t\treturn candidate;\n\t\t\t}\n\t\t}\n\t}\n\tconst fallback = `${createSlugBase(3)}-${Math.random().toString(36).slice(2, 5)}`;\n\treturn isIdTaken(fallback)\n\t\t? `${fallback}-${Date.now().toString(36)}`\n\t\t: fallback;\n}\n\nexport function addSession(session: ProcessSession): void {\n\trunningSessions.set(session.id, session);\n\tstartSweeper();\n}\n\nexport function getSession(id: string): ProcessSession | undefined {\n\treturn runningSessions.get(id);\n}\n\nexport function getFinishedSession(id: string): FinishedSession | undefined {\n\treturn finishedSessions.get(id);\n}\n\nexport function deleteSession(id: string): void {\n\trunningSessions.delete(id);\n\tfinishedSessions.delete(id);\n}\n\nfunction sumPendingChars(buffer: string[]): number {\n\tlet total = 0;\n\tfor (const chunk of buffer) {\n\t\ttotal += chunk.length;\n\t}\n\treturn total;\n}\n\nfunction capPendingBuffer(\n\tbuffer: string[],\n\tpendingChars: number,\n\tcap: number,\n): number {\n\tif (pendingChars <= cap) {\n\t\treturn pendingChars;\n\t}\n\tconst last = buffer.at(-1);\n\tif (last && last.length >= cap) {\n\t\tbuffer.length = 0;\n\t\tbuffer.push(last.slice(last.length - cap));\n\t\treturn cap;\n\t}\n\twhile (buffer.length && pendingChars - buffer[0].length >= cap) {\n\t\tpendingChars -= buffer[0].length;\n\t\tbuffer.shift();\n\t}\n\tif (buffer.length && pendingChars > cap) {\n\t\tconst overflow = pendingChars - cap;\n\t\tbuffer[0] = buffer[0].slice(overflow);\n\t\tpendingChars = cap;\n\t}\n\treturn pendingChars;\n}\n\nexport function tail(text: string, max = 2000): string {\n\tif (text.length <= max) {\n\t\treturn text;\n\t}\n\treturn text.slice(text.length - max);\n}\n\nexport function trimWithCap(text: string, max: number): string {\n\tif (text.length <= max) {\n\t\treturn text;\n\t}\n\treturn text.slice(text.length - max);\n}\n\nexport function appendOutput(\n\tsession: ProcessSession,\n\tstream: \"stdout\" | \"stderr\",\n\tchunk: string,\n): void {\n\tsession.pendingStdout ??= [];\n\tsession.pendingStderr ??= [];\n\tsession.pendingStdoutChars ??= sumPendingChars(session.pendingStdout);\n\tsession.pendingStderrChars ??= sumPendingChars(session.pendingStderr);\n\tconst buffer =\n\t\tstream === \"stdout\" ? session.pendingStdout : session.pendingStderr;\n\tconst bufferChars =\n\t\tstream === \"stdout\"\n\t\t\t? session.pendingStdoutChars\n\t\t\t: session.pendingStderrChars;\n\tconst pendingCap = Math.min(\n\t\tsession.pendingMaxOutputChars ?? DEFAULT_PENDING_OUTPUT_CHARS,\n\t\tsession.maxOutputChars,\n\t);\n\tbuffer.push(chunk);\n\tlet pendingChars = bufferChars + chunk.length;\n\tif (pendingChars > pendingCap) {\n\t\tsession.truncated = true;\n\t\tpendingChars = capPendingBuffer(buffer, pendingChars, pendingCap);\n\t}\n\tif (stream === \"stdout\") {\n\t\tsession.pendingStdoutChars = pendingChars;\n\t} else {\n\t\tsession.pendingStderrChars = pendingChars;\n\t}\n\tsession.totalOutputChars += chunk.length;\n\tconst aggregated = trimWithCap(\n\t\tsession.aggregated + chunk,\n\t\tsession.maxOutputChars,\n\t);\n\tsession.truncated =\n\t\tsession.truncated ||\n\t\taggregated.length < session.aggregated.length + chunk.length;\n\tsession.aggregated = aggregated;\n\tsession.tail = tail(session.aggregated, 2000);\n}\n\nexport function drainSession(session: ProcessSession): {\n\tstdout: string;\n\tstderr: string;\n} {\n\tconst stdout = session.pendingStdout.join(\"\");\n\tconst stderr = session.pendingStderr.join(\"\");\n\tsession.pendingStdout = [];\n\tsession.pendingStderr = [];\n\tsession.pendingStdoutChars = 0;\n\tsession.pendingStderrChars = 0;\n\treturn { stdout, stderr };\n}\n\nfunction moveToFinished(session: ProcessSession, status: ProcessStatus): void {\n\trunningSessions.delete(session.id);\n\tif (!session.backgrounded) {\n\t\treturn;\n\t}\n\tfinishedSessions.set(session.id, {\n\t\tid: session.id,\n\t\tcommand: session.command,\n\t\tscopeKey: session.scopeKey,\n\t\tstartedAt: session.startedAt,\n\t\tendedAt: Date.now(),\n\t\tcwd: session.cwd,\n\t\tstatus,\n\t\texitCode: session.exitCode,\n\t\texitSignal: session.exitSignal,\n\t\taggregated: session.aggregated,\n\t\ttail: session.tail,\n\t\ttruncated: session.truncated,\n\t\ttotalOutputChars: session.totalOutputChars,\n\t});\n}\n\nexport function markExited(\n\tsession: ProcessSession,\n\texitCode: number | null,\n\texitSignal: NodeJS.Signals | number | null,\n\tstatus: ProcessStatus,\n): void {\n\tsession.exited = true;\n\tsession.exitCode = exitCode;\n\tsession.exitSignal = exitSignal;\n\tsession.tail = tail(session.aggregated, 2000);\n\tmoveToFinished(session, status);\n}\n\nexport function markBackgrounded(session: ProcessSession): void {\n\tsession.backgrounded = true;\n}\n\nexport function listRunningSessions(): ProcessSession[] {\n\treturn Array.from(runningSessions.values()).filter((s) => s.backgrounded);\n}\n\nexport function listFinishedSessions(): FinishedSession[] {\n\treturn Array.from(finishedSessions.values());\n}\n\nexport function clearFinished(): void {\n\tfinishedSessions.clear();\n}\n\nexport function resetProcessRegistryForTests(): void {\n\trunningSessions.clear();\n\tfinishedSessions.clear();\n\tstopSweeper();\n}\n\nexport function setJobTtlMs(value?: number): void {\n\tif (value === undefined || Number.isNaN(value)) {\n\t\treturn;\n\t}\n\tjobTtlMs = clampTtl(value);\n\tstopSweeper();\n\tstartSweeper();\n}\n\nfunction pruneFinishedSessions(): void {\n\tconst cutoff = Date.now() - jobTtlMs;\n\tfor (const [id, session] of finishedSessions.entries()) {\n\t\tif (session.endedAt < cutoff) {\n\t\t\tfinishedSessions.delete(id);\n\t\t}\n\t}\n}\n\nfunction startSweeper(): void {\n\tif (sweeper) {\n\t\treturn;\n\t}\n\tsweeper = setInterval(pruneFinishedSessions, Math.max(30_000, jobTtlMs / 6));\n\tsweeper.unref?.();\n}\n\nfunction stopSweeper(): void {\n\tif (!sweeper) {\n\t\treturn;\n\t}\n\tclearInterval(sweeper);\n\tsweeper = null;\n}\n",
30
30
  "import type { Plugin } from \"@elizaos/core\";\nimport { clearHistory } from \"./actions\";\nimport { ExecApprovalService } from \"./approvals\";\nimport { shellHistoryProvider } from \"./providers\";\nimport { terminalUsageProvider } from \"./providers/terminalUsage\";\nimport { ShellService } from \"./services/shellService\";\n\nexport const shellPlugin: Plugin = {\n\tname: \"shell\",\n\tdescription:\n\t\t\"Shell observability and history management providers\",\n\tservices: [ShellService, ExecApprovalService],\n\tactions: [clearHistory],\n\tproviders: [shellHistoryProvider, terminalUsageProvider],\n};\n\nexport default shellPlugin;\n\n// Actions\nexport { clearHistory } from \"./actions/clearHistory\";\n\n// Approvals\nexport {\n\taddAllowlistEntry,\n\tanalyzeShellCommand,\n\ttype CommandCheckResult,\n\ttype CommandResolution,\n\tDEFAULT_SAFE_BINS,\n\tEXEC_APPROVAL_DEFAULTS,\n\ttype ExecAllowlistAnalysis,\n\ttype ExecAllowlistEntry,\n\ttype ExecAllowlistEvaluation,\n\ttype ExecApprovalDecision,\n\ttype ExecApprovalRequest,\n\ttype ExecApprovalResult,\n\tExecApprovalService,\n\ttype ExecApprovalsAgent,\n\ttype ExecApprovalsDefaults,\n\ttype ExecApprovalsFile,\n\ttype ExecApprovalsResolved,\n\ttype ExecApprovalsSnapshot,\n\ttype ExecAsk,\n\ttype ExecCommandAnalysis,\n\ttype ExecCommandSegment,\n\ttype ExecHost,\n\ttype ExecSecurity,\n\tensureApprovals,\n\tevaluateExecAllowlist,\n\tevaluateShellAllowlist,\n\tgetApprovalFilePath,\n\tgetApprovalSocketPath,\n\tisSafeBinUsage,\n\tloadApprovals,\n\tmatchAllowlist,\n\tmaxAsk,\n\tminSecurity,\n\tnormalizeApprovals,\n\tnormalizeSafeBins,\n\treadApprovalsSnapshot,\n\trecordAllowlistUse,\n\trequiresExecApproval,\n\tresolveApprovals,\n\tresolveApprovalsFromFile,\n\tresolveCommandFromArgv,\n\tresolveCommandResolution,\n\tresolveSafeBins,\n\tsaveApprovals,\n} from \"./approvals\";\n\n// Providers\nexport { terminalUsageProvider } from \"./providers/terminalUsage\";\nexport { shellHistoryProvider } from \"./providers/shellHistoryProvider\";\nexport {\n\taddSession,\n\tappendOutput,\n\tclearFinished,\n\tcreateSessionSlug,\n\tdeleteSession,\n\tdrainSession,\n\tgetFinishedSession,\n\tgetSession,\n\tlistFinishedSessions,\n\tlistRunningSessions,\n\tmarkBackgrounded,\n\tmarkExited,\n\tresetProcessRegistryForTests,\n\tsetJobTtlMs,\n\ttail,\n\ttrimWithCap,\n} from \"./services/processRegistry\";\n// Services\nexport { ShellService } from \"./services/shellService\";\n\n// Types\nexport type {\n\tCommandHistoryEntry,\n\tCommandResult,\n\tExecResult,\n\tExecuteOptions,\n\tFileOperation,\n\tFileOperationType,\n\tFinishedSession,\n\tProcessAction,\n\tProcessActionParams,\n\tProcessSession,\n\tProcessStatus,\n\tPtyExitEvent,\n\tPtyHandle,\n\tPtyListener,\n\tPtySpawn,\n\tSessionStdin,\n\tShellConfig,\n} from \"./types\";\n\n// Utilities\nexport {\n\tDEFAULT_FORBIDDEN_COMMANDS,\n\textractBaseCommand,\n\tisForbiddenCommand,\n\tisSafeCommand,\n\tloadShellConfig,\n\tvalidatePath,\n} from \"./utils\";\nexport {\n\tBRACKETED_PASTE_END,\n\tBRACKETED_PASTE_START,\n\tbuildCursorPositionResponse,\n\tencodeKeySequence,\n\tencodePaste,\n\ttype KeyEncodingRequest,\n\ttype KeyEncodingResult,\n\tstripDsrRequests,\n} from \"./utils/ptyKeys\";\nexport {\n\tchunkString,\n\tclampNumber,\n\tcoerceEnv,\n\tderiveSessionName,\n\tformatDuration,\n\tformatSpawnError,\n\tgetShellConfig,\n\tkillProcessTree,\n\tkillSession,\n\tpad,\n\treadEnvInt,\n\tresolveWorkdir,\n\ttype SpawnFallback,\n\ttype SpawnWithFallbackResult,\n\tsanitizeBinaryOutput,\n\tsliceLogLines,\n\tsliceUtf16Safe,\n\tspawnWithFallback,\n\ttruncateMiddle,\n} from \"./utils/shellUtils\";\n"
31
31
  ],
32
- "mappings": "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",
33
- "debugId": "EB43D3D65D87A50A64756E2164756E21",
32
+ "mappings": "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",
33
+ "debugId": "89E93595C791F9E464756E2164756E21",
34
34
  "names": []
35
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"terminalUsage.d.ts","sourceRoot":"","sources":["../../providers/terminalUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,QAAQ,EAGhB,MAAM,eAAe,CAAC;AAGvB,eAAO,MAAM,qBAAqB,EAAE,QAqDnC,CAAC"}
1
+ {"version":3,"file":"terminalUsage.d.ts","sourceRoot":"","sources":["../../providers/terminalUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,QAAQ,EAGd,MAAM,eAAe,CAAC;AACvB,eAAO,MAAM,qBAAqB,EAAE,QA0BnC,CAAC"}
package/package.json CHANGED
@@ -1,126 +1,126 @@
1
1
  {
2
- "name": "@elizaos/plugin-shell",
3
- "version": "2.0.0-alpha.7",
4
- "description": "Shell history and observability plugin for ElizaOS",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "module": "dist/index.js",
8
- "types": "dist/index.d.ts",
9
- "sideEffects": false,
10
- "repository": {
11
- "type": "git",
12
- "url": "https://github.com/elizaos/eliza.git"
13
- },
14
- "exports": {
15
- "./package.json": "./package.json",
16
- ".": {
17
- "types": "./dist/index.d.ts",
18
- "import": "./dist/index.js",
19
- "default": "./dist/index.js"
20
- }
21
- },
22
- "files": [
23
- "dist"
24
- ],
25
- "keywords": [
26
- "eliza",
27
- "plugin",
28
- "shell",
29
- "terminal",
30
- "command",
31
- "history"
32
- ],
33
- "author": "elizaOS",
34
- "license": "MIT",
35
- "dependencies": {
36
- "@elizaos/core": "workspace:*",
37
- "cross-spawn": "^7.0.6",
38
- "zod": "^4.3.6"
39
- },
40
- "optionalDependencies": {
41
- "@lydell/node-pty": "^1.1.0"
42
- },
43
- "devDependencies": {
44
- "@biomejs/biome": "^2.3.11",
45
- "@types/cross-spawn": "^6.0.6",
46
- "@types/node": "^25.0.3",
47
- "typescript": "^5.9.3",
48
- "vitest": "^4.0.0"
49
- },
50
- "scripts": {
51
- "build": "bun run build.ts",
52
- "build:ts": "bun run build.ts",
53
- "dev": "bun --hot build.ts",
54
- "clean": "rm -rf dist .turbo node_modules",
55
- "test": "vitest run",
56
- "typecheck": "echo \"Typecheck skipped for release\"",
57
- "lint": "echo \"Lint skipped for release\"",
58
- "lint:check": "bun run lint",
59
- "format": "bunx @biomejs/biome format --write .",
60
- "format:check": "bunx @biomejs/biome format ."
61
- },
62
- "publishConfig": {
63
- "access": "public"
64
- },
65
- "agentConfig": {
66
- "pluginType": "elizaos:plugin:1.0.0",
67
- "pluginParameters": {
68
- "SHELL_ALLOWED_DIRECTORY": {
69
- "type": "string",
70
- "description": "The directory that shell commands are restricted to. Commands cannot execute outside this directory.",
71
- "required": true,
72
- "sensitive": false
73
- },
74
- "SHELL_TIMEOUT": {
75
- "type": "number",
76
- "description": "Maximum command execution timeout in milliseconds",
77
- "required": false,
78
- "default": 30000,
79
- "sensitive": false
80
- },
81
- "SHELL_FORBIDDEN_COMMANDS": {
82
- "type": "string",
83
- "description": "Comma-separated list of additional forbidden commands",
84
- "required": false,
85
- "sensitive": false
86
- },
87
- "SHELL_MAX_OUTPUT_CHARS": {
88
- "type": "number",
89
- "description": "Maximum output characters to capture from commands",
90
- "required": false,
91
- "default": 200000,
92
- "sensitive": false
93
- },
94
- "SHELL_BACKGROUND_MS": {
95
- "type": "number",
96
- "description": "Default milliseconds to wait before backgrounding commands",
97
- "required": false,
98
- "default": 10000,
99
- "sensitive": false
100
- },
101
- "SHELL_ALLOW_BACKGROUND": {
102
- "type": "boolean",
103
- "description": "Whether to allow background command execution",
104
- "required": false,
105
- "default": true,
106
- "sensitive": false
107
- },
108
- "SHELL_JOB_TTL_MS": {
109
- "type": "number",
110
- "description": "Time-to-live for finished session records in milliseconds",
111
- "required": false,
112
- "default": 1800000,
113
- "sensitive": false
114
- }
115
- }
116
- },
117
- "milady": {
118
- "platforms": [
119
- "node"
120
- ],
121
- "runtime": "node",
122
- "platformDetails": {
123
- "node": "Default export (Node.js)"
124
- }
125
- }
126
- }
2
+ "name": "@elizaos/plugin-shell",
3
+ "version": "2.0.0-alpha.9",
4
+ "description": "Shell history and observability plugin for ElizaOS",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "sideEffects": false,
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/elizaos/eliza.git"
13
+ },
14
+ "exports": {
15
+ "./package.json": "./package.json",
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "import": "./dist/index.js",
19
+ "default": "./dist/index.js"
20
+ }
21
+ },
22
+ "files": [
23
+ "dist"
24
+ ],
25
+ "keywords": [
26
+ "eliza",
27
+ "plugin",
28
+ "shell",
29
+ "terminal",
30
+ "command",
31
+ "history"
32
+ ],
33
+ "author": "elizaOS",
34
+ "license": "MIT",
35
+ "dependencies": {
36
+ "@elizaos/core": "next",
37
+ "cross-spawn": "^7.0.6",
38
+ "zod": "^4.3.6"
39
+ },
40
+ "optionalDependencies": {
41
+ "@lydell/node-pty": "^1.1.0"
42
+ },
43
+ "devDependencies": {
44
+ "@biomejs/biome": "^2.3.11",
45
+ "@types/cross-spawn": "^6.0.6",
46
+ "@types/node": "^25.0.3",
47
+ "typescript": "^5.9.3",
48
+ "vitest": "^4.0.0"
49
+ },
50
+ "publishConfig": {
51
+ "access": "public"
52
+ },
53
+ "agentConfig": {
54
+ "pluginType": "elizaos:plugin:1.0.0",
55
+ "pluginParameters": {
56
+ "SHELL_ALLOWED_DIRECTORY": {
57
+ "type": "string",
58
+ "description": "The directory that shell commands are restricted to. Commands cannot execute outside this directory.",
59
+ "required": true,
60
+ "sensitive": false
61
+ },
62
+ "SHELL_TIMEOUT": {
63
+ "type": "number",
64
+ "description": "Maximum command execution timeout in milliseconds",
65
+ "required": false,
66
+ "default": 30000,
67
+ "sensitive": false
68
+ },
69
+ "SHELL_FORBIDDEN_COMMANDS": {
70
+ "type": "string",
71
+ "description": "Comma-separated list of additional forbidden commands",
72
+ "required": false,
73
+ "sensitive": false
74
+ },
75
+ "SHELL_MAX_OUTPUT_CHARS": {
76
+ "type": "number",
77
+ "description": "Maximum output characters to capture from commands",
78
+ "required": false,
79
+ "default": 200000,
80
+ "sensitive": false
81
+ },
82
+ "SHELL_BACKGROUND_MS": {
83
+ "type": "number",
84
+ "description": "Default milliseconds to wait before backgrounding commands",
85
+ "required": false,
86
+ "default": 10000,
87
+ "sensitive": false
88
+ },
89
+ "SHELL_ALLOW_BACKGROUND": {
90
+ "type": "boolean",
91
+ "description": "Whether to allow background command execution",
92
+ "required": false,
93
+ "default": true,
94
+ "sensitive": false
95
+ },
96
+ "SHELL_JOB_TTL_MS": {
97
+ "type": "number",
98
+ "description": "Time-to-live for finished session records in milliseconds",
99
+ "required": false,
100
+ "default": 1800000,
101
+ "sensitive": false
102
+ }
103
+ }
104
+ },
105
+ "milady": {
106
+ "platforms": [
107
+ "node"
108
+ ],
109
+ "runtime": "node",
110
+ "platformDetails": {
111
+ "node": "Default export (Node.js)"
112
+ }
113
+ },
114
+ "scripts": {
115
+ "build": "bun run build.ts",
116
+ "build:ts": "bun run build.ts",
117
+ "dev": "bun --hot build.ts",
118
+ "clean": "rm -rf dist .turbo node_modules",
119
+ "test": "vitest run",
120
+ "typecheck": "echo \"Typecheck skipped for release\"",
121
+ "lint": "echo \"Lint skipped for release\"",
122
+ "lint:check": "bun run lint",
123
+ "format": "bunx @biomejs/biome format --write .",
124
+ "format:check": "bunx @biomejs/biome format ."
125
+ }
126
+ }