@daytonaio/sdk 0.170.0 → 0.171.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/LICENSE +190 -0
  2. package/cjs/CodeInterpreter.d.ts +95 -0
  3. package/cjs/CodeInterpreter.d.ts.map +1 -0
  4. package/cjs/CodeInterpreter.js +297 -0
  5. package/cjs/CodeInterpreter.js.map +1 -0
  6. package/cjs/ComputerUse.d.ts +539 -0
  7. package/cjs/ComputerUse.d.ts.map +1 -0
  8. package/cjs/ComputerUse.js +808 -0
  9. package/cjs/ComputerUse.js.map +1 -0
  10. package/cjs/Daytona.d.ts +355 -0
  11. package/cjs/Daytona.d.ts.map +1 -0
  12. package/cjs/Daytona.js +527 -0
  13. package/cjs/Daytona.js.map +1 -0
  14. package/cjs/FileSystem.d.ts +371 -0
  15. package/cjs/FileSystem.d.ts.map +1 -0
  16. package/cjs/FileSystem.js +489 -0
  17. package/cjs/FileSystem.js.map +1 -0
  18. package/cjs/Git.d.ts +203 -0
  19. package/cjs/Git.d.ts.map +1 -0
  20. package/cjs/Git.js +326 -0
  21. package/cjs/Git.js.map +1 -0
  22. package/cjs/Image.d.ts +265 -0
  23. package/cjs/Image.d.ts.map +1 -0
  24. package/cjs/Image.js +586 -0
  25. package/cjs/Image.js.map +1 -0
  26. package/cjs/LspServer.d.ts +172 -0
  27. package/cjs/LspServer.d.ts.map +1 -0
  28. package/cjs/LspServer.js +259 -0
  29. package/cjs/LspServer.js.map +1 -0
  30. package/cjs/ObjectStorage.d.ts +79 -0
  31. package/cjs/ObjectStorage.d.ts.map +1 -0
  32. package/cjs/ObjectStorage.js +199 -0
  33. package/cjs/ObjectStorage.js.map +1 -0
  34. package/cjs/Process.d.ts +490 -0
  35. package/cjs/Process.d.ts.map +1 -0
  36. package/cjs/Process.js +647 -0
  37. package/cjs/Process.js.map +1 -0
  38. package/cjs/PtyHandle.d.ts +155 -0
  39. package/cjs/PtyHandle.d.ts.map +1 -0
  40. package/cjs/PtyHandle.js +416 -0
  41. package/cjs/PtyHandle.js.map +1 -0
  42. package/cjs/README.md +180 -0
  43. package/cjs/Sandbox.d.ts +476 -0
  44. package/cjs/Sandbox.d.ts.map +1 -0
  45. package/cjs/Sandbox.js +905 -0
  46. package/cjs/Sandbox.js.map +1 -0
  47. package/cjs/Snapshot.d.ts +140 -0
  48. package/cjs/Snapshot.d.ts.map +1 -0
  49. package/cjs/Snapshot.js +248 -0
  50. package/cjs/Snapshot.js.map +1 -0
  51. package/cjs/Volume.d.ts +84 -0
  52. package/cjs/Volume.d.ts.map +1 -0
  53. package/cjs/Volume.js +119 -0
  54. package/cjs/Volume.js.map +1 -0
  55. package/cjs/__tests__/helpers.d.ts +6 -0
  56. package/cjs/__tests__/helpers.d.ts.map +1 -0
  57. package/cjs/__tests__/helpers.js +26 -0
  58. package/cjs/__tests__/helpers.js.map +1 -0
  59. package/cjs/errors/DaytonaError.d.ts +171 -0
  60. package/cjs/errors/DaytonaError.d.ts.map +1 -0
  61. package/cjs/errors/DaytonaError.js +258 -0
  62. package/cjs/errors/DaytonaError.js.map +1 -0
  63. package/cjs/index.d.ts +22 -0
  64. package/cjs/index.d.ts.map +1 -0
  65. package/cjs/index.js +49 -0
  66. package/cjs/index.js.map +1 -0
  67. package/cjs/package.json +3 -0
  68. package/cjs/types/Charts.d.ts +38 -0
  69. package/cjs/types/Charts.d.ts.map +1 -0
  70. package/cjs/types/Charts.js +37 -0
  71. package/cjs/types/Charts.js.map +1 -0
  72. package/cjs/types/CodeInterpreter.d.ts +77 -0
  73. package/cjs/types/CodeInterpreter.d.ts.map +1 -0
  74. package/cjs/types/CodeInterpreter.js +7 -0
  75. package/cjs/types/CodeInterpreter.js.map +1 -0
  76. package/cjs/types/ExecuteResponse.d.ts +26 -0
  77. package/cjs/types/ExecuteResponse.d.ts.map +1 -0
  78. package/cjs/types/ExecuteResponse.js +7 -0
  79. package/cjs/types/ExecuteResponse.js.map +1 -0
  80. package/cjs/types/Pty.d.ts +48 -0
  81. package/cjs/types/Pty.d.ts.map +1 -0
  82. package/cjs/types/Pty.js +7 -0
  83. package/cjs/types/Pty.js.map +1 -0
  84. package/cjs/utils/Binary.d.ts +39 -0
  85. package/cjs/utils/Binary.d.ts.map +1 -0
  86. package/cjs/utils/Binary.js +168 -0
  87. package/cjs/utils/Binary.js.map +1 -0
  88. package/cjs/utils/FileTransfer.d.ts +15 -0
  89. package/cjs/utils/FileTransfer.d.ts.map +1 -0
  90. package/cjs/utils/FileTransfer.js +261 -0
  91. package/cjs/utils/FileTransfer.js.map +1 -0
  92. package/cjs/utils/Import.d.ts +125 -0
  93. package/cjs/utils/Import.d.ts.map +1 -0
  94. package/cjs/utils/Import.js +112 -0
  95. package/cjs/utils/Import.js.map +1 -0
  96. package/cjs/utils/Multipart.d.ts +29 -0
  97. package/cjs/utils/Multipart.d.ts.map +1 -0
  98. package/cjs/utils/Multipart.js +115 -0
  99. package/cjs/utils/Multipart.js.map +1 -0
  100. package/cjs/utils/Runtime.d.ts +44 -0
  101. package/cjs/utils/Runtime.d.ts.map +1 -0
  102. package/cjs/utils/Runtime.js +95 -0
  103. package/cjs/utils/Runtime.js.map +1 -0
  104. package/cjs/utils/Stream.d.ts +20 -0
  105. package/cjs/utils/Stream.d.ts.map +1 -0
  106. package/cjs/utils/Stream.js +364 -0
  107. package/cjs/utils/Stream.js.map +1 -0
  108. package/cjs/utils/WebSocket.d.ts +10 -0
  109. package/cjs/utils/WebSocket.d.ts.map +1 -0
  110. package/cjs/utils/WebSocket.js +26 -0
  111. package/cjs/utils/WebSocket.js.map +1 -0
  112. package/cjs/utils/otel.decorator.d.ts +83 -0
  113. package/cjs/utils/otel.decorator.d.ts.map +1 -0
  114. package/cjs/utils/otel.decorator.js +141 -0
  115. package/cjs/utils/otel.decorator.js.map +1 -0
  116. package/esm/CodeInterpreter.d.ts +95 -0
  117. package/esm/CodeInterpreter.d.ts.map +1 -0
  118. package/esm/CodeInterpreter.js +292 -0
  119. package/esm/CodeInterpreter.js.map +1 -0
  120. package/esm/ComputerUse.d.ts +539 -0
  121. package/esm/ComputerUse.d.ts.map +1 -0
  122. package/esm/ComputerUse.js +799 -0
  123. package/esm/ComputerUse.js.map +1 -0
  124. package/esm/Daytona.d.ts +355 -0
  125. package/esm/Daytona.d.ts.map +1 -0
  126. package/esm/Daytona.js +523 -0
  127. package/esm/Daytona.js.map +1 -0
  128. package/esm/FileSystem.d.ts +371 -0
  129. package/esm/FileSystem.d.ts.map +1 -0
  130. package/esm/FileSystem.js +485 -0
  131. package/esm/FileSystem.js.map +1 -0
  132. package/esm/Git.d.ts +203 -0
  133. package/esm/Git.d.ts.map +1 -0
  134. package/esm/Git.js +322 -0
  135. package/esm/Git.js.map +1 -0
  136. package/esm/Image.d.ts +265 -0
  137. package/esm/Image.d.ts.map +1 -0
  138. package/esm/Image.js +581 -0
  139. package/esm/Image.js.map +1 -0
  140. package/esm/LspServer.d.ts +172 -0
  141. package/esm/LspServer.d.ts.map +1 -0
  142. package/esm/LspServer.js +255 -0
  143. package/esm/LspServer.js.map +1 -0
  144. package/esm/ObjectStorage.d.ts +79 -0
  145. package/esm/ObjectStorage.d.ts.map +1 -0
  146. package/esm/ObjectStorage.js +195 -0
  147. package/esm/ObjectStorage.js.map +1 -0
  148. package/esm/Process.d.ts +490 -0
  149. package/esm/Process.d.ts.map +1 -0
  150. package/esm/Process.js +642 -0
  151. package/esm/Process.js.map +1 -0
  152. package/esm/PtyHandle.d.ts +155 -0
  153. package/esm/PtyHandle.d.ts.map +1 -0
  154. package/esm/PtyHandle.js +412 -0
  155. package/esm/PtyHandle.js.map +1 -0
  156. package/esm/README.md +180 -0
  157. package/esm/Sandbox.d.ts +476 -0
  158. package/esm/Sandbox.d.ts.map +1 -0
  159. package/esm/Sandbox.js +901 -0
  160. package/esm/Sandbox.js.map +1 -0
  161. package/esm/Snapshot.d.ts +140 -0
  162. package/esm/Snapshot.d.ts.map +1 -0
  163. package/esm/Snapshot.js +244 -0
  164. package/esm/Snapshot.js.map +1 -0
  165. package/esm/Volume.d.ts +84 -0
  166. package/esm/Volume.d.ts.map +1 -0
  167. package/esm/Volume.js +115 -0
  168. package/esm/Volume.js.map +1 -0
  169. package/esm/__tests__/helpers.d.ts +6 -0
  170. package/esm/__tests__/helpers.d.ts.map +1 -0
  171. package/esm/__tests__/helpers.js +20 -0
  172. package/esm/__tests__/helpers.js.map +1 -0
  173. package/esm/errors/DaytonaError.d.ts +171 -0
  174. package/esm/errors/DaytonaError.d.ts.map +1 -0
  175. package/esm/errors/DaytonaError.js +243 -0
  176. package/esm/errors/DaytonaError.js.map +1 -0
  177. package/esm/index.d.ts +22 -0
  178. package/esm/index.d.ts.map +1 -0
  179. package/esm/index.js +21 -0
  180. package/esm/index.js.map +1 -0
  181. package/esm/package.json +3 -0
  182. package/esm/types/Charts.d.ts +38 -0
  183. package/esm/types/Charts.d.ts.map +1 -0
  184. package/esm/types/Charts.js +33 -0
  185. package/esm/types/Charts.js.map +1 -0
  186. package/esm/types/CodeInterpreter.d.ts +77 -0
  187. package/esm/types/CodeInterpreter.d.ts.map +1 -0
  188. package/esm/types/CodeInterpreter.js +6 -0
  189. package/esm/types/CodeInterpreter.js.map +1 -0
  190. package/esm/types/ExecuteResponse.d.ts +26 -0
  191. package/esm/types/ExecuteResponse.d.ts.map +1 -0
  192. package/esm/types/ExecuteResponse.js +6 -0
  193. package/esm/types/ExecuteResponse.js.map +1 -0
  194. package/esm/types/Pty.d.ts +48 -0
  195. package/esm/types/Pty.d.ts.map +1 -0
  196. package/esm/types/Pty.js +6 -0
  197. package/esm/types/Pty.js.map +1 -0
  198. package/esm/utils/Binary.d.ts +39 -0
  199. package/esm/utils/Binary.d.ts.map +1 -0
  200. package/esm/utils/Binary.js +157 -0
  201. package/esm/utils/Binary.js.map +1 -0
  202. package/esm/utils/FileTransfer.d.ts +15 -0
  203. package/esm/utils/FileTransfer.d.ts.map +1 -0
  204. package/esm/utils/FileTransfer.js +254 -0
  205. package/esm/utils/FileTransfer.js.map +1 -0
  206. package/esm/utils/Import.d.ts +95 -0
  207. package/esm/utils/Import.d.ts.map +1 -0
  208. package/esm/utils/Import.js +77 -0
  209. package/esm/utils/Import.js.map +1 -0
  210. package/esm/utils/Multipart.d.ts +29 -0
  211. package/esm/utils/Multipart.d.ts.map +1 -0
  212. package/esm/utils/Multipart.js +109 -0
  213. package/esm/utils/Multipart.js.map +1 -0
  214. package/esm/utils/Runtime.d.ts +44 -0
  215. package/esm/utils/Runtime.d.ts.map +1 -0
  216. package/esm/utils/Runtime.js +89 -0
  217. package/esm/utils/Runtime.js.map +1 -0
  218. package/esm/utils/Stream.d.ts +20 -0
  219. package/esm/utils/Stream.d.ts.map +1 -0
  220. package/esm/utils/Stream.js +360 -0
  221. package/esm/utils/Stream.js.map +1 -0
  222. package/esm/utils/WebSocket.d.ts +10 -0
  223. package/esm/utils/WebSocket.d.ts.map +1 -0
  224. package/esm/utils/WebSocket.js +22 -0
  225. package/esm/utils/WebSocket.js.map +1 -0
  226. package/esm/utils/otel.decorator.d.ts +83 -0
  227. package/esm/utils/otel.decorator.d.ts.map +1 -0
  228. package/esm/utils/otel.decorator.js +136 -0
  229. package/esm/utils/otel.decorator.js.map +1 -0
  230. package/package.json +20 -8
  231. package/src/ComputerUse.d.ts +4 -4
  232. package/src/ComputerUse.js +4 -4
  233. package/src/Sandbox.d.ts +1 -18
  234. package/src/Sandbox.js +0 -29
  235. package/src/Sandbox.js.map +1 -1
  236. package/src/__tests__/helpers.js +0 -2
  237. package/src/__tests__/helpers.js.map +1 -1
