@hexclave/shared 1.0.21 → 1.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/ai/unified-prompts/reminders.js +1 -1
  2. package/dist/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -1
  3. package/dist/ai/unified-prompts/skill-site-prompt.js +4 -1
  4. package/dist/ai/unified-prompts/skill-site-prompt.js.map +1 -1
  5. package/dist/config/schema.d.ts +28 -28
  6. package/dist/esm/ai/unified-prompts/reminders.js +1 -1
  7. package/dist/esm/ai/unified-prompts/skill-site-prompt.d.ts.map +1 -1
  8. package/dist/esm/ai/unified-prompts/skill-site-prompt.js +4 -1
  9. package/dist/esm/ai/unified-prompts/skill-site-prompt.js.map +1 -1
  10. package/dist/esm/config/schema.d.ts +28 -28
  11. package/dist/esm/interface/admin-interface.d.ts +1 -0
  12. package/dist/esm/interface/admin-interface.d.ts.map +1 -1
  13. package/dist/esm/interface/admin-interface.js +1 -0
  14. package/dist/esm/interface/admin-interface.js.map +1 -1
  15. package/dist/esm/interface/admin-metrics.d.ts +5 -5
  16. package/dist/esm/interface/conversations.d.ts +24 -24
  17. package/dist/esm/interface/crud/current-user.d.ts +1 -1
  18. package/dist/esm/interface/crud/email-outbox.d.ts +154 -154
  19. package/dist/esm/interface/crud/email-outbox.js +1 -1
  20. package/dist/esm/interface/crud/email-outbox.js.map +1 -1
  21. package/dist/esm/interface/crud/project-api-keys.d.ts +2 -2
  22. package/dist/esm/interface/crud/team-member-profiles.d.ts +8 -8
  23. package/dist/esm/interface/crud/users.d.ts +4 -4
  24. package/dist/interface/admin-interface.d.ts +1 -0
  25. package/dist/interface/admin-interface.d.ts.map +1 -1
  26. package/dist/interface/admin-interface.js +1 -0
  27. package/dist/interface/admin-interface.js.map +1 -1
  28. package/dist/interface/admin-metrics.d.ts +5 -5
  29. package/dist/interface/conversations.d.ts +24 -24
  30. package/dist/interface/crud/current-user.d.ts +1 -1
  31. package/dist/interface/crud/email-outbox.d.ts +154 -154
  32. package/dist/interface/crud/email-outbox.js +1 -1
  33. package/dist/interface/crud/email-outbox.js.map +1 -1
  34. package/dist/interface/crud/project-api-keys.d.ts +2 -2
  35. package/dist/interface/crud/team-member-profiles.d.ts +8 -8
  36. package/dist/interface/crud/users.d.ts +4 -4
  37. package/package.json +1 -1
  38. package/src/ai/unified-prompts/skill-site-prompt.ts +4 -1
  39. package/src/interface/admin-interface.ts +2 -1
  40. package/src/interface/crud/email-outbox.ts +1 -1
@@ -183,7 +183,7 @@ const emailOutboxCrud = (0, ______crud_js.createCrud)({
183
183
  serverList: {
184
184
  tags: ["Emails"],
185
185
  summary: "List email outbox",
186
- description: "Lists all emails in the outbox with optional filtering by status or simple_status."
186
+ description: "Lists all emails in the outbox with optional filtering by status, simple_status, or user_id."
187
187
  }
188
188
  }
189
189
  });
