@jamesmurdza/opencode-daytona 0.1.21 → 0.1.23

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 (116) hide show
  1. package/.opencode/plugin/daytona/core/logger.d.ts +2 -2
  2. package/.opencode/plugin/daytona/core/logger.js +28 -15
  3. package/.opencode/plugin/daytona/core/logger.js.map +1 -1
  4. package/.opencode/plugin/daytona/core/project-data-storage.d.ts +11 -7
  5. package/.opencode/plugin/daytona/core/project-data-storage.js +84 -43
  6. package/.opencode/plugin/daytona/core/project-data-storage.js.map +1 -1
  7. package/.opencode/plugin/daytona/core/session-manager.d.ts +5 -2
  8. package/.opencode/plugin/daytona/core/session-manager.js +113 -60
  9. package/.opencode/plugin/daytona/core/session-manager.js.map +1 -1
  10. package/.opencode/plugin/daytona/core/toast.d.ts +47 -0
  11. package/.opencode/plugin/daytona/core/toast.js +73 -0
  12. package/.opencode/plugin/daytona/core/toast.js.map +1 -0
  13. package/.opencode/plugin/daytona/core/types.d.ts +10 -8
  14. package/.opencode/plugin/daytona/core/types.js +10 -6
  15. package/.opencode/plugin/daytona/core/types.js.map +1 -1
  16. package/.opencode/plugin/daytona/git/host-git-manager.d.ts +34 -7
  17. package/.opencode/plugin/daytona/git/host-git-manager.js +254 -68
  18. package/.opencode/plugin/daytona/git/host-git-manager.js.map +1 -1
  19. package/.opencode/plugin/daytona/git/index.d.ts +4 -1
  20. package/.opencode/plugin/daytona/git/index.js +9 -1
  21. package/.opencode/plugin/daytona/git/index.js.map +1 -1
  22. package/.opencode/plugin/daytona/git/sandbox-git-manager.d.ts +5 -1
  23. package/.opencode/plugin/daytona/git/sandbox-git-manager.js +23 -12
  24. package/.opencode/plugin/daytona/git/sandbox-git-manager.js.map +1 -1
  25. package/.opencode/plugin/daytona/git/session-git-manager.d.ts +19 -3
  26. package/.opencode/plugin/daytona/git/session-git-manager.js +80 -43
  27. package/.opencode/plugin/daytona/git/session-git-manager.js.map +1 -1
  28. package/.opencode/plugin/daytona/index.d.ts +131 -23
  29. package/.opencode/plugin/daytona/index.js +27 -16
  30. package/.opencode/plugin/daytona/index.js.map +1 -1
  31. package/.opencode/plugin/daytona/plugins/custom-tools.d.ts +129 -5
  32. package/.opencode/plugin/daytona/plugins/custom-tools.js +15 -13
  33. package/.opencode/plugin/daytona/plugins/custom-tools.js.map +1 -1
  34. package/.opencode/plugin/daytona/plugins/session-events.d.ts +10 -0
  35. package/.opencode/plugin/daytona/plugins/session-events.js +51 -0
  36. package/.opencode/plugin/daytona/plugins/session-events.js.map +1 -0
  37. package/.opencode/plugin/daytona/plugins/system-transform.d.ts +8 -5
  38. package/.opencode/plugin/daytona/plugins/system-transform.js +19 -15
  39. package/.opencode/plugin/daytona/plugins/system-transform.js.map +1 -1
  40. package/.opencode/plugin/daytona/tools/bash.d.ts +7 -3
  41. package/.opencode/plugin/daytona/tools/bash.js +16 -5
  42. package/.opencode/plugin/daytona/tools/bash.js.map +1 -1
  43. package/.opencode/plugin/daytona/tools/edit.d.ts +6 -2
  44. package/.opencode/plugin/daytona/tools/edit.js +13 -5
  45. package/.opencode/plugin/daytona/tools/edit.js.map +1 -1
  46. package/.opencode/plugin/daytona/tools/get-preview-url.d.ts +6 -2
  47. package/.opencode/plugin/daytona/tools/get-preview-url.js +11 -3
  48. package/.opencode/plugin/daytona/tools/get-preview-url.js.map +1 -1
  49. package/.opencode/plugin/daytona/tools/glob.d.ts +6 -2
  50. package/.opencode/plugin/daytona/tools/glob.js +11 -3
  51. package/.opencode/plugin/daytona/tools/glob.js.map +1 -1
  52. package/.opencode/plugin/daytona/tools/grep.d.ts +6 -2
  53. package/.opencode/plugin/daytona/tools/grep.js +11 -3
  54. package/.opencode/plugin/daytona/tools/grep.js.map +1 -1
  55. package/.opencode/plugin/daytona/tools/ls.d.ts +6 -2
  56. package/.opencode/plugin/daytona/tools/ls.js +11 -3
  57. package/.opencode/plugin/daytona/tools/ls.js.map +1 -1
  58. package/.opencode/plugin/daytona/tools/lsp.d.ts +6 -2
  59. package/.opencode/plugin/daytona/tools/lsp.js +13 -5
  60. package/.opencode/plugin/daytona/tools/lsp.js.map +1 -1
  61. package/.opencode/plugin/daytona/tools/multiedit.d.ts +6 -2
  62. package/.opencode/plugin/daytona/tools/multiedit.js +14 -6
  63. package/.opencode/plugin/daytona/tools/multiedit.js.map +1 -1
  64. package/.opencode/plugin/daytona/tools/patch.d.ts +7 -5
  65. package/.opencode/plugin/daytona/tools/patch.js +13 -13
  66. package/.opencode/plugin/daytona/tools/patch.js.map +1 -1
  67. package/.opencode/plugin/daytona/tools/read.d.ts +6 -2
  68. package/.opencode/plugin/daytona/tools/read.js +11 -3
  69. package/.opencode/plugin/daytona/tools/read.js.map +1 -1
  70. package/.opencode/plugin/daytona/tools/write.d.ts +6 -2
  71. package/.opencode/plugin/daytona/tools/write.js +12 -4
  72. package/.opencode/plugin/daytona/tools/write.js.map +1 -1
  73. package/.opencode/plugin/daytona/tools.d.ts +14 -16
  74. package/.opencode/plugin/daytona/tools.js +31 -23
  75. package/.opencode/plugin/daytona/tools.js.map +1 -1
  76. package/.opencode/plugin/index.d.ts +7 -4
  77. package/.opencode/plugin/index.js +12 -3
  78. package/.opencode/plugin/index.js.map +1 -1
  79. package/README.md +68 -29
  80. package/package.json +34 -17
  81. package/.opencode/plugin/daytona/core/logger.d.ts.map +0 -1
  82. package/.opencode/plugin/daytona/core/project-data-storage.d.ts.map +0 -1
  83. package/.opencode/plugin/daytona/core/session-manager.d.ts.map +0 -1
  84. package/.opencode/plugin/daytona/core/types.d.ts.map +0 -1
  85. package/.opencode/plugin/daytona/git/host-git-manager.d.ts.map +0 -1
  86. package/.opencode/plugin/daytona/git/index.d.ts.map +0 -1
  87. package/.opencode/plugin/daytona/git/sandbox-git-manager.d.ts.map +0 -1
  88. package/.opencode/plugin/daytona/git/session-git-manager.d.ts.map +0 -1
  89. package/.opencode/plugin/daytona/index.d.ts.map +0 -1
  90. package/.opencode/plugin/daytona/plugins/custom-tools.d.ts.map +0 -1
  91. package/.opencode/plugin/daytona/plugins/index.d.ts +0 -8
  92. package/.opencode/plugin/daytona/plugins/index.d.ts.map +0 -1
  93. package/.opencode/plugin/daytona/plugins/index.js +0 -8
  94. package/.opencode/plugin/daytona/plugins/index.js.map +0 -1
  95. package/.opencode/plugin/daytona/plugins/session-cleanup.d.ts +0 -8
  96. package/.opencode/plugin/daytona/plugins/session-cleanup.d.ts.map +0 -1
  97. package/.opencode/plugin/daytona/plugins/session-cleanup.js +0 -38
  98. package/.opencode/plugin/daytona/plugins/session-cleanup.js.map +0 -1
  99. package/.opencode/plugin/daytona/plugins/session-idle-auto-commit.d.ts +0 -7
  100. package/.opencode/plugin/daytona/plugins/session-idle-auto-commit.d.ts.map +0 -1
  101. package/.opencode/plugin/daytona/plugins/session-idle-auto-commit.js +0 -46
  102. package/.opencode/plugin/daytona/plugins/session-idle-auto-commit.js.map +0 -1
  103. package/.opencode/plugin/daytona/plugins/system-transform.d.ts.map +0 -1
  104. package/.opencode/plugin/daytona/tools/bash.d.ts.map +0 -1
  105. package/.opencode/plugin/daytona/tools/edit.d.ts.map +0 -1
  106. package/.opencode/plugin/daytona/tools/get-preview-url.d.ts.map +0 -1
  107. package/.opencode/plugin/daytona/tools/glob.d.ts.map +0 -1
  108. package/.opencode/plugin/daytona/tools/grep.d.ts.map +0 -1
  109. package/.opencode/plugin/daytona/tools/ls.d.ts.map +0 -1
  110. package/.opencode/plugin/daytona/tools/lsp.d.ts.map +0 -1
  111. package/.opencode/plugin/daytona/tools/multiedit.d.ts.map +0 -1
  112. package/.opencode/plugin/daytona/tools/patch.d.ts.map +0 -1
  113. package/.opencode/plugin/daytona/tools/read.d.ts.map +0 -1
  114. package/.opencode/plugin/daytona/tools/write.d.ts.map +0 -1
  115. package/.opencode/plugin/daytona/tools.d.ts.map +0 -1
  116. package/.opencode/plugin/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../../../.opencode/plugin/daytona/tools/patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,cAAqC,EAAE,SAAiB,EAAE,QAAgB,EAAE,SAAsB,EAAE,EAAE,CAAC,CAAC;IAChI,WAAW,EAAE,uDAAuD;IACpE,IAAI,EAAE;QACJ,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;KACvB;IACD,KAAK,CAAC,OAAO,CAAC,IAAkE,EAAE,GAAgB;QAChG,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC9F,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC3D,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACtC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QACpE,MAAM,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QACnE,OAAO,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAA;IACnC,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../../../../../../libs/opencode-plugin/.opencode/plugin/daytona/tools/patch.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6BAAuB;AAKhB,MAAM,SAAS,GAAG,CACvB,cAAqC,EACrC,SAAiB,EACjB,QAAgB,EAChB,SAAsB,EACtB,EAAE,CAAC,CAAC;IACJ,WAAW,EAAE,mDAAmD;IAChE,IAAI,EAAE;QACJ,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;KAC5F;IACD,KAAK,CAAC,OAAO,CAAC,IAAkE,EAAE,GAAgB;QAChG,OAAO,iEAAiE,CAAA;IAC1E,CAAC;CACF,CAAC,CAAA;AAbW,QAAA,SAAS,aAapB"}
