@elizaos/plugin-code 2.0.0-alpha.1 → 2.0.0-alpha.3

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.map CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../generated/specs/specs.ts", "../generated/specs/spec-helpers.ts", "../actions/changeDirectory.ts", "../actions/editFile.ts", "../actions/executeShell.ts", "../actions/git.ts", "../actions/listFiles.ts", "../actions/readFile.ts", "../actions/searchFiles.ts", "../actions/writeFile.ts", "../providers/coderStatusProvider.ts", "../services/coderService.ts", "../utils/config.ts", "../utils/pathUtils.ts", "../index.ts"],
3
+ "sources": ["../generated/specs/specs.ts", "../generated/specs/spec-helpers.ts", "../actions/changeDirectory.ts", "../actions/editFile.ts", "../actions/executeShell.ts", "../actions/git.ts", "../actions/listFiles.ts", "../actions/readFile.ts", "../actions/searchFiles.ts", "../actions/writeFile.ts", "../providers/coderStatusProvider.ts", "../services/coderService.ts", "../utils/config.ts", "../utils/pathUtils.ts", "../configureCodingTools.ts", "../index.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * Auto-generated canonical action/provider/evaluator docs for plugin-code.\n * DO NOT EDIT - Generated from prompts/specs/**.\n */\n\nexport type ActionDoc = {\n name: string;\n description: string;\n similes?: readonly string[];\n parameters?: readonly unknown[];\n examples?: readonly (readonly unknown[])[];\n};\n\nexport type ProviderDoc = {\n name: string;\n description: string;\n position?: number;\n dynamic?: boolean;\n};\n\nexport type EvaluatorDoc = {\n name: string;\n description: string;\n similes?: readonly string[];\n alwaysRun?: boolean;\n examples?: readonly unknown[];\n};\n\nexport const coreActionsSpec = {\n version: \"1.0.0\",\n actions: [\n {\n name: \"CHANGE_DIRECTORY\",\n description:\n \"Change the working directory (restricted to allowed directory).\",\n similes: [\"CD\", \"CWD\"],\n parameters: [],\n },\n {\n name: \"EDIT_FILE\",\n description: \"Replace a substring in a file (single replacement).\",\n similes: [\"REPLACE_IN_FILE\", \"PATCH_FILE\", \"MODIFY_FILE\"],\n parameters: [],\n },\n {\n name: \"EXECUTE_SHELL\",\n description:\n \"Execute a shell command in the current working directory (restricted).\",\n similes: [\"SHELL\", \"RUN_COMMAND\", \"EXEC\", \"TERMINAL\"],\n parameters: [],\n },\n {\n name: \"GIT\",\n description: \"Run a git command (restricted).\",\n similes: [\"GIT_COMMAND\", \"GIT_RUN\"],\n parameters: [],\n },\n {\n name: \"LIST_FILES\",\n description: \"List files in a directory.\",\n similes: [\"LS\", \"LIST_DIR\", \"LIST_DIRECTORY\", \"DIR\"],\n parameters: [],\n },\n {\n name: \"READ_FILE\",\n description: \"Read and return a file\",\n similes: [\"VIEW_FILE\", \"OPEN_FILE\", \"CAT_FILE\", \"SHOW_FILE\", \"GET_FILE\"],\n parameters: [],\n },\n {\n name: \"SEARCH_FILES\",\n description: \"Search for text across files under a directory.\",\n similes: [\"GREP\", \"RG\", \"FIND_IN_FILES\", \"SEARCH\"],\n parameters: [],\n },\n {\n name: \"WRITE_FILE\",\n description: \"Create or overwrite a file with given content.\",\n similes: [\"CREATE_FILE\", \"SAVE_FILE\", \"OUTPUT_FILE\"],\n parameters: [],\n },\n ],\n} as const;\nexport const allActionsSpec = {\n version: \"1.0.0\",\n actions: [\n {\n name: \"CHANGE_DIRECTORY\",\n description:\n \"Change the working directory (restricted to allowed directory).\",\n similes: [\"CD\", \"CWD\"],\n parameters: [],\n },\n {\n name: \"EDIT_FILE\",\n description: \"Replace a substring in a file (single replacement).\",\n similes: [\"REPLACE_IN_FILE\", \"PATCH_FILE\", \"MODIFY_FILE\"],\n parameters: [],\n },\n {\n name: \"EXECUTE_SHELL\",\n description:\n \"Execute a shell command in the current working directory (restricted).\",\n similes: [\"SHELL\", \"RUN_COMMAND\", \"EXEC\", \"TERMINAL\"],\n parameters: [],\n },\n {\n name: \"GIT\",\n description: \"Run a git command (restricted).\",\n similes: [\"GIT_COMMAND\", \"GIT_RUN\"],\n parameters: [],\n },\n {\n name: \"LIST_FILES\",\n description: \"List files in a directory.\",\n similes: [\"LS\", \"LIST_DIR\", \"LIST_DIRECTORY\", \"DIR\"],\n parameters: [],\n },\n {\n name: \"READ_FILE\",\n description: \"Read and return a file\",\n similes: [\"VIEW_FILE\", \"OPEN_FILE\", \"CAT_FILE\", \"SHOW_FILE\", \"GET_FILE\"],\n parameters: [],\n },\n {\n name: \"SEARCH_FILES\",\n description: \"Search for text across files under a directory.\",\n similes: [\"GREP\", \"RG\", \"FIND_IN_FILES\", \"SEARCH\"],\n parameters: [],\n },\n {\n name: \"WRITE_FILE\",\n description: \"Create or overwrite a file with given content.\",\n similes: [\"CREATE_FILE\", \"SAVE_FILE\", \"OUTPUT_FILE\"],\n parameters: [],\n },\n ],\n} as const;\nexport const coreProvidersSpec = {\n version: \"1.0.0\",\n providers: [\n {\n name: \"CODER_STATUS\",\n description:\n \"Provides current working directory, allowed directory, and recent shell/file operations\",\n dynamic: true,\n },\n ],\n} as const;\nexport const allProvidersSpec = {\n version: \"1.0.0\",\n providers: [\n {\n name: \"CODER_STATUS\",\n description:\n \"Provides current working directory, allowed directory, and recent shell/file operations\",\n dynamic: true,\n },\n ],\n} as const;\nexport const coreEvaluatorsSpec = {\n version: \"1.0.0\",\n evaluators: [],\n} as const;\nexport const allEvaluatorsSpec = {\n version: \"1.0.0\",\n evaluators: [],\n} as const;\n\nexport const coreActionDocs: readonly ActionDoc[] = coreActionsSpec.actions;\nexport const allActionDocs: readonly ActionDoc[] = allActionsSpec.actions;\nexport const coreProviderDocs: readonly ProviderDoc[] =\n coreProvidersSpec.providers;\nexport const allProviderDocs: readonly ProviderDoc[] =\n allProvidersSpec.providers;\nexport const coreEvaluatorDocs: readonly EvaluatorDoc[] =\n coreEvaluatorsSpec.evaluators;\nexport const allEvaluatorDocs: readonly EvaluatorDoc[] =\n allEvaluatorsSpec.evaluators;\n",
6
6
  "/**\n * Helper functions to lookup action/provider/evaluator specs by name.\n * These allow language-specific implementations to import their text content\n * (description, similes, examples) from the centralized specs.\n *\n * DO NOT EDIT the spec data - update prompts/actions.json, prompts/providers.json, prompts/evaluators.json and regenerate.\n */\n\nimport {\n type ActionDoc,\n allActionDocs,\n allEvaluatorDocs,\n allProviderDocs,\n coreActionDocs,\n coreEvaluatorDocs,\n coreProviderDocs,\n type EvaluatorDoc,\n type ProviderDoc,\n} from \"./specs\";\n\n// Build lookup maps for O(1) access\nconst coreActionMap = new Map<string, ActionDoc>(\n coreActionDocs.map((doc) => [doc.name, doc]),\n);\nconst allActionMap = new Map<string, ActionDoc>(\n allActionDocs.map((doc) => [doc.name, doc]),\n);\nconst coreProviderMap = new Map<string, ProviderDoc>(\n coreProviderDocs.map((doc) => [doc.name, doc]),\n);\nconst allProviderMap = new Map<string, ProviderDoc>(\n allProviderDocs.map((doc) => [doc.name, doc]),\n);\nconst coreEvaluatorMap = new Map<string, EvaluatorDoc>(\n coreEvaluatorDocs.map((doc) => [doc.name, doc]),\n);\nconst allEvaluatorMap = new Map<string, EvaluatorDoc>(\n allEvaluatorDocs.map((doc) => [doc.name, doc]),\n);\n\n/**\n * Get an action spec by name from the core specs.\n * @param name - The action name\n * @returns The action spec or undefined if not found\n */\nexport function getActionSpec(name: string): ActionDoc | undefined {\n return coreActionMap.get(name) ?? allActionMap.get(name);\n}\n\n/**\n * Get an action spec by name, throwing if not found.\n * @param name - The action name\n * @returns The action spec\n * @throws Error if the action is not found\n */\nexport function requireActionSpec(name: string): ActionDoc {\n const spec = getActionSpec(name);\n if (!spec) {\n throw new Error(`Action spec not found: ${name}`);\n }\n return spec;\n}\n\n/**\n * Get a provider spec by name from the core specs.\n * @param name - The provider name\n * @returns The provider spec or undefined if not found\n */\nexport function getProviderSpec(name: string): ProviderDoc | undefined {\n return coreProviderMap.get(name) ?? allProviderMap.get(name);\n}\n\n/**\n * Get a provider spec by name, throwing if not found.\n * @param name - The provider name\n * @returns The provider spec\n * @throws Error if the provider is not found\n */\nexport function requireProviderSpec(name: string): ProviderDoc {\n const spec = getProviderSpec(name);\n if (!spec) {\n throw new Error(`Provider spec not found: ${name}`);\n }\n return spec;\n}\n\n/**\n * Get an evaluator spec by name from the core specs.\n * @param name - The evaluator name\n * @returns The evaluator spec or undefined if not found\n */\nexport function getEvaluatorSpec(name: string): EvaluatorDoc | undefined {\n return coreEvaluatorMap.get(name) ?? allEvaluatorMap.get(name);\n}\n\n/**\n * Get an evaluator spec by name, throwing if not found.\n * @param name - The evaluator name\n * @returns The evaluator spec\n * @throws Error if the evaluator is not found\n */\nexport function requireEvaluatorSpec(name: string): EvaluatorDoc {\n const spec = getEvaluatorSpec(name);\n if (!spec) {\n throw new Error(`Evaluator spec not found: ${name}`);\n }\n return spec;\n}\n\n// Re-export types for convenience\nexport type { ActionDoc, ProviderDoc, EvaluatorDoc };\n",
@@ -13,12 +13,13 @@
13
13
  "import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { requireActionSpec } from \"../generated/specs/spec-helpers\";\nimport type { CoderService } from \"../services/coderService\";\n\nfunction getInputs(options: HandlerOptions | undefined): {\n pattern: string;\n path: string;\n maxMatches: number;\n} {\n const opt = options as\n | {\n pattern?: string;\n path?: string;\n max_matches?: string;\n maxMatches?: number;\n }\n | undefined;\n const pattern = (opt?.pattern ?? \"\").trim();\n const p = (opt?.path ?? \".\").trim() || \".\";\n const mm =\n typeof opt?.maxMatches === \"number\"\n ? opt.maxMatches\n : Number.parseInt((opt?.max_matches ?? \"\").trim(), 10);\n const maxMatches = Number.isFinite(mm) && mm > 0 ? mm : 50;\n return { pattern, path: p, maxMatches };\n}\n\nconst spec = requireActionSpec(\"SEARCH_FILES\");\n\nexport const searchFiles: Action = {\n name: spec.name,\n similes: spec.similes ? [...spec.similes] : [],\n description: spec.description,\n validate: async (runtime: IAgentRuntime): Promise<boolean> =>\n runtime.getService<CoderService>(\"coder\") !== null,\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined,\n options: HandlerOptions | undefined,\n callback?: HandlerCallback,\n ): Promise<ActionResult> => {\n const svc = runtime.getService<CoderService>(\"coder\");\n if (!svc) {\n const msg = \"Coder service is not available.\";\n if (callback) await callback({ content: { text: msg } });\n return { success: false, text: msg };\n }\n\n const conv = message.roomId ?? message.agentId ?? runtime.agentId;\n const { pattern, path, maxMatches } = getInputs(options);\n if (!pattern) {\n const msg = \"Missing pattern.\";\n if (callback) await callback({ content: { text: msg } });\n return { success: false, text: msg };\n }\n\n const result = await svc.searchFiles(conv, pattern, path, maxMatches);\n if (!result.ok) {\n if (callback) await callback({ content: { text: result.error } });\n return { success: false, text: result.error };\n }\n\n const out =\n result.matches.length === 0\n ? `No matches for \"${pattern}\".`\n : result.matches\n .map((m) => `${m.file}:L${m.line}: ${m.content}`)\n .join(\"\\n\");\n if (callback) await callback({ content: { text: out } });\n return { success: true, text: out };\n },\n};\n",
14
14
  "import type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport { requireActionSpec } from \"../generated/specs/spec-helpers\";\nimport type { CoderService } from \"../services/coderService\";\n\nfunction getInputs(\n options: HandlerOptions | undefined,\n message: Memory,\n): { filepath: string; content: string } {\n const opt = options as { filepath?: string; content?: string } | undefined;\n const filepath = opt?.filepath?.trim() ?? \"\";\n const content = opt?.content ?? \"\";\n\n if (filepath) return { filepath, content };\n\n const text = message.content.text ?? \"\";\n const m = text.match(/[\"'`]([^\"'`]+)[\"'`]/);\n const inferred = m?.[1]?.trim() ?? \"\";\n return { filepath: inferred, content };\n}\n\nconst spec = requireActionSpec(\"WRITE_FILE\");\n\nexport const writeFile: Action = {\n name: spec.name,\n similes: spec.similes ? [...spec.similes] : [],\n description: spec.description,\n validate: async (runtime: IAgentRuntime): Promise<boolean> =>\n runtime.getService<CoderService>(\"coder\") !== null,\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n _state: State | undefined,\n options: HandlerOptions | undefined,\n callback?: HandlerCallback,\n ): Promise<ActionResult> => {\n const svc = runtime.getService<CoderService>(\"coder\");\n if (!svc) {\n const msg = \"Coder service is not available.\";\n if (callback) await callback({ content: { text: msg } });\n return { success: false, text: msg };\n }\n\n const { filepath, content } = getInputs(options, message);\n if (!filepath) {\n const msg = \"Missing filepath.\";\n if (callback) await callback({ content: { text: msg } });\n return { success: false, text: msg };\n }\n\n const conv = message.roomId ?? message.agentId ?? runtime.agentId;\n const result = await svc.writeFile(conv, filepath, content);\n if (!result.ok) {\n if (callback) await callback({ content: { text: result.error } });\n return { success: false, text: result.error };\n }\n\n const msg = `Wrote ${filepath} (${content.length} chars)`;\n if (callback) await callback({ content: { text: msg } });\n return { success: true, text: msg };\n },\n};\n",
15
15
  "import {\n addHeader,\n type IAgentRuntime,\n logger,\n type Memory,\n type Provider,\n type State,\n} from \"@elizaos/core\";\nimport { requireProviderSpec } from \"../generated/specs/spec-helpers\";\nimport type { CoderService } from \"../services/coderService\";\nimport type { CommandHistoryEntry, FileOperation } from \"../types\";\n\nconst MAX_OUTPUT_LENGTH = 8000;\nconst TRUNCATE_SEGMENT_LENGTH = 4000;\n\nconst spec = requireProviderSpec(\"coderStatusProvider\");\n\nexport const coderStatusProvider: Provider = {\n name: spec.name,\n description:\n \"Provides current working directory, allowed directory, and recent shell/file operations\",\n position: 99,\n get: async (runtime: IAgentRuntime, message: Memory, _state: State) => {\n const svc = runtime.getService<CoderService>(\"coder\");\n\n if (!svc) {\n logger.warn(\"[coderStatusProvider] Coder service not found\");\n return {\n values: {\n coderStatus: \"Coder service is not available\",\n currentWorkingDirectory: \"N/A\",\n allowedDirectory: \"N/A\",\n },\n text: addHeader(\"# Coder Status\", \"Coder service is not available\"),\n data: { historyCount: 0, cwd: \"N/A\", allowedDir: \"N/A\" },\n };\n }\n\n const conversationId = message.roomId ?? message.agentId ?? runtime.agentId;\n const history = svc.getCommandHistory(conversationId, 10);\n const cwd = svc.getCurrentDirectory(conversationId);\n const allowedDir = svc.getAllowedDirectory();\n\n let historyText = \"No commands in history.\";\n if (history.length > 0) {\n historyText = history\n .map((entry: CommandHistoryEntry) => {\n let entryStr = `[${new Date(entry.timestamp).toISOString()}] ${entry.workingDirectory}> ${entry.command}`;\n if (entry.stdout) {\n if (entry.stdout.length > MAX_OUTPUT_LENGTH) {\n entryStr += `\\n Output: ${entry.stdout.substring(0, TRUNCATE_SEGMENT_LENGTH)}\\n ... [TRUNCATED] ...\\n ${entry.stdout.substring(entry.stdout.length - TRUNCATE_SEGMENT_LENGTH)}`;\n } else {\n entryStr += `\\n Output: ${entry.stdout}`;\n }\n }\n if (entry.stderr) {\n if (entry.stderr.length > MAX_OUTPUT_LENGTH) {\n entryStr += `\\n Error: ${entry.stderr.substring(0, TRUNCATE_SEGMENT_LENGTH)}\\n ... [TRUNCATED] ...\\n ${entry.stderr.substring(entry.stderr.length - TRUNCATE_SEGMENT_LENGTH)}`;\n } else {\n entryStr += `\\n Error: ${entry.stderr}`;\n }\n }\n entryStr += `\\n Exit Code: ${entry.exitCode}`;\n\n if (entry.fileOperations && entry.fileOperations.length > 0) {\n entryStr += \"\\n File Operations:\";\n entry.fileOperations.forEach((op: FileOperation) => {\n entryStr += `\\n - ${op.type}: ${op.target}`;\n });\n }\n\n return entryStr;\n })\n .join(\"\\n\\n\");\n }\n\n const recentFileOps = history\n .filter((h) => (h.fileOperations?.length ?? 0) > 0)\n .flatMap((h) => h.fileOperations ?? [])\n .slice(-8);\n\n const fileOpsText =\n recentFileOps.length > 0\n ? `\\n\\n${addHeader(\n \"# Recent File Operations\",\n recentFileOps.map((op) => `- ${op.type}: ${op.target}`).join(\"\\n\"),\n )}`\n : \"\";\n\n const text = `Current Directory: ${cwd}\nAllowed Directory: ${allowedDir}\n\n${addHeader(\"# Recent Commands (Last 10)\", historyText)}${fileOpsText}`;\n\n return {\n values: {\n coderStatus: historyText,\n currentWorkingDirectory: cwd,\n allowedDirectory: allowedDir,\n },\n text,\n data: {\n historyCount: history.length,\n cwd,\n allowedDir,\n },\n };\n },\n};\n",
16
- "import { execSync } from \"node:child_process\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { type IAgentRuntime, logger, Service } from \"@elizaos/core\";\nimport type {\n CoderConfig,\n CommandHistoryEntry,\n CommandResult,\n FileOperation,\n} from \"../types\";\nimport {\n isForbiddenCommand,\n isSafeCommand,\n loadCoderConfig,\n validatePath,\n} from \"../utils\";\n\nexport class CoderService extends Service {\n public static serviceType = \"coder\";\n private coderConfig: CoderConfig;\n private currentDirectoryByConversation = new Map<string, string>();\n private commandHistoryByConversation = new Map<\n string,\n CommandHistoryEntry[]\n >();\n private maxHistoryPerConversation = 100;\n\n constructor(runtime?: IAgentRuntime) {\n super(runtime);\n this.coderConfig = loadCoderConfig();\n }\n\n static async start(runtime: IAgentRuntime): Promise<CoderService> {\n const instance = new CoderService(runtime);\n logger.info(\"Coder service initialized\");\n return instance;\n }\n\n async stop(): Promise<void> {\n logger.info(\"Coder service stopped\");\n }\n\n get capabilityDescription(): string {\n return \"Filesystem + shell + git tools within a restricted directory\";\n }\n\n getAllowedDirectory(): string {\n return this.coderConfig.allowedDirectory;\n }\n\n getCurrentDirectory(conversationId: string): string {\n return (\n this.currentDirectoryByConversation.get(conversationId) ??\n this.coderConfig.allowedDirectory\n );\n }\n\n setCurrentDirectory(conversationId: string, dir: string): void {\n this.currentDirectoryByConversation.set(conversationId, dir);\n }\n\n getCommandHistory(\n conversationId: string,\n limit: number,\n ): CommandHistoryEntry[] {\n const all = this.commandHistoryByConversation.get(conversationId) ?? [];\n if (limit <= 0) return [];\n return all.slice(-limit);\n }\n\n private addToHistory(\n conversationId: string | undefined,\n command: string,\n result: CommandResult,\n fileOperations?: FileOperation[],\n ): void {\n if (!conversationId) return;\n const list = this.commandHistoryByConversation.get(conversationId) ?? [];\n list.push({\n timestamp: Date.now(),\n workingDirectory: result.executedIn,\n command,\n stdout: result.stdout,\n stderr: result.stderr,\n exitCode: result.exitCode,\n fileOperations,\n });\n const trimmed =\n list.length > this.maxHistoryPerConversation\n ? list.slice(-this.maxHistoryPerConversation)\n : list;\n this.commandHistoryByConversation.set(conversationId, trimmed);\n }\n\n private ensureEnabled(): string | null {\n if (this.coderConfig.enabled) return null;\n return \"Coder plugin is disabled. Set CODER_ENABLED=true to enable.\";\n }\n\n private resolveWithin(\n conversationId: string,\n targetPath: string,\n ): { fullPath: string; relPath: string } | { error: string } {\n const cwd = this.getCurrentDirectory(conversationId);\n const validated = validatePath(\n targetPath,\n this.coderConfig.allowedDirectory,\n cwd,\n );\n if (!validated)\n return { error: \"Cannot access path outside allowed directory\" };\n const rel = path.relative(this.coderConfig.allowedDirectory, validated);\n return { fullPath: validated, relPath: rel.length === 0 ? \".\" : rel };\n }\n\n async changeDirectory(\n conversationId: string,\n targetPath: string,\n ): Promise<CommandResult> {\n const disabled = this.ensureEnabled();\n if (disabled) {\n return {\n success: false,\n stdout: \"\",\n stderr: disabled,\n exitCode: 1,\n error: \"Coder disabled\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n\n const resolved = this.resolveWithin(conversationId, targetPath);\n if (\"error\" in resolved) {\n return {\n success: false,\n stdout: \"\",\n stderr: resolved.error,\n exitCode: 1,\n error: \"Permission denied\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n\n try {\n const stat = await fs.stat(resolved.fullPath);\n if (!stat.isDirectory()) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Not a directory\",\n exitCode: 1,\n error: \"Not a directory\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n this.setCurrentDirectory(conversationId, resolved.fullPath);\n return {\n success: true,\n stdout: `Changed directory to: ${resolved.fullPath}`,\n stderr: \"\",\n exitCode: 0,\n executedIn: resolved.fullPath,\n };\n } catch (err) {\n const e = err as NodeJS.ErrnoException;\n return {\n success: false,\n stdout: \"\",\n stderr: e.message,\n exitCode: 1,\n error: \"Failed to change directory\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n }\n\n async readFile(\n conversationId: string,\n filepath: string,\n ): Promise<{ ok: true; content: string } | { ok: false; error: string }> {\n const disabled = this.ensureEnabled();\n if (disabled) return { ok: false, error: disabled };\n const resolved = this.resolveWithin(conversationId, filepath);\n if (\"error\" in resolved) return { ok: false, error: resolved.error };\n try {\n const stat = await fs.stat(resolved.fullPath);\n if (stat.isDirectory())\n return { ok: false, error: \"Path is a directory\" };\n const content = await fs.readFile(resolved.fullPath, \"utf-8\");\n return { ok: true, content };\n } catch (err) {\n const e = err as NodeJS.ErrnoException;\n return {\n ok: false,\n error: e.code === \"ENOENT\" ? \"File not found\" : e.message,\n };\n }\n }\n\n async writeFile(\n conversationId: string,\n filepath: string,\n content: string,\n ): Promise<{ ok: true } | { ok: false; error: string }> {\n const disabled = this.ensureEnabled();\n if (disabled) return { ok: false, error: disabled };\n const resolved = this.resolveWithin(conversationId, filepath);\n if (\"error\" in resolved) return { ok: false, error: resolved.error };\n try {\n await fs.mkdir(path.dirname(resolved.fullPath), { recursive: true });\n await fs.writeFile(resolved.fullPath, content, \"utf-8\");\n return { ok: true };\n } catch (err) {\n const e = err as NodeJS.ErrnoException;\n return { ok: false, error: e.message };\n }\n }\n\n async editFile(\n conversationId: string,\n filepath: string,\n oldStr: string,\n newStr: string,\n ): Promise<{ ok: true } | { ok: false; error: string }> {\n const disabled = this.ensureEnabled();\n if (disabled) return { ok: false, error: disabled };\n const resolved = this.resolveWithin(conversationId, filepath);\n if (\"error\" in resolved) return { ok: false, error: resolved.error };\n try {\n const content = await fs.readFile(resolved.fullPath, \"utf-8\");\n if (!content.includes(oldStr))\n return { ok: false, error: \"Could not find old_str in file\" };\n const next = content.replace(oldStr, newStr);\n await fs.writeFile(resolved.fullPath, next, \"utf-8\");\n return { ok: true };\n } catch (err) {\n const e = err as NodeJS.ErrnoException;\n return {\n ok: false,\n error: e.code === \"ENOENT\" ? \"File not found\" : e.message,\n };\n }\n }\n\n async listFiles(\n conversationId: string,\n dirPath: string,\n ): Promise<{ ok: true; items: string[] } | { ok: false; error: string }> {\n const disabled = this.ensureEnabled();\n if (disabled) return { ok: false, error: disabled };\n const resolved = this.resolveWithin(conversationId, dirPath);\n if (\"error\" in resolved) return { ok: false, error: resolved.error };\n try {\n const entries = await fs.readdir(resolved.fullPath, {\n withFileTypes: true,\n });\n const items = entries\n .filter((e) => !e.name.startsWith(\".\"))\n .map((e) => `${e.name}${e.isDirectory() ? \"/\" : \"\"}`)\n .sort((a, b) => a.localeCompare(b));\n return { ok: true, items };\n } catch (err) {\n const e = err as NodeJS.ErrnoException;\n return {\n ok: false,\n error: e.code === \"ENOENT\" ? \"Directory not found\" : e.message,\n };\n }\n }\n\n async searchFiles(\n conversationId: string,\n pattern: string,\n dirPath: string,\n maxMatches: number,\n ): Promise<\n | {\n ok: true;\n matches: Array<{ file: string; line: number; content: string }>;\n }\n | { ok: false; error: string }\n > {\n const disabled = this.ensureEnabled();\n if (disabled) return { ok: false, error: disabled };\n const resolved = this.resolveWithin(conversationId, dirPath);\n if (\"error\" in resolved) return { ok: false, error: resolved.error };\n const needle = pattern.trim();\n if (!needle) return { ok: false, error: \"Missing pattern\" };\n const limit =\n Number.isFinite(maxMatches) && maxMatches > 0\n ? Math.min(500, Math.floor(maxMatches))\n : 50;\n const matches: Array<{ file: string; line: number; content: string }> = [];\n await this.searchInDirectory(\n resolved.fullPath,\n needle.toLowerCase(),\n matches,\n limit,\n );\n return { ok: true, matches };\n }\n\n private async searchInDirectory(\n dir: string,\n needleLower: string,\n matches: Array<{ file: string; line: number; content: string }>,\n maxMatches: number,\n ): Promise<void> {\n if (matches.length >= maxMatches) return;\n const entries = await fs.readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n if (matches.length >= maxMatches) break;\n if (entry.name.startsWith(\".\")) continue;\n const full = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n if (\n entry.name === \"node_modules\" ||\n entry.name === \"dist\" ||\n entry.name === \"build\" ||\n entry.name === \"coverage\" ||\n entry.name === \".git\"\n ) {\n continue;\n }\n await this.searchInDirectory(full, needleLower, matches, maxMatches);\n continue;\n }\n if (!entry.isFile()) continue;\n const content = await fs.readFile(full, \"utf-8\");\n const lines = content.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n if (matches.length >= maxMatches) break;\n const line = lines[i] ?? \"\";\n if (!line.toLowerCase().includes(needleLower)) continue;\n matches.push({\n file: path.relative(this.coderConfig.allowedDirectory, full),\n line: i + 1,\n content: line.trim().slice(0, 240),\n });\n }\n }\n }\n\n async executeShell(\n command: string,\n conversationId: string,\n ): Promise<CommandResult> {\n const disabled = this.ensureEnabled();\n if (disabled) {\n return {\n success: false,\n stdout: \"\",\n stderr: disabled,\n exitCode: 1,\n error: \"Coder disabled\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n\n const trimmed = command.trim();\n if (!trimmed) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Invalid command\",\n exitCode: 1,\n error: \"Empty command\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n\n if (!isSafeCommand(trimmed)) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Command contains forbidden patterns\",\n exitCode: 1,\n error: \"Security policy violation\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n\n if (isForbiddenCommand(trimmed, this.coderConfig.forbiddenCommands)) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Command is forbidden by security policy\",\n exitCode: 1,\n error: \"Forbidden command\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n\n const cwd = this.getCurrentDirectory(conversationId);\n\n try {\n const stdout = execSync(trimmed, {\n cwd,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n encoding: \"utf-8\",\n timeout: this.coderConfig.timeoutMs,\n maxBuffer: 10 * 1024 * 1024,\n }).toString();\n const result: CommandResult = {\n success: true,\n stdout,\n stderr: \"\",\n exitCode: 0,\n executedIn: cwd,\n };\n this.addToHistory(conversationId, trimmed, result);\n return result;\n } catch (err) {\n const e = err as Error & {\n stdout?: string;\n stderr?: string;\n status?: number;\n };\n const stderr = (e.stderr ?? e.message).toString();\n const stdout = (e.stdout ?? \"\").toString();\n const exitCode = typeof e.status === \"number\" ? e.status : 1;\n const result: CommandResult = {\n success: false,\n stdout,\n stderr,\n exitCode,\n error: \"Command failed\",\n executedIn: cwd,\n };\n this.addToHistory(conversationId, trimmed, result);\n return result;\n }\n }\n\n async git(args: string, conversationId: string): Promise<CommandResult> {\n // Route through executeShell but prefix with `git`.\n return this.executeShell(`git ${args}`, conversationId);\n }\n}\n",
16
+ "import { execSync } from \"node:child_process\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { type IAgentRuntime, logger, Service } from \"@elizaos/core\";\nimport type {\n CoderConfig,\n CommandHistoryEntry,\n CommandResult,\n FileOperation,\n ShellService,\n} from \"../types\";\nimport {\n isForbiddenCommand,\n isSafeCommand,\n loadCoderConfig,\n validatePath,\n} from \"../utils\";\n\nexport class CoderService extends Service {\n public static serviceType = \"coder\";\n private coderConfig: CoderConfig;\n private currentDirectoryByConversation = new Map<string, string>();\n private commandHistoryByConversation = new Map<\n string,\n CommandHistoryEntry[]\n >();\n private maxHistoryPerConversation = 100;\n\n constructor(runtime?: IAgentRuntime) {\n super(runtime);\n this.coderConfig = loadCoderConfig();\n }\n\n static async start(runtime: IAgentRuntime): Promise<CoderService> {\n const instance = new CoderService(runtime);\n logger.info(\"Coder service initialized\");\n return instance;\n }\n\n async stop(): Promise<void> {\n logger.info(\"Coder service stopped\");\n }\n\n get capabilityDescription(): string {\n return \"Filesystem + shell + git tools within a restricted directory\";\n }\n\n getAllowedDirectory(): string {\n return this.coderConfig.allowedDirectory;\n }\n\n getCurrentDirectory(conversationId: string): string {\n return (\n this.currentDirectoryByConversation.get(conversationId) ??\n this.coderConfig.allowedDirectory\n );\n }\n\n setCurrentDirectory(conversationId: string, dir: string): void {\n this.currentDirectoryByConversation.set(conversationId, dir);\n }\n\n getCommandHistory(\n conversationId: string,\n limit: number,\n ): CommandHistoryEntry[] {\n const all = this.commandHistoryByConversation.get(conversationId) ?? [];\n if (limit <= 0) return [];\n return all.slice(-limit);\n }\n\n private addToHistory(\n conversationId: string | undefined,\n command: string,\n result: CommandResult,\n fileOperations?: FileOperation[],\n ): void {\n if (!conversationId) return;\n const list = this.commandHistoryByConversation.get(conversationId) ?? [];\n list.push({\n timestamp: Date.now(),\n workingDirectory: result.executedIn,\n command,\n stdout: result.stdout,\n stderr: result.stderr,\n exitCode: result.exitCode,\n fileOperations,\n });\n const trimmed =\n list.length > this.maxHistoryPerConversation\n ? list.slice(-this.maxHistoryPerConversation)\n : list;\n this.commandHistoryByConversation.set(conversationId, trimmed);\n }\n\n private ensureEnabled(): string | null {\n if (this.coderConfig.enabled) return null;\n return \"Coder plugin is disabled. Set CODER_ENABLED=true to enable.\";\n }\n\n private resolveWithin(\n conversationId: string,\n targetPath: string,\n ): { fullPath: string; relPath: string } | { error: string } {\n const cwd = this.getCurrentDirectory(conversationId);\n const validated = validatePath(\n targetPath,\n this.coderConfig.allowedDirectory,\n cwd,\n );\n if (!validated)\n return { error: \"Cannot access path outside allowed directory\" };\n const rel = path.relative(this.coderConfig.allowedDirectory, validated);\n return { fullPath: validated, relPath: rel.length === 0 ? \".\" : rel };\n }\n\n async changeDirectory(\n conversationId: string,\n targetPath: string,\n ): Promise<CommandResult> {\n const disabled = this.ensureEnabled();\n if (disabled) {\n return {\n success: false,\n stdout: \"\",\n stderr: disabled,\n exitCode: 1,\n error: \"Coder disabled\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n\n const resolved = this.resolveWithin(conversationId, targetPath);\n if (\"error\" in resolved) {\n return {\n success: false,\n stdout: \"\",\n stderr: resolved.error,\n exitCode: 1,\n error: \"Permission denied\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n\n try {\n const stat = await fs.stat(resolved.fullPath);\n if (!stat.isDirectory()) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Not a directory\",\n exitCode: 1,\n error: \"Not a directory\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n this.setCurrentDirectory(conversationId, resolved.fullPath);\n return {\n success: true,\n stdout: `Changed directory to: ${resolved.fullPath}`,\n stderr: \"\",\n exitCode: 0,\n executedIn: resolved.fullPath,\n };\n } catch (err) {\n const e = err as NodeJS.ErrnoException;\n return {\n success: false,\n stdout: \"\",\n stderr: e.message,\n exitCode: 1,\n error: \"Failed to change directory\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n }\n\n async readFile(\n conversationId: string,\n filepath: string,\n ): Promise<{ ok: true; content: string } | { ok: false; error: string }> {\n const disabled = this.ensureEnabled();\n if (disabled) return { ok: false, error: disabled };\n const resolved = this.resolveWithin(conversationId, filepath);\n if (\"error\" in resolved) return { ok: false, error: resolved.error };\n try {\n const stat = await fs.stat(resolved.fullPath);\n if (stat.isDirectory())\n return { ok: false, error: \"Path is a directory\" };\n const content = await fs.readFile(resolved.fullPath, \"utf-8\");\n return { ok: true, content };\n } catch (err) {\n const e = err as NodeJS.ErrnoException;\n return {\n ok: false,\n error: e.code === \"ENOENT\" ? \"File not found\" : e.message,\n };\n }\n }\n\n async writeFile(\n conversationId: string,\n filepath: string,\n content: string,\n ): Promise<{ ok: true } | { ok: false; error: string }> {\n const disabled = this.ensureEnabled();\n if (disabled) return { ok: false, error: disabled };\n const resolved = this.resolveWithin(conversationId, filepath);\n if (\"error\" in resolved) return { ok: false, error: resolved.error };\n try {\n await fs.mkdir(path.dirname(resolved.fullPath), { recursive: true });\n await fs.writeFile(resolved.fullPath, content, \"utf-8\");\n return { ok: true };\n } catch (err) {\n const e = err as NodeJS.ErrnoException;\n return { ok: false, error: e.message };\n }\n }\n\n async editFile(\n conversationId: string,\n filepath: string,\n oldStr: string,\n newStr: string,\n ): Promise<{ ok: true } | { ok: false; error: string }> {\n const disabled = this.ensureEnabled();\n if (disabled) return { ok: false, error: disabled };\n const resolved = this.resolveWithin(conversationId, filepath);\n if (\"error\" in resolved) return { ok: false, error: resolved.error };\n try {\n const content = await fs.readFile(resolved.fullPath, \"utf-8\");\n if (!content.includes(oldStr))\n return { ok: false, error: \"Could not find old_str in file\" };\n const next = content.replace(oldStr, newStr);\n await fs.writeFile(resolved.fullPath, next, \"utf-8\");\n return { ok: true };\n } catch (err) {\n const e = err as NodeJS.ErrnoException;\n return {\n ok: false,\n error: e.code === \"ENOENT\" ? \"File not found\" : e.message,\n };\n }\n }\n\n async listFiles(\n conversationId: string,\n dirPath: string,\n ): Promise<{ ok: true; items: string[] } | { ok: false; error: string }> {\n const disabled = this.ensureEnabled();\n if (disabled) return { ok: false, error: disabled };\n const resolved = this.resolveWithin(conversationId, dirPath);\n if (\"error\" in resolved) return { ok: false, error: resolved.error };\n try {\n const entries = await fs.readdir(resolved.fullPath, {\n withFileTypes: true,\n });\n const items = entries\n .filter((e) => !e.name.startsWith(\".\"))\n .map((e) => `${e.name}${e.isDirectory() ? \"/\" : \"\"}`)\n .sort((a, b) => a.localeCompare(b));\n return { ok: true, items };\n } catch (err) {\n const e = err as NodeJS.ErrnoException;\n return {\n ok: false,\n error: e.code === \"ENOENT\" ? \"Directory not found\" : e.message,\n };\n }\n }\n\n async searchFiles(\n conversationId: string,\n pattern: string,\n dirPath: string,\n maxMatches: number,\n ): Promise<\n | {\n ok: true;\n matches: Array<{ file: string; line: number; content: string }>;\n }\n | { ok: false; error: string }\n > {\n const disabled = this.ensureEnabled();\n if (disabled) return { ok: false, error: disabled };\n const resolved = this.resolveWithin(conversationId, dirPath);\n if (\"error\" in resolved) return { ok: false, error: resolved.error };\n const needle = pattern.trim();\n if (!needle) return { ok: false, error: \"Missing pattern\" };\n const limit =\n Number.isFinite(maxMatches) && maxMatches > 0\n ? Math.min(500, Math.floor(maxMatches))\n : 50;\n const matches: Array<{ file: string; line: number; content: string }> = [];\n await this.searchInDirectory(\n resolved.fullPath,\n needle.toLowerCase(),\n matches,\n limit,\n );\n return { ok: true, matches };\n }\n\n private async searchInDirectory(\n dir: string,\n needleLower: string,\n matches: Array<{ file: string; line: number; content: string }>,\n maxMatches: number,\n ): Promise<void> {\n if (matches.length >= maxMatches) return;\n const entries = await fs.readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n if (matches.length >= maxMatches) break;\n if (entry.name.startsWith(\".\")) continue;\n const full = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n if (\n entry.name === \"node_modules\" ||\n entry.name === \"dist\" ||\n entry.name === \"build\" ||\n entry.name === \"coverage\" ||\n entry.name === \".git\"\n ) {\n continue;\n }\n await this.searchInDirectory(full, needleLower, matches, maxMatches);\n continue;\n }\n if (!entry.isFile()) continue;\n const content = await fs.readFile(full, \"utf-8\");\n const lines = content.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n if (matches.length >= maxMatches) break;\n const line = lines[i] ?? \"\";\n if (!line.toLowerCase().includes(needleLower)) continue;\n matches.push({\n file: path.relative(this.coderConfig.allowedDirectory, full),\n line: i + 1,\n content: line.trim().slice(0, 240),\n });\n }\n }\n }\n\n async executeShell(\n command: string,\n conversationId: string,\n ): Promise<CommandResult> {\n const disabled = this.ensureEnabled();\n if (disabled) {\n return {\n success: false,\n stdout: \"\",\n stderr: disabled,\n exitCode: 1,\n error: \"Coder disabled\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n\n const trimmed = command.trim();\n if (!trimmed) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Invalid command\",\n exitCode: 1,\n error: \"Empty command\",\n executedIn: this.getCurrentDirectory(conversationId),\n };\n }\n\n const cwd = this.getCurrentDirectory(conversationId);\n\n // Use ShellService for execution if available\n const shellService =\n typeof this.runtime?.getService === \"function\"\n ? this.runtime.getService<ShellService>(\"shell\")\n : null;\n if (shellService) {\n const execResult = await shellService.exec(trimmed, {\n workdir: cwd,\n timeout: Math.floor(this.coderConfig.timeoutMs / 1000),\n conversationId,\n });\n\n if (execResult.status === \"running\") {\n // Command is still running (backgrounded)\n const result: CommandResult = {\n success: true,\n stdout: `Command running in background (session: ${execResult.sessionId})`,\n stderr: \"\",\n exitCode: 0,\n executedIn: cwd,\n };\n this.addToHistory(conversationId, trimmed, result);\n return result;\n }\n\n const success =\n execResult.status === \"completed\" && execResult.exitCode === 0;\n const result: CommandResult = {\n success,\n stdout: execResult.aggregated ?? \"\",\n stderr: execResult.reason ?? \"\",\n exitCode: execResult.exitCode ?? (success ? 0 : 1),\n error: success ? undefined : \"Command failed\",\n executedIn: cwd,\n };\n this.addToHistory(conversationId, trimmed, result);\n return result;\n }\n\n // Fallback: Use execSync when ShellService is not available\n // This maintains backward compatibility for standalone use\n if (!isSafeCommand(trimmed)) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Command contains forbidden patterns\",\n exitCode: 1,\n error: \"Security policy violation\",\n executedIn: cwd,\n };\n }\n\n if (isForbiddenCommand(trimmed, this.coderConfig.forbiddenCommands)) {\n return {\n success: false,\n stdout: \"\",\n stderr: \"Command is forbidden by security policy\",\n exitCode: 1,\n error: \"Forbidden command\",\n executedIn: cwd,\n };\n }\n\n try {\n const stdout = execSync(trimmed, {\n cwd,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n encoding: \"utf-8\",\n timeout: this.coderConfig.timeoutMs,\n maxBuffer: 10 * 1024 * 1024,\n }).toString();\n const result: CommandResult = {\n success: true,\n stdout,\n stderr: \"\",\n exitCode: 0,\n executedIn: cwd,\n };\n this.addToHistory(conversationId, trimmed, result);\n return result;\n } catch (err) {\n const e = err as Error & {\n stdout?: string;\n stderr?: string;\n status?: number;\n };\n const stderr = (e.stderr ?? e.message).toString();\n const stdout = (e.stdout ?? \"\").toString();\n const exitCode = typeof e.status === \"number\" ? e.status : 1;\n const result: CommandResult = {\n success: false,\n stdout,\n stderr,\n exitCode,\n error: \"Command failed\",\n executedIn: cwd,\n };\n this.addToHistory(conversationId, trimmed, result);\n return result;\n }\n }\n\n async git(args: string, conversationId: string): Promise<CommandResult> {\n // Route through executeShell but prefix with `git`.\n return this.executeShell(`git ${args}`, conversationId);\n }\n}\n",
17
17
  "import * as path from \"node:path\";\nimport type { CoderConfig } from \"../types\";\n\nfunction parseBool(value: string | undefined): boolean {\n const v = (value ?? \"\").trim().toLowerCase();\n return v === \"1\" || v === \"true\" || v === \"yes\" || v === \"on\";\n}\n\nfunction parseIntMs(value: string | undefined, fallback: number): number {\n const parsed = Number.parseInt((value ?? \"\").trim(), 10);\n if (!Number.isFinite(parsed) || parsed <= 0) return fallback;\n return parsed;\n}\n\nexport function loadCoderConfig(): CoderConfig {\n const enabled = parseBool(process.env.CODER_ENABLED);\n const allowedDirectoryRaw = (\n process.env.CODER_ALLOWED_DIRECTORY ?? \"\"\n ).trim();\n const allowedDirectory = allowedDirectoryRaw\n ? path.resolve(allowedDirectoryRaw)\n : process.cwd();\n\n const timeoutMs = parseIntMs(process.env.CODER_TIMEOUT, 30_000);\n\n const forbiddenCommands = (process.env.CODER_FORBIDDEN_COMMANDS ?? \"\")\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n\n return { enabled, allowedDirectory, timeoutMs, forbiddenCommands };\n}\n",
18
18
  "import * as path from \"node:path\";\n\nexport const DEFAULT_FORBIDDEN_COMMANDS: string[] = [\n \"rm -rf /\",\n \"rm -rf ~\",\n \"sudo rm\",\n \"mkfs\",\n \"dd if=/dev\",\n];\n\nexport function extractBaseCommand(command: string): string {\n const trimmed = command.trim();\n if (!trimmed) return \"\";\n const first = trimmed.split(/\\s+/)[0];\n return first ?? \"\";\n}\n\n/**\n * Very conservative “safe command” filter. Blocks shell control operators and\n * common escape patterns. (This is aligned with other plugins’ patterns.)\n */\nexport function isSafeCommand(command: string): boolean {\n const c = command.trim();\n if (!c) return false;\n if (c.includes(\"&&\") || c.includes(\"||\") || c.includes(\";\")) return false;\n if (c.includes(\"$(\") || c.includes(\"`\")) return false;\n return true;\n}\n\nexport function isForbiddenCommand(\n command: string,\n additionalForbidden: string[],\n): boolean {\n const c = command.toLowerCase();\n for (const f of DEFAULT_FORBIDDEN_COMMANDS) {\n if (c.includes(f.toLowerCase())) return true;\n }\n for (const f of additionalForbidden) {\n if (f.trim().length === 0) continue;\n if (c.includes(f.toLowerCase())) return true;\n }\n return false;\n}\n\n/**\n * Resolve a target path against the current directory while enforcing that\n * the result stays inside allowedDirectory.\n */\nexport function validatePath(\n targetPath: string,\n allowedDirectory: string,\n currentDirectory: string,\n): string | null {\n const base =\n currentDirectory && currentDirectory.length > 0\n ? currentDirectory\n : allowedDirectory;\n const resolved = path.resolve(base, targetPath);\n const allowed = path.resolve(allowedDirectory);\n\n const rel = path.relative(allowed, resolved);\n if (rel === \"\") return resolved;\n if (rel.startsWith(\"..\") || path.isAbsolute(rel)) return null;\n return resolved;\n}\n",
19
- "import type { Plugin } from \"@elizaos/core\";\nimport {\n changeDirectory,\n editFile,\n executeShell,\n git,\n listFiles,\n readFile,\n searchFiles,\n writeFile,\n} from \"./actions\";\nimport { coderStatusProvider } from \"./providers\";\nimport { CoderService } from \"./services/coderService\";\n\nexport const coderPlugin: Plugin = {\n name: \"eliza-coder\",\n description: \"Coder tools: filesystem, shell, and git (restricted)\",\n services: [CoderService],\n actions: [\n readFile,\n listFiles,\n searchFiles,\n writeFile,\n editFile,\n changeDirectory,\n executeShell,\n git,\n ],\n providers: [coderStatusProvider],\n};\n\nexport default coderPlugin;\n\nexport * from \"./actions\";\nexport { coderStatusProvider } from \"./providers/coderStatusProvider\";\nexport { CoderService } from \"./services/coderService\";\nexport * from \"./types\";\nexport * from \"./utils\";\n"
19
+ "/**\n * Configure coding tools - creates CodingAction instances for coding operations.\n *\n * This provides Claude Code-style actions:\n * - exec: Execute shell commands (via ShellService)\n * - process: Manage background processes (via ShellService)\n * - read_file: Read file contents\n * - write_file: Write file contents\n * - edit_file: Edit file contents (find & replace)\n * - list_files: List directory contents\n * - search_files: Search for patterns in files\n * - git: Execute git commands\n */\n\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport type { CoderService } from \"./services/coderService\";\nimport type {\n CodingAction,\n CodingActionContext,\n CodingActionResult,\n CodingToolsOptions,\n ProcessSession,\n ShellService,\n} from \"./types\";\n\n/**\n * Create configured coding actions using the provided services.\n *\n * @param runtime - The Eliza agent runtime\n * @param options - Configuration options for the tools\n * @returns Array of CodingAction instances\n */\nexport function configureCodingTools(\n runtime: IAgentRuntime,\n options?: CodingToolsOptions,\n): CodingAction[] {\n const shellService = runtime.getService<ShellService>(\"shell\");\n const coderService = runtime.getService<CoderService>(\"coder\");\n\n const defaultCwd = options?.cwd ?? process.cwd();\n const scopeKey = options?.scopeKey;\n const sessionKey = options?.sessionKey;\n const notifyOnExit = options?.notifyOnExit ?? false;\n const defaultBackgroundMs = options?.backgroundMs ?? 10000;\n const defaultTimeoutSec = options?.timeoutSec ?? 1800;\n const conversationId = options?.conversationId ?? \"default\";\n\n const actions: CodingAction[] = [];\n\n // ============================================================================\n // exec - Execute shell commands\n // ============================================================================\n if (shellService) {\n const execAction: CodingAction = {\n name: \"exec\",\n label: \"exec\",\n description:\n \"Execute a shell command. Returns output when complete or session info if backgrounded.\",\n parameters: {\n type: \"object\",\n properties: {\n command: { type: \"string\", description: \"Shell command to execute\" },\n workdir: {\n type: \"string\",\n description: \"Working directory (optional)\",\n },\n env: {\n type: \"object\",\n additionalProperties: { type: \"string\" },\n description: \"Environment variables (optional)\",\n },\n yieldMs: {\n type: \"number\",\n description:\n \"Milliseconds to wait before backgrounding (default 10000)\",\n },\n background: {\n type: \"boolean\",\n description: \"Run in background immediately\",\n },\n timeout: { type: \"number\", description: \"Timeout in seconds\" },\n pty: {\n type: \"boolean\",\n description: \"Use PTY for interactive commands\",\n },\n },\n required: [\"command\"],\n },\n execute: async (\n context: CodingActionContext,\n ): Promise<CodingActionResult> => {\n const params = context.args as {\n command: string;\n workdir?: string;\n env?: Record<string, string>;\n yieldMs?: number;\n background?: boolean;\n timeout?: number;\n pty?: boolean;\n };\n\n if (!params.command) {\n throw new Error(\"Provide a command to execute.\");\n }\n\n const result = await shellService.exec(params.command, {\n workdir: params.workdir?.trim() || defaultCwd,\n env: params.env,\n yieldMs: params.yieldMs ?? defaultBackgroundMs,\n background: params.background,\n timeout: params.timeout ?? defaultTimeoutSec,\n pty: params.pty,\n scopeKey,\n sessionKey,\n notifyOnExit,\n conversationId: context.conversationId ?? conversationId,\n onUpdate: context.onUpdate\n ? (session: ProcessSession) => {\n context.onUpdate?.({\n content: [\n {\n type: \"text\",\n text: session.tail || session.aggregated || \"\",\n },\n ],\n details: {\n status: \"running\",\n sessionId: session.id,\n pid: session.pid ?? undefined,\n startedAt: session.startedAt,\n cwd: session.cwd,\n tail: session.tail,\n },\n });\n }\n : undefined,\n });\n\n if (result.status === \"running\") {\n return {\n content: [\n {\n type: \"text\",\n text: `Command still running (session ${result.sessionId}, pid ${\n result.pid ?? \"n/a\"\n }). Use process action (list/poll/log/write/kill) for follow-up.`,\n },\n ],\n details: {\n status: \"running\",\n sessionId: result.sessionId,\n pid: result.pid ?? undefined,\n startedAt: result.startedAt,\n cwd: result.cwd,\n tail: result.tail,\n },\n };\n }\n\n if (result.status === \"failed\") {\n return {\n content: [\n {\n type: \"text\",\n text: result.aggregated || result.reason || \"Command failed.\",\n },\n ],\n details: {\n status: \"failed\",\n exitCode: result.exitCode ?? 1,\n durationMs: result.durationMs,\n reason: result.reason,\n },\n };\n }\n\n return {\n content: [\n {\n type: \"text\",\n text: result.aggregated || \"(no output)\",\n },\n ],\n details: {\n status: \"completed\",\n exitCode: result.exitCode ?? 0,\n durationMs: result.durationMs,\n aggregated: result.aggregated,\n cwd: result.cwd,\n },\n };\n },\n };\n actions.push(execAction);\n\n // ============================================================================\n // process - Manage background processes\n // ============================================================================\n const processAction: CodingAction = {\n name: \"process\",\n label: \"process\",\n description:\n \"Manage running exec sessions: list, poll, log, write, send-keys, submit, paste, kill.\",\n parameters: {\n type: \"object\",\n properties: {\n action: {\n type: \"string\",\n description:\n \"Process action (list, poll, log, write, send-keys, submit, paste, kill, clear, remove)\",\n },\n sessionId: {\n type: \"string\",\n description: \"Session id for actions other than list\",\n },\n data: {\n type: \"string\",\n description: \"Data to write for write action\",\n },\n keys: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Key tokens to send for send-keys\",\n },\n hex: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Hex bytes to send for send-keys\",\n },\n literal: {\n type: \"string\",\n description: \"Literal string for send-keys\",\n },\n text: {\n type: \"string\",\n description: \"Text to paste for paste action\",\n },\n bracketed: {\n type: \"boolean\",\n description: \"Wrap paste in bracketed mode\",\n },\n eof: { type: \"boolean\", description: \"Close stdin after write\" },\n offset: { type: \"number\", description: \"Log offset\" },\n limit: { type: \"number\", description: \"Log length\" },\n },\n required: [\"action\"],\n },\n execute: async (\n context: CodingActionContext,\n ): Promise<CodingActionResult> => {\n const params = context.args as {\n action: string;\n sessionId?: string;\n data?: string;\n keys?: string[];\n hex?: string[];\n literal?: string;\n text?: string;\n bracketed?: boolean;\n eof?: boolean;\n offset?: number;\n limit?: number;\n };\n\n const result = await shellService.processAction({\n action: params.action as\n | \"list\"\n | \"poll\"\n | \"log\"\n | \"write\"\n | \"send-keys\"\n | \"submit\"\n | \"paste\"\n | \"kill\"\n | \"clear\"\n | \"remove\",\n sessionId: params.sessionId,\n data: params.data,\n keys: params.keys,\n hex: params.hex,\n literal: params.literal,\n text: params.text,\n bracketed: params.bracketed,\n eof: params.eof,\n offset: params.offset,\n limit: params.limit,\n });\n\n return {\n content: [\n {\n type: \"text\",\n text: result.message as string | undefined,\n },\n ],\n details: result.data as Record<string, unknown> | undefined,\n };\n },\n };\n actions.push(processAction);\n }\n\n // ============================================================================\n // File operations (via CoderService)\n // ============================================================================\n if (coderService) {\n // read_file\n const readFileAction: CodingAction = {\n name: \"read_file\",\n label: \"read_file\",\n description: \"Read the contents of a file.\",\n parameters: {\n type: \"object\",\n properties: {\n path: { type: \"string\", description: \"Path to the file to read\" },\n },\n required: [\"path\"],\n },\n execute: async (\n context: CodingActionContext,\n ): Promise<CodingActionResult> => {\n const params = context.args as { path: string };\n const convId = context.conversationId ?? conversationId;\n const result = await coderService.readFile(convId, params.path);\n\n if (!result.ok) {\n return {\n content: [{ type: \"text\", text: `Error: ${result.error}` }],\n details: { success: false, error: result.error },\n };\n }\n\n return {\n content: [{ type: \"text\", text: result.content }],\n details: { success: true },\n };\n },\n };\n actions.push(readFileAction);\n\n // write_file\n const writeFileAction: CodingAction = {\n name: \"write_file\",\n label: \"write_file\",\n description:\n \"Write content to a file. Creates the file if it doesn't exist.\",\n parameters: {\n type: \"object\",\n properties: {\n path: { type: \"string\", description: \"Path to the file to write\" },\n content: {\n type: \"string\",\n description: \"Content to write to the file\",\n },\n },\n required: [\"path\", \"content\"],\n },\n execute: async (\n context: CodingActionContext,\n ): Promise<CodingActionResult> => {\n const params = context.args as { path: string; content: string };\n const convId = context.conversationId ?? conversationId;\n const result = await coderService.writeFile(\n convId,\n params.path,\n params.content,\n );\n\n if (!result.ok) {\n return {\n content: [{ type: \"text\", text: `Error: ${result.error}` }],\n details: { success: false, error: result.error },\n };\n }\n\n return {\n content: [{ type: \"text\", text: `File written: ${params.path}` }],\n details: { success: true },\n };\n },\n };\n actions.push(writeFileAction);\n\n // edit_file\n const editFileAction: CodingAction = {\n name: \"edit_file\",\n label: \"edit_file\",\n description:\n \"Edit a file by replacing text. Finds old_str and replaces with new_str.\",\n parameters: {\n type: \"object\",\n properties: {\n path: { type: \"string\", description: \"Path to the file to edit\" },\n old_str: { type: \"string\", description: \"Text to find and replace\" },\n new_str: { type: \"string\", description: \"Text to replace with\" },\n },\n required: [\"path\", \"old_str\", \"new_str\"],\n },\n execute: async (\n context: CodingActionContext,\n ): Promise<CodingActionResult> => {\n const params = context.args as {\n path: string;\n old_str: string;\n new_str: string;\n };\n const convId = context.conversationId ?? conversationId;\n const result = await coderService.editFile(\n convId,\n params.path,\n params.old_str,\n params.new_str,\n );\n\n if (!result.ok) {\n return {\n content: [{ type: \"text\", text: `Error: ${result.error}` }],\n details: { success: false, error: result.error },\n };\n }\n\n return {\n content: [{ type: \"text\", text: `File edited: ${params.path}` }],\n details: { success: true },\n };\n },\n };\n actions.push(editFileAction);\n\n // list_files\n const listFilesAction: CodingAction = {\n name: \"list_files\",\n label: \"list_files\",\n description: \"List files and directories in a path.\",\n parameters: {\n type: \"object\",\n properties: {\n path: {\n type: \"string\",\n description:\n \"Directory path to list (defaults to current directory)\",\n },\n },\n required: [],\n },\n execute: async (\n context: CodingActionContext,\n ): Promise<CodingActionResult> => {\n const params = context.args as { path?: string };\n const convId = context.conversationId ?? conversationId;\n const result = await coderService.listFiles(convId, params.path ?? \".\");\n\n if (!result.ok) {\n return {\n content: [{ type: \"text\", text: `Error: ${result.error}` }],\n details: { success: false, error: result.error },\n };\n }\n\n return {\n content: [{ type: \"text\", text: result.items.join(\"\\n\") }],\n details: { success: true, items: result.items },\n };\n },\n };\n actions.push(listFilesAction);\n\n // search_files\n const searchFilesAction: CodingAction = {\n name: \"search_files\",\n label: \"search_files\",\n description: \"Search for a pattern in files within a directory.\",\n parameters: {\n type: \"object\",\n properties: {\n pattern: { type: \"string\", description: \"Pattern to search for\" },\n path: {\n type: \"string\",\n description:\n \"Directory path to search in (defaults to current directory)\",\n },\n max_matches: {\n type: \"number\",\n description: \"Maximum matches to return (default 50)\",\n },\n },\n required: [\"pattern\"],\n },\n execute: async (\n context: CodingActionContext,\n ): Promise<CodingActionResult> => {\n const params = context.args as {\n pattern: string;\n path?: string;\n max_matches?: number;\n };\n const convId = context.conversationId ?? conversationId;\n const result = await coderService.searchFiles(\n convId,\n params.pattern,\n params.path ?? \".\",\n params.max_matches ?? 50,\n );\n\n if (!result.ok) {\n return {\n content: [{ type: \"text\", text: `Error: ${result.error}` }],\n details: { success: false, error: result.error },\n };\n }\n\n const formatted = result.matches\n .map((m) => `${m.file}:${m.line}: ${m.content}`)\n .join(\"\\n\");\n\n return {\n content: [{ type: \"text\", text: formatted || \"No matches found\" }],\n details: { success: true, matches: result.matches },\n };\n },\n };\n actions.push(searchFilesAction);\n\n // git\n const gitAction: CodingAction = {\n name: \"git\",\n label: \"git\",\n description: \"Execute a git command.\",\n parameters: {\n type: \"object\",\n properties: {\n args: {\n type: \"string\",\n description:\n \"Git command arguments (e.g., 'status', 'diff', 'log --oneline -5')\",\n },\n },\n required: [\"args\"],\n },\n execute: async (\n context: CodingActionContext,\n ): Promise<CodingActionResult> => {\n const params = context.args as { args: string };\n const convId = context.conversationId ?? conversationId;\n const result = await coderService.git(params.args, convId);\n\n return {\n content: [\n {\n type: \"text\",\n text: result.success ? result.stdout : result.stderr,\n },\n ],\n details: {\n success: result.success,\n exitCode: result.exitCode,\n stdout: result.stdout,\n stderr: result.stderr,\n },\n };\n },\n };\n actions.push(gitAction);\n }\n\n return actions;\n}\n\nexport default configureCodingTools;\n",
20
+ "import type { Plugin } from \"@elizaos/core\";\nimport {\n changeDirectory,\n editFile,\n executeShell,\n git,\n listFiles,\n readFile,\n searchFiles,\n writeFile,\n} from \"./actions\";\nimport { coderStatusProvider } from \"./providers\";\nimport { CoderService } from \"./services/coderService\";\n\nexport const coderPlugin: Plugin = {\n name: \"eliza-coder\",\n description: \"Coder tools: filesystem, shell, and git (restricted)\",\n services: [CoderService],\n actions: [\n readFile,\n listFiles,\n searchFiles,\n writeFile,\n editFile,\n changeDirectory,\n executeShell,\n git,\n ],\n providers: [coderStatusProvider],\n};\n\nexport default coderPlugin;\n\n// Actions (Eliza Action interface)\nexport * from \"./actions\";\n// CodingAction system - Claude Code-style function-calling actions\nexport { configureCodingTools } from \"./configureCodingTools\";\n// Providers\nexport { coderStatusProvider } from \"./providers/coderStatusProvider\";\n// Services\nexport { CoderService } from \"./services/coderService\";\n// Other types and utilities\nexport type {\n CoderConfig,\n CodingAction,\n CodingActionAvailabilityContext,\n CodingActionContentItem,\n CodingActionContext,\n CodingActionResult,\n CodingActionUpdateCallback,\n CodingToolsOptions,\n CommandHistoryEntry,\n CommandResult,\n FileOperation,\n FileOperationType,\n} from \"./types\";\nexport * from \"./utils\";\n"
20
21
  ],
