pi-fabric 0.92.19 → 0.92.20

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 (39) hide show
  1. package/dist/agents.js +3 -3
  2. package/dist/chunks/chunk-EDL4JDW7.js +184 -0
  3. package/dist/chunks/chunk-EDL4JDW7.js.map +7 -0
  4. package/dist/chunks/{chunk-3KOK4CPR.js → chunk-EFHCXJTV.js} +2 -2
  5. package/dist/chunks/{chunk-4U5NR5VF.js → chunk-KI4VAMHK.js} +8 -8
  6. package/dist/chunks/{chunk-VHEO26TE.js → chunk-NSTQH46Z.js} +5 -5
  7. package/dist/chunks/{chunk-NIUOPHLB.js → chunk-ROXAXSTJ.js} +2 -2
  8. package/dist/chunks/{chunk-TPLMVELH.js → chunk-VYXFSUWU.js} +4 -4
  9. package/dist/chunks/{chunk-DW5MTOJP.js → chunk-XFSRHUZH.js} +5 -5
  10. package/dist/chunks/{chunk-OP2KTYQB.js → chunk-ZMIJ6AT4.js} +4 -4
  11. package/dist/core/action-registry.js +2 -2
  12. package/dist/fabric-runtime-state.js +16 -15
  13. package/dist/fabric-runtime-state.js.map +2 -2
  14. package/dist/index.js +10 -10
  15. package/dist/jev/browser.js +2 -2
  16. package/dist/jev/observation.js +2 -2
  17. package/dist/jev.js +5 -5
  18. package/dist/memory/file-worker.d.ts +15 -0
  19. package/dist/memory/file-worker.d.ts.map +1 -0
  20. package/dist/memory/file-worker.js +44 -0
  21. package/dist/memory/file-worker.js.map +7 -0
  22. package/dist/memory/worker-provider.d.ts +24 -0
  23. package/dist/memory/worker-provider.d.ts.map +1 -0
  24. package/dist/memory/worker-provider.js +18 -0
  25. package/dist/memory/worker-provider.js.map +7 -0
  26. package/dist/providers/jev-provider.js +4 -4
  27. package/dist/residency/host.js +4 -4
  28. package/dist/residency/pi-entry.js +4 -4
  29. package/dist/runtime/typescript-kernel.js +6 -6
  30. package/dist/runtime-state-builtins.d.ts.map +1 -1
  31. package/docs/memory-recall.md +21 -0
  32. package/package.json +2 -1
  33. /package/dist/chunks/{chunk-3KOK4CPR.js.map → chunk-EFHCXJTV.js.map} +0 -0
  34. /package/dist/chunks/{chunk-4U5NR5VF.js.map → chunk-KI4VAMHK.js.map} +0 -0
  35. /package/dist/chunks/{chunk-VHEO26TE.js.map → chunk-NSTQH46Z.js.map} +0 -0
  36. /package/dist/chunks/{chunk-NIUOPHLB.js.map → chunk-ROXAXSTJ.js.map} +0 -0
  37. /package/dist/chunks/{chunk-TPLMVELH.js.map → chunk-VYXFSUWU.js.map} +0 -0
  38. /package/dist/chunks/{chunk-DW5MTOJP.js.map → chunk-XFSRHUZH.js.map} +0 -0
  39. /package/dist/chunks/{chunk-OP2KTYQB.js.map → chunk-ZMIJ6AT4.js.map} +0 -0
package/dist/agents.js CHANGED
@@ -1,10 +1,10 @@
1
- import {
2
- validateAgentResult
3
- } from "./chunks/chunk-3QECYQGA.js";
4
1
  import {
5
2
  AGENTS_ACTION_DESCRIPTORS,
6
3
  normalizeAgentRunRequest
7
4
  } from "./chunks/chunk-2PZWDVJB.js";
5
+ import {
6
+ validateAgentResult
7
+ } from "./chunks/chunk-3QECYQGA.js";
8
8
  import {
9
9
  actionArgNormalizer
10
10
  } from "./chunks/chunk-NQOEHX62.js";
