mcp-usage-control-cloudflare 1.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { DurableObjectStorage } from 'cloudflare:workers';
2
+ export declare const MAX_CLOUDFLARE_PRUNE_BUDGETS = 64;
3
+ export interface CloudflarePruneBudgetsCommand {
4
+ candidateBudgetIds: readonly string[];
5
+ protectedBudgetIds: readonly string[];
6
+ }
7
+ export interface CloudflarePruneBudgetsReply {
8
+ prunedIds: string[];
9
+ blockedProtectedIds: string[];
10
+ blockedActiveIds: string[];
11
+ missingIds: string[];
12
+ }
13
+ /**
14
+ * Explicit operator/application-controlled historical budget pruning.
15
+ *
16
+ * Candidates and protected/current budgets are already opaque hashes. The
17
+ * operation is bounded and transactional. It never deletes a budget referenced
18
+ * by a pending/liable reservation, including an expired row that has not yet
19
+ * gone through normal reservation recovery.
20
+ */
21
+ export declare function pruneCloudflareBudgets(storage: DurableObjectStorage, command: CloudflarePruneBudgetsCommand): CloudflarePruneBudgetsReply;
22
+ //# sourceMappingURL=maintenance-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenance-protocol.d.ts","sourceRoot":"","sources":["../src/maintenance-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAmB,MAAM,oBAAoB,CAAC;AAGhF,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,MAAM,WAAW,6BAA6B;IAC5C,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAKD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,6BAA6B,GACrC,2BAA2B,CA8D7B"}
@@ -0,0 +1,79 @@
1
+ const HASH_PATTERN = /^[a-f0-9]{64}$/;
2
+ export const MAX_CLOUDFLARE_PRUNE_BUDGETS = 64;
3
+ /**
4
+ * Explicit operator/application-controlled historical budget pruning.
5
+ *
6
+ * Candidates and protected/current budgets are already opaque hashes. The
7
+ * operation is bounded and transactional. It never deletes a budget referenced
8
+ * by a pending/liable reservation, including an expired row that has not yet
9
+ * gone through normal reservation recovery.
10
+ */
11
+ export function pruneCloudflareBudgets(storage, command) {
12
+ validateIds(command.candidateBudgetIds, 'candidateBudgetIds', true);
13
+ validateIds(command.protectedBudgetIds, 'protectedBudgetIds', false);
14
+ const protectedIds = new Set(command.protectedBudgetIds);
15
+ return storage.transactionSync(() => {
16
+ const reply = {
17
+ prunedIds: [],
18
+ blockedProtectedIds: [],
19
+ blockedActiveIds: [],
20
+ missingIds: [],
21
+ };
22
+ for (const budgetId of command.candidateBudgetIds) {
23
+ if (protectedIds.has(budgetId)) {
24
+ reply.blockedProtectedIds.push(budgetId);
25
+ continue;
26
+ }
27
+ const exists = storage.sql
28
+ .exec('SELECT id FROM budgets WHERE id = ?', budgetId)
29
+ .toArray()[0];
30
+ if (!exists) {
31
+ reply.missingIds.push(budgetId);
32
+ continue;
33
+ }
34
+ const activeScalarReference = storage.sql
35
+ .exec(`SELECT 1 AS found
36
+ FROM reservations
37
+ WHERE state IN ('pending', 'liable')
38
+ AND instr(budget_ids_json, ?) > 0
39
+ LIMIT 1`, `\"${budgetId}\"`)
40
+ .toArray()[0];
41
+ const activeVectorReference = storage.sql
42
+ .exec(`SELECT 1 AS found
43
+ FROM reservations AS r
44
+ JOIN reservation_vectors AS rv ON rv.reservation_id = r.id
45
+ JOIN json_each(rv.dimensions_json) AS dimension
46
+ JOIN json_each(json_extract(dimension.value, '$.budgetIds')) AS budget
47
+ WHERE r.state IN ('pending', 'liable')
48
+ AND budget.value = ?
49
+ LIMIT 1`, budgetId)
50
+ .toArray()[0];
51
+ if (activeScalarReference || activeVectorReference) {
52
+ reply.blockedActiveIds.push(budgetId);
53
+ continue;
54
+ }
55
+ storage.sql.exec('DELETE FROM budgets WHERE id = ?', budgetId);
56
+ reply.prunedIds.push(budgetId);
57
+ }
58
+ return reply;
59
+ });
60
+ }
61
+ function validateIds(ids, name, requireOne) {
62
+ if (!Array.isArray(ids))
63
+ throw new RangeError(`${name} must be an array`);
64
+ if (requireOne && ids.length === 0)
65
+ throw new RangeError(`${name} must not be empty`);
66
+ if (ids.length > MAX_CLOUDFLARE_PRUNE_BUDGETS) {
67
+ throw new RangeError(`${name} must contain at most ${MAX_CLOUDFLARE_PRUNE_BUDGETS} entries`);
68
+ }
69
+ const seen = new Set();
70
+ for (const id of ids) {
71
+ if (typeof id !== 'string' || !HASH_PATTERN.test(id)) {
72
+ throw new RangeError(`${name} entries must be SHA-256 hex digests`);
73
+ }
74
+ if (seen.has(id))
75
+ throw new RangeError(`${name} must not contain duplicates`);
76
+ seen.add(id);
77
+ }
78
+ }
79
+ //# sourceMappingURL=maintenance-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenance-protocol.js","sourceRoot":"","sources":["../src/maintenance-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type CloudflareDurableObjectNamespace, type CloudflareUsageStoreOptions, type RemoteCloudflareUsageStoreOptions } from './index.js';
2
+ export type CloudflareMaintenanceAuthorize = (request: Request) => boolean | Promise<boolean>;
3
+ export interface CloudflareBudgetMaintenanceGatewayOptions extends Pick<CloudflareUsageStoreOptions, 'domainName'> {
4
+ namespace: CloudflareDurableObjectNamespace;
5
+ /** Use a maintenance-specific credential/authorization policy where practical. */
6
+ authorizeMaintenance: CloudflareMaintenanceAuthorize;
7
+ /** Defaults to /v1/usage-store-maintenance. */
8
+ path?: string;
9
+ }
10
+ export type RemoteCloudflareMaintenanceOptions = Pick<RemoteCloudflareUsageStoreOptions, 'endpoint' | 'headers' | 'fetch' | 'timeoutMs'>;
11
+ export interface PruneRemoteCloudflareHistoricalBudgetsInput {
12
+ /** Exact application-selected historical budget keys to attempt to delete. */
13
+ historicalBudgetKeys: readonly string[];
14
+ /** Current/retained budget keys that must not be deleted even if also listed as historical. */
15
+ protectedCurrentBudgetKeys: readonly string[];
16
+ }
17
+ export interface PruneRemoteCloudflareHistoricalBudgetsResult {
18
+ prunedKeys: string[];
19
+ blockedProtectedKeys: string[];
20
+ blockedActiveKeys: string[];
21
+ missingKeys: string[];
22
+ }
23
+ /**
24
+ * Creates a separate authenticated maintenance endpoint. It is intentionally
25
+ * not part of the normal usage-control gateway so ordinary runtime credentials
26
+ * do not have to grant historical-data deletion rights.
27
+ */
28
+ export declare function createCloudflareBudgetMaintenanceGateway(options: CloudflareBudgetMaintenanceGatewayOptions): (request: Request) => Promise<Response>;
29
+ /**
30
+ * Explicitly attempts to delete application-selected historical budget rows.
31
+ * The caller owns window-retention semantics. Each invocation is bounded to 64
32
+ * candidate keys and 64 protected/current keys.
33
+ */
34
+ export declare function pruneRemoteCloudflareHistoricalBudgets(options: RemoteCloudflareMaintenanceOptions, input: PruneRemoteCloudflareHistoricalBudgetsInput): Promise<PruneRemoteCloudflareHistoricalBudgetsResult>;
35
+ //# sourceMappingURL=maintenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenance.d.ts","sourceRoot":"","sources":["../src/maintenance.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,gCAAgC,EACrC,KAAK,2BAA2B,EAChC,KAAK,iCAAiC,EACvC,MAAM,YAAY,CAAC;AAepB,MAAM,MAAM,8BAA8B,GAAG,CAC3C,OAAO,EAAE,OAAO,KACb,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC,MAAM,WAAW,yCACf,SAAQ,IAAI,CAAC,2BAA2B,EAAE,YAAY,CAAC;IACvD,SAAS,EAAE,gCAAgC,CAAC;IAC5C,kFAAkF;IAClF,oBAAoB,EAAE,8BAA8B,CAAC;IACrD,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,kCAAkC,GAAG,IAAI,CACnD,iCAAiC,EACjC,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAC/C,CAAC;AAEF,MAAM,WAAW,2CAA2C;IAC1D,8EAA8E;IAC9E,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,+FAA+F;IAC/F,0BAA0B,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,4CAA4C;IAC3D,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,wCAAwC,CACtD,OAAO,EAAE,yCAAyC,IASrB,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CAkDlE;AAED;;;;GAIG;AACH,wBAAsB,sCAAsC,CAC1D,OAAO,EAAE,kCAAkC,EAC3C,KAAK,EAAE,2CAA2C,GACjD,OAAO,CAAC,4CAA4C,CAAC,CAsDvD"}
@@ -0,0 +1,291 @@
1
+ import { UsageStateError } from 'mcp-usage-control';
2
+ import { CloudflareUsageTransportError, } from './index.js';
3
+ import { MAX_CLOUDFLARE_PRUNE_BUDGETS, } from './maintenance-protocol.js';
4
+ const DEFAULT_MAINTENANCE_PATH = '/v1/usage-store-maintenance';
5
+ const MAX_GATEWAY_BODY_BYTES = 65_536;
6
+ const HASH_PATTERN = /^[a-f0-9]{64}$/;
7
+ /**
8
+ * Creates a separate authenticated maintenance endpoint. It is intentionally
9
+ * not part of the normal usage-control gateway so ordinary runtime credentials
10
+ * do not have to grant historical-data deletion rights.
11
+ */
12
+ export function createCloudflareBudgetMaintenanceGateway(options) {
13
+ const path = options.path ?? DEFAULT_MAINTENANCE_PATH;
14
+ const domainName = options.domainName ?? 'default';
15
+ if (!path.startsWith('/'))
16
+ throw new RangeError('maintenance gateway path must start with /');
17
+ if (domainName.length === 0 || domainName.length > 128) {
18
+ throw new RangeError('domainName must be between 1 and 128 characters');
19
+ }
20
+ return async function handle(request) {
21
+ const url = new URL(request.url);
22
+ if (url.pathname !== path)
23
+ return responseJson({ error: 'not_found' }, 404);
24
+ if (request.method !== 'POST')
25
+ return responseJson({ error: 'method_not_allowed' }, 405);
26
+ let authorized = false;
27
+ try {
28
+ authorized = (await options.authorizeMaintenance(request)) === true;
29
+ }
30
+ catch {
31
+ authorized = false;
32
+ }
33
+ if (!authorized)
34
+ return responseJson({ error: 'unauthorized' }, 401);
35
+ const contentLength = Number(request.headers.get('content-length') ?? '0');
36
+ if (Number.isFinite(contentLength) && contentLength > MAX_GATEWAY_BODY_BYTES) {
37
+ return responseJson({ error: 'payload_too_large' }, 413);
38
+ }
39
+ let text;
40
+ try {
41
+ text = await request.text();
42
+ }
43
+ catch {
44
+ return responseJson({ error: 'invalid_request' }, 400);
45
+ }
46
+ if (new TextEncoder().encode(text).byteLength > MAX_GATEWAY_BODY_BYTES) {
47
+ return responseJson({ error: 'payload_too_large' }, 413);
48
+ }
49
+ let body;
50
+ try {
51
+ body = JSON.parse(text);
52
+ }
53
+ catch {
54
+ return responseJson({ error: 'invalid_request' }, 400);
55
+ }
56
+ if (!isMaintenanceRequest(body))
57
+ return responseJson({ error: 'invalid_request' }, 400);
58
+ let stub;
59
+ try {
60
+ stub = resolveMaintenanceStub(options.namespace, domainName);
61
+ }
62
+ catch {
63
+ return responseJson({ error: 'store_unavailable' }, 503);
64
+ }
65
+ try {
66
+ const result = await stub.pruneBudgets(body.input);
67
+ return responseJson({ version: 1, result }, 200);
68
+ }
69
+ catch {
70
+ return responseJson({ error: 'store_unavailable' }, 503);
71
+ }
72
+ };
73
+ }
74
+ /**
75
+ * Explicitly attempts to delete application-selected historical budget rows.
76
+ * The caller owns window-retention semantics. Each invocation is bounded to 64
77
+ * candidate keys and 64 protected/current keys.
78
+ */
79
+ export async function pruneRemoteCloudflareHistoricalBudgets(options, input) {
80
+ const historicalBudgetKeys = validateRawBudgetKeys(input.historicalBudgetKeys, 'historicalBudgetKeys', true);
81
+ const protectedCurrentBudgetKeys = validateRawBudgetKeys(input.protectedCurrentBudgetKeys, 'protectedCurrentBudgetKeys', false);
82
+ const candidatePairs = await Promise.all(historicalBudgetKeys.map(async (key) => [key, await digest(key)]));
83
+ const protectedPairs = await Promise.all(protectedCurrentBudgetKeys.map(async (key) => [key, await digest(key)]));
84
+ const candidateById = new Map(candidatePairs.map(([key, id]) => [id, key]));
85
+ const reply = await postMaintenance(options, {
86
+ candidateBudgetIds: candidatePairs.map(([, id]) => id),
87
+ protectedBudgetIds: protectedPairs.map(([, id]) => id),
88
+ });
89
+ const classifications = [
90
+ ['prunedKeys', reply.prunedIds],
91
+ ['blockedProtectedKeys', reply.blockedProtectedIds],
92
+ ['blockedActiveKeys', reply.blockedActiveIds],
93
+ ['missingKeys', reply.missingIds],
94
+ ];
95
+ const seen = new Set();
96
+ const result = {
97
+ prunedKeys: [],
98
+ blockedProtectedKeys: [],
99
+ blockedActiveKeys: [],
100
+ missingKeys: [],
101
+ };
102
+ for (const [target, ids] of classifications) {
103
+ for (const id of ids) {
104
+ const key = candidateById.get(id);
105
+ if (!key || seen.has(id)) {
106
+ throw new UsageStateError('Cloudflare maintenance reply did not match the requested candidates');
107
+ }
108
+ seen.add(id);
109
+ result[target].push(key);
110
+ }
111
+ }
112
+ if (seen.size !== candidatePairs.length) {
113
+ throw new UsageStateError('Cloudflare maintenance reply omitted a requested candidate');
114
+ }
115
+ return result;
116
+ }
117
+ async function postMaintenance(options, input) {
118
+ const endpoint = new URL(options.endpoint);
119
+ const isLocalHttp = endpoint.protocol === 'http:' &&
120
+ (endpoint.hostname === '127.0.0.1' || endpoint.hostname === 'localhost');
121
+ if (endpoint.protocol !== 'https:' && !isLocalHttp) {
122
+ throw new RangeError('Cloudflare maintenance endpoint must use HTTPS (local HTTP is test-only)');
123
+ }
124
+ if (endpoint.username || endpoint.password) {
125
+ throw new RangeError('Cloudflare maintenance endpoint must not embed credentials');
126
+ }
127
+ const timeoutMs = options.timeoutMs ?? 10_000;
128
+ assertPositiveInteger(timeoutMs, 'timeoutMs');
129
+ assertPortableTimerDelay(timeoutMs, 'timeoutMs');
130
+ const controller = new AbortController();
131
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
132
+ try {
133
+ let resolvedHeaders;
134
+ try {
135
+ resolvedHeaders = await waitForAbort(resolveHeaders(options.headers), controller.signal);
136
+ }
137
+ catch (error) {
138
+ if (controller.signal.aborted)
139
+ throw new CloudflareUsageTransportError('timeout');
140
+ throw error;
141
+ }
142
+ const headers = new Headers(resolvedHeaders);
143
+ headers.set('content-type', 'application/json');
144
+ headers.set('accept', 'application/json');
145
+ let response;
146
+ try {
147
+ response = await waitForAbort((options.fetch ?? fetch)(endpoint, {
148
+ method: 'POST',
149
+ headers,
150
+ body: JSON.stringify({ version: 1, method: 'prune_budgets', input }),
151
+ signal: controller.signal,
152
+ }), controller.signal);
153
+ }
154
+ catch (error) {
155
+ if (controller.signal.aborted)
156
+ throw new CloudflareUsageTransportError('timeout');
157
+ if (error instanceof CloudflareUsageTransportError)
158
+ throw error;
159
+ throw new CloudflareUsageTransportError('network');
160
+ }
161
+ if (response.status === 401 || response.status === 403) {
162
+ throw new CloudflareUsageTransportError('unauthorized', response.status);
163
+ }
164
+ if (!response.ok)
165
+ throw new CloudflareUsageTransportError('remote', response.status);
166
+ let payload;
167
+ try {
168
+ payload = await waitForAbort(response.json(), controller.signal);
169
+ }
170
+ catch (error) {
171
+ if (controller.signal.aborted)
172
+ throw new CloudflareUsageTransportError('timeout');
173
+ if (error instanceof CloudflareUsageTransportError)
174
+ throw error;
175
+ throw new CloudflareUsageTransportError('protocol', response.status);
176
+ }
177
+ if (!isMaintenanceResponse(payload)) {
178
+ throw new CloudflareUsageTransportError('protocol', response.status);
179
+ }
180
+ return payload.result;
181
+ }
182
+ finally {
183
+ clearTimeout(timer);
184
+ }
185
+ }
186
+ function resolveMaintenanceStub(namespace, domainName) {
187
+ const candidate = namespace.getByName
188
+ ? namespace.getByName(domainName)
189
+ : namespace.idFromName && namespace.get
190
+ ? namespace.get(namespace.idFromName(domainName))
191
+ : undefined;
192
+ if (!candidate)
193
+ throw new TypeError('Durable Object namespace is unavailable');
194
+ const pruneBudgets = candidate.pruneBudgets;
195
+ if (typeof pruneBudgets !== 'function') {
196
+ throw new TypeError('Durable Object does not expose budget maintenance');
197
+ }
198
+ return candidate;
199
+ }
200
+ function isMaintenanceRequest(value) {
201
+ return (isRecord(value) &&
202
+ value.version === 1 &&
203
+ value.method === 'prune_budgets' &&
204
+ isRecord(value.input) &&
205
+ isHashArray(value.input.candidateBudgetIds, true) &&
206
+ isHashArray(value.input.protectedBudgetIds, false));
207
+ }
208
+ function isMaintenanceResponse(value) {
209
+ if (!isRecord(value) || value.version !== 1 || !isRecord(value.result))
210
+ return false;
211
+ const result = value.result;
212
+ return (isHashArray(result.prunedIds, false) &&
213
+ isHashArray(result.blockedProtectedIds, false) &&
214
+ isHashArray(result.blockedActiveIds, false) &&
215
+ isHashArray(result.missingIds, false));
216
+ }
217
+ function isHashArray(value, requireOne) {
218
+ return (Array.isArray(value) &&
219
+ (!requireOne || value.length > 0) &&
220
+ value.length <= MAX_CLOUDFLARE_PRUNE_BUDGETS &&
221
+ value.every(id => typeof id === 'string' && HASH_PATTERN.test(id)) &&
222
+ new Set(value).size === value.length);
223
+ }
224
+ function validateRawBudgetKeys(keys, name, requireOne) {
225
+ if (!Array.isArray(keys))
226
+ throw new RangeError(`${name} must be an array`);
227
+ if (requireOne && keys.length === 0)
228
+ throw new RangeError(`${name} must not be empty`);
229
+ if (keys.length > MAX_CLOUDFLARE_PRUNE_BUDGETS) {
230
+ throw new RangeError(`${name} must contain at most ${MAX_CLOUDFLARE_PRUNE_BUDGETS} entries`);
231
+ }
232
+ const normalized = keys.map(key => {
233
+ if (typeof key !== 'string' || key.length === 0) {
234
+ throw new RangeError(`${name} entries must be non-empty strings`);
235
+ }
236
+ return key;
237
+ });
238
+ if (new Set(normalized).size !== normalized.length) {
239
+ throw new RangeError(`${name} must not contain duplicates`);
240
+ }
241
+ return normalized;
242
+ }
243
+ function assertPortableTimerDelay(value, name) {
244
+ if (value > 2_147_483_647) {
245
+ throw new RangeError(`${name} must not exceed 2147483647ms`);
246
+ }
247
+ }
248
+ function assertPositiveInteger(value, name) {
249
+ if (!Number.isSafeInteger(value) || value <= 0) {
250
+ throw new RangeError(`${name} must be a positive safe integer`);
251
+ }
252
+ }
253
+ async function digest(value) {
254
+ const bytes = new TextEncoder().encode(value);
255
+ const hash = await crypto.subtle.digest('SHA-256', bytes);
256
+ return Array.from(new Uint8Array(hash), byte => byte.toString(16).padStart(2, '0')).join('');
257
+ }
258
+ async function resolveHeaders(headers) {
259
+ if (typeof headers === 'function')
260
+ return headers();
261
+ return headers;
262
+ }
263
+ function waitForAbort(promise, signal) {
264
+ if (signal.aborted)
265
+ return Promise.reject(new Error('operation aborted'));
266
+ return new Promise((resolve, reject) => {
267
+ const onAbort = () => {
268
+ cleanup();
269
+ reject(new Error('operation aborted'));
270
+ };
271
+ const cleanup = () => signal.removeEventListener('abort', onAbort);
272
+ signal.addEventListener('abort', onAbort, { once: true });
273
+ void promise.then(value => {
274
+ cleanup();
275
+ resolve(value);
276
+ }, error => {
277
+ cleanup();
278
+ reject(error);
279
+ });
280
+ });
281
+ }
282
+ function responseJson(body, status) {
283
+ return new Response(JSON.stringify(body), {
284
+ status,
285
+ headers: { 'content-type': 'application/json; charset=utf-8' },
286
+ });
287
+ }
288
+ function isRecord(value) {
289
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
290
+ }
291
+ //# sourceMappingURL=maintenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenance.js","sourceRoot":"","sources":["../src/maintenance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { DurableObjectStorage } from 'cloudflare:workers';
2
+ export interface CloudflareLookupCommand {
3
+ reservationId: string;
4
+ }
5
+ export type CloudflareLookupReply = {
6
+ status: 'absent';
7
+ } | {
8
+ status: 'active';
9
+ state: 'pending' | 'liable';
10
+ reservationId: string;
11
+ reservedUnits: number;
12
+ expiresAt: number;
13
+ budgetIds: string[];
14
+ } | {
15
+ status: 'expired';
16
+ state: 'pending' | 'liable';
17
+ reservationId: string;
18
+ reservedUnits: number;
19
+ expiredAt: number;
20
+ budgetIds: string[];
21
+ } | {
22
+ status: 'settled';
23
+ reservationId: string;
24
+ reservedUnits: number;
25
+ actualUnits: number;
26
+ tombstoneExpiresAt: number;
27
+ budgetIds: string[];
28
+ };
29
+ /**
30
+ * Read-only lookup used only for ambiguous reserve acknowledgement recovery.
31
+ * It does not reserve, release, renew, settle, or otherwise change quota state.
32
+ */
33
+ export declare function lookupCloudflareReservation(storage: DurableObjectStorage, command: CloudflareLookupCommand, now?: number): CloudflareLookupReply;
34
+ //# sourceMappingURL=reconciliation-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconciliation-protocol.d.ts","sourceRoot":"","sources":["../src/reconciliation-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAmB,MAAM,oBAAoB,CAAC;AAMhF,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACpB;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAaN;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,uBAAuB,EAChC,GAAG,SAAa,GACf,qBAAqB,CAgEvB"}