@@ -1,5 +1,10 @@
1
+ /**
2
+ * Copyright 2025 Daytona Platforms Inc.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
1
5
  import { z } from 'zod';
2
- import type { ToolContext, PluginInput } from '@opencode-ai/plugin';
6
+ import type { PluginInput } from '@opencode-ai/plugin';
7
+ import type { ToolContext } from '@opencode-ai/plugin/tool';
3
8
  import type { DaytonaSessionManager } from '../core/session-manager';
4
9
  export declare const readTool: (sessionManager: DaytonaSessionManager, projectId: string, worktree: string, pluginCtx: PluginInput) => {
5
10
  description: string;
@@ -10,4 +15,3 @@ export declare const readTool: (sessionManager: DaytonaSessionManager, projectId
10
15
  filePath: string;
11
16
  }, ctx: ToolContext): Promise<string>;
12
17
  };
13
- //# sourceMappingURL=read.d.ts.map
@@ -1,8 +1,15 @@
1
- import { z } from 'zod';
2
- export const readTool = (sessionManager, projectId, worktree, pluginCtx) => ({
1
+ "use strict";
2
+ /**
3
+ * Copyright 2025 Daytona Platforms Inc.
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.readTool = void 0;
8
+ const zod_1 = require("zod");
9
+ const readTool = (sessionManager, projectId, worktree, pluginCtx) => ({
3
10
  description: 'Reads file from Daytona sandbox',
4
11
  args: {
5
- filePath: z.string(),
12
+ filePath: zod_1.z.string(),
6
13
  },
7
14
  async execute(args, ctx) {
8
15
  const sandbox = await sessionManager.getSandbox(ctx.sessionID, projectId, worktree, pluginCtx);
@@ -11,4 +18,5 @@ export const readTool = (sessionManager, projectId, worktree, pluginCtx) => ({
11
18
  return decoder.decode(buffer);
12
19
  },
13
20
  });
21
+ exports.readTool = readTool;
14
22
  //# sourceMappingURL=read.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../../.opencode/plugin/daytona/tools/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,cAAqC,EAAE,SAAiB,EAAE,QAAgB,EAAE,SAAsB,EAAE,EAAE,CAAC,CAAC;IAC/H,WAAW,EAAE,iCAAiC;IAC9C,IAAI,EAAE;QACJ,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;KACrB;IACD,KAAK,CAAC,OAAO,CAAC,IAA0B,EAAE,GAAgB;QACxD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC9F,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC3D,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC/B,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../../../../../libs/opencode-plugin/.opencode/plugin/daytona/tools/read.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6BAAuB;AAKhB,MAAM,QAAQ,GAAG,CACtB,cAAqC,EACrC,SAAiB,EACjB,QAAgB,EAChB,SAAsB,EACtB,EAAE,CAAC,CAAC;IACJ,WAAW,EAAE,iCAAiC;IAC9C,IAAI,EAAE;QACJ,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;KACrB;IACD,KAAK,CAAC,OAAO,CAAC,IAA0B,EAAE,GAAgB;QACxD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC9F,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC3D,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC/B,CAAC;CACF,CAAC,CAAA;AAhBW,QAAA,QAAQ,YAgBnB"}
@@ -1,5 +1,10 @@
1
+ /**
2
+ * Copyright 2025 Daytona Platforms Inc.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
1
5
  import { z } from 'zod';
2
- import type { ToolContext, PluginInput } from '@opencode-ai/plugin';
6
+ import type { PluginInput } from '@opencode-ai/plugin';
7
+ import type { ToolContext } from '@opencode-ai/plugin/tool';
3
8
  import type { DaytonaSessionManager } from '../core/session-manager';
4
9
  export declare const writeTool: (sessionManager: DaytonaSessionManager, projectId: string, worktree: string, pluginCtx: PluginInput) => {
5
10
  description: string;
@@ -12,4 +17,3 @@ export declare const writeTool: (sessionManager: DaytonaSessionManager, projectI
12
17
  content: string;
13
18
  }, ctx: ToolContext): Promise<string>;
14
19
  };
15
- //# sourceMappingURL=write.d.ts.map
@@ -1,9 +1,16 @@
1
- import { z } from 'zod';
2
- export const writeTool = (sessionManager, projectId, worktree, pluginCtx) => ({
1
+ "use strict";
2
+ /**
3
+ * Copyright 2025 Daytona Platforms Inc.
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.writeTool = void 0;
8
+ const zod_1 = require("zod");
9
+ const writeTool = (sessionManager, projectId, worktree, pluginCtx) => ({
3
10
  description: 'Writes content to file in Daytona sandbox',
4
11
  args: {
5
- filePath: z.string(),
6
- content: z.string(),
12
+ filePath: zod_1.z.string(),
13
+ content: zod_1.z.string(),
7
14
  },
8
15
  async execute(args, ctx) {
9
16
  const sandbox = await sessionManager.getSandbox(ctx.sessionID, projectId, worktree, pluginCtx);
@@ -11,4 +18,5 @@ export const writeTool = (sessionManager, projectId, worktree, pluginCtx) => ({
11
18
  return `Written ${args.content.length} bytes to ${args.filePath}`;
12
19
  },
13
20
  });
21
+ exports.writeTool = writeTool;
14
22
  //# sourceMappingURL=write.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../../../.opencode/plugin/daytona/tools/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,cAAqC,EAAE,SAAiB,EAAE,QAAgB,EAAE,SAAsB,EAAE,EAAE,CAAC,CAAC;IAChI,WAAW,EAAE,2CAA2C;IACxD,IAAI,EAAE;QACJ,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB;IACD,KAAK,CAAC,OAAO,CAAC,IAA2C,EAAE,GAAgB;QACzE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC9F,MAAM,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrE,OAAO,WAAW,IAAI,CAAC,OAAO,CAAC,MAAM,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAA;IACnE,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../../../../../libs/opencode-plugin/.opencode/plugin/daytona/tools/write.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6BAAuB;AAKhB,MAAM,SAAS,GAAG,CACvB,cAAqC,EACrC,SAAiB,EACjB,QAAgB,EAChB,SAAsB,EACtB,EAAE,CAAC,CAAC;IACJ,WAAW,EAAE,2CAA2C;IACxD,IAAI,EAAE;QACJ,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;QACpB,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;KACpB;IACD,KAAK,CAAC,OAAO,CAAC,IAA2C,EAAE,GAAgB;QACzE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC9F,MAAM,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrE,OAAO,WAAW,IAAI,CAAC,OAAO,CAAC,MAAM,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAA;IACnE,CAAC;CACF,CAAC,CAAA;AAhBW,QAAA,SAAS,aAgBpB"}
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Tool implementations for Daytona sandbox integration
2
+ * Copyright 2025 Daytona Platforms Inc.
3
+ * SPDX-License-Identifier: Apache-2.0
3
4
  */