@@ -0,0 +1,184 @@
1
+ import {
2
+ MemoryProvider
3
+ } from "./chunk-UQ4LTUH4.js";
4
+
5
+ // src/memory/worker-provider.ts
6
+ import path from "node:path";
7
+ import { Worker } from "node:worker_threads";
8
+ var MAX_PENDING_REQUESTS = 64;
9
+ var IDLE_TIMEOUT_MS = 3e4;
10
+ var sameBranch = (left, right) => left.leafId === right.leafId && left.entries.length === right.entries.length && left.entries.every((entry, index) => entry.id === right.entries[index].id);
11
+ var WorkerMemoryProvider = class extends MemoryProvider {
12
+ constructor(workerContext, workerUrl = new URL("../memory/file-worker.js", import.meta.url)) {
13
+ super(workerContext);
14
+ this.workerContext = workerContext;
15
+ this.workerUrl = workerUrl;
16
+ }
17
+ worker;
18
+ active;
19
+ pending = [];
20
+ idleTimer;
21
+ stopping;
22
+ closed = false;
23
+ nextId = 0;
24
+ async invoke(action, args, invocation) {
25
+ invocation.signal?.throwIfAborted();
26
+ if (this.closed) throw new Error("Memory provider is closed");
27
+ if (typeof args.source === "string" && args.source.length > 0 || !["recall", "expand", "sessions"].includes(action)) {
28
+ return super.invoke(action, args, invocation);
29
+ }
30
+ if (this.pending.length + (this.active ? 1 : 0) >= MAX_PENDING_REQUESTS) {
31
+ throw new Error(`Memory request queue is full (${MAX_PENDING_REQUESTS} requests); await outstanding calls`);
32
+ }
33
+ return new Promise((resolve, reject) => {
34
+ const request = {
35
+ id: ++this.nextId,
36
+ action,
37
+ args,
38
+ invocation,
39
+ resolve,
40
+ reject,
41
+ abort: () => {
42
+ if (this.active === request) {
43
+ this.active = void 0;
44
+ void this.retire();
45
+ } else {
46
+ const index = this.pending.indexOf(request);
47
+ if (index >= 0) this.pending.splice(index, 1);
48
+ }
49
+ this.finish(request, false, invocation.signal?.reason ?? new Error("Memory request aborted"));
50
+ this.pump();
51
+ }
52
+ };
53
+ invocation.signal?.addEventListener("abort", request.abort, { once: true });
54
+ this.pending.push(request);
55
+ this.pump();
56
+ });
57
+ }
58
+ snapshot(request) {
59
+ const context = this.workerContext;
60
+ if (request.args.branches === "all" || !context.sessionFile || !context.getLiveBranch) return void 0;
61
+ const selector = request.action === "expand" ? request.args.session : request.args.scope;
62
+ const target = typeof selector === "string" && selector.trim().startsWith("session:") ? selector.trim().slice("session:".length).trim() : request.action === "expand" && typeof selector === "string" ? selector.trim() : void 0;
63
+ if (target !== void 0 && target !== context.sessionId && target !== path.basename(context.sessionFile, ".jsonl") && path.resolve(target) !== path.resolve(context.sessionFile)) return void 0;
64
+ const branch = context.getLiveBranch();
65
+ return {
66
+ leafId: branch.leafId,
67
+ entries: branch.entries.map((entry) => {
68
+ const id = entry !== null && typeof entry === "object" ? entry.id : void 0;
69
+ return typeof id === "string" ? { id } : {};
70
+ })
71
+ };
72
+ }
73
+ start() {
74
+ const { agentDir, cwd, config, sessionId, sessionFile } = this.workerContext;
75
+ const worker = new Worker(this.workerUrl, {
76
+ workerData: { agentDir, cwd, config, sessionId, sessionFile },
77
+ // Eval/stdin-only flags are invalid when Node starts this compiled module file.
78
+ execArgv: process.execArgv.filter((value, index, args) => value !== "--input-type" && args[index - 1] !== "--input-type" && !value.startsWith("--input-type="))
79
+ });
80
+ this.worker = worker;
81
+ worker.on("message", (message) => {
82
+ const request = this.active;
83
+ if (this.worker !== worker || !request || message?.id !== request.id) return;
84
+ try {
85
+ if (message.type === "progress") {
86
+ request.invocation.update(message.text);
87
+ return;
88
+ }
89
+ if (message.type === "error") {
90
+ const error = new Error(message.message);
91
+ error.name = message.name;
92
+ this.active = void 0;
93
+ this.finish(request, false, error);
94
+ } else if (message.type === "result") {
95
+ const branch = this.snapshot(request);
96
+ if (request.branch && (!branch || !sameBranch(request.branch, branch))) {
97
+ throw new Error("Session branch changed during memory retrieval; retry the request");
98
+ }
99
+ this.active = void 0;
100
+ this.finish(request, true, message.value);
101
+ } else {
102
+ throw new Error("Invalid memory worker response");
103
+ }
104
+ this.pump();
105
+ } catch (error) {
106
+ this.failWorker(worker, error);
107
+ }
108
+ });
109
+ worker.once("error", (error) => this.failWorker(worker, error));
110
+ worker.once("exit", (code) => this.failWorker(worker, new Error(`Memory worker exited before completing its request (code ${code})`)));
111
+ return worker;
112
+ }
113
+ finish(request, success, value) {
114
+ request.invocation.signal?.removeEventListener("abort", request.abort);
115
+ if (success) request.resolve(value);
116
+ else request.reject(value);
117
+ }
118
+ failWorker(worker, error) {
119
+ if (this.worker !== worker) return;
120
+ const request = this.active;
121
+ this.active = void 0;
122
+ void this.retire();
123
+ if (request) this.finish(request, false, error);
124
+ }
125
+ pump() {
126
+ if (this.closed || this.active || this.stopping) return;
127
+ const request = this.pending.shift();
128
+ if (!request) {
129
+ this.worker?.unref();
130
+ if (this.worker && !this.idleTimer) {
131
+ this.idleTimer = setTimeout(() => {
132
+ void this.retire();
133
+ }, IDLE_TIMEOUT_MS);
134
+ this.idleTimer.unref();
135
+ }
136
+ return;
137
+ }
138
+ if (this.idleTimer) clearTimeout(this.idleTimer);
139
+ this.idleTimer = void 0;
140
+ this.active = request;
141
+ try {
142
+ request.invocation.signal?.throwIfAborted();
143
+ request.branch = this.snapshot(request);
144
+ const worker = this.worker ?? this.start();
145
+ worker.ref();
146
+ worker.postMessage({ id: request.id, action: request.action, args: request.args, branch: request.branch });
147
+ } catch (error) {
148
+ this.active = void 0;
149
+ void this.retire();
150
+ this.finish(request, false, error);
151
+ this.pump();
152
+ }
153
+ }
154
+ retire() {
155
+ if (this.idleTimer) clearTimeout(this.idleTimer);
156
+ this.idleTimer = void 0;
157
+ const worker = this.worker;
158
+ this.worker = void 0;
159
+ if (!worker) return this.stopping ?? Promise.resolve();
160
+ const stopping = worker.terminate().then(() => {
161
+ }, () => {
162
+ });
163
+ this.stopping = stopping;
164
+ void stopping.then(() => {
165
+ if (this.stopping === stopping) this.stopping = void 0;
166
+ this.pump();
167
+ });
168
+ return stopping;
169
+ }
170
+ async close() {
171
+ this.closed = true;
172
+ const active = this.active;
173
+ this.active = void 0;
174
+ const requests = this.pending.splice(0);
175
+ if (active) requests.unshift(active);
176
+ for (const request of requests) this.finish(request, false, new Error("Memory provider is closed"));
177
+ await this.retire();
178
+ }
179
+ };
180
+
181
+ export {
182
+ WorkerMemoryProvider
183
+ };
184
+ //# sourceMappingURL=chunk-EDL4JDW7.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/memory/worker-provider.ts"],
4
+ "sourcesContent": ["import path from \"node:path\";\nimport { Worker } from \"node:worker_threads\";\nimport type { FabricInvocationContext } from \"../protocol.js\";\nimport { MemoryProvider, type MemoryProviderContext } from \"../providers/memory-provider.js\";\nimport type { LiveSessionBranch } from \"./lineage.js\";\nimport type { MemoryWorkerReply } from \"./file-worker.js\";\n\nconst MAX_PENDING_REQUESTS = 64;\nconst IDLE_TIMEOUT_MS = 30_000;\n\ninterface Request {\n id: number;\n action: string;\n args: Record<string, unknown>;\n invocation: FabricInvocationContext;\n branch?: LiveSessionBranch | undefined;\n abort(): void;\n resolve(value: unknown): void;\n reject(error: unknown): void;\n}\n\nconst sameBranch = (left: LiveSessionBranch, right: LiveSessionBranch): boolean =>\n left.leafId === right.leafId && left.entries.length === right.entries.length &&\n left.entries.every((entry, index) =>\n (entry as { id?: string }).id === (right.entries[index] as { id?: string }).id);\n\n/** Pi-facing file memory: one lazy worker, bounded FIFO, no transcript work on the UI thread. */\nexport class WorkerMemoryProvider extends MemoryProvider {\n private worker: Worker | undefined;\n private active: Request | undefined;\n private readonly pending: Request[] = [];\n private idleTimer: NodeJS.Timeout | undefined;\n private stopping: Promise<void> | undefined;\n private closed = false;\n private nextId = 0;\n\n constructor(\n private readonly workerContext: MemoryProviderContext,\n private readonly workerUrl = new URL(\"../memory/file-worker.js\", import.meta.url),\n ) {\n super(workerContext);\n }\n\n override async invoke(action: string, args: Record<string, unknown>, invocation: FabricInvocationContext): Promise<unknown> {\n invocation.signal?.throwIfAborted();\n if (this.closed) throw new Error(\"Memory provider is closed\");\n // Authorized host adapters contain callbacks and must stay in their owning host.\n if ((typeof args.source === \"string\" && args.source.length > 0) ||\n ![\"recall\", \"expand\", \"sessions\"].includes(action)) {\n return super.invoke(action, args, invocation);\n }\n if (this.pending.length + (this.active ? 1 : 0) >= MAX_PENDING_REQUESTS) {\n throw new Error(`Memory request queue is full (${MAX_PENDING_REQUESTS} requests); await outstanding calls`);\n }\n return new Promise((resolve, reject) => {\n const request: Request = {\n id: ++this.nextId, action, args, invocation, resolve, reject,\n abort: () => {\n if (this.active === request) {\n this.active = undefined;\n void this.retire();\n } else {\n const index = this.pending.indexOf(request);\n if (index >= 0) this.pending.splice(index, 1);\n }\n this.finish(request, false, invocation.signal?.reason ?? new Error(\"Memory request aborted\"));\n this.pump();\n },\n };\n invocation.signal?.addEventListener(\"abort\", request.abort, { once: true });\n this.pending.push(request);\n this.pump();\n });\n }\n\n private snapshot(request: Request): LiveSessionBranch | undefined {\n const context = this.workerContext;\n if (request.args.branches === \"all\" || !context.sessionFile || !context.getLiveBranch) return undefined;\n const selector = request.action === \"expand\" ? request.args.session : request.args.scope;\n const target = typeof selector === \"string\" && selector.trim().startsWith(\"session:\")\n ? selector.trim().slice(\"session:\".length).trim()\n : request.action === \"expand\" && typeof selector === \"string\" ? selector.trim() : undefined;\n if (target !== undefined && target !== context.sessionId &&\n target !== path.basename(context.sessionFile, \".jsonl\") &&\n path.resolve(target) !== path.resolve(context.sessionFile)) return undefined;\n const branch = context.getLiveBranch();\n // Lineage needs IDs only. Never clone tool output, images, or the full transcript to the worker.\n return {\n leafId: branch.leafId,\n entries: branch.entries.map(entry => {\n const id = entry !== null && typeof entry === \"object\" ? (entry as { id?: unknown }).id : undefined;\n return typeof id === \"string\" ? { id } : {};\n }),\n };\n }\n\n private start(): Worker {\n const { agentDir, cwd, config, sessionId, sessionFile } = this.workerContext;\n const worker = new Worker(this.workerUrl, {\n workerData: { agentDir, cwd, config, sessionId, sessionFile },\n // Eval/stdin-only flags are invalid when Node starts this compiled module file.\n execArgv: process.execArgv.filter((value, index, args) =>\n value !== \"--input-type\" && args[index - 1] !== \"--input-type\" && !value.startsWith(\"--input-type=\")),\n });\n this.worker = worker;\n worker.on(\"message\", (message: MemoryWorkerReply) => {\n const request = this.active;\n if (this.worker !== worker || !request || message?.id !== request.id) return;\n try {\n if (message.type === \"progress\") {\n request.invocation.update(message.text);\n return;\n }\n if (message.type === \"error\") {\n const error = new Error(message.message);\n error.name = message.name;\n this.active = undefined;\n this.finish(request, false, error);\n } else if (message.type === \"result\") {\n const branch = this.snapshot(request);\n if (request.branch && (!branch || !sameBranch(request.branch, branch))) {\n throw new Error(\"Session branch changed during memory retrieval; retry the request\");\n }\n this.active = undefined;\n this.finish(request, true, message.value);\n } else {\n throw new Error(\"Invalid memory worker response\");\n }\n this.pump();\n } catch (error) {\n this.failWorker(worker, error);\n }\n });\n worker.once(\"error\", error => this.failWorker(worker, error));\n worker.once(\"exit\", code => this.failWorker(worker, new Error(`Memory worker exited before completing its request (code ${code})`)));\n return worker;\n }\n\n private finish(request: Request, success: boolean, value: unknown): void {\n request.invocation.signal?.removeEventListener(\"abort\", request.abort);\n if (success) request.resolve(value);\n else request.reject(value);\n }\n\n private failWorker(worker: Worker, error: unknown): void {\n if (this.worker !== worker) return;\n const request = this.active;\n this.active = undefined;\n void this.retire();\n if (request) this.finish(request, false, error);\n }\n\n private pump(): void {\n if (this.closed || this.active || this.stopping) return;\n const request = this.pending.shift();\n if (!request) {\n this.worker?.unref();\n if (this.worker && !this.idleTimer) {\n this.idleTimer = setTimeout(() => { void this.retire(); }, IDLE_TIMEOUT_MS);\n this.idleTimer.unref();\n }\n return;\n }\n if (this.idleTimer) clearTimeout(this.idleTimer);\n this.idleTimer = undefined;\n this.active = request;\n try {\n request.invocation.signal?.throwIfAborted();\n request.branch = this.snapshot(request);\n const worker = this.worker ?? this.start();\n worker.ref();\n worker.postMessage({ id: request.id, action: request.action, args: request.args, branch: request.branch });\n } catch (error) {\n this.active = undefined;\n void this.retire();\n this.finish(request, false, error);\n this.pump();\n }\n }\n\n private retire(): Promise<void> {\n if (this.idleTimer) clearTimeout(this.idleTimer);\n this.idleTimer = undefined;\n const worker = this.worker;\n this.worker = undefined;\n if (!worker) return this.stopping ?? Promise.resolve();\n const stopping = worker.terminate().then(() => {}, () => {});\n this.stopping = stopping;\n void stopping.then(() => {\n if (this.stopping === stopping) this.stopping = undefined;\n this.pump();\n });\n return stopping;\n }\n\n async close(): Promise<void> {\n this.closed = true;\n const active = this.active;\n this.active = undefined;\n const requests = this.pending.splice(0);\n if (active) requests.unshift(active);\n for (const request of requests) this.finish(request, false, new Error(\"Memory provider is closed\"));\n await this.retire();\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -9,7 +9,7 @@ import {
9
9
  agentParticipantRecords,
10
10
  loadModelUsage,
11
11
  useBudgetLedger
12
- } from "./chunk-4U5NR5VF.js";
12
+ } from "./chunk-KI4VAMHK.js";
13
13
  import {
14
14
  RESIDENT_HOST_FORMAT,
15
15
  residentDeliveryPrefix,
@@ -689,4 +689,4 @@ if (isMain) {
689
689
  export {
690
690
  runResidentHostFromConfigPath
691
691
  };
692
- //# sourceMappingURL=chunk-3KOK4CPR.js.map
692
+ //# sourceMappingURL=chunk-EFHCXJTV.js.map
@@ -6,15 +6,15 @@ import {
6
6
  spawnDetached,
7
7
  workerCommand
8
8
  } from "./chunk-X7G62ZGH.js";
9
+ import {
10
+ mapVedaTools,
11
+ normalizeVedaModel
12
+ } from "./chunk-VPPIJRNZ.js";
9
13
  import {
10
14
  discoverClaudeModels,
11
15
  mapClaudeTools,
12
16
  normalizeClaudeModel
13
17
  } from "./chunk-PM5I335G.js";
14
- import {
15
- mapVedaTools,
16
- normalizeVedaModel
17
- } from "./chunk-VPPIJRNZ.js";
18
18
  import {
19
19
  peerLabelPrefix,
20
20
  writeHandoffSession
@@ -22,15 +22,15 @@ import {
22
22
  import {
23
23
  resolveAgentDir
24
24
  } from "./chunk-PXAICAUT.js";
25
+ import {
26
+ readJsonlPage
27
+ } from "./chunk-CGPK5WHX.js";
25
28
  import {
26
29
  DEFAULT_FABRIC_CONFIG,
27
30
  MAX_AGENT_TIMEOUT_MS,
28
31
  MIN_AGENT_TIMEOUT_MS,
29
32
  quarantineDamagedFile
30
33
  } from "./chunk-YQFAHWGE.js";
31
- import {
32
- readJsonlPage
33
- } from "./chunk-CGPK5WHX.js";
34
34
  import {
35
35
  writeFileAtomic,
36
36
  writeJsonAtomic
@@ -6870,4 +6870,4 @@ export {
6870
6870
  agentParticipantRecords,
6871
6871
  actorParticipantRecord
6872
6872
  };
6873
- //# sourceMappingURL=chunk-4U5NR5VF.js.map
6873
+ //# sourceMappingURL=chunk-KI4VAMHK.js.map
@@ -1,6 +1,10 @@
1
1
  import {
2
2
  formatFabricEffectConflict
3
3
  } from "./chunk-LMAVZN7J.js";
4
+ import {
5
+ runAbortable,
6
+ settleWithin
7
+ } from "./chunk-7TB7NXSL.js";
4
8
  import {
5
9
  MAX_AUDIT_VALUE_CHARS,
6
10
  activeQuarantinedRefNames,
@@ -20,10 +24,6 @@ import {
20
24
  validateCatalogArgs,
21
25
  validationMessage
22
26
  } from "./chunk-PSNXUZMY.js";
23
- import {
24
- runAbortable,
25
- settleWithin
26
- } from "./chunk-7TB7NXSL.js";
27
27
  import {
28
28
  FABRIC_NESTED_TOOL_CALL_ID_PREFIX
29
29
  } from "./chunk-WVH324VF.js";
@@ -1454,4 +1454,4 @@ export {
1454
1454
  NESTED_TOOL_CALL_ID_PREFIX,
1455
1455
  ActionRegistry
1456
1456
  };
1457
- //# sourceMappingURL=chunk-VHEO26TE.js.map
1457
+ //# sourceMappingURL=chunk-NSTQH46Z.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-J2HV2URQ.js";
5
5
  import {
6
6
  NESTED_TOOL_CALL_ID_PREFIX
7
- } from "./chunk-VHEO26TE.js";
7
+ } from "./chunk-NSTQH46Z.js";
8
8
  import {
9
9
  THINKING_DIGEST_CUSTOM_TYPE,
10
10
  buildThinkingDigest,
@@ -1981,4 +1981,4 @@ export {
1981
1981
  resolveFabricIdentity,
1982
1982
  MainAgentController
1983
1983
  };
1984
- //# sourceMappingURL=chunk-NIUOPHLB.js.map
1984
+ //# sourceMappingURL=chunk-ROXAXSTJ.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- validationMessage
3
- } from "./chunk-PSNXUZMY.js";
4
1
  import {
5
2
  runAbortable
6
3
  } from "./chunk-7TB7NXSL.js";
4
+ import {
5
+ validationMessage
6
+ } from "./chunk-PSNXUZMY.js";
7
7
 
8
8
  // src/jev/browser.ts
9
9
  import path from "node:path";
@@ -115,4 +115,4 @@ export {
115
115
  BrowserHarnessProvider,
116
116
  browserHarnessComponent
117
117
  };
118
- //# sourceMappingURL=chunk-TPLMVELH.js.map
118
+ //# sourceMappingURL=chunk-VYXFSUWU.js.map
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  checkObserve,
7
7
  jevObserveSchema
8
- } from "./chunk-OP2KTYQB.js";
8
+ } from "./chunk-ZMIJ6AT4.js";
9
9
  import {
10
10
  checkSchema,
11
11
  checkValue,
@@ -17,12 +17,12 @@ import {
17
17
  FabricAutoApprovalClassifier,
18
18
  FabricSessionApprovals
19
19
  } from "./chunk-B74OWVAN.js";
20
- import {
21
- validationMessage
22
- } from "./chunk-PSNXUZMY.js";
23
20
  import {
24
21
  runAbortable
25
22
  } from "./chunk-7TB7NXSL.js";
23
+ import {
24
+ validationMessage
25
+ } from "./chunk-PSNXUZMY.js";
26
26
 
27
27
  // src/providers/jev-provider.ts
28
28
  import { Type } from "typebox";
@@ -437,4 +437,4 @@ export {
437
437
  JEV_ACTION_DESCRIPTORS,
438
438
  JevProvider
439
439
  };
440
- //# sourceMappingURL=chunk-DW5MTOJP.js.map
440
+ //# sourceMappingURL=chunk-XFSRHUZH.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- object
3
- } from "./chunk-Z63R5GVN.js";
4
1
  import {
5
2
  prepareFabricActorHostPayload
6
3
  } from "./chunk-4SSMGBF4.js";
4
+ import {
5
+ object
6
+ } from "./chunk-Z63R5GVN.js";
7
7
  import {
8
8
  validationMessage
9
9
  } from "./chunk-PSNXUZMY.js";
@@ -283,4 +283,4 @@ export {
283
283
  JevObservationHost,
284
284
  JevSubscription
285
285
  };
286
- //# sourceMappingURL=chunk-OP2KTYQB.js.map
286
+ //# sourceMappingURL=chunk-ZMIJ6AT4.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  ActionRegistry,
3
3
  NESTED_TOOL_CALL_ID_PREFIX
4
- } from "../chunks/chunk-VHEO26TE.js";
4
+ } from "../chunks/chunk-NSTQH46Z.js";
5
5
  import "../chunks/chunk-LMAVZN7J.js";
6
- import "../chunks/chunk-PSNXUZMY.js";
7
6
  import "../chunks/chunk-7TB7NXSL.js";
7
+ import "../chunks/chunk-PSNXUZMY.js";
8
8
  import "../chunks/chunk-WVH324VF.js";
9
9
  import "../chunks/chunk-D5WKZONW.js";
10
10
  import "../chunks/chunk-G4LADAYY.js";
@@ -6,6 +6,9 @@ import {
6
6
  piBashExitMetadata,
7
7
  piBashResultError
8
8
  } from "./chunks/chunk-PAN6C3JM.js";
9
+ import {
10
+ WorkerMemoryProvider
11
+ } from "./chunks/chunk-EDL4JDW7.js";
9
12
  import {
10
13
  ResidentActorClient
11
14
  } from "./chunks/chunk-BOTRGFQQ.js";
@@ -23,7 +26,7 @@ import {
23
26
  expandSkillDirMarkersForRead,
24
27
  resolveFabricIdentity,
25
28
  runFabricHandoffAtBoundary
26
- } from "./chunks/chunk-NIUOPHLB.js";
29
+ } from "./chunks/chunk-ROXAXSTJ.js";
27
30
  import {
28
31
  AgentTranscriptReader,
29
32
  MAX_WRITE_DIFF_BYTES,
@@ -35,7 +38,7 @@ import "./chunks/chunk-DLXPTBPL.js";
35
38
  import {
36
39
  ActionRegistry,
37
40
  repairActionName
38
- } from "./chunks/chunk-VHEO26TE.js";
41
+ } from "./chunks/chunk-NSTQH46Z.js";
39
42
  import {
40
43
  formatFabricEffectConflict
41
44
  } from "./chunks/chunk-LMAVZN7J.js";
