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

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.
@@ -0,0 +1,2 @@
1
+ import type { Action } from "@elizaos/core";
2
+ export declare const changeDirectory: Action;
@@ -0,0 +1,2 @@
1
+ import type { Action } from "@elizaos/core";
2
+ export declare const editFile: Action;
@@ -0,0 +1,2 @@
1
+ import type { Action } from "@elizaos/core";
2
+ export declare const executeShell: Action;
@@ -0,0 +1,2 @@
1
+ import type { Action } from "@elizaos/core";
2
+ export declare const git: Action;
@@ -0,0 +1,8 @@
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";
@@ -0,0 +1,2 @@
1
+ import type { Action } from "@elizaos/core";
2
+ export declare const listFiles: Action;
@@ -0,0 +1,2 @@
1
+ import type { Action } from "@elizaos/core";
2
+ export declare const readFile: Action;
@@ -0,0 +1,2 @@
1
+ import type { Action } from "@elizaos/core";
2
+ export declare const searchFiles: Action;
@@ -0,0 +1,2 @@
1
+ import type { Action } from "@elizaos/core";
2
+ export declare const writeFile: Action;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Configure coding tools - creates CodingAction instances for coding operations.
3
+ *
4
+ * This provides Claude Code-style actions:
5
+ * - exec: Execute shell commands (via ShellService)
6
+ * - process: Manage background processes (via ShellService)
7
+ * - read_file: Read file contents
8
+ * - write_file: Write file contents
9
+ * - edit_file: Edit file contents (find & replace)
10
+ * - list_files: List directory contents
11
+ * - search_files: Search for patterns in files
12
+ * - git: Execute git commands
13
+ */
14
+ import type { IAgentRuntime } from "@elizaos/core";
15
+ import type { CodingAction, CodingToolsOptions } from "./types";
16
+ /**
17
+ * Create configured coding actions using the provided services.
18
+ *
19
+ * @param runtime - The Eliza agent runtime
20
+ * @param options - Configuration options for the tools
21
+ * @returns Array of CodingAction instances
22
+ */
23
+ export declare function configureCodingTools(runtime: IAgentRuntime, options?: CodingToolsOptions): CodingAction[];
24
+ export default configureCodingTools;
@@ -0,0 +1,48 @@
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 };
@@ -0,0 +1,142 @@
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[];
@@ -0,0 +1,9 @@
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;
@@ -0,0 +1,9 @@
1
+ import type { Plugin } from "@elizaos/core";
2
+ export declare const coderPlugin: Plugin;
3
+ export default coderPlugin;
4
+ export * from "./actions";
5
+ export { configureCodingTools } from "./configureCodingTools";
6
+ export { coderStatusProvider } from "./providers/coderStatusProvider";
7
+ export { CoderService } from "./services/coderService";
8
+ export type { CoderConfig, CodingAction, CodingActionAvailabilityContext, CodingActionContentItem, CodingActionContext, CodingActionResult, CodingActionUpdateCallback, CodingToolsOptions, CommandHistoryEntry, CommandResult, FileOperation, FileOperationType, } from "./types";
9
+ export * from "./utils";
package/dist/index.js CHANGED
@@ -522,7 +522,7 @@ import {
522
522
  } from "@elizaos/core";
523
523
  var MAX_OUTPUT_LENGTH = 8000;
524
524
  var TRUNCATE_SEGMENT_LENGTH = 4000;