4
5
  import type { DaytonaSessionManager } from './core/session-manager';
5
6
  import type { PluginInput } from '@opencode-ai/plugin';
@@ -13,7 +14,7 @@ export declare function createDaytonaTools(sessionManager: DaytonaSessionManager
13
14
  execute(args: {
14
15
  command: string;
15
16
  background?: boolean;
16
- }, ctx: import("@opencode-ai/plugin").ToolContext): Promise<string>;
17
+ }, ctx: import("@opencode-ai/plugin/tool", { with: { "resolution-mode": "import" } }).ToolContext): Promise<string>;
17
18
  };
18
19
  read: {
19
20
  description: string;
@@ -22,7 +23,7 @@ export declare function createDaytonaTools(sessionManager: DaytonaSessionManager
22
23
  };
23
24
  execute(args: {
24
25
  filePath: string;
25
- }, ctx: import("@opencode-ai/plugin").ToolContext): Promise<string>;
26
+ }, ctx: import("@opencode-ai/plugin/tool", { with: { "resolution-mode": "import" } }).ToolContext): Promise<string>;
26
27
  };
27
28
  write: {
28
29
  description: string;
@@ -33,7 +34,7 @@ export declare function createDaytonaTools(sessionManager: DaytonaSessionManager
33
34
  execute(args: {
34
35
  filePath: string;
35
36
  content: string;
36
- }, ctx: import("@opencode-ai/plugin").ToolContext): Promise<string>;
37
+ }, ctx: import("@opencode-ai/plugin/tool", { with: { "resolution-mode": "import" } }).ToolContext): Promise<string>;
37
38
  };