21
- "mappings": "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",
22
- "debugId": "11D69657230A26B464756E2164756E21",
22
+ "mappings": "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",
23
+ "debugId": "30DB4D8CA69EB24D64756E2164756E21",
23
24
  "names": []
24
25
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-code",
3
- "version": "2.0.0-alpha.1",
3
+ "version": "2.0.0-alpha.3",
4
4
  "description": "Coder tools plugin for ElizaOS (filesystem + shell + git)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -33,8 +33,9 @@
33
33
  "author": "elizaOS",
34
34
  "license": "MIT",
35
35
  "dependencies": {
36
- "@elizaos/core": "workspace:*",
37
- "zod": "^4.3.5"
36
+ "@elizaos/core": "2.0.0-alpha.3",
37
+ "@elizaos/plugin-shell": "2.0.0-alpha.3",
38
+ "zod": "^4.3.6"
38
39
  },
39
40
  "devDependencies": {
40
41
  "@biomejs/biome": "^2.3.11",
@@ -56,5 +57,14 @@
56
57
  },
57
58
  "publishConfig": {
58
59
  "access": "public"
60
+ },
61
+ "milaidy": {
62
+ "platforms": [
63
+ "node"
64
+ ],
65
+ "runtime": "node",
66
+ "platformDetails": {
67
+ "node": "Default export (Node.js)"
68
+ }
59
69
  }
