@daytona/opencode 0.0.0-dev

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 (80) hide show
  1. package/.opencode/plugin/daytona/core/logger.d.ts +15 -0
  2. package/.opencode/plugin/daytona/core/logger.js +64 -0
  3. package/.opencode/plugin/daytona/core/logger.js.map +1 -0
  4. package/.opencode/plugin/daytona/core/project-data-storage.d.ts +42 -0
  5. package/.opencode/plugin/daytona/core/project-data-storage.js +171 -0
  6. package/.opencode/plugin/daytona/core/project-data-storage.js.map +1 -0
  7. package/.opencode/plugin/daytona/core/session-manager.d.ts +46 -0
  8. package/.opencode/plugin/daytona/core/session-manager.js +239 -0
  9. package/.opencode/plugin/daytona/core/session-manager.js.map +1 -0
  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 +53 -0
  14. package/.opencode/plugin/daytona/core/types.js +15 -0
  15. package/.opencode/plugin/daytona/core/types.js.map +1 -0
  16. package/.opencode/plugin/daytona/git/host-git-manager.d.ts +40 -0
  17. package/.opencode/plugin/daytona/git/host-git-manager.js +283 -0
  18. package/.opencode/plugin/daytona/git/host-git-manager.js.map +1 -0
  19. package/.opencode/plugin/daytona/git/index.d.ts +5 -0
  20. package/.opencode/plugin/daytona/git/index.js +10 -0
  21. package/.opencode/plugin/daytona/git/index.js.map +1 -0
  22. package/.opencode/plugin/daytona/git/sandbox-git-manager.d.ts +14 -0
  23. package/.opencode/plugin/daytona/git/sandbox-git-manager.js +68 -0
  24. package/.opencode/plugin/daytona/git/sandbox-git-manager.js.map +1 -0
  25. package/.opencode/plugin/daytona/git/session-git-manager.d.ts +43 -0
  26. package/.opencode/plugin/daytona/git/session-git-manager.js +132 -0
  27. package/.opencode/plugin/daytona/git/session-git-manager.js.map +1 -0
  28. package/.opencode/plugin/daytona/index.d.ts +134 -0
  29. package/.opencode/plugin/daytona/index.js +48 -0
  30. package/.opencode/plugin/daytona/index.js.map +1 -0
  31. package/.opencode/plugin/daytona/plugins/custom-tools.d.ts +132 -0
  32. package/.opencode/plugin/daytona/plugins/custom-tools.js +19 -0
  33. package/.opencode/plugin/daytona/plugins/custom-tools.js.map +1 -0
  34. package/.opencode/plugin/daytona/plugins/session-events.d.ts +10 -0
  35. package/.opencode/plugin/daytona/plugins/session-events.js +55 -0
  36. package/.opencode/plugin/daytona/plugins/session-events.js.map +1 -0
  37. package/.opencode/plugin/daytona/plugins/system-transform.d.ts +10 -0
  38. package/.opencode/plugin/daytona/plugins/system-transform.js +24 -0
  39. package/.opencode/plugin/daytona/plugins/system-transform.js.map +1 -0
  40. package/.opencode/plugin/daytona/tools/bash.d.ts +19 -0
  41. package/.opencode/plugin/daytona/tools/bash.js +42 -0
  42. package/.opencode/plugin/daytona/tools/bash.js.map +1 -0
  43. package/.opencode/plugin/daytona/tools/edit.d.ts +21 -0
  44. package/.opencode/plugin/daytona/tools/edit.js +27 -0
  45. package/.opencode/plugin/daytona/tools/edit.js.map +1 -0
  46. package/.opencode/plugin/daytona/tools/get-preview-url.d.ts +17 -0
  47. package/.opencode/plugin/daytona/tools/get-preview-url.js +21 -0
  48. package/.opencode/plugin/daytona/tools/get-preview-url.js.map +1 -0
  49. package/.opencode/plugin/daytona/tools/glob.d.ts +17 -0
  50. package/.opencode/plugin/daytona/tools/glob.js +25 -0
  51. package/.opencode/plugin/daytona/tools/glob.js.map +1 -0
  52. package/.opencode/plugin/daytona/tools/grep.d.ts +17 -0
  53. package/.opencode/plugin/daytona/tools/grep.js +25 -0
  54. package/.opencode/plugin/daytona/tools/grep.js.map +1 -0
  55. package/.opencode/plugin/daytona/tools/ls.d.ts +17 -0
  56. package/.opencode/plugin/daytona/tools/ls.js +26 -0
  57. package/.opencode/plugin/daytona/tools/ls.js.map +1 -0
  58. package/.opencode/plugin/daytona/tools/lsp.d.ts +21 -0
  59. package/.opencode/plugin/daytona/tools/lsp.js +21 -0
  60. package/.opencode/plugin/daytona/tools/lsp.js.map +1 -0
  61. package/.opencode/plugin/daytona/tools/multiedit.d.ts +25 -0
  62. package/.opencode/plugin/daytona/tools/multiedit.js +31 -0
  63. package/.opencode/plugin/daytona/tools/multiedit.js.map +1 -0
  64. package/.opencode/plugin/daytona/tools/patch.d.ts +19 -0
  65. package/.opencode/plugin/daytona/tools/patch.js +19 -0
  66. package/.opencode/plugin/daytona/tools/patch.js.map +1 -0
  67. package/.opencode/plugin/daytona/tools/read.d.ts +17 -0
  68. package/.opencode/plugin/daytona/tools/read.js +22 -0
  69. package/.opencode/plugin/daytona/tools/read.js.map +1 -0
  70. package/.opencode/plugin/daytona/tools/write.d.ts +19 -0
  71. package/.opencode/plugin/daytona/tools/write.js +22 -0
  72. package/.opencode/plugin/daytona/tools/write.js.map +1 -0
  73. package/.opencode/plugin/daytona/tools.d.ts +129 -0
  74. package/.opencode/plugin/daytona/tools.js +38 -0
  75. package/.opencode/plugin/daytona/tools.js.map +1 -0
  76. package/.opencode/plugin/index.d.ts +9 -0
  77. package/.opencode/plugin/index.js +15 -0
  78. package/.opencode/plugin/index.js.map +1 -0
  79. package/README.md +238 -0
  80. package/package.json +56 -0
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright Daytona Platforms Inc.
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createDaytonaTools = createDaytonaTools;
8
+ /**
9
+ * Tool implementations for Daytona sandbox integration
10
+ */
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;
24
+ return {
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),
36
+ };
37
+ }
38
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright Daytona Platforms Inc.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
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';
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright Daytona Platforms Inc.
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
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; } });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
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 ADDED
@@ -0,0 +1,238 @@
1
+ # Daytona Sandbox Plugin for OpenCode
2
+
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
+
5
+ ## Features
6
+
7
+ - Securely isolate each OpenCode session in a sandbox environment
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
11
+
12
+ ## Usage
13
+
14
+ ### Installation
15
+
16
+ To add the plugin to a project, edit `opencode.json` in the project directory:
17
+
18
+ ```json
19
+ {
20
+ "$schema": "https://opencode.ai/config.json",
21
+ "plugin": ["@daytona/opencode"]
22
+ }
23
+ ```
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
+
29
+ ### Environment Configuration
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.
32
+
33
+ Set your Daytona API key and URL as environment variables:
34
+
35
+ ```bash
36
+ export DAYTONA_API_KEY="your-api-key"
37
+ ```
38
+
39
+ Or create a `.env` file in your project root:
40
+
41
+ ```env
42
+ DAYTONA_API_KEY=your-api-key
43
+ ```
44
+
45
+ ### Running OpenCode
46
+
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:
54
+
55
+ ```bash
56
+ opencode
57
+ ```
58
+
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.
60
+
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:
62
+
63
+ ```
64
+ git branch
65
+ ```
66
+
67
+ Check out OpenCode's latest changes on your local system:
68
+
69
+ ```
70
+ git checkout [branch]
71
+ ```
72
+
73
+ To view live logs from the plugin for debugging, run this command in a separate terminal:
74
+
75
+ ```bash
76
+ tail -f ~/.local/share/opencode/log/daytona.log
77
+ ```
78
+
79
+ ## How It Works
80
+
81
+ ### File Synchronization
82
+
83
+ The plugin uses git to synchronize files between the sandbox and your local system. This happens automatically and in the background, keeping your copy of the code up-to-date without exposing your system to the agent.
84
+
85
+ #### Sandbox Setup
86
+
87
+ When a new Daytona sandbox is created:
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.
91
+ 3. A new `sandbox` remote is added to the local repository using an SSH connection to the sandbox.
92
+ 4. The `HEAD` of the local repository is pushed to `opencode`, and the sandbox repository is reset to match this initial state.
93
+ 5. Each sandbox is assigned a unique incrementing branch number (1, 2, 3, etc.) that persists across sessions.
94
+
95
+ #### Synchronization
96
+
97
+ Each time the agent makes changes:
98
+
99
+ 1. A new commit is created in the sandbox repository on the `opencode` branch.
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.
101
+
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.
106
+
107
+ ### Session to sandbox mapping
108
+
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:
110
+
111
+ - On macOS: `~/.local/share/opencode/storage/daytona/[projectid].json`.
112
+ - On Windows: `%LOCALAPPDATA%\opencode\storage\daytona\[projectid].json`.
113
+
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.
115
+
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).
117
+
118
+ ## Development
119
+
120
+ This plugin is part of the Daytona monorepo.
121
+
122
+ ### Setup
123
+
124
+ First, clone the Daytona monorepo:
125
+
126
+ ```bash
127
+ git clone https://github.com/daytonaio/daytona
128
+ cd daytona
129
+ ```
130
+
131
+ Install dependencies:
132
+
133
+ ```bash
134
+ yarn install
135
+ ```
136
+
137
+ ### Development and Testing
138
+
139
+ To modify the plugin, edit the source code files in `libs/opencode-plugin/.opencode`.
140
+
141
+ To test the OpenCode plugin, create a test project to run OpenCode in:
142
+
143
+ ```bash
144
+ mkdir ~/myproject
145
+ cd myproject
146
+ ```
147
+
148
+ Add a symlink from the project directory to the plugin source code:
149
+
150
+ ```
151
+ ln -s [ABSOLUTE_PATH_TO_DAYTONA]/libs/opencode-plugin/.opencode .opencode
152
+ ```
153
+
154
+ Initialize git to enable file syncing:
155
+
156
+ ```
157
+ git init
158
+ ```
159
+
160
+ Start OpenCode in the test project:
161
+
162
+ ```bash
163
+ opencode
164
+ ```
165
+
166
+ Use the instructions from [Running OpenCode](#running-opencode) above to check that the plugin is running and view live logs for debugging.
167
+
168
+ > [!NOTE]
169
+ > When developing locally with a symlink, OpenCode loads the TypeScript source directly, so no build step is required.
170
+
171
+ ### Building
172
+
173
+ Build the plugin:
174
+
175
+ ```bash
176
+ npx nx run opencode-plugin:build
177
+ ```
178
+
179
+ This compiles the TypeScript source files in `.opencode/` to JavaScript in `dist/.opencode/`.
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/.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
+
200
+ ### Publishing
201
+
202
+ Log into npm:
203
+
204
+ ```bash
205
+ npm login
206
+ ```
207
+
208
+ Publish the compiled JavaScript package to npm:
209
+
210
+ ```bash
211
+ npx nx run opencode-plugin:publish
212
+ ```
213
+
214
+ This will publish to npm with public access and use the version number from `package.json`.
215
+
216
+ ## Project Structure
217
+
218
+ ```
219
+ libs/opencode-plugin/
220
+ ├── .opencode/ # Source TypeScript files
221
+ │ ├── plugin/
222
+ │ │ ├── daytona/ # Main Daytona integration
223
+ │ │ │ └── ...
224
+ │ │ └── index.ts # Plugin entry point
225
+ ├── dist/ # Build output
226
+ │ └── .opencode/ # Compiled JavaScript files
227
+ ├── .gitignore
228
+ ├── .npmignore
229
+ ├── package.json # Package metadata (includes main/types)
230
+ ├── project.json # Nx build configuration
231
+ ├── tsconfig.json # TypeScript config
232
+ ├── tsconfig.lib.json # TypeScript config for library build
233
+ └── README.md
234
+ ```
235
+
236
+ ## License
237
+
238
+ Apache-2.0
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@daytona/opencode",
3
+ "version": "0.0.0-dev",
4
+ "description": "OpenCode plugin that automatically runs all sessions in Daytona sandboxes for isolated, reproducible development environments",
5
+ "main": "./.opencode/plugin/index.js",
6
+ "types": "./.opencode/plugin/index.d.ts",
7
+ "files": [
8
+ ".opencode"
9
+ ],
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
+ "xdg-basedir": "^5.1.0",
20
+ "zod": "^4.2.1",
21
+ "@aws-sdk/client-s3": "3.893.0",
22
+ "@aws-sdk/lib-storage": "3.893.0",
23
+ "@daytona/api-client": "0.0.0-dev",
24
+ "@daytona/sdk": "0.0.0-dev",
25
+ "@daytona/toolbox-api-client": "0.0.0-dev",
26
+ "@iarna/toml": "2.2.5",
27
+ "@opentelemetry/api": "1.9.0",
28
+ "@opentelemetry/exporter-trace-otlp-http": "0.207.0",
29
+ "@opentelemetry/instrumentation-http": "0.207.0",
30
+ "@opentelemetry/otlp-exporter-base": "0.207.0",
31
+ "@opentelemetry/resources": "2.2.0",
32
+ "@opentelemetry/sdk-node": "0.207.0",
33
+ "@opentelemetry/sdk-trace-base": "2.2.0",
34
+ "@opentelemetry/semantic-conventions": "1.37.0",
35
+ "axios": "1.13.5",
36
+ "busboy": "1.6.0",
37
+ "dotenv": "17.2.2",
38
+ "expand-tilde": "2.0.2",
39
+ "fast-glob": "3.3.3",
40
+ "form-data": "4.0.4",
41
+ "isomorphic-ws": "5.0.0",
42
+ "pathe": "2.0.3",
43
+ "shell-quote": "1.8.3",
44
+ "tar": "7.5.11"
45
+ },
46
+ "bugs": {
47
+ "url": "https://github.com/daytonaio/daytona/issues"
48
+ },
49
+ "keywords": [
50
+ "daytona",
51
+ "opencode",
52
+ "plugin"
53
+ ],
54
+ "packageManager": "yarn@4.13.0",
55
+ "type": "commonjs"
56
+ }