@@ -43,9 +46,7 @@ import {
43
46
  loadCompiledSurface,
44
47
  withExclusiveFileLockAsync
45
48
  } from "./chunks/chunk-3WIGAX56.js";
46
- import {
47
- MemoryProvider
48
- } from "./chunks/chunk-UQ4LTUH4.js";
49
+ import "./chunks/chunk-UQ4LTUH4.js";
49
50
  import "./chunks/chunk-7A6NVHB5.js";
50
51
  import "./chunks/chunk-U5FYOMG5.js";
51
52
  import "./chunks/chunk-MGDLRV2R.js";
@@ -72,6 +73,10 @@ import {
72
73
  FabricSessionApprovals
73
74
  } from "./chunks/chunk-B74OWVAN.js";
74
75
  import "./chunks/chunk-XB3RJVT4.js";
76
+ import {
77
+ runAbortable,
78
+ throwIfAborted
79
+ } from "./chunks/chunk-7TB7NXSL.js";
75
80
  import {
76
81
  clearActiveCompiledSurface,
77
82
  clearActiveRepairCompiler,
@@ -79,10 +84,6 @@ import {
79
84
  setActiveRepairCompiler,
80
85
  validationMessage
81
86
  } from "./chunks/chunk-PSNXUZMY.js";
82
- import {
83
- runAbortable,
84
- throwIfAborted
85
- } from "./chunks/chunk-7TB7NXSL.js";
86
87
  import {
87
88
  FABRIC_COMPONENT_DISCOVER_EVENT,
88
89
  FABRIC_PROVIDER_DISCOVER_EVENT,
@@ -110,14 +111,14 @@ import {
110
111
  resolveInheritedSessionPins,
111
112
  resolvePiBinary,
112
113
  withInheritedSessionPins
113
- } from "./chunks/chunk-4U5NR5VF.js";
114
+ } from "./chunks/chunk-KI4VAMHK.js";
114
115
  import {
115
116
  executeFile,
116
117
  processIsAlive,
117
118
  spawnDetached
118
119
  } from "./chunks/chunk-X7G62ZGH.js";
119
- import "./chunks/chunk-PM5I335G.js";
120
120
  import "./chunks/chunk-VPPIJRNZ.js";
121
+ import "./chunks/chunk-PM5I335G.js";
121
122
  import {
122
123
  RESIDENT_HOST_FORMAT,
123
124
  residentDeliveryPrefix,
@@ -130,6 +131,9 @@ import {
130
131
  import {
131
132
  resolveAgentDir
132
133
  } from "./chunks/chunk-PXAICAUT.js";
134
+ import {
135
+ readJsonlPage
136
+ } from "./chunks/chunk-CGPK5WHX.js";
133
137
  import {
134
138
  DEFAULT_FABRIC_CONFIG,
135
139
  DEFAULT_SHELL_HANG_MS,
@@ -145,9 +149,6 @@ import {
145
149
  resolveFabricModel,
146
150
  trackShellOperations
147
151
  } from "./chunks/chunk-YQFAHWGE.js";
148
- import {
149
- readJsonlPage
150
- } from "./chunks/chunk-CGPK5WHX.js";
151
152
  import "./chunks/chunk-OKOHRXGF.js";
152
153
  import {
153
154
  fabricExecTitleHintCached
@@ -9611,7 +9612,7 @@ var RuntimeStateBuiltins = class {
9611
9612
  await this.install(createProviderComponent({
9612
9613
  provider: "memory",
9613
9614
  description: "Session memory index and source hydration",
9614
- create: () => new MemoryProvider(memoryContext)
9615
+ create: () => new WorkerMemoryProvider(memoryContext)
9615
9616
  }));
9616
9617
  } else {
9617
9618
  this.registry.markUnavailable(