@hexclave/shared 1.0.21 → 1.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/unified-prompts/reminders.js +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -1
- package/dist/ai/unified-prompts/skill-site-prompt.js +4 -1
- package/dist/ai/unified-prompts/skill-site-prompt.js.map +1 -1
- package/dist/config/schema.d.ts +34 -34
- package/dist/esm/ai/unified-prompts/reminders.js +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt.js +4 -1
- package/dist/esm/ai/unified-prompts/skill-site-prompt.js.map +1 -1
- package/dist/esm/config/schema.d.ts +34 -34
- package/dist/esm/interface/admin-interface.d.ts +1 -0
- package/dist/esm/interface/admin-interface.d.ts.map +1 -1
- package/dist/esm/interface/admin-interface.js +2 -1
- package/dist/esm/interface/admin-interface.js.map +1 -1
- package/dist/esm/interface/client-interface.js +1 -1
- package/dist/esm/interface/conversations.d.ts +9 -9
- package/dist/esm/interface/crud/email-outbox.d.ts +156 -156
- package/dist/esm/interface/crud/email-outbox.js +1 -1
- package/dist/esm/interface/crud/email-outbox.js.map +1 -1
- package/dist/esm/interface/server-interface.js +1 -1
- package/dist/interface/admin-interface.d.ts +1 -0
- package/dist/interface/admin-interface.d.ts.map +1 -1
- package/dist/interface/admin-interface.js +2 -1
- package/dist/interface/admin-interface.js.map +1 -1
- package/dist/interface/client-interface.js +1 -1
- package/dist/interface/conversations.d.ts +9 -9
- package/dist/interface/crud/email-outbox.d.ts +156 -156
- package/dist/interface/crud/email-outbox.js +1 -1
- package/dist/interface/crud/email-outbox.js.map +1 -1
- package/dist/interface/server-interface.js +1 -1
- package/package.json +1 -1
- package/src/ai/unified-prompts/skill-site-prompt.ts +4 -1
- package/src/interface/admin-interface.ts +2 -1
- package/src/interface/crud/email-outbox.ts +1 -1
|
@@ -180,7 +180,7 @@ const emailOutboxCrud = createCrud({
|
|
|
180
180
|
serverList: {
|
|
181
181
|
tags: ["Emails"],
|
|
182
182
|
summary: "List email outbox",
|
|
183
|
-
description: "Lists all emails in the outbox with optional filtering by status or
|
|
183
|
+
description: "Lists all emails in the outbox with optional filtering by status, simple_status, or user_id."
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-outbox.js","names":[],"sources":["../../../../src/interface/crud/email-outbox.ts"],"sourcesContent":["import { CrudTypeOf, createCrud } from \"../../crud\";\nimport * as fieldSchema from \"../../schema-fields\";\n\n\n// Recipient types\nconst recipientUserPrimaryEmailSchema = fieldSchema.yupObject({\n type: fieldSchema.yupString().oneOf([\"user-primary-email\"]).defined(),\n user_id: fieldSchema.yupString().defined(),\n}).defined();\n\nconst recipientUserCustomEmailsSchema = fieldSchema.yupObject({\n type: fieldSchema.yupString().oneOf([\"user-custom-emails\"]).defined(),\n user_id: fieldSchema.yupString().defined(),\n emails: fieldSchema.yupArray(fieldSchema.yupString().defined()).defined(),\n}).defined();\n\nconst recipientCustomEmailsSchema = fieldSchema.yupObject({\n type: fieldSchema.yupString().oneOf([\"custom-emails\"]).defined(),\n emails: fieldSchema.yupArray(fieldSchema.yupString().defined()).defined(),\n}).defined();\n\nconst recipientSchema = fieldSchema.yupUnion(\n recipientUserPrimaryEmailSchema,\n recipientUserCustomEmailsSchema,\n recipientCustomEmailsSchema\n);\n\n\n// =============================== BASE FIELDS ===============================\n\n// Base fields present on all emails\nconst emailOutboxBaseSchema = fieldSchema.yupObject({\n id: fieldSchema.yupString().defined(),\n created_at_millis: fieldSchema.yupNumber().defined(),\n updated_at_millis: fieldSchema.yupNumber().defined(),\n tsx_source: fieldSchema.yupString().defined(),\n theme_id: fieldSchema.yupString().nullable().defined(),\n to: recipientSchema.defined(),\n variables: fieldSchema.yupRecord(fieldSchema.yupString(), fieldSchema.jsonSchema).defined(),\n skip_deliverability_check: fieldSchema.yupBoolean().defined(),\n scheduled_at_millis: fieldSchema.yupNumber().defined(),\n\n\n // Source tracking for grouping emails by template/draft\n created_with: fieldSchema.yupString().oneOf([\"draft\", \"programmatic-call\"]).defined(),\n email_draft_id: fieldSchema.yupString().nullable().defined(),\n email_programmatic_call_template_id: fieldSchema.yupString().nullable().defined(),\n\n // Retry-related fields (for debugging/testing deferred retry logic)\n send_retries: fieldSchema.yupNumber().defined(),\n next_send_retry_at_millis: fieldSchema.yupNumber().nullable().defined(),\n // Array of errors from each failed send attempt, each with internal/external messages\n send_attempt_errors: fieldSchema.yupArray(fieldSchema.yupObject({\n attempt_number: fieldSchema.yupNumber().defined(),\n timestamp: fieldSchema.yupString().defined(),\n external_message: fieldSchema.yupString().defined(),\n external_details: fieldSchema.yupRecord(fieldSchema.yupString(), fieldSchema.jsonSchema).defined(),\n internal_message: fieldSchema.yupString().defined(),\n internal_details: fieldSchema.yupRecord(fieldSchema.yupString(), fieldSchema.jsonSchema).defined(),\n }).defined()).nullable().defined(),\n\n status: fieldSchema.yupString().defined(),\n simple_status: fieldSchema.yupString().defined(),\n\n // These fields are overridden because we use concat to build the final schema for each state\n is_paused: fieldSchema.yupBoolean().oneOf([false]).defined(),\n has_rendered: fieldSchema.yupBoolean().oneOf([false]).defined(),\n has_delivered: fieldSchema.yupBoolean().oneOf([false]).defined(),\n}).defined();\n\n// Rendered output fields\nconst renderedFieldsSchema = emailOutboxBaseSchema.concat(fieldSchema.yupObject({\n started_rendering_at_millis: fieldSchema.yupNumber().defined(),\n rendered_at_millis: fieldSchema.yupNumber().defined(),\n subject: fieldSchema.yupString().defined(),\n html: fieldSchema.yupString().nullable().defined(),\n text: fieldSchema.yupString().nullable().defined(),\n is_transactional: fieldSchema.yupBoolean().defined(),\n is_high_priority: fieldSchema.yupBoolean().defined(),\n notification_category_id: fieldSchema.yupString().nullable().defined(),\n has_rendered: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\nconst startedSendingFieldsSchema = renderedFieldsSchema.concat(fieldSchema.yupObject({\n started_sending_at_millis: fieldSchema.yupNumber().defined(),\n}).defined());\n\n// Finished delivering tracking fields\nconst finishedDeliveringFieldsSchema = startedSendingFieldsSchema.concat(fieldSchema.yupObject({\n delivered_at_millis: fieldSchema.yupNumber().defined(),\n has_delivered: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\n\n// =============================== STATUS-SPECIFIC SCHEMAS ===============================\n\nconst pausedStatusSchema = emailOutboxBaseSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"paused\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"in-progress\"]).defined(),\n is_paused: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\nconst preparingStatusSchema = emailOutboxBaseSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"preparing\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"in-progress\"]).defined(),\n}).defined());\n\nconst renderingStatusSchema = emailOutboxBaseSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"rendering\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"in-progress\"]).defined(),\n started_rendering_at_millis: fieldSchema.yupNumber().defined(),\n}).defined());\n\nconst renderErrorStatusSchema = emailOutboxBaseSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"render-error\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"error\"]).defined(),\n started_rendering_at_millis: fieldSchema.yupNumber().defined(),\n rendered_at_millis: fieldSchema.yupNumber().defined(),\n render_error: fieldSchema.yupString().defined(),\n}).defined());\n\nconst scheduledStatusSchema = renderedFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"scheduled\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"in-progress\"]).defined(),\n has_rendered: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\nconst queuedStatusSchema = renderedFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"queued\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"in-progress\"]).defined(),\n has_rendered: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\nconst sendingStatusSchema = startedSendingFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"sending\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"in-progress\"]).defined(),\n}).defined());\n\nconst serverErrorStatusSchema = startedSendingFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"server-error\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"error\"]).defined(),\n error_at_millis: fieldSchema.yupNumber().defined(),\n server_error: fieldSchema.yupString().defined(),\n}).defined());\n\n// SKIPPED can happen at any time in the lifecycle (like PAUSED)\n// An email can be skipped before rendering (has_rendered: false) or after rendering (has_rendered: true)\n// e.g., user deleted after the email was rendered but before it was sent\nconst skippedStatusSchema = emailOutboxBaseSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"skipped\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"ok\"]).defined(),\n skipped_at_millis: fieldSchema.yupNumber().defined(),\n skipped_reason: fieldSchema.yupString().defined(),\n skipped_details: fieldSchema.yupRecord(fieldSchema.yupString(), fieldSchema.jsonSchema).defined(),\n // Override has_rendered to allow both true and false since email can be skipped at any time\n has_rendered: fieldSchema.yupBoolean().defined(),\n // These fields may or may not be present depending on when the email was skipped\n started_rendering_at_millis: fieldSchema.yupNumber().optional(),\n rendered_at_millis: fieldSchema.yupNumber().optional(),\n subject: fieldSchema.yupString().optional(),\n html: fieldSchema.yupString().nullable().optional(),\n text: fieldSchema.yupString().nullable().optional(),\n is_transactional: fieldSchema.yupBoolean().optional(),\n is_high_priority: fieldSchema.yupBoolean().optional(),\n notification_category_id: fieldSchema.yupString().nullable().optional(),\n started_sending_at_millis: fieldSchema.yupNumber().optional(),\n}).defined());\n\nconst bouncedStatusSchema = startedSendingFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"bounced\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"error\"]).defined(),\n bounced_at_millis: fieldSchema.yupNumber().defined(),\n}).defined());\n\nconst deliveryDelayedStatusSchema = startedSendingFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"delivery-delayed\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"ok\"]).defined(),\n delivery_delayed_at_millis: fieldSchema.yupNumber().defined(),\n}).defined());\n\nconst sentStatusSchema = finishedDeliveringFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"sent\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"ok\"]).defined(),\n // Whether this email's provider supports delivery tracking (opens, clicks, etc.)\n can_have_delivery_info: fieldSchema.yupBoolean().defined(),\n}).defined());\n\nconst openedStatusSchema = finishedDeliveringFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"opened\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"ok\"]).defined(),\n opened_at_millis: fieldSchema.yupNumber().defined(),\n can_have_delivery_info: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\nconst clickedStatusSchema = finishedDeliveringFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"clicked\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"ok\"]).defined(),\n clicked_at_millis: fieldSchema.yupNumber().defined(),\n can_have_delivery_info: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\nconst markedAsSpamStatusSchema = finishedDeliveringFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"marked-as-spam\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"ok\"]).defined(),\n marked_as_spam_at_millis: fieldSchema.yupNumber().defined(),\n can_have_delivery_info: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\n// Combined read schema using union\nexport const emailOutboxReadSchema = fieldSchema.yupUnion(\n pausedStatusSchema,\n preparingStatusSchema,\n renderingStatusSchema,\n renderErrorStatusSchema,\n scheduledStatusSchema,\n queuedStatusSchema,\n sendingStatusSchema,\n serverErrorStatusSchema,\n skippedStatusSchema,\n bouncedStatusSchema,\n deliveryDelayedStatusSchema,\n sentStatusSchema,\n openedStatusSchema,\n clickedStatusSchema,\n markedAsSpamStatusSchema\n);\n\n// Update schema for PATCH endpoint\nexport const emailOutboxUpdateSchema = fieldSchema.yupObject({\n tsx_source: fieldSchema.yupString().optional(),\n theme_id: fieldSchema.yupString().nullable().optional(),\n to: recipientSchema.optional(),\n variables: fieldSchema.yupRecord(fieldSchema.yupString(), fieldSchema.jsonSchema).optional(),\n skip_deliverability_check: fieldSchema.yupBoolean().optional(),\n scheduled_at_millis: fieldSchema.yupNumber().optional(),\n is_paused: fieldSchema.yupBoolean().optional(),\n cancel: fieldSchema.yupBoolean().oneOf([true]).optional(),\n}).defined();\n\nexport const emailOutboxCrud = createCrud({\n serverReadSchema: emailOutboxReadSchema,\n serverUpdateSchema: emailOutboxUpdateSchema,\n docs: {\n serverRead: {\n tags: [\"Emails\"],\n summary: \"Get email outbox entry\",\n description: \"Gets a single email from the outbox by ID.\",\n },\n serverUpdate: {\n tags: [\"Emails\"],\n summary: \"Update email outbox entry\",\n description: \"Updates an email in the outbox. Can be used to edit email content, pause/resume, or cancel emails. Only emails in editable states (`paused`, `preparing`, `rendering`, `render-error`, `scheduled`, `queued`, `server-error`) can be modified.\",\n },\n serverList: {\n tags: [\"Emails\"],\n summary: \"List email outbox\",\n description: \"Lists all emails in the outbox with optional filtering by status or simple_status.\",\n },\n },\n});\n\nexport type EmailOutboxCrud = CrudTypeOf<typeof emailOutboxCrud>;\n\n"],"mappings":";;;;AAKA,MAAM,kCAAkC,YAAY,UAAU;CAC5D,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS;CACrE,SAAS,YAAY,WAAW,CAAC,SAAS;CAC3C,CAAC,CAAC,SAAS;AAEZ,MAAM,kCAAkC,YAAY,UAAU;CAC5D,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,SAAS;CACrE,SAAS,YAAY,WAAW,CAAC,SAAS;CAC1C,QAAQ,YAAY,SAAS,YAAY,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS;CAC1E,CAAC,CAAC,SAAS;AAEZ,MAAM,8BAA8B,YAAY,UAAU;CACxD,MAAM,YAAY,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,SAAS;CAChE,QAAQ,YAAY,SAAS,YAAY,WAAW,CAAC,SAAS,CAAC,CAAC,SAAS;CAC1E,CAAC,CAAC,SAAS;AAEZ,MAAM,kBAAkB,YAAY,SAClC,iCACA,iCACA,4BACD;AAMD,MAAM,wBAAwB,YAAY,UAAU;CAClD,IAAI,YAAY,WAAW,CAAC,SAAS;CACrC,mBAAmB,YAAY,WAAW,CAAC,SAAS;CACpD,mBAAmB,YAAY,WAAW,CAAC,SAAS;CACpD,YAAY,YAAY,WAAW,CAAC,SAAS;CAC7C,UAAU,YAAY,WAAW,CAAC,UAAU,CAAC,SAAS;CACtD,IAAI,gBAAgB,SAAS;CAC7B,WAAW,YAAY,UAAU,YAAY,WAAW,EAAE,YAAY,WAAW,CAAC,SAAS;CAC3F,2BAA2B,YAAY,YAAY,CAAC,SAAS;CAC7D,qBAAqB,YAAY,WAAW,CAAC,SAAS;CAItD,cAAc,YAAY,WAAW,CAAC,MAAM,CAAC,SAAS,oBAAoB,CAAC,CAAC,SAAS;CACrF,gBAAgB,YAAY,WAAW,CAAC,UAAU,CAAC,SAAS;CAC5D,qCAAqC,YAAY,WAAW,CAAC,UAAU,CAAC,SAAS;CAGjF,cAAc,YAAY,WAAW,CAAC,SAAS;CAC/C,2BAA2B,YAAY,WAAW,CAAC,UAAU,CAAC,SAAS;CAEvE,qBAAqB,YAAY,SAAS,YAAY,UAAU;EAC9D,gBAAgB,YAAY,WAAW,CAAC,SAAS;EACjD,WAAW,YAAY,WAAW,CAAC,SAAS;EAC5C,kBAAkB,YAAY,WAAW,CAAC,SAAS;EACnD,kBAAkB,YAAY,UAAU,YAAY,WAAW,EAAE,YAAY,WAAW,CAAC,SAAS;EAClG,kBAAkB,YAAY,WAAW,CAAC,SAAS;EACnD,kBAAkB,YAAY,UAAU,YAAY,WAAW,EAAE,YAAY,WAAW,CAAC,SAAS;EACnG,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,SAAS;CAElC,QAAQ,YAAY,WAAW,CAAC,SAAS;CACzC,eAAe,YAAY,WAAW,CAAC,SAAS;CAGhD,WAAW,YAAY,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS;CAC5D,cAAc,YAAY,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS;CAC/D,eAAe,YAAY,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS;CACjE,CAAC,CAAC,SAAS;AAGZ,MAAM,uBAAuB,sBAAsB,OAAO,YAAY,UAAU;CAC9E,6BAA6B,YAAY,WAAW,CAAC,SAAS;CAC9D,oBAAoB,YAAY,WAAW,CAAC,SAAS;CACrD,SAAS,YAAY,WAAW,CAAC,SAAS;CAC1C,MAAM,YAAY,WAAW,CAAC,UAAU,CAAC,SAAS;CAClD,MAAM,YAAY,WAAW,CAAC,UAAU,CAAC,SAAS;CAClD,kBAAkB,YAAY,YAAY,CAAC,SAAS;CACpD,kBAAkB,YAAY,YAAY,CAAC,SAAS;CACpD,0BAA0B,YAAY,WAAW,CAAC,UAAU,CAAC,SAAS;CACtE,cAAc,YAAY,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CAC/D,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,6BAA6B,qBAAqB,OAAO,YAAY,UAAU,EACnF,2BAA2B,YAAY,WAAW,CAAC,SAAS,EAC7D,CAAC,CAAC,SAAS,CAAC;AAGb,MAAM,iCAAiC,2BAA2B,OAAO,YAAY,UAAU;CAC7F,qBAAqB,YAAY,WAAW,CAAC,SAAS;CACtD,eAAe,YAAY,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CAChE,CAAC,CAAC,SAAS,CAAC;AAKb,MAAM,qBAAqB,sBAAsB,OAAO,YAAY,UAAU;CAC5E,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS;CAC3D,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS;CACvE,WAAW,YAAY,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CAC5D,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,wBAAwB,sBAAsB,OAAO,YAAY,UAAU;CAC/E,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS;CAC9D,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS;CACxE,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,wBAAwB,sBAAsB,OAAO,YAAY,UAAU;CAC/E,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS;CAC9D,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS;CACvE,6BAA6B,YAAY,WAAW,CAAC,SAAS;CAC/D,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,0BAA0B,sBAAsB,OAAO,YAAY,UAAU;CACjF,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS;CACjE,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;CACjE,6BAA6B,YAAY,WAAW,CAAC,SAAS;CAC9D,oBAAoB,YAAY,WAAW,CAAC,SAAS;CACrD,cAAc,YAAY,WAAW,CAAC,SAAS;CAChD,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,wBAAwB,qBAAqB,OAAO,YAAY,UAAU;CAC9E,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS;CAC9D,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS;CACvE,cAAc,YAAY,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CAC/D,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,qBAAqB,qBAAqB,OAAO,YAAY,UAAU;CAC3E,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS;CAC3D,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS;CACvE,cAAc,YAAY,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CAC/D,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,sBAAsB,2BAA2B,OAAO,YAAY,UAAU;CAClF,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS;CAC5D,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS;CACxE,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,0BAA0B,2BAA2B,OAAO,YAAY,UAAU;CACtF,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS;CACjE,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;CACjE,iBAAiB,YAAY,WAAW,CAAC,SAAS;CAClD,cAAc,YAAY,WAAW,CAAC,SAAS;CAChD,CAAC,CAAC,SAAS,CAAC;AAKb,MAAM,sBAAsB,sBAAsB,OAAO,YAAY,UAAU;CAC7E,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS;CAC5D,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CAC9D,mBAAmB,YAAY,WAAW,CAAC,SAAS;CACpD,gBAAgB,YAAY,WAAW,CAAC,SAAS;CACjD,iBAAiB,YAAY,UAAU,YAAY,WAAW,EAAE,YAAY,WAAW,CAAC,SAAS;CAEjG,cAAc,YAAY,YAAY,CAAC,SAAS;CAEhD,6BAA6B,YAAY,WAAW,CAAC,UAAU;CAC/D,oBAAoB,YAAY,WAAW,CAAC,UAAU;CACtD,SAAS,YAAY,WAAW,CAAC,UAAU;CAC3C,MAAM,YAAY,WAAW,CAAC,UAAU,CAAC,UAAU;CACnD,MAAM,YAAY,WAAW,CAAC,UAAU,CAAC,UAAU;CACnD,kBAAkB,YAAY,YAAY,CAAC,UAAU;CACrD,kBAAkB,YAAY,YAAY,CAAC,UAAU;CACrD,0BAA0B,YAAY,WAAW,CAAC,UAAU,CAAC,UAAU;CACvE,2BAA2B,YAAY,WAAW,CAAC,UAAU;CAC9D,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,sBAAsB,2BAA2B,OAAO,YAAY,UAAU;CAClF,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS;CAC5D,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;CACjE,mBAAmB,YAAY,WAAW,CAAC,SAAS;CACrD,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,8BAA8B,2BAA2B,OAAO,YAAY,UAAU;CAC1F,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,SAAS;CACrE,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CAC9D,4BAA4B,YAAY,WAAW,CAAC,SAAS;CAC9D,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,mBAAmB,+BAA+B,OAAO,YAAY,UAAU;CACnF,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS;CACzD,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CAE9D,wBAAwB,YAAY,YAAY,CAAC,SAAS;CAC3D,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,qBAAqB,+BAA+B,OAAO,YAAY,UAAU;CACrF,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS;CAC3D,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CAC9D,kBAAkB,YAAY,WAAW,CAAC,SAAS;CACnD,wBAAwB,YAAY,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CACzE,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,sBAAsB,+BAA+B,OAAO,YAAY,UAAU;CACtF,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS;CAC5D,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CAC9D,mBAAmB,YAAY,WAAW,CAAC,SAAS;CACpD,wBAAwB,YAAY,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CACzE,CAAC,CAAC,SAAS,CAAC;AAEb,MAAM,2BAA2B,+BAA+B,OAAO,YAAY,UAAU;CAC3F,QAAQ,YAAY,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,SAAS;CACnE,eAAe,YAAY,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CAC9D,0BAA0B,YAAY,WAAW,CAAC,SAAS;CAC3D,wBAAwB,YAAY,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS;CACzE,CAAC,CAAC,SAAS,CAAC;AAGb,MAAa,wBAAwB,YAAY,SAC/C,oBACA,uBACA,uBACA,yBACA,uBACA,oBACA,qBACA,yBACA,qBACA,qBACA,6BACA,kBACA,oBACA,qBACA,yBACD;AAGD,MAAa,0BAA0B,YAAY,UAAU;CAC3D,YAAY,YAAY,WAAW,CAAC,UAAU;CAC9C,UAAU,YAAY,WAAW,CAAC,UAAU,CAAC,UAAU;CACvD,IAAI,gBAAgB,UAAU;CAC9B,WAAW,YAAY,UAAU,YAAY,WAAW,EAAE,YAAY,WAAW,CAAC,UAAU;CAC5F,2BAA2B,YAAY,YAAY,CAAC,UAAU;CAC9D,qBAAqB,YAAY,WAAW,CAAC,UAAU;CACvD,WAAW,YAAY,YAAY,CAAC,UAAU;CAC9C,QAAQ,YAAY,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU;CAC1D,CAAC,CAAC,SAAS;AAEZ,MAAa,kBAAkB,WAAW;CACxC,kBAAkB;CAClB,oBAAoB;CACpB,MAAM;EACJ,YAAY;GACV,MAAM,CAAC,SAAS;GAChB,SAAS;GACT,aAAa;GACd;EACD,cAAc;GACZ,MAAM,CAAC,SAAS;GAChB,SAAS;GACT,aAAa;GACd;EACD,YAAY;GACV,MAAM,CAAC,SAAS;GAChB,SAAS;GACT,aAAa;GACd;EACF;CACF,CAAC"}
|
|
1
|
+
{"version":3,"file":"email-outbox.js","names":[],"sources":["../../../../src/interface/crud/email-outbox.ts"],"sourcesContent":["import { CrudTypeOf, createCrud } from \"../../crud\";\nimport * as fieldSchema from \"../../schema-fields\";\n\n\n// Recipient types\nconst recipientUserPrimaryEmailSchema = fieldSchema.yupObject({\n type: fieldSchema.yupString().oneOf([\"user-primary-email\"]).defined(),\n user_id: fieldSchema.yupString().defined(),\n}).defined();\n\nconst recipientUserCustomEmailsSchema = fieldSchema.yupObject({\n type: fieldSchema.yupString().oneOf([\"user-custom-emails\"]).defined(),\n user_id: fieldSchema.yupString().defined(),\n emails: fieldSchema.yupArray(fieldSchema.yupString().defined()).defined(),\n}).defined();\n\nconst recipientCustomEmailsSchema = fieldSchema.yupObject({\n type: fieldSchema.yupString().oneOf([\"custom-emails\"]).defined(),\n emails: fieldSchema.yupArray(fieldSchema.yupString().defined()).defined(),\n}).defined();\n\nconst recipientSchema = fieldSchema.yupUnion(\n recipientUserPrimaryEmailSchema,\n recipientUserCustomEmailsSchema,\n recipientCustomEmailsSchema\n);\n\n\n// =============================== BASE FIELDS ===============================\n\n// Base fields present on all emails\nconst emailOutboxBaseSchema = fieldSchema.yupObject({\n id: fieldSchema.yupString().defined(),\n created_at_millis: fieldSchema.yupNumber().defined(),\n updated_at_millis: fieldSchema.yupNumber().defined(),\n tsx_source: fieldSchema.yupString().defined(),\n theme_id: fieldSchema.yupString().nullable().defined(),\n to: recipientSchema.defined(),\n variables: fieldSchema.yupRecord(fieldSchema.yupString(), fieldSchema.jsonSchema).defined(),\n skip_deliverability_check: fieldSchema.yupBoolean().defined(),\n scheduled_at_millis: fieldSchema.yupNumber().defined(),\n\n\n // Source tracking for grouping emails by template/draft\n created_with: fieldSchema.yupString().oneOf([\"draft\", \"programmatic-call\"]).defined(),\n email_draft_id: fieldSchema.yupString().nullable().defined(),\n email_programmatic_call_template_id: fieldSchema.yupString().nullable().defined(),\n\n // Retry-related fields (for debugging/testing deferred retry logic)\n send_retries: fieldSchema.yupNumber().defined(),\n next_send_retry_at_millis: fieldSchema.yupNumber().nullable().defined(),\n // Array of errors from each failed send attempt, each with internal/external messages\n send_attempt_errors: fieldSchema.yupArray(fieldSchema.yupObject({\n attempt_number: fieldSchema.yupNumber().defined(),\n timestamp: fieldSchema.yupString().defined(),\n external_message: fieldSchema.yupString().defined(),\n external_details: fieldSchema.yupRecord(fieldSchema.yupString(), fieldSchema.jsonSchema).defined(),\n internal_message: fieldSchema.yupString().defined(),\n internal_details: fieldSchema.yupRecord(fieldSchema.yupString(), fieldSchema.jsonSchema).defined(),\n }).defined()).nullable().defined(),\n\n status: fieldSchema.yupString().defined(),\n simple_status: fieldSchema.yupString().defined(),\n\n // These fields are overridden because we use concat to build the final schema for each state\n is_paused: fieldSchema.yupBoolean().oneOf([false]).defined(),\n has_rendered: fieldSchema.yupBoolean().oneOf([false]).defined(),\n has_delivered: fieldSchema.yupBoolean().oneOf([false]).defined(),\n}).defined();\n\n// Rendered output fields\nconst renderedFieldsSchema = emailOutboxBaseSchema.concat(fieldSchema.yupObject({\n started_rendering_at_millis: fieldSchema.yupNumber().defined(),\n rendered_at_millis: fieldSchema.yupNumber().defined(),\n subject: fieldSchema.yupString().defined(),\n html: fieldSchema.yupString().nullable().defined(),\n text: fieldSchema.yupString().nullable().defined(),\n is_transactional: fieldSchema.yupBoolean().defined(),\n is_high_priority: fieldSchema.yupBoolean().defined(),\n notification_category_id: fieldSchema.yupString().nullable().defined(),\n has_rendered: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\nconst startedSendingFieldsSchema = renderedFieldsSchema.concat(fieldSchema.yupObject({\n started_sending_at_millis: fieldSchema.yupNumber().defined(),\n}).defined());\n\n// Finished delivering tracking fields\nconst finishedDeliveringFieldsSchema = startedSendingFieldsSchema.concat(fieldSchema.yupObject({\n delivered_at_millis: fieldSchema.yupNumber().defined(),\n has_delivered: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\n\n// =============================== STATUS-SPECIFIC SCHEMAS ===============================\n\nconst pausedStatusSchema = emailOutboxBaseSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"paused\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"in-progress\"]).defined(),\n is_paused: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\nconst preparingStatusSchema = emailOutboxBaseSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"preparing\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"in-progress\"]).defined(),\n}).defined());\n\nconst renderingStatusSchema = emailOutboxBaseSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"rendering\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"in-progress\"]).defined(),\n started_rendering_at_millis: fieldSchema.yupNumber().defined(),\n}).defined());\n\nconst renderErrorStatusSchema = emailOutboxBaseSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"render-error\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"error\"]).defined(),\n started_rendering_at_millis: fieldSchema.yupNumber().defined(),\n rendered_at_millis: fieldSchema.yupNumber().defined(),\n render_error: fieldSchema.yupString().defined(),\n}).defined());\n\nconst scheduledStatusSchema = renderedFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"scheduled\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"in-progress\"]).defined(),\n has_rendered: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\nconst queuedStatusSchema = renderedFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"queued\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"in-progress\"]).defined(),\n has_rendered: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\nconst sendingStatusSchema = startedSendingFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"sending\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"in-progress\"]).defined(),\n}).defined());\n\nconst serverErrorStatusSchema = startedSendingFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"server-error\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"error\"]).defined(),\n error_at_millis: fieldSchema.yupNumber().defined(),\n server_error: fieldSchema.yupString().defined(),\n}).defined());\n\n// SKIPPED can happen at any time in the lifecycle (like PAUSED)\n// An email can be skipped before rendering (has_rendered: false) or after rendering (has_rendered: true)\n// e.g., user deleted after the email was rendered but before it was sent\nconst skippedStatusSchema = emailOutboxBaseSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"skipped\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"ok\"]).defined(),\n skipped_at_millis: fieldSchema.yupNumber().defined(),\n skipped_reason: fieldSchema.yupString().defined(),\n skipped_details: fieldSchema.yupRecord(fieldSchema.yupString(), fieldSchema.jsonSchema).defined(),\n // Override has_rendered to allow both true and false since email can be skipped at any time\n has_rendered: fieldSchema.yupBoolean().defined(),\n // These fields may or may not be present depending on when the email was skipped\n started_rendering_at_millis: fieldSchema.yupNumber().optional(),\n rendered_at_millis: fieldSchema.yupNumber().optional(),\n subject: fieldSchema.yupString().optional(),\n html: fieldSchema.yupString().nullable().optional(),\n text: fieldSchema.yupString().nullable().optional(),\n is_transactional: fieldSchema.yupBoolean().optional(),\n is_high_priority: fieldSchema.yupBoolean().optional(),\n notification_category_id: fieldSchema.yupString().nullable().optional(),\n started_sending_at_millis: fieldSchema.yupNumber().optional(),\n}).defined());\n\nconst bouncedStatusSchema = startedSendingFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"bounced\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"error\"]).defined(),\n bounced_at_millis: fieldSchema.yupNumber().defined(),\n}).defined());\n\nconst deliveryDelayedStatusSchema = startedSendingFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"delivery-delayed\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"ok\"]).defined(),\n delivery_delayed_at_millis: fieldSchema.yupNumber().defined(),\n}).defined());\n\nconst sentStatusSchema = finishedDeliveringFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"sent\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"ok\"]).defined(),\n // Whether this email's provider supports delivery tracking (opens, clicks, etc.)\n can_have_delivery_info: fieldSchema.yupBoolean().defined(),\n}).defined());\n\nconst openedStatusSchema = finishedDeliveringFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"opened\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"ok\"]).defined(),\n opened_at_millis: fieldSchema.yupNumber().defined(),\n can_have_delivery_info: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\nconst clickedStatusSchema = finishedDeliveringFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"clicked\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"ok\"]).defined(),\n clicked_at_millis: fieldSchema.yupNumber().defined(),\n can_have_delivery_info: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\nconst markedAsSpamStatusSchema = finishedDeliveringFieldsSchema.concat(fieldSchema.yupObject({\n status: fieldSchema.yupString().oneOf([\"marked-as-spam\"]).defined(),\n simple_status: fieldSchema.yupString().oneOf([\"ok\"]).defined(),\n marked_as_spam_at_millis: fieldSchema.yupNumber().defined(),\n can_have_delivery_info: fieldSchema.yupBoolean().oneOf([true]).defined(),\n}).defined());\n\n// Combined read schema using union\nexport const emailOutboxReadSchema = fieldSchema.yupUnion(\n pausedStatusSchema,\n preparingStatusSchema,\n renderingStatusSchema,\n renderErrorStatusSchema,\n scheduledStatusSchema,\n queuedStatusSchema,\n sendingStatusSchema,\n serverErrorStatusSchema,\n skippedStatusSchema,\n bouncedStatusSchema,\n deliveryDelayedStatusSchema,\n sentStatusSchema,\n openedStatusSchema,\n clickedStatusSchema,\n markedAsSpamStatusSchema\n);\n\n// Update schema for PATCH endpoint\nexport const emailOutboxUpdateSchema = fieldSchema.yupObject({\n tsx_source: fieldSchema.yupString().optional(),\n theme_id: fieldSchema.yupString().nullable().optional(),\n to: recipientSchema.optional(),\n variables: fieldSchema.yupRecord(fieldSchema.yupString(), fieldSchema.jsonSchema).optional(),\n skip_deliverability_check: fieldSchema.yupBoolean().optional(),\n scheduled_at_millis: fieldSchema.yupNumber().optional(),\n is_paused: fieldSchema.yupBoolean().optional(),\n cancel: fieldSchema.yupBoolean().oneOf([true]).optional(),\n}).defined();\n\nexport const emailOutboxCrud = createCrud({\n serverReadSchema: emailOutboxReadSchema,\n serverUpdateSchema: emailOutboxUpdateSchema,\n docs: {\n serverRead: {\n tags: [\"Emails\"],\n summary: \"Get email outbox entry\",\n description: \"Gets a single email from the outbox by ID.\",\n },\n serverUpdate: {\n tags: [\"Emails\"],\n summary: \"Update email outbox entry\",\n description: \"Updates an email in the outbox. Can be used to edit email content, pause/resume, or cancel emails. Only emails in editable states (`paused`, `preparing`, `rendering`, `render-error`, `scheduled`, `queued`, `server-error`) can be modified.\",\n },\n serverList: {\n tags: [\"Emails\"],\n summary: \"List email outbox\",\n description: \"Lists all emails in the outbox with optional filtering by status, simple_status, or user_id.\",\n },\n },\n});\n\nexport type EmailOutboxCrud = CrudTypeOf<typeof emailOutboxCrud>;\n\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { HexclaveAssertionError } from "../utils/errors.js";
|
|
2
2
|
import { filterUndefined } from "../utils/objects.js";
|
|
3
3
|
import { Result } from "../utils/results.js";
|
|
4
|
-
import { urlString } from "../utils/urls.js";
|
|
5
4
|
import { KnownErrors } from "../known-errors.js";
|
|
5
|
+
import { urlString } from "../utils/urls.js";
|
|
6
6
|
import { InternalSession } from "../sessions.js";
|
|
7
7
|
import { HexclaveClientInterface } from "./client-interface.js";
|
|
8
8
|
import { decryptValue, encryptValue, hashKey } from "../helpers/vault/client-side.js";
|
|
@@ -323,6 +323,7 @@ declare class HexclaveAdminInterface extends HexclaveServerInterface {
|
|
|
323
323
|
listOutboxEmails(options?: {
|
|
324
324
|
status?: string;
|
|
325
325
|
simple_status?: string;
|
|
326
|
+
user_id?: string;
|
|
326
327
|
limit?: number;
|
|
327
328
|
cursor?: string;
|
|
328
329
|
}): Promise<EmailOutboxCrud["Server"]["List"]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-interface.d.ts","names":[],"sources":["../../src/interface/admin-interface.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"admin-interface.d.ts","names":[],"sources":["../../src/interface/admin-interface.ts"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
const require_chunk = require('../chunk-BE-pF4vm.js');
|
|
3
3
|
let ___utils_results_js = require("../utils/results.js");
|
|
4
|
-
let ___utils_urls_js = require("../utils/urls.js");
|
|
5
4
|
let ___known_errors_js = require("../known-errors.js");
|
|
5
|
+
let ___utils_urls_js = require("../utils/urls.js");
|
|
6
6
|
let __server_interface_js = require("./server-interface.js");
|
|
7
7
|
|
|
8
8
|
//#region src/interface/admin-interface.ts
|
|
@@ -488,6 +488,7 @@ var HexclaveAdminInterface = class extends __server_interface_js.HexclaveServerI
|
|
|
488
488
|
const qs = new URLSearchParams();
|
|
489
489
|
if (options?.status) qs.set("status", options.status);
|
|
490
490
|
if (options?.simple_status) qs.set("simple_status", options.simple_status);
|
|
491
|
+
if (options?.user_id) qs.set("user_id", options.user_id);
|
|
491
492
|
if (options?.limit !== void 0) qs.set("limit", options.limit.toString());
|
|
492
493
|
if (options?.cursor) qs.set("cursor", options.cursor);
|
|
493
494
|
return await (await this.sendServerRequest(`/emails/outbox${qs.size ? `?${qs.toString()}` : ""}`, { method: "GET" }, null)).json();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-interface.js","names":["HexclaveServerInterface","Result","KnownErrors"],"sources":["../../src/interface/admin-interface.ts"],"sourcesContent":["import * as yup from \"yup\";\nimport { KnownErrors } from \"../known-errors\";\nimport { branchConfigSourceSchema, type RestrictedReason } from \"../schema-fields\";\nimport { AccessToken, InternalSession, RefreshToken } from \"../sessions\";\nimport type { MoneyAmount } from \"../utils/currency-constants\";\nimport type { Json } from \"../utils/json\";\nimport { Result } from \"../utils/results\";\nimport { urlString } from \"../utils/urls\";\nimport type { AnalyticsClickmapDevice, AnalyticsClickmapKind, AnalyticsClickmapResponse, AnalyticsClickmapTokenResponse, MetricsResponse, MetricsUserCounts, UserActivityResponse } from \"./admin-metrics\";\nimport type { AnalyticsQueryOptions, AnalyticsQueryResponse } from \"./crud/analytics\";\nimport { EmailOutboxCrud } from \"./crud/email-outbox\";\nimport { InternalEmailsCrud } from \"./crud/emails\";\nimport { InternalApiKeysCrud } from \"./crud/internal-api-keys\";\nimport { ProjectPermissionDefinitionsCrud } from \"./crud/project-permissions\";\nimport { ProjectsCrud } from \"./crud/projects\";\nimport type {\n AdminGetSessionReplayResponse,\n AdminGetSessionReplayAllEventsResponse,\n AdminGetSessionReplayChunkEventsResponse,\n AdminListSessionReplayChunksOptions,\n AdminListSessionReplayChunksResponse,\n AdminListSessionReplaysOptions,\n AdminListSessionReplaysResponse\n} from \"./crud/session-replays\";\nimport { SvixTokenCrud } from \"./crud/svix-token\";\nimport { TeamPermissionDefinitionsCrud } from \"./crud/team-permissions\";\nimport type { Transaction, TransactionType } from \"./crud/transactions\";\nimport { ServerAuthApplicationOptions, HexclaveServerInterface } from \"./server-interface\";\n\ntype BranchConfigSourceApi = yup.InferType<typeof branchConfigSourceSchema>;\n\nexport type ChatContent = Array<\n | { type: \"text\", text: string }\n | { type: \"tool-call\", toolName: string, toolCallId: string, args: any, argsText: string, result: any }\n>;\n\nexport type AdminAuthApplicationOptions = ServerAuthApplicationOptions &(\n | {\n superSecretAdminKey: string,\n }\n | {\n projectOwnerSession: InternalSession | (() => Promise<string | null>),\n }\n);\n\nexport type InternalApiKeyCreateCrudRequest = {\n has_publishable_client_key: boolean,\n has_secret_server_key: boolean,\n has_super_secret_admin_key: boolean,\n expires_at_millis: number,\n description: string,\n};\n\nexport type InternalApiKeyCreateCrudResponse = InternalApiKeysCrud[\"Admin\"][\"Read\"] & {\n publishable_client_key?: string,\n secret_server_key?: string,\n super_secret_admin_key?: string,\n};\n\n\nexport class HexclaveAdminInterface extends HexclaveServerInterface {\n constructor(public readonly options: AdminAuthApplicationOptions) {\n super(options);\n }\n\n public async sendAdminRequest(path: string, options: RequestInit, session: InternalSession | null, requestType: \"admin\" = \"admin\") {\n return await this.sendServerRequest(\n path,\n {\n ...options,\n headers: {\n // Hexclave rebrand: emit x-hexclave-* request header; the backend proxy dual-accepts both names.\n \"x-hexclave-super-secret-admin-key\": \"superSecretAdminKey\" in this.options ? this.options.superSecretAdminKey : \"\",\n ...options.headers,\n },\n },\n session,\n requestType,\n );\n }\n\n protected async sendAdminRequestAndCatchKnownError<E extends typeof KnownErrors[keyof KnownErrors]>(\n path: string,\n requestOptions: RequestInit,\n tokenStoreOrNull: InternalSession | null,\n errorsToCatch: readonly E[],\n ): Promise<Result<\n Response & {\n usedTokens: {\n accessToken: AccessToken,\n refreshToken: RefreshToken | null,\n } | null,\n },\n InstanceType<E>\n >> {\n try {\n return Result.ok(await this.sendAdminRequest(path, requestOptions, tokenStoreOrNull));\n } catch (e) {\n for (const errorType of errorsToCatch) {\n if (errorType.isInstance(e)) {\n return Result.error(e as InstanceType<E>);\n }\n }\n throw e;\n }\n }\n\n async getProject(): Promise<ProjectsCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n \"/internal/projects/current\",\n {\n method: \"GET\",\n },\n null,\n );\n return await response.json();\n }\n\n async updateProject(update: ProjectsCrud[\"Admin\"][\"Update\"]): Promise<ProjectsCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n \"/internal/projects/current\",\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(update),\n },\n null,\n );\n return await response.json();\n }\n\n async createInternalApiKey(\n options: InternalApiKeyCreateCrudRequest,\n ): Promise<InternalApiKeyCreateCrudResponse> {\n const response = await this.sendAdminRequest(\n \"/internal/api-keys\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(options),\n },\n null,\n );\n return await response.json();\n }\n\n async listInternalApiKeys(): Promise<InternalApiKeysCrud[\"Admin\"][\"Read\"][]> {\n const response = await this.sendAdminRequest(\"/internal/api-keys\", {}, null);\n const result = await response.json() as InternalApiKeysCrud[\"Admin\"][\"List\"];\n return result.items;\n }\n\n async revokeInternalApiKeyById(id: string) {\n await this.sendAdminRequest(\n `/internal/api-keys/${id}`, {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n revoked: true,\n }),\n },\n null,\n );\n }\n\n async getInternalApiKey(id: string, session: InternalSession): Promise<InternalApiKeysCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(`/internal/api-keys/${id}`, {}, session);\n return await response.json();\n }\n\n async listInternalEmailTemplates(): Promise<{ id: string, display_name: string, theme_id?: string, tsx_source: string }[]> {\n const response = await this.sendAdminRequest(`/internal/email-templates`, {}, null);\n const result = await response.json() as { templates: { id: string, display_name: string, theme_id?: string, tsx_source: string }[] };\n return result.templates;\n }\n\n async listInternalEmailDrafts(): Promise<{ id: string, display_name: string, theme_id?: string | undefined | false, tsx_source: string, sent_at_millis?: number | null }[]> {\n const response = await this.sendAdminRequest(`/internal/email-drafts`, {}, null);\n const result = await response.json() as { drafts: { id: string, display_name: string, theme_id?: string | undefined | false, tsx_source: string, sent_at_millis?: number | null }[] };\n return result.drafts;\n }\n\n async createEmailDraft(options: { display_name?: string, theme_id?: string | false, tsx_source?: string }): Promise<{ id: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-drafts`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(options),\n },\n null,\n );\n return await response.json();\n }\n\n async updateEmailDraft(id: string, data: { display_name?: string, theme_id?: string | null | false, tsx_source?: string, sent_at_millis?: number | null }): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-drafts/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n }\n\n async deleteEmailDraft(id: string): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-drafts/${id}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async listEmailThemes(): Promise<{ id: string, display_name: string }[]> {\n const response = await this.sendAdminRequest(`/internal/email-themes`, {}, null);\n const result = await response.json() as { themes: { id: string, display_name: string }[] };\n return result.themes;\n }\n\n\n // Team permission definitions methods\n async listTeamPermissionDefinitions(): Promise<TeamPermissionDefinitionsCrud['Admin']['Read'][]> {\n const response = await this.sendAdminRequest(`/team-permission-definitions`, {}, null);\n const result = await response.json() as TeamPermissionDefinitionsCrud['Admin']['List'];\n return result.items;\n }\n\n async listTeamPermissionDefinitionsPaginated(\n options: { limit: number, cursor?: string, query?: string },\n ): Promise<{ items: TeamPermissionDefinitionsCrud['Admin']['Read'][], nextCursor: string | null }> {\n const params = new URLSearchParams();\n params.set(\"limit\", String(options.limit));\n if (options.cursor) params.set(\"cursor\", options.cursor);\n if (options.query) params.set(\"query\", options.query);\n const response = await this.sendAdminRequest(`/team-permission-definitions?${params.toString()}`, {}, null);\n const result = await response.json() as TeamPermissionDefinitionsCrud['Admin']['List'];\n return {\n items: result.items,\n nextCursor: result.pagination?.next_cursor ?? null,\n };\n }\n\n async createTeamPermissionDefinition(data: TeamPermissionDefinitionsCrud['Admin']['Create']): Promise<TeamPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n \"/team-permission-definitions\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async updateTeamPermissionDefinition(permissionId: string, data: TeamPermissionDefinitionsCrud['Admin']['Update']): Promise<TeamPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n `/team-permission-definitions/${permissionId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteTeamPermissionDefinition(permissionId: string): Promise<void> {\n await this.sendAdminRequest(\n `/team-permission-definitions/${permissionId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async listProjectPermissionDefinitions(): Promise<ProjectPermissionDefinitionsCrud['Admin']['Read'][]> {\n const response = await this.sendAdminRequest(`/project-permission-definitions`, {}, null);\n const result = await response.json() as ProjectPermissionDefinitionsCrud['Admin']['List'];\n return result.items;\n }\n\n async createProjectPermissionDefinition(data: ProjectPermissionDefinitionsCrud['Admin']['Create']): Promise<ProjectPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n \"/project-permission-definitions\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async updateProjectPermissionDefinition(permissionId: string, data: ProjectPermissionDefinitionsCrud['Admin']['Update']): Promise<ProjectPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n `/project-permission-definitions/${permissionId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteProjectPermissionDefinition(permissionId: string): Promise<void> {\n await this.sendAdminRequest(\n `/project-permission-definitions/${permissionId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async getSvixToken(): Promise<SvixTokenCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n \"/webhooks/svix-token\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteProject(): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/projects/current\",\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async getMetrics(\n includeAnonymous: boolean = false,\n filters?: {\n country_code?: string,\n referrer?: string,\n browser?: string,\n os?: string,\n device?: string,\n since?: string,\n until?: string,\n },\n ): Promise<MetricsResponse> {\n const params = new URLSearchParams();\n if (includeAnonymous) {\n params.append('include_anonymous', 'true');\n }\n if (filters?.country_code) params.append('filter_country_code', filters.country_code);\n if (filters?.referrer) params.append('filter_referrer', filters.referrer);\n if (filters?.browser) params.append('filter_browser', filters.browser);\n if (filters?.os) params.append('filter_os', filters.os);\n if (filters?.device) params.append('filter_device', filters.device);\n if (filters?.since) params.append('filter_since', filters.since);\n if (filters?.until) params.append('filter_until', filters.until);\n const queryString = params.toString();\n const response = await this.sendAdminRequest(\n `/internal/metrics${queryString ? `?${queryString}` : ''}`,\n {\n method: \"GET\",\n },\n null,\n );\n const body = (await response.json()) as MetricsResponse;\n // The yup schema's .optional().default(...) fallbacks only run during\n // backend response validation, not on this client-side cast — apply them\n // here too so the one-release-cycle tolerance for older servers that the\n // schema comments promise actually holds for dashboard consumers. The\n // Partial views widen the static type (which claims these are always\n // defined) to match what an older server can actually send.\n const rawBody: Partial<MetricsResponse> = body;\n const rawAnalytics: Partial<MetricsResponse[\"analytics_overview\"]> = body.analytics_overview;\n return {\n ...body,\n live_users: rawBody.live_users ?? 0,\n hourly_users: rawBody.hourly_users ?? [],\n hourly_active_users: rawBody.hourly_active_users ?? [],\n analytics_overview: {\n ...body.analytics_overview,\n hourly_page_views: rawAnalytics.hourly_page_views ?? [],\n hourly_active_users: rawAnalytics.hourly_active_users ?? [],\n hourly_visitors: rawAnalytics.hourly_visitors ?? [],\n daily_anonymous_visitors_fallback: rawAnalytics.daily_anonymous_visitors_fallback ?? [],\n anonymous_visitors_fallback: rawAnalytics.anonymous_visitors_fallback ?? 0,\n top_regions: rawAnalytics.top_regions ?? [],\n bounce_rate: rawAnalytics.bounce_rate ?? 0,\n daily_bounce_rate: rawAnalytics.daily_bounce_rate ?? [],\n daily_avg_session_seconds: rawAnalytics.daily_avg_session_seconds ?? [],\n top_browsers: rawAnalytics.top_browsers ?? [],\n top_operating_systems: rawAnalytics.top_operating_systems ?? [],\n top_devices: rawAnalytics.top_devices ?? [],\n },\n };\n }\n\n async getUserActivity(userId: string): Promise<UserActivityResponse> {\n const response = await this.sendAdminRequest(\n urlString`/internal/user-activity?user_id=${userId}`,\n {\n method: \"GET\",\n },\n null,\n );\n return (await response.json()) as UserActivityResponse;\n }\n\n async getAnalyticsClickmap(options: {\n kind: AnalyticsClickmapKind,\n member_user_ids?: string[],\n route_path?: string,\n route_regex?: string,\n url_pattern?: string,\n user_id?: string,\n replay_id?: string,\n device?: AnalyticsClickmapDevice,\n viewport_width_min?: number,\n viewport_width_max?: number,\n sampling?: number,\n since: string,\n until: string,\n }): Promise<AnalyticsClickmapResponse> {\n const response = await this.sendAdminRequest(\n \"/internal/analytics/clickmap\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(options),\n },\n null,\n );\n return (await response.json()) as AnalyticsClickmapResponse;\n }\n\n async createAnalyticsClickmapToken(options: {\n origin: string,\n }): Promise<AnalyticsClickmapTokenResponse> {\n const response = await this.sendAdminRequest(\n \"/internal/analytics/clickmap-token\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(options),\n },\n null,\n );\n return (await response.json()) as AnalyticsClickmapTokenResponse;\n }\n\n async getMetricsUserCounts(): Promise<MetricsUserCounts> {\n const response = await this.sendAdminRequest(\n \"/internal/metrics/user-counts\",\n {\n method: \"GET\",\n },\n null,\n );\n return (await response.json()) as MetricsUserCounts;\n }\n\n async sendTestEmail(data: {\n recipient_email: string,\n email_config: {\n host: string,\n port: number,\n username: string,\n password: string,\n sender_email: string,\n sender_name: string,\n },\n }): Promise<{ success: boolean, error_message?: string }> {\n const response = await this.sendAdminRequest(`/internal/send-test-email`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async sendTestWebhook(data: {\n endpoint_id: string,\n }): Promise<{ success: boolean, error_message?: string }> {\n const response = await this.sendAdminRequest(`/internal/send-test-webhook`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async listSentEmails(): Promise<InternalEmailsCrud[\"Admin\"][\"List\"]> {\n const response = await this.sendAdminRequest(\"/internal/emails\", {\n method: \"GET\",\n }, null);\n return await response.json();\n }\n\n async setupManagedEmailProvider(data: {\n subdomain: string,\n sender_local_part: string,\n }): Promise<{\n domain_id: string,\n subdomain: string,\n sender_local_part: string,\n name_server_records: string[],\n status: \"pending_dns\" | \"pending_verification\" | \"verified\" | \"applied\" | \"failed\",\n }> {\n const response = await this.sendAdminRequest(\"/internal/emails/managed-onboarding/setup\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async checkManagedEmailStatus(data: {\n domain_id: string,\n subdomain: string,\n sender_local_part: string,\n }): Promise<{ status: \"pending_dns\" | \"pending_verification\" | \"verified\" | \"applied\" | \"failed\" }> {\n const response = await this.sendAdminRequest(\"/internal/emails/managed-onboarding/check\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async listManagedEmailDomains(): Promise<{\n items: Array<{\n domain_id: string,\n subdomain: string,\n sender_local_part: string,\n status: \"pending_dns\" | \"pending_verification\" | \"verified\" | \"applied\" | \"failed\",\n name_server_records: string[],\n }>,\n }> {\n const response = await this.sendAdminRequest(\"/internal/emails/managed-onboarding/list\", {\n method: \"GET\",\n }, null);\n return await response.json();\n }\n\n async deleteManagedEmailDomain(data: {\n resend_domain_id: string,\n }): Promise<{ status: \"deleted\" }> {\n const response = await this.sendAdminRequest(\"/internal/emails/managed-onboarding/delete\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async applyManagedEmailProvider(data: {\n domain_id: string,\n }): Promise<{ status: \"applied\" }> {\n const response = await this.sendAdminRequest(\"/internal/emails/managed-onboarding/apply\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async sendSignInInvitationEmail(\n email: string,\n callbackUrl: string,\n ): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/send-sign-in-invitation\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n callback_url: callbackUrl,\n }),\n },\n null,\n );\n }\n\n async saveChatMessage(threadId: string, message: any): Promise<void> {\n await this.sendAdminRequest(\n `/internal/ai-chat/${threadId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ message }),\n },\n null,\n );\n }\n\n async listChatMessages(threadId: string): Promise<{ messages: Array<any> }> {\n const response = await this.sendAdminRequest(\n `/internal/ai-chat/${threadId}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async renderEmailPreview(options: {\n themeId?: string | null | false,\n themeTsxSource?: string,\n templateId?: string,\n templateTsxSource?: string,\n editableMarkers?: boolean,\n editableSource?: 'template' | 'theme' | 'both',\n }): Promise<{ html: string, editable_regions?: Record<string, unknown> }> {\n const response = await this.sendAdminRequest(`/emails/render-email`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n theme_id: options.themeId,\n theme_tsx_source: options.themeTsxSource,\n template_id: options.templateId,\n template_tsx_source: options.templateTsxSource,\n editable_markers: options.editableMarkers,\n editable_source: options.editableSource,\n }),\n }, null);\n return await response.json();\n }\n\n async rewriteTemplateSourceWithAI(templateTsxSource: string): Promise<{ tsx_source: string }> {\n const response = await this.sendAdminRequest(`/internal/rewrite-template-source`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n template_tsx_source: templateTsxSource,\n }),\n }, null);\n return await response.json();\n }\n\n async createEmailTheme(displayName: string): Promise<{ id: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-themes`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n display_name: displayName,\n }),\n },\n null,\n );\n return await response.json();\n }\n\n async getEmailTheme(id: string): Promise<{ display_name: string, tsx_source: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-themes/${id}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async updateEmailTheme(id: string, tsxSource: string): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-themes/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n tsx_source: tsxSource,\n }),\n },\n null,\n );\n }\n\n async deleteEmailTheme(id: string): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-themes/${id}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async updateEmailTemplate(id: string, tsxSource: string, themeId: string | null | false): Promise<{ rendered_html: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-templates/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ tsx_source: tsxSource, theme_id: themeId }),\n },\n null,\n );\n return await response.json();\n }\n\n async getConfig(): Promise<{ config_string: string }> {\n const response = await this.sendAdminRequest(\n `/internal/config`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async getConfigOverride(level: \"project\" | \"branch\" | \"environment\"): Promise<{ config_string: string }> {\n const response = await this.sendAdminRequest(\n `/internal/config/override/${level}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async setConfigOverride(level: \"project\" | \"branch\" | \"environment\", configOverride: any, source?: BranchConfigSourceApi): Promise<void> {\n await this.sendAdminRequest(\n `/internal/config/override/${level}`,\n {\n method: \"PUT\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n config_string: JSON.stringify(configOverride),\n ...(source && { source }),\n }),\n },\n null,\n );\n }\n\n async updateConfigOverride(level: \"project\" | \"branch\" | \"environment\", configOverrideOverride: any): Promise<void> {\n await this.sendAdminRequest(\n `/internal/config/override/${level}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ config_override_string: JSON.stringify(configOverrideOverride) }),\n },\n null,\n );\n }\n\n async getPushedConfigSource(): Promise<BranchConfigSourceApi> {\n const response = await this.sendAdminRequest(\n `/internal/config/source`,\n { method: \"GET\" },\n null,\n );\n const data = await response.json();\n return data.source;\n }\n\n async unlinkPushedConfigSource(): Promise<void> {\n await this.sendAdminRequest(\n `/internal/config/source`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async resetConfigOverrideKeys(level: \"branch\" | \"environment\", keys: string[]): Promise<void> {\n await this.sendAdminRequest(\n `/internal/config/override/${level}/reset-keys`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ keys }),\n },\n null,\n );\n }\n async createEmailTemplate(displayName: string): Promise<{ id: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-templates`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n display_name: displayName,\n }),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteEmailTemplate(id: string): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-templates/${id}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async setupPayments(): Promise<{ url: string }> {\n const response = await this.sendAdminRequest(\n \"/internal/payments/setup\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async getStripeAccountInfo(): Promise<null | { account_id: string, charges_enabled: boolean, details_submitted: boolean, payouts_enabled: boolean }> {\n const response = await this.sendAdminRequestAndCatchKnownError(\n \"/internal/payments/stripe/account-info\",\n {},\n null,\n [KnownErrors.StripeAccountInfoNotFound],\n );\n if (response.status === \"error\") {\n return null;\n }\n return await response.data.json();\n }\n\n async getPaymentMethodConfigs(): Promise<{ configId: string, methods: Array<{ id: string, name: string, enabled: boolean, available: boolean, overridable: boolean }> } | null> {\n const response = await this.sendAdminRequestAndCatchKnownError(\n \"/internal/payments/method-configs\",\n { method: \"GET\" },\n null,\n [KnownErrors.StripeAccountInfoNotFound],\n );\n if (response.status === \"error\") {\n return null;\n }\n const data = await response.data.json();\n return {\n configId: data.config_id,\n methods: data.methods,\n };\n }\n\n async updatePaymentMethodConfigs(configId: string, updates: Record<string, 'on' | 'off'>): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/payments/method-configs\",\n {\n method: \"PATCH\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ config_id: configId, updates }),\n },\n null,\n );\n }\n\n async createStripeWidgetAccountSession(): Promise<{ client_secret: string }> {\n const response = await this.sendAdminRequest(\n \"/internal/payments/stripe-widgets/account-session\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async listTransactions(params?: { cursor?: string, limit?: number, type?: TransactionType, customerType?: 'user' | 'team' | 'custom', customerId?: string }): Promise<{ transactions: Transaction[], nextCursor: string | null }> {\n const qs = new URLSearchParams();\n if (params?.cursor) qs.set('cursor', params.cursor);\n if (typeof params?.limit === 'number') qs.set('limit', String(params.limit));\n if (params?.type) qs.set('type', params.type);\n if (params?.customerType) qs.set('customer_type', params.customerType);\n if (params?.customerId) qs.set('customer_id', params.customerId);\n const response = await this.sendAdminRequest(\n `/internal/payments/transactions${qs.size ? `?${qs.toString()}` : ''}`,\n { method: 'GET' },\n null,\n );\n const json = await response.json() as { transactions: Transaction[], next_cursor: string | null };\n return { transactions: json.transactions, nextCursor: json.next_cursor };\n }\n\n async listSessionReplays(params?: AdminListSessionReplaysOptions): Promise<AdminListSessionReplaysResponse> {\n const qs = new URLSearchParams();\n if (params?.cursor) qs.set(\"cursor\", params.cursor);\n if (typeof params?.limit === \"number\") qs.set(\"limit\", String(params.limit));\n if (params?.user_ids && params.user_ids.length > 0) qs.set(\"user_ids\", params.user_ids.join(\",\"));\n if (params?.team_ids && params.team_ids.length > 0) qs.set(\"team_ids\", params.team_ids.join(\",\"));\n if (typeof params?.duration_ms_min === \"number\") qs.set(\"duration_ms_min\", String(params.duration_ms_min));\n if (typeof params?.duration_ms_max === \"number\") qs.set(\"duration_ms_max\", String(params.duration_ms_max));\n if (typeof params?.last_event_at_from_millis === \"number\") qs.set(\"last_event_at_from_millis\", String(params.last_event_at_from_millis));\n if (typeof params?.last_event_at_to_millis === \"number\") qs.set(\"last_event_at_to_millis\", String(params.last_event_at_to_millis));\n if (typeof params?.click_count_min === \"number\") qs.set(\"click_count_min\", String(params.click_count_min));\n const response = await this.sendAdminRequest(\n `/internal/session-replays${qs.size ? `?${qs.toString()}` : \"\"}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async getSessionReplay(sessionReplayId: string): Promise<AdminGetSessionReplayResponse> {\n const response = await this.sendAdminRequest(\n `/internal/session-replays/${encodeURIComponent(sessionReplayId)}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async listSessionReplayChunks(sessionReplayId: string, params?: AdminListSessionReplayChunksOptions): Promise<AdminListSessionReplayChunksResponse> {\n const qs = new URLSearchParams();\n if (params?.cursor) qs.set(\"cursor\", params.cursor);\n if (typeof params?.limit === \"number\") qs.set(\"limit\", String(params.limit));\n const response = await this.sendAdminRequest(\n `/internal/session-replays/${encodeURIComponent(sessionReplayId)}/chunks${qs.size ? `?${qs.toString()}` : \"\"}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async getSessionReplayChunkEvents(sessionReplayId: string, chunkId: string): Promise<AdminGetSessionReplayChunkEventsResponse> {\n const response = await this.sendAdminRequest(\n `/internal/session-replays/${encodeURIComponent(sessionReplayId)}/chunks/${encodeURIComponent(chunkId)}/events`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async getSessionReplayEvents(sessionReplayId: string, options?: { offset?: number, limit?: number }): Promise<AdminGetSessionReplayAllEventsResponse> {\n const qs = new URLSearchParams();\n if (typeof options?.offset === \"number\") qs.set(\"offset\", String(options.offset));\n if (typeof options?.limit === \"number\") qs.set(\"limit\", String(options.limit));\n const response = await this.sendAdminRequest(\n `/internal/session-replays/${encodeURIComponent(sessionReplayId)}/events${qs.size ? `?${qs.toString()}` : \"\"}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async refundTransaction(options: {\n type: \"subscription\" | \"one-time-purchase\",\n id: string,\n invoiceId?: string,\n amountUsd: MoneyAmount,\n /**\n * Lifecycle action for the source purchase:\n * \"now\" — end product access immediately (revokes product,\n * expires item grants, cancels Stripe sub if any).\n * \"at-period-end\" — schedule sub cancel-at-period-end; subscriptions\n * only — rejected for one-time purchases.\n * undefined — no lifecycle change; refund money only.\n */\n endAction?: \"now\" | \"at-period-end\",\n }): Promise<{ success: boolean, refundTransactionId: string }> {\n const response = await this.sendAdminRequest(\n \"/internal/payments/transactions/refund\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n type: options.type,\n id: options.id,\n ...(options.invoiceId !== undefined ? { invoice_id: options.invoiceId } : {}),\n amount_usd: options.amountUsd,\n ...(options.endAction !== undefined ? { end_action: options.endAction } : {}),\n }),\n },\n null,\n );\n const json = await response.json();\n return { success: json.success, refundTransactionId: json.refund_transaction_id };\n }\n\n\n async previewAffectedUsersByOnboardingChange(\n onboarding: { require_email_verification?: boolean },\n limit?: number,\n ): Promise<{\n affected_users: Array<{\n id: string,\n display_name: string | null,\n primary_email: string | null,\n restricted_reason: RestrictedReason,\n }>,\n total_affected_count: number,\n }> {\n const response = await this.sendAdminRequest(\n `/internal/onboarding/preview-affected-users${limit ? `?limit=${limit}` : ''}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ onboarding }),\n },\n null,\n );\n return await response.json();\n }\n\n async queryAnalytics(options: AnalyticsQueryOptions): Promise<AnalyticsQueryResponse> {\n const response = await this.sendAdminRequest(\n \"/internal/analytics/query\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({\n query: options.query,\n params: options.params ?? {},\n timeout_ms: options.timeout_ms ?? 1000,\n include_all_branches: options.include_all_branches ?? false,\n }),\n },\n null,\n );\n\n return await response.json();\n }\n\n async listOutboxEmails(options?: { status?: string, simple_status?: string, limit?: number, cursor?: string }): Promise<EmailOutboxCrud[\"Server\"][\"List\"]> {\n const qs = new URLSearchParams();\n if (options?.status) qs.set('status', options.status);\n if (options?.simple_status) qs.set('simple_status', options.simple_status);\n if (options?.limit !== undefined) qs.set('limit', options.limit.toString());\n if (options?.cursor) qs.set('cursor', options.cursor);\n const response = await this.sendServerRequest(\n `/emails/outbox${qs.size ? `?${qs.toString()}` : ''}`,\n { method: 'GET' },\n null,\n );\n return await response.json();\n }\n\n async getOutboxEmail(id: string): Promise<EmailOutboxCrud[\"Server\"][\"Read\"]> {\n const response = await this.sendServerRequest(\n `/emails/outbox/${id}`,\n { method: 'GET' },\n null,\n );\n return await response.json();\n }\n\n async updateOutboxEmail(id: string, data: EmailOutboxCrud[\"Server\"][\"Update\"]): Promise<EmailOutboxCrud[\"Server\"][\"Read\"]> {\n const response = await this.sendServerRequest(\n `/emails/outbox/${id}`,\n {\n method: 'PATCH',\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin-interface.js","names":["HexclaveServerInterface","Result","KnownErrors"],"sources":["../../src/interface/admin-interface.ts"],"sourcesContent":["import * as yup from \"yup\";\nimport { KnownErrors } from \"../known-errors\";\nimport { branchConfigSourceSchema, type RestrictedReason } from \"../schema-fields\";\nimport { AccessToken, InternalSession, RefreshToken } from \"../sessions\";\nimport type { MoneyAmount } from \"../utils/currency-constants\";\nimport type { Json } from \"../utils/json\";\nimport { Result } from \"../utils/results\";\nimport { urlString } from \"../utils/urls\";\nimport type { AnalyticsClickmapDevice, AnalyticsClickmapKind, AnalyticsClickmapResponse, AnalyticsClickmapTokenResponse, MetricsResponse, MetricsUserCounts, UserActivityResponse } from \"./admin-metrics\";\nimport type { AnalyticsQueryOptions, AnalyticsQueryResponse } from \"./crud/analytics\";\nimport { EmailOutboxCrud } from \"./crud/email-outbox\";\nimport { InternalEmailsCrud } from \"./crud/emails\";\nimport { InternalApiKeysCrud } from \"./crud/internal-api-keys\";\nimport { ProjectPermissionDefinitionsCrud } from \"./crud/project-permissions\";\nimport { ProjectsCrud } from \"./crud/projects\";\nimport type {\n AdminGetSessionReplayResponse,\n AdminGetSessionReplayAllEventsResponse,\n AdminGetSessionReplayChunkEventsResponse,\n AdminListSessionReplayChunksOptions,\n AdminListSessionReplayChunksResponse,\n AdminListSessionReplaysOptions,\n AdminListSessionReplaysResponse\n} from \"./crud/session-replays\";\nimport { SvixTokenCrud } from \"./crud/svix-token\";\nimport { TeamPermissionDefinitionsCrud } from \"./crud/team-permissions\";\nimport type { Transaction, TransactionType } from \"./crud/transactions\";\nimport { ServerAuthApplicationOptions, HexclaveServerInterface } from \"./server-interface\";\n\ntype BranchConfigSourceApi = yup.InferType<typeof branchConfigSourceSchema>;\n\nexport type ChatContent = Array<\n | { type: \"text\", text: string }\n | { type: \"tool-call\", toolName: string, toolCallId: string, args: any, argsText: string, result: any }\n>;\n\nexport type AdminAuthApplicationOptions = ServerAuthApplicationOptions &(\n | {\n superSecretAdminKey: string,\n }\n | {\n projectOwnerSession: InternalSession | (() => Promise<string | null>),\n }\n);\n\nexport type InternalApiKeyCreateCrudRequest = {\n has_publishable_client_key: boolean,\n has_secret_server_key: boolean,\n has_super_secret_admin_key: boolean,\n expires_at_millis: number,\n description: string,\n};\n\nexport type InternalApiKeyCreateCrudResponse = InternalApiKeysCrud[\"Admin\"][\"Read\"] & {\n publishable_client_key?: string,\n secret_server_key?: string,\n super_secret_admin_key?: string,\n};\n\n\nexport class HexclaveAdminInterface extends HexclaveServerInterface {\n constructor(public readonly options: AdminAuthApplicationOptions) {\n super(options);\n }\n\n public async sendAdminRequest(path: string, options: RequestInit, session: InternalSession | null, requestType: \"admin\" = \"admin\") {\n return await this.sendServerRequest(\n path,\n {\n ...options,\n headers: {\n // Hexclave rebrand: emit x-hexclave-* request header; the backend proxy dual-accepts both names.\n \"x-hexclave-super-secret-admin-key\": \"superSecretAdminKey\" in this.options ? this.options.superSecretAdminKey : \"\",\n ...options.headers,\n },\n },\n session,\n requestType,\n );\n }\n\n protected async sendAdminRequestAndCatchKnownError<E extends typeof KnownErrors[keyof KnownErrors]>(\n path: string,\n requestOptions: RequestInit,\n tokenStoreOrNull: InternalSession | null,\n errorsToCatch: readonly E[],\n ): Promise<Result<\n Response & {\n usedTokens: {\n accessToken: AccessToken,\n refreshToken: RefreshToken | null,\n } | null,\n },\n InstanceType<E>\n >> {\n try {\n return Result.ok(await this.sendAdminRequest(path, requestOptions, tokenStoreOrNull));\n } catch (e) {\n for (const errorType of errorsToCatch) {\n if (errorType.isInstance(e)) {\n return Result.error(e as InstanceType<E>);\n }\n }\n throw e;\n }\n }\n\n async getProject(): Promise<ProjectsCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n \"/internal/projects/current\",\n {\n method: \"GET\",\n },\n null,\n );\n return await response.json();\n }\n\n async updateProject(update: ProjectsCrud[\"Admin\"][\"Update\"]): Promise<ProjectsCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n \"/internal/projects/current\",\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(update),\n },\n null,\n );\n return await response.json();\n }\n\n async createInternalApiKey(\n options: InternalApiKeyCreateCrudRequest,\n ): Promise<InternalApiKeyCreateCrudResponse> {\n const response = await this.sendAdminRequest(\n \"/internal/api-keys\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(options),\n },\n null,\n );\n return await response.json();\n }\n\n async listInternalApiKeys(): Promise<InternalApiKeysCrud[\"Admin\"][\"Read\"][]> {\n const response = await this.sendAdminRequest(\"/internal/api-keys\", {}, null);\n const result = await response.json() as InternalApiKeysCrud[\"Admin\"][\"List\"];\n return result.items;\n }\n\n async revokeInternalApiKeyById(id: string) {\n await this.sendAdminRequest(\n `/internal/api-keys/${id}`, {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n revoked: true,\n }),\n },\n null,\n );\n }\n\n async getInternalApiKey(id: string, session: InternalSession): Promise<InternalApiKeysCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(`/internal/api-keys/${id}`, {}, session);\n return await response.json();\n }\n\n async listInternalEmailTemplates(): Promise<{ id: string, display_name: string, theme_id?: string, tsx_source: string }[]> {\n const response = await this.sendAdminRequest(`/internal/email-templates`, {}, null);\n const result = await response.json() as { templates: { id: string, display_name: string, theme_id?: string, tsx_source: string }[] };\n return result.templates;\n }\n\n async listInternalEmailDrafts(): Promise<{ id: string, display_name: string, theme_id?: string | undefined | false, tsx_source: string, sent_at_millis?: number | null }[]> {\n const response = await this.sendAdminRequest(`/internal/email-drafts`, {}, null);\n const result = await response.json() as { drafts: { id: string, display_name: string, theme_id?: string | undefined | false, tsx_source: string, sent_at_millis?: number | null }[] };\n return result.drafts;\n }\n\n async createEmailDraft(options: { display_name?: string, theme_id?: string | false, tsx_source?: string }): Promise<{ id: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-drafts`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(options),\n },\n null,\n );\n return await response.json();\n }\n\n async updateEmailDraft(id: string, data: { display_name?: string, theme_id?: string | null | false, tsx_source?: string, sent_at_millis?: number | null }): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-drafts/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n }\n\n async deleteEmailDraft(id: string): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-drafts/${id}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async listEmailThemes(): Promise<{ id: string, display_name: string }[]> {\n const response = await this.sendAdminRequest(`/internal/email-themes`, {}, null);\n const result = await response.json() as { themes: { id: string, display_name: string }[] };\n return result.themes;\n }\n\n\n // Team permission definitions methods\n async listTeamPermissionDefinitions(): Promise<TeamPermissionDefinitionsCrud['Admin']['Read'][]> {\n const response = await this.sendAdminRequest(`/team-permission-definitions`, {}, null);\n const result = await response.json() as TeamPermissionDefinitionsCrud['Admin']['List'];\n return result.items;\n }\n\n async listTeamPermissionDefinitionsPaginated(\n options: { limit: number, cursor?: string, query?: string },\n ): Promise<{ items: TeamPermissionDefinitionsCrud['Admin']['Read'][], nextCursor: string | null }> {\n const params = new URLSearchParams();\n params.set(\"limit\", String(options.limit));\n if (options.cursor) params.set(\"cursor\", options.cursor);\n if (options.query) params.set(\"query\", options.query);\n const response = await this.sendAdminRequest(`/team-permission-definitions?${params.toString()}`, {}, null);\n const result = await response.json() as TeamPermissionDefinitionsCrud['Admin']['List'];\n return {\n items: result.items,\n nextCursor: result.pagination?.next_cursor ?? null,\n };\n }\n\n async createTeamPermissionDefinition(data: TeamPermissionDefinitionsCrud['Admin']['Create']): Promise<TeamPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n \"/team-permission-definitions\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async updateTeamPermissionDefinition(permissionId: string, data: TeamPermissionDefinitionsCrud['Admin']['Update']): Promise<TeamPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n `/team-permission-definitions/${permissionId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteTeamPermissionDefinition(permissionId: string): Promise<void> {\n await this.sendAdminRequest(\n `/team-permission-definitions/${permissionId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async listProjectPermissionDefinitions(): Promise<ProjectPermissionDefinitionsCrud['Admin']['Read'][]> {\n const response = await this.sendAdminRequest(`/project-permission-definitions`, {}, null);\n const result = await response.json() as ProjectPermissionDefinitionsCrud['Admin']['List'];\n return result.items;\n }\n\n async createProjectPermissionDefinition(data: ProjectPermissionDefinitionsCrud['Admin']['Create']): Promise<ProjectPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n \"/project-permission-definitions\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async updateProjectPermissionDefinition(permissionId: string, data: ProjectPermissionDefinitionsCrud['Admin']['Update']): Promise<ProjectPermissionDefinitionsCrud['Admin']['Read']> {\n const response = await this.sendAdminRequest(\n `/project-permission-definitions/${permissionId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteProjectPermissionDefinition(permissionId: string): Promise<void> {\n await this.sendAdminRequest(\n `/project-permission-definitions/${permissionId}`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async getSvixToken(): Promise<SvixTokenCrud[\"Admin\"][\"Read\"]> {\n const response = await this.sendAdminRequest(\n \"/webhooks/svix-token\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteProject(): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/projects/current\",\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async getMetrics(\n includeAnonymous: boolean = false,\n filters?: {\n country_code?: string,\n referrer?: string,\n browser?: string,\n os?: string,\n device?: string,\n since?: string,\n until?: string,\n },\n ): Promise<MetricsResponse> {\n const params = new URLSearchParams();\n if (includeAnonymous) {\n params.append('include_anonymous', 'true');\n }\n if (filters?.country_code) params.append('filter_country_code', filters.country_code);\n if (filters?.referrer) params.append('filter_referrer', filters.referrer);\n if (filters?.browser) params.append('filter_browser', filters.browser);\n if (filters?.os) params.append('filter_os', filters.os);\n if (filters?.device) params.append('filter_device', filters.device);\n if (filters?.since) params.append('filter_since', filters.since);\n if (filters?.until) params.append('filter_until', filters.until);\n const queryString = params.toString();\n const response = await this.sendAdminRequest(\n `/internal/metrics${queryString ? `?${queryString}` : ''}`,\n {\n method: \"GET\",\n },\n null,\n );\n const body = (await response.json()) as MetricsResponse;\n // The yup schema's .optional().default(...) fallbacks only run during\n // backend response validation, not on this client-side cast — apply them\n // here too so the one-release-cycle tolerance for older servers that the\n // schema comments promise actually holds for dashboard consumers. The\n // Partial views widen the static type (which claims these are always\n // defined) to match what an older server can actually send.\n const rawBody: Partial<MetricsResponse> = body;\n const rawAnalytics: Partial<MetricsResponse[\"analytics_overview\"]> = body.analytics_overview;\n return {\n ...body,\n live_users: rawBody.live_users ?? 0,\n hourly_users: rawBody.hourly_users ?? [],\n hourly_active_users: rawBody.hourly_active_users ?? [],\n analytics_overview: {\n ...body.analytics_overview,\n hourly_page_views: rawAnalytics.hourly_page_views ?? [],\n hourly_active_users: rawAnalytics.hourly_active_users ?? [],\n hourly_visitors: rawAnalytics.hourly_visitors ?? [],\n daily_anonymous_visitors_fallback: rawAnalytics.daily_anonymous_visitors_fallback ?? [],\n anonymous_visitors_fallback: rawAnalytics.anonymous_visitors_fallback ?? 0,\n top_regions: rawAnalytics.top_regions ?? [],\n bounce_rate: rawAnalytics.bounce_rate ?? 0,\n daily_bounce_rate: rawAnalytics.daily_bounce_rate ?? [],\n daily_avg_session_seconds: rawAnalytics.daily_avg_session_seconds ?? [],\n top_browsers: rawAnalytics.top_browsers ?? [],\n top_operating_systems: rawAnalytics.top_operating_systems ?? [],\n top_devices: rawAnalytics.top_devices ?? [],\n },\n };\n }\n\n async getUserActivity(userId: string): Promise<UserActivityResponse> {\n const response = await this.sendAdminRequest(\n urlString`/internal/user-activity?user_id=${userId}`,\n {\n method: \"GET\",\n },\n null,\n );\n return (await response.json()) as UserActivityResponse;\n }\n\n async getAnalyticsClickmap(options: {\n kind: AnalyticsClickmapKind,\n member_user_ids?: string[],\n route_path?: string,\n route_regex?: string,\n url_pattern?: string,\n user_id?: string,\n replay_id?: string,\n device?: AnalyticsClickmapDevice,\n viewport_width_min?: number,\n viewport_width_max?: number,\n sampling?: number,\n since: string,\n until: string,\n }): Promise<AnalyticsClickmapResponse> {\n const response = await this.sendAdminRequest(\n \"/internal/analytics/clickmap\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(options),\n },\n null,\n );\n return (await response.json()) as AnalyticsClickmapResponse;\n }\n\n async createAnalyticsClickmapToken(options: {\n origin: string,\n }): Promise<AnalyticsClickmapTokenResponse> {\n const response = await this.sendAdminRequest(\n \"/internal/analytics/clickmap-token\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(options),\n },\n null,\n );\n return (await response.json()) as AnalyticsClickmapTokenResponse;\n }\n\n async getMetricsUserCounts(): Promise<MetricsUserCounts> {\n const response = await this.sendAdminRequest(\n \"/internal/metrics/user-counts\",\n {\n method: \"GET\",\n },\n null,\n );\n return (await response.json()) as MetricsUserCounts;\n }\n\n async sendTestEmail(data: {\n recipient_email: string,\n email_config: {\n host: string,\n port: number,\n username: string,\n password: string,\n sender_email: string,\n sender_name: string,\n },\n }): Promise<{ success: boolean, error_message?: string }> {\n const response = await this.sendAdminRequest(`/internal/send-test-email`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async sendTestWebhook(data: {\n endpoint_id: string,\n }): Promise<{ success: boolean, error_message?: string }> {\n const response = await this.sendAdminRequest(`/internal/send-test-webhook`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async listSentEmails(): Promise<InternalEmailsCrud[\"Admin\"][\"List\"]> {\n const response = await this.sendAdminRequest(\"/internal/emails\", {\n method: \"GET\",\n }, null);\n return await response.json();\n }\n\n async setupManagedEmailProvider(data: {\n subdomain: string,\n sender_local_part: string,\n }): Promise<{\n domain_id: string,\n subdomain: string,\n sender_local_part: string,\n name_server_records: string[],\n status: \"pending_dns\" | \"pending_verification\" | \"verified\" | \"applied\" | \"failed\",\n }> {\n const response = await this.sendAdminRequest(\"/internal/emails/managed-onboarding/setup\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async checkManagedEmailStatus(data: {\n domain_id: string,\n subdomain: string,\n sender_local_part: string,\n }): Promise<{ status: \"pending_dns\" | \"pending_verification\" | \"verified\" | \"applied\" | \"failed\" }> {\n const response = await this.sendAdminRequest(\"/internal/emails/managed-onboarding/check\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async listManagedEmailDomains(): Promise<{\n items: Array<{\n domain_id: string,\n subdomain: string,\n sender_local_part: string,\n status: \"pending_dns\" | \"pending_verification\" | \"verified\" | \"applied\" | \"failed\",\n name_server_records: string[],\n }>,\n }> {\n const response = await this.sendAdminRequest(\"/internal/emails/managed-onboarding/list\", {\n method: \"GET\",\n }, null);\n return await response.json();\n }\n\n async deleteManagedEmailDomain(data: {\n resend_domain_id: string,\n }): Promise<{ status: \"deleted\" }> {\n const response = await this.sendAdminRequest(\"/internal/emails/managed-onboarding/delete\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async applyManagedEmailProvider(data: {\n domain_id: string,\n }): Promise<{ status: \"applied\" }> {\n const response = await this.sendAdminRequest(\"/internal/emails/managed-onboarding/apply\", {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n }, null);\n return await response.json();\n }\n\n async sendSignInInvitationEmail(\n email: string,\n callbackUrl: string,\n ): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/send-sign-in-invitation\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n callback_url: callbackUrl,\n }),\n },\n null,\n );\n }\n\n async saveChatMessage(threadId: string, message: any): Promise<void> {\n await this.sendAdminRequest(\n `/internal/ai-chat/${threadId}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ message }),\n },\n null,\n );\n }\n\n async listChatMessages(threadId: string): Promise<{ messages: Array<any> }> {\n const response = await this.sendAdminRequest(\n `/internal/ai-chat/${threadId}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async renderEmailPreview(options: {\n themeId?: string | null | false,\n themeTsxSource?: string,\n templateId?: string,\n templateTsxSource?: string,\n editableMarkers?: boolean,\n editableSource?: 'template' | 'theme' | 'both',\n }): Promise<{ html: string, editable_regions?: Record<string, unknown> }> {\n const response = await this.sendAdminRequest(`/emails/render-email`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n theme_id: options.themeId,\n theme_tsx_source: options.themeTsxSource,\n template_id: options.templateId,\n template_tsx_source: options.templateTsxSource,\n editable_markers: options.editableMarkers,\n editable_source: options.editableSource,\n }),\n }, null);\n return await response.json();\n }\n\n async rewriteTemplateSourceWithAI(templateTsxSource: string): Promise<{ tsx_source: string }> {\n const response = await this.sendAdminRequest(`/internal/rewrite-template-source`, {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n template_tsx_source: templateTsxSource,\n }),\n }, null);\n return await response.json();\n }\n\n async createEmailTheme(displayName: string): Promise<{ id: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-themes`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n display_name: displayName,\n }),\n },\n null,\n );\n return await response.json();\n }\n\n async getEmailTheme(id: string): Promise<{ display_name: string, tsx_source: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-themes/${id}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async updateEmailTheme(id: string, tsxSource: string): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-themes/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n tsx_source: tsxSource,\n }),\n },\n null,\n );\n }\n\n async deleteEmailTheme(id: string): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-themes/${id}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async updateEmailTemplate(id: string, tsxSource: string, themeId: string | null | false): Promise<{ rendered_html: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-templates/${id}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ tsx_source: tsxSource, theme_id: themeId }),\n },\n null,\n );\n return await response.json();\n }\n\n async getConfig(): Promise<{ config_string: string }> {\n const response = await this.sendAdminRequest(\n `/internal/config`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async getConfigOverride(level: \"project\" | \"branch\" | \"environment\"): Promise<{ config_string: string }> {\n const response = await this.sendAdminRequest(\n `/internal/config/override/${level}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async setConfigOverride(level: \"project\" | \"branch\" | \"environment\", configOverride: any, source?: BranchConfigSourceApi): Promise<void> {\n await this.sendAdminRequest(\n `/internal/config/override/${level}`,\n {\n method: \"PUT\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n config_string: JSON.stringify(configOverride),\n ...(source && { source }),\n }),\n },\n null,\n );\n }\n\n async updateConfigOverride(level: \"project\" | \"branch\" | \"environment\", configOverrideOverride: any): Promise<void> {\n await this.sendAdminRequest(\n `/internal/config/override/${level}`,\n {\n method: \"PATCH\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ config_override_string: JSON.stringify(configOverrideOverride) }),\n },\n null,\n );\n }\n\n async getPushedConfigSource(): Promise<BranchConfigSourceApi> {\n const response = await this.sendAdminRequest(\n `/internal/config/source`,\n { method: \"GET\" },\n null,\n );\n const data = await response.json();\n return data.source;\n }\n\n async unlinkPushedConfigSource(): Promise<void> {\n await this.sendAdminRequest(\n `/internal/config/source`,\n { method: \"DELETE\" },\n null,\n );\n }\n\n async resetConfigOverrideKeys(level: \"branch\" | \"environment\", keys: string[]): Promise<void> {\n await this.sendAdminRequest(\n `/internal/config/override/${level}/reset-keys`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ keys }),\n },\n null,\n );\n }\n async createEmailTemplate(displayName: string): Promise<{ id: string }> {\n const response = await this.sendAdminRequest(\n `/internal/email-templates`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n display_name: displayName,\n }),\n },\n null,\n );\n return await response.json();\n }\n\n async deleteEmailTemplate(id: string): Promise<void> {\n await this.sendAdminRequest(\n `/internal/email-templates/${id}`,\n {\n method: \"DELETE\",\n },\n null,\n );\n }\n\n async setupPayments(): Promise<{ url: string }> {\n const response = await this.sendAdminRequest(\n \"/internal/payments/setup\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async getStripeAccountInfo(): Promise<null | { account_id: string, charges_enabled: boolean, details_submitted: boolean, payouts_enabled: boolean }> {\n const response = await this.sendAdminRequestAndCatchKnownError(\n \"/internal/payments/stripe/account-info\",\n {},\n null,\n [KnownErrors.StripeAccountInfoNotFound],\n );\n if (response.status === \"error\") {\n return null;\n }\n return await response.data.json();\n }\n\n async getPaymentMethodConfigs(): Promise<{ configId: string, methods: Array<{ id: string, name: string, enabled: boolean, available: boolean, overridable: boolean }> } | null> {\n const response = await this.sendAdminRequestAndCatchKnownError(\n \"/internal/payments/method-configs\",\n { method: \"GET\" },\n null,\n [KnownErrors.StripeAccountInfoNotFound],\n );\n if (response.status === \"error\") {\n return null;\n }\n const data = await response.data.json();\n return {\n configId: data.config_id,\n methods: data.methods,\n };\n }\n\n async updatePaymentMethodConfigs(configId: string, updates: Record<string, 'on' | 'off'>): Promise<void> {\n await this.sendAdminRequest(\n \"/internal/payments/method-configs\",\n {\n method: \"PATCH\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ config_id: configId, updates }),\n },\n null,\n );\n }\n\n async createStripeWidgetAccountSession(): Promise<{ client_secret: string }> {\n const response = await this.sendAdminRequest(\n \"/internal/payments/stripe-widgets/account-session\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({}),\n },\n null,\n );\n return await response.json();\n }\n\n async listTransactions(params?: { cursor?: string, limit?: number, type?: TransactionType, customerType?: 'user' | 'team' | 'custom', customerId?: string }): Promise<{ transactions: Transaction[], nextCursor: string | null }> {\n const qs = new URLSearchParams();\n if (params?.cursor) qs.set('cursor', params.cursor);\n if (typeof params?.limit === 'number') qs.set('limit', String(params.limit));\n if (params?.type) qs.set('type', params.type);\n if (params?.customerType) qs.set('customer_type', params.customerType);\n if (params?.customerId) qs.set('customer_id', params.customerId);\n const response = await this.sendAdminRequest(\n `/internal/payments/transactions${qs.size ? `?${qs.toString()}` : ''}`,\n { method: 'GET' },\n null,\n );\n const json = await response.json() as { transactions: Transaction[], next_cursor: string | null };\n return { transactions: json.transactions, nextCursor: json.next_cursor };\n }\n\n async listSessionReplays(params?: AdminListSessionReplaysOptions): Promise<AdminListSessionReplaysResponse> {\n const qs = new URLSearchParams();\n if (params?.cursor) qs.set(\"cursor\", params.cursor);\n if (typeof params?.limit === \"number\") qs.set(\"limit\", String(params.limit));\n if (params?.user_ids && params.user_ids.length > 0) qs.set(\"user_ids\", params.user_ids.join(\",\"));\n if (params?.team_ids && params.team_ids.length > 0) qs.set(\"team_ids\", params.team_ids.join(\",\"));\n if (typeof params?.duration_ms_min === \"number\") qs.set(\"duration_ms_min\", String(params.duration_ms_min));\n if (typeof params?.duration_ms_max === \"number\") qs.set(\"duration_ms_max\", String(params.duration_ms_max));\n if (typeof params?.last_event_at_from_millis === \"number\") qs.set(\"last_event_at_from_millis\", String(params.last_event_at_from_millis));\n if (typeof params?.last_event_at_to_millis === \"number\") qs.set(\"last_event_at_to_millis\", String(params.last_event_at_to_millis));\n if (typeof params?.click_count_min === \"number\") qs.set(\"click_count_min\", String(params.click_count_min));\n const response = await this.sendAdminRequest(\n `/internal/session-replays${qs.size ? `?${qs.toString()}` : \"\"}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async getSessionReplay(sessionReplayId: string): Promise<AdminGetSessionReplayResponse> {\n const response = await this.sendAdminRequest(\n `/internal/session-replays/${encodeURIComponent(sessionReplayId)}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async listSessionReplayChunks(sessionReplayId: string, params?: AdminListSessionReplayChunksOptions): Promise<AdminListSessionReplayChunksResponse> {\n const qs = new URLSearchParams();\n if (params?.cursor) qs.set(\"cursor\", params.cursor);\n if (typeof params?.limit === \"number\") qs.set(\"limit\", String(params.limit));\n const response = await this.sendAdminRequest(\n `/internal/session-replays/${encodeURIComponent(sessionReplayId)}/chunks${qs.size ? `?${qs.toString()}` : \"\"}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async getSessionReplayChunkEvents(sessionReplayId: string, chunkId: string): Promise<AdminGetSessionReplayChunkEventsResponse> {\n const response = await this.sendAdminRequest(\n `/internal/session-replays/${encodeURIComponent(sessionReplayId)}/chunks/${encodeURIComponent(chunkId)}/events`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async getSessionReplayEvents(sessionReplayId: string, options?: { offset?: number, limit?: number }): Promise<AdminGetSessionReplayAllEventsResponse> {\n const qs = new URLSearchParams();\n if (typeof options?.offset === \"number\") qs.set(\"offset\", String(options.offset));\n if (typeof options?.limit === \"number\") qs.set(\"limit\", String(options.limit));\n const response = await this.sendAdminRequest(\n `/internal/session-replays/${encodeURIComponent(sessionReplayId)}/events${qs.size ? `?${qs.toString()}` : \"\"}`,\n { method: \"GET\" },\n null,\n );\n return await response.json();\n }\n\n async refundTransaction(options: {\n type: \"subscription\" | \"one-time-purchase\",\n id: string,\n invoiceId?: string,\n amountUsd: MoneyAmount,\n /**\n * Lifecycle action for the source purchase:\n * \"now\" — end product access immediately (revokes product,\n * expires item grants, cancels Stripe sub if any).\n * \"at-period-end\" — schedule sub cancel-at-period-end; subscriptions\n * only — rejected for one-time purchases.\n * undefined — no lifecycle change; refund money only.\n */\n endAction?: \"now\" | \"at-period-end\",\n }): Promise<{ success: boolean, refundTransactionId: string }> {\n const response = await this.sendAdminRequest(\n \"/internal/payments/transactions/refund\",\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n type: options.type,\n id: options.id,\n ...(options.invoiceId !== undefined ? { invoice_id: options.invoiceId } : {}),\n amount_usd: options.amountUsd,\n ...(options.endAction !== undefined ? { end_action: options.endAction } : {}),\n }),\n },\n null,\n );\n const json = await response.json();\n return { success: json.success, refundTransactionId: json.refund_transaction_id };\n }\n\n\n async previewAffectedUsersByOnboardingChange(\n onboarding: { require_email_verification?: boolean },\n limit?: number,\n ): Promise<{\n affected_users: Array<{\n id: string,\n display_name: string | null,\n primary_email: string | null,\n restricted_reason: RestrictedReason,\n }>,\n total_affected_count: number,\n }> {\n const response = await this.sendAdminRequest(\n `/internal/onboarding/preview-affected-users${limit ? `?limit=${limit}` : ''}`,\n {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({ onboarding }),\n },\n null,\n );\n return await response.json();\n }\n\n async queryAnalytics(options: AnalyticsQueryOptions): Promise<AnalyticsQueryResponse> {\n const response = await this.sendAdminRequest(\n \"/internal/analytics/query\",\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({\n query: options.query,\n params: options.params ?? {},\n timeout_ms: options.timeout_ms ?? 1000,\n include_all_branches: options.include_all_branches ?? false,\n }),\n },\n null,\n );\n\n return await response.json();\n }\n\n async listOutboxEmails(options?: { status?: string, simple_status?: string, user_id?: string, limit?: number, cursor?: string }): Promise<EmailOutboxCrud[\"Server\"][\"List\"]> {\n const qs = new URLSearchParams();\n if (options?.status) qs.set('status', options.status);\n if (options?.simple_status) qs.set('simple_status', options.simple_status);\n if (options?.user_id) qs.set('user_id', options.user_id);\n if (options?.limit !== undefined) qs.set('limit', options.limit.toString());\n if (options?.cursor) qs.set('cursor', options.cursor);\n const response = await this.sendServerRequest(\n `/emails/outbox${qs.size ? `?${qs.toString()}` : ''}`,\n { method: 'GET' },\n null,\n );\n return await response.json();\n }\n\n async getOutboxEmail(id: string): Promise<EmailOutboxCrud[\"Server\"][\"Read\"]> {\n const response = await this.sendServerRequest(\n `/emails/outbox/${id}`,\n { method: 'GET' },\n null,\n );\n return await response.json();\n }\n\n async updateOutboxEmail(id: string, data: EmailOutboxCrud[\"Server\"][\"Update\"]): Promise<EmailOutboxCrud[\"Server\"][\"Read\"]> {\n const response = await this.sendServerRequest(\n `/emails/outbox/${id}`,\n {\n method: 'PATCH',\n headers: {\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify(data),\n },\n null,\n );\n return await response.json();\n }\n\n}\n"],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@ let ___utils_objects_js = require("../utils/objects.js");
|
|
|
5
5
|
let ___utils_strings_js = require("../utils/strings.js");
|
|
6
6
|
let ___utils_oauth_js = require("../utils/oauth.js");
|
|
7
7
|
let ___utils_results_js = require("../utils/results.js");
|
|
8
|
-
let ___utils_urls_js = require("../utils/urls.js");
|
|
9
8
|
let ___known_errors_js = require("../known-errors.js");
|
|
9
|
+
let ___utils_urls_js = require("../utils/urls.js");
|
|
10
10
|
let ___sessions_js = require("../sessions.js");
|
|
11
11
|
let ___utils_crypto_js = require("../utils/crypto.js");
|
|
12
12
|
let ___utils_globals_js = require("../utils/globals.js");
|
|
@@ -56,9 +56,9 @@ declare const conversationSummarySchema: yup$1.ObjectSchema<{
|
|
|
56
56
|
preview: string | null;
|
|
57
57
|
lastActivityAt: string;
|
|
58
58
|
metadata: {
|
|
59
|
-
tags: string[];
|
|
60
59
|
assignedToUserId: string | null;
|
|
61
60
|
assignedToDisplayName: string | null;
|
|
61
|
+
tags: string[];
|
|
62
62
|
firstResponseDueAt: string | null;
|
|
63
63
|
firstResponseAt: string | null;
|
|
64
64
|
nextResponseDueAt: string | null;
|
|
@@ -174,22 +174,22 @@ declare const conversationListResponseSchema: yup$1.ObjectSchema<{
|
|
|
174
174
|
closedAt?: string | null | undefined;
|
|
175
175
|
recordMetadata?: {} | null | undefined;
|
|
176
176
|
status: "open" | "pending" | "closed";
|
|
177
|
-
priority: "low" | "normal" | "high" | "urgent";
|
|
178
|
-
subject: string;
|
|
179
177
|
conversationId: string;
|
|
180
178
|
userId: string | null;
|
|
181
179
|
teamId: string | null;
|
|
182
180
|
userDisplayName: string | null;
|
|
183
181
|
userPrimaryEmail: string | null;
|
|
184
182
|
userProfileImageUrl: string | null;
|
|
183
|
+
subject: string;
|
|
184
|
+
priority: "low" | "normal" | "high" | "urgent";
|
|
185
185
|
source: "email" | "manual" | "chat" | "api";
|
|
186
186
|
lastMessageType: "message" | "internal-note" | "status-change";
|
|
187
187
|
preview: string | null;
|
|
188
188
|
lastActivityAt: string;
|
|
189
189
|
metadata: {
|
|
190
|
-
tags: string[];
|
|
191
190
|
assignedToUserId: string | null;
|
|
192
191
|
assignedToDisplayName: string | null;
|
|
192
|
+
tags: string[];
|
|
193
193
|
firstResponseDueAt: string | null;
|
|
194
194
|
firstResponseAt: string | null;
|
|
195
195
|
nextResponseDueAt: string | null;
|
|
@@ -212,22 +212,22 @@ declare const conversationDetailResponseSchema: yup$1.ObjectSchema<{
|
|
|
212
212
|
closedAt?: string | null | undefined;
|
|
213
213
|
recordMetadata?: {} | null | undefined;
|
|
214
214
|
status: "open" | "pending" | "closed";
|
|
215
|
-
priority: "low" | "normal" | "high" | "urgent";
|
|
216
|
-
subject: string;
|
|
217
215
|
conversationId: string;
|
|
218
216
|
userId: string | null;
|
|
219
217
|
teamId: string | null;
|
|
220
218
|
userDisplayName: string | null;
|
|
221
219
|
userPrimaryEmail: string | null;
|
|
222
220
|
userProfileImageUrl: string | null;
|
|
221
|
+
subject: string;
|
|
222
|
+
priority: "low" | "normal" | "high" | "urgent";
|
|
223
223
|
source: "email" | "manual" | "chat" | "api";
|
|
224
224
|
lastMessageType: "message" | "internal-note" | "status-change";
|
|
225
225
|
preview: string | null;
|
|
226
226
|
lastActivityAt: string;
|
|
227
227
|
metadata: {
|
|
228
|
-
tags: string[];
|
|
229
228
|
assignedToUserId: string | null;
|
|
230
229
|
assignedToDisplayName: string | null;
|
|
230
|
+
tags: string[];
|
|
231
231
|
firstResponseDueAt: string | null;
|
|
232
232
|
firstResponseAt: string | null;
|
|
233
233
|
nextResponseDueAt: string | null;
|
|
@@ -238,11 +238,11 @@ declare const conversationDetailResponseSchema: yup$1.ObjectSchema<{
|
|
|
238
238
|
messages: {
|
|
239
239
|
status: "open" | "pending" | "closed";
|
|
240
240
|
id: string;
|
|
241
|
-
priority: "low" | "normal" | "high" | "urgent";
|
|
242
|
-
subject: string;
|
|
243
241
|
conversationId: string;
|
|
244
242
|
userId: string | null;
|
|
245
243
|
teamId: string | null;
|
|
244
|
+
subject: string;
|
|
245
|
+
priority: "low" | "normal" | "high" | "urgent";
|
|
246
246
|
source: "email" | "manual" | "chat" | "api";
|
|
247
247
|
metadata: {} | null;
|
|
248
248
|
createdAt: string;
|