@rubytech/create-maxy-code 0.1.457 → 0.1.458

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 (51) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/mcp-lifeline/dist/index.d.ts.map +1 -1
  3. package/payload/platform/lib/mcp-lifeline/dist/index.js +22 -1
  4. package/payload/platform/lib/mcp-lifeline/dist/index.js.map +1 -1
  5. package/payload/platform/lib/mcp-lifeline/src/__tests__/lifeline.test.ts +26 -0
  6. package/payload/platform/lib/mcp-lifeline/src/index.ts +24 -1
  7. package/payload/platform/lib/storage-broker/dist/__tests__/cf-exec.test.js +135 -0
  8. package/payload/platform/lib/storage-broker/dist/__tests__/cf-exec.test.js.map +1 -1
  9. package/payload/platform/lib/storage-broker/dist/cf-exec.d.ts.map +1 -1
  10. package/payload/platform/lib/storage-broker/dist/cf-exec.js +61 -28
  11. package/payload/platform/lib/storage-broker/dist/cf-exec.js.map +1 -1
  12. package/payload/platform/lib/storage-broker/dist/house-credential.d.ts.map +1 -1
  13. package/payload/platform/lib/storage-broker/dist/house-credential.js +6 -2
  14. package/payload/platform/lib/storage-broker/dist/house-credential.js.map +1 -1
  15. package/payload/platform/lib/storage-broker/src/__tests__/cf-exec.test.ts +153 -0
  16. package/payload/platform/lib/storage-broker/src/cf-exec.ts +85 -41
  17. package/payload/platform/lib/storage-broker/src/house-credential.ts +6 -2
  18. package/payload/platform/plugins/cloudflare/bin/__tests__/cf-token.test.sh +145 -4
  19. package/payload/platform/plugins/cloudflare/bin/cf-token.sh +60 -3
  20. package/payload/platform/plugins/cloudflare/references/api.md +1 -1
  21. package/payload/platform/plugins/cloudflare/skills/cloudflare/SKILL.md +1 -1
  22. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit.test.js +16 -3
  23. package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit.test.js.map +1 -1
  24. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js +108 -1
  25. package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js.map +1 -1
  26. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts +42 -15
  27. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -1
  28. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +32 -1
  29. package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -1
  30. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.d.ts.map +1 -1
  31. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.js +3 -5
  32. package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.js.map +1 -1
  33. package/payload/platform/plugins/outlook/mcp/dist/tools/draft-edit.d.ts +7 -0
  34. package/payload/platform/plugins/outlook/mcp/dist/tools/draft-edit.d.ts.map +1 -1
  35. package/payload/platform/plugins/outlook/mcp/dist/tools/draft-edit.js +17 -3
  36. package/payload/platform/plugins/outlook/mcp/dist/tools/draft-edit.js.map +1 -1
  37. package/payload/platform/plugins/outlook/mcp/dist/tools/draft.d.ts +6 -1
  38. package/payload/platform/plugins/outlook/mcp/dist/tools/draft.d.ts.map +1 -1
  39. package/payload/platform/plugins/outlook/mcp/dist/tools/draft.js +6 -1
  40. package/payload/platform/plugins/outlook/mcp/dist/tools/draft.js.map +1 -1
  41. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-attachment.d.ts.map +1 -1
  42. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-attachment.js +3 -4
  43. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-attachment.js.map +1 -1
  44. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-fetch-body.d.ts.map +1 -1
  45. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-fetch-body.js +2 -4
  46. package/payload/platform/plugins/outlook/mcp/dist/tools/mail-fetch-body.js.map +1 -1
  47. package/payload/platform/plugins/outlook/references/graph-surfaces.md +14 -2
  48. package/payload/platform/plugins/storage-broker/PLUGIN.md +1 -1
  49. package/payload/server/{chunk-SDYRKIYY.js → chunk-64FGYKNZ.js} +51 -29
  50. package/payload/server/server.js +2 -2
  51. package/payload/server/{src-554BYJMN.js → src-S7C4P6TT.js} +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mail-attachment.js","sourceRoot":"","sources":["../../src/tools/mail-attachment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mail-attachment.js","sourceRoot":"","sources":["../../src/tools/mail-attachment.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mail-fetch-body.d.ts","sourceRoot":"","sources":["../../src/tools/mail-fetch-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAKhE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAyBD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,eAAe,CAAC,CAsC1B"}
