@nimbus-sh/core 0.5.0 → 0.6.0

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 (62) hide show
  1. package/dist/_shared/cache-stats.d.ts +23 -1
  2. package/dist/_shared/cache-stats.d.ts.map +1 -1
  3. package/dist/_shared/cache-stats.js +13 -1
  4. package/dist/_shared/exports-resolver.d.ts +1 -1
  5. package/dist/_shared/exports-resolver.js +1 -1
  6. package/dist/_shared/retry.js +1 -1
  7. package/dist/constants.d.ts +5 -11
  8. package/dist/constants.d.ts.map +1 -1
  9. package/dist/constants.js +16 -56
  10. package/dist/runtime/assets-loader.js +1 -1
  11. package/dist/runtime/virtual-socket-kernel.generated.d.ts +1 -1
  12. package/dist/runtime/virtual-socket-kernel.generated.js +1 -1
  13. package/dist/vfs/seed-project.d.ts.map +1 -1
  14. package/dist/vfs/seed-project.js +1 -1
  15. package/dist/vfs/sqlite-vfs.d.ts +2 -30
  16. package/dist/vfs/sqlite-vfs.d.ts.map +1 -1
  17. package/dist/vfs/sqlite-vfs.js +7 -6
  18. package/package.json +3 -2
  19. package/src/_shared/cache-stats.ts +27 -1
  20. package/src/_shared/exports-resolver.ts +1 -1
  21. package/src/_shared/retry.ts +1 -1
  22. package/src/constants.ts +30 -60
  23. package/src/runtime/assets-loader.ts +1 -1
  24. package/src/runtime/virtual-socket-kernel.generated.ts +1 -1
  25. package/src/vfs/seed-project.ts +3 -3
  26. package/src/vfs/sqlite-vfs.ts +24 -41
  27. package/dist/_shared/install-phase.d.ts +0 -47
  28. package/dist/_shared/install-phase.d.ts.map +0 -1
  29. package/dist/_shared/install-phase.js +0 -1
  30. package/dist/_shared/rpc-dispose.d.ts +0 -4
  31. package/dist/_shared/rpc-dispose.d.ts.map +0 -1
  32. package/dist/_shared/rpc-dispose.js +0 -30
  33. package/dist/_shared/w7-frame.d.ts +0 -79
  34. package/dist/_shared/w7-frame.d.ts.map +0 -1
  35. package/dist/_shared/w7-frame.js +0 -840
  36. package/dist/_shared/weighted-credit-pool.d.ts +0 -61
  37. package/dist/_shared/weighted-credit-pool.d.ts.map +0 -1
  38. package/dist/_shared/weighted-credit-pool.js +0 -196
  39. package/dist/observability/diag-counters.d.ts +0 -236
  40. package/dist/observability/diag-counters.d.ts.map +0 -1
  41. package/dist/observability/diag-counters.js +0 -195
  42. package/dist/observability/heap-estimate.d.ts +0 -225
  43. package/dist/observability/heap-estimate.d.ts.map +0 -1
  44. package/dist/observability/heap-estimate.js +0 -185
  45. package/dist/observability/heavy-alloc-coord.d.ts +0 -93
  46. package/dist/observability/heavy-alloc-coord.d.ts.map +0 -1
  47. package/dist/observability/heavy-alloc-coord.js +0 -181
  48. package/dist/observability/oom-classify.d.ts +0 -138
  49. package/dist/observability/oom-classify.d.ts.map +0 -1
  50. package/dist/observability/oom-classify.js +0 -268
  51. package/dist/observability/oom-discriminator.d.ts +0 -176
  52. package/dist/observability/oom-discriminator.d.ts.map +0 -1
  53. package/dist/observability/oom-discriminator.js +0 -272
  54. package/src/_shared/install-phase.ts +0 -56
  55. package/src/_shared/rpc-dispose.ts +0 -31
  56. package/src/_shared/w7-frame.ts +0 -1013
  57. package/src/_shared/weighted-credit-pool.ts +0 -244
  58. package/src/observability/diag-counters.ts +0 -343
  59. package/src/observability/heap-estimate.ts +0 -331
  60. package/src/observability/heavy-alloc-coord.ts +0 -241
  61. package/src/observability/oom-classify.ts +0 -260
  62. package/src/observability/oom-discriminator.ts +0 -405
