@elizaos/plugin-code 2.0.0-alpha.2 → 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 +454 -5
- package/dist/index.js.map +7 -6
- package/package.json +13 -4
- package/LICENSE +0 -21
- package/dist/actions/changeDirectory.d.ts +0 -2
- package/dist/actions/editFile.d.ts +0 -2
- package/dist/actions/executeShell.d.ts +0 -2
- package/dist/actions/git.d.ts +0 -2
- package/dist/actions/index.d.ts +0 -8
- package/dist/actions/listFiles.d.ts +0 -2
- package/dist/actions/readFile.d.ts +0 -2
- package/dist/actions/searchFiles.d.ts +0 -2
- package/dist/actions/writeFile.d.ts +0 -2
- package/dist/build.d.ts +0 -1
- package/dist/generated/specs/spec-helpers.d.ts +0 -48
- package/dist/generated/specs/specs.d.ts +0 -142
- package/dist/index.browser.d.ts +0 -9
- package/dist/index.d.ts +0 -8
- package/dist/providers/coderStatusProvider.d.ts +0 -2
- package/dist/providers/index.d.ts +0 -1
- package/dist/services/coderService.d.ts +0 -61
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/types/index.d.ts +0 -28
- package/dist/utils/config.d.ts +0 -2
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/pathUtils.d.ts +0 -13
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",
|
|
@@ -12,13 +12,14 @@
|
|
|
12
12
|
"import * as path from \"node:path\";\nimport 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 extToLang(ext: string): string {\n const e = ext.toLowerCase();\n if (e === \".ts\" || e === \".tsx\") return \"ts\";\n if (e === \".js\" || e === \".jsx\") return \"js\";\n if (e === \".json\") return \"json\";\n if (e === \".md\") return \"md\";\n if (e === \".py\") return \"py\";\n if (e === \".rs\") return \"rs\";\n if (e === \".go\") return \"go\";\n if (e === \".toml\") return \"toml\";\n if (e === \".yml\" || e === \".yaml\") return \"yaml\";\n if (e === \".sh\" || e === \".bash\" || e === \".zsh\") return \"bash\";\n return \"\";\n}\n\nfunction getFilepath(\n options: HandlerOptions | undefined,\n message: Memory,\n): string {\n const opt = options as { filepath?: string } | undefined;\n if (opt?.filepath && opt.filepath.trim().length > 0)\n return opt.filepath.trim();\n const text = message.content.text ?? \"\";\n const m = text.match(/[\"'`]([^\"'`]+)[\"'`]/);\n if (m?.[1]) return m[1].trim();\n const loose = text.match(/(?:\\.\\/|\\/)?[\\w\\-./]+\\.[a-zA-Z0-9]+/);\n return loose?.[0]?.trim() ?? \"\";\n}\n\nconst spec = requireActionSpec(\"READ_FILE\");\n\nexport const readFile: Action = {\n name: spec.name,\n similes: spec.similes ? [...spec.similes] : [],\n description: `${spec.description} Reads a file's contents.`,\n validate: async (\n runtime: IAgentRuntime,\n _message: Memory,\n ): Promise<boolean> => 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 = getFilepath(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.readFile(conv, filepath);\n if (!result.ok) {\n if (callback) await callback({ content: { text: result.error } });\n return { success: false, text: result.error };\n }\n\n const lang = extToLang(path.extname(filepath));\n const fenced = `\\`\\`\\`${lang}\\n${result.content}\\n\\`\\`\\``;\n if (callback) await callback({ content: { text: fenced } });\n return { success: true, text: fenced };\n },\n};\n",
|
|
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
|
-
"import {\n addHeader,\n type IAgentRuntime,\n logger,\n type Memory,\n type Provider,\n type State,\n} from \"@elizaos/core\";\nimport type { CoderService } from \"../services/coderService\";\nimport type { CommandHistoryEntry, FileOperation } from \"../types\";\n\nconst MAX_OUTPUT_LENGTH = 8000;\nconst TRUNCATE_SEGMENT_LENGTH = 4000;\n\nexport const coderStatusProvider: Provider = {\n name:
|
|
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",
|
|
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 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": "
|
|
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.
|
|
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": "2.0.0-alpha.
|
|
37
|
-
"
|
|
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",
|
|
@@ -57,5 +58,13 @@
|
|
|
57
58
|
"publishConfig": {
|
|
58
59
|
"access": "public"
|
|
59
60
|
},
|
|
60
|
-
"
|
|
61
|
+
"milaidy": {
|
|
62
|
+
"platforms": [
|
|
63
|
+
"node"
|
|
64
|
+
],
|
|
65
|
+
"runtime": "node",
|
|
66
|
+
"platformDetails": {
|
|
67
|
+
"node": "Default export (Node.js)"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
61
70
|
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Shaw Walters and elizaOS Contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
package/dist/actions/git.d.ts
DELETED
package/dist/actions/index.d.ts
DELETED
|
@@ -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";
|
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 };
|