1
+ {"version":3,"file":"mail-fetch-body.d.ts","sourceRoot":"","sources":["../../src/tools/mail-fetch-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAKhE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAyBD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAC1B,OAAO,CAAC,eAAe,CAAC,CAmC1B"}
@@ -12,10 +12,8 @@ function addrs(list) {
12
12
  * body is returned as-is (empty), and the logged `bytes` surfaces a shortfall.
13
13
  */
14
14
  export async function runMailFetchBody(config, args) {
15
- const msg = await callGraph(config, async (client) => (await client
16
- .api(`/me/messages/${encodeURIComponent(args.messageId)}`)
17
- .select(SELECT)
18
- .get()), { tool: "mail-fetch-body" });
15
+ const path = `/me/messages/${encodeURIComponent(args.messageId)}`;
16
+ const msg = await callGraph(config, async (client) => (await client.api(path).select(SELECT).get()), { tool: "mail-fetch-body", target: path });
19
17
  const rawType = (msg.body?.contentType ?? "text").toLowerCase();
20
18
  const contentType = rawType === "html" ? "html" : "text";
21
19
  const raw = msg.body?.content ?? "";
@@ -1 +1 @@
1
- {"version":3,"file":"mail-fetch-body.js","sourceRoot":"","sources":["../../src/tools/mail-fetch-body.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAgCpC,MAAM,MAAM,GACV,sGAAsG,CAAC;AAEzG,SAAS,KAAK,CAAC,IAAgC;IAC7C,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAyB,EACzB,IAA2B;IAE3B,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,EAAE,CACf,CAAC,MAAM,MAAM;SACV,GAAG,CAAC,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;SACzD,MAAM,CAAC,MAAM,CAAC;SACd,GAAG,EAAE,CAAe,EACzB,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAC5B,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,MAAM,WAAW,GAAoB,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1E,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAE5D,GAAG,CAAC;QACF,KAAK,EAAE,iBAAiB;QACxB,EAAE,EAAE,YAAY;QAChB,OAAO,EAAE,MAAM,CAAC,SAAS;QACzB,EAAE,EAAE,IAAI,CAAC,SAAS;QAClB,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;QAC5B,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,IAAI,IAAI;QAC7C,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3B,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3B,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;QAC1C,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK;QAC3B,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,KAAK;QAC3C,WAAW;QACX,IAAI;KACL,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mail-fetch-body.js","sourceRoot":"","sources":["../../src/tools/mail-fetch-body.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAgCpC,MAAM,MAAM,GACV,sGAAsG,CAAC;AAEzG,SAAS,KAAK,CAAC,IAAgC;IAC7C,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAyB,EACzB,IAA2B;IAE3B,MAAM,IAAI,GAAG,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;IAClE,MAAM,GAAG,GAAG,MAAM,SAAS,CACzB,MAAM,EACN,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAe,EAC7E,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,CAC1C,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,MAAM,WAAW,GAAoB,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1E,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAE5D,GAAG,CAAC;QACF,KAAK,EAAE,iBAAiB;QACxB,EAAE,EAAE,YAAY;QAChB,OAAO,EAAE,MAAM,CAAC,SAAS;QACzB,EAAE,EAAE,IAAI,CAAC,SAAS;QAClB,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;QAC5B,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,IAAI,IAAI;QAC7C,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3B,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QAC3B,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;QAC1C,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK;QAC3B,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,KAAK;QAC3C,WAAW;QACX,IAAI;KACL,CAAC;AACJ,CAAC"}
@@ -2,6 +2,18 @@
2
2
 
3
3
  Microsoft Graph endpoints used by each tool, with the response shape and the fields selected.
4
4
 
5
+ ## Item id contract
6
+
7
+ Outlook item ids are **not** stable by default. Graph rotates an item's id when the item is moved or re-saved — including by the operator's own mail client, which no code here controls. A rotated id returns `404 ErrorItemNotFound`, so a handle stored moments earlier can stop resolving with nothing wrong on our side. This is exactly how a live draft appeared to "vanish" from an operator's Drafts folder: our `PATCH` returned `200`, the client rotated the id, and the next call by that id 404'd.
8
+
9
+ The plugin therefore opts into **immutable ids**, sending `Prefer: IdType="ImmutableId"` on every request. It is set once, in `createGraphClient` — the single factory behind every Graph call — so every tool inherits it.
10
+
11
+ **This is plugin-wide by necessity, not preference.** The immutable and default namespaces carry *different values for the same item*, so an id produced by a request that omitted the header cannot address that item on a request that sent it. Never add or remove the header per tool or per call. Two `fetch()` calls sit outside the factory and are correctly unaffected: `account-register`'s `/me` lookup (a directory id, not an Outlook item id) and the attachment upload-session `PUT` (a pre-authenticated URL, not a Graph resource path).
12
+
13
+ A per-request `.header()` (`outlook-mail-search`'s `ConsistencyLevel`) merges with the central header rather than displacing it — asserted in `graph-client.test.ts`, because a silent drop there would leave search alone emitting regular ids. A per-request header of the *same name* is a different matter: `Prefer` is also how Graph carries `outlook.timezone` and `odata.maxpagesize`, and setting it per-call would replace the id opt-in for that call. `Prefer` is comma-separated — append to `IMMUTABLE_ID_PREFER`, never set `Prefer` alone.
14
+
15
+ **Across a plugin restart**, ids and opaque cursors (`nextCursor`) an agent is still holding were minted in the other namespace and will not resolve. This self-heals on the next list or create and affects one conversation; nothing persists a Graph id today.
16
+
5
17
  ## outlook-mail-list
6
18
 
7
19
  **Endpoint (Inbox):** `GET /me/mailFolders/Inbox/messages?$top={N}&$orderby=receivedDateTime DESC&$select=id,subject,from,receivedDateTime,bodyPreview,isRead,hasAttachments`
@@ -122,7 +134,7 @@ Recoverable — moves to Deleted Items, never hard-deletes or expunges. An id al
122
134
 
123
135
  **Endpoint:** `PATCH /me/messages/{draftId}` (`ResponseType.RAW`; success asserted on HTTP 200) with only the supplied fields (`subject`, `body` → `{ contentType, content }`, `toRecipients`, `ccRecipients`, `bccRecipients`). Graph drafts are mutable, so no delete-and-reappend. At least one field is required; a PATCH on a sent (non-draft) message returns a Graph error surfaced unchanged.
124
136
 
125
- **Returned shape:** `{ draftId: string; updated: true }`.
137
+ **Returned shape:** `{ draftId: string; updated: true }` — `draftId` is the id Graph reported for the updated draft, which is authoritative over the id passed in. The tool refuses rather than report `updated: true` for an id it has not read back.
126
138
 
127
139
  ## outlook-mail-send
128
140
 
@@ -150,7 +162,7 @@ Recoverable — moves to Deleted Items, never hard-deletes or expunges. An id al
150
162
 
151
163
  **Request body:** the `message` object above (no `saveToSentItems` wrapper).
152
164
 
153
- **Success:** HTTP `201 Created` with the created message JSON; `id` is the stable handle for `outlook-draft-send`.
165
+ **Success:** HTTP `201 Created` with the created message JSON; `id` is the handle passed to `outlook-draft-send`. It is durable only because the plugin opts into immutable ids — see [Item id contract](#item-id-contract).
154
166
 
155
167
  ## outlook-draft-send
156
168
 
@@ -35,7 +35,7 @@ mcp-manifest: auto
35
35
 
36
36
  # storage-broker
37
37
 
38
- The isolation boundary for per-account Cloudflare D1 and R2 on a multi-tenant install. A sub-account agent holds no Cloudflare credential and cannot reach `wrangler` or `curl` against storage directly. Every D1 and R2 operation goes through these tools, which forward the caller's account as the platform-stamped `x-maxy-caller-account` header (never a tool argument) to the house-level broker service. The service holds the sole account-wide credential in `config/cloudflare-house.env`, resolves each resource's recorded owner, and denies any cross-account access before it ever calls Cloudflare.
38
+ The isolation boundary for per-account Cloudflare D1 and R2 on a multi-tenant install. A sub-account agent is issued no Cloudflare credential: its `cloudflare.env` carries no account-wide token, and `cf-token.sh` refuses to mint one for a non-house caller. The broker is therefore the only *sanctioned* route to D1 and R2, and it denies cross-account access before calling Cloudflare. It is not an OS-enforced boundary: all accounts share one unix user, so an agent holding `Bash` can read the house credential and reach `wrangler` outside the broker. Closing that requires OS user separation, tracked separately. Every D1 and R2 operation goes through these tools, which forward the caller's account as the platform-stamped `x-maxy-caller-account` header (never a tool argument) to the house-level broker service. The service holds the sole account-wide credential in `config/cloudflare-house.env`, resolves each resource's recorded owner, and denies any cross-account access before it ever calls Cloudflare.
39
39
 
40
40
  ## Tools
41
41
 
@@ -138,6 +138,19 @@ function parseJson(raw, context) {
138
138
  throw new Error(`storage-broker: ${context} returned non-JSON output: ${raw}`);
139
139
  }
140
140
  }
141
+ async function cfApiJson(fetchFn, url, init, context) {
142
+ const res = await fetchFn(url, init);
143
+ const body = await res.text();
144
+ if (!res.ok) {
145
+ throw new Error(`storage-broker: ${context} failed: ${res.status}
146
+ ${body}`);
147
+ }
148
+ const parsed = parseJson(body, context);
149
+ if (parsed?.success !== true) {
150
+ throw new Error(`storage-broker: ${context} API error: ${body}`);
151
+ }
152
+ return { parsed, body };
153
+ }
141
154
  function makeCfExec(cred, run = defaultRun2, fetchFn = defaultFetch) {
142
155
  const env = {
143
156
  ...process.env,
@@ -151,24 +164,24 @@ function makeCfExec(cred, run = defaultRun2, fetchFn = defaultFetch) {
151
164
  },
152
165
  async d1Create(name) {
153
166
  const url = `https://api.cloudflare.com/client/v4/accounts/${cred.accountId}/d1/database`;
154
- const res = await fetchFn(url, {
155
- method: "POST",
156
- headers: {
157
- Authorization: `Bearer ${cred.apiToken}`,
158
- "Content-Type": "application/json"
167
+ const { parsed, body } = await cfApiJson(
168
+ fetchFn,
169
+ url,
170
+ {
171
+ method: "POST",
172
+ headers: {
173
+ Authorization: `Bearer ${cred.apiToken}`,
174
+ "Content-Type": "application/json"
175
+ },
176
+ body: JSON.stringify({ name })
159
177
  },
160
- body: JSON.stringify({ name })
161
- });
162
- const body = await res.text();
163
- if (!res.ok) {
164
- throw new Error(`storage-broker: d1 create failed: ${res.status}
165
- ${body}`);
166
- }
167
- const parsed = parseJson(body, "d1 create");
168
- if (parsed.success !== true || typeof parsed.result?.uuid !== "string") {
178
+ "d1 create"
179
+ );
180
+ const uuid = parsed.result?.uuid;
181
+ if (typeof uuid !== "string") {
169
182
  throw new Error(`storage-broker: d1 create API error: ${body}`);
170
183
  }
171
- return { uuid: parsed.result.uuid };
184
+ return { uuid };
172
185
  },
173
186
  async d1Query(name, sql) {
174
187
  const { stdout } = await run(
@@ -179,21 +192,30 @@ ${body}`);
179
192
  return parseJson(stdout, "d1 execute");
180
193
  },
181
194
  async r2List() {
182
- const url = `https://api.cloudflare.com/client/v4/accounts/${cred.accountId}/r2/buckets`;
183
- const res = await fetchFn(url, {
184
- method: "GET",
185
- headers: { Authorization: `Bearer ${cred.apiToken}` }
186
- });
187
- const body = await res.text();
188
- if (!res.ok) {
189
- throw new Error(`storage-broker: r2 bucket list failed: ${res.status}
190
- ${body}`);
191
- }
192
- const parsed = parseJson(body, "r2 bucket list");
193
- if (parsed.success !== true) {
194
- throw new Error(`storage-broker: r2 bucket list API error: ${body}`);
195
+ const base = `https://api.cloudflare.com/client/v4/accounts/${cred.accountId}/r2/buckets`;
196
+ const buckets = [];
197
+ const seen = /* @__PURE__ */ new Set();
198
+ let cursor;
199
+ for (; ; ) {
200
+ const url = cursor === void 0 ? base : `${base}?cursor=${encodeURIComponent(cursor)}`;
201
+ const { parsed } = await cfApiJson(
202
+ fetchFn,
203
+ url,
204
+ { method: "GET", headers: { Authorization: `Bearer ${cred.apiToken}` } },
205
+ "r2 bucket list"
206
+ );
207
+ const page = parsed;
208
+ for (const b of page.result?.buckets ?? []) buckets.push({ name: b.name });
209
+ const next = page.result_info?.cursor;
210
+ if (!next) return buckets;
211
+ if (seen.has(next)) {
212
+ throw new Error(
213
+ `storage-broker: r2 bucket list returned a repeated pagination cursor: ${next}`
214
+ );
215
+ }
216
+ seen.add(next);
217
+ cursor = next;
195
218
  }
196
- return (parsed.result?.buckets ?? []).map((b) => ({ name: b.name }));
197
219
  },
198
220
  async r2Create(name) {
199
221
  await run("npx", ["wrangler", "r2", "bucket", "create", name], env);
@@ -117,7 +117,7 @@ import {
117
117
  makeHouseCfExec,
118
118
  registerResource,
119
119
  resolveOwner
120
- } from "./chunk-SDYRKIYY.js";
120
+ } from "./chunk-64FGYKNZ.js";
121
121
  import {
122
122
  __commonJS,
123
123
  __toESM
@@ -8776,7 +8776,7 @@ app3.post("/r2/create", async (c) => {
8776
8776
  });
8777
8777
  var storage_broker_default = app3;
8778
8778
  async function runStorageAudit(root) {
8779
- const { reconcileStorage } = await import("./src-554BYJMN.js");
8779
+ const { reconcileStorage } = await import("./src-S7C4P6TT.js");
8780
8780
  const session = getSession();
8781
8781
  try {
8782
8782
  const cf = await makeHouseCfExec(root);
@@ -11,7 +11,7 @@ import {
11
11
  resolveOwner,
12
12
  stripAccountWideTokens,
13
13
  validateMapping
14
- } from "./chunk-SDYRKIYY.js";
14
+ } from "./chunk-64FGYKNZ.js";
15
15
  import "./chunk-PFF6I7KP.js";
16
16
  export {
17
17
  authorizeAccess,