38
39
  edit: {
39
40
  description: string;
@@ -46,7 +47,7 @@ export declare function createDaytonaTools(sessionManager: DaytonaSessionManager
46
47
  filePath: string;
47
48
  oldString: string;
48
49
  newString: string;
49
- }, ctx: import("@opencode-ai/plugin").ToolContext): Promise<string>;
50
+ }, ctx: import("@opencode-ai/plugin/tool", { with: { "resolution-mode": "import" } }).ToolContext): Promise<string>;
50
51
  };
51
52
  multiedit: {
52
53
  description: string;
@@ -63,20 +64,18 @@ export declare function createDaytonaTools(sessionManager: DaytonaSessionManager
63
64
  oldString: string;
64
65
  newString: string;
65
66
  }>;
66
- }, ctx: import("@opencode-ai/plugin").ToolContext): Promise<string>;
67
+ }, ctx: import("@opencode-ai/plugin/tool", { with: { "resolution-mode": "import" } }).ToolContext): Promise<string>;
67
68
  };
68
69
  patch: {
69
70
  description: string;
70
71
  args: {
71
- filePath: import("zod").ZodString;
72
- oldSnippet: import("zod").ZodString;
73
- newSnippet: import("zod").ZodString;
72
+ patchText: import("zod").ZodString;
74
73
  };
75
74
  execute(args: {
76
75
  filePath: string;
77
76
  oldSnippet: string;
78
77
  newSnippet: string;
79
- }, ctx: import("@opencode-ai/plugin").ToolContext): Promise<string>;
78
+ }, ctx: import("@opencode-ai/plugin/tool", { with: { "resolution-mode": "import" } }).ToolContext): Promise<string>;
80
79
  };
81
80
  ls: {
82
81
  description: string;
@@ -85,7 +84,7 @@ export declare function createDaytonaTools(sessionManager: DaytonaSessionManager
85
84
  };
86
85
  execute(args: {
87
86
  dirPath?: string;
88
- }, ctx: import("@opencode-ai/plugin").ToolContext): Promise<string>;
87
+ }, ctx: import("@opencode-ai/plugin/tool", { with: { "resolution-mode": "import" } }).ToolContext): Promise<string>;
89
88
  };
90
89
  glob: {
91
90
  description: string;
@@ -94,7 +93,7 @@ export declare function createDaytonaTools(sessionManager: DaytonaSessionManager
94
93
  };
95
94
  execute(args: {
96
95
  pattern: string;
97
- }, ctx: import("@opencode-ai/plugin").ToolContext): Promise<string>;
96
+ }, ctx: import("@opencode-ai/plugin/tool", { with: { "resolution-mode": "import" } }).ToolContext): Promise<string>;
98
97
  };
99
98
  grep: {
100
99
  description: string;
@@ -103,7 +102,7 @@ export declare function createDaytonaTools(sessionManager: DaytonaSessionManager
103
102
  };
104
103
  execute(args: {
105
104
  pattern: string;
106
- }, ctx: import("@opencode-ai/plugin").ToolContext): Promise<string>;
105
+ }, ctx: import("@opencode-ai/plugin/tool", { with: { "resolution-mode": "import" } }).ToolContext): Promise<string>;
107
106
  };
108
107
  lsp: {
109
108
  description: string;
@@ -116,7 +115,7 @@ export declare function createDaytonaTools(sessionManager: DaytonaSessionManager
116
115
  op: string;
117
116
  filePath: string;
118
117
  line: number;
119
- }, ctx: import("@opencode-ai/plugin").ToolContext): Promise<string>;
118
+ }, ctx: import("@opencode-ai/plugin/tool", { with: { "resolution-mode": "import" } }).ToolContext): Promise<string>;
120
119
  };