@@ -1,268 +0,0 @@
1
- /**
2
- * oom-classify.ts — discriminator for OOM-like errors at Nimbus
3
- * boundaries.
4
- *
5
- * Why this exists
6
- * ───────────────
7
- * Nimbus has at least five distinct "the work failed" failure modes
8
- * that all surface today as either a thrown JS Error or a console
9
- * line:
10
- *
11
- * 1. SQLITE_NOMEM at the storage layer (per-DO SQLite cap, post-
12
- * STOR/SPEC: Address SQLITE_NOMEM issues).
13
- * 2. Isolate memory exhaustion → 'oom'.
14
- * 3. Isolate CPU-budget exhaustion → 'cpu_exceeded'.
15
- * 4. Structured-clone refusal (`Cannot deserialize cloned data`)
16
- * between supervisor ↔ facet RPC (32 MiB cap).
17
- * 5. RPC timeout (TimeoutError from facet-pool's per-task race).
18
- *
19
- * Plus a few platform-side terminations (subrequest cap, condemnation,
20
- * hard eviction) that the user sees but Nimbus has no first-party
21
- * signal for.
22
- *
23
- * Memory and CPU are separate buckets
24
- * ───────────────────────────────────
25
- * workerd models them as distinct trace outcomes — `exceededMemory` vs
26
- * `exceededCpu` (EventOutcome, workerd/io/outcome.capnp) — and words the
27
- * two message families so neither one's signature appears in the other:
28
- *
29
- * memory "Worker has exceeded memory limit."
30
- * "Worker exceeded memory limit."
31
- * "broken.exceededMemory; jsg.Error: Durable Object's isolate
32
- * exceeded its memory limit …"
33
- * "Memory limit exceeded" (RangeError)
34
- * cpu "Worker exceeded CPU time limit."
35
- * "Durable Object exceeded its CPU time limit and was reset."
36
- * "Python Worker exceeded CPU time limit"
37
- *
38
- * Read a low 'cpu_exceeded' count carefully: neither condition reliably
39
- * produces a message. Both are uncatchable inside the isolate that died,
40
- * so the string is only observable by a CALLER across an RPC boundary,
41
- * and Nimbus has repeatedly measured isolates vanishing with no throw at
42
- * all. Absence of 'cpu_exceeded' entries is therefore NOT evidence that
43
- * CPU was not the cause — confirm against `wrangler tail` either way.
44
- *
45
- * Without a classifier, every recordFailure() call has to stringify-
46
- * match its own error site. With this module, we pin the regex once
47
- * and reuse it everywhere.
48
- *
49
- * Inputs we accept
50
- * ────────────────
51
- * The classifier accepts:
52
- * - Error instances (read e.message)
53
- * - plain strings (use directly — for stderr-line classification at
54
- * facet-exit boundaries where we don't have an Error)
55
- * - anything else (return 'unknown')
56
- *
57
- * Output values
58
- * ─────────────
59
- * Same set used by `DiagFailure.cause` in oom-discriminator.ts. Keep
60
- * the union narrow and additive — adding a new value is fine, but
61
- * never re-purpose an existing one.
62
- */
63
- const OOM_CAUSES = [
64
- 'sqlite_nomem',
65
- 'oom',
66
- 'cpu_exceeded',
67
- 'clone_refused',
68
- 'rpc_timeout',
69
- 'subrequest_cap',
70
- 'dynamic_worker_cap',
71
- 'condemnation',
72
- 'hard_evict',
73
- 'unknown',
74
- ];
75
- export function isOomCause(input) {
76
- return OOM_CAUSES.some((cause) => cause === input);
77
- }
78
- /**
79
- * Classify an error or message string into an OomCause. Returns
80
- * 'unknown' when no signature matches — callers should still record
81
- * the message via DiagFailure.message so a human can later widen the
82
- * classifier rules.
83
- */
84
- export function classifyError(input) {
85
- const msg = readMessage(input);
86
- if (msg.length === 0)
87
- return 'unknown';
88
- return classifyMessage(msg);
89
- }
90
- /**
91
- * Variant for callers that already have the message string. Prefer
92
- * classifyError() at boundaries; this is exposed for cases where the
93
- * message has already been extracted (e.g. truncated / sanitised).
94
- */
95
- export function classifyMessage(msg) {
96
- // Use lower-case match for forgiveness; SQLITE_NOMEM is canonically
97
- // upper but stderr can be either.
98
- const m = msg.toLowerCase();
99
- // SQLITE_NOMEM signals
100
- if (m.includes('sqlite_nomem'))
101
- return 'sqlite_nomem';
102
- if (m.includes('out of memory'))
103
- return 'sqlite_nomem';
104
- if (m.includes('database or disk is full'))
105
- return 'sqlite_nomem';
106
- // Structured-clone refusal — a 32 MiB-cap cousin
107
- if (m.includes('deserialize cloned data'))
108
- return 'clone_refused';
109
- if (m.includes('could not be cloned'))
110
- return 'clone_refused';
111
- // RPC timeout (Nimbus's TimeoutError from facet-pool)
112
- if (m.includes('timeouterror'))
113
- return 'rpc_timeout';
114
- if (/\btimed?\s*out\b/.test(m))
115
- return 'rpc_timeout';
116
- // Subrequest cap (Cloudflare platform)
117
- if (m.includes('too many subrequests'))
118
- return 'subrequest_cap';
119
- // Worker Loader concurrency cap (Cloudflare platform): a Durable Object
120
- // admits ~5-6 concurrent dynamic workers, and loader-cache entries are
121
- // never released — every distinct loader.get(id) permanently consumes a
122
- // slot, so this cap recurs until the DO itself is replaced.
123
- if (m.includes('too many concurrent dynamic workers'))
124
- return 'dynamic_worker_cap';
125
- // Memory exhaustion. workerd trace outcome `exceededMemory`; in-band it
126
- // arrives as a `broken.exceededMemory` actor break, a "…exceeded [its]
127
- // memory limit" kill, or the "Memory limit exceeded" RangeError.
128
- if (m.includes('exceededmemory'))
129
- return 'oom';
130
- if (/exceeded (?:its )?memory limit/.test(m))
131
- return 'oom';
132
- if (m.includes('memory limit exceeded'))
133
- return 'oom';
134
- if (m.includes('memory limit') && m.includes('reset'))
135
- return 'oom';
136
- // CPU-budget exhaustion. A DIFFERENT platform condition from memory —
137
- // workerd reports it as trace outcome `exceededCpu`. Never fold the two:
138
- // a CPU kill recurs on the same input, a memory kill recurs on the same
139
- // working-set size, and the remedies are opposites.
140
- //
141
- // `cpu time limit` covers both scopes, which differ only by the
142
- // possessive: "Worker exceeded CPU time limit." and "Durable Object
143
- // exceeded its CPU time limit and was reset."
144
- //
145
- // Wall-clock handler timeouts are deliberately NOT matched here.
146
- // "Actor exceeded event execution time and was disconnected." is the
147
- // caller-configurable setHibernatableWebSocketEventTimeout() bound and
148
- // "Alarm exceeded its allowed execution time" is its alarm twin. Both
149
- // are elapsed-time bounds a handler blocked on I/O trips without burning
150
- // CPU, so bucketing them here would repeat the merge this split undoes.
151
- if (m.includes('cpu time limit'))
152
- return 'cpu_exceeded';
153
- if (m.includes('exceeded cpu limit'))
154
- return 'cpu_exceeded';
155
- // Explicit eviction (per CF research §A.1.2)
156
- if (m.includes('condemned'))
157
- return 'condemnation';
158
- if (m.includes('hard evict'))
159
- return 'hard_evict';
160
- return 'unknown';
161
- }
162
- /**
163
- * Transient Durable Object reset — the object was reset by the platform
164
- * mid-request for a reason unrelated to the request's own resource use:
165
- * a code deploy rolling over, or a storage-subsystem cold-start hiccup.
166
- * The in-flight request/RPC rejects, but the work itself never ran to a
167
- * conclusion and is safe to re-attempt.
168
- *
169
- * Deliberately narrow: it must NOT match resource kills ("isolate exceeded
170
- * its memory limit and was reset", "Durable Object exceeded its CPU time
171
- * limit and was reset"), which classifyMessage() routes to 'oom' and
172
- * 'cpu_exceeded' — those recur on retry and must surface, not loop. Note
173
- * both end in "and was reset"; the checks below key on the CAUSE clause,
174
- * never on the reset itself.
175
- * Observed verbatim signatures:
176
- * - "Durable Object reset because its code was updated."
177
- * - "Internal error while starting up Durable Object storage caused
178
- * object to be reset; reference = ..."
179
- * - "Internal error in Durable Object storage caused object to be reset;
180
- * reference = ..."
181
- * - "Durable Object storage operation exceeded timeout which caused
182
- * the object to be reset."
183
- *
184
- * The second and third are the SAME condition worded for two moments —
185
- * startup versus a live write — and only the first was matched here, which is
186
- * why an object reset mid-write still failed a whole install. Nimbus has
187
- * measured the live-write wording twice: a 45.7 MB single-turn write reset the
188
- * object once and the same write then succeeded 12/12 on retry
189
- * (`vfs/facet-resident-store.ts`), and it reset a session DO mid-npm-install
190
- * on 2026-08-10 (probe `agentic-cli/new/pi-official-installer`). Retrying is
191
- * bounded, so the one case that is NOT transient — crossing the object's
192
- * storage budget, which the platform also reports this way
193
- * (`loaders/process-fabric.ts`) — recurs, exhausts the budget and surfaces.
194
- */
195
- export function isTransientDoReset(input) {
196
- const m = readMessage(input).toLowerCase();
197
- if (m.length === 0)
198
- return false;
199
- if (m.includes('reset because its code was updated'))
200
- return true;
201
- if (m.includes('durable object storage caused object to be reset'))
202
- return true;
203
- if (m.includes('storage operation') && m.includes('reset'))
204
- return true;
205
- return false;
206
- }
207
- /**
208
- * Workerd shed the call because the target Durable Object's input-gate
209
- * queue was too deep or too old: "Durable Object is overloaded."
210
- *
211
- * Distinct from `isTransientDoReset` on purpose. The object is alive and
212
- * the work never started, so the call is safe to re-attempt — but the
213
- * cause is queue pressure, so the only useful retry is one that backs off
214
- * long enough for the queue to drain. Callers pair this with a longer
215
- * backoff than a reset retry uses.
216
- */
217
- export function isDoOverloaded(input) {
218
- return readMessage(input).toLowerCase().includes('durable object is overloaded');
219
- }
220
- /**
221
- * One line about a failure, in terms someone can act on.
222
- *
223
- * npm install's catch sites each wrote `e?.remoteMessage || e?.message ||
224
- * String(e)`. That reduces a failure to a bare sentence, and when the platform
225
- * declines to describe a rejected Durable Object call the sentence is the word
226
- * `internal error` — which is how `resolver-fanout layer 2 failed: internal
227
- * error` reached users for months carrying nothing at all. The message is
228
- * often the least we know: the error's class, whether the description came
229
- * from a remote isolate, and which condition it classifies as are all still in
230
- * hand, and naming them costs nothing and invents nothing.
231
- */
232
- export function describeError(input) {
233
- const remote = typeof input === 'object' && input !== null
234
- ? input.remoteMessage
235
- : undefined;
236
- const message = (typeof remote === 'string' && remote.length > 0)
237
- ? `${remote} (remote)`
238
- : readMessage(input) || String(input);
239
- const name = input instanceof Error && input.name && input.name !== 'Error'
240
- ? `${input.name}: `
241
- : '';
242
- const cause = classifyError(input);
243
- const suffix = cause !== 'unknown' ? ` [${cause}]`
244
- : isTransientDoReset(input) ? ' [transient-do-reset]'
245
- : isDoOverloaded(input) ? ' [do-overloaded]'
246
- : '';
247
- return `${name}${message}${suffix}`;
248
- }
249
- function readMessage(input) {
250
- if (input == null)
251
- return '';
252
- if (typeof input === 'string')
253
- return input;
254
- if (input instanceof Error)
255
- return input.message ?? '';
256
- // Some thrown values are plain objects with .message
257
- if (typeof input === 'object') {
258
- const m = input.message;
259
- if (typeof m === 'string')
260
- return m;
261
- }
262
- try {
263
- return String(input);
264
- }
265
- catch {
266
- return '';
267
- }
268
- }
@@ -1,176 +0,0 @@
1
- /**
2
- * oom-discriminator.ts — singleton ring buffer for OOM / failure
3
- * forensics + last-known-RPC-frame + last-known-facet-id +
4
- * session-recovery-event ring, plus snapshot/rehydrate hooks for DO
5
- * storage persistence.
6
- *
7
- * W5 (Lever 5 / J.1.1) — original module. Pairs with oom-classify.ts.
8
- * C'.2 — added the recovery_event ring.
9
- *
10
- * Why singleton-per-isolate
11
- * ─────────────────────────
12
- * Same pattern as src/observability/diag-counters.ts. The supervisor bundle
13
- * is the consumer; all writers (sqlite-vfs, facet-pool, facet-manager,
14
- * supervisor-rpc, npm-installer, nimbus-session) live in the same
15
- * isolate. Module scope provides one process-local diagnostic without
16
- * threading a handle through each writer.
17
- *
18
- * Two distinct rings
19
- * ──────────────────
20
- * - failures: things that failed (the original W5 ring).
21
- * - recoveryEvents: lifecycle transitions of the session. Cold isolate
22
- * boot → 'cold' → 'hydrated' → 'active' → 'drained'.
23
- *
24
- * Bounded-size guarantees
25
- * ───────────────────────
26
- * - failures ring: 50 entries (RING_SIZE).
27
- * - recoveryEvents ring: 50 entries (RECOVERY_RING_SIZE).
28
- * - per-message cap: 200 chars (truncated at insert).
29
- * - per-RPC-frame: single slot, one object.
30
- * - per-facet-id: single slot, one object.
31
- *
32
- * Snapshot size stays bounded even with both rings full.
33
- */
34
- import { type OomCause } from './oom-classify.js';
35
- export interface RpcFrame {
36
- method: string;
37
- payloadBytes: number;
38
- atMs: number;
39
- }
40
- export interface FacetId {
41
- codeId: string;
42
- slotIndex: number;
43
- atMs: number;
44
- }
45
- export interface DiagFailure {
46
- /** ms epoch */
47
- at: number;
48
- /** Lifecycle stage (e.g. 'install', 'resolve', 'rpc', 'facet', 'ws'). */
49
- phase: string;
50
- /** Discriminated cause. See oom-classify.ts. */
51
- cause: OomCause;
52
- /** Best-effort RSS estimate in bytes (peak observed). */
53
- rssEstimateBytes: number;
54
- /** process.memoryUsage().heapUsed if available; 0 in DO contexts. */
55
- heapUsedBytes: number;
56
- /** SqliteVFS LRU hot bytes at time of failure. */
57
- lruBytes: number;
58
- /** Sum of in-flight RPC payload bytes (best-effort). */
59
- inFlightBytes: number;
60
- /** Snapshot of the most recent RPC frame, if any. */
61
- lastRpcFrame: RpcFrame | null;
62
- /** Snapshot of the most recent facet dispatch, if any. */
63
- lastFacetId: FacetId | null;
64
- /** Optional facet exit code (when failure represents a facet termination). */
65
- exitCode?: number;
66
- /** Optional facet pid. */
67
- pid?: number;
68
- /** Free-form message; truncated to MESSAGE_CAP characters. */
69
- message?: string;
70
- }
71
- /**
72
- * Session lifecycle states for the C'.2 recovery_event ring.
73
- *
74
- * This module records state-machine transitions; it does not enforce them.
75
- *
76
- * State semantics:
77
- * - 'cold' : fresh DO instance, no in-memory session state yet.
78
- * - 'hydrated' : Phase R completed — SQL state read into in-memory cache.
79
- * - 'active' : Phase B+W+O completed — kernel/shell/terminal wired.
80
- * - 'drained' : webSocketError/Close fired; in-memory caches nulled,
81
- * SQL state freshly persisted; awaiting next reconnect.
82
- *
83
- * Trigger labels: human-readable event that caused the transition.
84
- * Examples: 'first-fetch', 'ws-upgrade', 'ws-close', 'ws-error',
85
- * 'isolate-evicted', 'manual-test'.
86
- */
87
- /** Session state union.
88
- *
89
- * The original four are the high-level lifecycle markers:
90
- * cold — never inited
91
- * hydrated — re-init complete (warm path; Phase O skipped)
92
- * active — live shell processing input
93
- * drained — webSocketError/Close fired; SQL freshly persisted
94
- *
95
- * The four [B'.4] additions are the fine-grained phases of
96
- * initSession itself, recorded as the function progresses:
97
- * rehydrate — Phase R: loading state from DO SQLite
98
- * build — Phase B: constructing Kernel/Shell/registry
99
- * wire — Phase W: attaching terminal, replaying scrollback
100
- * online — Phase O: cold-start MOTD + starter hint (cold only;
101
- * on warm re-init this phase is skipped and the
102
- * initSession ends with 'hydrated' instead)
103
- *
104
- * The phase transitions are SUPPLEMENTAL to the high-level markers,
105
- * not a replacement. Probes that look for the legacy `'hydrated'`
106
- * marker continue to work; probes that want fine-grained debugging
107
- * can grep for the phase states.
108
- */
109
- export type SessionState = 'cold' | 'hydrated' | 'active' | 'drained' | 'rehydrate' | 'build' | 'wire' | 'online';
110
- export interface DiagRecoveryEvent {
111
- /** ms epoch */
112
- at: number;
113
- /** Source state. */
114
- fromState: SessionState;
115
- /** Destination state. */
116
- toState: SessionState;
117
- /** Human-readable trigger ('ws-close', 'isolate-evicted', etc.). */
118
- trigger: string;
119
- /** _isolateGen at the time of the event. Lets a probe detect the
120
- * difference between an in-isolate transition and a cross-isolate one
121
- * (the latter implies workerd recycled the DO). */
122
- isolateGen: number;
123
- /** True when the transition could not preserve state that should
124
- * have survived (e.g. SQL persist threw or a snapshot was missing). */
125
- dataLoss: boolean;
126
- /** Number of SQL keys/rows rehydrated on a hydrated transition.
127
- * Zero when the transition is one that doesn't read SQL. */
128
- snapshotKeysRehydrated: number;
129
- /** Optional free-form notes (200 char cap). */
130
- notes?: string;
131
- }
132
- /** Append a failure to the ring. Newest first. Capped at RING_SIZE. */
133
- export declare function recordFailure(f: DiagFailure): void;
134
- /** Read a snapshot of the ring. Newest first. Caller-side mutations
135
- * do not affect the singleton. */
136
- export declare function getFailures(): DiagFailure[];
137
- /** Record the current RPC frame (called at every RPC entry). Bounded
138
- * to a single slot — the LATEST frame wins. */
139
- export declare function setLastRpcFrame(method: string, payloadBytes: number): void;
140
- export declare function getLastRpcFrame(): RpcFrame | null;
141
- /** Record the most recent facet dispatch. */
142
- export declare function setLastFacetId(codeId: string, slotIndex: number): void;
143
- export declare function getLastFacetId(): FacetId | null;
144
- /** Append a recovery event to the ring. Newest first. Capped at
145
- * RECOVERY_RING_SIZE. */
146
- export declare function recordRecoveryEvent(e: DiagRecoveryEvent): void;
147
- /** Read a snapshot of the recovery ring. Newest first. */
148
- export declare function getRecoveryEvents(): DiagRecoveryEvent[];
149
- /** Reset the recovery ring. Tests + manual operator use only. */
150
- export declare function resetRecoveryEvents(): void;
151
- /**
152
- * Build a JSON-serializable snapshot suitable for ctx.storage.put.
153
- * Bounded ≤ 40 KB even with both rings full of MESSAGE_CAP-truncated
154
- * messages. Schema version embedded so a future shape change can
155
- * cleanly reject old snapshots.
156
- *
157
- * Schema version 2 includes both failure and recovery-event rings.
158
- */
159
- export interface DiagSnapshot {
160
- /** Schema version. Bump when shape changes. */
161
- v: 2;
162
- failures: DiagFailure[];
163
- recoveryEvents: DiagRecoveryEvent[];
164
- lastRpcFrame: RpcFrame | null;
165
- lastFacetId: FacetId | null;
166
- }
167
- export declare function snapshotForStorage(): DiagSnapshot;
168
- /**
169
- * Restore from a snapshot. Garbage / null / wrong-shape input is
170
- * silently ignored. Does NOT throw — constructor-time rehydration must
171
- * never block DO startup.
172
- *
173
- * Only the current v2 schema is accepted.
174
- */
175
- export declare function rehydrateFromStorage(blob: unknown): void;
176
- //# sourceMappingURL=oom-discriminator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oom-discriminator.d.ts","sourceRoot":"","sources":["../../src/observability/oom-discriminator.ts"],"names":[],"mappings":"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"}