better-supabase 0.8.0 → 0.9.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.
- package/README.md +144 -83
- package/bin/better-supabase.js +14 -2
- package/dist/access-sql-DUSSMaC3.js +201 -0
- package/dist/actor-BAhb-d1S.d.ts +104 -0
- package/dist/actor-KHDOKGb1.js +151 -0
- package/dist/adapter-CEjmtazZ.js +1984 -0
- package/dist/agents-BCNhIxVZ.d.ts +111 -0
- package/dist/ai-cache-Dps7aRu1.d.ts +70 -0
- package/dist/ai-cache-zeUL94pB.js +84 -0
- package/dist/ai-chat-3GBSlFR4.d.ts +608 -0
- package/dist/ai-files-D2_9YLjF.js +331 -0
- package/dist/ai-sdk/agents/index.d.ts +154 -10
- package/dist/ai-sdk/agents/index.js +172 -17
- package/dist/ai-sdk/batches/index.d.ts +4 -4
- package/dist/ai-sdk/batches/index.js +5 -5
- package/dist/ai-sdk/cache/index.d.ts +2 -2
- package/dist/ai-sdk/cache/index.js +1 -1
- package/dist/ai-sdk/chat/index.d.ts +1 -1
- package/dist/ai-sdk/chat/index.js +7 -6
- package/dist/ai-sdk/embeddings/index.d.ts +3 -3
- package/dist/ai-sdk/embeddings/index.js +1 -2
- package/dist/ai-sdk/files/index.d.ts +2 -2
- package/dist/ai-sdk/files/index.js +4 -4
- package/dist/ai-sdk/index.d.ts +7 -6
- package/dist/ai-sdk/index.js +4 -3
- package/dist/ai-sdk/mcp/index.d.ts +4 -4
- package/dist/ai-sdk/mcp/index.js +6 -6
- package/dist/ai-sdk/memory/index.d.ts +5 -2
- package/dist/ai-sdk/memory/index.js +2 -2
- package/dist/ai-sdk/react/index.js +1 -2
- package/dist/ai-sdk/workflow/index.d.ts +5 -4
- package/dist/ai-sdk/workflow/index.js +8 -8
- package/dist/ai-tasks-Ih5oHfyj.d.ts +157 -0
- package/dist/announcements-BHCzraR6.js +128 -0
- package/dist/api-CFjuYKFY.js +680 -0
- package/dist/api-TG3jE5aO.d.ts +411 -0
- package/dist/api-keys-BEQatEUW.js +318 -0
- package/dist/api-keys-BYoGCM9p.d.ts +205 -0
- package/dist/app-tables-BGl5_U2x.js +584 -0
- package/dist/approvals-a2KmioBh.d.ts +124 -0
- package/dist/arazzo/index.d.ts +5 -5
- package/dist/arazzo/index.js +6 -6
- package/dist/assistant-Bf2cA6RO.d.ts +148 -0
- package/dist/astro/index.d.ts +9 -8
- package/dist/astro/index.js +10 -7
- package/dist/asyncapi/index.d.ts +4 -4
- package/dist/asyncapi/index.js +6 -6
- package/dist/attachments-DAj2Yp95.js +264 -0
- package/dist/attributes-D4mA7WhI.js +38 -0
- package/dist/audit-log-BMMuGPdP.js +786 -0
- package/dist/auth-CdBKt0CS.js +20 -0
- package/dist/auth-reply-DUCwb8YO.js +31 -0
- package/dist/auth-reply-Dj124sbX.d.ts +11 -0
- package/dist/authorization-DpRfs6Wx.d.ts +1412 -0
- package/dist/authorization-hooks-DkmrnDX7.d.ts +214 -0
- package/dist/authorizer-DH7DjkL3.js +126 -0
- package/dist/base64-BmeCBgGo.js +42 -0
- package/dist/batch-limit-DKVQDz4o.js +5 -0
- package/dist/before-route-B98js9m_.js +30 -0
- package/dist/better-result/index.d.ts +5 -5
- package/dist/better-result/index.js +1 -1
- package/dist/bind-a7sUgvf4.d.ts +70 -0
- package/dist/block-env-CBd_SoL5.js +29 -0
- package/dist/block-env-Dxl7rsI0.d.ts +10 -0
- package/dist/block-events-DD9Q_NUz.js +96 -0
- package/dist/block-fields-5UA84ZUg.d.ts +55 -0
- package/dist/block-fields-ffD6Gxe4.js +139 -0
- package/dist/block-helpers-C86hPEjI.d.ts +37 -0
- package/dist/block-helpers-CfG_MvDR.js +264 -0
- package/dist/block-hooks-BLPWD3Jt.d.ts +107 -0
- package/dist/block-hooks-BsXncUlZ.js +114 -0
- package/dist/block-transport-DaGGXjIw.d.ts +70 -0
- package/dist/block-transport-G4t1umrR.js +85 -0
- package/dist/blocks/access-requests/index.d.ts +98 -0
- package/dist/blocks/access-requests/index.js +99 -0
- package/dist/blocks/agents/index.d.ts +21 -3
- package/dist/blocks/agents/index.js +64 -18
- package/dist/blocks/ai-cache/index.d.ts +7 -2
- package/dist/blocks/ai-cache/index.js +15 -3
- package/dist/blocks/ai-chat/index.d.ts +22 -3
- package/dist/blocks/ai-chat/index.js +29 -3
- package/dist/blocks/ai-chat/react/index.d.ts +12 -46
- package/dist/blocks/ai-chat/react/index.js +43 -335
- package/dist/blocks/ai-chat/solid/index.d.ts +34 -0
- package/dist/blocks/ai-chat/solid/index.js +41 -0
- package/dist/blocks/ai-chat/svelte/index.d.ts +34 -0
- package/dist/blocks/ai-chat/svelte/index.js +41 -0
- package/dist/blocks/ai-chat/vue/index.d.ts +34 -0
- package/dist/blocks/ai-chat/vue/index.js +41 -0
- package/dist/blocks/ai-files/index.d.ts +10 -3
- package/dist/blocks/ai-files/index.js +16 -3
- package/dist/blocks/ai-providers/index.d.ts +18 -3
- package/dist/blocks/ai-providers/index.js +40 -15
- package/dist/blocks/ai-tasks/index.d.ts +9 -2
- package/dist/blocks/ai-tasks/index.js +70 -21
- package/dist/blocks/announcements/index.d.ts +18 -3
- package/dist/blocks/announcements/index.js +27 -3
- package/dist/blocks/announcements/react/index.d.ts +4 -14
- package/dist/blocks/announcements/react/index.js +22 -70
- package/dist/blocks/announcements/solid/index.d.ts +13 -0
- package/dist/blocks/announcements/solid/index.js +14 -0
- package/dist/blocks/announcements/svelte/index.d.ts +13 -0
- package/dist/blocks/announcements/svelte/index.js +14 -0
- package/dist/blocks/announcements/vue/index.d.ts +13 -0
- package/dist/blocks/announcements/vue/index.js +14 -0
- package/dist/blocks/api-keys/index.d.ts +24 -7
- package/dist/blocks/api-keys/index.js +29 -294
- package/dist/blocks/api-keys/react/index.d.ts +29 -0
- package/dist/blocks/api-keys/react/index.js +43 -0
- package/dist/blocks/api-keys/react/server.d.ts +7 -0
- package/dist/blocks/api-keys/react/server.js +7 -0
- package/dist/blocks/api-keys/solid/index.d.ts +13 -0
- package/dist/blocks/api-keys/solid/index.js +14 -0
- package/dist/blocks/api-keys/svelte/index.d.ts +13 -0
- package/dist/blocks/api-keys/svelte/index.js +14 -0
- package/dist/blocks/api-keys/vue/index.d.ts +13 -0
- package/dist/blocks/api-keys/vue/index.js +14 -0
- package/dist/blocks/approvals/index.d.ts +22 -0
- package/dist/blocks/approvals/index.js +189 -0
- package/dist/blocks/attachments/index.d.ts +18 -227
- package/dist/blocks/attachments/index.js +26 -242
- package/dist/blocks/audit/index.d.ts +72 -365
- package/dist/blocks/audit/index.js +91 -714
- package/dist/blocks/audit/react/index.d.ts +26 -0
- package/dist/blocks/audit/react/index.js +44 -0
- package/dist/blocks/audit/react/server.d.ts +7 -0
- package/dist/blocks/audit/react/server.js +7 -0
- package/dist/blocks/audit/solid/index.d.ts +13 -0
- package/dist/blocks/audit/solid/index.js +14 -0
- package/dist/blocks/audit/svelte/index.d.ts +13 -0
- package/dist/blocks/audit/svelte/index.js +14 -0
- package/dist/blocks/audit/vue/index.d.ts +13 -0
- package/dist/blocks/audit/vue/index.js +14 -0
- package/dist/blocks/billing/index.d.ts +37 -12
- package/dist/blocks/billing/index.js +43 -12
- package/dist/blocks/billing/react/index.d.ts +34 -0
- package/dist/blocks/billing/react/index.js +36 -0
- package/dist/blocks/billing/react/server.d.ts +7 -0
- package/dist/blocks/billing/react/server.js +7 -0
- package/dist/blocks/billing/solid/index.d.ts +15 -0
- package/dist/blocks/billing/solid/index.js +14 -0
- package/dist/blocks/billing/svelte/index.d.ts +15 -0
- package/dist/blocks/billing/svelte/index.js +14 -0
- package/dist/blocks/billing/vue/index.d.ts +15 -0
- package/dist/blocks/billing/vue/index.js +14 -0
- package/dist/blocks/bookings/index.d.ts +36 -0
- package/dist/blocks/bookings/index.js +28 -0
- package/dist/blocks/bookings/react/index.d.ts +31 -0
- package/dist/blocks/bookings/react/index.js +59 -0
- package/dist/blocks/bookings/react/server.d.ts +6 -0
- package/dist/blocks/bookings/react/server.js +7 -0
- package/dist/blocks/bookings/solid/index.d.ts +13 -0
- package/dist/blocks/bookings/solid/index.js +14 -0
- package/dist/blocks/bookings/svelte/index.d.ts +13 -0
- package/dist/blocks/bookings/svelte/index.js +14 -0
- package/dist/blocks/bookings/vue/index.d.ts +13 -0
- package/dist/blocks/bookings/vue/index.js +14 -0
- package/dist/blocks/bulk/index.d.ts +142 -0
- package/dist/blocks/bulk/index.js +154 -0
- package/dist/blocks/calendar/index.d.ts +20 -0
- package/dist/blocks/calendar/index.js +33 -0
- package/dist/blocks/calendar/react/index.d.ts +26 -0
- package/dist/blocks/calendar/react/index.js +58 -0
- package/dist/blocks/calendar/react/server.d.ts +6 -0
- package/dist/blocks/calendar/react/server.js +7 -0
- package/dist/blocks/calendar/solid/index.d.ts +13 -0
- package/dist/blocks/calendar/solid/index.js +14 -0
- package/dist/blocks/calendar/svelte/index.d.ts +13 -0
- package/dist/blocks/calendar/svelte/index.js +14 -0
- package/dist/blocks/calendar/vue/index.d.ts +13 -0
- package/dist/blocks/calendar/vue/index.js +14 -0
- package/dist/blocks/catalog/index.d.ts +224 -0
- package/dist/blocks/catalog/index.js +292 -0
- package/dist/blocks/collections/index.d.ts +184 -0
- package/dist/blocks/collections/index.js +208 -0
- package/dist/blocks/comments/index.d.ts +19 -166
- package/dist/blocks/comments/index.js +26 -207
- package/dist/blocks/comments/react/index.d.ts +27 -0
- package/dist/blocks/comments/react/index.js +45 -0
- package/dist/blocks/comments/react/server.d.ts +7 -0
- package/dist/blocks/comments/react/server.js +7 -0
- package/dist/blocks/comments/solid/index.d.ts +13 -0
- package/dist/blocks/comments/solid/index.js +14 -0
- package/dist/blocks/comments/svelte/index.d.ts +13 -0
- package/dist/blocks/comments/svelte/index.js +14 -0
- package/dist/blocks/comments/vue/index.d.ts +13 -0
- package/dist/blocks/comments/vue/index.js +14 -0
- package/dist/blocks/connectors/index.d.ts +21 -3
- package/dist/blocks/connectors/index.js +53 -18
- package/dist/blocks/custom-fields/index.d.ts +62 -0
- package/dist/blocks/custom-fields/index.js +85 -0
- package/dist/blocks/data-lifecycle/index.d.ts +114 -9
- package/dist/blocks/data-lifecycle/index.js +98 -12
- package/dist/blocks/deals/index.d.ts +262 -0
- package/dist/blocks/deals/index.js +380 -0
- package/dist/blocks/documents/index.d.ts +17 -0
- package/dist/blocks/documents/index.js +118 -0
- package/dist/blocks/domains/index.d.ts +117 -0
- package/dist/blocks/domains/index.js +118 -0
- package/dist/blocks/drive/index.d.ts +296 -0
- package/dist/blocks/drive/index.js +483 -0
- package/dist/blocks/employees/index.d.ts +205 -0
- package/dist/blocks/employees/index.js +289 -0
- package/dist/blocks/engagements/index.d.ts +125 -0
- package/dist/blocks/engagements/index.js +143 -0
- package/dist/blocks/entitlements/index.d.ts +40 -4
- package/dist/blocks/entitlements/index.js +14 -24
- package/dist/blocks/entitlements/react/index.d.ts +24 -0
- package/dist/blocks/entitlements/react/index.js +35 -0
- package/dist/blocks/entitlements/react/server.d.ts +6 -0
- package/dist/blocks/entitlements/react/server.js +7 -0
- package/dist/blocks/entitlements/solid/index.d.ts +13 -0
- package/dist/blocks/entitlements/solid/index.js +14 -0
- package/dist/blocks/entitlements/svelte/index.d.ts +13 -0
- package/dist/blocks/entitlements/svelte/index.js +14 -0
- package/dist/blocks/entitlements/vue/index.d.ts +13 -0
- package/dist/blocks/entitlements/vue/index.js +14 -0
- package/dist/blocks/flags/index.d.ts +61 -187
- package/dist/blocks/flags/index.js +65 -253
- package/dist/blocks/forms/index.d.ts +302 -0
- package/dist/blocks/forms/index.js +341 -0
- package/dist/blocks/forms/react/index.d.ts +16 -0
- package/dist/blocks/forms/react/index.js +25 -0
- package/dist/blocks/forms/react/server.d.ts +6 -0
- package/dist/blocks/forms/react/server.js +7 -0
- package/dist/blocks/forms/solid/index.d.ts +13 -0
- package/dist/blocks/forms/solid/index.js +14 -0
- package/dist/blocks/forms/svelte/index.d.ts +13 -0
- package/dist/blocks/forms/svelte/index.js +14 -0
- package/dist/blocks/forms/vue/index.d.ts +13 -0
- package/dist/blocks/forms/vue/index.js +14 -0
- package/dist/blocks/hiring/index.d.ts +154 -0
- package/dist/blocks/hiring/index.js +180 -0
- package/dist/blocks/identities/index.d.ts +83 -0
- package/dist/blocks/identities/index.js +103 -0
- package/dist/blocks/imports/index.d.ts +91 -0
- package/dist/blocks/imports/index.js +123 -0
- package/dist/blocks/inbox/index.d.ts +22 -3
- package/dist/blocks/inbox/index.js +77 -4
- package/dist/blocks/inbox/react/index.d.ts +3 -2
- package/dist/blocks/inbox/react/index.js +55 -199
- package/dist/blocks/inbox/react/server.d.ts +2 -1
- package/dist/blocks/inbox/solid/index.d.ts +27 -0
- package/dist/blocks/inbox/solid/index.js +32 -0
- package/dist/blocks/inbox/svelte/index.d.ts +27 -0
- package/dist/blocks/inbox/svelte/index.js +32 -0
- package/dist/blocks/inbox/vue/index.d.ts +27 -0
- package/dist/blocks/inbox/vue/index.js +32 -0
- package/dist/blocks/index.d.ts +9 -64
- package/dist/blocks/index.js +191 -55
- package/dist/blocks/inventory/index.d.ts +181 -0
- package/dist/blocks/inventory/index.js +219 -0
- package/dist/blocks/invoices/index.d.ts +154 -0
- package/dist/blocks/invoices/index.js +216 -0
- package/dist/blocks/jobs/index.d.ts +156 -33
- package/dist/blocks/jobs/index.js +675 -261
- package/dist/blocks/knowledge/index.d.ts +10 -3
- package/dist/blocks/knowledge/index.js +17 -3
- package/dist/blocks/leave/index.d.ts +241 -0
- package/dist/blocks/leave/index.js +209 -0
- package/dist/blocks/memory/index.d.ts +9 -4
- package/dist/blocks/memory/index.js +48 -12
- package/dist/blocks/metrics/index.d.ts +174 -0
- package/dist/blocks/metrics/index.js +217 -0
- package/dist/blocks/mfa/index.d.ts +7 -0
- package/dist/blocks/mfa/index.js +12 -0
- package/dist/blocks/mfa/react/index.d.ts +30 -0
- package/dist/blocks/mfa/react/index.js +45 -0
- package/dist/blocks/mfa/react/server.d.ts +9 -0
- package/dist/blocks/mfa/react/server.js +12 -0
- package/dist/blocks/mfa/solid/index.d.ts +20 -0
- package/dist/blocks/mfa/solid/index.js +23 -0
- package/dist/blocks/mfa/svelte/index.d.ts +20 -0
- package/dist/blocks/mfa/svelte/index.js +23 -0
- package/dist/blocks/mfa/vue/index.d.ts +20 -0
- package/dist/blocks/mfa/vue/index.js +23 -0
- package/dist/blocks/notifications/index.d.ts +342 -25
- package/dist/blocks/notifications/index.js +733 -104
- package/dist/blocks/notifications/react/index.d.ts +7 -32
- package/dist/blocks/notifications/react/index.js +23 -49
- package/dist/blocks/notifications/react/server.d.ts +2 -1
- package/dist/blocks/notifications/solid/index.d.ts +13 -0
- package/dist/blocks/notifications/solid/index.js +14 -0
- package/dist/blocks/notifications/svelte/index.d.ts +13 -0
- package/dist/blocks/notifications/svelte/index.js +14 -0
- package/dist/blocks/notifications/vue/index.d.ts +13 -0
- package/dist/blocks/notifications/vue/index.js +14 -0
- package/dist/blocks/number-sequences/index.d.ts +39 -0
- package/dist/blocks/number-sequences/index.js +38 -0
- package/dist/blocks/oauth-server/index.d.ts +228 -0
- package/dist/blocks/oauth-server/index.js +309 -0
- package/dist/blocks/onboarding/index.d.ts +8 -3
- package/dist/blocks/onboarding/index.js +17 -63
- package/dist/blocks/onboarding/react/index.d.ts +3 -12
- package/dist/blocks/onboarding/react/index.js +18 -60
- package/dist/blocks/onboarding/react/server.d.ts +2 -2
- package/dist/blocks/onboarding/react/server.js +2 -2
- package/dist/blocks/onboarding/solid/index.d.ts +13 -0
- package/dist/blocks/onboarding/solid/index.js +14 -0
- package/dist/blocks/onboarding/svelte/index.d.ts +13 -0
- package/dist/blocks/onboarding/svelte/index.js +14 -0
- package/dist/blocks/onboarding/vue/index.d.ts +13 -0
- package/dist/blocks/onboarding/vue/index.js +14 -0
- package/dist/blocks/orders/index.d.ts +264 -0
- package/dist/blocks/orders/index.js +589 -0
- package/dist/blocks/organizations/index.d.ts +31 -238
- package/dist/blocks/organizations/index.js +49 -392
- package/dist/blocks/organizations/react/index.d.ts +108 -0
- package/dist/blocks/organizations/react/index.js +113 -0
- package/dist/blocks/organizations/react/server.d.ts +11 -0
- package/dist/blocks/organizations/react/server.js +15 -0
- package/dist/blocks/organizations/solid/index.d.ts +34 -0
- package/dist/blocks/organizations/solid/index.js +32 -0
- package/dist/blocks/organizations/svelte/index.d.ts +34 -0
- package/dist/blocks/organizations/svelte/index.js +32 -0
- package/dist/blocks/organizations/vue/index.d.ts +34 -0
- package/dist/blocks/organizations/vue/index.js +32 -0
- package/dist/blocks/outbox/index.d.ts +12 -3
- package/dist/blocks/outbox/index.js +85 -46
- package/dist/blocks/parties/index.d.ts +181 -0
- package/dist/blocks/parties/index.js +258 -0
- package/dist/blocks/pipelines/index.d.ts +189 -0
- package/dist/blocks/pipelines/index.js +204 -0
- package/dist/blocks/profiles/index.d.ts +13 -8
- package/dist/blocks/profiles/index.js +19 -6
- package/dist/blocks/promotions/index.d.ts +125 -0
- package/dist/blocks/promotions/index.js +123 -0
- package/dist/blocks/push/index.d.ts +48 -28
- package/dist/blocks/push/index.js +45 -16
- package/dist/blocks/quotes/index.d.ts +152 -0
- package/dist/blocks/quotes/index.js +209 -0
- package/dist/blocks/rank/index.d.ts +71 -0
- package/dist/blocks/rank/index.js +53 -0
- package/dist/blocks/reactions/index.d.ts +18 -0
- package/dist/blocks/reactions/index.js +26 -0
- package/dist/blocks/reactions/react/index.d.ts +23 -0
- package/dist/blocks/reactions/react/index.js +46 -0
- package/dist/blocks/reactions/react/server.d.ts +6 -0
- package/dist/blocks/reactions/react/server.js +7 -0
- package/dist/blocks/reactions/solid/index.d.ts +13 -0
- package/dist/blocks/reactions/solid/index.js +14 -0
- package/dist/blocks/reactions/svelte/index.d.ts +13 -0
- package/dist/blocks/reactions/svelte/index.js +14 -0
- package/dist/blocks/reactions/vue/index.d.ts +13 -0
- package/dist/blocks/reactions/vue/index.js +14 -0
- package/dist/blocks/relations/index.d.ts +180 -0
- package/dist/blocks/relations/index.js +254 -0
- package/dist/blocks/reminders/index.d.ts +177 -0
- package/dist/blocks/reminders/index.js +171 -0
- package/dist/blocks/reviews/index.d.ts +148 -0
- package/dist/blocks/reviews/index.js +139 -0
- package/dist/blocks/rules/index.d.ts +103 -0
- package/dist/blocks/rules/index.js +54 -0
- package/dist/blocks/rules/react/index.d.ts +34 -0
- package/dist/blocks/rules/react/index.js +55 -0
- package/dist/blocks/rules/react/server.d.ts +6 -0
- package/dist/blocks/rules/react/server.js +7 -0
- package/dist/blocks/rules/solid/index.d.ts +13 -0
- package/dist/blocks/rules/solid/index.js +14 -0
- package/dist/blocks/rules/svelte/index.d.ts +13 -0
- package/dist/blocks/rules/svelte/index.js +14 -0
- package/dist/blocks/rules/vue/index.d.ts +13 -0
- package/dist/blocks/rules/vue/index.js +14 -0
- package/dist/blocks/saved-views/index.d.ts +17 -0
- package/dist/blocks/saved-views/index.js +29 -0
- package/dist/blocks/saved-views/react/index.d.ts +34 -0
- package/dist/blocks/saved-views/react/index.js +57 -0
- package/dist/blocks/saved-views/react/server.d.ts +7 -0
- package/dist/blocks/saved-views/react/server.js +7 -0
- package/dist/blocks/saved-views/solid/index.d.ts +13 -0
- package/dist/blocks/saved-views/solid/index.js +14 -0
- package/dist/blocks/saved-views/svelte/index.d.ts +13 -0
- package/dist/blocks/saved-views/svelte/index.js +14 -0
- package/dist/blocks/saved-views/vue/index.d.ts +13 -0
- package/dist/blocks/saved-views/vue/index.js +14 -0
- package/dist/blocks/search/index.d.ts +31 -0
- package/dist/blocks/search/index.js +61 -0
- package/dist/blocks/search/react/index.d.ts +36 -0
- package/dist/blocks/search/react/index.js +49 -0
- package/dist/blocks/search/react/server.d.ts +7 -0
- package/dist/blocks/search/react/server.js +8 -0
- package/dist/blocks/search/solid/index.d.ts +13 -0
- package/dist/blocks/search/solid/index.js +14 -0
- package/dist/blocks/search/svelte/index.d.ts +13 -0
- package/dist/blocks/search/svelte/index.js +14 -0
- package/dist/blocks/search/vue/index.d.ts +13 -0
- package/dist/blocks/search/vue/index.js +14 -0
- package/dist/blocks/service-principals/index.d.ts +126 -0
- package/dist/blocks/service-principals/index.js +107 -0
- package/dist/blocks/sessions/index.d.ts +7 -0
- package/dist/blocks/sessions/index.js +14 -0
- package/dist/blocks/sessions/react/index.d.ts +31 -0
- package/dist/blocks/sessions/react/index.js +51 -0
- package/dist/blocks/sessions/react/server.d.ts +9 -0
- package/dist/blocks/sessions/react/server.js +11 -0
- package/dist/blocks/sessions/solid/index.d.ts +20 -0
- package/dist/blocks/sessions/solid/index.js +23 -0
- package/dist/blocks/sessions/svelte/index.d.ts +20 -0
- package/dist/blocks/sessions/svelte/index.js +23 -0
- package/dist/blocks/sessions/vue/index.d.ts +20 -0
- package/dist/blocks/sessions/vue/index.js +23 -0
- package/dist/blocks/settings/index.d.ts +20 -86
- package/dist/blocks/settings/index.js +28 -102
- package/dist/blocks/settings/react/index.d.ts +25 -0
- package/dist/blocks/settings/react/index.js +37 -0
- package/dist/blocks/settings/react/server.d.ts +7 -0
- package/dist/blocks/settings/react/server.js +7 -0
- package/dist/blocks/settings/solid/index.d.ts +13 -0
- package/dist/blocks/settings/solid/index.js +14 -0
- package/dist/blocks/settings/svelte/index.d.ts +13 -0
- package/dist/blocks/settings/svelte/index.js +14 -0
- package/dist/blocks/settings/vue/index.d.ts +13 -0
- package/dist/blocks/settings/vue/index.js +14 -0
- package/dist/blocks/share-links/index.d.ts +99 -0
- package/dist/blocks/share-links/index.js +99 -0
- package/dist/blocks/shared-signals/index.d.ts +395 -0
- package/dist/blocks/shared-signals/index.js +880 -0
- package/dist/blocks/signing-keys/index.d.ts +29 -0
- package/dist/blocks/signing-keys/index.js +161 -0
- package/dist/blocks/sla/index.d.ts +114 -0
- package/dist/blocks/sla/index.js +122 -0
- package/dist/blocks/sso/index.d.ts +169 -147
- package/dist/blocks/sso/index.js +258 -321
- package/dist/blocks/state-machine/index.d.ts +105 -0
- package/dist/blocks/state-machine/index.js +116 -0
- package/dist/blocks/tags/index.d.ts +20 -0
- package/dist/blocks/tags/index.js +28 -0
- package/dist/blocks/tags/react/index.d.ts +28 -0
- package/dist/blocks/tags/react/index.js +47 -0
- package/dist/blocks/tags/react/server.d.ts +7 -0
- package/dist/blocks/tags/react/server.js +7 -0
- package/dist/blocks/tags/solid/index.d.ts +13 -0
- package/dist/blocks/tags/solid/index.js +14 -0
- package/dist/blocks/tags/svelte/index.d.ts +13 -0
- package/dist/blocks/tags/svelte/index.js +14 -0
- package/dist/blocks/tags/vue/index.d.ts +13 -0
- package/dist/blocks/tags/vue/index.js +14 -0
- package/dist/blocks/targets/index.d.ts +82 -0
- package/dist/blocks/targets/index.js +73 -0
- package/dist/blocks/teams/index.d.ts +61 -0
- package/dist/blocks/teams/index.js +83 -0
- package/dist/blocks/templates/index.d.ts +362 -0
- package/dist/blocks/templates/index.js +483 -0
- package/dist/blocks/time-tracking/index.d.ts +250 -0
- package/dist/blocks/time-tracking/index.js +317 -0
- package/dist/blocks/trash/index.d.ts +78 -0
- package/dist/blocks/trash/index.js +79 -0
- package/dist/blocks/undo/index.d.ts +9 -0
- package/dist/blocks/undo/index.js +14 -0
- package/dist/blocks/undo/react/index.d.ts +17 -0
- package/dist/blocks/undo/react/index.js +24 -0
- package/dist/blocks/undo/react/server.d.ts +7 -0
- package/dist/blocks/undo/react/server.js +7 -0
- package/dist/blocks/undo/solid/index.d.ts +13 -0
- package/dist/blocks/undo/solid/index.js +14 -0
- package/dist/blocks/undo/svelte/index.d.ts +13 -0
- package/dist/blocks/undo/svelte/index.js +14 -0
- package/dist/blocks/undo/vue/index.d.ts +13 -0
- package/dist/blocks/undo/vue/index.js +14 -0
- package/dist/blocks/usage/index.d.ts +10 -4
- package/dist/blocks/usage/index.js +16 -233
- package/dist/blocks/usage/react/index.d.ts +23 -0
- package/dist/blocks/usage/react/index.js +38 -0
- package/dist/blocks/usage/react/server.d.ts +7 -0
- package/dist/blocks/usage/react/server.js +7 -0
- package/dist/blocks/usage/solid/index.d.ts +13 -0
- package/dist/blocks/usage/solid/index.js +14 -0
- package/dist/blocks/usage/svelte/index.d.ts +13 -0
- package/dist/blocks/usage/svelte/index.js +14 -0
- package/dist/blocks/usage/vue/index.d.ts +13 -0
- package/dist/blocks/usage/vue/index.js +14 -0
- package/dist/blocks/versions/index.d.ts +165 -0
- package/dist/blocks/versions/index.js +283 -0
- package/dist/blocks/waitlist/index.d.ts +57 -19
- package/dist/blocks/waitlist/index.js +46 -12
- package/dist/blocks/webhooks/index.d.ts +269 -137
- package/dist/blocks/webhooks/index.js +752 -179
- package/dist/blocks/work-items/index.d.ts +208 -0
- package/dist/blocks/work-items/index.js +305 -0
- package/dist/blocks/workflow-builder/index.d.ts +26 -6
- package/dist/blocks/workflow-builder/index.js +30 -5
- package/dist/blocks/workflow-builder/react/index.d.ts +4 -19
- package/dist/blocks/workflow-builder/react/index.js +45 -89
- package/dist/blocks/workflow-builder/solid/index.d.ts +20 -0
- package/dist/blocks/workflow-builder/solid/index.js +23 -0
- package/dist/blocks/workflow-builder/svelte/index.d.ts +20 -0
- package/dist/blocks/workflow-builder/svelte/index.js +23 -0
- package/dist/blocks/workflow-builder/vue/index.d.ts +20 -0
- package/dist/blocks/workflow-builder/vue/index.js +23 -0
- package/dist/blocks/workflows/index.d.ts +20 -3
- package/dist/blocks/workflows/index.js +27 -3
- package/dist/blocks/workflows/react/index.d.ts +5 -20
- package/dist/blocks/workflows/react/index.js +41 -113
- package/dist/blocks/workflows/solid/index.d.ts +20 -0
- package/dist/blocks/workflows/solid/index.js +23 -0
- package/dist/blocks/workflows/svelte/index.d.ts +20 -0
- package/dist/blocks/workflows/svelte/index.js +23 -0
- package/dist/blocks/workflows/vue/index.d.ts +20 -0
- package/dist/blocks/workflows/vue/index.js +23 -0
- package/dist/blocks-D2WQ63PI.js +84 -0
- package/dist/bookings-0XnhHNLM.js +181 -0
- package/dist/build-Cm0T5MVG.js +1815 -0
- package/dist/build-Cx08LOT7.js +689 -0
- package/dist/calendar-DcFrpSOy.js +801 -0
- package/dist/channel-D-LHCY11.d.ts +78 -0
- package/dist/channels-C-GCoNLd.js +114 -0
- package/dist/chat-sdk/index.d.ts +131 -7
- package/dist/chat-sdk/index.js +154 -6
- package/dist/chat-sdk/react/index.d.ts +2 -1
- package/dist/chat-sdk/react/index.js +1 -2
- package/dist/chat-sdk/react/server.d.ts +2 -1
- package/dist/chat-sdk/react/server.js +1 -2
- package/dist/cli/add-B0zoJUYX.js +651 -0
- package/dist/cli/add-Bd5M6uEZ.js +75 -0
- package/dist/cli/add-CT6p5psO.js +1 -0
- package/dist/cli/adopt-C9jl8z0h.js +1 -0
- package/dist/cli/adopt-CebmlHL-.js +393 -0
- package/dist/cli/agent-CCt_aXpJ.js +176 -0
- package/dist/cli/apply-Dxk8AUNU.js +302 -0
- package/dist/cli/bin.js +40 -20
- package/dist/cli/blocks-Bzz326nn.js +1 -0
- package/dist/cli/blocks-Dq25D80b.js +124 -0
- package/dist/cli/cache-Cx6qlRDR.js +502 -0
- package/dist/cli/catalog-Di15TkM2.js +187 -0
- package/dist/cli/codemod-woL4cVe0.js +985 -0
- package/dist/cli/command-CK9Cn8HV.js +836 -0
- package/dist/cli/completion-BO5UK6bG.js +1 -0
- package/dist/cli/completion-CWoDmFZr.js +205 -0
- package/dist/cli/completion-J3dqnNoW.js +30 -0
- package/dist/cli/config-C1d-mbUA.js +1 -0
- package/dist/cli/config-CLHpTk9Y.js +1421 -0
- package/dist/cli/config-MuKY9kUj.js +39 -0
- package/dist/cli/config-edit-Ct1lXe8a.js +603 -0
- package/dist/cli/db-DT1bGB02.js +78 -0
- package/dist/cli/design-edit-B-WsnhUF.js +175 -0
- package/dist/cli/detect-DYDUBLU4.js +84 -0
- package/dist/cli/dist-D_VbPAMR.js +129 -0
- package/dist/cli/dist-DuiMMRbJ.js +1112 -0
- package/dist/cli/doctor-SGw36h1D.js +3806 -0
- package/dist/cli/emit-ZAYeh4Yn.js +1042 -0
- package/dist/cli/env-CVXvJoLP.js +142 -0
- package/dist/cli/env-D3gZ-OHj.js +1 -0
- package/dist/cli/env-DJ4ZaJpe.js +1 -0
- package/dist/cli/env-DMw_MBe5.js +996 -0
- package/dist/cli/errors-Caiz_0so.js +98 -0
- package/dist/cli/fastest-levenshtein-dhRRvrM2.js +120 -0
- package/dist/cli/files-DDvAwTko.js +963 -0
- package/dist/cli/gen-B344S1Oy.js +304 -0
- package/dist/cli/guards-CUlDNYZs.js +8 -0
- package/dist/cli/index.d.ts +258 -129
- package/dist/cli/index.js +13 -10
- package/dist/cli/init-B1dL-RZL.js +393 -0
- package/dist/cli/introspect-BPcFi8ow.js +51 -0
- package/dist/cli/io-BiPX-_J1.js +37 -0
- package/dist/cli/jsonc-C8M0EhHB.js +1 -0
- package/dist/cli/keys-jsxCNJdz.js +106 -0
- package/dist/cli/metadata-CxBZo4KM.js +138 -0
- package/dist/cli/module-migration-YFFdWC5X.js +592 -0
- package/dist/cli/moved-D9OT_Uyy.js +152 -0
- package/dist/cli/parse-DE59XyWt.js +170 -0
- package/dist/cli/preset-DmcC4nWE.js +129 -0
- package/dist/cli/prompts-Bvg_DBpe.js +1137 -0
- package/dist/cli/redact-PjNswZOs.js +35 -0
- package/dist/cli/rolldown-runtime-kJ_i4yPo.js +26 -0
- package/dist/cli/run-CM_2g6KQ.js +684 -0
- package/dist/cli/run-DaHfUUO9.js +1539 -0
- package/dist/cli/scaffold-CFdDq36-.js +898 -0
- package/dist/cli/scaffold-Dsjr7sOT.js +1 -0
- package/dist/cli/seed-DldDdXWO.js +113 -0
- package/dist/cli/seed-DtRFysBe.js +1 -0
- package/dist/cli/shell-Btv_4Yhe.js +10 -0
- package/dist/cli/skills-v34NDb2D.js +121 -0
- package/dist/cli/snapshot-DAxLi4hO.js +347 -0
- package/dist/cli/source-args-0I9zylYy.js +47 -0
- package/dist/cli/spec-CaaSOYZS.js +7501 -0
- package/dist/cli/spec-De0cfceR.js +1 -0
- package/dist/cli/sql-0I1EQ3JG.js +2 -0
- package/dist/cli/sql-DDLWwzh9.js +326 -0
- package/dist/cli/stack-status-CRanl-CN.js +456 -0
- package/dist/cli/style-2JfIPVMQ.js +29 -0
- package/dist/cli/supabase-toml-DjLgBYEo.js +1153 -0
- package/dist/cli/sync-DFx-6t5n.js +88 -0
- package/dist/cli/topics-GJuIDwlY.js +30 -0
- package/dist/cli/trace-VbdO6bcN.js +7 -0
- package/dist/cli/typegen--TfvOPLh.js +494 -0
- package/dist/cli/typegen-version-BNBPI4Eu.js +9 -0
- package/dist/cli/validate-BfWNKvxy.js +7522 -0
- package/dist/cli/version-DNRW4DAP.js +4 -0
- package/dist/cli/write-BS6F3Yvz.js +180 -0
- package/dist/client/index.d.ts +7 -4
- package/dist/client/index.js +152 -6
- package/dist/client/native/index.d.ts +71 -4
- package/dist/client/native/index.js +65 -6
- package/dist/client-01MAuqzW.js +137 -0
- package/dist/client-B7QVIrJS.d.ts +263 -0
- package/dist/client-B9CqzgPO.js +75 -0
- package/dist/client-BAcILZOf.d.ts +122 -0
- package/dist/client-BOT2KVIp.js +128 -0
- package/dist/client-BUGIS__1.js +1051 -0
- package/dist/client-BVZtq_rQ.d.ts +34 -0
- package/dist/client-BYaOGCOG.js +84 -0
- package/dist/client-BfgwocyT.js +155 -0
- package/dist/client-BpS8a6Fm.js +51 -0
- package/dist/client-BxnLb9bz.d.ts +58 -0
- package/dist/client-BzCv4kKE.js +65 -0
- package/dist/client-C-2ajnhM.js +89 -0
- package/dist/client-C5mUEb2n.js +55 -0
- package/dist/client-C9QrWrnt.js +209 -0
- package/dist/client-CFdMJ1h9.d.ts +277 -0
- package/dist/client-CHmjaI0j.d.ts +103 -0
- package/dist/client-CWs3X4g1.js +120 -0
- package/dist/client-Cdedx_lw.js +438 -0
- package/dist/client-CiGjS6us.js +169 -0
- package/dist/client-CilSKXNu.js +288 -0
- package/dist/client-ClZ0D-if.d.ts +162 -0
- package/dist/client-Cmensu7l.d.ts +419 -0
- package/dist/client-Co6BPmvr.d.ts +108 -0
- package/dist/client-CoVGPi0c.js +133 -0
- package/dist/client-CvITjt-9.js +310 -0
- package/dist/client-CzI4QpG3.d.ts +131 -0
- package/dist/client-D5CZ2a34.d.ts +455 -0
- package/dist/client-DAHsEOVV.d.ts +155 -0
- package/dist/client-DG7FwgZD.js +104 -0
- package/dist/client-DIrCmOXz.d.ts +157 -0
- package/dist/client-DNq8xYb-.js +52 -0
- package/dist/client-DdfSIZ3M.d.ts +107 -0
- package/dist/client-DjTRlN3a.d.ts +68 -0
- package/dist/client-Ezlbskjq.js +60 -0
- package/dist/client-LLmgiCwJ.d.ts +135 -0
- package/dist/client-Lx3mlvKO.d.ts +100 -0
- package/dist/client-PGRk3DGz.js +98 -0
- package/dist/client-Tc47rlSe.d.ts +350 -0
- package/dist/client-VvY0K3wr.d.ts +59 -0
- package/dist/client-WAdEBBrH.d.ts +65 -0
- package/dist/client-WHeWTNVL.d.ts +130 -0
- package/dist/client-WgrPIHH-.js +213 -0
- package/dist/client-ZTtSV3l8.js +40 -0
- package/dist/client-b2_GjzzD.js +438 -0
- package/dist/client-ckXfdy1k.js +38 -0
- package/dist/client-e-hFkLUf.d.ts +34 -0
- package/dist/client-hyP_nS5R.d.ts +218 -0
- package/dist/client-i8glKhxh.js +67 -0
- package/dist/client-iDLLvGR4.d.ts +52 -0
- package/dist/client-pxjbgOz6.js +376 -0
- package/dist/client-xkSCp9hN.d.ts +101 -0
- package/dist/client-ysNShuJZ.d.ts +39 -0
- package/dist/cloud-event-5rCEzIgK.d.ts +64 -0
- package/dist/codecs-Bm46sVxr.d.ts +215 -0
- package/dist/codecs-YAekuQ08.js +358 -0
- package/dist/codegen-DeoSt1mi.d.ts +1571 -0
- package/dist/comments-D7sbd0xG.js +230 -0
- package/dist/commerce/index.d.ts +211 -0
- package/dist/commerce/index.js +517 -0
- package/dist/compiler-BVxepAY0.d.ts +14 -0
- package/dist/compose-Djntdacs.js +53 -0
- package/dist/composite-M6zPs1Xm.js +130 -0
- package/dist/composite-djtGy6bz.d.ts +67 -0
- package/dist/config/index.d.ts +7 -5
- package/dist/config/index.js +7 -4
- package/dist/config-BA1K4OPk.js +557 -0
- package/dist/config-C4MozTD7.js +3892 -0
- package/dist/connector-Cp8CqssJ.d.ts +107 -0
- package/dist/connectors-CjD-R2ks.d.ts +141 -0
- package/dist/context-1sSWcd7_.d.ts +365 -0
- package/dist/context-B8_p3MXo.js +11 -0
- package/dist/context-BDDgjoxz.js +41 -0
- package/dist/context-C-bHOtoD.js +5 -0
- package/dist/context-D6ZMKc2L.js +19 -0
- package/dist/context-wDKxSl9x.js +9 -0
- package/dist/controller-D6NyNrlZ.js +79 -0
- package/dist/controller-D845qKh2.d.ts +46 -0
- package/dist/credentials/index.d.ts +15 -5
- package/dist/credentials/index.js +16 -8
- package/dist/cron-CUaKTjWC.js +145 -0
- package/dist/cron-route-CoL-By8Z.js +24 -0
- package/dist/csv-CVfXqaAu.js +89 -0
- package/dist/csv-D3eKxV1T.d.ts +28 -0
- package/dist/define-B2ln373W.js +1896 -0
- package/dist/define-DxHHbNEb.d.ts +1005 -0
- package/dist/define-block-B6Gjs57G.js +52 -0
- package/dist/define-block-CLZMEFeK.d.ts +256 -0
- package/dist/delegation-Dt8hMJWu.js +140 -0
- package/dist/delivery-B1mKaOen.js +30 -0
- package/dist/delivery-BeHgwS3k.d.ts +69 -0
- package/dist/documents-CWn2mtYf.d.ts +96 -0
- package/dist/edge/index.d.ts +16 -14
- package/dist/edge/index.js +24 -18
- package/dist/elysia/index.d.ts +1 -1
- package/dist/elysia/index.js +2 -2
- package/dist/email-BcmbIWOX.d.ts +42 -0
- package/dist/embeddings-C2S14foD.d.ts +78 -0
- package/dist/embeddings-CVeOoufZ.js +128 -0
- package/dist/ended-nIdGCHxk.d.ts +70 -0
- package/dist/entitlements-BvU5dLpW.js +45 -0
- package/dist/entitlements-CbzCKalR.d.ts +53 -0
- package/dist/env/index.d.ts +1 -1
- package/dist/env/index.js +3 -3
- package/dist/envelope-CHYk5MXU.js +90 -0
- package/dist/errors-8i6tSICm.js +301 -0
- package/dist/errors-PIpcoe4z.js +44 -0
- package/dist/escape-like-AUEPn-C5.d.ts +15 -0
- package/dist/eve/index.d.ts +5 -5
- package/dist/eve/index.js +9 -9
- package/dist/eve-DUF70Vgi.d.ts +151 -0
- package/dist/event-calendar-DJXXMJ3x.d.ts +217 -0
- package/dist/event-map-Dy2vKHai.js +19 -0
- package/dist/events/index.d.ts +4 -4
- package/dist/events/index.js +10 -7
- package/dist/events-CTreRrgP.d.ts +800 -0
- package/dist/events-xbpHkcK9.js +82 -0
- package/dist/executor-BBHgjUJu.d.ts +39 -0
- package/dist/executor-BINiCFNp.d.ts +95 -0
- package/dist/executor-BXSHYyW2.js +735 -0
- package/dist/executor-D1kYY5BA.js +206 -0
- package/dist/executor-D3K3tycZ.js +147 -0
- package/dist/executor-DKrZr3AC.d.ts +174 -0
- package/dist/executor-DoE-5iM8.d.ts +272 -0
- package/dist/expo/index.d.ts +4 -4
- package/dist/expo/index.js +6 -6
- package/dist/expo-sqlite/index.d.ts +3 -3
- package/dist/expo-sqlite/index.js +2 -2
- package/dist/field-errors-CWXN_h_E.d.ts +113 -0
- package/dist/field-formats-Cif5gr7c.js +102 -0
- package/dist/field-formats-DCvOQlOy.d.ts +39 -0
- package/dist/filter-evaluate-C0ULNfS7.js +214 -0
- package/dist/filter-evaluate-CjcFq0RT.d.ts +34 -0
- package/dist/filter-query-B3lhckKX.js +518 -0
- package/dist/filter-query-BKmRYrTE.d.ts +121 -0
- package/dist/flags-D_D1jAHB.d.ts +230 -0
- package/dist/flags-XAOsdNAc.js +279 -0
- package/dist/flags-sdk/index.d.ts +143 -0
- package/dist/flags-sdk/index.js +175 -0
- package/dist/form-definition-sagoefQr.d.ts +95 -0
- package/dist/format-CNwSjXUU.d.ts +70 -0
- package/dist/framework-DG5Bv39u.d.ts +26 -0
- package/dist/framework-INbjMZX1.js +51 -0
- package/dist/function-contract-B4c0XuTU.d.ts +21 -0
- package/dist/function-contract-DmkBg19r.js +5 -0
- package/dist/gateway-Cup00l0w.d.ts +109 -0
- package/dist/gateway-options-ClvvfuuU.d.ts +29 -0
- package/dist/gateway-options-DcLcWL5_.js +27 -0
- package/dist/graph-Cs28bOlK.js +360 -0
- package/dist/groups-CxonH3u5.js +16 -0
- package/dist/h3/index.d.ts +7 -3
- package/dist/h3/index.js +3 -3
- package/dist/h3/v1/index.d.ts +1 -1
- package/dist/h3/v1/index.js +2 -2
- package/dist/hono/index.d.ts +24 -10
- package/dist/hono/index.js +50 -22
- package/dist/http-BF-V0CUF.js +25 -0
- package/dist/impersonation-CDeCzZP6.js +62 -0
- package/dist/impersonation-D5chOkrO.d.ts +25 -0
- package/dist/inbox-3ql4phyr.d.ts +400 -0
- package/dist/index-BIi8i6BO.d.ts +97 -0
- package/dist/index-BkzNUPId.d.ts +131 -0
- package/dist/index-BlqrGvb3.d.ts +227 -0
- package/dist/index-Brhm22eL.d.ts +138 -0
- package/dist/index-Bvw9r94Q.d.ts +245 -0
- package/dist/index-CETRk4YO.d.ts +82 -0
- package/dist/index-CrZitvSC.d.ts +258 -0
- package/dist/index-DfVXx4Ia.d.ts +202 -0
- package/dist/index-DygICr8c.d.ts +206 -0
- package/dist/index-Ej8XQ9w9.d.ts +58 -0
- package/dist/index-jhqhynmh.d.ts +58 -0
- package/dist/index.d.ts +15 -15
- package/dist/index.js +15 -14
- package/dist/iso4217-A8ev-CNW.js +176 -0
- package/dist/json-schema-CpYINXG8.js +548 -0
- package/dist/jws-35a8VhFV.d.ts +60 -0
- package/dist/jws-milwSg7E.js +191 -0
- package/dist/kit-D5S7KNFe.d.ts +66 -0
- package/dist/kit-MUK34-ZG.js +104 -0
- package/dist/knowledge-BXQ2-V0a.d.ts +187 -0
- package/dist/knowledge-CJ_Mm3ic.js +272 -0
- package/dist/lint/index.js +9 -9
- package/dist/list/index.d.ts +4 -2
- package/dist/list/index.js +4 -2
- package/dist/list-query-CBXNfJt4.js +549 -0
- package/dist/list-query-PvP3pPGQ.d.ts +194 -0
- package/dist/live-DwDreq1n.js +239 -0
- package/dist/mcp/index.d.ts +24 -7
- package/dist/mcp/index.js +76 -55
- package/dist/mcp/sdk/index.d.ts +6 -6
- package/dist/mcp/sdk/index.js +7 -7
- package/dist/messages-Cx4ttLJJ.js +493 -0
- package/dist/metric-definition-95HFoW1V.d.ts +70 -0
- package/dist/metric-definition-BjxVn4R5.js +117 -0
- package/dist/mfa-DtflCXEt.d.ts +30 -0
- package/dist/model-lUafmeBQ.d.ts +311 -0
- package/dist/model-messages-CTu-6kBu.js +206 -0
- package/dist/money-95Rff2vT.js +185 -0
- package/dist/money-DFpWzQvk.d.ts +76 -0
- package/dist/money-codec-C_-K5ZUU.js +41 -0
- package/dist/nestjs/index.d.ts +2 -2
- package/dist/nestjs/index.js +2 -2
- package/dist/next/index.d.ts +26 -16
- package/dist/next/index.js +17 -16
- package/dist/node/index.d.ts +2 -2
- package/dist/node/index.js +3 -3
- package/dist/nuxt/index.d.ts +2 -2
- package/dist/nuxt/index.js +3 -2
- package/dist/onboarding-BZvLLPaY.js +68 -0
- package/dist/openapi/index.d.ts +3 -3
- package/dist/openapi/index.js +2 -2
- package/dist/operations-C9-UcReN.d.ts +6 -0
- package/dist/operations-CsIfMED7.js +29 -0
- package/dist/optional-peer-Dx8TaYXw.js +29 -0
- package/dist/options-B0FcEKtH.js +5 -0
- package/dist/options-B5BU2Yg7.js +11 -0
- package/dist/options-B5woz53h.js +5 -0
- package/dist/options-B7EJaOX-.js +5 -0
- package/dist/options-B9q8CROT.js +9 -0
- package/dist/options-BA6jV6py.js +10 -0
- package/dist/options-BAW2ZlZ8.js +8 -0
- package/dist/options-BMjcVuaI.js +82 -0
- package/dist/options-BOOEzor9.js +5 -0
- package/dist/options-BQ07tTYr.js +11 -0
- package/dist/options-BZsoPJGX.js +5 -0
- package/dist/options-BesyRBnM.js +16 -0
- package/dist/options-Bf96aVk5.js +10 -0
- package/dist/options-BlOPivzq.js +8 -0
- package/dist/options-Blg8lAkz.js +9 -0
- package/dist/options-Bn4cu0gt.js +5 -0
- package/dist/options-BnoJOwXK.js +8 -0
- package/dist/options-Bp7sgKvl.js +30 -0
- package/dist/options-BqO9GYig.js +311 -0
- package/dist/options-BxcFLL1G.js +8 -0
- package/dist/options-C1HR4UZd.js +13 -0
- package/dist/options-C239TLRF.js +14 -0
- package/dist/options-C2HesT4A.js +9 -0
- package/dist/options-C3EzJATk.js +10 -0
- package/dist/options-C3hZ1fbC.js +10 -0
- package/dist/options-C6rEL6U5.js +8 -0
- package/dist/options-CAzVf-1T.js +8 -0
- package/dist/options-CGKSUFUq.js +5 -0
- package/dist/options-CGjGE8xS.js +12 -0
- package/dist/options-CK5WiFwG.js +11 -0
- package/dist/options-CN7PHkhU.js +8 -0
- package/dist/options-CTZNpb2n.js +5 -0
- package/dist/options-CUqQ9pm7.js +9 -0
- package/dist/options-CVSWgZpY.js +8 -0
- package/dist/options-CXFz0xxS.js +8 -0
- package/dist/options-CZk_fbbg.js +9 -0
- package/dist/options-C_pb1Nd3.js +5 -0
- package/dist/options-CbSOj53r.d.ts +52 -0
- package/dist/options-ChD15QxJ.js +9 -0
- package/dist/options-CkScQRJR.js +12 -0
- package/dist/options-CljDnQt2.js +25 -0
- package/dist/options-CmraJhd9.js +5 -0
- package/dist/options-CoX6VKGb.js +8 -0
- package/dist/options-CrC78Tee.js +5 -0
- package/dist/options-Ctac2R0Q.js +11 -0
- package/dist/options-CyD7OObW.js +17 -0
- package/dist/options-D1blDihM.js +9 -0
- package/dist/options-D2Gd6VfS.js +8 -0
- package/dist/options-D2d1fFuw.js +11 -0
- package/dist/options-D40CQzji.js +8 -0
- package/dist/options-D7f2VKzj.js +25 -0
- package/dist/options-DARkpk2P.js +8 -0
- package/dist/options-DCduTMST.js +17 -0
- package/dist/options-DDzggjN7.js +8 -0
- package/dist/options-DMR68VAC.js +5 -0
- package/dist/options-DNKyN5uq.js +20 -0
- package/dist/options-DTDxFT6J.js +13 -0
- package/dist/options-DWpz3V3F.js +8 -0
- package/dist/options-DXqcJyOP.js +10 -0
- package/dist/options-DYBQ973I.js +8 -0
- package/dist/options-Dh4wu9Ks.js +15 -0
- package/dist/options-Dmg1Da9P.js +25 -0
- package/dist/options-DsUgamiy.js +5 -0
- package/dist/options-EsUh744F.js +13 -0
- package/dist/options-Fz6xqu-b.js +5 -0
- package/dist/options-HSv8R6h5.js +13 -0
- package/dist/options-I8zVkB_y.js +8 -0
- package/dist/options-MHhjOoWz.js +5 -0
- package/dist/options-MLxMkd5B.js +11 -0
- package/dist/options-OJ5zmgr8.js +10 -0
- package/dist/options-QKP9FFcK.js +8 -0
- package/dist/options-SViK_2x2.js +12 -0
- package/dist/options-XgfTctbI.js +5 -0
- package/dist/options-_9arpsX9.js +11 -0
- package/dist/options-eBPsk4WI.js +11 -0
- package/dist/options-kLKILdIu.js +10 -0
- package/dist/options-n22NK3PL.js +8 -0
- package/dist/options-oeAq4Ho5.js +12 -0
- package/dist/options-qU8vgxhO.js +18 -0
- package/dist/options-vXMBEWSH.js +5 -0
- package/dist/options-wFnK3qWl.js +9 -0
- package/dist/options-xVAy3UsV.js +9 -0
- package/dist/organizations-Cw7om8uk.js +398 -0
- package/dist/orpc/index.d.ts +26 -10
- package/dist/orpc/index.js +54 -33
- package/dist/otel/index.d.ts +3 -3
- package/dist/otel/index.js +42 -7
- package/dist/outbox-BTeqjbum.d.ts +181 -0
- package/dist/overlay/index.d.ts +1 -1
- package/dist/overlay/index.js +3 -3
- package/dist/payments-h45bswA-.js +16 -0
- package/dist/pg-error-BV_X8Isq.js +26 -0
- package/dist/plugin-CDLJRFFg.d.ts +190 -0
- package/dist/plugins/actor/index.d.ts +1 -1
- package/dist/plugins/actor/index.js +1 -1
- package/dist/plugins/rules/index.d.ts +2 -2
- package/dist/plugins/rules/index.js +2 -2
- package/dist/plugins/soft-delete/index.d.ts +3 -3
- package/dist/plugins/soft-delete/index.js +4 -4
- package/dist/plugins/tenant/index.d.ts +4 -3
- package/dist/plugins/tenant/index.js +3 -3
- package/dist/plugins/timestamps/index.d.ts +1 -1
- package/dist/plugins/timestamps/index.js +1 -1
- package/dist/plugins/validation/index.d.ts +2 -2
- package/dist/plugins/validation/index.js +3 -3
- package/dist/pool-CwOCsX9e.d.ts +114 -0
- package/dist/pool-errors-GMjlCN0d.js +27 -0
- package/dist/ports-Ca63W4cW.d.ts +285 -0
- package/dist/ports-DAdQyjZz.d.ts +86 -0
- package/dist/ports-DGK3KTDH.js +133 -0
- package/dist/postgres/index.d.ts +28 -6
- package/dist/postgres/index.js +54 -23
- package/dist/postgrest-Cw9Bs5gm.d.ts +53 -0
- package/dist/powersync/index.d.ts +4 -4
- package/dist/powersync/index.js +4 -4
- package/dist/powersync/react/index.d.ts +8 -3
- package/dist/powersync/react/index.js +11 -3
- package/dist/preset/index.d.ts +352 -0
- package/dist/preset/index.js +564 -0
- package/dist/problem-CEjyhV5T.d.ts +76 -0
- package/dist/problem-pIiL3WbE.js +159 -0
- package/dist/provider-9gBq9W6k.d.ts +113 -0
- package/dist/provider-DKh2xFZb.js +57 -0
- package/dist/push-token-D6REHMMw.js +16 -0
- package/dist/push-token-asrmi7-6.d.ts +24 -0
- package/dist/query/index.d.ts +2 -2
- package/dist/range-DwpWe8e7.js +7 -0
- package/dist/range-p5V4rBhZ.d.ts +8 -0
- package/dist/rank-keys-DcPMt_Jk.js +60 -0
- package/dist/rank-result-DS8IoLup.js +18 -0
- package/dist/rank-result-Dngpt2n5.d.ts +14 -0
- package/dist/rate-limit--QSiFA6D.js +325 -0
- package/dist/rate-limit-BtbddDnE.js +49 -0
- package/dist/rate-limit-C88MEAOm.d.ts +41 -0
- package/dist/ratelimit-headers-Bsxx0Tj2.js +62 -0
- package/dist/react/index.d.ts +9 -9
- package/dist/react/index.js +3 -4
- package/dist/react/native/index.d.ts +1 -1
- package/dist/react/native/index.js +2 -2
- package/dist/react/server.d.ts +10 -10
- package/dist/react/server.js +3 -3
- package/dist/react/session.d.ts +2 -2
- package/dist/react-CKXUkwPx.js +410 -0
- package/dist/react-controller-Xn-IU44p.js +40 -0
- package/dist/react-env-Cc7Vf6eb.js +13 -0
- package/dist/react-router/index.d.ts +6 -6
- package/dist/react-router/index.js +7 -7
- package/dist/read-set-GEb-i0On.js +314 -0
- package/dist/realtime/index.d.ts +8 -4
- package/dist/realtime/index.js +5 -327
- package/dist/realtime-status-D2dw1hOE.js +12 -0
- package/dist/realtime-status-DcsO00Gw.d.ts +8 -0
- package/dist/refusal-br4Ma9Cf.js +61 -0
- package/dist/refusal-oD3ISM9h.d.ts +18 -0
- package/dist/replicas-BvIL4_jL.js +94 -0
- package/dist/resolve-CAR9oaKW.js +869 -0
- package/dist/resolve-w9EpHzuM.d.ts +266 -0
- package/dist/resource-B4ka8dDH.d.ts +106 -0
- package/dist/resource-C8r5xGqY.js +463 -0
- package/dist/resource-DO4gbVi5.js +91 -0
- package/dist/resource-execute-D0yQ-8WR.d.ts +12 -0
- package/dist/resource-types-D2vEQVXI.d.ts +141 -0
- package/dist/resources-BklF-rjz.d.ts +7 -0
- package/dist/resources-BlZdLsWQ.js +64 -0
- package/dist/respond-C7I8kLK_.d.ts +93 -0
- package/dist/respond-DdhZ9Wbn.js +95 -0
- package/dist/result-BlgnMB0H.js +128 -0
- package/dist/result-Cj3yWhjH.d.ts +298 -0
- package/dist/rrule-zBh3CA1r.js +290 -0
- package/dist/rules-B0-3Iosu.js +261 -0
- package/dist/run-watch-CQRdpy-f.js +53 -0
- package/dist/sales-lines-BAk8In-Z.js +41 -0
- package/dist/sales-lines-C6gafAwg.d.ts +28 -0
- package/dist/sales-shared-DAAGwQwN.d.ts +8 -0
- package/dist/sales-shared-SblIgCgI.js +22 -0
- package/dist/scope-DgWjuXUw.js +90 -0
- package/dist/search-B6h03cAx.js +106 -0
- package/dist/search-BtoWY6n_.js +9 -0
- package/dist/server/index.d.ts +157 -51
- package/dist/server/index.js +295 -20
- package/dist/server-types-OohhIQb2.d.ts +737 -0
- package/dist/session-DiWHtYrO.d.ts +95 -0
- package/dist/settings-BXFn9zpS.js +90 -0
- package/dist/shared-BmMcMoW9.js +89 -0
- package/dist/shared-DbO3Dfms.js +14 -0
- package/dist/shared-as0EG51f.js +60 -0
- package/dist/sign-in-D0xN6E_l.js +360 -0
- package/dist/signatures-B41ApWXA.js +145 -0
- package/dist/signatures-BMdJ7neI.d.ts +43 -0
- package/dist/signers-CXt_wA9S.d.ts +385 -0
- package/dist/signing-keys-Bq9mMCTh.d.ts +90 -0
- package/dist/solid/index.d.ts +8 -8
- package/dist/solid/index.js +3 -8
- package/dist/solid-controller-DLsmrczT.js +33 -0
- package/dist/solid-controller-DqlvYFZa.d.ts +11 -0
- package/dist/solid-start/index.d.ts +8 -12
- package/dist/solid-start/index.js +8 -7
- package/dist/spec/index.d.ts +25 -5
- package/dist/spec/index.js +37 -4
- package/dist/spec-pins-Dqpml2dZ.d.ts +84 -0
- package/dist/spec-pins-S4PymRxp.js +60 -0
- package/dist/sql/index.d.ts +189 -28
- package/dist/sql/index.js +74328 -26488
- package/dist/sql-DJrXG-3Z.js +422 -0
- package/dist/sso-BDva_-4y.js +217 -0
- package/dist/sso-BN0LnMqE.d.ts +131 -0
- package/dist/ssr/index.d.ts +5 -6
- package/dist/ssr/index.js +4 -4
- package/dist/standard-B5fe2gnW.js +25 -0
- package/dist/standard-C3_AAF3g.d.ts +7 -0
- package/dist/stats-D6vkb89f.js +1128 -0
- package/dist/storage/index.d.ts +3 -3
- package/dist/storage/index.js +14 -10
- package/dist/storage-api-Cx-1iWBd.d.ts +582 -0
- package/dist/store-B5qYKsTh.d.ts +68 -0
- package/dist/streams/index.d.ts +4 -4
- package/dist/streams/index.js +4 -4
- package/dist/streams/redis/index.d.ts +1 -1
- package/dist/streams/redis/index.js +4 -4
- package/dist/stripe/index.d.ts +16 -0
- package/dist/stripe/index.js +14 -0
- package/dist/stripe-NVcNOhHy.d.ts +140 -0
- package/dist/stripe-XZrSmDTf.js +32 -0
- package/dist/subject-readers-DiePmaYP.js +46 -0
- package/dist/subject-readers-fxP5wu0s.d.ts +21 -0
- package/dist/subjects-z8VWA_lF.d.ts +69 -0
- package/dist/subscribers-Cq--DL1E.js +34 -0
- package/dist/supabase-mcp-DomZ-amK.js +28 -0
- package/dist/support-BsKkvA92.js +522 -0
- package/dist/support-view-BbcZR7Io.d.ts +17 -0
- package/dist/svelte/index.d.ts +7 -7
- package/dist/svelte/index.js +2 -2
- package/dist/svelte-controller-CDAujo-_.js +50 -0
- package/dist/svelte-controller-DxxHEHxD.d.ts +10 -0
- package/dist/sveltekit/index.d.ts +11 -13
- package/dist/sveltekit/index.js +9 -9
- package/dist/table-schema-pQlER3jj.js +283 -0
- package/dist/tags-Dw8vKkcI.d.ts +30 -0
- package/dist/tags-PaG0Ns_9.js +84 -0
- package/dist/tanstack-db/index.d.ts +2 -2
- package/dist/tanstack-db/index.js +1 -1
- package/dist/tanstack-db/supabase/index.d.ts +5 -6
- package/dist/tanstack-db/supabase/index.js +180 -9
- package/dist/tanstack-start/index.d.ts +7 -7
- package/dist/tanstack-start/index.js +6 -6
- package/dist/tax-DDZUB_oc.d.ts +273 -0
- package/dist/tax-D_kSCdWU.js +140 -0
- package/dist/tee-Bsisfd7t.js +101 -0
- package/dist/template-DdgYjIZ5.js +123 -0
- package/dist/temporal-CB5Fpo5d.js +79 -0
- package/dist/temporal-required-DqRzr7i0.js +20 -0
- package/dist/tenant-B-fiItlJ.js +27 -0
- package/dist/tenant-DdmVhsff.d.ts +17 -0
- package/dist/tenant-naming-Bsj3Uvap.js +27 -0
- package/dist/testing/index.d.ts +235 -32
- package/dist/testing/index.js +1132 -32
- package/dist/timing-BMCWgpdZ.js +92 -0
- package/dist/topic-ByDz9edV.js +542 -0
- package/dist/topic-cMS7UtM1.d.ts +359 -0
- package/dist/types-6oiy6rIa.d.ts +205 -0
- package/dist/types-CdP0z5tS.d.ts +564 -0
- package/dist/types-D0W4fnsc.d.ts +162 -0
- package/dist/types-R6syp1el.js +29 -0
- package/dist/types-YfwpIE-d.d.ts +357 -0
- package/dist/types-pNY_UpDs.d.ts +240 -0
- package/dist/types-vaoP9S9_.d.ts +635 -0
- package/dist/undo-CEGIRkPA.js +44 -0
- package/dist/undo-DGo0skyO.d.ts +43 -0
- package/dist/usage-CdlfuS3i.js +250 -0
- package/dist/usage-DM2rzczj.d.ts +202 -0
- package/dist/vault-tOkPLnMB.d.ts +50 -0
- package/dist/vercel-connect/index.d.ts +1 -1
- package/dist/vercel-connect/index.js +4 -4
- package/dist/verify-D63A2ALE.d.ts +142 -0
- package/dist/verify-EQcC3Khp.js +126 -0
- package/dist/version-D87ZteKy.js +4 -0
- package/dist/view-DZ63nqwt.js +105 -0
- package/dist/view-Dv0A949a.d.ts +90 -0
- package/dist/vue/index.d.ts +8 -8
- package/dist/vue/index.js +3 -16
- package/dist/vue-controller-C9tFzqAc.js +32 -0
- package/dist/vue-controller-HPfMTDa2.d.ts +11 -0
- package/dist/watch-DDuWYv0Y.d.ts +84 -0
- package/dist/watch-DT_B3CnJ.js +139 -0
- package/dist/watch-topic-EFpOIIDE.d.ts +28 -0
- package/dist/watch-topic-miuymrli.js +57 -0
- package/dist/wire-DEY0ajW9.js +45 -0
- package/dist/workflow-builder-OrglbXUh.js +681 -0
- package/dist/workflow-sdk/builder/index.d.ts +46 -15
- package/dist/workflow-sdk/builder/index.js +69 -21
- package/dist/workflow-sdk/index.d.ts +75 -2
- package/dist/workflow-sdk/index.js +83 -3
- package/dist/workflow-sdk/world/index.d.ts +29 -4
- package/dist/workflow-sdk/world/index.js +137 -59
- package/dist/workflow-sdk-BZ6qsRlY.js +243 -0
- package/dist/workflow-sdk-q8cLwW1K.d.ts +161 -0
- package/dist/workflow-sdk-world-DPMdBfzn.js +2103 -0
- package/dist/workflows-C-OvZpeg.js +282 -0
- package/dist/workflows-DFQeXDAI.d.ts +243 -0
- package/dist/yjs/index.d.ts +67 -0
- package/dist/yjs/index.js +212 -0
- package/package.json +788 -46
- package/schemas/cli-commands-v1.json +220 -0
- package/schemas/cli-result-v1.json +138 -0
- package/schemas/config-v1.json +4147 -726
- package/schemas/doctor-report-v1.json +23 -0
- package/schemas/snapshot-v2.json +271 -0
- package/skills/better-supabase/SKILL.md +11 -4
- package/skills/better-supabase/references/plugins.md +2 -2
- package/skills/better-supabase/references/ui-recipes.md +18652 -0
- package/skills/better-supabase-api/SKILL.md +14 -14
- package/skills/better-supabase-api/references/adapters.md +12 -2
- package/skills/better-supabase-api/references/ai.md +4 -4
- package/skills/better-supabase-api/references/expo.md +1 -1
- package/skills/better-supabase-api/references/powersync.md +1 -1
- package/skills/better-supabase-api/references/streams-credentials.md +8 -5
- package/skills/better-supabase-auth/SKILL.md +18 -11
- package/skills/better-supabase-auth/references/authorization-providers.md +5 -5
- package/skills/better-supabase-testing/SKILL.md +2 -2
- package/testing/act-cases.json +370 -0
- package/dist/access-sql-CrSbK1q-.js +0 -181
- package/dist/actor-CQTlc1Hh.d.ts +0 -43
- package/dist/adapter-CN45ibbV.js +0 -1691
- package/dist/agents-BY_LQXtQ.d.ts +0 -94
- package/dist/ai-cache-Dfgk8nBT.js +0 -81
- package/dist/ai-cache-DrUMMgp6.d.ts +0 -64
- package/dist/ai-chat-CVLRWbtS.js +0 -744
- package/dist/ai-chat-DXkMy74O.d.ts +0 -590
- package/dist/ai-files-CioLu5du.js +0 -320
- package/dist/ai-tasks-BRQ6iQLc.d.ts +0 -131
- package/dist/announcements-Bouy0Ski.d.ts +0 -72
- package/dist/announcements-p_BFofiR.js +0 -107
- package/dist/api-Dnf2q-Ht.d.ts +0 -370
- package/dist/api-DtHFC037.js +0 -676
- package/dist/api-keys-C8BlF3L2.d.ts +0 -156
- package/dist/assistant-DBlFDZsi.d.ts +0 -147
- package/dist/attributes-5dYul0u0.js +0 -13
- package/dist/authorization-BFCqamMs.d.ts +0 -172
- package/dist/authorizer-ayxUDXXP.js +0 -126
- package/dist/base64-D2gsioCY.js +0 -42
- package/dist/before-route-CnR0C0Jr.js +0 -30
- package/dist/bind-ButSzrHe.js +0 -97
- package/dist/bind-CQ5mPyX1.d.ts +0 -62
- package/dist/block-events-DTxU5tfr.js +0 -91
- package/dist/block-fields-CroxUuF2.js +0 -49
- package/dist/block-fields-D1pfrcIY.d.ts +0 -31
- package/dist/block-helpers-C0Xj8War.d.ts +0 -37
- package/dist/block-helpers-Cy3pB96I.js +0 -222
- package/dist/block-hooks-BPNMIlLl.js +0 -114
- package/dist/block-hooks-DaOVC7SC.d.ts +0 -107
- package/dist/block-transport-bAKh-dGc.js +0 -85
- package/dist/block-transport-inD4fFq-.d.ts +0 -70
- package/dist/build-hPwk3_X5.js +0 -1296
- package/dist/build-meLuYGri.js +0 -689
- package/dist/channel-_2Mx1Oyu.d.ts +0 -70
- package/dist/channels-CkgQ_X60.js +0 -114
- package/dist/cli/add-1dc5wM5k.js +0 -69
- package/dist/cli/bin.d.ts +0 -1
- package/dist/cli/cache-CIfA-jBV.js +0 -483
- package/dist/cli/codemod-JVlTQQG2.js +0 -491
- package/dist/cli/command-DV-StG1x.js +0 -507
- package/dist/cli/config-C2Pz2_4A.js +0 -52
- package/dist/cli/config-DpbF8ML3.js +0 -2
- package/dist/cli/config-M-WzL9O2.js +0 -1175
- package/dist/cli/db-BkcfOlyB.js +0 -53
- package/dist/cli/diff-D1jGdb3Y.js +0 -752
- package/dist/cli/dist-DBPdlPYK.js +0 -1112
- package/dist/cli/dist-DRAVaE6w.js +0 -842
- package/dist/cli/dist-DreZ24Sz.js +0 -129
- package/dist/cli/doctor-VcDtuusV.js +0 -3686
- package/dist/cli/emit-BHHfwUoT.js +0 -1136
- package/dist/cli/env-B--LMhEe.js +0 -514
- package/dist/cli/env-vzBG90Um.js +0 -2
- package/dist/cli/env-zHJtMIBo.js +0 -116
- package/dist/cli/errors-CqTLXe2M.js +0 -72
- package/dist/cli/fastest-levenshtein-CF7BCi9l.js +0 -120
- package/dist/cli/files-BVupXPIC.js +0 -34
- package/dist/cli/gen-DmVj3u4L.js +0 -322
- package/dist/cli/glue-C1UE8gQN.js +0 -468
- package/dist/cli/init-CVZ3s5kl.js +0 -258
- package/dist/cli/introspect-BToGNfm-.js +0 -81
- package/dist/cli/io-CFzJVJ68.js +0 -37
- package/dist/cli/jsonc-BUniUpOk.js +0 -2
- package/dist/cli/keys-CJhtIxJ3.js +0 -85
- package/dist/cli/metadata-DSRKCaf-.js +0 -133
- package/dist/cli/openapi-DWa4Ir1q.js +0 -60
- package/dist/cli/project-DZRaBaY7.js +0 -75
- package/dist/cli/prompts-BdeVmVpg.js +0 -2
- package/dist/cli/prompts-DZJB1nTw.js +0 -1142
- package/dist/cli/read-sets-DjJrm8Wj.js +0 -223
- package/dist/cli/rolldown-runtime-CMFfr-1z.js +0 -26
- package/dist/cli/run-DA6_lg3w.js +0 -389
- package/dist/cli/run-DuN1MX-7.js +0 -705
- package/dist/cli/scaffold-5DenHSxF.js +0 -292
- package/dist/cli/scaffold-CwQUMFRb.js +0 -2
- package/dist/cli/seed-CzBmrGON.js +0 -96
- package/dist/cli/seed-DOmit9Hq.js +0 -2
- package/dist/cli/skills-CnO8QFS7.js +0 -139
- package/dist/cli/snapshot-Bstk6ulj.js +0 -287
- package/dist/cli/source-args-BYfq6imV.js +0 -31
- package/dist/cli/spec-CzosTYm3.js +0 -7438
- package/dist/cli/spec-T_0Bcyw7.js +0 -2
- package/dist/cli/sql-BKOOQAX3.js +0 -517
- package/dist/cli/sql-DJrNDxQm.js +0 -3
- package/dist/cli/sql-layout-D6cphHT3.js +0 -69
- package/dist/cli/style-CB3vxgh0.js +0 -29
- package/dist/cli/supabase-toml-B-bIukQF.js +0 -1095
- package/dist/cli/typegen-Demi5-VQ.js +0 -486
- package/dist/cli/typegen-version-DeFbtzYI.js +0 -8
- package/dist/cli/validate-Ca13ktgz.js +0 -7522
- package/dist/cli/version-B4k0aUxS.js +0 -4
- package/dist/client-wxeTQFtB.js +0 -310
- package/dist/cloud-event-Dune0KI7.d.ts +0 -64
- package/dist/compiler-V1qvcST1.d.ts +0 -14
- package/dist/compose-BHej1acw.js +0 -53
- package/dist/composite-CWAJTRBF.d.ts +0 -146
- package/dist/composite-zTe0TCqj.js +0 -130
- package/dist/config-DlKvtt95.js +0 -540
- package/dist/connector-CySQEFcW.d.ts +0 -107
- package/dist/connectors--PGhmiu0.d.ts +0 -120
- package/dist/context-DsV2SueA.d.ts +0 -246
- package/dist/context-nPDvQ-Zl.js +0 -41
- package/dist/cron-D25Ukpxy.js +0 -145
- package/dist/cron-route-D2AN9SA1.js +0 -24
- package/dist/csv-BZnHA1Py.js +0 -25
- package/dist/define-CFQcvM20.js +0 -1949
- package/dist/define-DmcfoNXB.d.ts +0 -1005
- package/dist/embeddings-4ZvFzjsU.js +0 -127
- package/dist/embeddings-B4vhS-dY.d.ts +0 -68
- package/dist/ended-CcvcRqEd.d.ts +0 -69
- package/dist/entitlements-BYFf0Cdh.js +0 -24
- package/dist/entitlements-Ds8qoYZ-.d.ts +0 -51
- package/dist/envelope-DqnYGRw7.js +0 -47
- package/dist/errors-2M6CKMP4.js +0 -271
- package/dist/errors-rZ7VIqp6.js +0 -44
- package/dist/escape-like-DDWoHzh_.d.ts +0 -15
- package/dist/eve-CoAIcCkq.d.ts +0 -151
- package/dist/events-D1BOCll8.d.ts +0 -551
- package/dist/executor-B-fD7DLt.js +0 -735
- package/dist/executor-B_Hfobee.js +0 -162
- package/dist/executor-C-R4pucm.js +0 -83
- package/dist/executor-CpxLPCiz.d.ts +0 -36
- package/dist/executor-DfEtf0cq.d.ts +0 -164
- package/dist/executor-Drzu3dBK.d.ts +0 -261
- package/dist/executor-ngjKL_Pe.d.ts +0 -30
- package/dist/field-errors-DIe9XYWL.d.ts +0 -109
- package/dist/format-DTXdu8ya.d.ts +0 -70
- package/dist/framework-148t1m3C.d.ts +0 -25
- package/dist/framework-3ey3QmrO.js +0 -51
- package/dist/function-contract-BcZenXMO.d.ts +0 -8
- package/dist/gateway-S9vicgeo.d.ts +0 -130
- package/dist/graph-BGyLLFLX.js +0 -265
- package/dist/hooks-Bhza9Hnr.js +0 -277
- package/dist/http-sbmBe5d2.js +0 -25
- package/dist/impersonation-DcqaTBHx.js +0 -148
- package/dist/inbox-Cd1KCEBL.d.ts +0 -384
- package/dist/index-B72Rvv_j.d.ts +0 -89
- package/dist/index-BCHR4Ucl.d.ts +0 -300
- package/dist/index-BUK7jUzR.d.ts +0 -82
- package/dist/index-Ba1SI-uO.d.ts +0 -1331
- package/dist/index-BfxOaOYs.d.ts +0 -245
- package/dist/index-CicIyqOe.d.ts +0 -55
- package/dist/index-D69h4QqD.d.ts +0 -74
- package/dist/index-DG2SUXDQ.d.ts +0 -58
- package/dist/index-DoNVLHOU.d.ts +0 -206
- package/dist/index-R274XFlg.d.ts +0 -138
- package/dist/index-_4R4b01v.d.ts +0 -257
- package/dist/json-schema-CT4tvrkA.js +0 -548
- package/dist/kit-BhHr9T9v.js +0 -104
- package/dist/kit-W99LCPBS.d.ts +0 -66
- package/dist/knowledge-CAReFpRA.d.ts +0 -176
- package/dist/knowledge-DnHtb64A.js +0 -256
- package/dist/list-query-D3JQeEL7.d.ts +0 -164
- package/dist/list-query-gl808ac1.js +0 -459
- package/dist/live-CTAZQkwl.js +0 -257
- package/dist/messages-CJoHHCWT.js +0 -514
- package/dist/mfa-SZc9YYyb.d.ts +0 -54
- package/dist/model-OgBxvk3N.d.ts +0 -300
- package/dist/model-messages-Cxw_Up4f.js +0 -206
- package/dist/modules-DksjZyMW.js +0 -77
- package/dist/modules-DpPwzC7E.d.ts +0 -192
- package/dist/onboarding-LZvlK1P4.d.ts +0 -62
- package/dist/optional-peer-D1pi-skw.js +0 -24
- package/dist/outbox-DZfAvfzC.d.ts +0 -161
- package/dist/plugin-CPK2HsbY.d.ts +0 -190
- package/dist/pool-gkhbGp2E.d.ts +0 -89
- package/dist/postgrest-BUqLag2Q.d.ts +0 -53
- package/dist/problem-CJvFeGu7.js +0 -126
- package/dist/problem-TvGdxO1t.d.ts +0 -73
- package/dist/provider-DxRTex4x.js +0 -57
- package/dist/provider-ib9wzUDz.d.ts +0 -113
- package/dist/rate-limit-Bw7HgmFj.js +0 -260
- package/dist/react-Bmpo59D7.js +0 -409
- package/dist/react-topic-seAWjL3_.js +0 -38
- package/dist/read-set-DAeWhqPf.js +0 -314
- package/dist/refusal-CFI8-5nf.d.ts +0 -18
- package/dist/refusal-K78A1Vmq.js +0 -61
- package/dist/replicas-CwrYp5Zj.js +0 -94
- package/dist/resolve-Bvgf3ut_.js +0 -786
- package/dist/resolve-MxXVWyhd.d.ts +0 -173
- package/dist/resource--vTrBe6I.d.ts +0 -103
- package/dist/resource-BqNqlYg9.js +0 -91
- package/dist/resource-DA811u_4.js +0 -463
- package/dist/resource-execute-rbKvuCsY.d.ts +0 -12
- package/dist/resource-types-CqB6GWGT.d.ts +0 -141
- package/dist/resources-BVYPnuLo.js +0 -56
- package/dist/resources-DZSk8tXJ.d.ts +0 -7
- package/dist/respond-Cw-zanCm.d.ts +0 -93
- package/dist/respond-volM3ByS.js +0 -91
- package/dist/result-BchM1XZn.d.ts +0 -288
- package/dist/result-DEqHCMKP.js +0 -128
- package/dist/scope-CDHcS7dE.js +0 -90
- package/dist/search-CUWCRYKL.js +0 -9
- package/dist/server-types-CrAmZ8jv.d.ts +0 -614
- package/dist/session-ChiXDZdZ.d.ts +0 -72
- package/dist/shared-CBxosKK3.js +0 -75
- package/dist/shared-DHjhfRdV.js +0 -60
- package/dist/shared-DTneRoxi.js +0 -14
- package/dist/sign-in-D_yoP0PF.js +0 -86
- package/dist/signatures-BRS_p3WD.d.ts +0 -34
- package/dist/signatures-DsWv_bYR.js +0 -103
- package/dist/signers-cpdmZYrv.d.ts +0 -166
- package/dist/spec-pins-CwzDY25w.d.ts +0 -44
- package/dist/spec-pins-DsLfUH7l.js +0 -40
- package/dist/sql-CwuqaQ4Y.js +0 -388
- package/dist/standard-DkzZUneg.js +0 -25
- package/dist/standard-lmkbOtPB.d.ts +0 -7
- package/dist/stats-DhU78Ctf.js +0 -1127
- package/dist/storage-api-CB7Zl1Ci.d.ts +0 -582
- package/dist/store-DsIYEBnv.d.ts +0 -68
- package/dist/stripe-D04h-QBT.d.ts +0 -136
- package/dist/stripe-v-Y2lmop.js +0 -32
- package/dist/supabase-mcp-Cpn5A4i-.js +0 -28
- package/dist/support-D1pFFouF.js +0 -350
- package/dist/support-view-scqMgtOo.d.ts +0 -17
- package/dist/table-schema-htM_SbCW.js +0 -286
- package/dist/tags-BO9LjtWG.d.ts +0 -30
- package/dist/tee-Cb98Vn3b.js +0 -101
- package/dist/template-lPVh-EwW.js +0 -123
- package/dist/temporal-BJGitm-h.js +0 -79
- package/dist/temporal-required-BtynQtM-.js +0 -20
- package/dist/tenant-CM368LXb.d.ts +0 -17
- package/dist/tenant-I1TEZ_BX.js +0 -27
- package/dist/timing-CyTQPubY.js +0 -92
- package/dist/types-6cYK9pbJ.js +0 -29
- package/dist/types-Bb_4-vdW.d.ts +0 -220
- package/dist/types-CD6yCDx3.d.ts +0 -359
- package/dist/types-CbOUc5IH.d.ts +0 -156
- package/dist/types-CoE5Zwy4.d.ts +0 -348
- package/dist/types-DSJ3-m9X.d.ts +0 -192
- package/dist/types-D__3EN0q.d.ts +0 -425
- package/dist/usage-D0NNUFfr.d.ts +0 -177
- package/dist/vault-BpmApxxW.d.ts +0 -50
- package/dist/verify-C91Wyp40.d.ts +0 -142
- package/dist/verify-CJbYfADA.js +0 -124
- package/dist/version-Cq8gfDbd.js +0 -4
- package/dist/view-D5ryq3gz.js +0 -99
- package/dist/view-TpXEUcVN.d.ts +0 -87
- package/dist/watch-BcvtAHOd.js +0 -122
- package/dist/watch-COzRWvVN.d.ts +0 -74
- package/dist/wire-Df3EWkG8.js +0 -45
- package/dist/workflow-builder-CHqHpAVt.js +0 -399
- package/dist/workflow-sdk-C2WJ_G2O.js +0 -173
- package/dist/workflow-sdk-DTZyrvNo.d.ts +0 -98
- package/dist/workflow-sdk-world-CMV1ahFW.js +0 -1399
- package/dist/workflows-CcpCBfIe.d.ts +0 -185
- package/dist/workflows-IvxzG2cl.js +0 -217
package/dist/testing/index.js
CHANGED
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
import { t as DbException } from "../db-exception-CnWcYPxL.js";
|
|
2
|
-
import { n as dbError } from "../errors-
|
|
3
|
-
import { d as temporalText } from "../temporal-
|
|
4
|
-
import { t as temporal } from "../temporal-required-
|
|
5
|
-
import { a as ok } from "../result-
|
|
6
|
-
import { t as BetterSupabase } from "../define-
|
|
2
|
+
import { n as dbError } from "../errors-8i6tSICm.js";
|
|
3
|
+
import { d as temporalText } from "../temporal-CB5Fpo5d.js";
|
|
4
|
+
import { t as temporal } from "../temporal-required-DqRzr7i0.js";
|
|
5
|
+
import { a as ok } from "../result-BlgnMB0H.js";
|
|
6
|
+
import { t as BetterSupabase } from "../define-B2ln373W.js";
|
|
7
7
|
import { t as isList } from "../guards-6F2bCtQR.js";
|
|
8
|
-
import { a as toBase64Url, r as fromBase64, t as base64ToText } from "../base64-
|
|
9
|
-
import { o as resolveConfig } from "../config-
|
|
8
|
+
import { a as toBase64Url, r as fromBase64, t as base64ToText } from "../base64-BmeCBgGo.js";
|
|
9
|
+
import { o as resolveConfig } from "../config-BA1K4OPk.js";
|
|
10
10
|
import { ENV_VARIABLES } from "../env/index.js";
|
|
11
|
-
import {
|
|
12
|
-
import "../replicas-
|
|
13
|
-
import { a as tenantCredentialRef } from "../provider-
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import { n as
|
|
17
|
-
import {
|
|
11
|
+
import { t as defineController } from "../controller-D6NyNrlZ.js";
|
|
12
|
+
import "../replicas-BvIL4_jL.js";
|
|
13
|
+
import { a as tenantCredentialRef } from "../provider-DKh2xFZb.js";
|
|
14
|
+
import { n as rawError } from "../block-transport-G4t1umrR.js";
|
|
15
|
+
import { t as postgresExecutor } from "../executor-D1kYY5BA.js";
|
|
16
|
+
import { i as requestOf, n as checkPermission, r as defineAuthorizer } from "../authorizer-DH7DjkL3.js";
|
|
17
|
+
import { n as parseDbStats } from "../timing-BMCWgpdZ.js";
|
|
18
|
+
import { t as mailHeaders } from "../delivery-B1mKaOen.js";
|
|
18
19
|
import { toCloudEvents } from "../events/index.js";
|
|
19
|
-
import {
|
|
20
|
+
import { d as money, l as isRate } from "../money-95Rff2vT.js";
|
|
21
|
+
import { t as SHIPPING_LINE } from "../tax-D_kSCdWU.js";
|
|
22
|
+
import { a as isScopeName, c as templateFunctions, l as templatePlaceholders, n as TEMPLATE_PLACEHOLDERS, s as scopeProblems, u as templateProblems } from "../access-sql-DUSSMaC3.js";
|
|
23
|
+
import { t as buildApiModel } from "../build-Cm0T5MVG.js";
|
|
20
24
|
import { timestamps } from "../plugins/timestamps/index.js";
|
|
21
25
|
import { softDelete } from "../plugins/soft-delete/index.js";
|
|
22
26
|
import { tenant } from "../plugins/tenant/index.js";
|
|
@@ -151,11 +155,11 @@ async function findSigningKeys(from) {
|
|
|
151
155
|
const supabase = join(dir, "supabase");
|
|
152
156
|
const toml = join(supabase, "config.toml");
|
|
153
157
|
if (existsSync(toml)) {
|
|
154
|
-
const configured = SIGNING_KEYS_PATH.exec(await readFile(toml, "
|
|
158
|
+
const configured = SIGNING_KEYS_PATH.exec(await readFile(toml, "utf-8"))?.[1];
|
|
155
159
|
const path = resolve(supabase, configured ?? "signing_keys.json");
|
|
156
160
|
if (existsSync(path)) return path;
|
|
157
161
|
}
|
|
158
|
-
if (dirname(dir) === dir) return
|
|
162
|
+
if (dirname(dir) === dir) return;
|
|
159
163
|
}
|
|
160
164
|
}
|
|
161
165
|
const isSigningKey = (value) => typeof value === "object" && value !== null && "kid" in value && typeof value.kid === "string" && "d" in value && typeof value.d === "string";
|
|
@@ -167,7 +171,7 @@ const isSigningKey = (value) => typeof value === "object" && value !== null && "
|
|
|
167
171
|
async function localSigningKey(path) {
|
|
168
172
|
const file = path ?? process.env["SUPABASE_SIGNING_KEYS_PATH"] ?? await findSigningKeys(process.cwd());
|
|
169
173
|
if (!file || !existsSync(file)) throw new TypeError("No local signing key. Run `better-supabase keys`, set `signing_keys_path` in supabase/config.toml and restart the stack, or pass { alg: \"HS256\" } to sign with the local JWT secret.");
|
|
170
|
-
const keys = JSON.parse(await readFile(file, "
|
|
174
|
+
const keys = JSON.parse(await readFile(file, "utf-8"));
|
|
171
175
|
const first = Array.isArray(keys) ? keys[0] : void 0;
|
|
172
176
|
if (!isSigningKey(first)) throw new TypeError(`${file} has no private ES256 key first.`);
|
|
173
177
|
return first;
|
|
@@ -181,7 +185,7 @@ async function signLocalJwt(claims, path) {
|
|
|
181
185
|
/** The local CLI stack's default JWT secret. */
|
|
182
186
|
const LOCAL_JWT_SECRET = "super-secret-jwt-token-with-at-least-32-characters-long";
|
|
183
187
|
function env$1(...names) {
|
|
184
|
-
if (typeof process === "undefined") return
|
|
188
|
+
if (typeof process === "undefined") return;
|
|
185
189
|
for (const name of names) {
|
|
186
190
|
const value = process.env[name];
|
|
187
191
|
if (value) return value;
|
|
@@ -601,7 +605,7 @@ async function rowsOf(outcome) {
|
|
|
601
605
|
return Array.isArray(result.data) ? result.data : [result.data];
|
|
602
606
|
}
|
|
603
607
|
function env(names) {
|
|
604
|
-
if (typeof process === "undefined") return
|
|
608
|
+
if (typeof process === "undefined") return;
|
|
605
609
|
for (const name of names) {
|
|
606
610
|
const value = process.env[name];
|
|
607
611
|
if (value) return value;
|
|
@@ -718,11 +722,27 @@ const chain = {
|
|
|
718
722
|
sub: "agent-runner",
|
|
719
723
|
act: { sub: "mcp-client-42" }
|
|
720
724
|
};
|
|
725
|
+
const agentAct = {
|
|
726
|
+
kind: "agent",
|
|
727
|
+
sub: "agent-7",
|
|
728
|
+
tools: ["search_knowledge"],
|
|
729
|
+
act: chain
|
|
730
|
+
};
|
|
731
|
+
const agentActReadOnly = {
|
|
732
|
+
kind: "agent",
|
|
733
|
+
sub: "agent-7",
|
|
734
|
+
tools: ["search_knowledge"],
|
|
735
|
+
read_only: true,
|
|
736
|
+
act: chain
|
|
737
|
+
};
|
|
721
738
|
/**
|
|
722
739
|
* `supportSession` and `supportSessionReadOnly` are what `supportClaims`
|
|
723
740
|
* mints (`act.kind: "support"`), `impersonation` what `actingAs` mints
|
|
724
|
-
* (`act.kind: "impersonation"`), `oauthClient` a Supabase OAuth server
|
|
725
|
-
* and `
|
|
741
|
+
* (`act.kind: "impersonation"`), `oauthClient` a Supabase OAuth server
|
|
742
|
+
* token (its identity scopes `openid` and `email` are left out of the
|
|
743
|
+
* delegation), `agentChain` an RFC 8693 chain without `kind`, and
|
|
744
|
+
* `agentRun` and `agentRunReadOnly` what `agentClaims` mints over that
|
|
745
|
+
* chain (`act.kind: "agent"`, with `readOnly: true` for the second).
|
|
726
746
|
*/
|
|
727
747
|
const supabaseClaimFixtures = {
|
|
728
748
|
supportSession: {
|
|
@@ -814,11 +834,7 @@ const supabaseClaimFixtures = {
|
|
|
814
834
|
kind: "oauth-client",
|
|
815
835
|
id: client
|
|
816
836
|
},
|
|
817
|
-
delegation: { scopes: [
|
|
818
|
-
"openid",
|
|
819
|
-
"email",
|
|
820
|
-
"posts:read"
|
|
821
|
-
] }
|
|
837
|
+
delegation: { scopes: ["posts:read"] }
|
|
822
838
|
}
|
|
823
839
|
},
|
|
824
840
|
agentChain: {
|
|
@@ -838,6 +854,149 @@ const supabaseClaimFixtures = {
|
|
|
838
854
|
chain
|
|
839
855
|
}
|
|
840
856
|
}
|
|
857
|
+
},
|
|
858
|
+
agentRun: {
|
|
859
|
+
claims: {
|
|
860
|
+
...base,
|
|
861
|
+
scope: "posts:read",
|
|
862
|
+
act: agentAct
|
|
863
|
+
},
|
|
864
|
+
expect: {
|
|
865
|
+
actor: {
|
|
866
|
+
kind: "agent",
|
|
867
|
+
id: "agent-7",
|
|
868
|
+
tools: ["search_knowledge"],
|
|
869
|
+
readOnly: false,
|
|
870
|
+
chain: agentAct
|
|
871
|
+
},
|
|
872
|
+
delegation: {
|
|
873
|
+
scopes: ["posts:read"],
|
|
874
|
+
chain: agentAct
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
},
|
|
878
|
+
agentRunReadOnly: {
|
|
879
|
+
claims: {
|
|
880
|
+
...base,
|
|
881
|
+
scope: "posts:read",
|
|
882
|
+
act: agentActReadOnly
|
|
883
|
+
},
|
|
884
|
+
expect: {
|
|
885
|
+
actor: {
|
|
886
|
+
kind: "agent",
|
|
887
|
+
id: "agent-7",
|
|
888
|
+
tools: ["search_knowledge"],
|
|
889
|
+
readOnly: true,
|
|
890
|
+
chain: agentActReadOnly
|
|
891
|
+
},
|
|
892
|
+
delegation: {
|
|
893
|
+
scopes: ["posts:read"],
|
|
894
|
+
chain: agentActReadOnly
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
};
|
|
899
|
+
const refused = {
|
|
900
|
+
kind: "invalid",
|
|
901
|
+
reason: "actor",
|
|
902
|
+
code: "ACTOR_INVALID"
|
|
903
|
+
};
|
|
904
|
+
/**
|
|
905
|
+
* `legacySupportSession` is a 0.5.0 support token: `session_id` without
|
|
906
|
+
* `kind`. better-supabase refuses it instead of reading it as a support
|
|
907
|
+
* session; mint a new one with `supportClaims`. The others are malformed
|
|
908
|
+
* levels: a support or agent `read_only` that is not a boolean, an agent
|
|
909
|
+
* with a `session_id`, an empty tool name or `tools` that is not a list, a
|
|
910
|
+
* `kind` better-supabase does not know, and a nested level without `sub`.
|
|
911
|
+
*/
|
|
912
|
+
const supabaseInvalidClaimFixtures = {
|
|
913
|
+
legacySupportSession: {
|
|
914
|
+
claims: {
|
|
915
|
+
...base,
|
|
916
|
+
act: {
|
|
917
|
+
sub: admin,
|
|
918
|
+
session_id: supportSessionId,
|
|
919
|
+
reason: "ticket 42"
|
|
920
|
+
}
|
|
921
|
+
},
|
|
922
|
+
expect: refused
|
|
923
|
+
},
|
|
924
|
+
supportReadOnlyNotBoolean: {
|
|
925
|
+
claims: {
|
|
926
|
+
...base,
|
|
927
|
+
act: {
|
|
928
|
+
kind: "support",
|
|
929
|
+
sub: admin,
|
|
930
|
+
session_id: supportSessionId,
|
|
931
|
+
read_only: "false"
|
|
932
|
+
}
|
|
933
|
+
},
|
|
934
|
+
expect: refused
|
|
935
|
+
},
|
|
936
|
+
agentWithSessionId: {
|
|
937
|
+
claims: {
|
|
938
|
+
...base,
|
|
939
|
+
act: {
|
|
940
|
+
kind: "agent",
|
|
941
|
+
sub: "agent-7",
|
|
942
|
+
session_id: supportSessionId
|
|
943
|
+
}
|
|
944
|
+
},
|
|
945
|
+
expect: refused
|
|
946
|
+
},
|
|
947
|
+
agentEmptyToolName: {
|
|
948
|
+
claims: {
|
|
949
|
+
...base,
|
|
950
|
+
act: {
|
|
951
|
+
kind: "agent",
|
|
952
|
+
sub: "agent-7",
|
|
953
|
+
tools: ["search_knowledge", ""]
|
|
954
|
+
}
|
|
955
|
+
},
|
|
956
|
+
expect: refused
|
|
957
|
+
},
|
|
958
|
+
agentToolsNotArray: {
|
|
959
|
+
claims: {
|
|
960
|
+
...base,
|
|
961
|
+
act: {
|
|
962
|
+
kind: "agent",
|
|
963
|
+
sub: "agent-7",
|
|
964
|
+
tools: "search_knowledge"
|
|
965
|
+
}
|
|
966
|
+
},
|
|
967
|
+
expect: refused
|
|
968
|
+
},
|
|
969
|
+
agentReadOnlyNotBoolean: {
|
|
970
|
+
claims: {
|
|
971
|
+
...base,
|
|
972
|
+
act: {
|
|
973
|
+
kind: "agent",
|
|
974
|
+
sub: "agent-7",
|
|
975
|
+
read_only: "true"
|
|
976
|
+
}
|
|
977
|
+
},
|
|
978
|
+
expect: refused
|
|
979
|
+
},
|
|
980
|
+
unknownKind: {
|
|
981
|
+
claims: {
|
|
982
|
+
...base,
|
|
983
|
+
act: {
|
|
984
|
+
kind: "delegate",
|
|
985
|
+
sub: "agent-7"
|
|
986
|
+
}
|
|
987
|
+
},
|
|
988
|
+
expect: refused
|
|
989
|
+
},
|
|
990
|
+
levelWithoutSub: {
|
|
991
|
+
claims: {
|
|
992
|
+
...base,
|
|
993
|
+
act: {
|
|
994
|
+
kind: "agent",
|
|
995
|
+
sub: "agent-7",
|
|
996
|
+
act: { client_id: client }
|
|
997
|
+
}
|
|
998
|
+
},
|
|
999
|
+
expect: refused
|
|
841
1000
|
}
|
|
842
1001
|
};
|
|
843
1002
|
//#endregion
|
|
@@ -892,7 +1051,7 @@ function order(meta, keys) {
|
|
|
892
1051
|
}
|
|
893
1052
|
function statement(table, rows) {
|
|
894
1053
|
const entries = Object.entries(rows);
|
|
895
|
-
if (entries.length === 0) return
|
|
1054
|
+
if (entries.length === 0) return;
|
|
896
1055
|
const columns = [];
|
|
897
1056
|
for (const [, row] of entries) for (const [key, value] of Object.entries(row)) {
|
|
898
1057
|
if (value === void 0 || columns.includes(key)) continue;
|
|
@@ -1220,6 +1379,319 @@ function testEventSink(sink, options = {}) {
|
|
|
1220
1379
|
]);
|
|
1221
1380
|
}
|
|
1222
1381
|
//#endregion
|
|
1382
|
+
//#region src/testing/kits/payment-provider.ts
|
|
1383
|
+
const kindOf$2 = (result) => result.ok ? "ok" : result.error.kind;
|
|
1384
|
+
const half = (value) => ({
|
|
1385
|
+
amount: value.amount / 2n,
|
|
1386
|
+
currency: value.currency
|
|
1387
|
+
});
|
|
1388
|
+
/**
|
|
1389
|
+
* Runs the `PaymentProvider` contract against `provider`: the API version,
|
|
1390
|
+
* refused amounts, a created payment and its fields, an idempotency key
|
|
1391
|
+
* that pays once, `not_found` for an unknown payment, and, with the
|
|
1392
|
+
* options that drive them, capture and refunds of an authorized payment
|
|
1393
|
+
* and webhook verification. Every call carries a fresh reference, so the
|
|
1394
|
+
* kit runs against a test account without cleanup.
|
|
1395
|
+
*/
|
|
1396
|
+
function testPaymentProvider(provider, options = {}) {
|
|
1397
|
+
const amount = options.amount ?? money(1000n, "EUR");
|
|
1398
|
+
const reference = () => `conformance-${crypto.randomUUID()}`;
|
|
1399
|
+
const { authorize, webhook } = options;
|
|
1400
|
+
const authorized = async () => {
|
|
1401
|
+
const created = await provider.createPayment({
|
|
1402
|
+
amount,
|
|
1403
|
+
reference: reference(),
|
|
1404
|
+
capture: "manual"
|
|
1405
|
+
}).orThrow();
|
|
1406
|
+
await authorize?.(created);
|
|
1407
|
+
return created;
|
|
1408
|
+
};
|
|
1409
|
+
return conform(`PaymentProvider "${provider.name}"`, [
|
|
1410
|
+
["has apiVersion 1 and a name", () => {
|
|
1411
|
+
const version = provider.apiVersion;
|
|
1412
|
+
expect(version === 1, `apiVersion is ${String(version)}`);
|
|
1413
|
+
expect(provider.name.length > 0, "name is empty");
|
|
1414
|
+
}],
|
|
1415
|
+
["refuses a zero amount and a number instead of Money", async () => {
|
|
1416
|
+
const zero = await provider.createPayment({
|
|
1417
|
+
amount: {
|
|
1418
|
+
amount: 0n,
|
|
1419
|
+
currency: amount.currency
|
|
1420
|
+
},
|
|
1421
|
+
reference: reference()
|
|
1422
|
+
});
|
|
1423
|
+
expect(kindOf$2(zero) === "invalid_input", `zero gave ${kindOf$2(zero)}`);
|
|
1424
|
+
const plain = await provider.createPayment({
|
|
1425
|
+
amount: 1e3,
|
|
1426
|
+
reference: reference()
|
|
1427
|
+
});
|
|
1428
|
+
expect(kindOf$2(plain) === "invalid_input", `a number gave ${kindOf$2(plain)}`);
|
|
1429
|
+
}],
|
|
1430
|
+
["creates a payment with its amount, reference and provider", async () => {
|
|
1431
|
+
const ref = reference();
|
|
1432
|
+
const payment = await provider.createPayment({
|
|
1433
|
+
amount,
|
|
1434
|
+
reference: ref
|
|
1435
|
+
}).orThrow();
|
|
1436
|
+
expect(payment.id.length > 0, "the payment has no id");
|
|
1437
|
+
expect(payment.provider === provider.name, `provider is ${payment.provider}`);
|
|
1438
|
+
expect(payment.reference === ref, `reference is ${payment.reference}`);
|
|
1439
|
+
expect(payment.amount.amount === amount.amount && payment.amount.currency === amount.currency, `amount is ${String(payment.amount.amount)} ${payment.amount.currency}`);
|
|
1440
|
+
expect(payment.refunded.amount === 0n, "a new payment has refunds");
|
|
1441
|
+
expect(typeof payment.amount.amount === "bigint", "the amount is not a bigint");
|
|
1442
|
+
}],
|
|
1443
|
+
["pays once for one idempotency key", async () => {
|
|
1444
|
+
const key = crypto.randomUUID();
|
|
1445
|
+
const input = {
|
|
1446
|
+
amount,
|
|
1447
|
+
reference: reference()
|
|
1448
|
+
};
|
|
1449
|
+
const first = await provider.createPayment(input, { idempotencyKey: key }).orThrow();
|
|
1450
|
+
const again = await provider.createPayment(input, { idempotencyKey: key }).orThrow();
|
|
1451
|
+
expect(first.id === again.id, "the same key created a second payment");
|
|
1452
|
+
}],
|
|
1453
|
+
["returns not_found for an unknown payment", async () => {
|
|
1454
|
+
const id = `conformance_missing_${crypto.randomUUID()}`;
|
|
1455
|
+
const captured = await provider.capture(id);
|
|
1456
|
+
expect(kindOf$2(captured) === "not_found", `capture gave ${kindOf$2(captured)}`);
|
|
1457
|
+
const refunded = await provider.refund(id);
|
|
1458
|
+
expect(kindOf$2(refunded) === "not_found", `refund gave ${kindOf$2(refunded)}`);
|
|
1459
|
+
}],
|
|
1460
|
+
provider.get !== void 0 && ["reads a payment back", async () => {
|
|
1461
|
+
const created = await provider.createPayment({
|
|
1462
|
+
amount,
|
|
1463
|
+
reference: reference()
|
|
1464
|
+
}).orThrow();
|
|
1465
|
+
const read = await provider.get?.(created.id).orThrow();
|
|
1466
|
+
expect(read?.id === created.id, "get returned another payment");
|
|
1467
|
+
expect(read.reference === created.reference, "get lost the reference");
|
|
1468
|
+
}],
|
|
1469
|
+
authorize !== void 0 && ["captures an authorized payment", async () => {
|
|
1470
|
+
const payment = await authorized();
|
|
1471
|
+
const captured = await provider.capture(payment.id).orThrow();
|
|
1472
|
+
expect(captured.status === "succeeded", `status is ${captured.status}`);
|
|
1473
|
+
expect(captured.captured.amount === amount.amount, `captured ${String(captured.captured.amount)}`);
|
|
1474
|
+
}],
|
|
1475
|
+
authorize !== void 0 && ["refunds part of a payment and refuses more than is left", async () => {
|
|
1476
|
+
const payment = await authorized();
|
|
1477
|
+
await provider.capture(payment.id).orThrow();
|
|
1478
|
+
const part = half(amount);
|
|
1479
|
+
const refund = await provider.refund(payment.id, { amount: part }).orThrow();
|
|
1480
|
+
expect(refund.paymentId === payment.id, "the refund names another payment");
|
|
1481
|
+
expect(refund.amount.amount === part.amount, `refunded ${String(refund.amount.amount)}`);
|
|
1482
|
+
expect(refund.status === "succeeded" || refund.status === "pending", `refund status is ${refund.status}`);
|
|
1483
|
+
const tooMuch = await provider.refund(payment.id, { amount });
|
|
1484
|
+
expect(kindOf$2(tooMuch) === "invalid_input", `refunding more than is left gave ${kindOf$2(tooMuch)}`);
|
|
1485
|
+
}],
|
|
1486
|
+
provider.cancel !== void 0 && ["cancels a payment that was not captured", async () => {
|
|
1487
|
+
const created = await provider.createPayment({
|
|
1488
|
+
amount,
|
|
1489
|
+
reference: reference(),
|
|
1490
|
+
capture: "manual"
|
|
1491
|
+
}).orThrow();
|
|
1492
|
+
const canceled = await provider.cancel?.(created.id).orThrow();
|
|
1493
|
+
expect(canceled?.status === "canceled", `status is ${String(canceled?.status)}`);
|
|
1494
|
+
}],
|
|
1495
|
+
webhook !== void 0 && ["parses a signed webhook and refuses a tampered one", async () => {
|
|
1496
|
+
const payment = await provider.createPayment({
|
|
1497
|
+
amount,
|
|
1498
|
+
reference: reference()
|
|
1499
|
+
}).orThrow();
|
|
1500
|
+
const { valid, tampered } = await webhook(payment);
|
|
1501
|
+
const events = await provider.parseWebhook(valid).orThrow();
|
|
1502
|
+
expect(events.length > 0, "a signed delivery gave no events");
|
|
1503
|
+
for (const event of events) {
|
|
1504
|
+
expect(event.id.length > 0, "an event has no id");
|
|
1505
|
+
expect(event.paymentId === payment.id, `an event names payment ${event.paymentId}`);
|
|
1506
|
+
}
|
|
1507
|
+
const refused = await provider.parseWebhook(tampered);
|
|
1508
|
+
expect(kindOf$2(refused) === "unauthorized", `a tampered delivery gave ${kindOf$2(refused)}`);
|
|
1509
|
+
}]
|
|
1510
|
+
]);
|
|
1511
|
+
}
|
|
1512
|
+
//#endregion
|
|
1513
|
+
//#region src/testing/kits/tax-provider.ts
|
|
1514
|
+
const kindOf$1 = (result) => result.ok ? "ok" : result.error.kind;
|
|
1515
|
+
const sum = (values) => values.reduce((total, value) => total + value.amount, 0n);
|
|
1516
|
+
/**
|
|
1517
|
+
* Runs the `TaxProvider` contract against `provider`: the API version,
|
|
1518
|
+
* refused carts, a quote with one line per cart line in order and a total
|
|
1519
|
+
* that adds up, inclusive prices, shipping, exempt customers, commit, and
|
|
1520
|
+
* full and partial reversals with their limits. Every commit carries a
|
|
1521
|
+
* fresh reference, so the kit runs against a test account without cleanup.
|
|
1522
|
+
*/
|
|
1523
|
+
function testTaxProvider(provider, options) {
|
|
1524
|
+
const currency = options.currency ?? "EUR";
|
|
1525
|
+
const { address, taxCategory } = options;
|
|
1526
|
+
const expectTax = options.expectTax ?? true;
|
|
1527
|
+
const line = (id, minor, inclusive = false) => ({
|
|
1528
|
+
id,
|
|
1529
|
+
amount: money(minor, currency),
|
|
1530
|
+
inclusive,
|
|
1531
|
+
...taxCategory === void 0 ? {} : { taxCategory }
|
|
1532
|
+
});
|
|
1533
|
+
const cart = (overrides = {}) => ({
|
|
1534
|
+
currency,
|
|
1535
|
+
address,
|
|
1536
|
+
lines: [line("a", 10000n), line("b", 2500n)],
|
|
1537
|
+
...overrides
|
|
1538
|
+
});
|
|
1539
|
+
const reference = () => `conformance-${crypto.randomUUID()}`;
|
|
1540
|
+
const committed = async () => {
|
|
1541
|
+
const quote = await provider.quote(cart()).orThrow();
|
|
1542
|
+
return provider.commit({
|
|
1543
|
+
quote,
|
|
1544
|
+
reference: reference()
|
|
1545
|
+
}).orThrow();
|
|
1546
|
+
};
|
|
1547
|
+
const addsUp = (quote) => {
|
|
1548
|
+
expect(quote.totalTax.amount === sum(quote.lines.map((each) => each.tax)), "totalTax is not the sum of the lines' tax");
|
|
1549
|
+
for (const each of quote.lines) {
|
|
1550
|
+
expect(isRate(each.rate), `line ${each.lineId} has rate "${each.rate}"`);
|
|
1551
|
+
expect(each.tax.currency === currency && each.taxable.currency === currency, `line ${each.lineId} is not in ${currency}`);
|
|
1552
|
+
}
|
|
1553
|
+
};
|
|
1554
|
+
return conform(`TaxProvider "${provider.name}"`, [
|
|
1555
|
+
["has apiVersion 1 and a name", () => {
|
|
1556
|
+
const version = provider.apiVersion;
|
|
1557
|
+
expect(version === 1, `apiVersion is ${String(version)}`);
|
|
1558
|
+
expect(provider.name.length > 0, "name is empty");
|
|
1559
|
+
}],
|
|
1560
|
+
["refuses a cart that mixes currencies or has no country", async () => {
|
|
1561
|
+
const other = currency === "USD" ? "EUR" : "USD";
|
|
1562
|
+
const mixed = await provider.quote(cart({ lines: [{
|
|
1563
|
+
id: "a",
|
|
1564
|
+
amount: money(100n, other)
|
|
1565
|
+
}] }));
|
|
1566
|
+
expect(kindOf$1(mixed) === "invalid_input", `mixed currencies gave ${kindOf$1(mixed)}`);
|
|
1567
|
+
const nowhere = await provider.quote(cart({ address: {
|
|
1568
|
+
...address,
|
|
1569
|
+
country: ""
|
|
1570
|
+
} }));
|
|
1571
|
+
expect(kindOf$1(nowhere) === "invalid_input", `no country gave ${kindOf$1(nowhere)}`);
|
|
1572
|
+
}],
|
|
1573
|
+
["quotes one line per cart line, in order, with a total that adds up", async () => {
|
|
1574
|
+
const quote = await provider.quote(cart()).orThrow();
|
|
1575
|
+
expect(quote.provider === provider.name, `provider is ${quote.provider}`);
|
|
1576
|
+
expect(quote.lines.map((each) => each.lineId).join(",") === "a,b", `lines are ${quote.lines.map((each) => each.lineId).join(",")}`);
|
|
1577
|
+
expect(quote.lines[0]?.taxable.amount === 10000n, "line a lost its amount");
|
|
1578
|
+
addsUp(quote);
|
|
1579
|
+
expect(expectTax ? quote.totalTax.amount > 0n : quote.totalTax.amount === 0n, `totalTax is ${String(quote.totalTax.amount)}`);
|
|
1580
|
+
}],
|
|
1581
|
+
["splits an inclusive price into taxable and tax", async () => {
|
|
1582
|
+
const only = (await provider.quote(cart({ lines: [line("a", 12100n, true)] })).orThrow()).lines[0];
|
|
1583
|
+
expect(only?.inclusive === true, "the line is not inclusive");
|
|
1584
|
+
expect(only.taxable.amount + only.tax.amount === 12100n, "taxable and tax don't add up to the price");
|
|
1585
|
+
}],
|
|
1586
|
+
["quotes shipping as the last line", async () => {
|
|
1587
|
+
const quote = await provider.quote(cart({ shipping: { amount: money(500n, currency) } })).orThrow();
|
|
1588
|
+
expect(quote.lines.at(-1)?.lineId === SHIPPING_LINE, "the last line is not shipping");
|
|
1589
|
+
addsUp(quote);
|
|
1590
|
+
}],
|
|
1591
|
+
["charges an exempt customer no tax", async () => {
|
|
1592
|
+
const quote = await provider.quote(cart({ customer: { exempt: true } })).orThrow();
|
|
1593
|
+
expect(quote.totalTax.amount === 0n, `totalTax is ${String(quote.totalTax.amount)}`);
|
|
1594
|
+
}],
|
|
1595
|
+
["commits a quote as a transaction", async () => {
|
|
1596
|
+
const quote = await provider.quote(cart()).orThrow();
|
|
1597
|
+
const ref = reference();
|
|
1598
|
+
const transaction = await provider.commit({
|
|
1599
|
+
quote,
|
|
1600
|
+
reference: ref
|
|
1601
|
+
}).orThrow();
|
|
1602
|
+
expect(transaction.id.length > 0, "the transaction has no id");
|
|
1603
|
+
expect(transaction.reference === ref, "the reference changed");
|
|
1604
|
+
expect(transaction.totalTax.amount === quote.totalTax.amount, "the transaction's tax differs from the quote");
|
|
1605
|
+
}],
|
|
1606
|
+
["reverses a whole sale", async () => {
|
|
1607
|
+
const sale = await committed();
|
|
1608
|
+
const reversal = await provider.reverse({
|
|
1609
|
+
transaction: sale,
|
|
1610
|
+
reference: reference()
|
|
1611
|
+
}).orThrow();
|
|
1612
|
+
expect(reversal.totalTax.amount === -sale.totalTax.amount, `reversed ${String(reversal.totalTax.amount)} of ${String(sale.totalTax.amount)}`);
|
|
1613
|
+
}],
|
|
1614
|
+
["reverses part of a line and refuses more than was sold", async () => {
|
|
1615
|
+
const sale = await committed();
|
|
1616
|
+
const sold = sale.lines[0];
|
|
1617
|
+
expect(sold !== void 0, "the sale has no lines");
|
|
1618
|
+
const part = {
|
|
1619
|
+
lineId: sold.lineId,
|
|
1620
|
+
amount: money(sold.taxable.amount / 2n, currency),
|
|
1621
|
+
tax: money(sold.tax.amount / 2n, currency)
|
|
1622
|
+
};
|
|
1623
|
+
const reversal = await provider.reverse({
|
|
1624
|
+
transaction: sale,
|
|
1625
|
+
reference: reference(),
|
|
1626
|
+
lines: [part]
|
|
1627
|
+
}).orThrow();
|
|
1628
|
+
expect(reversal.totalTax.amount === -part.tax.amount, `reversed ${String(reversal.totalTax.amount)}`);
|
|
1629
|
+
const tooMuch = await provider.reverse({
|
|
1630
|
+
transaction: sale,
|
|
1631
|
+
reference: reference(),
|
|
1632
|
+
lines: [{
|
|
1633
|
+
...part,
|
|
1634
|
+
amount: money(sold.taxable.amount + 1n, currency)
|
|
1635
|
+
}]
|
|
1636
|
+
});
|
|
1637
|
+
expect(kindOf$1(tooMuch) === "invalid_input", `reversing more than was sold gave ${kindOf$1(tooMuch)}`);
|
|
1638
|
+
const unknown = await provider.reverse({
|
|
1639
|
+
transaction: sale,
|
|
1640
|
+
reference: reference(),
|
|
1641
|
+
lines: [{
|
|
1642
|
+
...part,
|
|
1643
|
+
lineId: "conformance-unknown"
|
|
1644
|
+
}]
|
|
1645
|
+
});
|
|
1646
|
+
expect(kindOf$1(unknown) === "invalid_input", `an unknown line gave ${kindOf$1(unknown)}`);
|
|
1647
|
+
}]
|
|
1648
|
+
]);
|
|
1649
|
+
}
|
|
1650
|
+
//#endregion
|
|
1651
|
+
//#region src/testing/kits/incoming-destination.ts
|
|
1652
|
+
/**
|
|
1653
|
+
* Proves an `IncomingDestination` accepts a delivery once per endpoint and
|
|
1654
|
+
* message id: a repeat reports the first id as a duplicate, while another
|
|
1655
|
+
* message id or another endpoint is new.
|
|
1656
|
+
* It delivers four messages with random endpoint ids; the destination keeps them.
|
|
1657
|
+
*/
|
|
1658
|
+
function testIncomingDestination(destination, options) {
|
|
1659
|
+
const endpoint = crypto.randomUUID();
|
|
1660
|
+
const delivery = (messageId, endpointId = endpoint) => ({
|
|
1661
|
+
endpoint: {
|
|
1662
|
+
id: endpointId,
|
|
1663
|
+
tenant: options.tenant,
|
|
1664
|
+
metadata: {}
|
|
1665
|
+
},
|
|
1666
|
+
source: options.source ?? "conformance",
|
|
1667
|
+
messageId,
|
|
1668
|
+
type: "conformance.test",
|
|
1669
|
+
payload: {
|
|
1670
|
+
type: "conformance.test",
|
|
1671
|
+
messageId
|
|
1672
|
+
},
|
|
1673
|
+
headers: {}
|
|
1674
|
+
});
|
|
1675
|
+
return conform(`IncomingDestination "${destination.name}"`, [
|
|
1676
|
+
hasName(destination),
|
|
1677
|
+
["has apiVersion 1", () => {
|
|
1678
|
+
const version = destination.apiVersion;
|
|
1679
|
+
expect(version === 1, "apiVersion must be 1");
|
|
1680
|
+
}],
|
|
1681
|
+
["reports a repeated endpoint and message id as a duplicate of the first", async () => {
|
|
1682
|
+
const first = await destination.deliver(delivery("m1"));
|
|
1683
|
+
expect(!first.duplicate, "the first delivery must not be a duplicate");
|
|
1684
|
+
const again = await destination.deliver(delivery("m1"));
|
|
1685
|
+
expect(again.duplicate, "a repeated delivery must be a duplicate");
|
|
1686
|
+
expect(String(again.id) === String(first.id), "a duplicate must return the first delivery's id");
|
|
1687
|
+
}],
|
|
1688
|
+
["treats another message id or another endpoint as a new delivery", async () => {
|
|
1689
|
+
expect(!(await destination.deliver(delivery("m2"))).duplicate, "another message id must be new");
|
|
1690
|
+
expect(!(await destination.deliver(delivery("m1", crypto.randomUUID()))).duplicate, "the same id on another endpoint must be new");
|
|
1691
|
+
}]
|
|
1692
|
+
]);
|
|
1693
|
+
}
|
|
1694
|
+
//#endregion
|
|
1223
1695
|
//#region src/testing/kits/plugin.ts
|
|
1224
1696
|
/**
|
|
1225
1697
|
* Proves a `Plugin` targets API v1, installs cleanly on its own and next to
|
|
@@ -1429,6 +1901,16 @@ function testQueueBackend(backend, options) {
|
|
|
1429
1901
|
const job = await claimOne();
|
|
1430
1902
|
expect(job, "read must return the sent message");
|
|
1431
1903
|
await backend.complete(job);
|
|
1904
|
+
}],
|
|
1905
|
+
backend.sendOnce && ["sends once per key, counting completed messages, when it has sendOnce", async () => {
|
|
1906
|
+
const key = `once-${Date.now()}`;
|
|
1907
|
+
const first = await backend.sendOnce?.(queue, { n: 5 }, 0, 3, key);
|
|
1908
|
+
expect(first && !first.duplicate, "the first sendOnce must send");
|
|
1909
|
+
const job = await claimOne();
|
|
1910
|
+
expect(job?.id === first.id, "read must return the sent message");
|
|
1911
|
+
await backend.complete(job);
|
|
1912
|
+
const again = await backend.sendOnce?.(queue, { n: 5 }, 0, 3, key);
|
|
1913
|
+
expect(again?.duplicate === true && again.id === first.id, "sendOnce after completion must return the first id as a duplicate");
|
|
1432
1914
|
}]
|
|
1433
1915
|
]);
|
|
1434
1916
|
}
|
|
@@ -1517,6 +1999,113 @@ function testSupportSessionStore(store, options) {
|
|
|
1517
1999
|
]);
|
|
1518
2000
|
}
|
|
1519
2001
|
//#endregion
|
|
2002
|
+
//#region src/testing/kits/controller-binding.ts
|
|
2003
|
+
const PROBE_INITIAL = {
|
|
2004
|
+
count: 0,
|
|
2005
|
+
label: "initial"
|
|
2006
|
+
};
|
|
2007
|
+
function probe() {
|
|
2008
|
+
let starts = 0;
|
|
2009
|
+
let stops = 0;
|
|
2010
|
+
let disposed = false;
|
|
2011
|
+
let made;
|
|
2012
|
+
const idle = () => void 0;
|
|
2013
|
+
let emit = idle;
|
|
2014
|
+
return {
|
|
2015
|
+
create: () => {
|
|
2016
|
+
const controller = defineController(PROBE_INITIAL, (state) => ({
|
|
2017
|
+
actions: {
|
|
2018
|
+
increment: () => {
|
|
2019
|
+
state.set((current) => ({ count: current.count + 1 }));
|
|
2020
|
+
},
|
|
2021
|
+
rename: (label) => {
|
|
2022
|
+
state.set({ label });
|
|
2023
|
+
}
|
|
2024
|
+
},
|
|
2025
|
+
start: () => {
|
|
2026
|
+
starts += 1;
|
|
2027
|
+
emit = (patch) => {
|
|
2028
|
+
state.set(patch);
|
|
2029
|
+
};
|
|
2030
|
+
return () => {
|
|
2031
|
+
stops += 1;
|
|
2032
|
+
emit = idle;
|
|
2033
|
+
};
|
|
2034
|
+
}
|
|
2035
|
+
}));
|
|
2036
|
+
made = {
|
|
2037
|
+
...controller,
|
|
2038
|
+
dispose: () => {
|
|
2039
|
+
disposed = true;
|
|
2040
|
+
controller.dispose();
|
|
2041
|
+
}
|
|
2042
|
+
};
|
|
2043
|
+
return made;
|
|
2044
|
+
},
|
|
2045
|
+
emit: (patch) => {
|
|
2046
|
+
emit(patch);
|
|
2047
|
+
},
|
|
2048
|
+
starts: () => starts,
|
|
2049
|
+
stops: () => stops,
|
|
2050
|
+
disposed: () => disposed,
|
|
2051
|
+
controller: () => made
|
|
2052
|
+
};
|
|
2053
|
+
}
|
|
2054
|
+
/**
|
|
2055
|
+
* Proves a framework binding over a block controller renders the initial
|
|
2056
|
+
* snapshot, follows each change, passes the actions through and stops the
|
|
2057
|
+
* controller's work (and disposes it) on unmount.
|
|
2058
|
+
*/
|
|
2059
|
+
function testControllerBinding(name, harness) {
|
|
2060
|
+
const settle = async () => {
|
|
2061
|
+
await harness.settle?.();
|
|
2062
|
+
};
|
|
2063
|
+
const mounted = async (run) => {
|
|
2064
|
+
const current = probe();
|
|
2065
|
+
const binding = await harness.mount(current.create);
|
|
2066
|
+
try {
|
|
2067
|
+
await settle();
|
|
2068
|
+
await run(binding, current);
|
|
2069
|
+
} finally {
|
|
2070
|
+
await binding.unmount();
|
|
2071
|
+
}
|
|
2072
|
+
};
|
|
2073
|
+
return conform(`ControllerBinding "${name}"`, [
|
|
2074
|
+
["renders the initial snapshot", () => mounted((binding, current) => {
|
|
2075
|
+
const state = binding.read();
|
|
2076
|
+
expect(state.count === PROBE_INITIAL.count && state.label === PROBE_INITIAL.label, `rendered ${JSON.stringify(state)} instead of the initial snapshot`);
|
|
2077
|
+
expect(current.starts() === 1, `the controller started ${current.starts()} times on mount, not once`);
|
|
2078
|
+
})],
|
|
2079
|
+
["renders a change from the controller", () => mounted(async (binding, current) => {
|
|
2080
|
+
current.emit({ label: "changed" });
|
|
2081
|
+
await settle();
|
|
2082
|
+
expect(binding.read().label === "changed", `rendered label ${JSON.stringify(binding.read().label)} after the controller changed it`);
|
|
2083
|
+
current.emit({ count: 5 });
|
|
2084
|
+
await settle();
|
|
2085
|
+
expect(binding.read().count === 5, `rendered count ${binding.read().count} after a second change`);
|
|
2086
|
+
})],
|
|
2087
|
+
["passes the controller's actions through", () => mounted(async (binding, current) => {
|
|
2088
|
+
expect(binding.actions.increment === current.controller()?.actions.increment, "the binding's actions are not the controller's");
|
|
2089
|
+
binding.actions.increment();
|
|
2090
|
+
binding.actions.rename("renamed");
|
|
2091
|
+
await settle();
|
|
2092
|
+
const state = binding.read();
|
|
2093
|
+
expect(state.count === 1 && state.label === "renamed", `rendered ${JSON.stringify(state)} after the actions ran`);
|
|
2094
|
+
})],
|
|
2095
|
+
["stops the controller on unmount", async () => {
|
|
2096
|
+
const current = probe();
|
|
2097
|
+
const binding = await harness.mount(current.create);
|
|
2098
|
+
await settle();
|
|
2099
|
+
await binding.unmount();
|
|
2100
|
+
await settle();
|
|
2101
|
+
expect(current.stops() === current.starts() && current.starts() > 0, `the controller started ${current.starts()} times and stopped ${current.stops()} times`);
|
|
2102
|
+
if (harness.disposes ?? true) expect(current.disposed(), "unmount didn't dispose the controller");
|
|
2103
|
+
current.emit({ count: 9 });
|
|
2104
|
+
await settle();
|
|
2105
|
+
}]
|
|
2106
|
+
]);
|
|
2107
|
+
}
|
|
2108
|
+
//#endregion
|
|
1520
2109
|
//#region src/testing/adapter.ts
|
|
1521
2110
|
const MODULE_SERVER = {
|
|
1522
2111
|
env: {
|
|
@@ -1726,6 +2315,14 @@ function testAuthorizationProvider(provider) {
|
|
|
1726
2315
|
for (const scope of permission.scopes ?? []) expect(scopes.has(scope), `permission "${permission.key}" names unknown scope "${scope}"`);
|
|
1727
2316
|
}
|
|
1728
2317
|
}],
|
|
2318
|
+
provider.operations && ["operations name listed permissions", () => {
|
|
2319
|
+
const keys = provider.permissions === void 0 ? void 0 : new Set(provider.permissions.map((entry) => entry.key));
|
|
2320
|
+
for (const [name, operation] of Object.entries(provider.operations)) {
|
|
2321
|
+
expect(name !== "", "an operation name is empty");
|
|
2322
|
+
expect(operation.permission !== "", `operation "${name}" names no permission`);
|
|
2323
|
+
if (keys) expect(keys.has(operation.permission), `operation "${name}" needs "${operation.permission}", which permissions doesn't list`);
|
|
2324
|
+
}
|
|
2325
|
+
}],
|
|
1729
2326
|
provider.memberships && ["memberships name known scopes", () => {
|
|
1730
2327
|
for (const membership of provider.memberships) {
|
|
1731
2328
|
expect(TABLE.test(membership.table), `membership table "${membership.table}" is not schema.table`);
|
|
@@ -1770,6 +2367,185 @@ function testAuthorizationProvider(provider) {
|
|
|
1770
2367
|
]);
|
|
1771
2368
|
}
|
|
1772
2369
|
//#endregion
|
|
2370
|
+
//#region src/testing/authorization-hooks.ts
|
|
2371
|
+
/**
|
|
2372
|
+
* Proves `AuthorizationHooks` target API v1 and fail closed for strangers:
|
|
2373
|
+
* fan-out returns only subscribers it was given, an identity nobody linked
|
|
2374
|
+
* and a forged ticket resolve to `null`, a requester never approves their
|
|
2375
|
+
* own request, an unknown publisher can neither publish nor run, an
|
|
2376
|
+
* unlinked chat author gets nothing, an admin with no claims cannot start
|
|
2377
|
+
* a support session and never approves their own, and a delegated token
|
|
2378
|
+
* with no scopes maps to no permissions.
|
|
2379
|
+
*/
|
|
2380
|
+
function testAuthorizationHooks(hooks) {
|
|
2381
|
+
const stranger = crypto.randomUUID();
|
|
2382
|
+
const event = {
|
|
2383
|
+
type: "conformance.checked",
|
|
2384
|
+
tenant: crypto.randomUUID(),
|
|
2385
|
+
actorId: stranger,
|
|
2386
|
+
payload: {}
|
|
2387
|
+
};
|
|
2388
|
+
const subscribers = [{
|
|
2389
|
+
principal: crypto.randomUUID(),
|
|
2390
|
+
kind: "user"
|
|
2391
|
+
}, {
|
|
2392
|
+
principal: crypto.randomUUID(),
|
|
2393
|
+
kind: "service"
|
|
2394
|
+
}];
|
|
2395
|
+
const subset = async (policy, where) => {
|
|
2396
|
+
const kept = await policy(event, subscribers);
|
|
2397
|
+
for (const entry of kept) expect(subscribers.includes(entry), `${where} returned a subscriber it was not given`);
|
|
2398
|
+
expect((await policy(event, [])).length === 0, `${where} returned subscribers from an empty list`);
|
|
2399
|
+
};
|
|
2400
|
+
const supportStart = (extra) => {
|
|
2401
|
+
const now = Math.floor(Date.now() / 1e3);
|
|
2402
|
+
const claims = {
|
|
2403
|
+
sub: stranger,
|
|
2404
|
+
role: "authenticated",
|
|
2405
|
+
aud: "authenticated",
|
|
2406
|
+
iss: "conformance",
|
|
2407
|
+
exp: now + 60,
|
|
2408
|
+
iat: now,
|
|
2409
|
+
...extra
|
|
2410
|
+
};
|
|
2411
|
+
return {
|
|
2412
|
+
admin: {
|
|
2413
|
+
kind: "user",
|
|
2414
|
+
token: "",
|
|
2415
|
+
claims,
|
|
2416
|
+
user: {
|
|
2417
|
+
id: stranger,
|
|
2418
|
+
role: "authenticated"
|
|
2419
|
+
},
|
|
2420
|
+
source: "conformance",
|
|
2421
|
+
expiresAt: claims.exp
|
|
2422
|
+
},
|
|
2423
|
+
targetUserId: crypto.randomUUID(),
|
|
2424
|
+
reason: "conformance",
|
|
2425
|
+
readOnly: true,
|
|
2426
|
+
metadata: {}
|
|
2427
|
+
};
|
|
2428
|
+
};
|
|
2429
|
+
const { delivery, identities, approverOf, tickets, automation, chat, delegation } = hooks;
|
|
2430
|
+
return conform(`AuthorizationHooks "${hooks.name}"`, [
|
|
2431
|
+
["targets API v1 and has a name", () => {
|
|
2432
|
+
expect(hooks.apiVersion === 1, `apiVersion is ${String(hooks.apiVersion)}`);
|
|
2433
|
+
expect(hooks.name !== "", "name is empty");
|
|
2434
|
+
}],
|
|
2435
|
+
delivery?.subscribers && ["subscribers returns a subset", () => subset(delivery.subscribers, "delivery.subscribers")],
|
|
2436
|
+
delivery?.audience && ["audience returns a subset", () => subset(delivery.audience, "delivery.audience")],
|
|
2437
|
+
identities && ["an unlinked identity is null", async () => {
|
|
2438
|
+
expect(await identities.principalByIdentity({
|
|
2439
|
+
kind: "email",
|
|
2440
|
+
value: `${stranger}@conformance.invalid`
|
|
2441
|
+
}) === null, "an address nobody linked resolved to someone");
|
|
2442
|
+
}],
|
|
2443
|
+
approverOf && ["a requester never approves their own request", async () => {
|
|
2444
|
+
expect(!await approverOf({
|
|
2445
|
+
userId: stranger,
|
|
2446
|
+
claims: { sub: stranger }
|
|
2447
|
+
}, {
|
|
2448
|
+
kind: "tool",
|
|
2449
|
+
subject: crypto.randomUUID(),
|
|
2450
|
+
tenant: event.tenant,
|
|
2451
|
+
requester: stranger
|
|
2452
|
+
}), "approverOf allowed the requester");
|
|
2453
|
+
}],
|
|
2454
|
+
tickets && ["a forged ticket is null", async () => {
|
|
2455
|
+
expect(await tickets.subject(`forged.${stranger}.ticket`) === null, "a forged ticket resolved to a context");
|
|
2456
|
+
}],
|
|
2457
|
+
automation?.mayPublish && ["an unknown publisher may not publish", async () => {
|
|
2458
|
+
expect(!await automation.mayPublish({
|
|
2459
|
+
publisher: stranger,
|
|
2460
|
+
tenant: event.tenant,
|
|
2461
|
+
permissions: ["conformance.write"],
|
|
2462
|
+
claims: {
|
|
2463
|
+
sub: stranger,
|
|
2464
|
+
role: "authenticated"
|
|
2465
|
+
}
|
|
2466
|
+
}), "mayPublish allowed a publisher nobody knows");
|
|
2467
|
+
}],
|
|
2468
|
+
automation?.runAs && ["an unknown publisher runs as no one", async () => {
|
|
2469
|
+
expect(await automation.runAs({
|
|
2470
|
+
publisher: stranger,
|
|
2471
|
+
tenant: event.tenant,
|
|
2472
|
+
permissions: ["conformance.read"]
|
|
2473
|
+
}) === null, "runAs returned claims for an unknown publisher");
|
|
2474
|
+
}],
|
|
2475
|
+
chat?.onAction && ["an unlinked chat author is refused", async () => {
|
|
2476
|
+
const decided = await chat.onAction({
|
|
2477
|
+
id: "approve",
|
|
2478
|
+
author: {
|
|
2479
|
+
kind: "chat",
|
|
2480
|
+
provider: "conformance",
|
|
2481
|
+
value: stranger
|
|
2482
|
+
}
|
|
2483
|
+
}, null);
|
|
2484
|
+
expect(decided === void 0 || !decided.allowed, "onAction allowed an author with no identity link");
|
|
2485
|
+
}],
|
|
2486
|
+
hooks.support && ["an admin with no claims cannot start a support session", async () => {
|
|
2487
|
+
expect(await hooks.support.authorize(supportStart({})) === false, "support.authorize allowed an admin with no claims");
|
|
2488
|
+
}],
|
|
2489
|
+
hooks.support && ["an admin never approves their own support session", async () => {
|
|
2490
|
+
const decision = await hooks.support.authorize(supportStart({
|
|
2491
|
+
user_role: "admin",
|
|
2492
|
+
app_role: "admin"
|
|
2493
|
+
}));
|
|
2494
|
+
expect(typeof decision !== "object" || decision.approvedBy !== stranger, "support.authorize named the admin as their own approver");
|
|
2495
|
+
}],
|
|
2496
|
+
delegation && ["a delegation with no scopes grants no permissions", async () => {
|
|
2497
|
+
expect((await delegation.permissions({
|
|
2498
|
+
userId: stranger,
|
|
2499
|
+
tenant: event.tenant,
|
|
2500
|
+
clientId: "conformance",
|
|
2501
|
+
scopes: []
|
|
2502
|
+
})).length === 0, "delegation.permissions granted keys to a token with no scopes");
|
|
2503
|
+
}]
|
|
2504
|
+
]);
|
|
2505
|
+
}
|
|
2506
|
+
//#endregion
|
|
2507
|
+
//#region src/testing/delivery-transport.ts
|
|
2508
|
+
const KEY = "00000000-0000-4000-8000-00000000d0f0";
|
|
2509
|
+
/**
|
|
2510
|
+
* Runs the `DeliveryTransport` contract against `transport`: API version 1,
|
|
2511
|
+
* the `email` channel, a provider name, and one frozen sample message it
|
|
2512
|
+
* sends without mutating, with the delivery id as its idempotency key.
|
|
2513
|
+
* Throws a `ConformanceError` listing every failed check.
|
|
2514
|
+
*/
|
|
2515
|
+
function testDeliveryTransport(transport, options = {}) {
|
|
2516
|
+
const message = deepFreeze({
|
|
2517
|
+
from: "Conformance <conformance@example.test>",
|
|
2518
|
+
to: options.to ?? "delivered@example.test",
|
|
2519
|
+
subject: "Conformance check",
|
|
2520
|
+
text: "Conformance check",
|
|
2521
|
+
category: "notification",
|
|
2522
|
+
headers: mailHeaders("notification", { url: "https://example.test/unsubscribe" })
|
|
2523
|
+
});
|
|
2524
|
+
return conform(`DeliveryTransport "${transport.provider}"`, [
|
|
2525
|
+
["has apiVersion 1", () => {
|
|
2526
|
+
const version = transport.apiVersion;
|
|
2527
|
+
expect(version === 1, "apiVersion must be 1");
|
|
2528
|
+
}],
|
|
2529
|
+
["sends on the email channel", () => {
|
|
2530
|
+
const channel = transport.channel;
|
|
2531
|
+
expect(channel === "email", `channel must be "email", got ${String(channel)}`);
|
|
2532
|
+
}],
|
|
2533
|
+
["has a provider name", () => {
|
|
2534
|
+
expect(typeof transport.provider === "string" && transport.provider !== "", "provider must be a non-empty string");
|
|
2535
|
+
}],
|
|
2536
|
+
["sends a message without mutating it and returns a valid receipt", async () => {
|
|
2537
|
+
const receipt = await transport.send(message, { idempotencyKey: KEY });
|
|
2538
|
+
if (receipt === void 0) return;
|
|
2539
|
+
expect(receipt.providerMessageId === void 0 || typeof receipt.providerMessageId === "string", "providerMessageId must be a string");
|
|
2540
|
+
}],
|
|
2541
|
+
options.received && ["passes the idempotency key and the headers to the provider", async () => {
|
|
2542
|
+
const found = (await options.received()).find((entry) => entry.idempotencyKey === KEY);
|
|
2543
|
+
expect(found, `no message arrived with idempotency key ${KEY}`);
|
|
2544
|
+
for (const [name, value] of Object.entries(message.headers)) expect(found.headers[name] === value, `header ${name} must be "${value}", got ${String(found.headers[name])}`);
|
|
2545
|
+
}]
|
|
2546
|
+
]);
|
|
2547
|
+
}
|
|
2548
|
+
//#endregion
|
|
1773
2549
|
//#region src/testing/authorizer.ts
|
|
1774
2550
|
const OUTCOMES = /* @__PURE__ */ new Set([
|
|
1775
2551
|
"granted",
|
|
@@ -1900,7 +2676,7 @@ function testAuthorizer(authorizer, options) {
|
|
|
1900
2676
|
* context, and it ignores `subject.properties.claims`.
|
|
1901
2677
|
*/
|
|
1902
2678
|
function staticAuthorizer(options) {
|
|
1903
|
-
const approvals = new Set(options.approvals
|
|
2679
|
+
const approvals = new Set(options.approvals);
|
|
1904
2680
|
const evaluate = (request) => {
|
|
1905
2681
|
const { subject, action } = request;
|
|
1906
2682
|
if (approvals.has(action)) return {
|
|
@@ -2390,7 +3166,8 @@ function sample(channel, email) {
|
|
|
2390
3166
|
priority: null,
|
|
2391
3167
|
createdAt,
|
|
2392
3168
|
readAt: null,
|
|
2393
|
-
resolvedAt: null
|
|
3169
|
+
resolvedAt: null,
|
|
3170
|
+
fields: Object.freeze({})
|
|
2394
3171
|
}),
|
|
2395
3172
|
text: Object.freeze({ title: "Conformance check" })
|
|
2396
3173
|
});
|
|
@@ -2626,7 +3403,7 @@ function testChatState(state, options) {
|
|
|
2626
3403
|
"d"
|
|
2627
3404
|
]) await state.appendToList(key, value, { maxLength: 3 });
|
|
2628
3405
|
const list = await state.getList(key);
|
|
2629
|
-
expect(list.join() === "b,c,d", `list is ${list.join()}`);
|
|
3406
|
+
expect(list.join(",") === "b,c,d", `list is ${list.join(",")}`);
|
|
2630
3407
|
expect((await state.getList(fresh())).length === 0, "missing list is not empty");
|
|
2631
3408
|
}],
|
|
2632
3409
|
["queues per thread, keeps the newest maxSize and reports the depth", async () => {
|
|
@@ -2898,4 +3675,327 @@ function testCredentialProvider(provider, options) {
|
|
|
2898
3675
|
]);
|
|
2899
3676
|
}
|
|
2900
3677
|
//#endregion
|
|
2901
|
-
|
|
3678
|
+
//#region src/testing/act-cases.ts
|
|
3679
|
+
/**
|
|
3680
|
+
* The RFC 8693 `act` chains better-supabase accepts and refuses, as plain
|
|
3681
|
+
* JSON (`better-supabase/testing/act-cases.json`), so another library that
|
|
3682
|
+
* reads the same claims can run the same cases.
|
|
3683
|
+
*/
|
|
3684
|
+
const actCases = {
|
|
3685
|
+
version: 1,
|
|
3686
|
+
cases: [
|
|
3687
|
+
{
|
|
3688
|
+
"name": "no actor",
|
|
3689
|
+
"claims": {},
|
|
3690
|
+
"valid": true,
|
|
3691
|
+
"kind": null,
|
|
3692
|
+
"readOnly": null,
|
|
3693
|
+
"tools": null,
|
|
3694
|
+
"mayWrite": true
|
|
3695
|
+
},
|
|
3696
|
+
{
|
|
3697
|
+
"name": "oauth client_id",
|
|
3698
|
+
"claims": { "client_id": "client-1" },
|
|
3699
|
+
"valid": true,
|
|
3700
|
+
"kind": "oauth-client",
|
|
3701
|
+
"readOnly": null,
|
|
3702
|
+
"tools": null,
|
|
3703
|
+
"mayWrite": true
|
|
3704
|
+
},
|
|
3705
|
+
{
|
|
3706
|
+
"name": "chain without kind",
|
|
3707
|
+
"claims": { "act": {
|
|
3708
|
+
"sub": "agent-runner",
|
|
3709
|
+
"act": { "sub": "mcp-client-42" }
|
|
3710
|
+
} },
|
|
3711
|
+
"valid": true,
|
|
3712
|
+
"kind": "oauth-client",
|
|
3713
|
+
"readOnly": null,
|
|
3714
|
+
"tools": null,
|
|
3715
|
+
"mayWrite": true
|
|
3716
|
+
},
|
|
3717
|
+
{
|
|
3718
|
+
"name": "support, read_only missing",
|
|
3719
|
+
"claims": { "act": {
|
|
3720
|
+
"kind": "support",
|
|
3721
|
+
"sub": "admin-1",
|
|
3722
|
+
"session_id": "session-1"
|
|
3723
|
+
} },
|
|
3724
|
+
"valid": true,
|
|
3725
|
+
"kind": "support",
|
|
3726
|
+
"readOnly": true,
|
|
3727
|
+
"tools": null,
|
|
3728
|
+
"mayWrite": false
|
|
3729
|
+
},
|
|
3730
|
+
{
|
|
3731
|
+
"name": "support, read_only true",
|
|
3732
|
+
"claims": { "act": {
|
|
3733
|
+
"kind": "support",
|
|
3734
|
+
"sub": "admin-1",
|
|
3735
|
+
"session_id": "session-1",
|
|
3736
|
+
"read_only": true
|
|
3737
|
+
} },
|
|
3738
|
+
"valid": true,
|
|
3739
|
+
"kind": "support",
|
|
3740
|
+
"readOnly": true,
|
|
3741
|
+
"tools": null,
|
|
3742
|
+
"mayWrite": false
|
|
3743
|
+
},
|
|
3744
|
+
{
|
|
3745
|
+
"name": "support, read_only false",
|
|
3746
|
+
"claims": { "act": {
|
|
3747
|
+
"kind": "support",
|
|
3748
|
+
"sub": "admin-1",
|
|
3749
|
+
"session_id": "session-1",
|
|
3750
|
+
"read_only": false
|
|
3751
|
+
} },
|
|
3752
|
+
"valid": true,
|
|
3753
|
+
"kind": "support",
|
|
3754
|
+
"readOnly": false,
|
|
3755
|
+
"tools": null,
|
|
3756
|
+
"mayWrite": true
|
|
3757
|
+
},
|
|
3758
|
+
{
|
|
3759
|
+
"name": "support, read_only as a string",
|
|
3760
|
+
"claims": { "act": {
|
|
3761
|
+
"kind": "support",
|
|
3762
|
+
"sub": "admin-1",
|
|
3763
|
+
"session_id": "session-1",
|
|
3764
|
+
"read_only": "false"
|
|
3765
|
+
} },
|
|
3766
|
+
"valid": false,
|
|
3767
|
+
"kind": null,
|
|
3768
|
+
"readOnly": null,
|
|
3769
|
+
"tools": null,
|
|
3770
|
+
"mayWrite": false
|
|
3771
|
+
},
|
|
3772
|
+
{
|
|
3773
|
+
"name": "support without session_id",
|
|
3774
|
+
"claims": { "act": {
|
|
3775
|
+
"kind": "support",
|
|
3776
|
+
"sub": "admin-1",
|
|
3777
|
+
"read_only": false
|
|
3778
|
+
} },
|
|
3779
|
+
"valid": false,
|
|
3780
|
+
"kind": null,
|
|
3781
|
+
"readOnly": null,
|
|
3782
|
+
"tools": null,
|
|
3783
|
+
"mayWrite": true
|
|
3784
|
+
},
|
|
3785
|
+
{
|
|
3786
|
+
"name": "session_id without kind (0.5.0 support)",
|
|
3787
|
+
"claims": { "act": {
|
|
3788
|
+
"sub": "admin-1",
|
|
3789
|
+
"session_id": "session-1"
|
|
3790
|
+
} },
|
|
3791
|
+
"valid": false,
|
|
3792
|
+
"kind": null,
|
|
3793
|
+
"readOnly": null,
|
|
3794
|
+
"tools": null,
|
|
3795
|
+
"mayWrite": false
|
|
3796
|
+
},
|
|
3797
|
+
{
|
|
3798
|
+
"name": "impersonation",
|
|
3799
|
+
"claims": { "act": {
|
|
3800
|
+
"kind": "impersonation",
|
|
3801
|
+
"sub": "admin-1",
|
|
3802
|
+
"reason": "ticket 42"
|
|
3803
|
+
} },
|
|
3804
|
+
"valid": true,
|
|
3805
|
+
"kind": "impersonation",
|
|
3806
|
+
"readOnly": null,
|
|
3807
|
+
"tools": null,
|
|
3808
|
+
"mayWrite": false
|
|
3809
|
+
},
|
|
3810
|
+
{
|
|
3811
|
+
"name": "impersonation, read_only false",
|
|
3812
|
+
"claims": { "act": {
|
|
3813
|
+
"kind": "impersonation",
|
|
3814
|
+
"sub": "admin-1",
|
|
3815
|
+
"read_only": false
|
|
3816
|
+
} },
|
|
3817
|
+
"valid": true,
|
|
3818
|
+
"kind": "impersonation",
|
|
3819
|
+
"readOnly": null,
|
|
3820
|
+
"tools": null,
|
|
3821
|
+
"mayWrite": false
|
|
3822
|
+
},
|
|
3823
|
+
{
|
|
3824
|
+
"name": "agent, every tool",
|
|
3825
|
+
"claims": { "act": {
|
|
3826
|
+
"kind": "agent",
|
|
3827
|
+
"sub": "agent-7"
|
|
3828
|
+
} },
|
|
3829
|
+
"valid": true,
|
|
3830
|
+
"kind": "agent",
|
|
3831
|
+
"readOnly": false,
|
|
3832
|
+
"tools": null,
|
|
3833
|
+
"mayWrite": true
|
|
3834
|
+
},
|
|
3835
|
+
{
|
|
3836
|
+
"name": "agent, listed tools",
|
|
3837
|
+
"claims": { "act": {
|
|
3838
|
+
"kind": "agent",
|
|
3839
|
+
"sub": "agent-7",
|
|
3840
|
+
"tools": ["search_knowledge"]
|
|
3841
|
+
} },
|
|
3842
|
+
"valid": true,
|
|
3843
|
+
"kind": "agent",
|
|
3844
|
+
"readOnly": false,
|
|
3845
|
+
"tools": ["search_knowledge"],
|
|
3846
|
+
"mayWrite": true
|
|
3847
|
+
},
|
|
3848
|
+
{
|
|
3849
|
+
"name": "agent, no tools",
|
|
3850
|
+
"claims": { "act": {
|
|
3851
|
+
"kind": "agent",
|
|
3852
|
+
"sub": "agent-7",
|
|
3853
|
+
"tools": []
|
|
3854
|
+
} },
|
|
3855
|
+
"valid": true,
|
|
3856
|
+
"kind": "agent",
|
|
3857
|
+
"readOnly": false,
|
|
3858
|
+
"tools": [],
|
|
3859
|
+
"mayWrite": true
|
|
3860
|
+
},
|
|
3861
|
+
{
|
|
3862
|
+
"name": "agent, read_only true",
|
|
3863
|
+
"claims": { "act": {
|
|
3864
|
+
"kind": "agent",
|
|
3865
|
+
"sub": "agent-7",
|
|
3866
|
+
"read_only": true
|
|
3867
|
+
} },
|
|
3868
|
+
"valid": true,
|
|
3869
|
+
"kind": "agent",
|
|
3870
|
+
"readOnly": true,
|
|
3871
|
+
"tools": null,
|
|
3872
|
+
"mayWrite": false
|
|
3873
|
+
},
|
|
3874
|
+
{
|
|
3875
|
+
"name": "agent, read_only false",
|
|
3876
|
+
"claims": { "act": {
|
|
3877
|
+
"kind": "agent",
|
|
3878
|
+
"sub": "agent-7",
|
|
3879
|
+
"read_only": false
|
|
3880
|
+
} },
|
|
3881
|
+
"valid": true,
|
|
3882
|
+
"kind": "agent",
|
|
3883
|
+
"readOnly": false,
|
|
3884
|
+
"tools": null,
|
|
3885
|
+
"mayWrite": true
|
|
3886
|
+
},
|
|
3887
|
+
{
|
|
3888
|
+
"name": "agent, read_only as a string",
|
|
3889
|
+
"claims": { "act": {
|
|
3890
|
+
"kind": "agent",
|
|
3891
|
+
"sub": "agent-7",
|
|
3892
|
+
"read_only": "true"
|
|
3893
|
+
} },
|
|
3894
|
+
"valid": false,
|
|
3895
|
+
"kind": null,
|
|
3896
|
+
"readOnly": null,
|
|
3897
|
+
"tools": null,
|
|
3898
|
+
"mayWrite": false
|
|
3899
|
+
},
|
|
3900
|
+
{
|
|
3901
|
+
"name": "agent over an OAuth client",
|
|
3902
|
+
"claims": {
|
|
3903
|
+
"scope": "posts:read",
|
|
3904
|
+
"act": {
|
|
3905
|
+
"kind": "agent",
|
|
3906
|
+
"sub": "agent-7",
|
|
3907
|
+
"tools": ["search_knowledge"],
|
|
3908
|
+
"act": { "sub": "mcp-client-42" }
|
|
3909
|
+
}
|
|
3910
|
+
},
|
|
3911
|
+
"valid": true,
|
|
3912
|
+
"kind": "agent",
|
|
3913
|
+
"readOnly": false,
|
|
3914
|
+
"tools": ["search_knowledge"],
|
|
3915
|
+
"mayWrite": true
|
|
3916
|
+
},
|
|
3917
|
+
{
|
|
3918
|
+
"name": "agent, tools not a list",
|
|
3919
|
+
"claims": { "act": {
|
|
3920
|
+
"kind": "agent",
|
|
3921
|
+
"sub": "agent-7",
|
|
3922
|
+
"tools": "search_knowledge"
|
|
3923
|
+
} },
|
|
3924
|
+
"valid": false,
|
|
3925
|
+
"kind": null,
|
|
3926
|
+
"readOnly": null,
|
|
3927
|
+
"tools": null,
|
|
3928
|
+
"mayWrite": true
|
|
3929
|
+
},
|
|
3930
|
+
{
|
|
3931
|
+
"name": "agent, empty tool name",
|
|
3932
|
+
"claims": { "act": {
|
|
3933
|
+
"kind": "agent",
|
|
3934
|
+
"sub": "agent-7",
|
|
3935
|
+
"tools": [""]
|
|
3936
|
+
} },
|
|
3937
|
+
"valid": false,
|
|
3938
|
+
"kind": null,
|
|
3939
|
+
"readOnly": null,
|
|
3940
|
+
"tools": null,
|
|
3941
|
+
"mayWrite": true
|
|
3942
|
+
},
|
|
3943
|
+
{
|
|
3944
|
+
"name": "agent with session_id",
|
|
3945
|
+
"claims": { "act": {
|
|
3946
|
+
"kind": "agent",
|
|
3947
|
+
"sub": "agent-7",
|
|
3948
|
+
"session_id": "session-1"
|
|
3949
|
+
} },
|
|
3950
|
+
"valid": false,
|
|
3951
|
+
"kind": null,
|
|
3952
|
+
"readOnly": null,
|
|
3953
|
+
"tools": null,
|
|
3954
|
+
"mayWrite": true
|
|
3955
|
+
},
|
|
3956
|
+
{
|
|
3957
|
+
"name": "unknown kind",
|
|
3958
|
+
"claims": { "act": {
|
|
3959
|
+
"kind": "robot",
|
|
3960
|
+
"sub": "robot-1"
|
|
3961
|
+
} },
|
|
3962
|
+
"valid": false,
|
|
3963
|
+
"kind": null,
|
|
3964
|
+
"readOnly": null,
|
|
3965
|
+
"tools": null,
|
|
3966
|
+
"mayWrite": false
|
|
3967
|
+
},
|
|
3968
|
+
{
|
|
3969
|
+
"name": "act not an object",
|
|
3970
|
+
"claims": { "act": "agent-7" },
|
|
3971
|
+
"valid": false,
|
|
3972
|
+
"kind": null,
|
|
3973
|
+
"readOnly": null,
|
|
3974
|
+
"tools": null,
|
|
3975
|
+
"mayWrite": true
|
|
3976
|
+
},
|
|
3977
|
+
{
|
|
3978
|
+
"name": "act without sub",
|
|
3979
|
+
"claims": { "act": { "kind": "agent" } },
|
|
3980
|
+
"valid": false,
|
|
3981
|
+
"kind": null,
|
|
3982
|
+
"readOnly": null,
|
|
3983
|
+
"tools": null,
|
|
3984
|
+
"mayWrite": true
|
|
3985
|
+
},
|
|
3986
|
+
{
|
|
3987
|
+
"name": "nested level without sub",
|
|
3988
|
+
"claims": { "act": {
|
|
3989
|
+
"sub": "agent-runner",
|
|
3990
|
+
"act": { "sub": "" }
|
|
3991
|
+
} },
|
|
3992
|
+
"valid": false,
|
|
3993
|
+
"kind": null,
|
|
3994
|
+
"readOnly": null,
|
|
3995
|
+
"tools": null,
|
|
3996
|
+
"mayWrite": true
|
|
3997
|
+
}
|
|
3998
|
+
]
|
|
3999
|
+
};
|
|
4000
|
+
//#endregion
|
|
4001
|
+
export { ConformanceError, LOCAL_JWT_SECRET, PROBE_INITIAL, actCases, asUser, createTestSigner, defineSeed, expectDbBudget, expectInstant, expectTenantIsolation, isSeed, liteStack, localAuth, localSigningKey, signLocalJwt, signTestJwt, signTestJwtWithKey, staticAuthorizer, supabaseClaimFixtures, supabaseInvalidClaimFixtures, testAdapter, testAiTaskRunner, testAuthResolver, testAuthorizationHooks, testAuthorizationProvider, testAuthorizer, testBlockTransportMiddleware, testBuilderStarter, testCacheAdapter, testChatState, testControllerBinding, testCredentialProvider, testDeliveryTransport, testDocumentFormat, testEmbedder, testEveDocumentBackend, testEventSink, testExecutor, testGenerator, testGraphCompiler, testIncomingDestination, testNotificationChannel, testPaymentProvider, testPlugin, testQueueBackend, testStreamStore, testSupportSessionStore, testTaxProvider, testWebhookSecretStore, testWebhookSigner, testWebhookTransport };
|