525
- var spec9 = requireProviderSpec("coderStatusProvider");
525
+ var spec9 = requireProviderSpec("CODER_STATUS");
526
526
  var coderStatusProvider = {
527
527
  name: spec9.name,
528
528
  description: "Provides current working directory, allowed directory, and recent shell/file operations",
@@ -1499,4 +1499,4 @@ export {
1499
1499
  CoderService
1500
1500
  };
1501
1501
 
1502
- //# debugId=30DB4D8CA69EB24D64756E2164756E21
1502
+ //# debugId=69540CB5358EFA9F64756E2164756E21
package/dist/index.js.map CHANGED
@@ -12,14 +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 { 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",
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(\"CODER_STATUS\");\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
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
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
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"
21
21
  ],
22
- "mappings": "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",
23
- "debugId": "30DB4D8CA69EB24D64756E2164756E21",
22
+ "mappings": "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",
23
+ "debugId": "69540CB5358EFA9F64756E2164756E21",
24
24
  "names": []
25
25
  }
@@ -0,0 +1,2 @@
1
+ import { type Provider } from "@elizaos/core";
2
+ export declare const coderStatusProvider: Provider;
@@ -0,0 +1 @@
1
+ export { coderStatusProvider } from "./coderStatusProvider";
@@ -0,0 +1,61 @@
1
+ import { type IAgentRuntime, Service } from "@elizaos/core";
2
+ import type { CommandHistoryEntry, CommandResult } from "../types";
3
+ export declare class CoderService extends Service {
4
+ static serviceType: string;
5
+ private coderConfig;
6
+ private currentDirectoryByConversation;
7
+ private commandHistoryByConversation;
8
+ private maxHistoryPerConversation;
9
+ constructor(runtime?: IAgentRuntime);
10
+ static start(runtime: IAgentRuntime): Promise<CoderService>;
11
+ stop(): Promise<void>;
12
+ get capabilityDescription(): string;
13
+ getAllowedDirectory(): string;
14
+ getCurrentDirectory(conversationId: string): string;
15
+ setCurrentDirectory(conversationId: string, dir: string): void;
16
+ getCommandHistory(conversationId: string, limit: number): CommandHistoryEntry[];
17
+ private addToHistory;
18
+ private ensureEnabled;
19
+ private resolveWithin;
20
+ changeDirectory(conversationId: string, targetPath: string): Promise<CommandResult>;
21
+ readFile(conversationId: string, filepath: string): Promise<{
22
+ ok: true;
23
+ content: string;
24
+ } | {
25
+ ok: false;
26
+ error: string;
27
+ }>;
28
+ writeFile(conversationId: string, filepath: string, content: string): Promise<{
29
+ ok: true;
30
+ } | {
31
+ ok: false;
32
+ error: string;
33
+ }>;
34
+ editFile(conversationId: string, filepath: string, oldStr: string, newStr: string): Promise<{
35
+ ok: true;
36
+ } | {
37
+ ok: false;
38
+ error: string;
39
+ }>;
40
+ listFiles(conversationId: string, dirPath: string): Promise<{
41
+ ok: true;
42
+ items: string[];
43
+ } | {
44
+ ok: false;
45
+ error: string;
46
+ }>;
47
+ searchFiles(conversationId: string, pattern: string, dirPath: string, maxMatches: number): Promise<{
48
+ ok: true;
49
+ matches: Array<{
50
+ file: string;
51
+ line: number;
52
+ content: string;
53
+ }>;
54
+ } | {
55
+ ok: false;
56
+ error: string;
57
+ }>;
58
+ private searchInDirectory;
59
+ executeShell(command: string, conversationId: string): Promise<CommandResult>;
60
+ git(args: string, conversationId: string): Promise<CommandResult>;
61
+ }
@@ -0,0 +1,207 @@
1
+ import type { IAgentRuntime, Service, State } from "@elizaos/core";
2
+ /**
3
+ * Process session for background command execution.
4
+ * Mirrors @elizaos/plugin-shell ProcessSession.
5
+ */
6
+ export interface ProcessSession {
7
+ id: string;
8
+ command: string;
9
+ scopeKey?: string;
10
+ sessionKey?: string;
11
+ notifyOnExit?: boolean;
12
+ exitNotified?: boolean;
13
+ pid?: number;
14
+ startedAt: number;
15
+ cwd?: string;
16
+ maxOutputChars: number;
17
+ pendingMaxOutputChars?: number;
18
+ totalOutputChars: number;
19
+ aggregated: string;
20
+ tail: string;
21
+ exitCode?: number | null;
22
+ exitSignal?: NodeJS.Signals | number | null;
23
+ exited: boolean;
24
+ truncated: boolean;
25
+ backgrounded: boolean;
26
+ }
27
+ /**
28
+ * Options for shell exec command.
29
+ */
30
+ export interface ShellExecuteOptions {
31
+ workdir?: string;
32
+ env?: Record<string, string>;
33
+ yieldMs?: number;
34
+ background?: boolean;
35
+ timeout?: number;
36
+ pty?: boolean;
37
+ conversationId?: string;
38
+ scopeKey?: string;
39
+ sessionKey?: string;
40
+ notifyOnExit?: boolean;
41
+ onUpdate?: (session: ProcessSession) => void;
42
+ }
43
+ /**
44
+ * Result from shell exec command.
45
+ */
46
+ export type ShellExecResult = {
47
+ status: "running";
48
+ sessionId: string;
49
+ pid?: number;
50
+ startedAt: number;
51
+ cwd?: string;
52
+ tail?: string;
53
+ } | {
54
+ status: "completed" | "failed";
55
+ exitCode: number | null;
56
+ durationMs: number;
57
+ aggregated: string;
58
+ cwd?: string;
59
+ timedOut?: boolean;
60
+ reason?: string;
61
+ };
62
+ /**
63
+ * Process action types.
64
+ */
65
+ export type ProcessAction = "list" | "poll" | "log" | "write" | "send-keys" | "submit" | "paste" | "kill" | "clear" | "remove";
66
+ /**
67
+ * Parameters for process actions.
68
+ */
69
+ export interface ProcessActionParams {
70
+ action: ProcessAction;
71
+ sessionId?: string;
72
+ data?: string;
73
+ keys?: string[];
74
+ hex?: string[];
75
+ literal?: string;
76
+ text?: string;
77
+ bracketed?: boolean;
78
+ eof?: boolean;
79
+ offset?: number;
80
+ limit?: number;
81
+ }
82
+ /**
83
+ * Shell service interface (subset used by plugin-code).
84
+ */
85
+ export interface ShellService extends Service {
86
+ exec(command: string, options?: ShellExecuteOptions): Promise<ShellExecResult>;
87
+ processAction(params: ProcessActionParams): Promise<Record<string, unknown>>;
88
+ }
89
+ export interface CoderConfig {
90
+ enabled: boolean;
91
+ allowedDirectory: string;
92
+ timeoutMs: number;
93
+ forbiddenCommands: string[];
94
+ }
95
+ export type FileOperationType = "read" | "write" | "edit" | "list" | "search";
96
+ export interface FileOperation {
97
+ type: FileOperationType;
98
+ target: string;
99
+ }
100
+ export interface CommandHistoryEntry {
101
+ timestamp: number;
102
+ workingDirectory: string;
103
+ command: string;
104
+ stdout: string;
105
+ stderr: string;
106
+ exitCode: number | null;
107
+ fileOperations?: FileOperation[];
108
+ }
109
+ export interface CommandResult {
110
+ success: boolean;
111
+ stdout: string;
112
+ stderr: string;
113
+ exitCode: number | null;
114
+ error?: string;
115
+ executedIn: string;
116
+ }
117
+ /**
118
+ * Content item in a coding action result
119
+ */
120
+ export interface CodingActionContentItem {
121
+ type: "text" | "image";
122
+ text?: string;
123
+ source?: {
124
+ type: string;
125
+ data: string;
126
+ mimeType: string;
127
+ };
128
+ }
129
+ /**
130
+ * Result returned from a CodingAction execute function
131
+ */
132
+ export interface CodingActionResult {
133
+ content: CodingActionContentItem[];
134
+ details?: Record<string, unknown>;
135
+ }
136
+ /**
137
+ * Callback for streaming action updates
138
+ */
139
+ export type CodingActionUpdateCallback = (update: CodingActionResult) => void;
140
+ /**
141
+ * Context for checking if a CodingAction is available
142
+ */
143
+ export interface CodingActionAvailabilityContext {
144
+ runtime: IAgentRuntime;
145
+ roomId?: string;
146
+ state?: State;
147
+ }
148
+ /**
149
+ * Context provided to CodingAction execute function
150
+ */
151
+ export interface CodingActionContext {
152
+ toolCallId: string;
153
+ args: Record<string, unknown>;
154
+ signal?: AbortSignal;
155
+ onUpdate?: CodingActionUpdateCallback;
156
+ runtime: IAgentRuntime;
157
+ roomId?: string;
158
+ conversationId?: string;
159
+ state?: State;
160
+ }
161
+ /**
162
+ * CodingAction interface - Claude Code-style actions for coding operations.
163
+ *
164
+ * These are structured function-calling actions with:
165
+ * - JSON Schema parameters for LLM function calling
166
+ * - Room/context-scoped availability
167
+ * - Abort signal support
168
+ * - Streaming update support
169
+ */
170
+ export interface CodingAction {
171
+ /** Unique action name (e.g., "exec", "read_file", "write_file") */
172
+ name: string;
173
+ /** Optional display label */
174
+ label?: string;
175
+ /** Description for the LLM to understand when to use this action */
176
+ description: string;
177
+ /** JSON Schema for action parameters */
178
+ parameters: Record<string, unknown>;
179
+ /**
180
+ * Check if this action is available in the given context.
181
+ * Used for room-scoped capability filtering.
182
+ */
183
+ isAvailable?: (context: CodingActionAvailabilityContext) => boolean | Promise<boolean>;
184
+ /**
185
+ * Execute the action with full context
186
+ */
187
+ execute: (context: CodingActionContext) => Promise<CodingActionResult>;
188
+ }
189
+ /**
190
+ * Options for configuring coding tools
191
+ */
192
+ export interface CodingToolsOptions {
193
+ /** Working directory for file operations */
194
+ cwd?: string;
195
+ /** Scope key for session management */
196
+ scopeKey?: string;
197
+ /** Session key for tracking */
198
+ sessionKey?: string;
199
+ /** Notify on background process exit */
200
+ notifyOnExit?: boolean;
201
+ /** Default milliseconds before backgrounding commands */
202
+ backgroundMs?: number;
203
+ /** Default timeout in seconds */
204
+ timeoutSec?: number;
205
+ /** Conversation/room ID for context */
206
+ conversationId?: string;
207
+ }
@@ -0,0 +1,2 @@
1
+ import type { CoderConfig } from "../types";
2
+ export declare function loadCoderConfig(): CoderConfig;
@@ -0,0 +1,2 @@
1
+ export { loadCoderConfig } from "./config";
2
+ export { DEFAULT_FORBIDDEN_COMMANDS, extractBaseCommand, isForbiddenCommand, isSafeCommand, validatePath, } from "./pathUtils";
@@ -0,0 +1,13 @@
1
+ export declare const DEFAULT_FORBIDDEN_COMMANDS: string[];
2
+ export declare function extractBaseCommand(command: string): string;
3
+ /**
4
+ * Very conservative “safe command” filter. Blocks shell control operators and
5
+ * common escape patterns. (This is aligned with other plugins’ patterns.)
6
+ */
7
+ export declare function isSafeCommand(command: string): boolean;
8
+ export declare function isForbiddenCommand(command: string, additionalForbidden: string[]): boolean;
9
+ /**
10
+ * Resolve a target path against the current directory while enforcing that
11
+ * the result stays inside allowedDirectory.
12
+ */
13
+ export declare function validatePath(targetPath: string, allowedDirectory: string, currentDirectory: string): string | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/plugin-code",
3
- "version": "2.0.0-alpha.3",
3
+ "version": "2.0.0-alpha.5",
4
4
  "description": "Coder tools plugin for ElizaOS (filesystem + shell + git)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",