@rubytech/create-maxy-code 0.1.459 → 0.1.461
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.
- package/dist/__tests__/cron-heartbeat-registration.test.js +57 -28
- package/dist/__tests__/launchd-plist.test.js +26 -0
- package/dist/cron-registration.js +30 -8
- package/dist/index.js +50 -9
- package/dist/launchd-plist.js +1 -1
- package/dist/uninstall.js +9 -3
- package/package.json +1 -1
- package/payload/platform/lib/storage-broker/dist/__tests__/cf-exec.test.js +116 -6
- package/payload/platform/lib/storage-broker/dist/__tests__/cf-exec.test.js.map +1 -1
- package/payload/platform/lib/storage-broker/dist/__tests__/object-limits.test.js +20 -0
- package/payload/platform/lib/storage-broker/dist/__tests__/object-limits.test.js.map +1 -1
- package/payload/platform/lib/storage-broker/dist/__tests__/resource-limits.test.d.ts +2 -0
- package/payload/platform/lib/storage-broker/dist/__tests__/resource-limits.test.d.ts.map +1 -0
- package/payload/platform/lib/storage-broker/dist/__tests__/resource-limits.test.js +41 -0
- package/payload/platform/lib/storage-broker/dist/__tests__/resource-limits.test.js.map +1 -0
- package/payload/platform/lib/storage-broker/dist/cf-exec.d.ts +1 -0
- package/payload/platform/lib/storage-broker/dist/cf-exec.d.ts.map +1 -1
- package/payload/platform/lib/storage-broker/dist/cf-exec.js +116 -48
- package/payload/platform/lib/storage-broker/dist/cf-exec.js.map +1 -1
- package/payload/platform/lib/storage-broker/dist/index.d.ts +1 -0
- package/payload/platform/lib/storage-broker/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/storage-broker/dist/index.js +1 -0
- package/payload/platform/lib/storage-broker/dist/index.js.map +1 -1
- package/payload/platform/lib/storage-broker/dist/object-limits.d.ts +27 -0
- package/payload/platform/lib/storage-broker/dist/object-limits.d.ts.map +1 -1
- package/payload/platform/lib/storage-broker/dist/object-limits.js +27 -7
- package/payload/platform/lib/storage-broker/dist/object-limits.js.map +1 -1
- package/payload/platform/lib/storage-broker/dist/resource-limits.d.ts +102 -0
- package/payload/platform/lib/storage-broker/dist/resource-limits.d.ts.map +1 -0
- package/payload/platform/lib/storage-broker/dist/resource-limits.js +105 -0
- package/payload/platform/lib/storage-broker/dist/resource-limits.js.map +1 -0
- package/payload/platform/lib/storage-broker/src/__tests__/cf-exec.test.ts +130 -7
- package/payload/platform/lib/storage-broker/src/__tests__/object-limits.test.ts +30 -0
- package/payload/platform/lib/storage-broker/src/__tests__/resource-limits.test.ts +49 -0
- package/payload/platform/lib/storage-broker/src/cf-exec.ts +129 -56
- package/payload/platform/lib/storage-broker/src/index.ts +1 -0
- package/payload/platform/lib/storage-broker/src/object-limits.ts +26 -6
- package/payload/platform/lib/storage-broker/src/resource-limits.ts +105 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +5 -4
- package/payload/platform/plugins/cloudflare/PLUGIN.md +3 -1
- package/payload/platform/plugins/cloudflare/bin/portal-enrol.mjs +96 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/auth-route.test.ts +220 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/authorize.test.ts +201 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/file-routes.test.ts +178 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/harness.test.ts +32 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/passcode.test.ts +204 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/portal-enrol.test.ts +207 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/ratelimit.test.ts +77 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/skill-contract.test.ts +46 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/template-config.test.ts +55 -0
- package/payload/platform/plugins/cloudflare/mcp/__tests__/upload-route.test.ts +255 -0
- package/payload/platform/plugins/cloudflare/mcp/package.json +5 -2
- package/payload/platform/plugins/cloudflare/references/r2-object-storage.md +46 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/SKILL.md +125 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/authorize.ts +32 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/log.ts +12 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/passcode.mjs +193 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/ratelimit.ts +55 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/session.ts +85 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/_lib/types.ts +44 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/auth.ts +119 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/delete.ts +89 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/download.ts +70 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/files.ts +41 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/functions/api/upload.ts +151 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/public/index.html +42 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/public/portal.css +113 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/public/portal.js +155 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/schema.sql +73 -0
- package/payload/platform/plugins/cloudflare/skills/data-portal/template/wrangler.toml +21 -0
- package/payload/platform/plugins/cloudflare/skills/site-deploy/SKILL.md +8 -0
- package/payload/platform/plugins/docs/references/outlook-guide.md +3 -3
- package/payload/platform/plugins/docs/references/voice-mirror-guide.md +1 -0
- package/payload/platform/plugins/filesystem/PLUGIN.md +0 -1
- package/payload/platform/plugins/filesystem/mcp/dist/lib/scope.d.ts +14 -10
- package/payload/platform/plugins/filesystem/mcp/dist/lib/scope.d.ts.map +1 -1
- package/payload/platform/plugins/filesystem/mcp/dist/lib/scope.js +14 -10
- package/payload/platform/plugins/filesystem/mcp/dist/lib/scope.js.map +1 -1
- package/payload/platform/plugins/outlook/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/outlook/PLUGIN.md +3 -5
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/detach.test.d.ts +2 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/detach.test.d.ts.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/detach.test.js +75 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/detach.test.js.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit-removal.test.d.ts +2 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit-removal.test.d.ts.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit-removal.test.js +187 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit-removal.test.js.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit.test.js +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit.test.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/index.js +3 -2
- package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/attachment-list.d.ts +43 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/attachment-list.d.ts.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/attachment-list.js +65 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/attachment-list.js.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/detach.d.ts +65 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/detach.d.ts.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/detach.js +99 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/detach.js.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/outbound-attachments.d.ts +6 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/outbound-attachments.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/outbound-attachments.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/draft-edit.d.ts +42 -22
- package/payload/platform/plugins/outlook/mcp/dist/tools/draft-edit.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/draft-edit.js +59 -23
- package/payload/platform/plugins/outlook/mcp/dist/tools/draft-edit.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-attachment.d.ts +15 -16
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-attachment.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-attachment.js +8 -41
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-attachment.js.map +1 -1
- package/payload/platform/plugins/outlook/references/auth.md +1 -1
- package/payload/platform/plugins/outlook/references/graph-surfaces.md +7 -3
- package/payload/platform/plugins/outlook/skills/outlook/SKILL.md +1 -1
- package/payload/platform/plugins/storage-broker/PLUGIN.md +1 -1
- package/payload/platform/plugins/voice-mirror/PLUGIN.md +19 -7
- package/payload/platform/plugins/voice-mirror/mcp/dist/index.d.ts.map +1 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/index.js +35 -16
- package/payload/platform/plugins/voice-mirror/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/lib/admin-user.d.ts +31 -0
- package/payload/platform/plugins/voice-mirror/mcp/dist/lib/admin-user.d.ts.map +1 -0
- package/payload/platform/plugins/voice-mirror/mcp/dist/lib/admin-user.js +87 -0
- package/payload/platform/plugins/voice-mirror/mcp/dist/lib/admin-user.js.map +1 -0
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-distil-profile.d.ts.map +1 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-distil-profile.js +111 -12
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-distil-profile.js.map +1 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-ingest-session-text.d.ts.map +1 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-ingest-session-text.js +2 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-ingest-session-text.js.map +1 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-record-feedback.d.ts.map +1 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-record-feedback.js +2 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-record-feedback.js.map +1 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-retrieve-conditioning.d.ts.map +1 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-retrieve-conditioning.js +54 -21
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-retrieve-conditioning.js.map +1 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-tag-content.d.ts +2 -2
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-tag-content.d.ts.map +1 -1
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-tag-content.js +12 -3
- package/payload/platform/plugins/voice-mirror/mcp/dist/tools/voice-tag-content.js.map +1 -1
- package/payload/platform/plugins/voice-mirror/mcp/scripts/smoke.mjs +444 -0
- package/payload/platform/plugins/voice-mirror/skills/voice-mirror/SKILL.md +18 -2
- package/payload/platform/scripts/__tests__/logs-rotate.test.sh +256 -0
- package/payload/platform/scripts/__tests__/resume-tunnel.test.sh +79 -0
- package/payload/platform/scripts/logs-rotate.sh +204 -0
- package/payload/platform/scripts/resume-tunnel.sh +27 -0
- package/payload/platform/scripts/voice-author-key-audit.sh +155 -0
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +41 -5
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.d.ts +1 -0
- package/payload/platform/services/claude-session-manager/dist/index.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/index.js +22 -0
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/install-start-counter.d.ts +2 -0
- package/payload/platform/services/claude-session-manager/dist/install-start-counter.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/install-start-counter.js +12 -0
- package/payload/platform/services/claude-session-manager/dist/install-start-counter.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/mcp-descriptor-resolve.d.ts +17 -0
- package/payload/platform/services/claude-session-manager/dist/mcp-descriptor-resolve.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/mcp-descriptor-resolve.js +88 -0
- package/payload/platform/services/claude-session-manager/dist/mcp-descriptor-resolve.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/pty-census.d.ts +122 -9
- package/payload/platform/services/claude-session-manager/dist/pty-census.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-census.js +214 -29
- package/payload/platform/services/claude-session-manager/dist/pty-census.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts +0 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +36 -24
- package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.js +13 -1
- package/payload/platform/services/claude-session-manager/dist/rc-daemon.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-memory-cap.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/session-memory-cap.js +4 -2
- package/payload/platform/services/claude-session-manager/dist/session-memory-cap.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.d.ts +150 -0
- package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.js +333 -0
- package/payload/platform/services/claude-session-manager/dist/slice-memory-policy.js.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/start-counter.d.ts +10 -0
- package/payload/platform/services/claude-session-manager/dist/start-counter.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/start-counter.js +55 -0
- package/payload/platform/services/claude-session-manager/dist/start-counter.js.map +1 -0
- package/payload/server/{chunk-Q6W4U6HL.js → chunk-JXWFVE5X.js} +83 -39
- package/payload/server/server.js +268 -73
- package/payload/server/{src-3I2RYZFB.js → src-4F37OHLK.js} +11 -1
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.d.ts +0 -2
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.js +0 -215
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/pkce-flow.test.js.map +0 -1
|
@@ -13,8 +13,8 @@ var R2_OBJECT_MAX_BYTES = 100 * 1024 * 1024;
|
|
|
13
13
|
function base64Ceiling(bytes) {
|
|
14
14
|
return 4 * Math.ceil(bytes / 3);
|
|
15
15
|
}
|
|
16
|
-
var
|
|
17
|
-
var R2_OBJECT_PUT_MAX_BODY_BYTES = base64Ceiling(R2_OBJECT_MAX_BYTES) +
|
|
16
|
+
var R2_OBJECT_ENVELOPE_MAX_BODY_BYTES = 64 * 1024;
|
|
17
|
+
var R2_OBJECT_PUT_MAX_BODY_BYTES = base64Ceiling(R2_OBJECT_MAX_BYTES) + R2_OBJECT_ENVELOPE_MAX_BODY_BYTES;
|
|
18
18
|
function formatMiB(bytes) {
|
|
19
19
|
return (bytes / 1024 / 1024).toFixed(1);
|
|
20
20
|
}
|
|
@@ -59,6 +59,12 @@ async function listResources(session, accountId, kind) {
|
|
|
59
59
|
}));
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
// ../lib/storage-broker/src/resource-limits.ts
|
|
63
|
+
var D1_MAX_SQL_STATEMENT_BYTES = 1e5;
|
|
64
|
+
var JSON_STRING_WORST_CASE_EXPANSION = 6;
|
|
65
|
+
var STORAGE_RESOURCE_NAME_MAX_BODY_BYTES = 64 * 1024;
|
|
66
|
+
var D1_QUERY_MAX_BODY_BYTES = 1024 * 1024;
|
|
67
|
+
|
|
62
68
|
// ../lib/storage-broker/src/house-credential.ts
|
|
63
69
|
import { readFileSync } from "fs";
|
|
64
70
|
import { join } from "path";
|
|
@@ -173,6 +179,45 @@ ${body}`);
|
|
|
173
179
|
}
|
|
174
180
|
return { parsed, body };
|
|
175
181
|
}
|
|
182
|
+
async function* r2ObjectPages(fetchFn, cred, bucket, prefix) {
|
|
183
|
+
const base = `https://api.cloudflare.com/client/v4/accounts/${cred.accountId}/r2/buckets/${encodeURIComponent(bucket)}/objects`;
|
|
184
|
+
const seen = /* @__PURE__ */ new Set();
|
|
185
|
+
let cursor;
|
|
186
|
+
for (; ; ) {
|
|
187
|
+
const params = new URLSearchParams();
|
|
188
|
+
if (prefix !== void 0) params.set("prefix", prefix);
|
|
189
|
+
if (cursor !== void 0) params.set("cursor", cursor);
|
|
190
|
+
const qs = params.toString();
|
|
191
|
+
const { parsed, body } = await cfApiJson(
|
|
192
|
+
fetchFn,
|
|
193
|
+
qs ? `${base}?${qs}` : base,
|
|
194
|
+
{ method: "GET", headers: { Authorization: `Bearer ${cred.apiToken}` } },
|
|
195
|
+
"r2 object list"
|
|
196
|
+
);
|
|
197
|
+
const page = parsed;
|
|
198
|
+
const objects = [];
|
|
199
|
+
for (const o of page.result ?? []) {
|
|
200
|
+
objects.push({ key: o.key, size: o.size, etag: o.etag, lastModified: o.last_modified });
|
|
201
|
+
}
|
|
202
|
+
yield objects;
|
|
203
|
+
const truncated = page.result_info?.is_truncated;
|
|
204
|
+
const next = page.result_info?.cursor;
|
|
205
|
+
if (truncated === false) return;
|
|
206
|
+
if (truncated === true && !next) {
|
|
207
|
+
throw new Error(
|
|
208
|
+
`storage-broker: r2 object list reported truncated but gave no pagination cursor: ${body}`
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
if (!next) return;
|
|
212
|
+
if (seen.has(next)) {
|
|
213
|
+
throw new Error(
|
|
214
|
+
`storage-broker: r2 object list returned a repeated pagination cursor: ${next}`
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
seen.add(next);
|
|
218
|
+
cursor = next;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
176
221
|
function makeCfExec(cred, run = defaultRun2, fetchFn = defaultFetch) {
|
|
177
222
|
const env = {
|
|
178
223
|
...process.env,
|
|
@@ -250,46 +295,40 @@ function makeCfExec(cred, run = defaultRun2, fetchFn = defaultFetch) {
|
|
|
250
295
|
// The r2/api/tokens/ note that "Object Read & Write" is S3-only constrains
|
|
251
296
|
// the bucket-item-scoped *permission types*, not these endpoints.
|
|
252
297
|
//
|
|
253
|
-
//
|
|
254
|
-
//
|
|
255
|
-
//
|
|
298
|
+
// The endpoint's existence and token class are doc-confirmed. Its behaviour
|
|
299
|
+
// was unmeasured until Task 1697, which probed the live v4 API on 2026-07-16
|
|
300
|
+
// from the laptop's own maxy-code install (no house Cloudflare credential
|
|
301
|
+
// exists on the dev Mac, which is why the tests fake the fetch seam). What
|
|
302
|
+
// that probe established, so nobody re-guesses it:
|
|
303
|
+
//
|
|
304
|
+
// - The listing is NOT in ascending UTF-8 binary order. `prefix=a/photo.jpg`
|
|
305
|
+
// returns `a/photo.jpg.bak` before `a/photo.jpg`, so the exact key is not
|
|
306
|
+
// the first element and `per_page=1` returns a neighbour. S3's
|
|
307
|
+
// ListObjectsV2 ordering guarantee does not transfer to this endpoint.
|
|
308
|
+
// - HEAD is routed only for single-segment keys: any key containing "/"
|
|
309
|
+
// returns 405 while GET on the identical URL returns 404.
|
|
310
|
+
// - A ranged GET is honoured at 2 MB and ignored at 12 B, so it cannot size
|
|
311
|
+
// an object without an undocumented size threshold deciding correctness.
|
|
312
|
+
// - per_page is bounded 0..1000 (error 10029), and per_page=0 returns zero
|
|
313
|
+
// objects with is_truncated:true — a loop trap. It is still never sent.
|
|
314
|
+
//
|
|
315
|
+
// The design keeps every unmeasured fact unable to affect correctness:
|
|
316
|
+
// per_page is never sent, order is never assumed, and nothing fails
|
|
317
|
+
// silently. Evidence:
|
|
318
|
+
// docs/superpowers/specs/2026-07-16-storage-broker-get-sizing-early-exit-design.md
|
|
256
319
|
async r2ObjectList(bucket, prefix) {
|
|
257
|
-
const base = `https://api.cloudflare.com/client/v4/accounts/${cred.accountId}/r2/buckets/${encodeURIComponent(bucket)}/objects`;
|
|
258
320
|
const objects = [];
|
|
259
|
-
const
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
const
|
|
267
|
-
|
|
268
|
-
qs ? `${base}?${qs}` : base,
|
|
269
|
-
{ method: "GET", headers: { Authorization: `Bearer ${cred.apiToken}` } },
|
|
270
|
-
"r2 object list"
|
|
271
|
-
);
|
|
272
|
-
const page = parsed;
|
|
273
|
-
for (const o of page.result ?? []) {
|
|
274
|
-
objects.push({ key: o.key, size: o.size, etag: o.etag, lastModified: o.last_modified });
|
|
275
|
-
}
|
|
276
|
-
const truncated = page.result_info?.is_truncated;
|
|
277
|
-
const next = page.result_info?.cursor;
|
|
278
|
-
if (truncated === false) return objects;
|
|
279
|
-
if (truncated === true && !next) {
|
|
280
|
-
throw new Error(
|
|
281
|
-
`storage-broker: r2 object list reported truncated but gave no pagination cursor: ${body}`
|
|
282
|
-
);
|
|
283
|
-
}
|
|
284
|
-
if (!next) return objects;
|
|
285
|
-
if (seen.has(next)) {
|
|
286
|
-
throw new Error(
|
|
287
|
-
`storage-broker: r2 object list returned a repeated pagination cursor: ${next}`
|
|
288
|
-
);
|
|
289
|
-
}
|
|
290
|
-
seen.add(next);
|
|
291
|
-
cursor = next;
|
|
321
|
+
for await (const page of r2ObjectPages(fetchFn, cred, bucket, prefix)) {
|
|
322
|
+
for (const o of page) objects.push(o);
|
|
323
|
+
}
|
|
324
|
+
return objects;
|
|
325
|
+
},
|
|
326
|
+
async r2ObjectFind(bucket, key) {
|
|
327
|
+
for await (const page of r2ObjectPages(fetchFn, cred, bucket, key)) {
|
|
328
|
+
const hit = page.find((o) => o.key === key);
|
|
329
|
+
if (hit) return hit;
|
|
292
330
|
}
|
|
331
|
+
return null;
|
|
293
332
|
},
|
|
294
333
|
async r2ObjectGet(bucket, key) {
|
|
295
334
|
const res = await fetchFn(objectUrl(cred.accountId, bucket, key), {
|
|
@@ -384,11 +423,16 @@ export {
|
|
|
384
423
|
authorizeAccess,
|
|
385
424
|
R2_OBJECT_MAX_BYTES,
|
|
386
425
|
base64Ceiling,
|
|
426
|
+
R2_OBJECT_ENVELOPE_MAX_BODY_BYTES,
|
|
387
427
|
R2_OBJECT_PUT_MAX_BODY_BYTES,
|
|
388
428
|
tooLargeMessage,
|
|
389
429
|
registerResource,
|
|
390
430
|
resolveOwner,
|
|
391
431
|
listResources,
|
|
432
|
+
D1_MAX_SQL_STATEMENT_BYTES,
|
|
433
|
+
JSON_STRING_WORST_CASE_EXPANSION,
|
|
434
|
+
STORAGE_RESOURCE_NAME_MAX_BODY_BYTES,
|
|
435
|
+
D1_QUERY_MAX_BODY_BYTES,
|
|
392
436
|
readHouseCredential,
|
|
393
437
|
resolveHouseScopedToken,
|
|
394
438
|
makeCfExec,
|