@ai-matrx/records 0.84.1 → 0.84.3

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.
@@ -196,6 +196,37 @@ function takePrimedTablePageBundle(organizationId, tableId, viewId) {
196
196
  primed.delete(key);
197
197
  return Date.now() - held.at < PRIMED_TTL_MS ? held.answer : null;
198
198
  }
199
+ var DOOR_REGISTRY = /* @__PURE__ */ Symbol.for("@ai-matrx/records/primed-door-answers");
200
+ function doorRegistry() {
201
+ const g = globalThis;
202
+ return g[DOOR_REGISTRY] ??= /* @__PURE__ */ new Map();
203
+ }
204
+ var PRIMED_DOOR_TTL_MS = 1e4;
205
+ function takePrimedDoorAnswer(key) {
206
+ const registry2 = doorRegistry();
207
+ const held = registry2.get(key);
208
+ if (!held) return null;
209
+ if (Date.now() - held.at < PRIMED_DOOR_TTL_MS) return { data: held.data };
210
+ registry2.delete(key);
211
+ return null;
212
+ }
213
+ function dropPrimedDoorAnswers(doors) {
214
+ const registry2 = doorRegistry();
215
+ if (!doors) {
216
+ registry2.clear();
217
+ return;
218
+ }
219
+ for (const key of [...registry2.keys()]) if (doors.some((door) => key.startsWith(`${door}|`))) registry2.delete(key);
220
+ }
221
+ var LOOK_WRITES = {
222
+ view_declare: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
223
+ view_designate: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
224
+ view_look_set: ["views", "view_look_read", "grid_layout", "table_page_bundle"],
225
+ view_record_order_set: ["views", "view_look_read", "grid_layout", "table_page_bundle"]
226
+ };
227
+ function isWritingDoor(door) {
228
+ return /(_declare|_set(_|$)|_update|_write|_delete|_restore|_archive|_upsert|_reparent|_change|_duplicate|_move|_decide|_run$|_submit|_publish|_import_|_start$|_complete|_sign$|_add$|_retire|_propose|_promote|_land$|_pin$|_mute|_snooze|_unsnooze|_clear|_unclear|_revoke|_issue|_bind|_unbind|_apply|_backfill|_sync$|_decorate|_designate|_ensure|^migrate_|^home_add|^capture_|^claim_|^record_stage|^anon_|^io_import_|^io_comment_resolve|^enrich_(declare|land|pin)|^field_(declare|duplicate|propose|restore|retire|update)|^table_(declare|ensure|from_example|move|sync)|^value_restore|^relation_own)/.test(door);
229
+ }
199
230
 
200
231
  // src/core/recordChanges.ts
201
232
  var listeners = /* @__PURE__ */ new Set();
@@ -2692,7 +2723,21 @@ function createRecordsClient(given) {
2692
2723
  bundleAsked.delete(tableId);
2693
2724
  for (const key of [...bundleParts.keys()]) if (key.includes(tableId)) bundleParts.delete(key);
2694
2725
  }
2726
+ function primedFor(door, args) {
2727
+ const look = LOOK_WRITES[door];
2728
+ if (look) {
2729
+ dropPrimedDoorAnswers(look);
2730
+ return null;
2731
+ }
2732
+ if (isWritingDoor(door)) {
2733
+ dropPrimedDoorAnswers();
2734
+ return null;
2735
+ }
2736
+ return takePrimedDoorAnswer(`${door}|${canonicalArgs(args)}`);
2737
+ }
2695
2738
  async function callDoor(door, args, where) {
2739
+ const primed = primedFor(door, args);
2740
+ if (primed) return ok(primed.data);
2696
2741
  const bundled = await fromBundle(door, args);
2697
2742
  if (bundled) return ok(bundled.data);
2698
2743
  if (!doorReady(config, door)) {
@@ -2717,6 +2762,8 @@ function createRecordsClient(given) {
2717
2762
  }
2718
2763
  async function owedDoor(door, args, where) {
2719
2764
  if (doorExists(door)) return callDoor(door, args, where);
2765
+ const primed = primedFor(door, args);
2766
+ if (primed) return ok(primed.data);
2720
2767
  const response = await config.dataSource.rpc(door, args, { schema });
2721
2768
  if (response.error) {
2722
2769
  const code = response.error.code;
@@ -2782,6 +2829,8 @@ function createRecordsClient(given) {
2782
2829
  return ok(response.data);
2783
2830
  }
2784
2831
  async function drillDoor(door, args, where) {
2832
+ const primed = primedFor(door, args);
2833
+ if (primed) return ok(primed.data);
2785
2834
  const response = await config.dataSource.rpc(door, args, { schema: DRILL_SCHEMA });
2786
2835
  if (response.error) {
2787
2836
  const refusal2 = mapPgError(response.error, where);