poe-code 12.0.5 → 12.0.7

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 (63) hide show
  1. package/README.md +24 -3
  2. package/dist/index.js +143 -21
  3. package/dist/index.js.map +4 -4
  4. package/dist/metafile.json +1 -1
  5. package/package.json +46 -5
  6. package/packages/package-lint/dist/bundle-policy.d.ts +144 -1
  7. package/packages/package-lint/dist/bundle-policy.js +289 -60
  8. package/packages/package-lint/dist/model.d.ts +2 -1
  9. package/packages/package-lint/dist/model.js +8 -1
  10. package/packages/safe-fs/dist/bridge/filesystem.d.ts +88 -0
  11. package/packages/safe-fs/dist/bridge/index.d.ts +6 -0
  12. package/packages/safe-fs/dist/bridge/stats.d.ts +4 -0
  13. package/packages/safe-fs/dist/bridge/types.d.ts +75 -0
  14. package/packages/safe-fs/dist/bridge/values.d.ts +6 -0
  15. package/packages/safe-fs/dist/contracts/errors.d.ts +3 -2
  16. package/packages/safe-fs/dist/contracts/path.d.ts +1 -6
  17. package/packages/safe-fs/dist/contracts/virtual-path.d.ts +7 -0
  18. package/packages/safe-fs/dist/core.d.ts +11 -0
  19. package/packages/safe-fs/dist/fs/mount/comparison.d.ts +1 -0
  20. package/packages/safe-fs/dist/fs/overlay/index.d.ts +2 -1
  21. package/packages/safe-fs/dist/fs/readonly/index.d.ts +2 -1
  22. package/packages/safe-fs/dist/fs/s3/authority.d.ts +3 -9
  23. package/packages/safe-fs/dist/fs/s3/registry.d.ts +10 -0
  24. package/packages/safe-fs/dist/fs/webdav/webdav.d.ts +2 -1
  25. package/packages/safe-fs/dist/node/stats.d.ts +1 -4
  26. package/packages/safe-fs/dist/node/values.d.ts +1 -6
  27. package/packages/safe-fs/dist/node-host.d.ts +1 -0
  28. package/packages/safe-fs/dist/node-unavailable.d.ts +1 -0
  29. package/packages/safe-fs/dist/platform/browser.d.ts +12 -0
  30. package/packages/safe-fs/dist/platform/node.d.ts +13 -0
  31. package/packages/safejs/dist/browser/chunks/chunk-MUKMA7ZY.js +4053 -0
  32. package/packages/safejs/dist/browser/chunks/chunk-MUKMA7ZY.js.map +7 -0
  33. package/packages/safejs/dist/browser/safe-fs-core.js +55 -0
  34. package/packages/safejs/dist/browser/safe-fs-core.js.map +7 -0
  35. package/packages/safejs/dist/browser/safe-fs.js +55 -0
  36. package/packages/safejs/dist/browser/safe-fs.js.map +7 -0
  37. package/packages/safejs/dist/chunks/chunk-F7NY24BF.js +2603 -0
  38. package/packages/safejs/dist/chunks/chunk-F7NY24BF.js.map +7 -0
  39. package/packages/safejs/dist/chunks/{chunk-XBRQ72W6.js → chunk-NDHGDM46.js} +89 -17
  40. package/packages/safejs/dist/chunks/{chunk-XBRQ72W6.js.map → chunk-NDHGDM46.js.map} +3 -3
  41. package/packages/safejs/dist/chunks/{chunk-RRSINVWT.js → chunk-NTYX57KK.js} +7 -5
  42. package/packages/safejs/dist/chunks/{chunk-RRSINVWT.js.map → chunk-NTYX57KK.js.map} +1 -1
  43. package/packages/safejs/dist/chunks/{chunk-B3G3JVCW.js → chunk-YBQUQPZV.js} +637 -3120
  44. package/packages/safejs/dist/chunks/chunk-YBQUQPZV.js.map +7 -0
  45. package/packages/safejs/dist/cli.js +4 -3
  46. package/packages/safejs/dist/cli.js.map +1 -1
  47. package/packages/safejs/dist/core.js +1 -1
  48. package/packages/safejs/dist/index.js +4 -3
  49. package/packages/safejs/dist/index.js.map +1 -1
  50. package/packages/safejs/dist/interp/methods/collection-callback.d.ts +7 -0
  51. package/packages/safejs/dist/interp/methods/collection-callback.js +68 -0
  52. package/packages/safejs/dist/interp/methods/map.js +18 -9
  53. package/packages/safejs/dist/interp/methods/set.js +17 -9
  54. package/packages/safejs/dist/safe-fs-core.js +80 -0
  55. package/packages/safejs/dist/safe-fs-core.js.map +7 -0
  56. package/packages/safejs/dist/safe-fs-node.js +94 -0
  57. package/packages/safejs/dist/safe-fs-node.js.map +7 -0
  58. package/packages/safejs/dist/safe-fs.js +20 -18
  59. package/packages/terminal-pilot/dist/commands/index.d.ts +2 -2
  60. package/packages/terminal-pilot/dist/commands/installer.d.ts +1 -1
  61. package/packages/tiny-mcp-client/dist/index.d.ts +1 -1
  62. package/packages/toolcraft/dist/mcp.d.ts +3 -3
  63. package/packages/safejs/dist/chunks/chunk-B3G3JVCW.js.map +0 -7