121
120
  getPreviewURL: {
122
121
  description: string;
@@ -125,7 +124,6 @@ export declare function createDaytonaTools(sessionManager: DaytonaSessionManager
125
124
  };
126
125
  execute(args: {
127
126
  port: number;
128
- }, ctx: import("@opencode-ai/plugin").ToolContext): Promise<string>;
127
+ }, ctx: import("@opencode-ai/plugin/tool", { with: { "resolution-mode": "import" } }).ToolContext): Promise<string>;
129
128
  };
130
129
  };
131
- //# sourceMappingURL=tools.d.ts.map
@@ -1,30 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright 2025 Daytona Platforms Inc.
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createDaytonaTools = createDaytonaTools;
1
8
  /**
2
9
  * Tool implementations for Daytona sandbox integration
3
10
  */
4
- import { bashTool } from './tools/bash';
5
- import { readTool } from './tools/read';
6
- import { writeTool } from './tools/write';
7
- import { editTool } from './tools/edit';
8
- import { multieditTool } from './tools/multiedit';
9
- import { patchTool } from './tools/patch';
10
- import { lsTool } from './tools/ls';
11
- import { globTool } from './tools/glob';
12
- import { grepTool } from './tools/grep';
13
- import { lspTool } from './tools/lsp';
14
- import { getPreviewURLTool } from './tools/get-preview-url';
15
- export function createDaytonaTools(sessionManager, projectId, worktree, pluginCtx) {
11
+ const bash_1 = require("./tools/bash");
12
+ const read_1 = require("./tools/read");
13
+ const write_1 = require("./tools/write");
14
+ const edit_1 = require("./tools/edit");
15
+ const multiedit_1 = require("./tools/multiedit");
16
+ const patch_1 = require("./tools/patch");
17
+ const ls_1 = require("./tools/ls");
18
+ const glob_1 = require("./tools/glob");
19
+ const grep_1 = require("./tools/grep");
20
+ const lsp_1 = require("./tools/lsp");
21
+ const get_preview_url_1 = require("./tools/get-preview-url");
22
+ function createDaytonaTools(sessionManager, projectId, worktree, pluginCtx) {
23
+ const repoPath = sessionManager.repoPath;
16
24
  return {
17
- bash: bashTool(sessionManager, projectId, worktree, pluginCtx),
18
- read: readTool(sessionManager, projectId, worktree, pluginCtx),
19
- write: writeTool(sessionManager, projectId, worktree, pluginCtx),
20
- edit: editTool(sessionManager, projectId, worktree, pluginCtx),
21
- multiedit: multieditTool(sessionManager, projectId, worktree, pluginCtx),
22
- patch: patchTool(sessionManager, projectId, worktree, pluginCtx),
23
- ls: lsTool(sessionManager, projectId, worktree, pluginCtx),
24
- glob: globTool(sessionManager, projectId, worktree, pluginCtx),
25
- grep: grepTool(sessionManager, projectId, worktree, pluginCtx),
26
- lsp: lspTool(sessionManager, projectId, worktree, pluginCtx),
27
- getPreviewURL: getPreviewURLTool(sessionManager, projectId, worktree, pluginCtx),
25
+ bash: (0, bash_1.bashTool)(sessionManager, projectId, worktree, pluginCtx, repoPath),
26
+ read: (0, read_1.readTool)(sessionManager, projectId, worktree, pluginCtx),
27
+ write: (0, write_1.writeTool)(sessionManager, projectId, worktree, pluginCtx),
28
+ edit: (0, edit_1.editTool)(sessionManager, projectId, worktree, pluginCtx),
29
+ multiedit: (0, multiedit_1.multieditTool)(sessionManager, projectId, worktree, pluginCtx),
30
+ patch: (0, patch_1.patchTool)(sessionManager, projectId, worktree, pluginCtx),
31
+ ls: (0, ls_1.lsTool)(sessionManager, projectId, worktree, pluginCtx),
32
+ glob: (0, glob_1.globTool)(sessionManager, projectId, worktree, pluginCtx),
33
+ grep: (0, grep_1.grepTool)(sessionManager, projectId, worktree, pluginCtx),
34
+ lsp: (0, lsp_1.lspTool)(sessionManager, projectId, worktree, pluginCtx),
35
+ getPreviewURL: (0, get_preview_url_1.getPreviewURLTool)(sessionManager, projectId, worktree, pluginCtx),
28
36
  };
29
37
  }
30
38
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../.opencode/plugin/daytona/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAK3D,MAAM,UAAU,kBAAkB,CAAC,cAAqC,EAAE,SAAiB,EAAE,QAAgB,EAAE,SAAsB;IACnI,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC9D,IAAI,EAAE,QAAQ,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC9D,KAAK,EAAE,SAAS,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAChE,IAAI,EAAE,QAAQ,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC9D,SAAS,EAAE,aAAa,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QACxE,KAAK,EAAE,SAAS,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAChE,EAAE,EAAE,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC1D,IAAI,EAAE,QAAQ,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC9D,IAAI,EAAE,QAAQ,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC9D,GAAG,EAAE,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC5D,aAAa,EAAE,iBAAiB,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;KACjF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../../../../libs/opencode-plugin/.opencode/plugin/daytona/tools.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAqBH,gDAoBC;AAvCD;;GAEG;AAEH,uCAAuC;AACvC,uCAAuC;AACvC,yCAAyC;AACzC,uCAAuC;AACvC,iDAAiD;AACjD,yCAAyC;AACzC,mCAAmC;AACnC,uCAAuC;AACvC,uCAAuC;AACvC,qCAAqC;AACrC,6DAA2D;AAK3D,SAAgB,kBAAkB,CAChC,cAAqC,EACrC,SAAiB,EACjB,QAAgB,EAChB,SAAsB;IAEtB,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAA;IACxC,OAAO;QACL,IAAI,EAAE,IAAA,eAAQ,EAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;QACxE,IAAI,EAAE,IAAA,eAAQ,EAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC9D,KAAK,EAAE,IAAA,iBAAS,EAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAChE,IAAI,EAAE,IAAA,eAAQ,EAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC9D,SAAS,EAAE,IAAA,yBAAa,EAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QACxE,KAAK,EAAE,IAAA,iBAAS,EAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAChE,EAAE,EAAE,IAAA,WAAM,EAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC1D,IAAI,EAAE,IAAA,eAAQ,EAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC9D,IAAI,EAAE,IAAA,eAAQ,EAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC9D,GAAG,EAAE,IAAA,aAAO,EAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC5D,aAAa,EAAE,IAAA,mCAAiB,EAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;KACjF,CAAA;AACH,CAAC"}
@@ -1,6 +1,9 @@
1
1
  /**
2
- * Main entry point for the OpenCode Daytona plugin
3
- * Re-exports all plugin components from the daytona module
2
+ * Copyright 2025 Daytona Platforms Inc.
3
+ * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- export * from './daytona/index.js';
6
- //# sourceMappingURL=index.d.ts.map
5
+ /**
6
+ * Main entry point for the OpenCode Daytona plugin.
7
+ * Re-exports the default plugin from daytona.
8
+ */
9
+ export { default } from './daytona/index.js';
@@ -1,6 +1,15 @@
1
+ "use strict";
1
2
  /**
2
- * Main entry point for the OpenCode Daytona plugin
3
- * Re-exports all plugin components from the daytona module
3
+ * Copyright 2025 Daytona Platforms Inc.
4
+ * SPDX-License-Identifier: Apache-2.0
4
5
  */
5
- export * from './daytona/index.js';
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.default = void 0;
8
+ const tslib_1 = require("tslib");
9
+ /**
10
+ * Main entry point for the OpenCode Daytona plugin.
11
+ * Re-exports the default plugin from daytona.
12
+ */
13
+ var index_js_1 = require("./daytona/index.js");
14
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return tslib_1.__importDefault(index_js_1).default; } });
6
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../.opencode/plugin/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/opencode-plugin/.opencode/plugin/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;AAEH;;;GAGG;AAEH,+CAA4C;AAAnC,4HAAA,OAAO,OAAA"}
package/README.md CHANGED
@@ -1,30 +1,31 @@
1
1
  # Daytona Sandbox Plugin for OpenCode