@@ -1 +1 @@
1
- {"version":3,"file":"email-outbox.js","names":["fieldSchema"],"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":"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"}
1
+ {"version":3,"file":"email-outbox.js","names":["fieldSchema"],"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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"}
@@ -82,9 +82,9 @@ declare const userApiKeysCrud: CrudSchemaFromOptions<{
82
82
  type: "user";
83
83
  description: string;
84
84
  id: string;
85
- created_at_millis: number;
86
85
  expires_at_millis: number | undefined;
87
86
  manually_revoked_at_millis: number | undefined;
87
+ created_at_millis: number;
88
88
  is_public: boolean;
89
89
  } & {
90
90
  value: string;
@@ -180,9 +180,9 @@ declare const teamApiKeysCrud: CrudSchemaFromOptions<{
180
180
  team_id: string;
181
181
  description: string;
182
182
  id: string;
183
- created_at_millis: number;
184
183
  expires_at_millis: number | undefined;
185
184
  manually_revoked_at_millis: number | undefined;
185
+ created_at_millis: number;
186
186
  is_public: boolean;
187
187
  } & {
188
188
  value: string;
@@ -33,12 +33,9 @@ declare const teamMemberProfilesCrudServerReadSchema: yup$1.ObjectSchema<{
33
33
  is_anonymous: boolean;
34
34
  is_restricted: boolean;
35
35
  requires_totp_mfa: boolean;
36
- country_code: string | null;
37
- profile_image_url: string | null;
38
- signed_up_at_millis: number;
39
- last_active_at_millis: number;
40
36
  primary_email_verified: boolean;
41
37
  primary_email_auth_enabled: boolean;
38
+ profile_image_url: string | null;
42
39
  selected_team: {
43
40
  client_metadata?: {} | null | undefined;
44
41
  client_read_only_metadata?: {} | null | undefined;
@@ -48,12 +45,15 @@ declare const teamMemberProfilesCrudServerReadSchema: yup$1.ObjectSchema<{
48
45
  created_at_millis: number;
49
46
  profile_image_url: string | null;
50
47
  } | null;
48
+ signed_up_at_millis: number;
51
49
  has_password: boolean;
52
50
  otp_auth_enabled: boolean;
53
51
  passkey_auth_enabled: boolean;
52
+ last_active_at_millis: number;
54
53
  restricted_by_admin: boolean;
55
54
  restricted_by_admin_reason: string | null;
56
55
  restricted_by_admin_private_details: string | null;
56
+ country_code: string | null;
57
57
  risk_scores: {
58
58
  sign_up: {
59
59
  bot: number;
@@ -156,12 +156,9 @@ declare const teamMemberProfilesCrud: CrudSchemaFromOptions<{
156
156
  is_anonymous: boolean;
157
157
  is_restricted: boolean;
158
158
  requires_totp_mfa: boolean;
159
- country_code: string | null;
160
- profile_image_url: string | null;
161
- signed_up_at_millis: number;
162
- last_active_at_millis: number;
163
159
  primary_email_verified: boolean;
164
160
  primary_email_auth_enabled: boolean;
161
+ profile_image_url: string | null;
165
162
  selected_team: {
166
163
  client_metadata?: {} | null | undefined;
167
164
  client_read_only_metadata?: {} | null | undefined;
@@ -171,12 +168,15 @@ declare const teamMemberProfilesCrud: CrudSchemaFromOptions<{
171
168
  created_at_millis: number;
172
169
  profile_image_url: string | null;
173
170
  } | null;
171
+ signed_up_at_millis: number;
174
172
  has_password: boolean;
175
173
  otp_auth_enabled: boolean;
176
174
  passkey_auth_enabled: boolean;
175
+ last_active_at_millis: number;
177
176
  restricted_by_admin: boolean;
178
177
  restricted_by_admin_reason: string | null;
179
178
  restricted_by_admin_private_details: string | null;
179
+ country_code: string | null;
180
180
  risk_scores: {
181
181
  sign_up: {
182
182
  bot: number;
@@ -169,15 +169,15 @@ declare const usersCrudServerCreateSchema: yup$1.ObjectSchema<{
169
169
  server_metadata: {} | null | undefined;
170
170
  is_anonymous: boolean | undefined;
171
171
  password: string | null | undefined;
172
- country_code: string | null | undefined;
173
- profile_image_url: string | null | undefined;
174
172
  primary_email_verified: boolean | undefined;
175
173
  primary_email_auth_enabled: boolean | undefined;
174
+ profile_image_url: string | null | undefined;
176
175
  otp_auth_enabled: boolean | undefined;
177
176
  passkey_auth_enabled: boolean | undefined;
178
177
  restricted_by_admin: boolean | undefined;
179
178
  restricted_by_admin_reason: string | null | undefined;
180
179
  restricted_by_admin_private_details: string | null | undefined;
180
+ country_code: string | null | undefined;
181
181
  risk_scores: {
182
182
  sign_up: {
183
183
  bot: number;
@@ -375,15 +375,15 @@ declare const usersCrud: CrudSchemaFromOptions<{
375
375
  server_metadata: {} | null | undefined;
376
376
  is_anonymous: boolean | undefined;
377
377
  password: string | null | undefined;
378
- country_code: string | null | undefined;
379
- profile_image_url: string | null | undefined;
380
378
  primary_email_verified: boolean | undefined;
381
379
  primary_email_auth_enabled: boolean | undefined;
380
+ profile_image_url: string | null | undefined;
382
381
  otp_auth_enabled: boolean | undefined;
383
382
  passkey_auth_enabled: boolean | undefined;
384
383
  restricted_by_admin: boolean | undefined;
385
384
  restricted_by_admin_reason: string | null | undefined;
386
385
  restricted_by_admin_private_details: string | null | undefined;
386
+ country_code: string | null | undefined;
387
387
  risk_scores: {
388
388
  sign_up: {
389
389
  bot: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hexclave/shared",
3
- "version": "1.0.21",
3
+ "version": "1.0.23",
4
4
  "repository": "https://github.com/hexclave/hexclave",
5
5
  "files": [
6
6
  "README.md",
@@ -19,7 +19,10 @@ export function buildSkillSitePrompt(docsIndexPromptValue = docsIndexPrompt) {
19
19
 
20
20
  ## Docs
21
21
 
22
- The full docs sidebar — generated from the live navigation. Fetch any of these directly:
22
+ The full docs sidebar — generated from the live navigation. Fetch any of these directly.
23
+
24
+ To retrieve docs as Markdown, use these endpoints:
25
+ - For a specific docs page, append \`.md\` to the canonical docs URL. For example, fetch \`https://docs.hexclave.com/guides/getting-started/setup.md\` for the Markdown version of \`https://docs.hexclave.com/guides/getting-started/setup\`.
23
26
 
24
27
  ${docsIndexPromptValue}
25
28
 
@@ -1091,10 +1091,11 @@ export class HexclaveAdminInterface extends HexclaveServerInterface {
1091
1091
  return await response.json();
1092
1092
  }
1093
1093
 
1094
- async listOutboxEmails(options?: { status?: string, simple_status?: string, limit?: number, cursor?: string }): Promise<EmailOutboxCrud["Server"]["List"]> {
1094
+ async listOutboxEmails(options?: { status?: string, simple_status?: string, user_id?: string, limit?: number, cursor?: string }): Promise<EmailOutboxCrud["Server"]["List"]> {
1095
1095
  const qs = new URLSearchParams();
1096
1096
  if (options?.status) qs.set('status', options.status);
1097
1097
  if (options?.simple_status) qs.set('simple_status', options.simple_status);
1098
+ if (options?.user_id) qs.set('user_id', options.user_id);
1098
1099
  if (options?.limit !== undefined) qs.set('limit', options.limit.toString());
1099
1100
  if (options?.cursor) qs.set('cursor', options.cursor);
1100
1101
  const response = await this.sendServerRequest(
@@ -254,7 +254,7 @@ export const emailOutboxCrud = createCrud({
254
254
  serverList: {
255
255
  tags: ["Emails"],
256
256
  summary: "List email outbox",
257
- description: "Lists all emails in the outbox with optional filtering by status or simple_status.",
257
+ description: "Lists all emails in the outbox with optional filtering by status, simple_status, or user_id.",
258
258
  },
259
259
  },
260
260
  });