@@ -25137,6 +25137,67 @@ function callFunctionMethod(target, methodName, args, options, stack) {
25137
25137
  return options.callClosure(target, applyArgs, stack, thisValue);
25138
25138
  }
25139
25139
 
25140
+ // packages/safejs/src/interp/methods/collection-callback.ts
25141
+ var activeCallbacks = /* @__PURE__ */ new WeakMap();
25142
+ function enterKeyedCollectionCallback(target, keys, budget) {
25143
+ let state = activeCallbacks.get(target);
25144
+ if (state === void 0) {
25145
+ state = { cursors: /* @__PURE__ */ new Set(), leaveRunning: enterRunningState(target) };
25146
+ activeCallbacks.set(target, state);
25147
+ }
25148
+ const cursor = { budget, pending: /* @__PURE__ */ new Set() };
25149
+ state.cursors.add(cursor);
25150
+ const leave = () => {
25151
+ if (!state.cursors.delete(cursor)) return;
25152
+ cursor.pending.clear();
25153
+ budget.setRetainedDataUsage(cursor, 0);
25154
+ budget.setRetainedValues(cursor, void 0);
25155
+ if (state.cursors.size === 0) {
25156
+ activeCallbacks.delete(target);
25157
+ state.leaveRunning();
25158
+ }
25159
+ };
25160
+ try {
25161
+ budget.setRetainedDataUsage(cursor, 1);
25162
+ budget.setRetainedValues(cursor, () => cursor.pending);
25163
+ for (const key of keys) updatePendingKeys(cursor, "add", key);
25164
+ } catch (error) {
25165
+ leave();
25166
+ throw error;
25167
+ }
25168
+ return {
25169
+ next: () => {
25170
+ budget.visitNode();
25171
+ for (const key of cursor.pending) {
25172
+ cursor.pending.delete(key);
25173
+ budget.setRetainedDataUsage(cursor, 1 + cursor.pending.size);
25174
+ return { done: false, value: key };
25175
+ }
25176
+ return { done: true, value: void 0 };
25177
+ },
25178
+ leave
25179
+ };
25180
+ }
25181
+ function updateKeyedCollectionCallbacks(target, mutation, key) {
25182
+ const state = activeCallbacks.get(target);
25183
+ if (state === void 0) return;
25184
+ for (const cursor of state.cursors) updatePendingKeys(cursor, mutation, key);
25185
+ }
25186
+ function updatePendingKeys(cursor, mutation, key) {
25187
+ const { budget, pending } = cursor;
25188
+ budget.visitNode();
25189
+ if (mutation === "add") {
25190
+ const nextSize = pending.has(key) ? pending.size : pending.size + 1;
25191
+ budget.allocateCollectionEntries(nextSize);
25192
+ budget.setRetainedDataUsage(cursor, 1 + nextSize);
25193
+ pending.add(key);
25194
+ } else {
25195
+ if (mutation === "delete") pending.delete(key);
25196
+ else pending.clear();
25197
+ budget.setRetainedDataUsage(cursor, 1 + pending.size);
25198
+ }
25199
+ }
25200
+
25140
25201
  // packages/safejs/src/interp/methods/map.ts
