dotdo 0.0.2 → 0.1.0

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 (313) hide show
  1. package/cli/README.md +238 -0
  2. package/cli/agent.ts +72 -0
  3. package/cli/bin.js +44 -0
  4. package/cli/bin.ts +38 -0
  5. package/cli/build.ts +157 -0
  6. package/cli/commands/auth/login.ts +14 -0
  7. package/cli/commands/auth/logout.ts +6 -0
  8. package/cli/commands/auth/whoami.ts +16 -0
  9. package/cli/commands/deploy-multi.ts +245 -0
  10. package/cli/commands/dev/deploy.ts +100 -0
  11. package/cli/commands/dev/dev.ts +95 -0
  12. package/cli/commands/dev/logs.ts +91 -0
  13. package/cli/commands/dev-local.ts +88 -0
  14. package/cli/commands/do-ops.ts +314 -0
  15. package/cli/commands/index.ts +100 -0
  16. package/cli/commands/init.ts +247 -0
  17. package/cli/commands/introspect/emitter.ts +315 -0
  18. package/cli/commands/introspect/index.ts +193 -0
  19. package/cli/commands/link.ts +598 -0
  20. package/cli/commands/snippets.ts +415 -0
  21. package/cli/commands/tunnel.ts +239 -0
  22. package/cli/device-auth.ts +289 -0
  23. package/cli/fallback.ts +12 -0
  24. package/cli/index.ts +121 -0
  25. package/cli/main.ts +246 -0
  26. package/cli/mcp-stdio.ts +790 -0
  27. package/cli/package.json +62 -0
  28. package/cli/runtime/do-registry.ts +193 -0
  29. package/cli/runtime/embedded-db.ts +344 -0
  30. package/cli/runtime/index.ts +9 -0
  31. package/cli/runtime/miniflare-adapter.ts +162 -0
  32. package/cli/sandbox.ts +82 -0
  33. package/cli/src/args.ts +174 -0
  34. package/cli/src/auth.ts +55 -0
  35. package/cli/src/commands/call.ts +84 -0
  36. package/cli/src/commands/charge.ts +96 -0
  37. package/cli/src/commands/config.ts +115 -0
  38. package/cli/src/commands/email.ts +112 -0
  39. package/cli/src/commands/llm.ts +115 -0
  40. package/cli/src/commands/queue.ts +134 -0
  41. package/cli/src/commands/text.ts +86 -0
  42. package/cli/src/config.ts +185 -0
  43. package/cli/src/output.ts +246 -0
  44. package/cli/src/rpc.ts +192 -0
  45. package/cli/utils/config.ts +282 -0
  46. package/cli/utils/detect.ts +73 -0
  47. package/cli/utils/index.ts +15 -0
  48. package/cli/utils/logger.ts +232 -0
  49. package/dist/ai/template-literals.js +2 -2
  50. package/dist/ai/template-literals.js.map +1 -1
  51. package/dist/api/middleware/auth.js +3 -2
  52. package/dist/api/middleware/auth.js.map +1 -1
  53. package/dist/db/iceberg/inverted-index.js +1 -1
  54. package/dist/db/iceberg/inverted-index.js.map +1 -1
  55. package/dist/db/iceberg/puffin.js.map +1 -1
  56. package/dist/db/json-indexes.js.map +1 -1
  57. package/dist/db/objects.js.map +1 -1
  58. package/dist/db/primitives/dag-scheduler/index.js +1 -1
  59. package/dist/db/primitives/dag-scheduler/index.js.map +1 -1
  60. package/dist/db/primitives/observability.js.map +1 -1
  61. package/dist/db/primitives/schema-evolution.js.map +1 -1
  62. package/dist/db/primitives/temporal-store.js.map +1 -1
  63. package/dist/db/primitives/typed-column-store.js.map +1 -1
  64. package/dist/db/primitives/utils/duration.js.map +1 -1
  65. package/dist/db/primitives/utils/murmur3.js +12 -14
  66. package/dist/db/primitives/utils/murmur3.js.map +1 -1
  67. package/dist/db/primitives/window-manager.js.map +1 -1
  68. package/dist/db/stores.js.map +1 -1
  69. package/dist/db/things.js.map +1 -1
  70. package/dist/lib/DODispatcher.js +2 -2
  71. package/dist/lib/DODispatcher.js.map +1 -1
  72. package/dist/lib/auto-wiring.js.map +1 -1
  73. package/dist/lib/channels/email.js +1 -1
  74. package/dist/lib/channels/email.js.map +1 -1
  75. package/dist/lib/channels/slack-blockkit.js.map +1 -1
  76. package/dist/lib/cloudflare/ai.js +1 -1
  77. package/dist/lib/cloudflare/ai.js.map +1 -1
  78. package/dist/lib/cloudflare/kv.js +1 -1
  79. package/dist/lib/cloudflare/kv.js.map +1 -1
  80. package/dist/lib/cloudflare/r2.js +3 -3
  81. package/dist/lib/cloudflare/r2.js.map +1 -1
  82. package/dist/lib/cloudflare/vectorize.js.map +1 -1
  83. package/dist/lib/cloudflare/workflows.js.map +1 -1
  84. package/dist/lib/executors/AgenticFunctionExecutor.js.map +1 -1
  85. package/dist/lib/executors/CodeFunctionExecutor.js.map +1 -1
  86. package/dist/lib/executors/GenerativeFunctionExecutor.js.map +1 -1
  87. package/dist/lib/executors/HumanFunctionExecutor.js +1 -1
  88. package/dist/lib/executors/HumanFunctionExecutor.js.map +1 -1
  89. package/dist/lib/executors/ParallelStepExecutor.js.map +1 -1
  90. package/dist/lib/experiments.js.map +1 -1
  91. package/dist/lib/flags/store.js.map +1 -1
  92. package/dist/lib/functions/FunctionComposition.js.map +1 -1
  93. package/dist/lib/functions/FunctionMiddleware.js.map +1 -1
  94. package/dist/lib/functions/FunctionRegistry.js.map +1 -1
  95. package/dist/lib/humans/templates.js.map +1 -1
  96. package/dist/lib/identity.js +2 -2
  97. package/dist/lib/identity.js.map +1 -1
  98. package/dist/lib/logging/index.js.map +1 -1
  99. package/dist/lib/mixins/bash.js +1 -73
  100. package/dist/lib/mixins/bash.js.map +1 -1
  101. package/dist/lib/mixins/git.js +0 -5
  102. package/dist/lib/mixins/git.js.map +1 -1
  103. package/dist/lib/mixins/npm.js.map +1 -1
  104. package/dist/lib/noun-id.js.map +1 -1
  105. package/dist/lib/rate-limit/sliding-window.js.map +1 -1
  106. package/dist/lib/rpc/bindings.js.map +1 -1
  107. package/dist/lib/safe-stringify.js.map +1 -1
  108. package/dist/lib/sandbox/miniflare-sandbox.js.map +1 -1
  109. package/dist/lib/sqids.js.map +1 -1
  110. package/dist/lib/sql/adapters/node-sql-parser.js.map +1 -1
  111. package/dist/lib/sql/adapters/pgsql-parser.js +19 -18
  112. package/dist/lib/sql/adapters/pgsql-parser.js.map +1 -1
  113. package/dist/metrics/hunch.js.map +1 -1
  114. package/dist/objects/API.js +1 -1
  115. package/dist/objects/API.js.map +1 -1
  116. package/dist/objects/Agent.js.map +1 -1
  117. package/dist/objects/Browser.js.map +1 -1
  118. package/dist/objects/CLI.js.map +1 -1
  119. package/dist/objects/DOBase.js.map +1 -1
  120. package/dist/objects/DOCache.js +153 -0
  121. package/dist/objects/DOCache.js.map +1 -0
  122. package/dist/objects/DOFull.js.map +1 -1
  123. package/dist/objects/Entity.js.map +1 -1
  124. package/dist/objects/Human.js.map +1 -1
  125. package/dist/objects/IcebergMetadataDO.js.map +1 -1
  126. package/dist/objects/IntegrationsDO.js.map +1 -1
  127. package/dist/objects/ObservabilityBroadcaster.js.map +1 -1
  128. package/dist/objects/Package.js.map +1 -1
  129. package/dist/objects/Product.js +1 -1
  130. package/dist/objects/Product.js.map +1 -1
  131. package/dist/objects/SaaS.js.map +1 -1
  132. package/dist/objects/SandboxDO.js.map +1 -1
  133. package/dist/objects/Service.js.map +1 -1
  134. package/dist/objects/VectorShardDO.js +9 -7
  135. package/dist/objects/VectorShardDO.js.map +1 -1
  136. package/dist/objects/Workflow.js.map +1 -1
  137. package/dist/objects/WorkflowFactory.js.map +1 -1
  138. package/dist/objects/WorkflowRuntime.js.map +1 -1
  139. package/dist/objects/lifecycle/Branch.js.map +1 -1
  140. package/dist/objects/lifecycle/Clone.js +1 -1
  141. package/dist/objects/lifecycle/Clone.js.map +1 -1
  142. package/dist/objects/lifecycle/Compact.js.map +1 -1
  143. package/dist/objects/lifecycle/Shard.js.map +1 -1
  144. package/dist/objects/persistence/checkpoint-manager.js.map +1 -1
  145. package/dist/objects/persistence/migration-runner.js.map +1 -1
  146. package/dist/objects/persistence/replication-manager.js +2 -2
  147. package/dist/objects/persistence/replication-manager.js.map +1 -1
  148. package/dist/objects/persistence/tiered-storage-manager.js.map +1 -1
  149. package/dist/objects/persistence/wal-manager.js.map +1 -1
  150. package/dist/objects/transport/auth-layer.js.map +1 -1
  151. package/dist/objects/transport/chain.js.map +1 -1
  152. package/dist/objects/transport/mcp-server.js +7 -6
  153. package/dist/objects/transport/mcp-server.js.map +1 -1
  154. package/dist/objects/transport/rest-autowire.js +3 -2
  155. package/dist/objects/transport/rest-autowire.js.map +1 -1
  156. package/dist/objects/transport/rest-router.js.map +1 -1
  157. package/dist/objects/transport/rpc-server.js +18 -15
  158. package/dist/objects/transport/rpc-server.js.map +1 -1
  159. package/dist/objects/transport/shared.js +2 -1
  160. package/dist/objects/transport/shared.js.map +1 -1
  161. package/dist/snippets/artifacts-ingest.js.map +1 -1
  162. package/dist/snippets/artifacts-serve.js.map +1 -1
  163. package/dist/snippets/search.js.map +1 -1
  164. package/dist/workflows/ScheduleManager.js.map +1 -1
  165. package/dist/workflows/StepResultStorage.js.map +1 -1
  166. package/dist/workflows/WaitForEventManager.js.map +1 -1
  167. package/dist/workflows/compat/backends/cloudflare-workflows.js.map +1 -1
  168. package/dist/workflows/compat/inngest/index.js.map +1 -1
  169. package/dist/workflows/compat/qstash/index.js.map +1 -1
  170. package/dist/workflows/compat/temporal/client.js.map +1 -1
  171. package/dist/workflows/compat/temporal/index.js.map +1 -1
  172. package/dist/workflows/compat/trigger/index.js.map +1 -1
  173. package/dist/workflows/compat/utils/index.js.map +1 -1
  174. package/dist/workflows/context/correlation.js +2 -2
  175. package/dist/workflows/context/correlation.js.map +1 -1
  176. package/dist/workflows/context/experiment.js +1 -1
  177. package/dist/workflows/context/experiment.js.map +1 -1
  178. package/dist/workflows/context/flag.js +1 -1
  179. package/dist/workflows/context/flag.js.map +1 -1
  180. package/dist/workflows/context/measure.js +1 -1
  181. package/dist/workflows/context/measure.js.map +1 -1
  182. package/dist/workflows/context/rate-limit.js.map +1 -1
  183. package/dist/workflows/data/entity-events/entity-events.js.map +1 -1
  184. package/dist/workflows/data/experiment/index.js.map +1 -1
  185. package/dist/workflows/data/goal/context.js +1 -1
  186. package/dist/workflows/data/goal/context.js.map +1 -1
  187. package/dist/workflows/data/measure/index.js +1 -1
  188. package/dist/workflows/data/measure/index.js.map +1 -1
  189. package/dist/workflows/data/stream/index.js +10 -76
  190. package/dist/workflows/data/stream/index.js.map +1 -1
  191. package/dist/workflows/data/track/context.js.map +1 -1
  192. package/dist/workflows/data/view/context.js.map +1 -1
  193. package/dist/workflows/domain.js.map +1 -1
  194. package/dist/workflows/flags.js +1 -1
  195. package/dist/workflows/flags.js.map +1 -1
  196. package/dist/workflows/hash.js.map +1 -1
  197. package/dist/workflows/on.js +1 -1
  198. package/dist/workflows/on.js.map +1 -1
  199. package/dist/workflows/schedule-builder.js.map +1 -1
  200. package/dist/workflows/visibility/index.js +0 -2
  201. package/dist/workflows/visibility/index.js.map +1 -1
  202. package/dist/workflows/visibility/query-parser.js.map +1 -1
  203. package/package.json +18 -3
  204. package/dist/api/analytics/router.js +0 -601
  205. package/dist/api/analytics/router.js.map +0 -1
  206. package/dist/api/index.js +0 -158
  207. package/dist/api/index.js.map +0 -1
  208. package/dist/api/middleware/error-handling.js +0 -176
  209. package/dist/api/middleware/error-handling.js.map +0 -1
  210. package/dist/api/middleware/request-id.js +0 -21
  211. package/dist/api/middleware/request-id.js.map +0 -1
  212. package/dist/api/pages.js +0 -1180
  213. package/dist/api/pages.js.map +0 -1
  214. package/dist/api/routes/api.js +0 -612
  215. package/dist/api/routes/api.js.map +0 -1
  216. package/dist/api/routes/browsers.js +0 -471
  217. package/dist/api/routes/browsers.js.map +0 -1
  218. package/dist/api/routes/do.js +0 -188
  219. package/dist/api/routes/do.js.map +0 -1
  220. package/dist/api/routes/mcp.js +0 -459
  221. package/dist/api/routes/mcp.js.map +0 -1
  222. package/dist/api/routes/obs.js +0 -445
  223. package/dist/api/routes/obs.js.map +0 -1
  224. package/dist/api/routes/openapi.js +0 -794
  225. package/dist/api/routes/openapi.js.map +0 -1
  226. package/dist/api/routes/rpc.js +0 -1103
  227. package/dist/api/routes/rpc.js.map +0 -1
  228. package/dist/api/routes/sandboxes.js +0 -389
  229. package/dist/api/routes/sandboxes.js.map +0 -1
  230. package/dist/api/test-do.js +0 -38
  231. package/dist/api/test-do.js.map +0 -1
  232. package/dist/api/types.js +0 -11
  233. package/dist/api/types.js.map +0 -1
  234. package/dist/cli/bin.js +0 -2
  235. package/dist/cli/main.js +0 -52342
  236. package/dist/do/bash.js +0 -35
  237. package/dist/do/bash.js.map +0 -1
  238. package/dist/do/fs.js +0 -25
  239. package/dist/do/fs.js.map +0 -1
  240. package/dist/do/full.js +0 -61
  241. package/dist/do/full.js.map +0 -1
  242. package/dist/do/git.js +0 -28
  243. package/dist/do/git.js.map +0 -1
  244. package/dist/do/index.js +0 -52
  245. package/dist/do/index.js.map +0 -1
  246. package/dist/lib/agent/tools/bash.js +0 -336
  247. package/dist/lib/agent/tools/bash.js.map +0 -1
  248. package/dist/lib/agent/tools/edit.js +0 -157
  249. package/dist/lib/agent/tools/edit.js.map +0 -1
  250. package/dist/lib/agent/tools/glob.js +0 -137
  251. package/dist/lib/agent/tools/glob.js.map +0 -1
  252. package/dist/lib/agent/tools/grep.js +0 -315
  253. package/dist/lib/agent/tools/grep.js.map +0 -1
  254. package/dist/lib/agent/tools/index.js +0 -71
  255. package/dist/lib/agent/tools/index.js.map +0 -1
  256. package/dist/lib/agent/tools/read.js +0 -212
  257. package/dist/lib/agent/tools/read.js.map +0 -1
  258. package/dist/lib/agent/tools/types.js +0 -197
  259. package/dist/lib/agent/tools/types.js.map +0 -1
  260. package/dist/lib/agent/tools/write.js +0 -159
  261. package/dist/lib/agent/tools/write.js.map +0 -1
  262. package/dist/lib/mixins/index.js +0 -29
  263. package/dist/lib/mixins/index.js.map +0 -1
  264. package/dist/primitives/bashx/src/ast/analyze.js +0 -1472
  265. package/dist/primitives/bashx/src/ast/analyze.js.map +0 -1
  266. package/dist/primitives/bashx/src/ast/parser.js +0 -1488
  267. package/dist/primitives/bashx/src/ast/parser.js.map +0 -1
  268. package/dist/primitives/bashx/src/do/commands/crypto.js +0 -1954
  269. package/dist/primitives/bashx/src/do/commands/crypto.js.map +0 -1
  270. package/dist/primitives/bashx/src/do/commands/data-processing.js +0 -1812
  271. package/dist/primitives/bashx/src/do/commands/data-processing.js.map +0 -1
  272. package/dist/primitives/bashx/src/do/commands/extended-utils.js +0 -804
  273. package/dist/primitives/bashx/src/do/commands/extended-utils.js.map +0 -1
  274. package/dist/primitives/bashx/src/do/commands/math-control.js +0 -1122
  275. package/dist/primitives/bashx/src/do/commands/math-control.js.map +0 -1
  276. package/dist/primitives/bashx/src/do/commands/posix-utils.js +0 -1015
  277. package/dist/primitives/bashx/src/do/commands/posix-utils.js.map +0 -1
  278. package/dist/primitives/bashx/src/do/commands/system-utils.js +0 -687
  279. package/dist/primitives/bashx/src/do/commands/system-utils.js.map +0 -1
  280. package/dist/primitives/bashx/src/do/commands/test-command.js +0 -523
  281. package/dist/primitives/bashx/src/do/commands/test-command.js.map +0 -1
  282. package/dist/primitives/bashx/src/do/commands/text-processing.js +0 -1550
  283. package/dist/primitives/bashx/src/do/commands/text-processing.js.map +0 -1
  284. package/dist/primitives/bashx/src/do/container-executor.js +0 -429
  285. package/dist/primitives/bashx/src/do/container-executor.js.map +0 -1
  286. package/dist/primitives/bashx/src/do/index.js +0 -668
  287. package/dist/primitives/bashx/src/do/index.js.map +0 -1
  288. package/dist/primitives/bashx/src/do/tiered-executor.js +0 -2647
  289. package/dist/primitives/bashx/src/do/tiered-executor.js.map +0 -1
  290. package/dist/primitives/bashx/src/do/worker.js +0 -352
  291. package/dist/primitives/bashx/src/do/worker.js.map +0 -1
  292. package/dist/primitives/bashx/src/types.js +0 -10
  293. package/dist/primitives/bashx/src/types.js.map +0 -1
  294. package/dist/primitives/fsx/core/backend.js +0 -480
  295. package/dist/primitives/fsx/core/backend.js.map +0 -1
  296. package/dist/primitives/fsx/core/constants.js +0 -140
  297. package/dist/primitives/fsx/core/constants.js.map +0 -1
  298. package/dist/primitives/fsx/core/fsx.js +0 -1184
  299. package/dist/primitives/fsx/core/fsx.js.map +0 -1
  300. package/dist/primitives/fsx/core/glob/glob.js +0 -438
  301. package/dist/primitives/fsx/core/glob/glob.js.map +0 -1
  302. package/dist/primitives/fsx/core/glob/index.js +0 -8
  303. package/dist/primitives/fsx/core/glob/index.js.map +0 -1
  304. package/dist/primitives/fsx/core/glob/match.js +0 -392
  305. package/dist/primitives/fsx/core/glob/match.js.map +0 -1
  306. package/dist/primitives/fsx/core/types.js +0 -307
  307. package/dist/primitives/fsx/core/types.js.map +0 -1
  308. package/dist/sdk/capnweb-compat.js +0 -42
  309. package/dist/sdk/capnweb-compat.js.map +0 -1
  310. package/dist/sdk/client.js +0 -20
  311. package/dist/sdk/client.js.map +0 -1
  312. package/dist/sdk/index.js +0 -17
  313. package/dist/sdk/index.js.map +0 -1
