@opendatalabs/personal-server-ts-lite 1.35.1 → 1.35.2

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.
@@ -27447,6 +27447,31 @@ var AdditionsBudget = class {
27447
27447
  this.used += bytes;
27448
27448
  this.parent?.charge(bytes);
27449
27449
  }
27450
+ /** Hold an in-flight host allowance before another request can spend it.
27451
+ * Settle once with the actual receipt, even after cancellation. */
27452
+ reserve(bytes) {
27453
+ this.charge(bytes);
27454
+ let settled2 = false;
27455
+ return {
27456
+ settle: (spent) => {
27457
+ if (settled2)
27458
+ throw new Error("Additions reservation already settled");
27459
+ if (!Number.isSafeInteger(spent) || spent < 0)
27460
+ throw new AdditionsBudgetExceeded("Invalid reserved-byte receipt");
27461
+ settled2 = true;
27462
+ this.refund(bytes);
27463
+ this.recordSpent(spent);
27464
+ if (spent > bytes) {
27465
+ this.exhausted = true;
27466
+ throw new AdditionsBudgetExceeded("Reserved host allowance exceeded");
27467
+ }
27468
+ }
27469
+ };
27470
+ }
27471
+ refund(bytes) {
27472
+ this.used -= bytes;
27473
+ this.parent?.refund(bytes);
27474
+ }
27450
27475
  recordSpent(bytes) {
27451
27476
  if (!Number.isSafeInteger(bytes) || bytes < 0) {
27452
27477
  this.exhausted = true;
@@ -30159,6 +30184,7 @@ var InaccessibleLedger = class extends Error {
30159
30184
  var CheckpointSearchExceeded = class extends AdditionsBudgetExceeded {
30160
30185
  };
30161
30186
  var CHECKPOINT_READ_LIMIT = 256;
30187
+ var INVENTORY_CONCURRENCY = 16;
30162
30188
  var BoundedWorkUnavailable = class extends Error {
30163
30189
  };
30164
30190
  var ReadBudget = class _ReadBudget extends AdditionsBudget {
@@ -30277,10 +30303,10 @@ function createDurableAdditions(options) {
30277
30303
  throw new Error("Additions head missing from inventory");
30278
30304
  return { snapshot, envelope: await readEnvelope(scope, slot, budget) };
30279
30305
  }
30280
- async function readDocument(scope, budget, source, search) {
30306
+ async function readDocument(scope, budget, source, search, prefetched) {
30281
30307
  const { relevant, after } = sourceWindow(source);
30282
30308
  const systemScope = additionsLedgerScope(scope);
30283
- const snapshot = await inventory.list(systemScope, budget.readOptions);
30309
+ const snapshot = prefetched ?? await inventory.list(systemScope, budget.readOptions);
30284
30310
  if (!snapshot.head || snapshot.head.deletedAt !== null)
30285
30311
  return null;
30286
30312
  const boundary = snapshot.versions.filter((row) => row.isTombstone && settled(row) && BigInt(row.expectedVersion) <= BigInt(snapshot.head.expectedVersion)).at(-1)?.expectedVersion ?? "0";
@@ -30400,14 +30426,15 @@ function createDurableAdditions(options) {
30400
30426
  throw new Error("Concurrent additions publication replaced the registration");
30401
30427
  await readEnvelope(scope, registered, budget);
30402
30428
  }
30403
- async function recover(scope, budget, uploaded) {
30429
+ async function recover(scope, budget, uploaded, initial, deferVerification) {
30404
30430
  budget.check();
30405
- const snapshot = await inventory.list(scope, budget.readOptions);
30431
+ const snapshot = initial?.source ?? await inventory.list(scope, budget.readOptions);
30406
30432
  budget.check();
30407
30433
  const head = snapshot.head;
30408
30434
  if (!head || head.deletedAt !== null) {
30409
30435
  const tombstone = head ? snapshot.versions.find((slot) => slot.expectedVersion === head.expectedVersion && slot.dataHash === head.dataHash && slot.metadataHash === head.metadataHash && slot.isTombstone && settled(slot)) : null;
30410
- const check2 = await inventory.list(scope, budget.readOptions);
30436
+ const check2 = deferVerification ? snapshot : await inventory.list(scope, budget.readOptions);
30437
+ deferVerification?.(snapshot);
30411
30438
  return {
30412
30439
  ledger: null,
30413
30440
  inventory: fingerprintVersionInventory(snapshot),
@@ -30420,7 +30447,9 @@ function createDurableAdditions(options) {
30420
30447
  let checkpoint = null;
30421
30448
  let inaccessibleExisting = false;
30422
30449
  try {
30423
- checkpoint = await readDocument(scope, budget, snapshot);
30450
+ if (initial?.checkpoint?.status === "rejected")
30451
+ throw initial.checkpoint.reason;
30452
+ checkpoint = await readDocument(scope, budget, snapshot, void 0, initial?.checkpoint?.status === "fulfilled" ? initial.checkpoint.value : void 0);
30424
30453
  } catch (error51) {
30425
30454
  if (error51 instanceof AdditionsBudgetExceeded || budget.signal?.aborted)
30426
30455
  throw error51;
@@ -30538,6 +30567,26 @@ function createDurableAdditions(options) {
30538
30567
  coverage = "partial";
30539
30568
  if (ledger?.incomplete || ledger?.skipped)
30540
30569
  coverage = "partial";
30570
+ const document2 = {
30571
+ version: 1,
30572
+ owner,
30573
+ network: options.network,
30574
+ scope,
30575
+ through,
30576
+ currentTotal,
30577
+ slots: folded,
30578
+ ledger
30579
+ };
30580
+ if (deferVerification && !checkpoint?.repairHead && JSON.stringify(document2) === JSON.stringify(existing)) {
30581
+ deferVerification(snapshot);
30582
+ return {
30583
+ ledger,
30584
+ through,
30585
+ currentTotal,
30586
+ coverage,
30587
+ inventory: fingerprintVersionInventory(snapshot)
30588
+ };
30589
+ }
30541
30590
  if (!budget.signal?.aborted) {
30542
30591
  const check2 = await inventory.list(scope, budget.readOptions);
30543
30592
  if (!sameInventory(snapshot, check2))
@@ -30549,16 +30598,6 @@ function createDurableAdditions(options) {
30549
30598
  coverage: "behind"
30550
30599
  };
30551
30600
  }
30552
- const document2 = {
30553
- version: 1,
30554
- owner,
30555
- network: options.network,
30556
- scope,
30557
- through,
30558
- currentTotal,
30559
- slots: folded,
30560
- ledger
30561
- };
30562
30601
  if ((!existing && !inaccessibleExisting || prefixValid || coverage === "complete") && (checkpoint?.repairHead || JSON.stringify(document2) !== JSON.stringify(existing))) {
30563
30602
  try {
30564
30603
  await publish(additionsLedgerScope(scope), { ...document2 }, budget);
@@ -30590,8 +30629,28 @@ function createDurableAdditions(options) {
30590
30629
  let scopes = [];
30591
30630
  try {
30592
30631
  scopes = (await inventory.listScopes(budget.readOptions)).filter((scope) => !isSystemScope(scope)).sort();
30632
+ const snapshots = /* @__PURE__ */ new Map();
30633
+ for (let offset = 0; offset < scopes.length; offset += INVENTORY_CONCURRENCY) {
30634
+ const batch = await Promise.allSettled(scopes.slice(offset, offset + INVENTORY_CONCURRENCY).map(async (scope) => {
30635
+ const source = await inventory.list(scope, budget.readOptions);
30636
+ const checkpoint = source.head && source.head.deletedAt === null ? await inventory.list(additionsLedgerScope(scope), budget.readOptions).then((value) => ({
30637
+ status: "fulfilled",
30638
+ value
30639
+ }), (reason) => ({
30640
+ status: "rejected",
30641
+ reason
30642
+ })) : void 0;
30643
+ return { scope, source, checkpoint };
30644
+ }));
30645
+ for (const item of batch) {
30646
+ if (item.status === "rejected")
30647
+ throw item.reason;
30648
+ snapshots.set(item.value.scope, item.value);
30649
+ }
30650
+ }
30651
+ const deferred = /* @__PURE__ */ new Map();
30593
30652
  for (const scope of scopes) {
30594
- const result2 = await recover(scope, budget);
30653
+ const result2 = await recover(scope, budget, void 0, snapshots.get(scope), (snapshot) => deferred.set(scope, snapshot));
30595
30654
  if (result2.ledger)
30596
30655
  ledgers.push({
30597
30656
  ...result2.ledger,
@@ -30602,6 +30661,17 @@ function createDurableAdditions(options) {
30602
30661
  if (result2.coverage === "behind" || result2.coverage === "partial" && coverage === "complete")
30603
30662
  coverage = result2.coverage;
30604
30663
  }
30664
+ const pending2 = [...deferred];
30665
+ for (let offset = 0; offset < pending2.length; offset += INVENTORY_CONCURRENCY) {
30666
+ const batch = await Promise.allSettled(pending2.slice(offset, offset + INVENTORY_CONCURRENCY).map(async ([scope, snapshot]) => {
30667
+ const check3 = await inventory.list(scope, budget.readOptions);
30668
+ if (!sameInventory(snapshot, check3))
30669
+ coverage = "behind";
30670
+ }));
30671
+ for (const item of batch)
30672
+ if (item.status === "rejected")
30673
+ throw item.reason;
30674
+ }
30605
30675
  const check2 = (await inventory.listScopes(budget.readOptions)).filter((scope) => !isSystemScope(scope)).sort();
30606
30676
  if (JSON.stringify(scopes) !== JSON.stringify(check2))
30607
30677
  coverage = "behind";
@@ -30641,8 +30711,18 @@ function createDurableAdditions(options) {
30641
30711
  await new Promise((resolve) => setTimeout(resolve, Math.floor(crypto.getRandomValues(new Uint8Array(1))[0] / 8)));
30642
30712
  await publish(ADDITIONS_SUMMARY_SCOPE, { ...portable }, budget);
30643
30713
  }
30644
- } catch {
30645
- result.coverage = "behind";
30714
+ } catch (error51) {
30715
+ if (error51 instanceof NeedsFencedPublicationError && error51.scope === ADDITIONS_SUMMARY_SCOPE) {
30716
+ try {
30717
+ options.onRecoveryDiagnostic?.({
30718
+ scope: ADDITIONS_SUMMARY_SCOPE,
30719
+ version: "0",
30720
+ code: "publication_blocked"
30721
+ });
30722
+ } catch {
30723
+ }
30724
+ } else
30725
+ result.coverage = "behind";
30646
30726
  }
30647
30727
  }
30648
30728
  try {
@@ -30755,23 +30835,54 @@ function additionsTransfers(value) {
30755
30835
  var worker = globalThis;
30756
30836
  var sequence = 0;
30757
30837
  var pending = /* @__PURE__ */ new Map();
30838
+ var hostWork = Promise.resolve();
30758
30839
  function rpc(method, args, budget) {
30759
- budget?.charge();
30760
- return new Promise((resolve, reject) => {
30761
- const id = ++sequence;
30762
- pending.set(id, { resolve, reject, budget });
30763
- worker.postMessage(
30764
- {
30765
- kind: "request",
30766
- id,
30767
- method,
30768
- args,
30769
- remaining: budget?.remaining ?? 0,
30770
- remainingMilliseconds: budget?.remainingMilliseconds
30771
- },
30772
- additionsTransfers(args)
30773
- );
30774
- });
30840
+ const exchange = (reservation, allowance) => {
30841
+ try {
30842
+ budget?.charge();
30843
+ } catch (error51) {
30844
+ reservation?.settle(0);
30845
+ return Promise.reject(error51);
30846
+ }
30847
+ return new Promise((resolve, reject) => {
30848
+ const id = ++sequence;
30849
+ pending.set(id, { resolve, reject, budget, reservation });
30850
+ try {
30851
+ worker.postMessage(
30852
+ {
30853
+ kind: "request",
30854
+ id,
30855
+ method,
30856
+ args,
30857
+ remaining: allowance ?? budget?.remaining ?? 0,
30858
+ remainingMilliseconds: budget?.remainingMilliseconds
30859
+ },
30860
+ additionsTransfers(args)
30861
+ );
30862
+ } catch (error51) {
30863
+ pending.delete(id);
30864
+ reservation?.settle(0);
30865
+ reject(error51);
30866
+ }
30867
+ });
30868
+ };
30869
+ if (method === "signRequest") return exchange();
30870
+ if (method === "fetch" && budget instanceof AdditionsBudget) {
30871
+ const allowance = Math.min(1024 * 1024, Math.floor(budget.remaining / 4));
30872
+ if (allowance < 1)
30873
+ return Promise.reject(
30874
+ new AdditionsBudgetExceeded("No inventory allowance")
30875
+ );
30876
+ return exchange(budget.reserve(allowance), allowance);
30877
+ }
30878
+ const result = hostWork.then(() => exchange());
30879
+ hostWork = result.then(
30880
+ () => {
30881
+ },
30882
+ () => {
30883
+ }
30884
+ );
30885
+ return result;
30775
30886
  }
30776
30887
  function hex4(bytes) {
30777
30888
  return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join(
@@ -30780,14 +30891,13 @@ function hex4(bytes) {
30780
30891
  }
30781
30892
  function createService(init) {
30782
30893
  const transport = async (method, args, budget) => await rpc(method, args, budget);
30783
- let activeBudget;
30784
- const inventory = createVersionInventoryClient({
30894
+ const inventoryFor = (budget) => createVersionInventoryClient({
30785
30895
  gatewayUrl: init.gatewayUrl,
30786
30896
  ownerAddress: init.ownerAddress,
30787
30897
  ownerSigner: {
30788
- signRequest: (params) => transport("signRequest", [params], activeBudget)
30898
+ signRequest: (params) => transport("signRequest", [params], budget)
30789
30899
  },
30790
- boundedOwnerSigner: (params) => transport("signRequest", [params], activeBudget),
30900
+ boundedOwnerSigner: (params) => transport("signRequest", [params], budget),
30791
30901
  fetch: async (input, request) => {
30792
30902
  const url2 = typeof input === "string" ? input : input instanceof URL ? input.href : input.url;
30793
30903
  const response = await transport(
@@ -30799,7 +30909,7 @@ function createService(init) {
30799
30909
  headers: [...new Headers(request?.headers)]
30800
30910
  }
30801
30911
  ],
30802
- activeBudget
30912
+ budget
30803
30913
  );
30804
30914
  return new Response(new Uint8Array(response.body), {
30805
30915
  status: response.status,
@@ -30816,7 +30926,7 @@ function createService(init) {
30816
30926
  return null;
30817
30927
  }
30818
30928
  let prior = pending2;
30819
- let snapshot = await inventory.list(scope, {
30929
+ let snapshot = await inventoryFor(budget).list(scope, {
30820
30930
  budget,
30821
30931
  signal: budget.signal
30822
30932
  });
@@ -30829,7 +30939,7 @@ function createService(init) {
30829
30939
  if (!slot) {
30830
30940
  const published = await transport("publish", [prior], budget);
30831
30941
  prior = { ...prior, expectedVersion: published.expectedVersion };
30832
- snapshot = await inventory.list(scope, {
30942
+ snapshot = await inventoryFor(budget).list(scope, {
30833
30943
  budget,
30834
30944
  signal: budget.signal
30835
30945
  });
@@ -30869,7 +30979,7 @@ function createService(init) {
30869
30979
  throw new Error("Interrupted checkpoint commitment mismatch");
30870
30980
  data = envelope.data;
30871
30981
  }
30872
- const latest = await inventory.list(scope, {
30982
+ const latest = await inventoryFor(budget).list(scope, {
30873
30983
  budget,
30874
30984
  signal: budget.signal
30875
30985
  });
@@ -30886,22 +30996,18 @@ function createService(init) {
30886
30996
  }
30887
30997
  const boundedInventory = {
30888
30998
  page: async (scope, options) => {
30889
- activeBudget = options?.budget;
30890
- return inventory.page(scope, options);
30999
+ return inventoryFor(options?.budget).page(scope, options);
30891
31000
  },
30892
31001
  list: async (scope, options) => {
30893
- activeBudget = options?.budget;
30894
31002
  if (scope.startsWith("vana.system.") && options?.budget)
30895
31003
  await reconcilePending(scope, options.budget);
30896
- return inventory.list(scope, options);
31004
+ return inventoryFor(options?.budget).list(scope, options);
30897
31005
  },
30898
31006
  listScopes: async (options) => {
30899
- activeBudget = options?.budget;
30900
- return inventory.listScopes(options);
31007
+ return inventoryFor(options?.budget).listScopes(options);
30901
31008
  },
30902
31009
  head: (scope, signal) => {
30903
- activeBudget = void 0;
30904
- return inventory.head(scope, signal);
31010
+ return inventoryFor().head(scope, signal);
30905
31011
  }
30906
31012
  };
30907
31013
  const reported = /* @__PURE__ */ new Set();
@@ -30946,11 +31052,10 @@ function createService(init) {
30946
31052
  },
30947
31053
  decrypt: decryptBoundedAdditions,
30948
31054
  async publish(scope, data, budget) {
30949
- activeBudget = budget;
30950
31055
  const prior = await reconcilePending(scope, budget);
30951
31056
  if (prior && JSON.stringify(prior.data) === JSON.stringify(data))
30952
31057
  return prior.proof;
30953
- const snapshot = await inventory.list(scope, {
31058
+ const snapshot = await inventoryFor(budget).list(scope, {
30954
31059
  budget,
30955
31060
  signal: budget.signal
30956
31061
  });
@@ -30995,7 +31100,8 @@ worker.onmessage = (event) => {
30995
31100
  const request = pending.get(message.id);
30996
31101
  pending.delete(message.id);
30997
31102
  try {
30998
- request?.budget?.recordSpent(message.spent);
31103
+ if (request?.reservation) request.reservation.settle(message.spent);
31104
+ else request?.budget?.recordSpent(message.spent);
30999
31105
  request?.budget?.charge();
31000
31106
  if (message.error)
31001
31107
  request?.reject(
@@ -1,4 +1,4 @@
1
- import { AdditionsBudgetExceeded, createDurableAdditions, createVersionInventoryClient, findCheckpointRegistration, } from "@opendatalabs/personal-server-ts-core/additions";
1
+ import { AdditionsBudget, AdditionsBudgetExceeded, createDurableAdditions, createVersionInventoryClient, findCheckpointRegistration, } from "@opendatalabs/personal-server-ts-core/additions";
2
2
  import { createDataFileEnvelope, DataFileEnvelopeSchema, deriveScopeKey, encryptWithPassword, } from "@opendatalabs/vana-sdk/browser";
3
3
  import { NeedsFencedPublicationError } from "@opendatalabs/personal-server-ts-core/publication";
4
4
  import { keccak256, stringToHex } from "viem";
@@ -7,20 +7,52 @@ import { additionsTransfers } from "./additions-protocol.js";
7
7
  const worker = globalThis;
8
8
  let sequence = 0;
9
9
  const pending = new Map();
10
+ let hostWork = Promise.resolve();
10
11
  function rpc(method, args, budget) {
11
- budget?.charge();
12
- return new Promise((resolve, reject) => {
13
- const id = ++sequence;
14
- pending.set(id, { resolve, reject, budget });
15
- worker.postMessage({
16
- kind: "request",
17
- id,
18
- method,
19
- args,
20
- remaining: budget?.remaining ?? 0,
21
- remainingMilliseconds: budget?.remainingMilliseconds,
22
- }, additionsTransfers(args));
23
- });
12
+ // Small inventory bodies can overlap only after their full host allowances
13
+ // are held in the shared budget. Other host work stays serial and sees the
14
+ // reduced allowance, never bytes already promised to an in-flight response.
15
+ const exchange = (reservation, allowance) => {
16
+ try {
17
+ budget?.charge();
18
+ }
19
+ catch (error) {
20
+ reservation?.settle(0);
21
+ return Promise.reject(error);
22
+ }
23
+ return new Promise((resolve, reject) => {
24
+ const id = ++sequence;
25
+ pending.set(id, { resolve, reject, budget, reservation });
26
+ try {
27
+ worker.postMessage({
28
+ kind: "request",
29
+ id,
30
+ method,
31
+ args,
32
+ remaining: allowance ?? budget?.remaining ?? 0,
33
+ remainingMilliseconds: budget?.remainingMilliseconds,
34
+ }, additionsTransfers(args));
35
+ }
36
+ catch (error) {
37
+ pending.delete(id);
38
+ reservation?.settle(0);
39
+ reject(error);
40
+ }
41
+ });
42
+ };
43
+ if (method === "signRequest")
44
+ return exchange();
45
+ if (method === "fetch" && budget instanceof AdditionsBudget) {
46
+ // Version pages contain at most 100 rows in this lane. Keep per-response
47
+ // work finite as well as aggregate work; leave room for JSON validation.
48
+ const allowance = Math.min(1024 * 1024, Math.floor(budget.remaining / 4));
49
+ if (allowance < 1)
50
+ return Promise.reject(new AdditionsBudgetExceeded("No inventory allowance"));
51
+ return exchange(budget.reserve(allowance), allowance);
52
+ }
53
+ const result = hostWork.then(() => exchange());
54
+ hostWork = result.then(() => { }, () => { });
55
+ return result;
24
56
  }
25
57
  function hex(bytes) {
26
58
  return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
@@ -29,14 +61,13 @@ function createService(init) {
29
61
  // Responses are trusted messages from our own host module; all network JSON is
30
62
  // still decoded and schema-validated by the inventory client in this worker.
31
63
  const transport = async (method, args, budget) => (await rpc(method, args, budget));
32
- let activeBudget;
33
- const inventory = createVersionInventoryClient({
64
+ const inventoryFor = (budget) => createVersionInventoryClient({
34
65
  gatewayUrl: init.gatewayUrl,
35
66
  ownerAddress: init.ownerAddress,
36
67
  ownerSigner: {
37
- signRequest: (params) => transport("signRequest", [params], activeBudget),
68
+ signRequest: (params) => transport("signRequest", [params], budget),
38
69
  },
39
- boundedOwnerSigner: (params) => transport("signRequest", [params], activeBudget),
70
+ boundedOwnerSigner: (params) => transport("signRequest", [params], budget),
40
71
  fetch: async (input, request) => {
41
72
  const url = typeof input === "string"
42
73
  ? input
@@ -49,7 +80,7 @@ function createService(init) {
49
80
  method: request?.method,
50
81
  headers: [...new Headers(request?.headers)],
51
82
  },
52
- ], activeBudget);
83
+ ], budget);
53
84
  return new Response(new Uint8Array(response.body), {
54
85
  status: response.status,
55
86
  headers: response.headers,
@@ -66,7 +97,7 @@ function createService(init) {
66
97
  return null;
67
98
  }
68
99
  let prior = pending;
69
- let snapshot = await inventory.list(scope, {
100
+ let snapshot = await inventoryFor(budget).list(scope, {
70
101
  budget,
71
102
  signal: budget.signal,
72
103
  });
@@ -80,7 +111,7 @@ function createService(init) {
80
111
  // The owner retries the exact bytes and resolves the current registry head.
81
112
  const published = await transport("publish", [prior], budget);
82
113
  prior = { ...prior, expectedVersion: published.expectedVersion };
83
- snapshot = await inventory.list(scope, {
114
+ snapshot = await inventoryFor(budget).list(scope, {
84
115
  budget,
85
116
  signal: budget.signal,
86
117
  });
@@ -112,7 +143,7 @@ function createService(init) {
112
143
  }
113
144
  // Other devices do not share our Web Lock. Recheck registration visibility
114
145
  // after authenticating bytes, including an unchanged but now failed intent.
115
- const latest = await inventory.list(scope, {
146
+ const latest = await inventoryFor(budget).list(scope, {
116
147
  budget,
117
148
  signal: budget.signal,
118
149
  });
@@ -135,23 +166,18 @@ function createService(init) {
135
166
  // remaining allowance and the host's session-wide cancellation signal.
136
167
  const boundedInventory = {
137
168
  page: async (scope, options) => {
138
- activeBudget = options?.budget;
139
- return inventory.page(scope, options);
169
+ return inventoryFor(options?.budget).page(scope, options);
140
170
  },
141
171
  list: async (scope, options) => {
142
- activeBudget = options?.budget;
143
172
  if (scope.startsWith("vana.system.") && options?.budget)
144
173
  await reconcilePending(scope, options.budget);
145
- return inventory.list(scope, options);
174
+ return inventoryFor(options?.budget).list(scope, options);
146
175
  },
147
176
  listScopes: async (options) => {
148
- activeBudget = options?.budget;
149
- return inventory.listScopes(options);
177
+ return inventoryFor(options?.budget).listScopes(options);
150
178
  },
151
179
  head: (scope, signal) => {
152
- // An unbudgeted read: do not charge it to an earlier call's budget.
153
- activeBudget = undefined;
154
- return inventory.head(scope, signal);
180
+ return inventoryFor().head(scope, signal);
155
181
  },
156
182
  };
157
183
  const reported = new Set();
@@ -199,11 +225,10 @@ function createService(init) {
199
225
  },
200
226
  decrypt: decryptBoundedAdditions,
201
227
  async publish(scope, data, budget) {
202
- activeBudget = budget;
203
228
  const prior = await reconcilePending(scope, budget);
204
229
  if (prior && JSON.stringify(prior.data) === JSON.stringify(data))
205
230
  return prior.proof;
206
- const snapshot = await inventory.list(scope, {
231
+ const snapshot = await inventoryFor(budget).list(scope, {
207
232
  budget,
208
233
  signal: budget.signal,
209
234
  });
@@ -235,7 +260,10 @@ worker.onmessage = (event) => {
235
260
  const request = pending.get(message.id);
236
261
  pending.delete(message.id);
237
262
  try {
238
- request?.budget?.recordSpent(message.spent);
263
+ if (request?.reservation)
264
+ request.reservation.settle(message.spent);
265
+ else
266
+ request?.budget?.recordSpent(message.spent);
239
267
  request?.budget?.charge();
240
268
  if (message.error)
241
269
  request?.reject(message.budgetExceeded
@@ -1 +1 @@
1
- {"version":3,"file":"additions-worker.js","sourceRoot":"","sources":["../src/additions-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"additions-worker.js","sourceRoot":"","sources":["../src/additions-worker.ts"],"names":[],"mappings":"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"}
@@ -30907,6 +30907,31 @@ var AdditionsBudget = class {
30907
30907
  this.used += bytes;
30908
30908
  this.parent?.charge(bytes);
30909
30909
  }
30910
+ /** Hold an in-flight host allowance before another request can spend it.
30911
+ * Settle once with the actual receipt, even after cancellation. */
30912
+ reserve(bytes) {
30913
+ this.charge(bytes);
30914
+ let settled = false;
30915
+ return {
30916
+ settle: (spent) => {
30917
+ if (settled)
30918
+ throw new Error("Additions reservation already settled");
30919
+ if (!Number.isSafeInteger(spent) || spent < 0)
30920
+ throw new AdditionsBudgetExceeded("Invalid reserved-byte receipt");
30921
+ settled = true;
30922
+ this.refund(bytes);
30923
+ this.recordSpent(spent);
30924
+ if (spent > bytes) {
30925
+ this.exhausted = true;
30926
+ throw new AdditionsBudgetExceeded("Reserved host allowance exceeded");
30927
+ }
30928
+ }
30929
+ };
30930
+ }
30931
+ refund(bytes) {
30932
+ this.used -= bytes;
30933
+ this.parent?.refund(bytes);
30934
+ }
30910
30935
  recordSpent(bytes) {
30911
30936
  if (!Number.isSafeInteger(bytes) || bytes < 0) {
30912
30937
  this.exhausted = true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendatalabs/personal-server-ts-lite",
3
- "version": "1.35.1",
3
+ "version": "1.35.2",
4
4
  "description": "Browser/WebView Personal Server Lite runtime boundary",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,7 +38,7 @@
38
38
  "build-worker": "esbuild src/additions-worker.ts --bundle --platform=browser --format=esm --target=es2022 --outfile=dist/additions-worker.bundle.js && esbuild src/history-probe.worker.ts --bundle --platform=browser --format=esm --target=es2022 --outfile=dist/history-probe-worker.bundle.js"
39
39
  },
40
40
  "dependencies": {
41
- "@opendatalabs/personal-server-ts-core": "1.35.1",
41
+ "@opendatalabs/personal-server-ts-core": "1.35.2",
42
42
  "@opendatalabs/vana-sdk": "3.23.0-pr.211.36da1d8",
43
43
  "node-forge": "^1.4.0",
44
44
  "viem": "^2.54.2",