2
2
 
3
- This is an OpenCode plugin that automatically runs all your OpenCode sessions in Daytona sandboxes. This provides isolated, reproducible development environments for your AI coding sessions.
3
+ This is an OpenCode plugin that automatically runs OpenCode sessions in Daytona sandboxes. Each session has its own remote sandbox which is automatically synced to a local git branch.
4
4
 
5
5
  ## Features
6
6
 
7
7
  - Securely isolate each OpenCode session in a sandbox environment
8
- - Automatically generates live preview links to applications or servers running in the sandbox
9
- - Synchronizes changes made within the sandbox to the current git repository
8
+ - Preserves sandbox environments indefinitely until the OpenCode session is deleted
9
+ - Generates live preview links when a server starts in the sandbox
10
+ - Synchronizes each OpenCode session to a local git branch
10
11
 
11
12
  ## Usage
12
13
 
13
14
  ### Installation
14
15
 
15
- You can install this plugin globally or within a specific project.
16
-
17
- To install it globally, edit `~/.config/opencode/opencode.json`. To install for a specific project, add it to `opencode.json` in the project's root directory.
18
-
19
- Adding this plugin to the plugins field will install it automatically when OpenCode starts:
16
+ To add the plugin to a project, edit `opencode.json` in the project directory:
20
17
 
21
18
  ```json
22
19
  {
23
20
  "$schema": "https://opencode.ai/config.json",
24
- "plugins": ["@jamesmurdza/opencode-daytona"]
21
+ "plugin": ["@jamesmurdza/opencode-daytona"]
25
22
  }
26
23
  ```
27
24
 
25
+ Now that the Daytona plugin is in the plugins list, it will automatically be downloaded when OpenCode starts.
26
+
27
+ To install the plugin globally, edit `~/.config/opencode/opencode.json`.
28
+
28
29
  ### Environment Configuration
29
30
 
