@jamesmurdza/opencode-daytona 0.1.10 → 0.1.11

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.
Files changed (29) hide show
  1. package/.opencode/plugin/daytona/index.d.ts +25 -0
  2. package/.opencode/plugin/daytona/index.d.ts.map +1 -0
  3. package/.opencode/plugin/daytona/index.js +36 -0
  4. package/.opencode/plugin/daytona/index.js.map +1 -0
  5. package/.opencode/plugin/daytona/logger.d.ts +13 -0
  6. package/.opencode/plugin/daytona/logger.d.ts.map +1 -0
  7. package/.opencode/plugin/daytona/logger.js +26 -0
  8. package/.opencode/plugin/daytona/logger.js.map +1 -0
  9. package/.opencode/plugin/daytona/plugins.d.ts +22 -0
  10. package/.opencode/plugin/daytona/plugins.d.ts.map +1 -0
  11. package/.opencode/plugin/daytona/plugins.js +60 -0
  12. package/.opencode/plugin/daytona/plugins.js.map +1 -0
  13. package/.opencode/plugin/daytona/session-manager.d.ts +47 -0
  14. package/.opencode/plugin/daytona/session-manager.d.ts.map +1 -0
  15. package/.opencode/plugin/daytona/session-manager.js +171 -0
  16. package/.opencode/plugin/daytona/session-manager.js.map +1 -0
  17. package/.opencode/plugin/daytona/tools.d.ts +185 -0
  18. package/.opencode/plugin/daytona/tools.d.ts.map +1 -0
  19. package/.opencode/plugin/daytona/tools.js +232 -0
  20. package/.opencode/plugin/daytona/tools.js.map +1 -0
  21. package/.opencode/plugin/daytona/types.d.ts +32 -0
  22. package/.opencode/plugin/daytona/types.d.ts.map +1 -0
  23. package/.opencode/plugin/daytona/types.js +10 -0
  24. package/.opencode/plugin/daytona/types.js.map +1 -0
  25. package/.opencode/plugin/index.d.ts +3 -23
  26. package/.opencode/plugin/index.d.ts.map +1 -1
  27. package/.opencode/plugin/index.js +3 -402
  28. package/.opencode/plugin/index.js.map +1 -1
  29. package/package.json +1 -1
@@ -1,405 +1,6 @@
1
1
  /**
2
- * OpenCode Plugin: Daytona Sandbox Integration
3
- *
4
- * OpenCode plugins extend the AI coding assistant by adding custom tools, handling events,
5
- * and modifying behavior. Plugins are TypeScript/JavaScript modules that export functions
6
- * which return hooks for various lifecycle events.
7
- *
8
- * This plugin integrates Daytona sandboxes with OpenCode, providing isolated development
9
- * environments for each session. It adds custom tools for file operations, command execution,
10
- * and search within sandboxes, and automatically cleans up resources when sessions end.
11
- *
12
- * Learn more: https://opencode.ai/docs/plugins/
2
+ * Main entry point for the OpenCode Daytona plugin
3
+ * Re-exports all plugin components from the daytona module
13
4
  */