60
70
  }
@@ -1,2 +0,0 @@
1
- import type { Action } from "@elizaos/core";
2
- export declare const changeDirectory: Action;
@@ -1,2 +0,0 @@
1
- import type { Action } from "@elizaos/core";
2
- export declare const editFile: Action;
@@ -1,2 +0,0 @@
1
- import type { Action } from "@elizaos/core";
2
- export declare const executeShell: Action;
@@ -1,2 +0,0 @@
1
- import type { Action } from "@elizaos/core";
2
- export declare const git: Action;
@@ -1,8 +0,0 @@
1
- export { changeDirectory } from "./changeDirectory";
2
- export { editFile } from "./editFile";
3
- export { executeShell } from "./executeShell";
4
- export { git } from "./git";
5
- export { listFiles } from "./listFiles";
6
- export { readFile } from "./readFile";
7
- export { searchFiles } from "./searchFiles";
8
- export { writeFile } from "./writeFile";
@@ -1,2 +0,0 @@
1
- import type { Action } from "@elizaos/core";
2
- export declare const listFiles: Action;
@@ -1,2 +0,0 @@
1
- import type { Action } from "@elizaos/core";
2
- export declare const readFile: Action;
@@ -1,2 +0,0 @@
1
- import type { Action } from "@elizaos/core";
2
- export declare const searchFiles: Action;
@@ -1,2 +0,0 @@
1
- import type { Action } from "@elizaos/core";
2
- export declare const writeFile: Action;
package/dist/build.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
@@ -1,48 +0,0 @@
1
- /**
2
- * Helper functions to lookup action/provider/evaluator specs by name.
3
- * These allow language-specific implementations to import their text content
4
- * (description, similes, examples) from the centralized specs.
5
- *
6
- * DO NOT EDIT the spec data - update prompts/actions.json, prompts/providers.json, prompts/evaluators.json and regenerate.
7
- */
8
- import { type ActionDoc, type EvaluatorDoc, type ProviderDoc } from "./specs";
9
- /**
10
- * Get an action spec by name from the core specs.
11
- * @param name - The action name
12
- * @returns The action spec or undefined if not found
13
- */
14
- export declare function getActionSpec(name: string): ActionDoc | undefined;
15
- /**
16
- * Get an action spec by name, throwing if not found.
17
- * @param name - The action name
18
- * @returns The action spec
19
- * @throws Error if the action is not found
20
- */
21
- export declare function requireActionSpec(name: string): ActionDoc;
22
- /**
23
- * Get a provider spec by name from the core specs.
24
- * @param name - The provider name
25
- * @returns The provider spec or undefined if not found
26
- */
27
- export declare function getProviderSpec(name: string): ProviderDoc | undefined;
28
- /**
29
- * Get a provider spec by name, throwing if not found.
30
- * @param name - The provider name
31
- * @returns The provider spec
32
- * @throws Error if the provider is not found
33
- */
34
- export declare function requireProviderSpec(name: string): ProviderDoc;
35
- /**
36
- * Get an evaluator spec by name from the core specs.
37
- * @param name - The evaluator name
38
- * @returns The evaluator spec or undefined if not found
39
- */
40
- export declare function getEvaluatorSpec(name: string): EvaluatorDoc | undefined;
41
- /**
42
- * Get an evaluator spec by name, throwing if not found.
43
- * @param name - The evaluator name
44
- * @returns The evaluator spec
45
- * @throws Error if the evaluator is not found
46
- */
47
- export declare function requireEvaluatorSpec(name: string): EvaluatorDoc;
48
- export type { ActionDoc, ProviderDoc, EvaluatorDoc };
@@ -1,142 +0,0 @@
1
- /**
2
- * Auto-generated canonical action/provider/evaluator docs for plugin-code.
3
- * DO NOT EDIT - Generated from prompts/specs/**.
4
- */
5
- export type ActionDoc = {
6
- name: string;
7
- description: string;
8
- similes?: readonly string[];
9
- parameters?: readonly unknown[];
10
- examples?: readonly (readonly unknown[])[];
11
- };
12
- export type ProviderDoc = {
13
- name: string;
14
- description: string;
15
- position?: number;
16
- dynamic?: boolean;
17
- };
18
- export type EvaluatorDoc = {
19
- name: string;
20
- description: string;
21
- similes?: readonly string[];
22
- alwaysRun?: boolean;
23
- examples?: readonly unknown[];
24
- };
25
- export declare const coreActionsSpec: {
26
- readonly version: "1.0.0";
27
- readonly actions: readonly [{
28
- readonly name: "CHANGE_DIRECTORY";
29
- readonly description: "Change the working directory (restricted to allowed directory).";
30
- readonly similes: readonly ["CD", "CWD"];
31
- readonly parameters: readonly [];
32
- }, {
33
- readonly name: "EDIT_FILE";
34
- readonly description: "Replace a substring in a file (single replacement).";
35
- readonly similes: readonly ["REPLACE_IN_FILE", "PATCH_FILE", "MODIFY_FILE"];
36
- readonly parameters: readonly [];
37
- }, {
38
- readonly name: "EXECUTE_SHELL";
39
- readonly description: "Execute a shell command in the current working directory (restricted).";
40
- readonly similes: readonly ["SHELL", "RUN_COMMAND", "EXEC", "TERMINAL"];
41
- readonly parameters: readonly [];
42
- }, {
43
- readonly name: "GIT";
44
- readonly description: "Run a git command (restricted).";
45
- readonly similes: readonly ["GIT_COMMAND", "GIT_RUN"];
46
- readonly parameters: readonly [];
47
- }, {
48
- readonly name: "LIST_FILES";
49
- readonly description: "List files in a directory.";
50
- readonly similes: readonly ["LS", "LIST_DIR", "LIST_DIRECTORY", "DIR"];
51
- readonly parameters: readonly [];
52
- }, {
53
- readonly name: "READ_FILE";
54
- readonly description: "Read and return a file";
55
- readonly similes: readonly ["VIEW_FILE", "OPEN_FILE", "CAT_FILE", "SHOW_FILE", "GET_FILE"];
56
- readonly parameters: readonly [];
57
- }, {
58
- readonly name: "SEARCH_FILES";
59
- readonly description: "Search for text across files under a directory.";
60
- readonly similes: readonly ["GREP", "RG", "FIND_IN_FILES", "SEARCH"];
61
- readonly parameters: readonly [];
62
- }, {
63
- readonly name: "WRITE_FILE";
64
- readonly description: "Create or overwrite a file with given content.";
65
- readonly similes: readonly ["CREATE_FILE", "SAVE_FILE", "OUTPUT_FILE"];
66
- readonly parameters: readonly [];
67
- }];
68
- };
69
- export declare const allActionsSpec: {
70
- readonly version: "1.0.0";
71
- readonly actions: readonly [{
72
- readonly name: "CHANGE_DIRECTORY";
73
- readonly description: "Change the working directory (restricted to allowed directory).";
74
- readonly similes: readonly ["CD", "CWD"];
75
- readonly parameters: readonly [];
76
- }, {
77
- readonly name: "EDIT_FILE";
78
- readonly description: "Replace a substring in a file (single replacement).";
79
- readonly similes: readonly ["REPLACE_IN_FILE", "PATCH_FILE", "MODIFY_FILE"];
80
- readonly parameters: readonly [];
81
- }, {
82
- readonly name: "EXECUTE_SHELL";
83
- readonly description: "Execute a shell command in the current working directory (restricted).";
84
- readonly similes: readonly ["SHELL", "RUN_COMMAND", "EXEC", "TERMINAL"];
85
- readonly parameters: readonly [];
86
- }, {
87
- readonly name: "GIT";
88
- readonly description: "Run a git command (restricted).";
89
- readonly similes: readonly ["GIT_COMMAND", "GIT_RUN"];
90
- readonly parameters: readonly [];
91
- }, {
92
- readonly name: "LIST_FILES";
93
- readonly description: "List files in a directory.";
94
- readonly similes: readonly ["LS", "LIST_DIR", "LIST_DIRECTORY", "DIR"];
95
- readonly parameters: readonly [];
96
- }, {
97
- readonly name: "READ_FILE";
98
- readonly description: "Read and return a file";
99
- readonly similes: readonly ["VIEW_FILE", "OPEN_FILE", "CAT_FILE", "SHOW_FILE", "GET_FILE"];
100
- readonly parameters: readonly [];
101
- }, {
102
- readonly name: "SEARCH_FILES";
103
- readonly description: "Search for text across files under a directory.";
104
- readonly similes: readonly ["GREP", "RG", "FIND_IN_FILES", "SEARCH"];
105
- readonly parameters: readonly [];
106
- }, {
107
- readonly name: "WRITE_FILE";
108
- readonly description: "Create or overwrite a file with given content.";
109
- readonly similes: readonly ["CREATE_FILE", "SAVE_FILE", "OUTPUT_FILE"];
110
- readonly parameters: readonly [];
111
- }];
112
- };
113
- export declare const coreProvidersSpec: {
114
- readonly version: "1.0.0";
115
- readonly providers: readonly [{
116
- readonly name: "CODER_STATUS";
117
- readonly description: "Provides current working directory, allowed directory, and recent shell/file operations";
118
- readonly dynamic: true;
119
- }];
120
- };
121
- export declare const allProvidersSpec: {
122
- readonly version: "1.0.0";
123
- readonly providers: readonly [{
124
- readonly name: "CODER_STATUS";
125
- readonly description: "Provides current working directory, allowed directory, and recent shell/file operations";
126
- readonly dynamic: true;
127
- }];
128
- };
129
- export declare const coreEvaluatorsSpec: {
130
- readonly version: "1.0.0";
131
- readonly evaluators: readonly [];
132
- };
133
- export declare const allEvaluatorsSpec: {
134
- readonly version: "1.0.0";
135
- readonly evaluators: readonly [];
136
- };
137
- export declare const coreActionDocs: readonly ActionDoc[];
138
- export declare const allActionDocs: readonly ActionDoc[];
139
- export declare const coreProviderDocs: readonly ProviderDoc[];
140
- export declare const allProviderDocs: readonly ProviderDoc[];
141
- export declare const coreEvaluatorDocs: readonly EvaluatorDoc[];
142
- export declare const allEvaluatorDocs: readonly EvaluatorDoc[];
@@ -1,9 +0,0 @@
1
- import type { Plugin } from "@elizaos/core";
2
- /**
3
- * Browser entrypoint.
4
- *
5
- * The eliza-coder plugin requires filesystem/shell/git access and is therefore
6
- * Node-only. This stub avoids importing Node-only code in browser bundles.
7
- */
8
- export declare const elizaCoderPlugin: Plugin;
9
- export default elizaCoderPlugin;