@@ -0,0 +1,199 @@
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.ObjectStorage = void 0;
8
+ const tslib_1 = require("tslib");
9
+ const client_s3_1 = require("@aws-sdk/client-s3");
10
+ const lib_storage_1 = require("@aws-sdk/lib-storage");
11
+ const crypto = tslib_1.__importStar(require("crypto"));
12
+ const pathe = tslib_1.__importStar(require("pathe"));
13
+ const DaytonaError_1 = require("./errors/DaytonaError");
14
+ const Import_1 = require("./utils/Import");
15
+ const otel_decorator_1 = require("./utils/otel.decorator");
16
+ /**
17
+ * ObjectStorage class for interacting with object storage services.
18
+ *
19
+ * @class
20
+ * @param {ObjectStorageConfig} config - The configuration for the object storage service.
21
+ */
22
+ class ObjectStorage {
23
+ bucketName;
24
+ s3Client;
25
+ constructor(config) {
26
+ this.bucketName = config.bucketName || 'daytona-volume-builds';
27
+ this.s3Client = new client_s3_1.S3Client({
28
+ region: this.extractAwsRegion(config.endpointUrl) || 'us-east-1',
29
+ endpoint: config.endpointUrl,
30
+ credentials: {
31
+ accessKeyId: config.accessKeyId,
32
+ secretAccessKey: config.secretAccessKey,
33
+ sessionToken: config.sessionToken,
34
+ },
35
+ forcePathStyle: true,
36
+ });
37
+ }
38
+ /**
39
+ * Upload a file or directory to object storage.
40
+ *
41
+ * @param {string} path - The path to the file or directory to upload.
42
+ * @param {string} organizationId - The organization ID to use for the upload.
43
+ * @param {string} archiveBasePath - The base path to use for the archive.
44
+ * @returns {Promise<string>} The hash of the uploaded file or directory.
45
+ */
46
+ async upload(path, organizationId, archiveBasePath) {
47
+ const fs = await (0, Import_1.dynamicImport)('fs', '"upload" is not supported: ');
48
+ if (!fs.existsSync(path)) {
49
+ const errMsg = `Path does not exist: ${path}`;
50
+ throw new DaytonaError_1.DaytonaNotFoundError(errMsg);
51
+ }
52
+ // Compute hash for the path
53
+ const pathHash = await this.computeHashForPathMd5(path, archiveBasePath);
54
+ // Define the S3 prefix
55
+ const prefix = `${organizationId}/${pathHash}/`;
56
+ const s3Key = `${prefix}context.tar`;
57
+ // Check if it already exists in S3
58
+ if (await this.folderExistsInS3(prefix)) {
59
+ return pathHash;
60
+ }
61
+ // Upload to S3
62
+ await this.uploadAsTar(s3Key, path, archiveBasePath);
63
+ return pathHash;
64
+ }
65
+ /**
66
+ * Compute a hash for a file or directory.
67
+ *
68
+ * @param {string} pathStr - The path to the file or directory to hash.
69
+ * @param {string} archiveBasePath - The base path to use for the archive.
70
+ * @returns {Promise<string>} The hash of the file or directory.
71
+ */
72
+ async computeHashForPathMd5(pathStr, archiveBasePath) {
73
+ const fs = await (0, Import_1.dynamicImport)('fs', '"computeHashForPathMd5" is not supported: ');
74
+ const md5Hasher = crypto.createHash('md5');
75
+ const absPathStr = pathe.resolve(pathStr);
76
+ md5Hasher.update(archiveBasePath);
77
+ if (fs.statSync(absPathStr).isFile()) {
78
+ // For files, hash the content
79
+ await this.hashFile(absPathStr, md5Hasher);
80
+ }
81
+ else {
82
+ // For directories, recursively hash all files and their paths
83
+ await this.hashDirectory(absPathStr, pathStr, md5Hasher);
84
+ }
85
+ return md5Hasher.digest('hex');
86
+ }
87
+ /**
88
+ * Recursively hash a directory and its contents.
89
+ *
90
+ * @param {string} dirPath - The path to the directory to hash.
91
+ * @param {string} basePath - The base path to use for the hash.
92
+ * @param {crypto.Hash} hasher - The hasher to use for the hash.
93
+ * @returns {Promise<void>} A promise that resolves when the directory has been hashed.
94
+ */
95
+ async hashDirectory(dirPath, basePath, hasher) {
96
+ const fs = await (0, Import_1.dynamicImport)('fs', '"hashDirectory" is not supported: ');
97
+ const entries = fs.readdirSync(dirPath, { withFileTypes: true });
98
+ const hasSubdirs = entries.some((e) => e.isDirectory());
99
+ const hasFiles = entries.some((e) => e.isFile());
100
+ if (!hasSubdirs && !hasFiles) {
101
+ // Empty directory
102
+ const relDir = pathe.relative(basePath, dirPath);
103
+ hasher.update(relDir);
104
+ }
105
+ for (const entry of entries) {
106
+ const fullPath = pathe.join(dirPath, entry.name);
107
+ if (entry.isDirectory()) {
108
+ await this.hashDirectory(fullPath, basePath, hasher);
109
+ }
110
+ else if (entry.isFile()) {
111
+ const relPath = pathe.relative(basePath, fullPath);
112
+ hasher.update(relPath);
113
+ await this.hashFile(fullPath, hasher);
114
+ }
115
+ }
116
+ }
117
+ /**
118
+ * Hash a file.
119
+ *
120
+ * @param {string} filePath - The path to the file to hash.
121
+ * @param {crypto.Hash} hasher - The hasher to use for the hash.
122
+ * @returns {Promise<void>} A promise that resolves when the file has been hashed.
123
+ */
124
+ async hashFile(filePath, hasher) {
125
+ const fs = await (0, Import_1.dynamicImport)('fs', '"hashFile" is not supported: ');
126
+ await new Promise((resolve, reject) => {
127
+ const stream = fs.createReadStream(filePath, { highWaterMark: 8192 });
128
+ stream.on('data', (chunk) => hasher.update(chunk));
129
+ stream.on('end', resolve);
130
+ stream.on('error', reject);
131
+ });
132
+ }
133
+ /**
134
+ * Check if a prefix (folder) exists in S3.
135
+ *
136
+ * @param {string} prefix - The prefix to check.
137
+ * @returns {Promise<boolean>} True if the prefix exists, false otherwise.
138
+ */
139
+ async folderExistsInS3(prefix) {
140
+ const response = await this.s3Client.send(new client_s3_1.ListObjectsV2Command({
141
+ Bucket: this.bucketName,
142
+ Prefix: prefix,
143
+ MaxKeys: 1,
144
+ }));
145
+ return !!response.Contents && response.Contents.length > 0;
146
+ }
147
+ /**
148
+ * Create a tar archive of the specified path and upload it to S3.
149
+ *
150
+ * @param {string} s3Key - The key to use for the uploaded file.
151
+ * @param {string} sourcePath - The path to the file or directory to upload.
152
+ * @param {string} archiveBasePath - The base path to use for the archive.
153
+ */
154
+ async uploadAsTar(s3Key, sourcePath, archiveBasePath) {
155
+ const importErrorPrefix = '"uploadAsTar" is not supported: ';
156
+ const tar = await (0, Import_1.dynamicImport)('tar', importErrorPrefix);
157
+ const stream = await (0, Import_1.dynamicImport)('stream', importErrorPrefix);
158
+ sourcePath = pathe.resolve(sourcePath);
159
+ const normalizedSourcePath = pathe.normalize(sourcePath);
160
+ const normalizedArchiveBasePath = pathe.normalize(archiveBasePath);
161
+ let basePrefix;
162
+ if (normalizedArchiveBasePath === '.') {
163
+ // When archiveBasePath is empty (normalized to '.'), use the normalizedSourcePath as cwd and the '.' as target
164
+ basePrefix = normalizedSourcePath;
165
+ }
166
+ else {
167
+ // Normal case: extract the base prefix by removing archiveBasePath from the end
168
+ basePrefix = normalizedSourcePath.slice(0, normalizedSourcePath.length - normalizedArchiveBasePath.length);
169
+ }
170
+ const tarStream = tar.create({
171
+ cwd: basePrefix,
172
+ portable: true,
173
+ gzip: false,
174
+ }, [normalizedArchiveBasePath]);
175
+ const pass = new stream.PassThrough();
176
+ tarStream.pipe(pass);
177
+ const uploader = new lib_storage_1.Upload({
178
+ client: this.s3Client,
179
+ params: {
180
+ Bucket: this.bucketName,
181
+ Key: s3Key,
182
+ Body: pass,
183
+ },
184
+ });
185
+ await uploader.done();
186
+ }
187
+ extractAwsRegion(endpoint) {
188
+ const match = endpoint.match(/s3[.-]([a-z0-9-]+)\.amazonaws\.com/);
189
+ return match?.[1];
190
+ }
191
+ }
192
+ exports.ObjectStorage = ObjectStorage;
193
+ tslib_1.__decorate([
194
+ (0, otel_decorator_1.WithInstrumentation)(),
195
+ tslib_1.__metadata("design:type", Function),
196
+ tslib_1.__metadata("design:paramtypes", [String, String, String]),
197
+ tslib_1.__metadata("design:returntype", Promise)
198
+ ], ObjectStorage.prototype, "upload", null);
199
+ //# sourceMappingURL=ObjectStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectStorage.js","sourceRoot":"","sources":["../../../../../libs/sdk-typescript/src/ObjectStorage.ts"],"names":[],"mappings":"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"}