25141
25202
  var mapMethodNames = /* @__PURE__ */ new Set([
25142
25203
  "get",
@@ -25171,34 +25232,40 @@ async function callMapMethod(target, methodName, args, options, stack = []) {
25171
25232
  return target.entries.get(args[0]);
25172
25233
  case "set": {
25173
25234
  assertCollectionMutable(target);
25174
- const nextSize = target.entries.has(args[0]) ? target.entries.size : target.entries.size + 1;
25235
+ const exists = target.entries.has(args[0]);
25236
+ const nextSize = exists ? target.entries.size : target.entries.size + 1;
25175
25237
  options.budget.allocateCollectionEntries(nextSize);
25238
+ if (!exists) updateKeyedCollectionCallbacks(target, "add", args[0]);
25176
25239
  target.entries.set(args[0], args[1]);
25177
25240
  return target;
25178
25241
  }
25179
25242
  case "has":
25180
25243
  return target.entries.has(args[0]);
25181
- case "delete":
25244
+ case "delete": {
25182
25245
  assertCollectionMutable(target);
25183
- return target.entries.delete(args[0]);
25246
+ const deleted = target.entries.delete(args[0]);
25247
+ if (deleted) updateKeyedCollectionCallbacks(target, "delete", args[0]);
25248
+ return deleted;
25249
+ }
25184
25250
  case "clear":
25185
25251
  assertCollectionMutable(target);
25186
25252
  target.entries.clear();
25253
+ updateKeyedCollectionCallbacks(target, "clear");
25187
25254
  return void 0;
25188
25255
  case "forEach": {
25189
25256
  const callback = args[0];
25190
25257
  if (!isSandboxClosure(callback)) {
25191
25258
  throw new TypeError("Map.prototype.forEach requires a callback function.");
25192
25259
  }
25193
- const leaveCallback = enterCollectionCallback(target);
25260
+ const cursor = enterKeyedCollectionCallback(target, target.entries.keys(), options.budget);
25194
25261
  try {
25195
- const entries = [...target.entries];
25196
- for (let index = 0; index < entries.length; index += 1) {
25197
- const [key, value] = entries[index];
25262
+ for (let entry = cursor.next(); !entry.done; entry = cursor.next()) {
25263
+ const key = entry.value;
25264
+ const value = target.entries.get(key);
25198
25265
  await options.callClosure(callback, [value, key, target], stack, args[1]);
25199
25266
  }
25200
25267
  } finally {
25201
- leaveCallback();
25268
+ cursor.leave();
25202
25269
  }
25203
25270
  return void 0;
25204
25271
  }
@@ -25978,34 +26045,39 @@ async function callSetMethod(target, methodName, args, options, stack = []) {
25978
26045
  switch (methodName) {
25979
26046
  case "add": {
25980
26047
  assertCollectionMutable(target);
25981
- const nextSize = target.values.has(args[0]) ? target.values.size : target.values.size + 1;
26048
+ const exists = target.values.has(args[0]);
26049
+ const nextSize = exists ? target.values.size : target.values.size + 1;
25982
26050
  options.budget.allocateCollectionEntries(nextSize);
26051
+ if (!exists) updateKeyedCollectionCallbacks(target, "add", args[0]);
25983
26052
  target.values.add(args[0]);
25984
26053
  return target;
25985
26054
  }
25986
26055
  case "has":
25987
26056
  return target.values.has(args[0]);
25988
- case "delete":
26057
+ case "delete": {
25989
26058
  assertCollectionMutable(target);
25990
- return target.values.delete(args[0]);
26059
+ const deleted = target.values.delete(args[0]);
26060
+ if (deleted) updateKeyedCollectionCallbacks(target, "delete", args[0]);
26061
+ return deleted;
26062
+ }
25991
26063
  case "clear":
25992
26064
  assertCollectionMutable(target);
25993
26065
  target.values.clear();
26066
+ updateKeyedCollectionCallbacks(target, "clear");
25994
26067
  return void 0;
25995
26068
  case "forEach": {
25996
26069
  const callback = args[0];
25997
26070
  if (!isSandboxClosure(callback)) {
25998
26071
  throw new TypeError("Set.prototype.forEach requires a callback function.");
25999
26072
  }
26000
- const leaveCallback = enterCollectionCallback(target);
26073
+ const cursor = enterKeyedCollectionCallback(target, target.values, options.budget);
26001
26074
  try {
26002
- const values = [...target.values];
26003
- for (let index = 0; index < values.length; index += 1) {
26004
- const value = values[index];
26075
+ for (let entry = cursor.next(); !entry.done; entry = cursor.next()) {
26076
+ const value = entry.value;
26005
26077
  await options.callClosure(callback, [value, value, target], stack, args[1]);
26006
26078
  }
26007
26079
  } finally {
26008
- leaveCallback();
26080
+ cursor.leave();
26009
26081
  }
26010
26082
  return void 0;
26011
26083
  }
@@ -29676,4 +29748,4 @@ export {
29676
29748
  FileSnapshotBackend,
29677
29749
  run
29678
29750
  };
29679
- //# sourceMappingURL=chunk-XBRQ72W6.js.map
29751
+ //# sourceMappingURL=chunk-NDHGDM46.js.map