@buoy-gg/agent-core 7.0.35 → 7.0.38

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 (208) hide show
  1. package/README.md +21 -14
  2. package/lib/commonjs/blocks/receipts.js +57 -1
  3. package/lib/commonjs/blocks/receipts.js.map +1 -1
  4. package/lib/commonjs/blocks/types.js +23 -2
  5. package/lib/commonjs/blocks/types.js.map +1 -1
  6. package/lib/commonjs/blocks/uiTool.js +423 -10
  7. package/lib/commonjs/blocks/uiTool.js.map +1 -1
  8. package/lib/commonjs/catalog/catalog.g.js +213 -48
  9. package/lib/commonjs/catalog/catalog.g.js.map +1 -1
  10. package/lib/commonjs/catalog/catalog.source.json +226 -48
  11. package/lib/commonjs/catalog/catalog.types.g.js +44 -0
  12. package/lib/commonjs/catalog/catalog.types.g.js.map +1 -0
  13. package/lib/commonjs/catalog/normalizeParams.js +333 -0
  14. package/lib/commonjs/catalog/normalizeParams.js.map +1 -0
  15. package/lib/commonjs/catalog/signature.js +68 -0
  16. package/lib/commonjs/catalog/signature.js.map +1 -0
  17. package/lib/commonjs/catalog/snapshotReads.js +13 -6
  18. package/lib/commonjs/catalog/snapshotReads.js.map +1 -1
  19. package/lib/commonjs/catalog/toProviderTools.js +44 -6
  20. package/lib/commonjs/catalog/toProviderTools.js.map +1 -1
  21. package/lib/commonjs/context/buildContextPack.js +367 -19
  22. package/lib/commonjs/context/buildContextPack.js.map +1 -1
  23. package/lib/commonjs/effects/digest.js +34 -0
  24. package/lib/commonjs/effects/digest.js.map +1 -0
  25. package/lib/commonjs/effects/ledger.js +98 -2
  26. package/lib/commonjs/effects/ledger.js.map +1 -1
  27. package/lib/commonjs/engine/askGate.js +287 -0
  28. package/lib/commonjs/engine/askGate.js.map +1 -0
  29. package/lib/commonjs/engine/effectFor.js +82 -1
  30. package/lib/commonjs/engine/effectFor.js.map +1 -1
  31. package/lib/commonjs/engine/evidence.js +113 -0
  32. package/lib/commonjs/engine/evidence.js.map +1 -0
  33. package/lib/commonjs/engine/historyBudget.js +363 -0
  34. package/lib/commonjs/engine/historyBudget.js.map +1 -0
  35. package/lib/commonjs/engine/retrieve.js +214 -0
  36. package/lib/commonjs/engine/retrieve.js.map +1 -0
  37. package/lib/commonjs/engine/runAgentTurn.js +1231 -120
  38. package/lib/commonjs/engine/runAgentTurn.js.map +1 -1
  39. package/lib/commonjs/engine/systemPrompt.js +103 -9
  40. package/lib/commonjs/engine/systemPrompt.js.map +1 -1
  41. package/lib/commonjs/engine/textToolCalls.js +276 -0
  42. package/lib/commonjs/engine/textToolCalls.js.map +1 -0
  43. package/lib/commonjs/engine/tokenCalibration.js +81 -0
  44. package/lib/commonjs/engine/tokenCalibration.js.map +1 -0
  45. package/lib/commonjs/engine/verify.js +300 -0
  46. package/lib/commonjs/engine/verify.js.map +1 -0
  47. package/lib/commonjs/index.js +74 -0
  48. package/lib/commonjs/index.js.map +1 -1
  49. package/lib/commonjs/policy/labels.js +19 -3
  50. package/lib/commonjs/policy/labels.js.map +1 -1
  51. package/lib/commonjs/policy/policy.js +6 -1
  52. package/lib/commonjs/policy/policy.js.map +1 -1
  53. package/lib/commonjs/policy/redact.js +42 -5
  54. package/lib/commonjs/policy/redact.js.map +1 -1
  55. package/lib/commonjs/providers/anthropic.js +340 -208
  56. package/lib/commonjs/providers/anthropic.js.map +1 -1
  57. package/lib/commonjs/providers/openai.js +237 -103
  58. package/lib/commonjs/providers/openai.js.map +1 -1
  59. package/lib/commonjs/providers/problem.js +98 -0
  60. package/lib/commonjs/providers/problem.js.map +1 -0
  61. package/lib/commonjs/providers/sse.js +170 -34
  62. package/lib/commonjs/providers/sse.js.map +1 -1
  63. package/lib/commonjs/providers/streamTimer.js +123 -0
  64. package/lib/commonjs/providers/streamTimer.js.map +1 -0
  65. package/lib/commonjs/providers/transport.js +123 -0
  66. package/lib/commonjs/providers/transport.js.map +1 -0
  67. package/lib/commonjs/providers/xhrStream.js +212 -0
  68. package/lib/commonjs/providers/xhrStream.js.map +1 -0
  69. package/lib/commonjs/session.js +242 -58
  70. package/lib/commonjs/session.js.map +1 -1
  71. package/lib/module/blocks/receipts.js +57 -1
  72. package/lib/module/blocks/receipts.js.map +1 -1
  73. package/lib/module/blocks/types.js +23 -2
  74. package/lib/module/blocks/types.js.map +1 -1
  75. package/lib/module/blocks/uiTool.js +421 -10
  76. package/lib/module/blocks/uiTool.js.map +1 -1
  77. package/lib/module/catalog/catalog.g.js +213 -48
  78. package/lib/module/catalog/catalog.g.js.map +1 -1
  79. package/lib/module/catalog/catalog.source.json +226 -48
  80. package/lib/module/catalog/catalog.types.g.js +40 -0
  81. package/lib/module/catalog/catalog.types.g.js.map +1 -0
  82. package/lib/module/catalog/normalizeParams.js +327 -0
  83. package/lib/module/catalog/normalizeParams.js.map +1 -0
  84. package/lib/module/catalog/signature.js +63 -0
  85. package/lib/module/catalog/signature.js.map +1 -0
  86. package/lib/module/catalog/snapshotReads.js +13 -6
  87. package/lib/module/catalog/snapshotReads.js.map +1 -1
  88. package/lib/module/catalog/toProviderTools.js +44 -6
  89. package/lib/module/catalog/toProviderTools.js.map +1 -1
  90. package/lib/module/context/buildContextPack.js +366 -19
  91. package/lib/module/context/buildContextPack.js.map +1 -1
  92. package/lib/module/effects/digest.js +29 -0
  93. package/lib/module/effects/digest.js.map +1 -0
  94. package/lib/module/effects/ledger.js +98 -2
  95. package/lib/module/effects/ledger.js.map +1 -1
  96. package/lib/module/engine/askGate.js +280 -0
  97. package/lib/module/engine/askGate.js.map +1 -0
  98. package/lib/module/engine/effectFor.js +83 -1
  99. package/lib/module/engine/effectFor.js.map +1 -1
  100. package/lib/module/engine/evidence.js +107 -0
  101. package/lib/module/engine/evidence.js.map +1 -0
  102. package/lib/module/engine/historyBudget.js +355 -0
  103. package/lib/module/engine/historyBudget.js.map +1 -0
  104. package/lib/module/engine/retrieve.js +210 -0
  105. package/lib/module/engine/retrieve.js.map +1 -0
  106. package/lib/module/engine/runAgentTurn.js +1227 -121
  107. package/lib/module/engine/runAgentTurn.js.map +1 -1
  108. package/lib/module/engine/systemPrompt.js +101 -9
  109. package/lib/module/engine/systemPrompt.js.map +1 -1
  110. package/lib/module/engine/textToolCalls.js +270 -0
  111. package/lib/module/engine/textToolCalls.js.map +1 -0
  112. package/lib/module/engine/tokenCalibration.js +75 -0
  113. package/lib/module/engine/tokenCalibration.js.map +1 -0
  114. package/lib/module/engine/verify.js +292 -0
  115. package/lib/module/engine/verify.js.map +1 -0
  116. package/lib/module/index.js +7 -3
  117. package/lib/module/index.js.map +1 -1
  118. package/lib/module/policy/labels.js +19 -3
  119. package/lib/module/policy/labels.js.map +1 -1
  120. package/lib/module/policy/policy.js +6 -1
  121. package/lib/module/policy/policy.js.map +1 -1
  122. package/lib/module/policy/redact.js +42 -5
  123. package/lib/module/policy/redact.js.map +1 -1
  124. package/lib/module/providers/anthropic.js +341 -209
  125. package/lib/module/providers/anthropic.js.map +1 -1
  126. package/lib/module/providers/openai.js +238 -104
  127. package/lib/module/providers/openai.js.map +1 -1
  128. package/lib/module/providers/problem.js +92 -0
  129. package/lib/module/providers/problem.js.map +1 -0
  130. package/lib/module/providers/sse.js +166 -34
  131. package/lib/module/providers/sse.js.map +1 -1
  132. package/lib/module/providers/streamTimer.js +118 -0
  133. package/lib/module/providers/streamTimer.js.map +1 -0
  134. package/lib/module/providers/transport.js +119 -0
  135. package/lib/module/providers/transport.js.map +1 -0
  136. package/lib/module/providers/xhrStream.js +207 -0
  137. package/lib/module/providers/xhrStream.js.map +1 -0
  138. package/lib/module/session.js +226 -60
  139. package/lib/module/session.js.map +1 -1
  140. package/lib/typescript/blocks/receipts.d.ts +5 -0
  141. package/lib/typescript/blocks/receipts.d.ts.map +1 -1
  142. package/lib/typescript/blocks/types.d.ts +23 -2
  143. package/lib/typescript/blocks/types.d.ts.map +1 -1
  144. package/lib/typescript/blocks/uiTool.d.ts +11 -2
  145. package/lib/typescript/blocks/uiTool.d.ts.map +1 -1
  146. package/lib/typescript/catalog/catalog.g.d.ts +2 -2
  147. package/lib/typescript/catalog/catalog.g.d.ts.map +1 -1
  148. package/lib/typescript/catalog/catalog.types.g.d.ts +40 -0
  149. package/lib/typescript/catalog/catalog.types.g.d.ts.map +1 -0
  150. package/lib/typescript/catalog/normalizeParams.d.ts +43 -0
  151. package/lib/typescript/catalog/normalizeParams.d.ts.map +1 -0
  152. package/lib/typescript/catalog/signature.d.ts +29 -0
  153. package/lib/typescript/catalog/signature.d.ts.map +1 -0
  154. package/lib/typescript/catalog/snapshotReads.d.ts.map +1 -1
  155. package/lib/typescript/catalog/toProviderTools.d.ts +28 -15
  156. package/lib/typescript/catalog/toProviderTools.d.ts.map +1 -1
  157. package/lib/typescript/context/buildContextPack.d.ts +24 -2
  158. package/lib/typescript/context/buildContextPack.d.ts.map +1 -1
  159. package/lib/typescript/effects/digest.d.ts +10 -0
  160. package/lib/typescript/effects/digest.d.ts.map +1 -0
  161. package/lib/typescript/effects/ledger.d.ts +73 -0
  162. package/lib/typescript/effects/ledger.d.ts.map +1 -1
  163. package/lib/typescript/engine/askGate.d.ts +29 -0
  164. package/lib/typescript/engine/askGate.d.ts.map +1 -0
  165. package/lib/typescript/engine/effectFor.d.ts +6 -1
  166. package/lib/typescript/engine/effectFor.d.ts.map +1 -1
  167. package/lib/typescript/engine/evidence.d.ts +67 -0
  168. package/lib/typescript/engine/evidence.d.ts.map +1 -0
  169. package/lib/typescript/engine/historyBudget.d.ts +115 -0
  170. package/lib/typescript/engine/historyBudget.d.ts.map +1 -0
  171. package/lib/typescript/engine/retrieve.d.ts +32 -0
  172. package/lib/typescript/engine/retrieve.d.ts.map +1 -0
  173. package/lib/typescript/engine/runAgentTurn.d.ts +179 -3
  174. package/lib/typescript/engine/runAgentTurn.d.ts.map +1 -1
  175. package/lib/typescript/engine/systemPrompt.d.ts +80 -0
  176. package/lib/typescript/engine/systemPrompt.d.ts.map +1 -1
  177. package/lib/typescript/engine/textToolCalls.d.ts +58 -0
  178. package/lib/typescript/engine/textToolCalls.d.ts.map +1 -0
  179. package/lib/typescript/engine/tokenCalibration.d.ts +46 -0
  180. package/lib/typescript/engine/tokenCalibration.d.ts.map +1 -0
  181. package/lib/typescript/engine/verify.d.ts +67 -0
  182. package/lib/typescript/engine/verify.d.ts.map +1 -0
  183. package/lib/typescript/index.d.ts +7 -3
  184. package/lib/typescript/index.d.ts.map +1 -1
  185. package/lib/typescript/policy/labels.d.ts.map +1 -1
  186. package/lib/typescript/policy/policy.d.ts.map +1 -1
  187. package/lib/typescript/policy/redact.d.ts.map +1 -1
  188. package/lib/typescript/providers/anthropic.d.ts.map +1 -1
  189. package/lib/typescript/providers/openai.d.ts +0 -16
  190. package/lib/typescript/providers/openai.d.ts.map +1 -1
  191. package/lib/typescript/providers/problem.d.ts +50 -0
  192. package/lib/typescript/providers/problem.d.ts.map +1 -0
  193. package/lib/typescript/providers/sse.d.ts +86 -2
  194. package/lib/typescript/providers/sse.d.ts.map +1 -1
  195. package/lib/typescript/providers/streamTimer.d.ts +59 -0
  196. package/lib/typescript/providers/streamTimer.d.ts.map +1 -0
  197. package/lib/typescript/providers/transport.d.ts +48 -0
  198. package/lib/typescript/providers/transport.d.ts.map +1 -0
  199. package/lib/typescript/providers/types.d.ts +105 -3
  200. package/lib/typescript/providers/types.d.ts.map +1 -1
  201. package/lib/typescript/providers/xhrStream.d.ts +45 -0
  202. package/lib/typescript/providers/xhrStream.d.ts.map +1 -0
  203. package/lib/typescript/session.d.ts +55 -4
  204. package/lib/typescript/session.d.ts.map +1 -1
  205. package/lib/typescript/types.d.ts +6 -0
  206. package/lib/typescript/types.d.ts.map +1 -1
  207. package/package.json +10 -10
  208. package/LICENSE +0 -58
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CATALOG_ACTIONS = void 0;
7
+ /**
8
+ * GENERATED by scripts/gen-agent-catalog.mjs — do not edit.
9
+ * Source: packages/agent-core/src/catalog/catalog.source.json
10
+ *
11
+ * The catalog's tool ids and action names as types, so a wrong name fails
12
+ * at compile time. `catalog.g.ts` carries the data.
13
+ *
14
+ * 24 Buoy tools, 196 actions.
15
+ */
16
+
17
+ /** Action names per tool — the runtime mirror of {@link CatalogActionMap}. */
18
+ const CATALOG_ACTIONS = exports.CATALOG_ACTIONS = {
19
+ "env": ["getSnapshot"],
20
+ "console": ["getSnapshot", "clearEntries"],
21
+ "sentry": ["getSnapshot", "clearEnvelopes"],
22
+ "jotai": ["listAtoms", "getAtomValue", "getChangeDetail", "setAtom", "clearEvents"],
23
+ "route-events": ["getSnapshot", "getCurrentRoute", "navigate", "stackGoBack", "stackNavigateToIndex", "stackPopToIndex", "stackPopToTop", "clearEvents"],
24
+ "debug-borders": ["cycleMode", "setMode"],
25
+ "zustand": ["listStores", "getStoreState", "getChangeDetail", "setState", "rehydrate", "clearEvents"],
26
+ "redux": ["getState", "getActionDetail", "dispatch", "clearEvents"],
27
+ "impersonate": ["searchUsers", "startImpersonation", "stopImpersonation", "pauseImpersonation", "resumeImpersonation", "updateSettings", "removeFromHistory", "clearHistory"],
28
+ "query": ["listQueries", "getQueryData", "refetch", "invalidate", "reset", "remove", "setQueryData", "triggerError", "restoreError", "triggerLoading", "restoreLoading", "clearQueryCache", "clearMutationCache", "setOnline"],
29
+ "events": ["exportEvents", "setEnabledSources", "clearEvents"],
30
+ "network": ["getSnapshot", "getCaptureStatus", "getEventBody", "setPinned", "setSaved", "removeSavedRecord", "clearSavedRequests", "clearPinnedRequests", "clearEvents", "listOverrideRules", "getOverrideRuleBody", "debugOverrides", "upsertOverrideRule", "setOverrideRuleEnabled", "setOverridesEnabled", "deleteOverrideRule", "clearOverrideRules", "getNetworkConditions", "setNetworkConditions"],
31
+ "js-top": ["sample", "getOriginDetail", "setEnabled", "pause", "resume", "clear"],
32
+ "app": ["ping", "reloadApp"],
33
+ "time-machine": ["list", "capture", "captureBaseline", "wipeAll", "restore", "preview", "inspect", "delete", "rename", "duplicate", "setExclusions", "setScope", "setRestoreRoute"],
34
+ "storage": ["async.getAllKeys", "async.multiGet", "async.getItem", "async.setItem", "async.removeItem", "async.multiRemove", "async.multiSet", "async.clear", "clearAppStorage", "getEventDetail", "clearEvents", "timeTravel.undo", "timeTravel.jump", "mmkv.snapshot", "mmkv.get", "mmkv.set", "mmkv.remove", "secure.keys", "secure.snapshot", "secure.get", "secure.set", "secure.delete"],
35
+ "highlight-updates": ["describeScreen", "tapElement", "waitFor", "beginMeasurement", "endMeasurement", "locateComponent", "getRenderDetail", "setEnabled", "toggle", "setSilentTracking", "toggleFreeze", "setSpotlight", "clearRenderCounts"],
36
+ "scenarios": ["listScenarios", "getScenario", "save", "acceptDraft", "discardDraft", "preview", "run", "deactivate", "delete", "setFolder", "listFolders", "getActive", "export"],
37
+ "perf-monitor": ["setEnabled", "startRecording", "stopRecording", "savePending", "discardPending", "mark", "startAutomation", "cancelAutomation", "acknowledgeAutomation", "refreshIndex", "getAutomationConfig", "setAutomationConfig", "loadReport", "deleteReport", "deleteBatch", "clearAll"],
38
+ "assets": ["list", "getDetail", "rescan", "measureSizes", "saveBaseline", "clearBaseline", "getDiff", "clearRecords", "getScanStatus"],
39
+ "tv-remote": ["arm", "getEventsSince", "setMenuCapture", "disarm", "clear"],
40
+ "focus-inspector": ["rescan", "focusElement", "setTracking", "clearHistory"],
41
+ "images": ["list", "getDetail", "getCaptureStatus", "retry", "flash", "proveSavings", "setOverride", "clearOverride", "setNetworkMode", "setBlankImages", "hardReload", "evictDisk", "massAction", "clearRecords", "clearExpoCaches"],
42
+ "ask-buoy": ["listChanges", "undoAll", "retrieve", "openProcedure"]
43
+ };
44
+ //# sourceMappingURL=catalog.types.g.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CATALOG_ACTIONS","exports"],"sourceRoot":"../../../src","sources":["catalog/catalog.types.g.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,333 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.aliasNote = aliasNote;
7
+ exports.hashQueryKey = hashQueryKey;
8
+ exports.normalizeParams = normalizeParams;
9
+ /**
10
+ * Parameter aliases — accept what models actually send.
11
+ *
12
+ * The provider sees ONE tool per Buoy tool with `params` as an open object
13
+ * (see toProviderTools.ts), so the per-action parameter names live in prose
14
+ * and every model has to reproduce them from memory. A sweep of 18 models
15
+ * against the live app showed the same handful of misses over and over, on
16
+ * cheap models AND on gpt-5 and Gemini 2.5 Pro:
17
+ *
18
+ * queryKey: [...] where the action wants queryHash (by far the #1 miss —
19
+ * the RIGHT NOW block shows keys as arrays, and
20
+ * setQueryData takes queryKey, so the model reuses it)
21
+ * requestId where network.getEventBody wants id
22
+ * newState/patch where zustand.setState wants state
23
+ * name where zustand wants storeName
24
+ * bodyPatch/body/… at the top level of upsertOverrideRule instead of inside `rule`
25
+ *
26
+ * A validation error names the right field, but a cheap model repeats the same
27
+ * wrong call or gives up, and the user sees "nothing happened". Every one of
28
+ * these is mechanically unambiguous, so it is fixed HERE, before validation,
29
+ * and the result carries a one-line note so the model learns the real name
30
+ * without failing the call. Nothing here guesses: an alias only fires when the
31
+ * canonical field is absent and the alias is present.
32
+ */
33
+
34
+ const isPlainObject = v => !!v && typeof v === "object" && !Array.isArray(v);
35
+
36
+ /**
37
+ * TanStack's default `hashKey`: JSON.stringify with plain-object keys sorted,
38
+ * so `["todos", {page:1, sort:"a"}]` hashes the same whatever order the model
39
+ * wrote the object in.
40
+ */
41
+ function hashQueryKey(key) {
42
+ return JSON.stringify(key, (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((acc, k) => {
43
+ acc[k] = val[k];
44
+ return acc;
45
+ }, {}) : val);
46
+ }
47
+
48
+ /** Rename `from` to `to` when `to` is absent and `from` is present. */
49
+ function alias(p, from, to, notes) {
50
+ if (p[to] !== undefined || p[from] === undefined) return false;
51
+ p[to] = p[from];
52
+ delete p[from];
53
+ notes.push(`Accepted \`${from}\` as \`${to}\` — the parameter is named \`${to}\`.`);
54
+ return true;
55
+ }
56
+ const QUERY_HASH_ACTIONS = new Set(["getQueryData", "refetch", "invalidate", "reset", "remove", "triggerError", "restoreError", "triggerLoading", "restoreLoading"]);
57
+
58
+ /** Fields that belong inside `rule` for network.upsertOverrideRule. */
59
+ const RULE_FIELDS = ["id", "urlPattern", "enabled", "name", "methods", "kind", "status", "statusText", "headers", "body", "bodyPatch", "bodyPath", "bodyValue", "failKind", "delayMs", "times", "alternate", "force", "bodyOmitted"];
60
+ function normalizeQuery(action, p, notes) {
61
+ if (QUERY_HASH_ACTIONS.has(action) && p.queryHash === undefined) {
62
+ // `filters: { queryKey }` — the TanStack client-API shape.
63
+ const filters = isPlainObject(p.filters) ? p.filters : undefined;
64
+ const key = p.queryKey ?? p.key ?? p.hash ?? filters?.queryKey ?? filters?.queryHash;
65
+ if (Array.isArray(key)) {
66
+ p.queryHash = hashQueryKey(key);
67
+ notes.push(`Accepted the queryKey array as the query's hash (${p.queryHash}) — the parameter is \`queryHash\`, the string from listQueries.`);
68
+ } else if (typeof key === "string") {
69
+ // A hash string under another name, or a loose "a,b,c" spelling the
70
+ // adapter resolves against the live cache.
71
+ p.queryHash = key;
72
+ notes.push(`Accepted it as \`queryHash\` — that is the parameter name.`);
73
+ }
74
+ delete p.queryKey;
75
+ delete p.key;
76
+ delete p.hash;
77
+ delete p.filters;
78
+ }
79
+ if (action === "setQueryData") {
80
+ // Models routinely tuck the write FLAGS inside `data` — `data: {item:{…},
81
+ // merge:true}` — which turns a merge into a replace and leaves a junk
82
+ // `merge`/`force` key in the cache. Lift a boolean flag out of `data` to
83
+ // the top level when the top level doesn't already set it. Guarded to
84
+ // booleans so a real data field named "merge" is never disturbed.
85
+ if (isPlainObject(p.data)) {
86
+ for (const flag of ["merge", "force"]) {
87
+ if (typeof p.data[flag] === "boolean" && p[flag] === undefined) {
88
+ p[flag] = p.data[flag];
89
+ delete p.data[flag];
90
+ notes.push(`Moved \`${flag}\` out of \`data\` to the top level — it is a write flag, not part of the value.`);
91
+ }
92
+ }
93
+ }
94
+ // `value` normally means "the patch, spelled differently". But alongside
95
+ // `path` it means the OPPOSITE — the single value that path is set to — so
96
+ // rewriting it there would turn `path:"item.name", value:"x"` into a
97
+ // top-level patch of `"x"`, silently. Only the path form reserves it.
98
+ alias(p, "newData", "data", notes) || p.path === undefined && alias(p, "value", "data", notes) || alias(p, "patch", "data", notes);
99
+ if (p.queryKey === undefined && typeof p.queryHash === "string") {
100
+ try {
101
+ const parsed = JSON.parse(p.queryHash);
102
+ if (Array.isArray(parsed)) {
103
+ p.queryKey = parsed;
104
+ notes.push("Accepted the queryHash as the key — setQueryData takes `queryKey`, the array.");
105
+ }
106
+ } catch {
107
+ /* leave it; validation will say what is missing */
108
+ }
109
+ }
110
+ if (p.patch !== undefined || p.merge === undefined) {
111
+ // A caller that said "patch" meant merge.
112
+ if (notes.some(n => n.includes("`patch`"))) p.merge = true;
113
+ }
114
+ }
115
+ }
116
+ function normalizeNetwork(action, p, notes) {
117
+ if (action === "getEventBody" || action === "setPinned" || action === "setSaved") {
118
+ alias(p, "requestId", "id", notes) || alias(p, "eventId", "id", notes);
119
+ }
120
+ if (action === "deleteOverrideRule" || action === "setOverrideRuleEnabled" || action === "getOverrideRuleBody") {
121
+ alias(p, "ruleId", "id", notes);
122
+ }
123
+ if (action === "upsertOverrideRule") {
124
+ const rule = isPlainObject(p.rule) ? {
125
+ ...p.rule
126
+ } : {};
127
+ // fromRequestId is a TOP-LEVEL field; models tuck it into the rule.
128
+ if (p.fromRequestId === undefined && typeof rule.fromRequestId === "string") {
129
+ p.fromRequestId = rule.fromRequestId;
130
+ notes.push("Accepted `rule.fromRequestId` — it is a top-level parameter, beside `rule`.");
131
+ }
132
+ delete rule.fromRequestId;
133
+ unwrapRuleSections(rule, notes);
134
+ ruleIntentWords(p, rule, notes);
135
+ // Rule fields sent flat at the top level move inside `rule`.
136
+ const moved = [];
137
+ for (const f of RULE_FIELDS) {
138
+ if (p[f] !== undefined && rule[f] === undefined) {
139
+ rule[f] = p[f];
140
+ moved.push(f);
141
+ }
142
+ delete p[f];
143
+ }
144
+ if (moved.length) notes.push(`Accepted ${moved.map(f => `\`${f}\``).join(", ")} at the top level — rule fields belong inside \`rule\`.`);
145
+ if (Object.keys(rule).length) p.rule = rule;
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Flatten the `match` / `response` wrappers models borrow from other mocking
151
+ * libraries.
152
+ *
153
+ * Our rule is flat — `{urlPattern, methods, status, body, times}`. Nearly every
154
+ * HTTP-mocking library a model has read is not: msw, nock and WireMock all group
155
+ * the matcher and the reply into separate objects. So a model that has never
156
+ * seen our schema (and it has not — `params` is an unconstrained object) writes
157
+ * the convention it knows. Measured: Claude sent
158
+ * `{times: 1, match: {method, urlPattern}, response: {status, body}}` — every
159
+ * value correct, in the shape the rest of the world uses.
160
+ *
161
+ * Only these two wrapper names, and only fields that are really ours: an
162
+ * unrecognised key inside one is left where it is rather than hoisted, so this
163
+ * cannot quietly invent a rule field that does not exist.
164
+ */
165
+ function unwrapRuleSections(rule, notes) {
166
+ for (const [wrapper, fields] of [["match", ["urlPattern", "methods", "method", "url", "pattern", "urlContains", "contains"]], ["response", ["status", "statusText", "body", "headers", "bodyPatch"]]]) {
167
+ const inner = rule[wrapper];
168
+ if (!isPlainObject(inner)) continue;
169
+ const moved = [];
170
+ for (const f of fields) {
171
+ if (inner[f] === undefined) continue;
172
+ // `method` and `url` are that library's spelling of ours.
173
+ const target = f === "method" ? "methods" : f === "url" || f === "pattern" || f === "urlContains" || f === "contains" ? "urlPattern" : f;
174
+ if (rule[target] !== undefined) continue;
175
+ rule[target] = target === "methods" && !Array.isArray(inner[f]) ? [inner[f]] : inner[f];
176
+ delete inner[f];
177
+ moved.push(f);
178
+ }
179
+ if (!moved.length) continue;
180
+ // Everything recognised moved out; drop the wrapper only if nothing is left,
181
+ // so a leftover key still surfaces as a schema error rather than vanishing.
182
+ if (!Object.keys(inner).length) delete rule[wrapper];
183
+ notes.push(`Read \`rule.${wrapper}.{${moved.join(", ")}}\` as top-level rule fields — this rule is flat, unlike msw/nock-style mocks.`);
184
+ }
185
+ }
186
+
187
+ /**
188
+ * The words models reach for when describing an override rule, mapped to the
189
+ * fields the rule actually has.
190
+ *
191
+ * MEASURED, not invented. On `api-sim/next-call-fails-once` — "make the next
192
+ * menu request fail, just the next one" — every model that acted picked the
193
+ * right tool and explained the right reason, then wrote the rule like this:
194
+ *
195
+ * grok ×3 {fail: true, once: true}
196
+ * composer {fail: true} and {maxHits: 1, fail: true}
197
+ * opus {status: 500, enabled: true}
198
+ *
199
+ * The schema wants `{kind: "fail", times: 1}`. Ten of fourteen attempts on that
200
+ * case graded `acceptable` rather than `best` for no reason except this — the
201
+ * budget was expressed as `once`/`maxHits` and silently dropped, leaving a rule
202
+ * that never expires.
203
+ *
204
+ * It is NOT a missing instruction. `times` is documented as "Use 1 for 'make the
205
+ * next call fail' so it cannot linger" — very nearly the user's own sentence —
206
+ * and every model read past it. That is the same finding as the nesting-depth
207
+ * work: the fix has to be structural, not a better sentence.
208
+ *
209
+ * Each mapping only ever makes a rule NARROWER (a budget where there was none,
210
+ * a transport failure where the kind was unstated), so a misread costs a rule
211
+ * that stops too early rather than one that runs forever.
212
+ */
213
+ function ruleIntentWords(p, rule, notes) {
214
+ // `path`/`value` is what the state tools call this, and a model that learned
215
+ // it on `zustand.setState` or `query.setQueryData` writes the same words here.
216
+ // A rule has no other meaning for either name, so accept them.
217
+ if (rule.bodyPath === undefined && typeof rule.path === "string") {
218
+ rule.bodyPath = rule.path;
219
+ if (rule.bodyValue === undefined && rule.value !== undefined) rule.bodyValue = rule.value;
220
+ delete rule.path;
221
+ delete rule.value;
222
+ notes.push("Read `path`/`value` as `bodyPath`/`bodyValue` — on a rule they address the response body.");
223
+ }
224
+ const read = key => rule[key] !== undefined ? rule[key] : p[key];
225
+ const drop = key => {
226
+ delete rule[key];
227
+ delete p[key];
228
+ };
229
+
230
+ // `mode` is the other library's name for `kind`, and models use it verbatim:
231
+ // measured on `api-sim/api-down`, alongside `match.urlContains`.
232
+ const mode = read("mode");
233
+ if (typeof mode === "string" && ["respond", "fail", "delay"].includes(mode) && rule.kind === undefined) {
234
+ rule.kind = mode;
235
+ notes.push(`Read \`mode: "${mode}"\` as \`kind: "${mode}"\`.`);
236
+ }
237
+ drop("mode");
238
+
239
+ // "fail" as a flag, rather than kind:"fail".
240
+ if (read("fail") === true && rule.kind === undefined) {
241
+ rule.kind = "fail";
242
+ notes.push("Read `fail: true` as `kind: \"fail\"` — a transport failure, as if offline.");
243
+ }
244
+ drop("fail");
245
+
246
+ // "just once" / "only the next one", in the several ways it gets written.
247
+ if (read("failOnce") === true) {
248
+ if (rule.kind === undefined) rule.kind = "fail";
249
+ if (rule.times === undefined) rule.times = 1;
250
+ notes.push("Read `failOnce: true` as `kind: \"fail\"` with `times: 1` — it fires once, then the rule disables itself.");
251
+ }
252
+ drop("failOnce");
253
+ if (read("once") === true && rule.times === undefined) {
254
+ rule.times = 1;
255
+ notes.push("Read `once: true` as `times: 1` — the rule auto-disables after one match.");
256
+ }
257
+ drop("once");
258
+
259
+ // A numeric budget under any of its other names. `limit` is deliberately NOT
260
+ // here: it means "how many to list" on half the actions in this catalog, and
261
+ // a wrong guess about a budget is a rule that stops early on a request the
262
+ // caller still needed.
263
+ for (const key of ["maxHits", "hits", "count", "maxTimes", "applyTimes"]) {
264
+ const v = read(key);
265
+ if (typeof v === "number" && Number.isFinite(v) && v > 0 && rule.times === undefined) {
266
+ rule.times = v;
267
+ notes.push(`Read \`${key}: ${v}\` as \`times: ${v}\` — the rule auto-disables after ${v} match(es).`);
268
+ }
269
+ drop(key);
270
+ }
271
+ }
272
+ function normalizeZustand(action, p, notes) {
273
+ alias(p, "name", "storeName", notes) || alias(p, "store", "storeName", notes);
274
+ if (action === "setState") {
275
+ alias(p, "statePatch", "state", notes) || alias(p, "partial", "state", notes) || alias(p, "patch", "state", notes) || alias(p, "newState", "state", notes) || alias(p, "nextState", "state", notes) ||
276
+ // See the same guard on setQueryData: with `path`, `value` is the value
277
+ // being set, not another spelling of the patch.
278
+ p.path === undefined && alias(p, "value", "state", notes);
279
+ // ALWAYS merge, never replace, unless the caller explicitly said replace.
280
+ // The adapter defaults replace:true, which throws away everything not sent
281
+ // — including the store's ACTION FUNCTIONS (setQty, removeLine, …), which
282
+ // can't cross the JSON wire, so a remote caller never has them to re-send.
283
+ // The data then looks right but the buttons that call those methods crash.
284
+ // A merge (replace:false) shallow-merges the fields sent and keeps the
285
+ // functions and untouched keys intact.
286
+ if (p.replace === undefined) {
287
+ p.replace = false;
288
+ notes.push("Applied replace:false (merge) — a store keeps action functions that can't be re-sent, and replacing would wipe them (the buttons that call them would then crash). Send replace:true only to deliberately reset the whole store.");
289
+ }
290
+ }
291
+ }
292
+ function normalizeRoutes(action, p, notes) {
293
+ if (action === "navigate") {
294
+ alias(p, "route", "path", notes) || alias(p, "to", "path", notes) || alias(p, "url", "path", notes) || alias(p, "pathname", "path", notes);
295
+ }
296
+ }
297
+
298
+ /**
299
+ * Fix the unambiguous parameter-name misses before validation. Returns the
300
+ * same object shape validation expects plus the notes to append to the result.
301
+ */
302
+ function normalizeParams(toolId, action, raw) {
303
+ const p = {
304
+ ...raw
305
+ };
306
+ const notes = [];
307
+ switch (toolId) {
308
+ case "query":
309
+ normalizeQuery(action, p, notes);
310
+ break;
311
+ case "network":
312
+ normalizeNetwork(action, p, notes);
313
+ break;
314
+ case "zustand":
315
+ normalizeZustand(action, p, notes);
316
+ break;
317
+ case "route-events":
318
+ normalizeRoutes(action, p, notes);
319
+ break;
320
+ default:
321
+ break;
322
+ }
323
+ return {
324
+ params: p,
325
+ notes
326
+ };
327
+ }
328
+
329
+ /** The one-line trailer appended to a tool result when aliases fired. */
330
+ function aliasNote(notes) {
331
+ return notes.length ? `\n\n[Buoy] ${notes.join(" ")}` : "";
332
+ }
333
+ //# sourceMappingURL=normalizeParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isPlainObject","v","Array","isArray","hashQueryKey","key","JSON","stringify","_","val","Object","keys","sort","reduce","acc","k","alias","p","from","to","notes","undefined","push","QUERY_HASH_ACTIONS","Set","RULE_FIELDS","normalizeQuery","action","has","queryHash","filters","queryKey","hash","data","flag","path","parsed","parse","patch","merge","some","n","includes","normalizeNetwork","rule","fromRequestId","unwrapRuleSections","ruleIntentWords","moved","f","length","map","join","wrapper","fields","inner","target","bodyPath","bodyValue","value","read","drop","mode","kind","times","Number","isFinite","normalizeZustand","replace","normalizeRoutes","normalizeParams","toolId","raw","params","aliasNote"],"sourceRoot":"../../../src","sources":["catalog/normalizeParams.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.paramsLine = paramsLine;
7
+ exports.signature = signature;
8
+ /**
9
+ * Rendering a JSON Schema as the one-line signature a model reads.
10
+ *
11
+ * Lifted out of `blocks/uiTool.ts`, where it was written for `buoy_ui` and
12
+ * where its own comment records the result that justifies using it everywhere:
13
+ *
14
+ * > `uiProviderTool` used to send `params: { type: "object" }` and 26 lines
15
+ * > of prose about what each kind is FOR — and not one field name. The model
16
+ * > was being asked to guess `images` vs `items` and `chips` vs `options`,
17
+ * > and it guessed wrong three rounds running.
18
+ *
19
+ * The other 24 tools still send exactly that: an open `params` object and a
20
+ * sentence promising the error will explain the shape. `normalizeParams.ts`
21
+ * exists to catch the five misses that produced most often. This renders the
22
+ * field names instead, from the SAME schema `validateParams` enforces, so what
23
+ * the model reads can never drift from what the validator accepts.
24
+ */
25
+
26
+ /** `{ url*, alt?, caption? }` — `*` marks required. */
27
+ function signature(schema, depth = 0) {
28
+ if (!schema || typeof schema !== "object") return "any";
29
+ const s = schema;
30
+ if (Array.isArray(s.anyOf)) {
31
+ return s.anyOf.map(b => signature(b, depth)).join(" | ");
32
+ }
33
+ if (s.type === "array") {
34
+ const cap = typeof s.maxItems === "number" ? ` ≤${s.maxItems}` : "";
35
+ return `[${signature(s.items, depth + 1)}${cap}]`;
36
+ }
37
+ if (s.type === "object" || s.properties) {
38
+ const props = s.properties ?? {};
39
+ const names = Object.keys(props);
40
+ if (!names.length) return "{…}";
41
+ // Three levels is every field a model has to name; below that lives the
42
+ // action's `dispatch`, which the prose already describes.
43
+ if (depth >= 3) return "{…}";
44
+ const required = new Set(s.required ?? []);
45
+ const fields = names.map(name => {
46
+ const inner = signature(props[name], depth + 1);
47
+ const mark = required.has(name) ? "*" : "";
48
+ return inner === "any" ? `${name}${mark}` : `${name}${mark}: ${inner}`;
49
+ });
50
+ return `{ ${fields.join(", ")} }`;
51
+ }
52
+ if (Array.isArray(s.enum)) return s.enum.map(v => `"${String(v)}"`).join("|");
53
+ return typeof s.type === "string" ? s.type : "any";
54
+ }
55
+
56
+ /**
57
+ * The `params:` line under an action, or "" when the action takes none.
58
+ *
59
+ * Actions with no declared properties (71 of 192) get nothing rather than an
60
+ * empty `{}` — a line that says the action takes no arguments is already said
61
+ * by its absence, and 71 of them would be pure noise.
62
+ */
63
+ function paramsLine(schema) {
64
+ const props = schema?.properties;
65
+ if (!props || Object.keys(props).length === 0) return "";
66
+ return `params: ${signature(schema)}`;
67
+ }
68
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["signature","schema","depth","s","Array","isArray","anyOf","map","b","join","type","cap","maxItems","items","properties","props","names","Object","keys","length","required","Set","fields","name","inner","mark","has","enum","v","String","paramsLine"],"sourceRoot":"../../../src","sources":["catalog/signature.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACO,SAASA,SAASA,CAACC,MAA8B,EAAEC,KAAK,GAAG,CAAC,EAAU;EAC3E,IAAI,CAACD,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE,OAAO,KAAK;EACvD,MAAME,CAAC,GAAGF,MAAiC;EAE3C,IAAIG,KAAK,CAACC,OAAO,CAACF,CAAC,CAACG,KAAK,CAAC,EAAE;IAC1B,OAAQH,CAAC,CAACG,KAAK,CAAkBC,GAAG,CAAEC,CAAC,IAAKR,SAAS,CAACQ,CAAC,EAAEN,KAAK,CAAC,CAAC,CAACO,IAAI,CAAC,KAAK,CAAC;EAC9E;EAEA,IAAIN,CAAC,CAACO,IAAI,KAAK,OAAO,EAAE;IACtB,MAAMC,GAAG,GAAG,OAAOR,CAAC,CAACS,QAAQ,KAAK,QAAQ,GAAG,KAAKT,CAAC,CAACS,QAAQ,EAAE,GAAG,EAAE;IACnE,OAAO,IAAIZ,SAAS,CAACG,CAAC,CAACU,KAAK,EAAgBX,KAAK,GAAG,CAAC,CAAC,GAAGS,GAAG,GAAG;EACjE;EAEA,IAAIR,CAAC,CAACO,IAAI,KAAK,QAAQ,IAAIP,CAAC,CAACW,UAAU,EAAE;IACvC,MAAMC,KAAK,GAAIZ,CAAC,CAACW,UAAU,IAAI,CAAC,CAAgC;IAChE,MAAME,KAAK,GAAGC,MAAM,CAACC,IAAI,CAACH,KAAK,CAAC;IAChC,IAAI,CAACC,KAAK,CAACG,MAAM,EAAE,OAAO,KAAK;IAC/B;IACA;IACA,IAAIjB,KAAK,IAAI,CAAC,EAAE,OAAO,KAAK;IAC5B,MAAMkB,QAAQ,GAAG,IAAIC,GAAG,CAAElB,CAAC,CAACiB,QAAQ,IAA6B,EAAE,CAAC;IACpE,MAAME,MAAM,GAAGN,KAAK,CAACT,GAAG,CAAEgB,IAAI,IAAK;MACjC,MAAMC,KAAK,GAAGxB,SAAS,CAACe,KAAK,CAACQ,IAAI,CAAC,EAAErB,KAAK,GAAG,CAAC,CAAC;MAC/C,MAAMuB,IAAI,GAAGL,QAAQ,CAACM,GAAG,CAACH,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE;MAC1C,OAAOC,KAAK,KAAK,KAAK,GAAG,GAAGD,IAAI,GAAGE,IAAI,EAAE,GAAG,GAAGF,IAAI,GAAGE,IAAI,KAAKD,KAAK,EAAE;IACxE,CAAC,CAAC;IACF,OAAO,KAAKF,MAAM,CAACb,IAAI,CAAC,IAAI,CAAC,IAAI;EACnC;EAEA,IAAIL,KAAK,CAACC,OAAO,CAACF,CAAC,CAACwB,IAAI,CAAC,EAAE,OAAQxB,CAAC,CAACwB,IAAI,CAAepB,GAAG,CAAEqB,CAAC,IAAK,IAAIC,MAAM,CAACD,CAAC,CAAC,GAAG,CAAC,CAACnB,IAAI,CAAC,GAAG,CAAC;EAC9F,OAAO,OAAON,CAAC,CAACO,IAAI,KAAK,QAAQ,GAAGP,CAAC,CAACO,IAAI,GAAG,KAAK;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASoB,UAAUA,CAAC7B,MAA8B,EAAU;EACjE,MAAMc,KAAK,GAAId,MAAM,EAA2Da,UAAU;EAC1F,IAAI,CAACC,KAAK,IAAIE,MAAM,CAACC,IAAI,CAACH,KAAK,CAAC,CAACI,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;EACxD,OAAO,WAAWnB,SAAS,CAACC,MAAM,CAAC,EAAE;AACvC","ignoreList":[]}
@@ -58,9 +58,16 @@ function num(value, fallback) {
58
58
  return typeof value === "number" && value > 0 ? value : fallback;
59
59
  }
60
60
 
61
- /** Newest N, matching the way every Buoy store appends. */
62
- function tail(items, limit) {
63
- return items.length <= limit ? items : items.slice(items.length - limit);
61
+ /**
62
+ * The newest N. Every Buoy event store (BaseEventStore, which network,
63
+ * console, sentry and route events all sit on) PREPENDS, so the list arrives
64
+ * newest-FIRST and the newest N are the first N. An earlier version took the
65
+ * LAST N here — the oldest — so once more than N were captured, RIGHT NOW
66
+ * showed the stalest requests and a crash that had just happened fell out of
67
+ * the console projection. Order is preserved: newest first.
68
+ */
69
+ function newest(items, limit) {
70
+ return items.length <= limit ? items : items.slice(0, limit);
64
71
  }
65
72
  function projectConsole(payload, params) {
66
73
  const entries = asArray(rec(payload).entries);
@@ -73,7 +80,7 @@ function projectConsole(payload, params) {
73
80
  if (!pattern) return true;
74
81
  return String(e.message ?? "").toLowerCase().includes(pattern);
75
82
  });
76
- const shown = tail(matched, num(params.limit, 40));
83
+ const shown = newest(matched, num(params.limit, 40));
77
84
  return {
78
85
  totalCaptured: entries.length,
79
86
  shown: shown.length,
@@ -105,7 +112,7 @@ function projectNetwork(payload, params) {
105
112
  if (!pattern) return true;
106
113
  return String(e.url ?? "").toLowerCase().includes(pattern);
107
114
  });
108
- const shown = tail(matched, num(params.limit, 25));
115
+ const shown = newest(matched, num(params.limit, 25));
109
116
  return {
110
117
  totalCaptured: events.length,
111
118
  shown: shown.length,
@@ -208,7 +215,7 @@ function projectSentry(payload, params) {
208
215
  if (!pattern) return true;
209
216
  return items.some(i => String(i.summary ?? "").toLowerCase().includes(pattern));
210
217
  });
211
- const shown = tail(matched, num(params.limit, 10));
218
+ const shown = newest(matched, num(params.limit, 10));
212
219
  return {
213
220
  status: p.status,
214
221
  totalCaptured: envelopes.length,
@@ -1 +1 @@
1
- {"version":3,"names":["_redact","require","SNAPSHOT_ACTION","exports","SEVERITY","verbose","debug","trace","log","info","warn","warning","error","asArray","value","Array","isArray","rec","num","fallback","tail","items","limit","length","slice","projectConsole","payload","params","entries","minSeverity","level","pattern","toLowerCase","undefined","matched","filter","raw","e","String","message","includes","shown","totalCaptured","map","at","timestamp","projectNetwork","p","events","isSelfTraffic","url","failedOnly","status","requests","id","method","durationMs","duration","overridden","override","hint","flattenRoutes","nodes","out","cap","node","isInternal","path","push","children","projectRoutes","sitemap","stackRaw","stack","eventsRaw","s","name","pathname","focused","isFocused","recentNavigations","from","previousPathname","to","find","currentRoute","source","routes","sitemapSource","projectEnv","env","variables","requiredEnvVars","projectSentry","envelopes","typeFilter","type","some","i","summary","origin","eventId","totalBytes","spanCount","bytes","projectSnapshot","toolId"],"sourceRoot":"../../../src","sources":["catalog/snapshotReads.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_redact","require","SNAPSHOT_ACTION","exports","SEVERITY","verbose","debug","trace","log","info","warn","warning","error","asArray","value","Array","isArray","rec","num","fallback","newest","items","limit","length","slice","projectConsole","payload","params","entries","minSeverity","level","pattern","toLowerCase","undefined","matched","filter","raw","e","String","message","includes","shown","totalCaptured","map","at","timestamp","projectNetwork","p","events","isSelfTraffic","url","failedOnly","status","requests","id","method","durationMs","duration","overridden","override","hint","flattenRoutes","nodes","out","cap","node","isInternal","path","push","children","projectRoutes","sitemap","stackRaw","stack","eventsRaw","s","name","pathname","focused","isFocused","recentNavigations","from","previousPathname","to","find","currentRoute","source","routes","sitemapSource","projectEnv","env","variables","requiredEnvVars","projectSentry","envelopes","typeFilter","type","some","i","summary","origin","eventId","totalBytes","spanCount","bytes","projectSnapshot","toolId"],"sourceRoot":"../../../src","sources":["catalog/snapshotReads.ts"],"mappings":"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","ignoreList":[]}