@@ -1,480 +0,0 @@
1
- /**
2
- * FsBackend Interface
3
- *
4
- * The pluggable storage backend interface for @dotdo/fsx.
5
- * Implement this interface to create custom storage backends
6
- * (SQLite, R2, Memory, Node.js fs, etc.)
7
- *
8
- * @module backend
9
- */
10
- // =============================================================================
11
- // Memory Backend (for testing)
12
- // =============================================================================
13
- /**
14
- * In-memory filesystem backend for testing.
15
- *
16
- * @example
17
- * ```typescript
18
- * const backend = new MemoryBackend()
19
- * const fs = new FSx(backend)
20
- *
21
- * await fs.write('/test.txt', 'Hello')
22
- * const content = await fs.read('/test.txt', { encoding: 'utf-8' })
23
- * ```
24
- */
25
- export class MemoryBackend {
26
- files = new Map();
27
- directories = new Set(['/']);
28
- /**
29
- * Normalize a path by resolving . and .., removing duplicate slashes,
30
- * and stripping trailing slashes (except for root).
31
- */
32
- normalizePath(path) {
33
- if (!path) {
34
- throw new Error('ENOENT: path cannot be empty');
35
- }
36
- // Handle double slashes by replacing with single slash
37
- path = path.replace(/\/+/g, '/');
38
- // Split and resolve . and ..
39
- const parts = path.split('/');
40
- const resolved = [];
41
- for (const part of parts) {
42
- if (part === '..') {
43
- resolved.pop();
44
- }
45
- else if (part !== '.' && part !== '') {
46
- resolved.push(part);
47
- }
48
- }
49
- // Reconstruct path
50
- let result = '/' + resolved.join('/');
51
- // Strip trailing slash (except for root)
52
- if (result !== '/' && result.endsWith('/')) {
53
- result = result.slice(0, -1);
54
- }
55
- return result;
56
- }
57
- /**
58
- * Get the parent directory of a path.
59
- */
60
- getParentDir(path) {
61
- const normalized = this.normalizePath(path);
62
- if (normalized === '/')
63
- return '/';
64
- const lastSlash = normalized.lastIndexOf('/');
65
- return lastSlash === 0 ? '/' : normalized.slice(0, lastSlash);
66
- }
67
- /**
68
- * Check if parent directory exists and path components are valid.
69
- * Returns error type or null if valid.
70
- */
71
- validatePath(path) {
72
- const normalized = this.normalizePath(path);
73
- if (normalized === '/')
74
- return null;
75
- const parts = normalized.split('/').filter(Boolean);
76
- let current = '';
77
- // Check all parent components
78
- for (let i = 0; i < parts.length - 1; i++) {
79
- current += '/' + parts[i];
80
- // If a file exists at this path, it's ENOTDIR
81
- if (this.files.has(current)) {
82
- return 'ENOTDIR';
83
- }
84
- // If neither file nor directory exists, it's ENOENT
85
- if (!this.directories.has(current)) {
86
- return 'ENOENT';
87
- }
88
- }
89
- return null;
90
- }
91
- async readFile(path) {
92
- const normalized = this.normalizePath(path);
93
- // Check if it's a directory first
94
- if (this.directories.has(normalized)) {
95
- throw new Error(`EISDIR: illegal operation on a directory: ${path}`);
96
- }
97
- const file = this.files.get(normalized);
98
- if (!file) {
99
- throw new Error(`ENOENT: no such file: ${path}`);
100
- }
101
- return file.data;
102
- }
103
- async writeFile(path, data, options) {
104
- const normalized = this.normalizePath(path);
105
- // Check if path is a directory
106
- if (this.directories.has(normalized)) {
107
- throw new Error(`EISDIR: illegal operation on a directory: ${path}`);
108
- }
109
- // Validate parent path
110
- const pathError = this.validatePath(normalized);
111
- if (pathError === 'ENOTDIR') {
112
- throw new Error(`ENOTDIR: not a directory: ${path}`);
113
- }
114
- if (pathError === 'ENOENT') {
115
- throw new Error(`ENOENT: no such file or directory: ${path}`);
116
- }
117
- const now = Date.now();
118
- const mode = options?.mode ?? 0o644;
119
- const existing = this.files.get(normalized);
120
- const ino = existing?.stats.ino ?? this.files.size + 1;
121
- const birthtimeMs = existing?.stats.birthtimeMs ?? now;
122
- this.files.set(normalized, {
123
- data,
124
- stats: {
125
- dev: 1,
126
- ino,
127
- mode: 0o100000 | mode, // S_IFREG | mode
128
- nlink: 1,
129
- uid: 0,
130
- gid: 0,
131
- rdev: 0,
132
- size: data.length,
133
- blksize: 4096,
134
- blocks: Math.ceil(data.length / 512),
135
- atimeMs: now,
136
- mtimeMs: now,
137
- ctimeMs: now,
138
- birthtimeMs,
139
- },
140
- });
141
- return { bytesWritten: data.length, tier: 'hot' };
142
- }
143
- async appendFile(path, data) {
144
- const normalized = this.normalizePath(path);
145
- const existing = this.files.get(normalized);
146
- if (existing) {
147
- const newData = new Uint8Array(existing.data.length + data.length);
148
- newData.set(existing.data);
149
- newData.set(data, existing.data.length);
150
- existing.data = newData;
151
- existing.stats.size = newData.length;
152
- existing.stats.mtimeMs = Date.now();
153
- }
154
- else {
155
- await this.writeFile(path, data);
156
- }
157
- }
158
- async unlink(path) {
159
- const normalized = this.normalizePath(path);
160
- // Check if it's a directory
161
- if (this.directories.has(normalized)) {
162
- throw new Error(`EISDIR: illegal operation on a directory: ${path}`);
163
- }
164
- if (!this.files.has(normalized)) {
165
- throw new Error(`ENOENT: no such file: ${path}`);
166
- }
167
- this.files.delete(normalized);
168
- }
169
- async rename(oldPath, newPath) {
170
- const normalizedOld = this.normalizePath(oldPath);
171
- const normalizedNew = this.normalizePath(newPath);
172
- // Check destination parent exists
173
- const destParent = this.getParentDir(normalizedNew);
174
- if (destParent !== '/' && !this.directories.has(destParent)) {
175
- throw new Error(`ENOENT: no such file or directory: ${newPath}`);
176
- }
177
- // Check if source is a directory
178
- if (this.directories.has(normalizedOld)) {
179
- // Rename directory
180
- const oldPrefix = normalizedOld === '/' ? '/' : normalizedOld + '/';
181
- // Collect all paths to rename
182
- const filesToRename = [];
183
- const dirsToRename = [];
184
- for (const [filePath, file] of this.files) {
185
- if (filePath.startsWith(oldPrefix)) {
186
- const newFilePath = normalizedNew + filePath.slice(normalizedOld.length);
187
- filesToRename.push({ old: filePath, new: newFilePath, file });
188
- }
189
- }
190
- for (const dirPath of this.directories) {
191
- if (dirPath === normalizedOld || dirPath.startsWith(oldPrefix)) {
192
- const newDirPath = normalizedNew + dirPath.slice(normalizedOld.length);
193
- dirsToRename.push({ old: dirPath, new: newDirPath });
194
- }
195
- }
196
- // Apply renames
197
- for (const { old, new: newPath, file } of filesToRename) {
198
- this.files.delete(old);
199
- this.files.set(newPath, file);
200
- }
201
- for (const { old, new: newPath } of dirsToRename) {
202
- this.directories.delete(old);
203
- this.directories.add(newPath);
204
- }
205
- return;
206
- }
207
- // Rename file
208
- const file = this.files.get(normalizedOld);
209
- if (!file) {
210
- throw new Error(`ENOENT: no such file: ${oldPath}`);
211
- }
212
- // Remove destination if it exists (overwrite)
213
- this.files.delete(normalizedNew);
214
- this.files.set(normalizedNew, file);
215
- this.files.delete(normalizedOld);
216
- }
217
- async copyFile(src, dest) {
218
- const normalizedSrc = this.normalizePath(src);
219
- const normalizedDest = this.normalizePath(dest);
220
- // Check if source is a directory
221
- if (this.directories.has(normalizedSrc)) {
222
- throw new Error(`EISDIR: illegal operation on a directory: ${src}`);
223
- }
224
- const file = this.files.get(normalizedSrc);
225
- if (!file) {
226
- throw new Error(`ENOENT: no such file: ${src}`);
227
- }
228
- // Check destination parent exists
229
- const destParent = this.getParentDir(normalizedDest);
230
- if (destParent !== '/' && !this.directories.has(destParent)) {
231
- throw new Error(`ENOENT: no such file or directory: ${dest}`);
232
- }
233
- const now = Date.now();
234
- this.files.set(normalizedDest, {
235
- data: new Uint8Array(file.data),
236
- stats: { ...file.stats, atimeMs: now, mtimeMs: now, ctimeMs: now },
237
- });
238
- }
239
- async mkdir(path, options) {
240
- const normalized = this.normalizePath(path);
241
- // Check if file exists at path
242
- if (this.files.has(normalized)) {
243
- throw new Error(`EEXIST: file exists: ${path}`);
244
- }
245
- if (options?.recursive) {
246
- // With recursive, we don't throw if directory exists
247
- if (this.directories.has(normalized)) {
248
- return;
249
- }
250
- const parts = normalized.split('/').filter(Boolean);
251
- let current = '';
252
- for (const part of parts) {
253
- current += '/' + part;
254
- // Check if a file exists in the path
255
- if (this.files.has(current)) {
256
- throw new Error(`ENOTDIR: not a directory: ${current}`);
257
- }
258
- this.directories.add(current);
259
- }
260
- }
261
- else {
262
- // Non-recursive: check if already exists
263
- if (this.directories.has(normalized)) {
264
- throw new Error(`EEXIST: directory exists: ${path}`);
265
- }
266
- // Check parent exists and is valid
267
- const pathError = this.validatePath(normalized);
268
- if (pathError === 'ENOTDIR') {
269
- throw new Error(`ENOTDIR: not a directory: ${path}`);
270
- }
271
- if (pathError === 'ENOENT') {
272
- throw new Error(`ENOENT: no such file or directory: ${path}`);
273
- }
274
- this.directories.add(normalized);
275
- }
276
- }
277
- async rmdir(path, options) {
278
- const normalized = this.normalizePath(path);
279
- // Cannot remove root
280
- if (normalized === '/') {
281
- throw new Error('EPERM: operation not permitted: /');
282
- }
283
- // Check if it's a file
284
- if (this.files.has(normalized)) {
285
- throw new Error(`ENOTDIR: not a directory: ${path}`);
286
- }
287
- if (!this.directories.has(normalized)) {
288
- throw new Error(`ENOENT: no such directory: ${path}`);
289
- }
290
- // Check if directory is empty
291
- const prefix = normalized + '/';
292
- const hasChildren = [...this.files.keys(), ...this.directories].some((p) => p !== normalized && p.startsWith(prefix));
293
- if (hasChildren && !options?.recursive) {
294
- throw new Error(`ENOTEMPTY: directory not empty: ${path}`);
295
- }
296
- if (options?.recursive) {
297
- for (const file of this.files.keys()) {
298
- if (file.startsWith(prefix)) {
299
- this.files.delete(file);
300
- }
301
- }
302
- for (const dir of this.directories) {
303
- if (dir.startsWith(prefix)) {
304
- this.directories.delete(dir);
305
- }
306
- }
307
- }
308
- this.directories.delete(normalized);
309
- }
310
- async readdir(path, options) {
311
- const normalized = this.normalizePath(path);
312
- // Check if it's a file
313
- if (this.files.has(normalized)) {
314
- throw new Error(`ENOTDIR: not a directory: ${path}`);
315
- }
316
- // Check if directory exists
317
- if (!this.directories.has(normalized)) {
318
- throw new Error(`ENOENT: no such directory: ${path}`);
319
- }
320
- const prefix = normalized === '/' ? '/' : normalized + '/';
321
- const entries = new Set();
322
- // Find direct children
323
- for (const file of this.files.keys()) {
324
- if (file.startsWith(prefix)) {
325
- const relative = file.slice(prefix.length);
326
- const firstPart = relative.split('/')[0];
327
- if (firstPart)
328
- entries.add(firstPart);
329
- }
330
- }
331
- for (const dir of this.directories) {
332
- if (dir.startsWith(prefix) && dir !== normalized) {
333
- const relative = dir.slice(prefix.length);
334
- const firstPart = relative.split('/')[0];
335
- if (firstPart)
336
- entries.add(firstPart);
337
- }
338
- }
339
- if (options?.withFileTypes) {
340
- const { Dirent: DirentClass } = await import('./types.js');
341
- const result = [];
342
- for (const name of entries) {
343
- const fullPath = prefix + name;
344
- const isDir = this.directories.has(fullPath);
345
- result.push(new DirentClass(name, normalized, isDir ? 'directory' : 'file'));
346
- }
347
- return result;
348
- }
349
- return [...entries];
350
- }
351
- async stat(path) {
352
- const normalized = this.normalizePath(path);
353
- // Check if it's a file
354
- const file = this.files.get(normalized);
355
- if (file) {
356
- const { Stats } = await import('./types.js');
357
- return new Stats(file.stats);
358
- }
359
- // Check if it's a directory
360
- if (this.directories.has(normalized)) {
361
- const { Stats } = await import('./types.js');
362
- const now = Date.now();
363
- return new Stats({
364
- dev: 1,
365
- ino: 0,
366
- mode: 0o40755, // S_IFDIR | 0o755
367
- nlink: 2,
368
- uid: 0,
369
- gid: 0,
370
- rdev: 0,
371
- size: 4096,
372
- blksize: 4096,
373
- blocks: 8,
374
- atimeMs: now,
375
- mtimeMs: now,
376
- ctimeMs: now,
377
- birthtimeMs: now,
378
- });
379
- }
380
- throw new Error(`ENOENT: no such file or directory: ${path}`);
381
- }
382
- async lstat(path) {
383
- return this.stat(path);
384
- }
385
- async exists(path) {
386
- const normalized = this.normalizePath(path);
387
- return this.files.has(normalized) || this.directories.has(normalized);
388
- }
389
- async access(path, _mode) {
390
- const normalized = this.normalizePath(path);
391
- if (!this.files.has(normalized) && !this.directories.has(normalized)) {
392
- throw new Error(`ENOENT: no such file or directory: ${path}`);
393
- }
394
- // In a full implementation, we'd check mode against file permissions
395
- }
396
- async chmod(path, mode) {
397
- const normalized = this.normalizePath(path);
398
- const file = this.files.get(normalized);
399
- if (file) {
400
- file.stats.mode = 0o100000 | (mode & 0o777); // S_IFREG | mode
401
- return;
402
- }
403
- if (this.directories.has(normalized)) {
404
- // Directories don't store stats in our simple implementation
405
- // but we accept the call
406
- return;
407
- }
408
- throw new Error(`ENOENT: no such file or directory: ${path}`);
409
- }
410
- async chown(path, uid, gid) {
411
- const normalized = this.normalizePath(path);
412
- const file = this.files.get(normalized);
413
- if (file) {
414
- file.stats.uid = uid;
415
- file.stats.gid = gid;
416
- return;
417
- }
418
- if (this.directories.has(normalized)) {
419
- // Directories don't store stats in our simple implementation
420
- return;
421
- }
422
- throw new Error(`ENOENT: no such file or directory: ${path}`);
423
- }
424
- async utimes(path, atime, mtime) {
425
- const normalized = this.normalizePath(path);
426
- const atimeMs = atime instanceof Date ? atime.getTime() : atime;
427
- const mtimeMs = mtime instanceof Date ? mtime.getTime() : mtime;
428
- const file = this.files.get(normalized);
429
- if (file) {
430
- file.stats.atimeMs = atimeMs;
431
- file.stats.mtimeMs = mtimeMs;
432
- return;
433
- }
434
- if (this.directories.has(normalized)) {
435
- // Directories don't store stats in our simple implementation
436
- return;
437
- }
438
- throw new Error(`ENOENT: no such file or directory: ${path}`);
439
- }
440
- async symlink(_target, _path) {
441
- throw new Error('Symlinks not supported in memory backend');
442
- }
443
- async link(_existingPath, _newPath) {
444
- throw new Error('Hard links not supported in memory backend');
445
- }
446
- async readlink(_path) {
447
- throw new Error('Symlinks not supported in memory backend');
448
- }
449
- async realpath(path) {
450
- const normalized = this.normalizePath(path);
451
- if (!this.files.has(normalized) && !this.directories.has(normalized)) {
452
- throw new Error(`ENOENT: no such file or directory: ${path}`);
453
- }
454
- return normalized;
455
- }
456
- async mkdtemp(prefix) {
457
- const random = Math.random().toString(36).substring(2, 8);
458
- const path = `${prefix}${random}`;
459
- await this.mkdir(path);
460
- return path;
461
- }
462
- async open(_path, _flags, _mode) {
463
- throw new Error('File handles not supported in basic MemoryBackend. Use MockBackend instead.');
464
- }
465
- // Optional tiering operations
466
- async getTier(path) {
467
- const normalized = this.normalizePath(path);
468
- if (!this.files.has(normalized)) {
469
- throw new Error(`ENOENT: no such file: ${path}`);
470
- }
471
- return 'hot';
472
- }
473
- async promote(_path, _tier) {
474
- // No-op for memory backend - everything is already "hot"
475
- }
476
- async demote(_path, _tier) {
477
- // No-op for memory backend
478
- }
479
- }
480
- //# sourceMappingURL=backend.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../../../primitives/fsx/core/backend.ts"],"names":[],"mappings":"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"}
@@ -1,140 +0,0 @@
1
- /**
2
- * Filesystem constants (POSIX-compatible)
3
- */
4
- export const constants = {
5
- // File access modes
6
- F_OK: 0, // File exists
7
- R_OK: 4, // Read permission
8
- W_OK: 2, // Write permission
9
- X_OK: 1, // Execute permission
10
- // File open flags
11
- O_RDONLY: 0, // Open for reading only
12
- O_WRONLY: 1, // Open for writing only
13
- O_RDWR: 2, // Open for reading and writing
14
- O_CREAT: 64, // Create if doesn't exist
15
- O_EXCL: 128, // Fail if exists (with O_CREAT)
16
- O_TRUNC: 512, // Truncate to zero length
17
- O_APPEND: 1024, // Append mode
18
- O_SYNC: 4096, // Synchronous writes
19
- O_DIRECTORY: 65536, // Must be a directory
20
- O_NOFOLLOW: 131072, // Don't follow symlinks
21
- // File types (mode bits)
22
- S_IFMT: 0o170000, // File type mask
23
- S_IFREG: 0o100000, // Regular file
24
- S_IFDIR: 0o040000, // Directory
25
- S_IFLNK: 0o120000, // Symbolic link
26
- S_IFBLK: 0o060000, // Block device
27
- S_IFCHR: 0o020000, // Character device
28
- S_IFIFO: 0o010000, // FIFO (named pipe)
29
- S_IFSOCK: 0o140000, // Socket
30
- // File permission bits
31
- S_IRWXU: 0o700, // Owner: rwx
32
- S_IRUSR: 0o400, // Owner: read
33
- S_IWUSR: 0o200, // Owner: write
34
- S_IXUSR: 0o100, // Owner: execute
35
- S_IRWXG: 0o070, // Group: rwx
36
- S_IRGRP: 0o040, // Group: read
37
- S_IWGRP: 0o020, // Group: write
38
- S_IXGRP: 0o010, // Group: execute
39
- S_IRWXO: 0o007, // Others: rwx
40
- S_IROTH: 0o004, // Others: read
41
- S_IWOTH: 0o002, // Others: write
42
- S_IXOTH: 0o001, // Others: execute
43
- // Special bits
44
- S_ISUID: 0o4000, // Set user ID on execution
45
- S_ISGID: 0o2000, // Set group ID on execution
46
- S_ISVTX: 0o1000, // Sticky bit
47
- // Copy flags
48
- COPYFILE_EXCL: 1, // Fail if destination exists
49
- COPYFILE_FICLONE: 2, // Use copy-on-write if supported
50
- COPYFILE_FICLONE_FORCE: 4, // Require copy-on-write
51
- // Seek modes
52
- SEEK_SET: 0, // Absolute position
53
- SEEK_CUR: 1, // Relative to current position
54
- SEEK_END: 2, // Relative to end of file
55
- };
56
- // Mode Detection Helpers
57
- // These use bitwise AND with the file type mask to extract the file type,
58
- // then compare against the specific file type constant
59
- /**
60
- * Check if mode represents a regular file
61
- */
62
- export function isFile(mode) {
63
- return (mode & constants.S_IFMT) === constants.S_IFREG;
64
- }
65
- /**
66
- * Check if mode represents a directory
67
- */
68
- export function isDirectory(mode) {
69
- return (mode & constants.S_IFMT) === constants.S_IFDIR;
70
- }
71
- /**
72
- * Check if mode represents a symbolic link
73
- */
74
- export function isSymlink(mode) {
75
- return (mode & constants.S_IFMT) === constants.S_IFLNK;
76
- }
77
- /**
78
- * Check if mode represents a block device
79
- */
80
- export function isBlockDevice(mode) {
81
- return (mode & constants.S_IFMT) === constants.S_IFBLK;
82
- }
83
- /**
84
- * Check if mode represents a character device
85
- */
86
- export function isCharacterDevice(mode) {
87
- return (mode & constants.S_IFMT) === constants.S_IFCHR;
88
- }
89
- /**
90
- * Check if mode represents a FIFO (named pipe)
91
- */
92
- export function isFIFO(mode) {
93
- return (mode & constants.S_IFMT) === constants.S_IFIFO;
94
- }
95
- /**
96
- * Check if mode represents a socket
97
- */
98
- export function isSocket(mode) {
99
- return (mode & constants.S_IFMT) === constants.S_IFSOCK;
100
- }
101
- /**
102
- * Check if mode has read permission for the specified entity
103
- */
104
- export function hasReadPermission(mode, who) {
105
- switch (who) {
106
- case 'user':
107
- return (mode & constants.S_IRUSR) !== 0;
108
- case 'group':
109
- return (mode & constants.S_IRGRP) !== 0;
110
- case 'other':
111
- return (mode & constants.S_IROTH) !== 0;
112
- }
113
- }
114
- /**
115
- * Check if mode has write permission for the specified entity
116
- */
117
- export function hasWritePermission(mode, who) {
118
- switch (who) {
119
- case 'user':
120
- return (mode & constants.S_IWUSR) !== 0;
121
- case 'group':
122
- return (mode & constants.S_IWGRP) !== 0;
123
- case 'other':
124
- return (mode & constants.S_IWOTH) !== 0;
125
- }
126
- }
127
- /**
128
- * Check if mode has execute permission for the specified entity
129
- */
130
- export function hasExecutePermission(mode, who) {
131
- switch (who) {
132
- case 'user':
133
- return (mode & constants.S_IXUSR) !== 0;
134
- case 'group':
135
- return (mode & constants.S_IXGRP) !== 0;
136
- case 'other':
137
- return (mode & constants.S_IXOTH) !== 0;
138
- }
139
- }
140
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../primitives/fsx/core/constants.ts"],"names":[],"mappings":"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"}