30
31
  This plugin requires a [Daytona account](https://www.daytona.io/) and [Daytona API key](https://app.daytona.io/dashboard/keys) to create sandboxes.
@@ -43,27 +44,33 @@ DAYTONA_API_KEY=your-api-key
43
44
 
44
45
  ### Running OpenCode
45
46
 
46
- Start OpenCode in your project using the OpenCode command:
47
+ Before starting OpenCode, ensure that your project is a git repository:
48
+
49
+ ```bash
50
+ git init
51
+ ```
52
+
53
+ Now start OpenCode in your project using the OpenCode command:
47
54
 
48
55
  ```bash
49
56
  opencode
50
57
  ```
51
58
 
52
- OpenCode sessions running in Daytona sandboxes are not immediately distinguishable from local sessions. To ensure that the plugin is working, type `pwd` in the chat. If the response is `/home/daytona`, then the plugin is working correctly.
59
+ To check that the plugin is working, type `pwd` in the chat. You should see a response like `/home/daytona/project`, and a toast notification that a new sandbox was created.
53
60
 
54
- See branches created by OpenCode:
61
+ OpenCode will create new branches using the format `opencode/1`, `opencode/2`, etc. To work with these changes, use normal git commands in a separate terminal window. List branches:
55
62
 
56
63
  ```
57
64
  git branch
58
65
  ```
59
66
 
60
- Continue working with OpenCode's latest changes on your local system:
67
+ Check out OpenCode's latest changes on your local system:
61
68
 
62
69
  ```
63
- git checkout opencode/1
70
+ git checkout [branch]
64
71
  ```
65
72
 
66
- To see live logs for debugging, run this command in a separate terminal:
73
+ To view live logs from the plugin for debugging, run this command in a separate terminal:
67
74
 
68
75
  ```bash
69
76
  tail -f ~/.local/share/opencode/log/daytona.log
@@ -78,8 +85,9 @@ The plugin uses git to synchronize files between the sandbox and your local syst
78
85
  #### Sandbox Setup
79
86
 
80
87
  When a new Daytona sandbox is created:
81
- 1. The plugin looks for a git repository in the local directory If none is found, it creates a new one.
82
- 2. In the sandbox, a parallel repository to the local repository is created in the sandbox. An `opencode` branch is created in the sandbox repository.
88
+
89
+ 1. The plugin looks for a git repository in the local directory. If none is found, file synchronization will be disabled.
90
+ 2. A parallel repository is created in the sandbox with a single `opencode` branch, mirroring the checked out local branch.
83
91
  3. A new `sandbox` remote is added to the local repository using an SSH connection to the sandbox.
84
92
  4. The `HEAD` of the local repository is pushed to `opencode`, and the sandbox repository is reset to match this initial state.
85
93
  5. Each sandbox is assigned a unique incrementing branch number (1, 2, 3, etc.) that persists across sessions.
@@ -87,22 +95,25 @@ When a new Daytona sandbox is created:
87
95
  #### Synchronization
88
96
 
89
97
  Each time the agent makes changes:
98
+
90
99
  1. A new commit is created in the sandbox repository on the `opencode` branch.
91
100
  2. The plugin pulls the latest commits from the sandbox remote into a unique local branch named `opencode/1`, `opencode/2`, etc. This keeps both environments in sync while isolating changes from different sandboxes in separate local branches.
92
101
 
93
- The above workflow only synchronizes changes from the sandbox to your local system. To apply changes made locally, it is recommend to start with a new OpenCode session (and sandbox).
102
+ The plugin only synchronizes changes from the sandbox to your system. To pass local changes to the agent, commit them to a local branch, and start a new OpenCode session with that branch checked out.
103
+
104
+ > [!CAUTION]
105
+ > When changes are synchronized to local `opencode` branches, any locally made changes will be overwritten.
94
106
 
95
- ### Session-sandbox data storage
107
+ ### Session to sandbox mapping
96
108
 
97
109
  The plugin keeps track of which sandbox belongs to each OpenCode project using local state files. This data is stored in a separate JSON file for each project:
98
110
 
99
- * On macOS: `~/.local/share/opencode/storage/daytona/[projectid].json`.
100
- * On Windows: `%LOCALAPPDATA%\opencode\storage\daytona\[projectid].json`.
111
+ - On macOS: `~/.local/share/opencode/storage/daytona/[projectid].json`.
112
+ - On Windows: `%LOCALAPPDATA%\opencode\storage\daytona\[projectid].json`.
101
113
 
102
114
  Each JSON file contains the sandbox metadata for each session in the project, including when the sandbox was created, and when it was last used.
103
115
 
104
- The plugin uses [XDG Base Directory](https://specifications.freedesktop.org/basedir/latest/) specifical to resolve the path to this directory, using the convention [set by OpenCode](https://github.com/anomalyco/opencode/blob/052f887a9a7aaf79d9f1a560f9b686d59faa8348/packages/opencode/src/global/index.ts#L4).
105
-
116
+ The plugin uses [XDG Base Directory](https://specifications.freedesktop.org/basedir/latest/) specifically to resolve the path to this directory, using the convention [set by OpenCode](https://github.com/anomalyco/opencode/blob/052f887a9a7aaf79d9f1a560f9b686d59faa8348/packages/opencode/src/global/index.ts#L8).
106
117
 
107
118
  ## Development
108
119
 
@@ -113,8 +124,8 @@ This plugin is part of the Daytona monorepo.
113
124
  First, clone the Daytona monorepo:
114
125
 
115
126
  ```bash
116
- git clone -b feat/opencode-plugin https://github.com/jamesmurdza/daytona.git
117
- git checkout feat/opencode-plugin
127
+ git clone https://github.com/daytonaio/daytona
128
+ cd daytona
118
129
  ```
119
130
 
120
131
  Install dependencies:
@@ -131,18 +142,25 @@ To test the OpenCode plugin, create a test project to run OpenCode in:
131
142
 
132
143
  ```bash
133
144
  mkdir ~/myproject
145
+ cd myproject
134
146
  ```
135
147
 
136
148
  Add a symlink from the project directory to the plugin source code:
137
149
 
138
150
  ```
139
- ln -s libs/opencode-plugin/.opencode ~/myproject
151
+ ln -s [ABSOLUTE_PATH_TO_DAYTONA]/libs/opencode-plugin/.opencode .opencode
140
152
  ```
141
153
 
142
- Start OpenCode in the project directory:
154
+ Initialize git to enable file syncing:
155
+
156
+ ```
157
+ git init
158
+ ```
159
+
160
+ Start OpenCode in the test project:
143
161
 
144
162
  ```bash
145
- cd ~/myproject && opencode
163
+ opencode
146
164
  ```
147
165
 
148
166
  Use the instructions from [Running OpenCode](#running-opencode) above to check that the plugin is running and view live logs for debugging.
@@ -160,6 +178,25 @@ npx nx run opencode-plugin:build
160
178
 
161
179
  This compiles the TypeScript source files in `.opencode/` to JavaScript in `dist/.opencode/`.
162
180
 
181
+ #### Test the built package
182
+
183
+ After building, create a test project and add a plugin file to load the built plugin (replace `[ABSOLUTE_PATH_TO_DAYTONA]` with your clone path, e.g. `/Users/you/daytona`):
184
+
185
+ ```bash
186
+ mkdir -p ~/myproject && cd ~/myproject
187
+ mkdir -p .opencode/plugins
188
+ cat > .opencode/plugins/daytona-local.js << 'EOF'
189
+ module.exports = require('[ABSOLUTE_PATH_TO_DAYTONA]/dist/libs/opencode-plugin')
190
+ EOF
191
+ ```
192
+
193
+ Initialize git to enable file syncing, and start OpenCode:
194
+
195
+ ```bash
196
+ git init
197
+ opencode
198
+ ```
199
+
163
200
  ### Publishing
164
201
 
165
202
  Log into npm:
@@ -187,10 +224,12 @@ libs/opencode-plugin/
187
224
  │ │ └── index.ts # Plugin entry point
188
225
  ├── dist/ # Build output
189
226
  │ └── .opencode/ # Compiled JavaScript files
227
+ ├── .gitignore
228
+ ├── .npmignore
190
229
  ├── package.json # Package metadata (includes main/types)
191
230
  ├── project.json # Nx build configuration
192
231
  ├── tsconfig.json # TypeScript config
193
- ├── tsconfig.build.json # TypeScript config
232
+ ├── tsconfig.lib.json # TypeScript config for library build
194
233
  └── README.md
195
234
  ```
196
235
 
package/package.json CHANGED
@@ -1,31 +1,48 @@
1
1
  {
2
2
  "name": "@jamesmurdza/opencode-daytona",
3
- "version": "0.1.21",
3
+ "version": "0.1.23",
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",
7
7
  "files": [
8
8
  ".opencode"
9
9
  ],
10
- "scripts": {
11
- "build": "rm -rf dist && tsc --project tsconfig.build.json && cp package.json README.md dist/ && cp .npmignore dist/ 2>/dev/null || true",
12
- "pack": "npm run build && cd dist && npm pack --dry-run",
13
- "prepack": "npm run build"
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/daytonaio/daytona.git"
13
+ },
14
+ "author": "Daytona Platforms Inc.",
15
+ "license": "Apache-2.0",
16
+ "dependencies": {
17
+ "@daytonaio/sdk": "^0.125.0",
18
+ "@opencode-ai/plugin": "1.1.59",
19
+ "@opentelemetry/api": "^1.9.0",
20
+ "@opentelemetry/exporter-trace-otlp-http": "^0.207.0",
21
+ "@opentelemetry/instrumentation-http": "^0.207.0",
22
+ "@opentelemetry/otlp-exporter-base": "0.207.0",
23
+ "@opentelemetry/resources": "2.2.0",
24
+ "@opentelemetry/sdk-node": "^0.207.0",
25
+ "@opentelemetry/sdk-trace-base": "^2.2.0",
26
+ "@opentelemetry/semantic-conventions": "^1.37.0",
27
+ "axios": "^1.13.5",
28
+ "busboy": "^1.0.0",
29
+ "dotenv": "^17.0.1",
30
+ "form-data": "^4.0.4",
31
+ "isomorphic-ws": "^5.0.0",
32
+ "pathe": "^2.0.3",
33
+ "xdg-basedir": "^5.1.0",
34
+ "zod": "^4.2.1",
35
+ "@daytonaio/api-client": "0.1.23",
36
+ "@daytonaio/toolbox-api-client": "0.1.23"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/daytonaio/daytona/issues"
14
40
  },
15
41
  "keywords": [
16
42
  "daytona",
17
43
  "opencode",
18
44
  "plugin"
19
45
  ],
20
- "license": "Apache-2.0",
21
- "dependencies": {
22
- "@daytonaio/sdk": "^0.130.0",
23
- "xdg-basedir": "^5.1.0",
24
- "zod": "^4.1.8"
25
- },
26
- "devDependencies": {
27
- "@opencode-ai/plugin": "^1.1.21",
28
- "@types/node": "^25.0.9",
29
- "typescript": "^5.3.3"
30
- }
31
- }
46
+ "packageManager": "yarn@4.6.0",
47
+ "type": "commonjs"
48
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../../.opencode/plugin/daytona/core/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAKvC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,QAE1C;AAED,cAAM,MAAM;IACV,OAAO,KAAK,OAAO,GAGlB;IAED,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,QAAyB,GAAG,IAAI;IAsB5D,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG5B;AAED,eAAO,MAAM,MAAM,QAAe,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-data-storage.d.ts","sourceRoot":"","sources":["../../../../../.opencode/plugin/daytona/core/project-data-storage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE9D,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;gBAEvB,UAAU,EAAE,MAAM;IAS9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI;IAYlD;;OAEG;IACH,IAAI,CACF,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACrC,gBAAgB,CAAC,EAAE,MAAM,GACxB,IAAI;IAiBP;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAgB9C;;OAEG;IACH,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IASnF;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI;IAiCrH;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;CAQ5E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../../../../.opencode/plugin/daytona/core/session-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAKtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEtD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,gBAAgB,CAAC,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;gBAErB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAOhE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAI9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAO1C;;OAEG;IACH,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAInF;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IA4FnH;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmCzE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../.opencode/plugin/daytona/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAI7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,iBAAiB,CAAA;IACvB,UAAU,EAAE;QACV,IAAI,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAA;KACrB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,cAAc,CAAA;IACpB,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,oCAAoC,GAAG;IACjD,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,qCAAqC,GAAG;IAClD,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAID,eAAO,MAAM,0BAA0B,oBAAoB,CAAA;AAC3D,eAAO,MAAM,uBAAuB,iBAAiB,CAAA;AAIrD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAEhD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAA;CACX,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,CAAC,CAAA;AAIlE,eAAO,MAAM,cAAc,EAAE,QAAiB,CAAA;AAC9C,eAAO,MAAM,eAAe,EAAE,QAAkB,CAAA;AAChD,eAAO,MAAM,cAAc,EAAE,QAAiB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"host-git-manager.d.ts","sourceRoot":"","sources":["../../../../../.opencode/plugin/daytona/git/host-git-manager.ts"],"names":[],"mappings":"AAOA,qBAAa,cAAc;IAGzB;;;;OAIG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAyB9D,UAAU,IAAI,IAAI;IAUlB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAUnD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAyBpE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAQ/C"}