@sandboxxjs/state 0.2.0 → 0.4.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.
package/dist/index.d.ts CHANGED
@@ -63,7 +63,7 @@ type StateLog = {
63
63
  clear(): StateLog
64
64
  }
65
65
  getEntries(): StateLogEntry[]
66
- toJSON(): string
66
+ toJSON(): StateLogEntry[]
67
67
  compact(): StateLog
68
68
  };
69
69
  interface StateLogEntry {
@@ -77,6 +77,8 @@ interface WithState {
77
77
  fs: FileSystem;
78
78
  env: Environment;
79
79
  storage: Storage;
80
+ /** Initialize async state operations (fs). Call after construction if initializeLog has fs ops. */
81
+ init(): Promise<void>;
80
82
  getStateLog?(): StateLog;
81
83
  }
82
84
  declare class StateFS implements FileSystem {
@@ -148,13 +150,14 @@ declare class StateLog2 {
148
150
  */
149
151
  getEntries(): StateLogEntry2[];
150
152
  /**
151
- * Serialize to JSON string
153
+ * Return entries array for JSON serialization
154
+ * Use JSON.stringify(log) or JSON.stringify(log.toJSON()) to get JSON string
152
155
  */
153
- toJSON(): string;
156
+ toJSON(): StateLogEntry2[];
154
157
  /**
155
- * Deserialize from JSON string (internal use)
158
+ * Deserialize from JSON string or array
156
159
  */
157
- static fromJSON(json: string): StateLog2;
160
+ static fromJSON(json: string | StateLogEntry2[]): StateLog2;
158
161
  /**
159
162
  * Create from entries array (internal use)
160
163
  */
@@ -169,13 +172,25 @@ declare class StateLog2 {
169
172
  */
170
173
  declare function buildStateLog(): StateLog2;
171
174
  /**
172
- * Load StateLog from JSON string
175
+ * Load StateLog from JSON string or entries array
173
176
  */
174
- declare function loadStateLog(json: string): StateLog2;
177
+ declare function loadStateLog(json: string | StateLogEntry2[]): StateLog2;
175
178
  /**
176
- * Replay StateLog operations to a target
179
+ * Replay StateLog operations to a target (async version)
180
+ * Use this when you can await the result
177
181
  */
178
182
  declare function replayStateLog(log: StateLog, target: WithState): Promise<void>;
183
+ /**
184
+ * Replay StateLog operations synchronously
185
+ * Only env and storage operations are executed (fs operations are async and skipped)
186
+ * Use this in constructors where await is not possible
187
+ */
188
+ declare function replayStateLogSync(log: StateLog, target: WithState): void;
189
+ /**
190
+ * Replay only fs operations from StateLog (async)
191
+ * Use this after constructor to complete fs initialization
192
+ */
193
+ declare function replayStateLogFs(log: StateLog, target: WithState): Promise<void>;
179
194
  interface CreateStateOptions {
180
195
  /** Sandbox instance for fs operations */
181
196
  sandbox: Sandbox;
@@ -243,4 +258,4 @@ declare class StateError extends Error {
243
258
  declare class FileSystemError extends StateError {
244
259
  constructor(message: string);
245
260
  }
246
- export { replayStateLog, loadStateLog, createStateStore, createStateAssets, createState, buildStateLog, WithState, Storage, StateStoreOptions, StateStore, StateStorage, StateResult, StateLogEntry, StateLog, StateFS, StateError, StateEnv, StateAssets, ShellResult, Sandbox, FileSystemError, FileSystem, Environment, CreateStateOptions, AssetsSandbox };
261
+ export { replayStateLogSync, replayStateLogFs, replayStateLog, loadStateLog, createStateStore, createStateAssets, createState, buildStateLog, WithState, Storage, StateStoreOptions, StateStore, StateStorage, StateResult, StateLogEntry, StateLog, StateFS, StateError, StateEnv, StateAssets, ShellResult, Sandbox, FileSystemError, FileSystem, Environment, CreateStateOptions, AssetsSandbox };
package/dist/index.js CHANGED
@@ -149,11 +149,11 @@ class StateLog {
149
149
  return [...this.entries];
150
150
  }
151
151
  toJSON() {
152
- return JSON.stringify(this.entries);
152
+ return [...this.entries];
153
153
  }
154
154
  static fromJSON(json) {
155
155
  const log = new StateLog;
156
- log.entries = JSON.parse(json);
156
+ log.entries = typeof json === "string" ? JSON.parse(json) : [...json];
157
157
  return log;
158
158
  }
159
159
  static fromEntries(entries) {
@@ -294,7 +294,23 @@ async function replayStateLog(log, target) {
294
294
  }
295
295
  }
296
296
  }
297
- // ../../node_modules/.bun/resourcexjs@0.4.0/node_modules/resourcexjs/dist/index.js
297
+ function replayStateLogSync(log, target) {
298
+ for (const entry of log.getEntries()) {
299
+ const config = opRegistry[entry.op];
300
+ if (config && config.namespace !== "fs") {
301
+ config.replay(target, entry.args);
302
+ }
303
+ }
304
+ }
305
+ async function replayStateLogFs(log, target) {
306
+ for (const entry of log.getEntries()) {
307
+ const config = opRegistry[entry.op];
308
+ if (config && config.namespace === "fs") {
309
+ await config.replay(target, entry.args);
310
+ }
311
+ }
312
+ }
313
+ // ../../node_modules/.bun/resourcexjs@0.5.0/node_modules/resourcexjs/dist/index.js
298
314
  import { readFile, writeFile, readdir, mkdir, rm, access, stat as fsStat } from "node:fs/promises";
299
315
  import { resolve, dirname } from "node:path";
300
316
  import { homedir } from "node:os";
@@ -495,14 +511,14 @@ class FileTransportHandler {
495
511
  }
496
512
  }
497
513
  var fileHandler = new FileTransportHandler;
498
- function deepracticeHandler(config = {}) {
514
+ function agentvmHandler(config = {}) {
499
515
  const parentDir = config.parentDir || homedir();
500
- const baseDir = join(parentDir, ".deepractice");
516
+ const baseDir = join(parentDir, ".agentvm");
501
517
  function resolvePath(location) {
502
518
  return join(baseDir, location);
503
519
  }
504
520
  return {
505
- name: "deepractice",
521
+ name: "agentvm",
506
522
  capabilities: {
507
523
  canRead: true,
508
524
  canWrite: true,
@@ -515,7 +531,7 @@ function deepracticeHandler(config = {}) {
515
531
  try {
516
532
  return await readFile2(fullPath);
517
533
  } catch (error) {
518
- throw new TransportError(`Failed to read from deepractice: ${error.message}`, "deepractice", { cause: error });
534
+ throw new TransportError(`Failed to read from agentvm: ${error.message}`, "agentvm", { cause: error });
519
535
  }
520
536
  },
521
537
  async write(location, content) {
@@ -524,7 +540,7 @@ function deepracticeHandler(config = {}) {
524
540
  await mkdir2(join(fullPath, ".."), { recursive: true });
525
541
  await writeFile2(fullPath, content);
526
542
  } catch (error) {
527
- throw new TransportError(`Failed to write to deepractice: ${error.message}`, "deepractice", { cause: error });
543
+ throw new TransportError(`Failed to write to agentvm: ${error.message}`, "agentvm", { cause: error });
528
544
  }
529
545
  },
530
546
  async list(location) {
@@ -532,7 +548,7 @@ function deepracticeHandler(config = {}) {
532
548
  try {
533
549
  return await readdir2(fullPath);
534
550
  } catch (error) {
535
- throw new TransportError(`Failed to list deepractice directory: ${error.message}`, "deepractice", { cause: error });
551
+ throw new TransportError(`Failed to list agentvm directory: ${error.message}`, "agentvm", { cause: error });
536
552
  }
537
553
  },
538
554
  async exists(location) {
@@ -554,7 +570,7 @@ function deepracticeHandler(config = {}) {
554
570
  modifiedAt: stats.mtime
555
571
  };
556
572
  } catch (error) {
557
- throw new TransportError(`Failed to stat deepractice resource: ${error.message}`, "deepractice", { cause: error });
573
+ throw new TransportError(`Failed to stat agentvm resource: ${error.message}`, "agentvm", { cause: error });
558
574
  }
559
575
  },
560
576
  async delete(location) {
@@ -567,7 +583,7 @@ function deepracticeHandler(config = {}) {
567
583
  await unlink(fullPath);
568
584
  }
569
585
  } catch (error) {
570
- throw new TransportError(`Failed to delete from deepractice: ${error.message}`, "deepractice", { cause: error });
586
+ throw new TransportError(`Failed to delete from agentvm: ${error.message}`, "agentvm", { cause: error });
571
587
  }
572
588
  }
573
589
  };
@@ -934,21 +950,21 @@ class ResourceXStateStore {
934
950
  basePath;
935
951
  constructor() {
936
952
  this.rx = createResourceX({
937
- transports: [deepracticeHandler()]
953
+ transports: [agentvmHandler()]
938
954
  });
939
955
  const os = __require("os");
940
956
  const path = __require("path");
941
- this.basePath = path.join(os.homedir(), ".deepractice/sandbox");
957
+ this.basePath = path.join(os.homedir(), ".agentvm/sandbox");
942
958
  }
943
959
  logUrl(key) {
944
- return `@text:deepractice://sandbox/state-logs/${key}.json`;
960
+ return `@text:agentvm://sandbox/state-logs/${key}.json`;
945
961
  }
946
962
  logPath(sandboxId) {
947
963
  const path = __require("path");
948
964
  return path.join(this.basePath, "state-logs", `${sandboxId}.jsonl`);
949
965
  }
950
966
  blobUrl(ref) {
951
- return `@binary:deepractice://sandbox/blobs/${ref}`;
967
+ return `@binary:agentvm://sandbox/blobs/${ref}`;
952
968
  }
953
969
  async saveLog(key, data) {
954
970
  await this.rx.deposit(this.logUrl(key), data);
@@ -1130,6 +1146,8 @@ function createStateAssets(options) {
1130
1146
  return new StateAssetsImpl(options);
1131
1147
  }
1132
1148
  export {
1149
+ replayStateLogSync,
1150
+ replayStateLogFs,
1133
1151
  replayStateLog,
1134
1152
  loadStateLog,
1135
1153
  createStateStore,
@@ -1143,4 +1161,4 @@ export {
1143
1161
  FileSystemError
1144
1162
  };
1145
1163
 
1146
- //# debugId=9F835BF9D56FCAFE64756E2164756E21
1164
+ //# debugId=5E286C3CA2485CD964756E2164756E21
package/dist/index.js.map CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/errors.ts", "../src/StateFS.ts", "../src/StateEnv.ts", "../src/StateStorage.ts", "../src/StateLog.ts", "../src/opRegistry.ts", "../src/replayStateLog.ts", "../../../node_modules/.bun/resourcexjs@0.4.0/node_modules/resourcexjs/dist/index.js", "../src/StateStore.ts", "../src/createState.ts", "../src/StateAssets.ts"],
3
+ "sources": ["../src/errors.ts", "../src/StateFS.ts", "../src/StateEnv.ts", "../src/StateStorage.ts", "../src/StateLog.ts", "../src/opRegistry.ts", "../src/replayStateLog.ts", "../../../node_modules/.bun/resourcexjs@0.5.0/node_modules/resourcexjs/dist/index.js", "../src/StateStore.ts", "../src/createState.ts", "../src/StateAssets.ts"],
4
4
  "sourcesContent": [
5
5
  "/**\n * Error types for @sandboxxjs/state\n */\n\nexport class StateError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"StateError\";\n }\n}\n\nexport class FileSystemError extends StateError {\n constructor(message: string) {\n super(message);\n this.name = \"FileSystemError\";\n }\n}\n",
6
6
  "/**\n * StateFS - File system state implementation\n * Operates on sandbox via shell commands\n */\n\nimport type { FileSystem, Sandbox } from \"./types.js\";\nimport { FileSystemError } from \"./errors.js\";\n\nexport class StateFS implements FileSystem {\n constructor(private sandbox: Sandbox) {}\n\n async read(path: string): Promise<string> {\n const result = await this.sandbox.shell(`cat \"${path}\"`);\n if (!result.success) {\n throw new FileSystemError(`Failed to read file: ${path}`);\n }\n return result.stdout;\n }\n\n async write(path: string, data: string): Promise<void> {\n // Ensure parent directory exists\n const dir = path.substring(0, path.lastIndexOf(\"/\"));\n if (dir) {\n await this.sandbox.shell(`mkdir -p \"${dir}\"`);\n }\n\n // Write file using heredoc\n const result = await this.sandbox.shell(\n `cat > \"${path}\" << 'SANDBOX_EOF'\\n${data}\\nSANDBOX_EOF`\n );\n if (!result.success) {\n throw new FileSystemError(`Failed to write file: ${path}`);\n }\n }\n\n async exists(path: string): Promise<boolean> {\n const result = await this.sandbox.shell(`test -e \"${path}\" && echo \"yes\" || echo \"no\"`);\n return result.stdout.trim() === \"yes\";\n }\n\n async delete(path: string): Promise<void> {\n await this.sandbox.shell(`rm -rf \"${path}\"`);\n }\n\n async list(path: string): Promise<string[]> {\n const result = await this.sandbox.shell(`ls -1 \"${path}\" 2>/dev/null`);\n if (!result.success || !result.stdout.trim()) {\n return [];\n }\n return result.stdout.trim().split(\"\\n\").filter(Boolean);\n }\n}\n",
7
7
  "/**\n * StateEnv - Environment variables state implementation\n * In-memory storage with controlled access\n */\n\nimport type { Environment } from \"./types.js\";\n\nexport class StateEnv implements Environment {\n private vars: Map<string, string>;\n\n constructor(initial?: Record<string, string>) {\n this.vars = new Map(Object.entries(initial ?? {}));\n }\n\n get(key: string): string | undefined {\n return this.vars.get(key);\n }\n\n set(key: string, value: string): void {\n this.vars.set(key, value);\n }\n\n has(key: string): boolean {\n return this.vars.has(key);\n }\n\n delete(key: string): void {\n this.vars.delete(key);\n }\n\n keys(): string[] {\n return [...this.vars.keys()];\n }\n\n all(): Record<string, string> {\n return Object.fromEntries(this.vars);\n }\n}\n",
8
8
  "/**\n * StateStorage - Key-value storage state implementation\n * In-memory storage (can be swapped for Redis/File backend later)\n */\n\nimport type { Storage } from \"./types.js\";\n\nexport class StateStorage implements Storage {\n private data: Map<string, string>;\n\n constructor(initial?: Record<string, string>) {\n this.data = new Map(Object.entries(initial ?? {}));\n }\n\n getItem(key: string): string | null {\n return this.data.get(key) ?? null;\n }\n\n setItem(key: string, value: string): void {\n this.data.set(key, value);\n }\n\n removeItem(key: string): void {\n this.data.delete(key);\n }\n\n clear(): void {\n this.data.clear();\n }\n\n keys(): string[] {\n return [...this.data.keys()];\n }\n}\n",
9
- "/**\n * StateLog - Records state operations for replay and persistence\n */\n\nexport interface StateLogEntry {\n op: string;\n args: Record<string, unknown>;\n}\n\nclass StateLog {\n private entries: StateLogEntry[] = [];\n\n /**\n * File system operations\n */\n fs = {\n write: (path: string, data: string): StateLog => {\n this.entries.push({ op: \"fs.write\", args: { path, data } });\n return this;\n },\n delete: (path: string): StateLog => {\n this.entries.push({ op: \"fs.delete\", args: { path } });\n return this;\n },\n };\n\n /**\n * Environment variable operations\n */\n env = {\n set: (key: string, value: string): StateLog => {\n this.entries.push({ op: \"env.set\", args: { key, value } });\n return this;\n },\n delete: (key: string): StateLog => {\n this.entries.push({ op: \"env.delete\", args: { key } });\n return this;\n },\n };\n\n /**\n * Storage operations\n */\n storage = {\n set: (key: string, value: string): StateLog => {\n this.entries.push({ op: \"storage.set\", args: { key, value } });\n return this;\n },\n delete: (key: string): StateLog => {\n this.entries.push({ op: \"storage.delete\", args: { key } });\n return this;\n },\n clear: (): StateLog => {\n this.entries.push({ op: \"storage.clear\", args: {} });\n return this;\n },\n };\n\n /**\n * Record a raw entry (used by recording proxy)\n * @internal\n */\n recordEntry(op: string, args: Record<string, unknown>): StateLog {\n this.entries.push({ op, args });\n return this;\n }\n\n /**\n * Get all entries\n */\n getEntries(): StateLogEntry[] {\n return [...this.entries];\n }\n\n /**\n * Serialize to JSON string\n */\n toJSON(): string {\n return JSON.stringify(this.entries);\n }\n\n /**\n * Deserialize from JSON string (internal use)\n */\n static fromJSON(json: string): StateLog {\n const log = new StateLog();\n log.entries = JSON.parse(json);\n return log;\n }\n\n /**\n * Create from entries array (internal use)\n */\n static fromEntries(entries: StateLogEntry[]): StateLog {\n const log = new StateLog();\n log.entries = [...entries];\n return log;\n }\n\n /**\n * Compact the log by merging redundant operations\n */\n compact(): StateLog {\n const fsState = new Map<string, StateLogEntry>();\n const envState = new Map<string, StateLogEntry>();\n const storageState = new Map<string, StateLogEntry>();\n let storageClear: StateLogEntry | null = null;\n\n for (const entry of this.entries) {\n const { op, args } = entry;\n\n if (op === \"fs.write\") {\n fsState.set(args.path as string, entry);\n } else if (op === \"fs.delete\") {\n fsState.set(args.path as string, entry);\n } else if (op === \"env.set\") {\n envState.set(args.key as string, entry);\n } else if (op === \"env.delete\") {\n envState.set(args.key as string, entry);\n } else if (op === \"storage.set\") {\n storageState.set(args.key as string, entry);\n } else if (op === \"storage.delete\") {\n storageState.set(args.key as string, entry);\n } else if (op === \"storage.clear\") {\n storageClear = entry;\n storageState.clear();\n }\n }\n\n // Rebuild entries in order: fs, env, storage\n const compactedEntries: StateLogEntry[] = [];\n for (const entry of fsState.values()) {\n compactedEntries.push(entry);\n }\n for (const entry of envState.values()) {\n compactedEntries.push(entry);\n }\n if (storageClear) {\n compactedEntries.push(storageClear);\n }\n for (const entry of storageState.values()) {\n compactedEntries.push(entry);\n }\n\n return StateLog.fromEntries(compactedEntries);\n }\n}\n\n/**\n * Build a new StateLog (functional API)\n */\nexport function buildStateLog(): StateLog {\n return new StateLog();\n}\n\n/**\n * Load StateLog from JSON string\n */\nexport function loadStateLog(json: string): StateLog {\n return StateLog.fromJSON(json);\n}\n",
9
+ "/**\n * StateLog - Records state operations for replay and persistence\n */\n\nexport interface StateLogEntry {\n op: string;\n args: Record<string, unknown>;\n}\n\nclass StateLog {\n private entries: StateLogEntry[] = [];\n\n /**\n * File system operations\n */\n fs = {\n write: (path: string, data: string): StateLog => {\n this.entries.push({ op: \"fs.write\", args: { path, data } });\n return this;\n },\n delete: (path: string): StateLog => {\n this.entries.push({ op: \"fs.delete\", args: { path } });\n return this;\n },\n };\n\n /**\n * Environment variable operations\n */\n env = {\n set: (key: string, value: string): StateLog => {\n this.entries.push({ op: \"env.set\", args: { key, value } });\n return this;\n },\n delete: (key: string): StateLog => {\n this.entries.push({ op: \"env.delete\", args: { key } });\n return this;\n },\n };\n\n /**\n * Storage operations\n */\n storage = {\n set: (key: string, value: string): StateLog => {\n this.entries.push({ op: \"storage.set\", args: { key, value } });\n return this;\n },\n delete: (key: string): StateLog => {\n this.entries.push({ op: \"storage.delete\", args: { key } });\n return this;\n },\n clear: (): StateLog => {\n this.entries.push({ op: \"storage.clear\", args: {} });\n return this;\n },\n };\n\n /**\n * Record a raw entry (used by recording proxy)\n * @internal\n */\n recordEntry(op: string, args: Record<string, unknown>): StateLog {\n this.entries.push({ op, args });\n return this;\n }\n\n /**\n * Get all entries\n */\n getEntries(): StateLogEntry[] {\n return [...this.entries];\n }\n\n /**\n * Return entries array for JSON serialization\n * Use JSON.stringify(log) or JSON.stringify(log.toJSON()) to get JSON string\n */\n toJSON(): StateLogEntry[] {\n return [...this.entries];\n }\n\n /**\n * Deserialize from JSON string or array\n */\n static fromJSON(json: string | StateLogEntry[]): StateLog {\n const log = new StateLog();\n log.entries = typeof json === \"string\" ? JSON.parse(json) : [...json];\n return log;\n }\n\n /**\n * Create from entries array (internal use)\n */\n static fromEntries(entries: StateLogEntry[]): StateLog {\n const log = new StateLog();\n log.entries = [...entries];\n return log;\n }\n\n /**\n * Compact the log by merging redundant operations\n */\n compact(): StateLog {\n const fsState = new Map<string, StateLogEntry>();\n const envState = new Map<string, StateLogEntry>();\n const storageState = new Map<string, StateLogEntry>();\n let storageClear: StateLogEntry | null = null;\n\n for (const entry of this.entries) {\n const { op, args } = entry;\n\n if (op === \"fs.write\") {\n fsState.set(args.path as string, entry);\n } else if (op === \"fs.delete\") {\n fsState.set(args.path as string, entry);\n } else if (op === \"env.set\") {\n envState.set(args.key as string, entry);\n } else if (op === \"env.delete\") {\n envState.set(args.key as string, entry);\n } else if (op === \"storage.set\") {\n storageState.set(args.key as string, entry);\n } else if (op === \"storage.delete\") {\n storageState.set(args.key as string, entry);\n } else if (op === \"storage.clear\") {\n storageClear = entry;\n storageState.clear();\n }\n }\n\n // Rebuild entries in order: fs, env, storage\n const compactedEntries: StateLogEntry[] = [];\n for (const entry of fsState.values()) {\n compactedEntries.push(entry);\n }\n for (const entry of envState.values()) {\n compactedEntries.push(entry);\n }\n if (storageClear) {\n compactedEntries.push(storageClear);\n }\n for (const entry of storageState.values()) {\n compactedEntries.push(entry);\n }\n\n return StateLog.fromEntries(compactedEntries);\n }\n}\n\n/**\n * Build a new StateLog (functional API)\n */\nexport function buildStateLog(): StateLog {\n return new StateLog();\n}\n\n/**\n * Load StateLog from JSON string or entries array\n */\nexport function loadStateLog(json: string | StateLogEntry[]): StateLog {\n return StateLog.fromJSON(json);\n}\n",
10
10
  "/**\n * Operation Registry - Single source of truth for all state operations\n *\n * This registry drives both replay and recording:\n * - replay: uses `replay` function to execute op on target\n * - record: uses `args` to map method parameters to StateLogEntry args\n */\n\nimport type { WithState } from \"./types.js\";\n\nexport interface OpConfig {\n /** Namespace: 'fs' | 'env' | 'storage' */\n namespace: \"fs\" | \"env\" | \"storage\";\n /** Actual method name on the interface */\n method: string;\n /** Parameter names for args mapping */\n args: string[];\n /** Replay function */\n replay: (target: WithState, args: Record<string, unknown>) => void | Promise<void>;\n}\n\n/**\n * All registered operations\n */\nexport const opRegistry: Record<string, OpConfig> = {\n // File system operations\n \"fs.write\": {\n namespace: \"fs\",\n method: \"write\",\n args: [\"path\", \"data\"],\n replay: async (target, args) => {\n await target.fs.write(args.path as string, args.data as string);\n },\n },\n \"fs.delete\": {\n namespace: \"fs\",\n method: \"delete\",\n args: [\"path\"],\n replay: async (target, args) => {\n await target.fs.delete(args.path as string);\n },\n },\n\n // Environment operations\n \"env.set\": {\n namespace: \"env\",\n method: \"set\",\n args: [\"key\", \"value\"],\n replay: (target, args) => {\n target.env.set(args.key as string, args.value as string);\n },\n },\n \"env.delete\": {\n namespace: \"env\",\n method: \"delete\",\n args: [\"key\"],\n replay: (target, args) => {\n target.env.delete(args.key as string);\n },\n },\n\n // Storage operations\n \"storage.set\": {\n namespace: \"storage\",\n method: \"setItem\",\n args: [\"key\", \"value\"],\n replay: (target, args) => {\n target.storage.setItem(args.key as string, args.value as string);\n },\n },\n \"storage.delete\": {\n namespace: \"storage\",\n method: \"removeItem\",\n args: [\"key\"],\n replay: (target, args) => {\n target.storage.removeItem(args.key as string);\n },\n },\n \"storage.clear\": {\n namespace: \"storage\",\n method: \"clear\",\n args: [],\n replay: (target) => {\n target.storage.clear();\n },\n },\n};\n\n/**\n * Find op by namespace and method name\n */\nexport function findOp(namespace: string, method: string): string | undefined {\n for (const [op, config] of Object.entries(opRegistry)) {\n if (config.namespace === namespace && config.method === method) {\n return op;\n }\n }\n return undefined;\n}\n\n/**\n * Convert method arguments to StateLogEntry args\n */\nexport function argsToEntry(op: string, methodArgs: unknown[]): Record<string, unknown> {\n const config = opRegistry[op];\n if (!config) return {};\n\n const entry: Record<string, unknown> = {};\n config.args.forEach((name, index) => {\n entry[name] = methodArgs[index];\n });\n return entry;\n}\n\n/**\n * Get all ops for a namespace\n */\nexport function getOpsForNamespace(namespace: string): string[] {\n return Object.entries(opRegistry)\n .filter(([_, config]) => config.namespace === namespace)\n .map(([op]) => op);\n}\n",
11
- "/**\n * Replay StateLog operations to a target\n */\n\nimport type { StateLog, WithState } from \"./types.js\";\nimport { opRegistry } from \"./opRegistry.js\";\n\n/**\n * Replay StateLog operations to a target\n */\nexport async function replayStateLog(log: StateLog, target: WithState): Promise<void> {\n for (const entry of log.getEntries()) {\n const config = opRegistry[entry.op];\n if (config) {\n await config.replay(target, entry.args);\n }\n }\n}\n",
12
- "// ../core/dist/index.js\nimport { readFile, writeFile, readdir, mkdir, rm, access, stat as fsStat } from \"node:fs/promises\";\nimport { resolve, dirname } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { readFile as readFile2, writeFile as writeFile2, readdir as readdir2, access as access2, unlink, mkdir as mkdir2, stat, rm as rm2 } from \"node:fs/promises\";\n\nclass ResourceXError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"ResourceXError\";\n }\n}\n\nclass ParseError extends ResourceXError {\n url;\n constructor(message, url) {\n super(message);\n this.url = url;\n this.name = \"ParseError\";\n }\n}\n\nclass TransportError extends ResourceXError {\n transport;\n constructor(message, transport, options) {\n super(message, options);\n this.transport = transport;\n this.name = \"TransportError\";\n }\n}\n\nclass SemanticError extends ResourceXError {\n semantic;\n constructor(message, semantic, options) {\n super(message, options);\n this.semantic = semantic;\n this.name = \"SemanticError\";\n }\n}\nfunction parseARP(url) {\n if (!url.startsWith(\"arp:\")) {\n throw new ParseError(`Invalid ARP URL: must start with \"arp:\"`, url);\n }\n const content = url.substring(4);\n const separatorIndex = content.indexOf(\"://\");\n if (separatorIndex === -1) {\n throw new ParseError(`Invalid ARP URL: missing \"://\"`, url);\n }\n const typePart = content.substring(0, separatorIndex);\n const location = content.substring(separatorIndex + 3);\n const colonIndex = typePart.indexOf(\":\");\n if (colonIndex === -1) {\n throw new ParseError(`Invalid ARP URL: must have exactly 2 types (semantic:transport)`, url);\n }\n const semantic = typePart.substring(0, colonIndex);\n const transport = typePart.substring(colonIndex + 1);\n if (!semantic) {\n throw new ParseError(`Invalid ARP URL: semantic type cannot be empty`, url);\n }\n if (!transport) {\n throw new ParseError(`Invalid ARP URL: transport type cannot be empty`, url);\n }\n if (!location) {\n throw new ParseError(`Invalid ARP URL: location cannot be empty`, url);\n }\n return { semantic, transport, location };\n}\n\nclass HttpTransportHandler {\n name;\n protocol;\n capabilities = {\n canRead: true,\n canWrite: false,\n canList: false,\n canDelete: false,\n canStat: false\n };\n constructor(protocol = \"https\") {\n this.protocol = protocol;\n this.name = protocol;\n }\n async read(location) {\n const url = `${this.protocol}://${location}`;\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new TransportError(`HTTP ${response.status}: ${response.statusText} - ${url}`, this.name);\n }\n const arrayBuffer = await response.arrayBuffer();\n return Buffer.from(arrayBuffer);\n } catch (error) {\n if (error instanceof TransportError) {\n throw error;\n }\n throw new TransportError(`Network error: ${url}`, this.name, {\n cause: error\n });\n }\n }\n}\nvar httpsHandler = new HttpTransportHandler(\"https\");\nvar httpHandler = new HttpTransportHandler(\"http\");\n\nclass FileTransportHandler {\n name = \"file\";\n capabilities = {\n canRead: true,\n canWrite: true,\n canList: true,\n canDelete: true,\n canStat: true\n };\n resolvePath(location) {\n return resolve(process.cwd(), location);\n }\n async read(location) {\n const filePath = this.resolvePath(location);\n try {\n return await readFile(filePath);\n } catch (error) {\n const err = error;\n throw new TransportError(`File read error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n async write(location, content) {\n const filePath = this.resolvePath(location);\n try {\n await mkdir(dirname(filePath), { recursive: true });\n await writeFile(filePath, content);\n } catch (error) {\n const err = error;\n throw new TransportError(`File write error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n async list(location) {\n const dirPath = this.resolvePath(location);\n try {\n return await readdir(dirPath);\n } catch (error) {\n const err = error;\n throw new TransportError(`Directory list error: ${err.code} - ${dirPath}`, this.name, {\n cause: err\n });\n }\n }\n async mkdir(location) {\n const dirPath = this.resolvePath(location);\n try {\n await mkdir(dirPath, { recursive: true });\n } catch (error) {\n const err = error;\n throw new TransportError(`Directory create error: ${err.code} - ${dirPath}`, this.name, {\n cause: err\n });\n }\n }\n async exists(location) {\n const filePath = this.resolvePath(location);\n try {\n await access(filePath);\n return true;\n } catch {\n return false;\n }\n }\n async stat(location) {\n const filePath = this.resolvePath(location);\n try {\n const stats = await fsStat(filePath);\n return {\n size: stats.size,\n modifiedAt: stats.mtime,\n isDirectory: stats.isDirectory()\n };\n } catch (error) {\n const err = error;\n throw new TransportError(`File stat error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n async delete(location) {\n const filePath = this.resolvePath(location);\n try {\n await rm(filePath, { recursive: true });\n } catch (error) {\n const err = error;\n throw new TransportError(`File delete error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n}\nvar fileHandler = new FileTransportHandler;\nfunction deepracticeHandler(config = {}) {\n const parentDir = config.parentDir || homedir();\n const baseDir = join(parentDir, \".deepractice\");\n function resolvePath(location) {\n return join(baseDir, location);\n }\n return {\n name: \"deepractice\",\n capabilities: {\n canRead: true,\n canWrite: true,\n canList: true,\n canDelete: true,\n canStat: true\n },\n async read(location) {\n const fullPath = resolvePath(location);\n try {\n return await readFile2(fullPath);\n } catch (error) {\n throw new TransportError(`Failed to read from deepractice: ${error.message}`, \"deepractice\", { cause: error });\n }\n },\n async write(location, content) {\n const fullPath = resolvePath(location);\n try {\n await mkdir2(join(fullPath, \"..\"), { recursive: true });\n await writeFile2(fullPath, content);\n } catch (error) {\n throw new TransportError(`Failed to write to deepractice: ${error.message}`, \"deepractice\", { cause: error });\n }\n },\n async list(location) {\n const fullPath = resolvePath(location);\n try {\n return await readdir2(fullPath);\n } catch (error) {\n throw new TransportError(`Failed to list deepractice directory: ${error.message}`, \"deepractice\", { cause: error });\n }\n },\n async exists(location) {\n const fullPath = resolvePath(location);\n try {\n await access2(fullPath);\n return true;\n } catch {\n return false;\n }\n },\n async stat(location) {\n const fullPath = resolvePath(location);\n try {\n const stats = await stat(fullPath);\n return {\n size: stats.size,\n isDirectory: stats.isDirectory(),\n modifiedAt: stats.mtime\n };\n } catch (error) {\n throw new TransportError(`Failed to stat deepractice resource: ${error.message}`, \"deepractice\", { cause: error });\n }\n },\n async delete(location) {\n const fullPath = resolvePath(location);\n try {\n const stats = await stat(fullPath);\n if (stats.isDirectory()) {\n await rm2(fullPath, { recursive: true, force: true });\n } else {\n await unlink(fullPath);\n }\n } catch (error) {\n throw new TransportError(`Failed to delete from deepractice: ${error.message}`, \"deepractice\", { cause: error });\n }\n }\n };\n}\nvar handlers = new Map([\n [\"https\", httpsHandler],\n [\"http\", httpHandler],\n [\"file\", fileHandler]\n]);\nfunction getTransportHandler(name) {\n const handler = handlers.get(name);\n if (!handler) {\n throw new TransportError(`Unsupported transport type: ${name}`, name);\n }\n return handler;\n}\nfunction registerTransportHandler(handler) {\n handlers.set(handler.name, handler);\n}\n\nclass TextSemanticHandler {\n name = \"text\";\n async resolve(transport, location, context) {\n const buffer = await transport.read(location);\n const text = buffer.toString(\"utf-8\");\n const meta = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: buffer.length,\n encoding: \"utf-8\",\n mimeType: \"text/plain\",\n resolvedAt: context.timestamp.toISOString()\n };\n return {\n type: \"text\",\n content: text,\n meta\n };\n }\n async deposit(transport, location, data, _context) {\n if (!transport.write) {\n throw new SemanticError(`Transport \"${transport.name}\" does not support write operation`, this.name);\n }\n const buffer = Buffer.from(data, \"utf-8\");\n await transport.write(location, buffer);\n }\n async exists(transport, location, _context) {\n if (transport.exists) {\n return transport.exists(location);\n }\n try {\n await transport.read(location);\n return true;\n } catch {\n return false;\n }\n }\n async delete(transport, location, _context) {\n if (!transport.delete) {\n throw new SemanticError(`Transport \"${transport.name}\" does not support delete operation`, this.name);\n }\n await transport.delete(location);\n }\n}\nvar textHandler = new TextSemanticHandler;\nfunction toBuffer(data) {\n if (Buffer.isBuffer(data)) {\n return data;\n }\n if (data instanceof Uint8Array) {\n return Buffer.from(data);\n }\n if (data instanceof ArrayBuffer) {\n return Buffer.from(data);\n }\n if (Array.isArray(data)) {\n return Buffer.from(data);\n }\n throw new SemanticError(`Unsupported binary input type`, \"binary\");\n}\n\nclass BinarySemanticHandler {\n name = \"binary\";\n async resolve(transport, location, context) {\n const buffer = await transport.read(location);\n const meta = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: buffer.length,\n resolvedAt: context.timestamp.toISOString()\n };\n return {\n type: \"binary\",\n content: buffer,\n meta\n };\n }\n async deposit(transport, location, data, _context) {\n if (!transport.write) {\n throw new SemanticError(`Transport \"${transport.name}\" does not support write operation`, this.name);\n }\n const buffer = toBuffer(data);\n await transport.write(location, buffer);\n }\n async exists(transport, location, _context) {\n if (transport.exists) {\n return transport.exists(location);\n }\n try {\n await transport.read(location);\n return true;\n } catch {\n return false;\n }\n }\n async delete(transport, location, _context) {\n if (!transport.delete) {\n throw new SemanticError(`Transport \"${transport.name}\" does not support delete operation`, this.name);\n }\n await transport.delete(location);\n }\n}\nvar binaryHandler = new BinarySemanticHandler;\nvar handlers2 = new Map([\n [\"text\", textHandler],\n [\"binary\", binaryHandler]\n]);\nfunction getSemanticHandler(name) {\n const handler = handlers2.get(name);\n if (!handler) {\n throw new SemanticError(`Unsupported semantic type: ${name}`, name);\n }\n return handler;\n}\nfunction registerSemanticHandler(handler) {\n handlers2.set(handler.name, handler);\n}\nfunction createContext(url, semantic, transport, location) {\n return {\n url,\n semantic,\n transport,\n location,\n timestamp: new Date\n };\n}\nasync function resolve2(url) {\n const parsed = parseARP(url);\n const transport = getTransportHandler(parsed.transport);\n const semantic = getSemanticHandler(parsed.semantic);\n const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);\n return semantic.resolve(transport, parsed.location, context);\n}\nasync function deposit(url, data) {\n const parsed = parseARP(url);\n const transport = getTransportHandler(parsed.transport);\n const semantic = getSemanticHandler(parsed.semantic);\n if (!semantic.deposit) {\n throw new SemanticError(`Semantic \"${semantic.name}\" does not support deposit operation`, parsed.semantic);\n }\n const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);\n await semantic.deposit(transport, parsed.location, data, context);\n}\nasync function resourceExists(url) {\n const parsed = parseARP(url);\n const transport = getTransportHandler(parsed.transport);\n const semantic = getSemanticHandler(parsed.semantic);\n const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);\n if (semantic.exists) {\n return semantic.exists(transport, parsed.location, context);\n }\n if (transport.exists) {\n return transport.exists(parsed.location);\n }\n try {\n await transport.read(parsed.location);\n return true;\n } catch {\n return false;\n }\n}\nasync function resourceDelete(url) {\n const parsed = parseARP(url);\n const transport = getTransportHandler(parsed.transport);\n const semantic = getSemanticHandler(parsed.semantic);\n const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);\n if (semantic.delete) {\n return semantic.delete(transport, parsed.location, context);\n }\n if (!transport.delete) {\n throw new SemanticError(`Neither semantic \"${semantic.name}\" nor transport \"${transport.name}\" supports delete operation`, parsed.semantic);\n }\n await transport.delete(parsed.location);\n}\nfunction createResourceRegistry() {\n const registry = new Map;\n return {\n register(definition) {\n if (!/^[a-z][a-z0-9-]*$/.test(definition.name)) {\n throw new ParseError(`Invalid resource name: \"${definition.name}\". Must start with lowercase letter and contain only lowercase letters, numbers, and hyphens.`, definition.name);\n }\n getSemanticHandler(definition.semantic);\n getTransportHandler(definition.transport);\n registry.set(definition.name, definition);\n },\n get(name) {\n return registry.get(name);\n },\n has(name) {\n return registry.has(name);\n },\n clear() {\n registry.clear();\n }\n };\n}\n\n// src/ResourceX.ts\nimport { join as join2 } from \"node:path\";\n\nclass ResourceX {\n timeout;\n alias;\n resourceRegistry;\n constructor(config = {}) {\n this.timeout = config.timeout;\n this.alias = config.alias || \"@\";\n this.resourceRegistry = createResourceRegistry();\n if (config.transports) {\n for (const handler of config.transports) {\n registerTransportHandler(handler);\n }\n }\n if (config.semantics) {\n for (const handler of config.semantics) {\n registerSemanticHandler(handler);\n }\n }\n if (config.resources) {\n for (const resource of config.resources) {\n this.resourceRegistry.register(resource);\n }\n }\n }\n parseURL(url) {\n let content;\n if (url.startsWith(\"arp:\")) {\n content = url.substring(4);\n } else if (url.startsWith(this.alias)) {\n content = url.substring(this.alias.length);\n } else {\n throw new ParseError(`Invalid URL prefix: must start with \"arp:\" or \"${this.alias}\"`, url);\n }\n const separatorIndex = content.indexOf(\"://\");\n if (separatorIndex === -1) {\n throw new ParseError(`Invalid URL format: missing \"://\"`, url);\n }\n const beforeSeparator = content.substring(0, separatorIndex);\n const location = content.substring(separatorIndex + 3);\n const colonCount = (beforeSeparator.match(/:/g) || []).length;\n if (colonCount === 1) {\n const parts = beforeSeparator.split(\":\");\n if (parts.length !== 2) {\n throw new ParseError(`Invalid ARP URL format`, url);\n }\n const [semantic, transport] = parts;\n if (!semantic || !transport || !location) {\n throw new ParseError(`Invalid ARP URL: semantic, transport, and location are required`, url);\n }\n const arpUrl = `arp:${semantic}:${transport}://${location}`;\n return {\n arpUrl,\n parsed: { semantic, transport, location }\n };\n }\n if (colonCount === 0) {\n const name = beforeSeparator;\n if (!name || !location) {\n throw new ParseError(`Invalid Resource URL: name and location are required`, url);\n }\n const definition = this.resourceRegistry.get(name);\n if (!definition) {\n throw new ParseError(`Unknown resource: \"${name}\"`, url);\n }\n const fullLocation = definition.basePath ? join2(definition.basePath, location) : location;\n const arpUrl = `arp:${definition.semantic}:${definition.transport}://${fullLocation}`;\n return {\n arpUrl,\n parsed: {\n semantic: definition.semantic,\n transport: definition.transport,\n location: fullLocation\n }\n };\n }\n throw new ParseError(`Invalid URL format: unexpected colon count in \"${beforeSeparator}\"`, url);\n }\n parse(url) {\n return this.parseURL(url).parsed;\n }\n async resolve(url) {\n const { arpUrl } = this.parseURL(url);\n return resolve2(arpUrl);\n }\n async deposit(url, data) {\n const { arpUrl } = this.parseURL(url);\n return deposit(arpUrl, data);\n }\n async exists(url) {\n const { arpUrl } = this.parseURL(url);\n return resourceExists(arpUrl);\n }\n async delete(url) {\n const { arpUrl } = this.parseURL(url);\n return resourceDelete(arpUrl);\n }\n}\n\n// src/createResourceX.ts\nfunction createResourceX(config) {\n return new ResourceX(config);\n}\nexport {\n deepracticeHandler,\n createResourceX,\n TransportError,\n SemanticError,\n ResourceXError,\n ResourceX,\n ParseError\n};\n\n//# debugId=AABACCD8A9EFB8D164756E2164756E21\n",
13
- "/**\n * StateStore - Persistence for StateLog and Blobs\n */\n\nimport { createResourceX, deepracticeHandler, type ResourceX } from \"resourcexjs\";\nimport type { StateLogEntry } from \"./types.js\";\n\nexport interface StateStore {\n // Log operations\n saveLog(key: string, data: string): Promise<void>;\n loadLog(key: string): Promise<string | null>;\n deleteLog(key: string): Promise<void>;\n listLogs(): Promise<string[]>;\n\n // Blob operations\n saveBlob(ref: string, data: Buffer): Promise<void>;\n loadBlob(ref: string): Promise<Buffer | null>;\n deleteBlob(ref: string): Promise<void>;\n\n // AOF operations\n appendEntry(sandboxId: string, entry: StateLogEntry): Promise<void>;\n}\n\nexport interface StateStoreOptions {\n type: \"memory\" | \"resourcex\";\n}\n\n/**\n * Memory implementation for testing\n */\nclass MemoryStateStore implements StateStore {\n private logs = new Map<string, string>();\n private blobs = new Map<string, Buffer>();\n private entries = new Map<string, StateLogEntry[]>();\n\n async saveLog(key: string, data: string): Promise<void> {\n this.logs.set(key, data);\n }\n\n async loadLog(key: string): Promise<string | null> {\n // Check if we have entries (JSON Lines)\n const entries = this.entries.get(key);\n if (entries && entries.length > 0) {\n return JSON.stringify(entries);\n }\n // Fallback to logs (JSON array)\n return this.logs.get(key) ?? null;\n }\n\n async deleteLog(key: string): Promise<void> {\n this.logs.delete(key);\n this.entries.delete(key);\n }\n\n async listLogs(): Promise<string[]> {\n const keys = new Set([...this.logs.keys(), ...this.entries.keys()]);\n return [...keys];\n }\n\n async saveBlob(ref: string, data: Buffer): Promise<void> {\n this.blobs.set(ref, data);\n }\n\n async loadBlob(ref: string): Promise<Buffer | null> {\n return this.blobs.get(ref) ?? null;\n }\n\n async deleteBlob(ref: string): Promise<void> {\n this.blobs.delete(ref);\n }\n\n async appendEntry(sandboxId: string, entry: StateLogEntry): Promise<void> {\n const entries = this.entries.get(sandboxId) ?? [];\n entries.push(entry);\n this.entries.set(sandboxId, entries);\n }\n}\n\n/**\n * ResourceX implementation for production\n * Uses deepractice:// transport → ~/.deepractice/sandbox/\n */\nclass ResourceXStateStore implements StateStore {\n private rx: ResourceX;\n private basePath: string;\n\n constructor() {\n this.rx = createResourceX({\n transports: [deepracticeHandler()],\n });\n // Get base path from home directory\n const os = require(\"os\");\n const path = require(\"path\");\n this.basePath = path.join(os.homedir(), \".deepractice/sandbox\");\n }\n\n private logUrl(key: string): string {\n return `@text:deepractice://sandbox/state-logs/${key}.json`;\n }\n\n private logPath(sandboxId: string): string {\n const path = require(\"path\");\n return path.join(this.basePath, \"state-logs\", `${sandboxId}.jsonl`);\n }\n\n private blobUrl(ref: string): string {\n return `@binary:deepractice://sandbox/blobs/${ref}`;\n }\n\n async saveLog(key: string, data: string): Promise<void> {\n await this.rx.deposit(this.logUrl(key), data);\n }\n\n async loadLog(key: string): Promise<string | null> {\n const fs = require(\"fs/promises\");\n\n // Try loading from JSON Lines file first\n const jsonlPath = this.logPath(key);\n try {\n const content = await fs.readFile(jsonlPath, \"utf-8\");\n // JSON Lines → JSON Array\n const entries = content\n .trim()\n .split(\"\\n\")\n .filter((line: string) => line)\n .map((line: string) => JSON.parse(line));\n return JSON.stringify(entries);\n } catch {\n // Fallback to ResourceX (old JSON format)\n try {\n const exists = await this.rx.exists(this.logUrl(key));\n if (!exists) return null;\n const resource = await this.rx.resolve(this.logUrl(key));\n return resource.content as string;\n } catch {\n return null;\n }\n }\n }\n\n async deleteLog(key: string): Promise<void> {\n const fs = require(\"fs/promises\");\n\n // Delete JSON Lines file\n try {\n await fs.unlink(this.logPath(key));\n } catch {\n // Ignore\n }\n\n // Delete old JSON file\n try {\n const exists = await this.rx.exists(this.logUrl(key));\n if (exists) {\n await this.rx.delete(this.logUrl(key));\n }\n } catch {\n // Ignore errors\n }\n }\n\n async listLogs(): Promise<string[]> {\n // TODO: Implement when ResourceX supports list\n return [];\n }\n\n async appendEntry(sandboxId: string, entry: StateLogEntry): Promise<void> {\n const fs = require(\"fs/promises\");\n const path = require(\"path\");\n\n const filePath = this.logPath(sandboxId);\n\n // Ensure directory exists\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n\n // Append one line of JSON (true AOF)\n const line = JSON.stringify(entry) + \"\\n\";\n await fs.appendFile(filePath, line, \"utf-8\");\n }\n\n async saveBlob(ref: string, data: Buffer): Promise<void> {\n await this.rx.deposit(this.blobUrl(ref), data);\n }\n\n async loadBlob(ref: string): Promise<Buffer | null> {\n try {\n const exists = await this.rx.exists(this.blobUrl(ref));\n if (!exists) return null;\n const resource = await this.rx.resolve(this.blobUrl(ref));\n return resource.content as Buffer;\n } catch {\n return null;\n }\n }\n\n async deleteBlob(ref: string): Promise<void> {\n try {\n const exists = await this.rx.exists(this.blobUrl(ref));\n if (exists) {\n await this.rx.delete(this.blobUrl(ref));\n }\n } catch {\n // Ignore errors\n }\n }\n}\n\n/**\n * Create a StateStore instance\n */\nexport function createStateStore(options: StateStoreOptions): StateStore {\n if (options.type === \"memory\") {\n return new MemoryStateStore();\n }\n\n if (options.type === \"resourcex\") {\n return new ResourceXStateStore();\n }\n\n throw new Error(`StateStore type \"${options.type}\" not implemented`);\n}\n",
11
+ "/**\n * Replay StateLog operations to a target\n */\n\nimport type { StateLog, WithState } from \"./types.js\";\nimport { opRegistry } from \"./opRegistry.js\";\n\n/**\n * Replay StateLog operations to a target (async version)\n * Use this when you can await the result\n */\nexport async function replayStateLog(log: StateLog, target: WithState): Promise<void> {\n for (const entry of log.getEntries()) {\n const config = opRegistry[entry.op];\n if (config) {\n await config.replay(target, entry.args);\n }\n }\n}\n\n/**\n * Replay StateLog operations synchronously\n * Only env and storage operations are executed (fs operations are async and skipped)\n * Use this in constructors where await is not possible\n */\nexport function replayStateLogSync(log: StateLog, target: WithState): void {\n for (const entry of log.getEntries()) {\n const config = opRegistry[entry.op];\n if (config && config.namespace !== \"fs\") {\n // env and storage replays are synchronous\n config.replay(target, entry.args);\n }\n }\n}\n\n/**\n * Replay only fs operations from StateLog (async)\n * Use this after constructor to complete fs initialization\n */\nexport async function replayStateLogFs(log: StateLog, target: WithState): Promise<void> {\n for (const entry of log.getEntries()) {\n const config = opRegistry[entry.op];\n if (config && config.namespace === \"fs\") {\n await config.replay(target, entry.args);\n }\n }\n}\n",
12
+ "// ../core/dist/index.js\nimport { readFile, writeFile, readdir, mkdir, rm, access, stat as fsStat } from \"node:fs/promises\";\nimport { resolve, dirname } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { readFile as readFile2, writeFile as writeFile2, readdir as readdir2, access as access2, unlink, mkdir as mkdir2, stat, rm as rm2 } from \"node:fs/promises\";\n\nclass ResourceXError extends Error {\n constructor(message, options) {\n super(message, options);\n this.name = \"ResourceXError\";\n }\n}\n\nclass ParseError extends ResourceXError {\n url;\n constructor(message, url) {\n super(message);\n this.url = url;\n this.name = \"ParseError\";\n }\n}\n\nclass TransportError extends ResourceXError {\n transport;\n constructor(message, transport, options) {\n super(message, options);\n this.transport = transport;\n this.name = \"TransportError\";\n }\n}\n\nclass SemanticError extends ResourceXError {\n semantic;\n constructor(message, semantic, options) {\n super(message, options);\n this.semantic = semantic;\n this.name = \"SemanticError\";\n }\n}\nfunction parseARP(url) {\n if (!url.startsWith(\"arp:\")) {\n throw new ParseError(`Invalid ARP URL: must start with \"arp:\"`, url);\n }\n const content = url.substring(4);\n const separatorIndex = content.indexOf(\"://\");\n if (separatorIndex === -1) {\n throw new ParseError(`Invalid ARP URL: missing \"://\"`, url);\n }\n const typePart = content.substring(0, separatorIndex);\n const location = content.substring(separatorIndex + 3);\n const colonIndex = typePart.indexOf(\":\");\n if (colonIndex === -1) {\n throw new ParseError(`Invalid ARP URL: must have exactly 2 types (semantic:transport)`, url);\n }\n const semantic = typePart.substring(0, colonIndex);\n const transport = typePart.substring(colonIndex + 1);\n if (!semantic) {\n throw new ParseError(`Invalid ARP URL: semantic type cannot be empty`, url);\n }\n if (!transport) {\n throw new ParseError(`Invalid ARP URL: transport type cannot be empty`, url);\n }\n if (!location) {\n throw new ParseError(`Invalid ARP URL: location cannot be empty`, url);\n }\n return { semantic, transport, location };\n}\n\nclass HttpTransportHandler {\n name;\n protocol;\n capabilities = {\n canRead: true,\n canWrite: false,\n canList: false,\n canDelete: false,\n canStat: false\n };\n constructor(protocol = \"https\") {\n this.protocol = protocol;\n this.name = protocol;\n }\n async read(location) {\n const url = `${this.protocol}://${location}`;\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new TransportError(`HTTP ${response.status}: ${response.statusText} - ${url}`, this.name);\n }\n const arrayBuffer = await response.arrayBuffer();\n return Buffer.from(arrayBuffer);\n } catch (error) {\n if (error instanceof TransportError) {\n throw error;\n }\n throw new TransportError(`Network error: ${url}`, this.name, {\n cause: error\n });\n }\n }\n}\nvar httpsHandler = new HttpTransportHandler(\"https\");\nvar httpHandler = new HttpTransportHandler(\"http\");\n\nclass FileTransportHandler {\n name = \"file\";\n capabilities = {\n canRead: true,\n canWrite: true,\n canList: true,\n canDelete: true,\n canStat: true\n };\n resolvePath(location) {\n return resolve(process.cwd(), location);\n }\n async read(location) {\n const filePath = this.resolvePath(location);\n try {\n return await readFile(filePath);\n } catch (error) {\n const err = error;\n throw new TransportError(`File read error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n async write(location, content) {\n const filePath = this.resolvePath(location);\n try {\n await mkdir(dirname(filePath), { recursive: true });\n await writeFile(filePath, content);\n } catch (error) {\n const err = error;\n throw new TransportError(`File write error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n async list(location) {\n const dirPath = this.resolvePath(location);\n try {\n return await readdir(dirPath);\n } catch (error) {\n const err = error;\n throw new TransportError(`Directory list error: ${err.code} - ${dirPath}`, this.name, {\n cause: err\n });\n }\n }\n async mkdir(location) {\n const dirPath = this.resolvePath(location);\n try {\n await mkdir(dirPath, { recursive: true });\n } catch (error) {\n const err = error;\n throw new TransportError(`Directory create error: ${err.code} - ${dirPath}`, this.name, {\n cause: err\n });\n }\n }\n async exists(location) {\n const filePath = this.resolvePath(location);\n try {\n await access(filePath);\n return true;\n } catch {\n return false;\n }\n }\n async stat(location) {\n const filePath = this.resolvePath(location);\n try {\n const stats = await fsStat(filePath);\n return {\n size: stats.size,\n modifiedAt: stats.mtime,\n isDirectory: stats.isDirectory()\n };\n } catch (error) {\n const err = error;\n throw new TransportError(`File stat error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n async delete(location) {\n const filePath = this.resolvePath(location);\n try {\n await rm(filePath, { recursive: true });\n } catch (error) {\n const err = error;\n throw new TransportError(`File delete error: ${err.code} - ${filePath}`, this.name, {\n cause: err\n });\n }\n }\n}\nvar fileHandler = new FileTransportHandler;\nfunction agentvmHandler(config = {}) {\n const parentDir = config.parentDir || homedir();\n const baseDir = join(parentDir, \".agentvm\");\n function resolvePath(location) {\n return join(baseDir, location);\n }\n return {\n name: \"agentvm\",\n capabilities: {\n canRead: true,\n canWrite: true,\n canList: true,\n canDelete: true,\n canStat: true\n },\n async read(location) {\n const fullPath = resolvePath(location);\n try {\n return await readFile2(fullPath);\n } catch (error) {\n throw new TransportError(`Failed to read from agentvm: ${error.message}`, \"agentvm\", { cause: error });\n }\n },\n async write(location, content) {\n const fullPath = resolvePath(location);\n try {\n await mkdir2(join(fullPath, \"..\"), { recursive: true });\n await writeFile2(fullPath, content);\n } catch (error) {\n throw new TransportError(`Failed to write to agentvm: ${error.message}`, \"agentvm\", { cause: error });\n }\n },\n async list(location) {\n const fullPath = resolvePath(location);\n try {\n return await readdir2(fullPath);\n } catch (error) {\n throw new TransportError(`Failed to list agentvm directory: ${error.message}`, \"agentvm\", { cause: error });\n }\n },\n async exists(location) {\n const fullPath = resolvePath(location);\n try {\n await access2(fullPath);\n return true;\n } catch {\n return false;\n }\n },\n async stat(location) {\n const fullPath = resolvePath(location);\n try {\n const stats = await stat(fullPath);\n return {\n size: stats.size,\n isDirectory: stats.isDirectory(),\n modifiedAt: stats.mtime\n };\n } catch (error) {\n throw new TransportError(`Failed to stat agentvm resource: ${error.message}`, \"agentvm\", { cause: error });\n }\n },\n async delete(location) {\n const fullPath = resolvePath(location);\n try {\n const stats = await stat(fullPath);\n if (stats.isDirectory()) {\n await rm2(fullPath, { recursive: true, force: true });\n } else {\n await unlink(fullPath);\n }\n } catch (error) {\n throw new TransportError(`Failed to delete from agentvm: ${error.message}`, \"agentvm\", { cause: error });\n }\n }\n };\n}\nvar handlers = new Map([\n [\"https\", httpsHandler],\n [\"http\", httpHandler],\n [\"file\", fileHandler]\n]);\nfunction getTransportHandler(name) {\n const handler = handlers.get(name);\n if (!handler) {\n throw new TransportError(`Unsupported transport type: ${name}`, name);\n }\n return handler;\n}\nfunction registerTransportHandler(handler) {\n handlers.set(handler.name, handler);\n}\n\nclass TextSemanticHandler {\n name = \"text\";\n async resolve(transport, location, context) {\n const buffer = await transport.read(location);\n const text = buffer.toString(\"utf-8\");\n const meta = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: buffer.length,\n encoding: \"utf-8\",\n mimeType: \"text/plain\",\n resolvedAt: context.timestamp.toISOString()\n };\n return {\n type: \"text\",\n content: text,\n meta\n };\n }\n async deposit(transport, location, data, _context) {\n if (!transport.write) {\n throw new SemanticError(`Transport \"${transport.name}\" does not support write operation`, this.name);\n }\n const buffer = Buffer.from(data, \"utf-8\");\n await transport.write(location, buffer);\n }\n async exists(transport, location, _context) {\n if (transport.exists) {\n return transport.exists(location);\n }\n try {\n await transport.read(location);\n return true;\n } catch {\n return false;\n }\n }\n async delete(transport, location, _context) {\n if (!transport.delete) {\n throw new SemanticError(`Transport \"${transport.name}\" does not support delete operation`, this.name);\n }\n await transport.delete(location);\n }\n}\nvar textHandler = new TextSemanticHandler;\nfunction toBuffer(data) {\n if (Buffer.isBuffer(data)) {\n return data;\n }\n if (data instanceof Uint8Array) {\n return Buffer.from(data);\n }\n if (data instanceof ArrayBuffer) {\n return Buffer.from(data);\n }\n if (Array.isArray(data)) {\n return Buffer.from(data);\n }\n throw new SemanticError(`Unsupported binary input type`, \"binary\");\n}\n\nclass BinarySemanticHandler {\n name = \"binary\";\n async resolve(transport, location, context) {\n const buffer = await transport.read(location);\n const meta = {\n url: context.url,\n semantic: context.semantic,\n transport: context.transport,\n location: context.location,\n size: buffer.length,\n resolvedAt: context.timestamp.toISOString()\n };\n return {\n type: \"binary\",\n content: buffer,\n meta\n };\n }\n async deposit(transport, location, data, _context) {\n if (!transport.write) {\n throw new SemanticError(`Transport \"${transport.name}\" does not support write operation`, this.name);\n }\n const buffer = toBuffer(data);\n await transport.write(location, buffer);\n }\n async exists(transport, location, _context) {\n if (transport.exists) {\n return transport.exists(location);\n }\n try {\n await transport.read(location);\n return true;\n } catch {\n return false;\n }\n }\n async delete(transport, location, _context) {\n if (!transport.delete) {\n throw new SemanticError(`Transport \"${transport.name}\" does not support delete operation`, this.name);\n }\n await transport.delete(location);\n }\n}\nvar binaryHandler = new BinarySemanticHandler;\nvar handlers2 = new Map([\n [\"text\", textHandler],\n [\"binary\", binaryHandler]\n]);\nfunction getSemanticHandler(name) {\n const handler = handlers2.get(name);\n if (!handler) {\n throw new SemanticError(`Unsupported semantic type: ${name}`, name);\n }\n return handler;\n}\nfunction registerSemanticHandler(handler) {\n handlers2.set(handler.name, handler);\n}\nfunction createContext(url, semantic, transport, location) {\n return {\n url,\n semantic,\n transport,\n location,\n timestamp: new Date\n };\n}\nasync function resolve2(url) {\n const parsed = parseARP(url);\n const transport = getTransportHandler(parsed.transport);\n const semantic = getSemanticHandler(parsed.semantic);\n const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);\n return semantic.resolve(transport, parsed.location, context);\n}\nasync function deposit(url, data) {\n const parsed = parseARP(url);\n const transport = getTransportHandler(parsed.transport);\n const semantic = getSemanticHandler(parsed.semantic);\n if (!semantic.deposit) {\n throw new SemanticError(`Semantic \"${semantic.name}\" does not support deposit operation`, parsed.semantic);\n }\n const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);\n await semantic.deposit(transport, parsed.location, data, context);\n}\nasync function resourceExists(url) {\n const parsed = parseARP(url);\n const transport = getTransportHandler(parsed.transport);\n const semantic = getSemanticHandler(parsed.semantic);\n const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);\n if (semantic.exists) {\n return semantic.exists(transport, parsed.location, context);\n }\n if (transport.exists) {\n return transport.exists(parsed.location);\n }\n try {\n await transport.read(parsed.location);\n return true;\n } catch {\n return false;\n }\n}\nasync function resourceDelete(url) {\n const parsed = parseARP(url);\n const transport = getTransportHandler(parsed.transport);\n const semantic = getSemanticHandler(parsed.semantic);\n const context = createContext(url, parsed.semantic, parsed.transport, parsed.location);\n if (semantic.delete) {\n return semantic.delete(transport, parsed.location, context);\n }\n if (!transport.delete) {\n throw new SemanticError(`Neither semantic \"${semantic.name}\" nor transport \"${transport.name}\" supports delete operation`, parsed.semantic);\n }\n await transport.delete(parsed.location);\n}\nfunction createResourceRegistry() {\n const registry = new Map;\n return {\n register(definition) {\n if (!/^[a-z][a-z0-9-]*$/.test(definition.name)) {\n throw new ParseError(`Invalid resource name: \"${definition.name}\". Must start with lowercase letter and contain only lowercase letters, numbers, and hyphens.`, definition.name);\n }\n getSemanticHandler(definition.semantic);\n getTransportHandler(definition.transport);\n registry.set(definition.name, definition);\n },\n get(name) {\n return registry.get(name);\n },\n has(name) {\n return registry.has(name);\n },\n clear() {\n registry.clear();\n }\n };\n}\n\n// src/ResourceX.ts\nimport { join as join2 } from \"node:path\";\n\nclass ResourceX {\n timeout;\n alias;\n resourceRegistry;\n constructor(config = {}) {\n this.timeout = config.timeout;\n this.alias = config.alias || \"@\";\n this.resourceRegistry = createResourceRegistry();\n if (config.transports) {\n for (const handler of config.transports) {\n registerTransportHandler(handler);\n }\n }\n if (config.semantics) {\n for (const handler of config.semantics) {\n registerSemanticHandler(handler);\n }\n }\n if (config.resources) {\n for (const resource of config.resources) {\n this.resourceRegistry.register(resource);\n }\n }\n }\n parseURL(url) {\n let content;\n if (url.startsWith(\"arp:\")) {\n content = url.substring(4);\n } else if (url.startsWith(this.alias)) {\n content = url.substring(this.alias.length);\n } else {\n throw new ParseError(`Invalid URL prefix: must start with \"arp:\" or \"${this.alias}\"`, url);\n }\n const separatorIndex = content.indexOf(\"://\");\n if (separatorIndex === -1) {\n throw new ParseError(`Invalid URL format: missing \"://\"`, url);\n }\n const beforeSeparator = content.substring(0, separatorIndex);\n const location = content.substring(separatorIndex + 3);\n const colonCount = (beforeSeparator.match(/:/g) || []).length;\n if (colonCount === 1) {\n const parts = beforeSeparator.split(\":\");\n if (parts.length !== 2) {\n throw new ParseError(`Invalid ARP URL format`, url);\n }\n const [semantic, transport] = parts;\n if (!semantic || !transport || !location) {\n throw new ParseError(`Invalid ARP URL: semantic, transport, and location are required`, url);\n }\n const arpUrl = `arp:${semantic}:${transport}://${location}`;\n return {\n arpUrl,\n parsed: { semantic, transport, location }\n };\n }\n if (colonCount === 0) {\n const name = beforeSeparator;\n if (!name || !location) {\n throw new ParseError(`Invalid Resource URL: name and location are required`, url);\n }\n const definition = this.resourceRegistry.get(name);\n if (!definition) {\n throw new ParseError(`Unknown resource: \"${name}\"`, url);\n }\n const fullLocation = definition.basePath ? join2(definition.basePath, location) : location;\n const arpUrl = `arp:${definition.semantic}:${definition.transport}://${fullLocation}`;\n return {\n arpUrl,\n parsed: {\n semantic: definition.semantic,\n transport: definition.transport,\n location: fullLocation\n }\n };\n }\n throw new ParseError(`Invalid URL format: unexpected colon count in \"${beforeSeparator}\"`, url);\n }\n parse(url) {\n return this.parseURL(url).parsed;\n }\n async resolve(url) {\n const { arpUrl } = this.parseURL(url);\n return resolve2(arpUrl);\n }\n async deposit(url, data) {\n const { arpUrl } = this.parseURL(url);\n return deposit(arpUrl, data);\n }\n async exists(url) {\n const { arpUrl } = this.parseURL(url);\n return resourceExists(arpUrl);\n }\n async delete(url) {\n const { arpUrl } = this.parseURL(url);\n return resourceDelete(arpUrl);\n }\n}\n\n// src/createResourceX.ts\nfunction createResourceX(config) {\n return new ResourceX(config);\n}\nexport {\n createResourceX,\n agentvmHandler,\n TransportError,\n SemanticError,\n ResourceXError,\n ResourceX,\n ParseError\n};\n\n//# debugId=CCF3D457C69AEDFB64756E2164756E21\n",
13
+ "/**\n * StateStore - Persistence for StateLog and Blobs\n */\n\nimport { createResourceX, agentvmHandler, type ResourceX } from \"resourcexjs\";\nimport type { StateLogEntry } from \"./types.js\";\n\nexport interface StateStore {\n // Log operations\n saveLog(key: string, data: string): Promise<void>;\n loadLog(key: string): Promise<string | null>;\n deleteLog(key: string): Promise<void>;\n listLogs(): Promise<string[]>;\n\n // Blob operations\n saveBlob(ref: string, data: Buffer): Promise<void>;\n loadBlob(ref: string): Promise<Buffer | null>;\n deleteBlob(ref: string): Promise<void>;\n\n // AOF operations\n appendEntry(sandboxId: string, entry: StateLogEntry): Promise<void>;\n}\n\nexport interface StateStoreOptions {\n type: \"memory\" | \"resourcex\";\n}\n\n/**\n * Memory implementation for testing\n */\nclass MemoryStateStore implements StateStore {\n private logs = new Map<string, string>();\n private blobs = new Map<string, Buffer>();\n private entries = new Map<string, StateLogEntry[]>();\n\n async saveLog(key: string, data: string): Promise<void> {\n this.logs.set(key, data);\n }\n\n async loadLog(key: string): Promise<string | null> {\n // Check if we have entries (JSON Lines)\n const entries = this.entries.get(key);\n if (entries && entries.length > 0) {\n return JSON.stringify(entries);\n }\n // Fallback to logs (JSON array)\n return this.logs.get(key) ?? null;\n }\n\n async deleteLog(key: string): Promise<void> {\n this.logs.delete(key);\n this.entries.delete(key);\n }\n\n async listLogs(): Promise<string[]> {\n const keys = new Set([...this.logs.keys(), ...this.entries.keys()]);\n return [...keys];\n }\n\n async saveBlob(ref: string, data: Buffer): Promise<void> {\n this.blobs.set(ref, data);\n }\n\n async loadBlob(ref: string): Promise<Buffer | null> {\n return this.blobs.get(ref) ?? null;\n }\n\n async deleteBlob(ref: string): Promise<void> {\n this.blobs.delete(ref);\n }\n\n async appendEntry(sandboxId: string, entry: StateLogEntry): Promise<void> {\n const entries = this.entries.get(sandboxId) ?? [];\n entries.push(entry);\n this.entries.set(sandboxId, entries);\n }\n}\n\n/**\n * ResourceX implementation for production\n * Uses agentvm:// transport → ~/.agentvm/sandbox/\n */\nclass ResourceXStateStore implements StateStore {\n private rx: ResourceX;\n private basePath: string;\n\n constructor() {\n this.rx = createResourceX({\n transports: [agentvmHandler()],\n });\n // Get base path from home directory\n const os = require(\"os\");\n const path = require(\"path\");\n this.basePath = path.join(os.homedir(), \".agentvm/sandbox\");\n }\n\n private logUrl(key: string): string {\n return `@text:agentvm://sandbox/state-logs/${key}.json`;\n }\n\n private logPath(sandboxId: string): string {\n const path = require(\"path\");\n return path.join(this.basePath, \"state-logs\", `${sandboxId}.jsonl`);\n }\n\n private blobUrl(ref: string): string {\n return `@binary:agentvm://sandbox/blobs/${ref}`;\n }\n\n async saveLog(key: string, data: string): Promise<void> {\n await this.rx.deposit(this.logUrl(key), data);\n }\n\n async loadLog(key: string): Promise<string | null> {\n const fs = require(\"fs/promises\");\n\n // Try loading from JSON Lines file first\n const jsonlPath = this.logPath(key);\n try {\n const content = await fs.readFile(jsonlPath, \"utf-8\");\n // JSON Lines → JSON Array\n const entries = content\n .trim()\n .split(\"\\n\")\n .filter((line: string) => line)\n .map((line: string) => JSON.parse(line));\n return JSON.stringify(entries);\n } catch {\n // Fallback to ResourceX (old JSON format)\n try {\n const exists = await this.rx.exists(this.logUrl(key));\n if (!exists) return null;\n const resource = await this.rx.resolve(this.logUrl(key));\n return resource.content as string;\n } catch {\n return null;\n }\n }\n }\n\n async deleteLog(key: string): Promise<void> {\n const fs = require(\"fs/promises\");\n\n // Delete JSON Lines file\n try {\n await fs.unlink(this.logPath(key));\n } catch {\n // Ignore\n }\n\n // Delete old JSON file\n try {\n const exists = await this.rx.exists(this.logUrl(key));\n if (exists) {\n await this.rx.delete(this.logUrl(key));\n }\n } catch {\n // Ignore errors\n }\n }\n\n async listLogs(): Promise<string[]> {\n // TODO: Implement when ResourceX supports list\n return [];\n }\n\n async appendEntry(sandboxId: string, entry: StateLogEntry): Promise<void> {\n const fs = require(\"fs/promises\");\n const path = require(\"path\");\n\n const filePath = this.logPath(sandboxId);\n\n // Ensure directory exists\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n\n // Append one line of JSON (true AOF)\n const line = JSON.stringify(entry) + \"\\n\";\n await fs.appendFile(filePath, line, \"utf-8\");\n }\n\n async saveBlob(ref: string, data: Buffer): Promise<void> {\n await this.rx.deposit(this.blobUrl(ref), data);\n }\n\n async loadBlob(ref: string): Promise<Buffer | null> {\n try {\n const exists = await this.rx.exists(this.blobUrl(ref));\n if (!exists) return null;\n const resource = await this.rx.resolve(this.blobUrl(ref));\n return resource.content as Buffer;\n } catch {\n return null;\n }\n }\n\n async deleteBlob(ref: string): Promise<void> {\n try {\n const exists = await this.rx.exists(this.blobUrl(ref));\n if (exists) {\n await this.rx.delete(this.blobUrl(ref));\n }\n } catch {\n // Ignore errors\n }\n }\n}\n\n/**\n * Create a StateStore instance\n */\nexport function createStateStore(options: StateStoreOptions): StateStore {\n if (options.type === \"memory\") {\n return new MemoryStateStore();\n }\n\n if (options.type === \"resourcex\") {\n return new ResourceXStateStore();\n }\n\n throw new Error(`StateStore type \"${options.type}\" not implemented`);\n}\n",
14
14
  "/**\n * Create state instances with optional recording\n */\n\nimport type { FileSystem, Environment, Storage, StateLog, Sandbox } from \"./types.js\";\nimport { StateFS } from \"./StateFS.js\";\nimport { StateEnv } from \"./StateEnv.js\";\nimport { StateStorage } from \"./StateStorage.js\";\nimport { buildStateLog } from \"./StateLog.js\";\nimport { findOp, argsToEntry } from \"./opRegistry.js\";\nimport { createStateStore } from \"./StateStore.js\";\n\ntype StateNamespace = \"fs\" | \"env\" | \"storage\";\n\nexport interface CreateStateOptions {\n /** Sandbox instance for fs operations */\n sandbox: Sandbox;\n /** Initial environment variables */\n env?: Record<string, string>;\n /** Enable recording to StateLog */\n enableRecord?: boolean;\n /** Store type (default: resourcex, test: memory) */\n store?: \"resourcex\" | \"memory\";\n /** Sandbox ID for persistence */\n sandboxId: string;\n}\n\nexport interface StateResult {\n fs: FileSystem;\n env: Environment;\n storage: Storage;\n stateLog?: StateLog;\n}\n\n/**\n * Create a recording proxy for a state interface\n */\nfunction createRecordingProxy<T extends object>(\n target: T,\n namespace: StateNamespace,\n log: StateLog,\n onRecord?: (entry: { op: string; args: Record<string, unknown> }) => void\n): T {\n return new Proxy(target, {\n get(obj, prop) {\n const value = obj[prop as keyof T];\n\n if (typeof value !== \"function\") {\n return value;\n }\n\n const method = prop as string;\n const op = findOp(namespace, method);\n\n // No op registered = read-only method, don't record\n if (!op) {\n return value.bind(obj);\n }\n\n // Return wrapped function that records\n return (...args: unknown[]) => {\n const result = (value as Function).apply(obj, args);\n\n const record = () => {\n const entryArgs = argsToEntry(op, args);\n (log as any).recordEntry(op, entryArgs);\n // Call onRecord callback for persistence\n if (onRecord) {\n onRecord({ op, args: entryArgs });\n }\n };\n\n if (result instanceof Promise) {\n return result.then((res) => {\n record();\n return res;\n });\n } else {\n record();\n return result;\n }\n };\n },\n });\n}\n\n/**\n * Create state instances\n */\nexport function createState(options: CreateStateOptions): StateResult {\n const { sandbox, env, enableRecord, store = \"resourcex\", sandboxId } = options;\n\n // Create base instances\n const baseFS = new StateFS(sandbox);\n const baseEnv = new StateEnv(env);\n const baseStorage = new StateStorage();\n\n // No recording, return base instances\n if (!enableRecord) {\n return {\n fs: baseFS,\n env: baseEnv,\n storage: baseStorage,\n };\n }\n\n // Recording enabled, wrap with Proxy\n const stateLog = buildStateLog();\n\n // Create store for persistence\n const stateStore = createStateStore({ type: store });\n\n // onRecord callback for auto-persist\n const onRecord = (entry: { op: string; args: Record<string, unknown> }) => {\n // Async persist (don't block)\n stateStore.appendEntry(sandboxId, entry).catch((err) => {\n console.error(`[SandboX] Failed to persist entry:`, err);\n });\n };\n\n return {\n fs: createRecordingProxy(baseFS, \"fs\", stateLog, onRecord),\n env: createRecordingProxy(baseEnv, \"env\", stateLog, onRecord),\n storage: createRecordingProxy(baseStorage, \"storage\", stateLog, onRecord),\n stateLog,\n };\n}\n",
15
15
  "/**\n * StateAssets - Binary file upload/download with persistence\n */\n\nimport { createHash } from \"crypto\";\nimport type { StateStore } from \"./StateStore.js\";\n\nexport interface AssetsSandbox {\n upload(data: Buffer, remotePath: string): Promise<void>;\n download(remotePath: string): Promise<Buffer>;\n}\n\nexport interface StateAssets {\n uploadBuffer(data: Buffer, remotePath: string): Promise<string>;\n downloadBuffer(remotePath: string, options?: { persist?: boolean }): Promise<Buffer | string>;\n list(): string[];\n}\n\nexport interface CreateStateAssetsOptions {\n sandbox: AssetsSandbox;\n store: StateStore;\n}\n\n/**\n * Generate sha256 ref for data\n */\nfunction generateRef(data: Buffer): string {\n const hash = createHash(\"sha256\").update(data).digest(\"hex\");\n return `sha256-${hash}`;\n}\n\nclass StateAssetsImpl implements StateAssets {\n private sandbox: AssetsSandbox;\n private store: StateStore;\n private uploadedPaths: Set<string> = new Set();\n\n constructor(options: CreateStateAssetsOptions) {\n this.sandbox = options.sandbox;\n this.store = options.store;\n }\n\n async uploadBuffer(data: Buffer, remotePath: string): Promise<string> {\n // Generate ref\n const ref = generateRef(data);\n\n // Upload to sandbox\n await this.sandbox.upload(data, remotePath);\n\n // Store blob for persistence\n await this.store.saveBlob(ref, data);\n\n // Track uploaded path\n this.uploadedPaths.add(remotePath);\n\n return ref;\n }\n\n async downloadBuffer(\n remotePath: string,\n options?: { persist?: boolean }\n ): Promise<Buffer | string> {\n // Download from sandbox\n const data = await this.sandbox.download(remotePath);\n\n // Optionally persist\n if (options?.persist) {\n const ref = generateRef(data);\n await this.store.saveBlob(ref, data);\n return ref;\n }\n\n return data;\n }\n\n list(): string[] {\n return [...this.uploadedPaths];\n }\n}\n\n/**\n * Create StateAssets instance\n */\nexport function createStateAssets(options: CreateStateAssetsOptions): StateAssets {\n return new StateAssetsImpl(options);\n}\n"
16
16
  ],
17
- "mappings": "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",
18
- "debugId": "9F835BF9D56FCAFE64756E2164756E21",
17
+ "mappings": "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",
18
+ "debugId": "5E286C3CA2485CD964756E2164756E21",
19
19
  "names": []
20
20
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sandboxxjs/state",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "SandboX State - State management layer with StateLog",
5
5
  "keywords": [
6
6
  "sandbox",
@@ -42,6 +42,6 @@
42
42
  "access": "public"
43
43
  },
44
44
  "dependencies": {
45
- "resourcexjs": "0.4.0"
45
+ "resourcexjs": "0.5.0"
46
46
  }
47
47
  }