14
- import { appendFileSync, readFileSync, writeFileSync, existsSync } from "fs";
15
- import { join } from "path";
16
- import { Daytona } from "@daytonaio/sdk";
17
- import { z } from "zod";
18
- // OpenCode constants:
19
- const EVENT_TYPE_SESSION_DELETED = 'session.deleted';
20
- // Daytona plugin constants:
21
- const LOG_LEVEL_INFO = 'INFO';
22
- const LOG_LEVEL_ERROR = 'ERROR';
23
- const LOG_LEVEL_WARN = 'WARN';
24
- /**
25
- * Daytona Sandbox Integration Tools
26
- *
27
- * Requires:
28
- * - npm install @daytonaio/sdk
29
- * - Environment: DAYTONA_API_KEY
30
- */
31
- /**
32
- * Logger class for handling plugin logging
33
- */
34
- class Logger {
35
- logFile;
36
- constructor(logFile) {
37
- this.logFile = logFile;
38
- }
39
- log(message, level = LOG_LEVEL_INFO) {
40
- const timestamp = new Date().toISOString();
41
- const logEntry = `[${timestamp}] [${level}] ${message}\n`;
42
- appendFileSync(this.logFile, logEntry);
43
- }
44
- info(message) {
45
- this.log(message, LOG_LEVEL_INFO);
46
- }
47
- error(message) {
48
- this.log(message, LOG_LEVEL_ERROR);
49
- }
50
- warn(message) {
51
- this.log(message, LOG_LEVEL_WARN);
52
- }
53
- }
54
- /**
55
- * Manages Daytona sandbox sessions and persists session-sandbox mappings
56
- */
57
- class DaytonaSessionManager {
58
- apiKey;
59
- sessionMapFile;
60
- logger;
61
- sessionSandboxes;
62
- // Initialize with API key, session map file path, and logger
63
- constructor(apiKey, sessionMapFile, logger) {
64
- this.apiKey = apiKey;
65
- this.sessionMapFile = sessionMapFile;
66
- this.logger = logger;
67
- this.sessionSandboxes = this.loadSessionMap();
68
- }
69
- // Load session map from file
70
- loadSessionMap() {
71
- const map = new Map();
72
- try {
73
- if (existsSync(this.sessionMapFile)) {
74
- const data = JSON.parse(readFileSync(this.sessionMapFile, 'utf-8'));
75
- for (const [sessionId, sandboxInfo] of Object.entries(data)) {
76
- map.set(sessionId, sandboxInfo);
77
- }
78
- }
79
- }
80
- catch (err) {
81
- this.logger.error(`Failed to load session map: ${err}`);
82
- }
83
- return map;
84
- }
85
- // Save session map to file
86
- saveSessionMap() {
87
- try {
88
- const data = {};
89
- for (const [sessionId, sandbox] of this.sessionSandboxes.entries()) {
90
- data[sessionId] = { id: sandbox.id };
91
- }
92
- writeFileSync(this.sessionMapFile, JSON.stringify(data, null, 2));
93
- }
94
- catch (err) {
95
- this.logger.error(`Failed to save session map: ${err}`);
96
- }
97
- }
98
- // Get or create a sandbox for the given session ID
99
- async getSandbox(sessionId) {
100
- if (!this.apiKey) {
101
- this.logger.error('DAYTONA_API_KEY is not set. Cannot create or retrieve sandbox.');
102
- throw new Error('DAYTONA_API_KEY is not set. Please set the environment variable to use Daytona sandboxes.');
103
- }
104
- if (!this.sessionSandboxes.has(sessionId)) {
105
- this.logger.info(`Creating new sandbox for session: ${sessionId}`);
106
- const daytona = new Daytona({ apiKey: this.apiKey });
107
- const sandbox = await daytona.create();
108
- this.sessionSandboxes.set(sessionId, sandbox);
109
- this.saveSessionMap();
110
- this.logger.info(`Sandbox created successfully.`);
111
- }
112
- else {
113
- const sandboxInfo = this.sessionSandboxes.get(sessionId);
114
- if (sandboxInfo && !('process' in sandboxInfo)) {
115
- const daytona = new Daytona({ apiKey: this.apiKey });
116
- const sandbox = await daytona.create();
117
- this.sessionSandboxes.set(sessionId, sandbox);
118
- this.saveSessionMap();
119
- }
120
- else {
121
- this.logger.info(`Reusing existing sandbox for session: ${sessionId}`);
122
- }
123
- }
124
- const sandbox = this.sessionSandboxes.get(sessionId);
125
- if (!sandbox) {
126
- throw new Error(`Failed to get sandbox for session: ${sessionId}`);
127
- }
128
- if (!('process' in sandbox)) {
129
- throw new Error(`Sandbox is not fully initialized for session: ${sessionId}`);
130
- }
131
- return sandbox;
132
- }
133
- // Delete the sandbox associated with the given session ID
134
- async deleteSandbox(sessionId) {
135
- const sandbox = this.sessionSandboxes.get(sessionId);
136
- if (sandbox && 'delete' in sandbox) {
137
- this.logger.info(`Removing sandbox for session: ${sessionId}`);
138
- await sandbox.delete();
139
- this.sessionSandboxes.delete(sessionId);
140
- this.saveSessionMap();
141
- this.logger.info(`Sandbox deleted successfully.`);
142
- }
143
- else {
144
- this.logger.warn(`No sandbox found for session: ${sessionId}`);
145
- }
146
- }
147
- }
148
- // Initialize logger and session manager
149
- const LOG_FILE = join(process.env.HOME || '/tmp', '.daytona-plugin.log');
150
- const SESSION_MAP_FILE = join(process.env.HOME || '/tmp', '.daytona-sessions.json');
151
- const logger = new Logger(LOG_FILE);
152
- const sessionManager = new DaytonaSessionManager(process.env.DAYTONA_API_KEY || '', SESSION_MAP_FILE, logger);
153
- export const CustomToolsPlugin = async (pluginCtx) => {
154
- logger.info('OpenCode started with Daytona plugin');
155
- return {
156
- tool: {
157
- /**
158
- * Executes a shell command in the Daytona sandbox and returns the output
159
- * @param command - Shell command to execute
160
- */
161
- bash: {
162
- description: "Executes shell commands in a Daytona sandbox",
163
- args: {
164
- command: z.string(),
165
- background: z.boolean().optional(),
166
- },
167
- async execute(args, ctx) {
168
- const sessionId = ctx.sessionID;
169
- const sandbox = await sessionManager.getSandbox(sessionId);
170
- if (args.background) {
171
- // Run command in background using session-based execution
172
- const execSessionId = `exec-session-${sessionId}`;
173
- // Create session if it doesn't exist
174
- try {
175
- await sandbox.process.getSession(execSessionId);
176
- }
177
- catch {
178
- await sandbox.process.createSession(execSessionId);
179
- }
180
- // Execute command asynchronously in the session
181
- const result = await sandbox.process.executeSessionCommand(execSessionId, {
182
- command: args.command,
183
- runAsync: true,
184
- });
185
- return `Command started in background (cmdId: ${result.cmdId})`;
186
- }
187
- else {
188
- const result = await sandbox.process.executeCommand(args.command);
189
- return `Exit code: ${result.exitCode}\n${result.result}`;
190
- }
191
- },
192
- },
193
- /**
194
- * Reads and returns the contents of a file from the sandbox
195
- * @param filePath - Path to the file to read
196
- */
197
- read: {
198
- description: "Reads file from Daytona sandbox",
199
- args: {
200
- filePath: z.string(),
201
- },
202
- async execute(args, ctx) {
203
- const sandbox = await sessionManager.getSandbox(ctx.sessionID);
204
- const buffer = await sandbox.fs.downloadFile(args.filePath);
205
- const decoder = new TextDecoder();
206
- return decoder.decode(buffer);
207
- },
208
- },
209
- /**
210
- * Writes content to a file in the sandbox, creating it if it doesn't exist
211
- * @param filePath - Path to the file to write
212
- * @param content - Content to write to the file
213
- */
214
- write: {
215
- description: "Writes content to file in Daytona sandbox",
216
- args: {
217
- filePath: z.string(),
218
- content: z.string(),
219
- },
220
- async execute(args, ctx) {
221
- const sandbox = await sessionManager.getSandbox(ctx.sessionID);
222
- await sandbox.fs.uploadFile(Buffer.from(args.content), args.filePath);
223
- return `Written ${args.content.length} bytes to ${args.filePath}`;
224
- },
225
- },
226
- /**
227
- * Replaces the first occurrence of a text pattern in a file
228
- * @param filePath - Path to the file to edit
229
- * @param oldString - Text to search for
230
- * @param newString - Text to replace with
231
- */
232
- edit: {
233
- description: "Replaces text in a file in Daytona sandbox",
234
- args: {
235
- filePath: z.string(),
236
- oldString: z.string(),
237
- newString: z.string(),
238
- },
239
- async execute(args, ctx) {
240
- const sandbox = await sessionManager.getSandbox(ctx.sessionID);
241
- const buffer = await sandbox.fs.downloadFile(args.filePath);
242
- const decoder = new TextDecoder();
243
- const content = decoder.decode(buffer);
244
- const newContent = content.replace(args.oldString, args.newString);
245
- await sandbox.fs.uploadFile(Buffer.from(newContent), args.filePath);
246
- return `Edited ${args.filePath}`;
247
- },
248
- },
249
- /**
250
- * Applies multiple text replacements to a file atomically
251
- * @param filePath - Path to the file to edit
252
- * @param edits - Array of {oldString, newString} pairs to apply
253
- */
254
- multiedit: {
255
- description: "Applies multiple edits to a file in Daytona sandbox atomically",
256
- args: {
257
- filePath: z.string(),
258
- edits: z.array(z.object({
259
- oldString: z.string(),
260
- newString: z.string(),
261
- })),
262
- },
263
- async execute(args, ctx) {
264
- const sandbox = await sessionManager.getSandbox(ctx.sessionID);
265
- const buffer = await sandbox.fs.downloadFile(args.filePath);
266
- const decoder = new TextDecoder();
267
- let content = decoder.decode(buffer);
268
- for (const edit of args.edits) {
269
- content = content.replace(edit.oldString, edit.newString);
270
- }
271
- await sandbox.fs.uploadFile(Buffer.from(content), args.filePath);
272
- return `Applied ${args.edits.length} edits to ${args.filePath}`;
273
- },
274
- },
275
- /**
276
- * Patches a file by replacing a code snippet with a new one
277
- * @param filePath - Path to the file to patch
278
- * @param oldSnippet - Code snippet to search for
279
- * @param newSnippet - Code snippet to replace with
280
- */
281
- patch: {
282
- description: "Patches a file with a code snippet in Daytona sandbox",
283
- args: {
284
- filePath: z.string(),
285
- oldSnippet: z.string(),
286
- newSnippet: z.string(),
287
- },
288
- async execute(args, ctx) {
289
- const sandbox = await sessionManager.getSandbox(ctx.sessionID);
290
- const buffer = await sandbox.fs.downloadFile(args.filePath);
291
- const decoder = new TextDecoder();
292
- const content = decoder.decode(buffer);
293
- const newContent = content.replace(args.oldSnippet, args.newSnippet);
294
- await sandbox.fs.uploadFile(Buffer.from(newContent), args.filePath);
295
- return `Patched ${args.filePath}`;
296
- },
297
- },
298
- /**
299
- * Lists files and directories in the specified path (or working directory)
300
- * @param dirPath - Optional directory path to list (defaults to working directory)
301
- */
302
- ls: {
303
- description: "Lists files in a directory in Daytona sandbox",
304
- args: {
305
- dirPath: z.string().optional(),
306
- },
307
- async execute(args, ctx) {
308
- const sandbox = await sessionManager.getSandbox(ctx.sessionID);
309
- const workDir = await sandbox.getWorkDir();
310
- const path = args.dirPath || workDir;
311
- const files = await sandbox.fs.listFiles(path);
312
- return files.map((f) => f.name).join('\n');
313
- },
314
- },
315
- /**
316
- * Searches for files matching a glob pattern in the sandbox
317
- * @param pattern - Glob pattern to match files (e.g., "**\/*.ts")
318
- */
319
- glob: {
320
- description: "Searches for files matching a pattern in Daytona sandbox",
321
- args: {
322
- pattern: z.string(),
323
- },
324
- async execute(args, ctx) {
325
- const sandbox = await sessionManager.getSandbox(ctx.sessionID);
326
- const workDir = await sandbox.getWorkDir();
327
- const result = await sandbox.fs.searchFiles(workDir, args.pattern);
328
- return result.files.join('\n');
329
- },
330
- },
331
- /**
332
- * Searches for text patterns in files and returns matching lines
333
- * @param pattern - Text pattern to search for
334
- */
335
- grep: {
336
- description: "Searches for text pattern in files in Daytona sandbox",
337
- args: {
338
- pattern: z.string(),
339
- },
340
- async execute(args, ctx) {
341
- const sandbox = await sessionManager.getSandbox(ctx.sessionID);
342
- const workDir = await sandbox.getWorkDir();
343
- const matches = await sandbox.fs.findFiles(workDir, args.pattern);
344
- return matches.map((m) => `${m.file}:${m.line}: ${m.content}`).join('\n');
345
- },
346
- },
347
- /**
348
- * Performs LSP (Language Server Protocol) operations for code intelligence (not yet implemented)
349
- * @param op - LSP operation to perform
350
- * @param filePath - Path to the file
351
- * @param line - Line number
352
- */
353
- lsp: {
354
- description: "LSP operation in Daytona sandbox (code intelligence)",
355
- args: {
356
- op: z.string(),
357
- filePath: z.string(),
358
- line: z.number(),
359
- },
360
- async execute(args, ctx) {
361
- return `LSP operations are not yet implemented in the Daytona plugin.`;
362
- },
363
- },
364
- getPreviewURL: {
365
- description: "Gets a preview URL for the Daytona sandbox",
366
- args: {
367
- port: z.number()
368
- },
369
- async execute(args, ctx) {
370
- const sandbox = await sessionManager.getSandbox(ctx.sessionID);
371
- const previewLink = await sandbox.getPreviewLink(args.port);
372
- return `Sandbox Preview URL: ${previewLink.url}`;
373
- },
374
- },
375
- },
376
- };
377
- };
378
- export const DaytonaSessionCleanupPlugin = async ({ $ }) => {
379
- return {
380
- /**
381
- * Cleans up sandbox resources when a session is deleted
382
- */
383
- event: async ({ event }) => {
384
- if (event.type === EVENT_TYPE_SESSION_DELETED) {
385
- const sessionId = event.properties.info.id;
386
- await sessionManager.deleteSandbox(sessionId);
387
- }
388
- },
389
- };
390
- };
391
- export const SystemTransformPlugin = async (pluginCtx) => {
392
- return {
393
- "experimental.chat.system.transform": async (input, output) => {
394
- output.system.push(`
395
- ## Daytona Sandbox Integration
396
- This session is running with Daytona sandbox integration enabled.
397
- All tool calls will execute in a Daytona sandbox environment.
398
- The sandbox working directory is /home/daytona/.
399
- Do NOT try to use the current working directory of the host system.
400
- When executing long-running commands, use the 'background' option to run them asynchronously.
401
- `);
402
- },
403
- };
404
- };
5
+ export * from './daytona/index.js';
405
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../.opencode/plugin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../.opencode/plugin/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,oBAAoB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jamesmurdza/opencode-daytona",
3
- "version": "0.1.10",
3
+ "version": "0.1.11",
4
4
  "description": "OpenCode plugin that automatically runs all sessions in Daytona sandboxes for isolated, reproducible development environments",
5
5
  "main": "./.opencode/plugin/index.js",
6
6
  "types": "./.opencode/plugin/index.d.ts",