@gravity-rail/sdk 0.13.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/{chunk-V7ZKEH4V.js → chunk-2YLKG4TT.js} +1 -1
  2. package/dist/chunk-2YLKG4TT.js.map +1 -0
  3. package/dist/{chunk-FSSXKQR5.js → chunk-GP6ICMWF.js} +2 -1
  4. package/dist/chunk-GP6ICMWF.js.map +1 -0
  5. package/dist/{chunk-YRIBZ3RM.js → chunk-QTJQTTIR.js} +366 -27
  6. package/dist/chunk-QTJQTTIR.js.map +1 -0
  7. package/dist/{client-DjyYhpnv.d.ts → client-BLuz00Qr.d.cts} +904 -54
  8. package/dist/{client-eet1pTc_.d.cts → client-CefA5Mxe.d.ts} +904 -54
  9. package/dist/helpers.cjs.map +1 -1
  10. package/dist/helpers.d.cts +2 -2
  11. package/dist/helpers.d.ts +2 -2
  12. package/dist/helpers.js +1 -1
  13. package/dist/index.cjs +379 -32
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.d.cts +6 -7
  16. package/dist/index.d.ts +6 -7
  17. package/dist/index.js +26 -11
  18. package/dist/index.js.map +1 -1
  19. package/dist/internal.cjs +364 -25
  20. package/dist/internal.cjs.map +1 -1
  21. package/dist/internal.d.cts +411 -142
  22. package/dist/internal.d.ts +411 -142
  23. package/dist/internal.js +18 -4
  24. package/dist/internal.js.map +1 -1
  25. package/dist/{revision-state-CC1svrGE.d.ts → revision-state-DL1ViZ57.d.ts} +28 -5
  26. package/dist/{revision-state-DFWcu6wD.d.cts → revision-state-axZ62kJk.d.cts} +28 -5
  27. package/dist/schemas.cjs +71 -21
  28. package/dist/schemas.cjs.map +1 -1
  29. package/dist/schemas.d.cts +112 -21
  30. package/dist/schemas.d.ts +112 -21
  31. package/dist/schemas.js +67 -21
  32. package/dist/schemas.js.map +1 -1
  33. package/dist/{tasks-Dl1Dzgkf.d.cts → tasks-Boi6AxGp.d.cts} +108 -9
  34. package/dist/{tasks-Dl1Dzgkf.d.ts → tasks-Boi6AxGp.d.ts} +108 -9
  35. package/package.json +1 -1
  36. package/dist/chunk-FSSXKQR5.js.map +0 -1
  37. package/dist/chunk-V7ZKEH4V.js.map +0 -1
  38. package/dist/chunk-YRIBZ3RM.js.map +0 -1
package/dist/internal.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import {
2
+ AGENT_NOTE_ORIGINS,
2
3
  AIModelsApi,
3
4
  AbilitiesApi,
4
5
  AbilityConfigIssueCode,
@@ -148,6 +149,7 @@ import {
148
149
  ToolkitsApi,
149
150
  VoiceApi,
150
151
  WIDGET_SLUGS,
152
+ WORKFLOW_IMPLICIT_USE_SCOPE,
151
153
  WorkflowAccessWarningResourceType,
152
154
  WorkflowNotesApi,
153
155
  WorkflowsApi,
@@ -213,6 +215,7 @@ import {
213
215
  getTTSProvider,
214
216
  getVoiceModelId,
215
217
  initializeFeatures,
218
+ isAgentNoteOrigin,
216
219
  isChatType,
217
220
  isFeatureAvailable,
218
221
  isPositiveRating,
@@ -220,9 +223,12 @@ import {
220
223
  isSMSDeliveryFailureStatus,
221
224
  parseExperimentStatCount,
222
225
  requiresAssistantParticipant,
226
+ roleCanUseWorkflow,
227
+ roleImplicitWorkflowUseScope,
228
+ roleWorkflowAccess,
223
229
  usesBuiltinAssistant,
224
230
  validateFeatureDependencies
225
- } from "./chunk-YRIBZ3RM.js";
231
+ } from "./chunk-QTJQTTIR.js";
226
232
  import {
227
233
  AttendeeResponseStatus,
228
234
  AttendeeStatus,
@@ -237,12 +243,13 @@ import {
237
243
  DataSensitivity,
238
244
  DataTypeRecordScope,
239
245
  IndexStatus
240
- } from "./chunk-V7ZKEH4V.js";
246
+ } from "./chunk-2YLKG4TT.js";
241
247
  import {
242
248
  ApiError,
243
249
  BaseApiClient,
244
- getCookieValue
245
- } from "./chunk-FSSXKQR5.js";
250
+ getCookieValue,
251
+ parseOrgAuthChallenge
252
+ } from "./chunk-GP6ICMWF.js";
246
253
 
247
254
  // src/types/generated/customer_activity.ts
248
255
  var CustomerActivityClassifierDetectorName = {
@@ -338,6 +345,7 @@ var PhiPostureReasonCode = {
338
345
  invalid_state: "invalid_state"
339
346
  };
340
347
  export {
348
+ AGENT_NOTE_ORIGINS,
341
349
  AIModelsApi,
342
350
  AbilitiesApi,
343
351
  AbilityConfigIssueCode,
@@ -515,6 +523,7 @@ export {
515
523
  ToolkitsApi,
516
524
  VoiceApi,
517
525
  WIDGET_SLUGS,
526
+ WORKFLOW_IMPLICIT_USE_SCOPE,
518
527
  WorkflowAccessWarningResourceType,
519
528
  WorkflowNotesApi,
520
529
  WorkflowAccessWarningResourceType as WorkflowResourceType,
@@ -582,13 +591,18 @@ export {
582
591
  getTTSProvider,
583
592
  getVoiceModelId,
584
593
  initializeFeatures,
594
+ isAgentNoteOrigin,
585
595
  isChatType,
586
596
  isFeatureAvailable,
587
597
  isPositiveRating,
588
598
  isRegistryInitialized,
589
599
  isSMSDeliveryFailureStatus,
590
600
  parseExperimentStatCount,
601
+ parseOrgAuthChallenge,
591
602
  requiresAssistantParticipant,
603
+ roleCanUseWorkflow,
604
+ roleImplicitWorkflowUseScope,
605
+ roleWorkflowAccess,
592
606
  usesBuiltinAssistant,
593
607
  validateFeatureDependencies
594
608
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/generated/customer_activity.ts","../src/types/generated/phi_posture.ts","../src/types/generated/workspace.ts"],"sourcesContent":["/**\n * Generated by Orval, grouped by scripts/types-codegen/group_generated.ts\n * (group map from emit_openapi.py). Do not edit manually.\n * Group: customer_activity\n */\n\n\nexport interface CustomerActivityClassifierDefinitionResponse {\n detectorName: CustomerActivityClassifierDetectorName;\n subjectType: string;\n labels: CustomerActivityClassifierLabel[];\n}\n\nexport type CustomerActivityClassifierDetectorName = typeof CustomerActivityClassifierDetectorName[keyof typeof CustomerActivityClassifierDetectorName];\n\n\nexport const CustomerActivityClassifierDetectorName = {\n assignment_chat_classifier: 'assignment_chat_classifier',\n manager_chat_classifier: 'manager_chat_classifier',\n concierge_chat_classifier: 'concierge_chat_classifier',\n chat_review: 'chat_review',\n} as const;\n\nexport type CustomerActivityClassifierLabel = typeof CustomerActivityClassifierLabel[keyof typeof CustomerActivityClassifierLabel];\n\n\nexport const CustomerActivityClassifierLabel = {\n user_distress: 'user_distress',\n user_confusion: 'user_confusion',\n health_topic_mentioned: 'health_topic_mentioned',\n health_advice_given: 'health_advice_given',\n escalation_failure: 'escalation_failure',\n repeated_tool_failure: 'repeated_tool_failure',\n transcription_quality: 'transcription_quality',\n repetitive_loop: 'repetitive_loop',\n manager_no_response: 'manager_no_response',\n docs_or_skill_gap: 'docs_or_skill_gap',\n discovery_thrash: 'discovery_thrash',\n} as const;\n\nexport interface CustomerActivityClassifiersResponse {\n assignmentChatClassifier: CustomerActivityClassifierDefinitionResponse;\n managerChatClassifier: CustomerActivityClassifierDefinitionResponse;\n conciergeChatClassifier: CustomerActivityClassifierDefinitionResponse;\n}\n\nexport interface CustomerActivityEventListResponse {\n items: CustomerActivityEventResponse[];\n total: number;\n page: number;\n pageSize: number;\n totalPages: number;\n}\n\n/**\n * Admin/operator view of one customer-activity event.\n *\n * The list response remains free of operator-authored text. The single-event\n * detail response may include ``reviewNote`` and ``classifierFeedback`` for the\n * internal review workflow.\n */\nexport interface CustomerActivityEventResponse {\n id: number;\n uuid: string;\n accountId?: number | null;\n accountName?: string | null;\n organizationId?: number | null;\n organizationName?: string | null;\n workspaceId?: number | null;\n workspaceName?: string | null;\n subjectType: string;\n subjectRef: string;\n title?: string | null;\n labels: string[];\n severity: CustomerActivitySeverity;\n confidence?: number | null;\n score?: number | null;\n source: CustomerActivityEventSource;\n dedupeKey?: string | null;\n detectorName?: CustomerActivityClassifierDetectorName | null;\n detectorVersion?: string | null;\n modelId?: string | null;\n promptVersion?: string | null;\n status: CustomerActivityEventStatus;\n reviewOutcome?: CustomerActivityReviewOutcome | null;\n reviewNote?: string | null;\n classifierFeedback?: CustomerActivityEventResponseClassifierFeedback;\n linkUrl?: string | null;\n reviewedByAccountId?: number | null;\n reviewedByName?: string | null;\n reviewedAt?: string | null;\n supportRequestId?: number | null;\n resourceId?: number | null;\n workspaceUuid?: string | null;\n chatClassifierPrompt?: string | null;\n subjectTitle?: string | null;\n subjectSubtitle?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport type CustomerActivityEventResponseClassifierFeedback = { [key: string]: unknown } | null;\n\nexport type CustomerActivityEventSource = typeof CustomerActivityEventSource[keyof typeof CustomerActivityEventSource];\n\n\nexport const CustomerActivityEventSource = {\n system: 'system',\n customer: 'customer',\n classifier: 'classifier',\n operator: 'operator',\n} as const;\n\nexport type CustomerActivityEventStatus = typeof CustomerActivityEventStatus[keyof typeof CustomerActivityEventStatus];\n\n\nexport const CustomerActivityEventStatus = {\n new: 'new',\n reviewed: 'reviewed',\n} as const;\n\nexport type CustomerActivityReviewOutcome = typeof CustomerActivityReviewOutcome[keyof typeof CustomerActivityReviewOutcome];\n\n\nexport const CustomerActivityReviewOutcome = {\n no_action_needed: 'no_action_needed',\n support_request_created: 'support_request_created',\n bug_filed: 'bug_filed',\n linked_existing_work: 'linked_existing_work',\n classifier_feedback: 'classifier_feedback',\n test_activity: 'test_activity',\n} as const;\n\nexport type CustomerActivitySeverity = typeof CustomerActivitySeverity[keyof typeof CustomerActivitySeverity];\n\n\nexport const CustomerActivitySeverity = {\n none: 'none',\n minimal: 'minimal',\n low: 'low',\n medium: 'medium',\n high: 'high',\n critical: 'critical',\n} as const;\n","/**\n * Generated by Orval, grouped by scripts/types-codegen/group_generated.ts\n * (group map from emit_openapi.py). Do not edit manually.\n * Group: phi_posture\n */\n\nimport type { DeclaredDataUse } from './organization';\nimport type { PhiDataPolicy, PhiPostureDecision, PhiPostureReasonCode } from './workspace';\n\nexport type PhiPolicyReason = typeof PhiPolicyReason[keyof typeof PhiPolicyReason];\n\n\nexport const PhiPolicyReason = {\n initial_classification: 'initial_classification',\n customer_confirmation: 'customer_confirmation',\n agreement_verified: 'agreement_verified',\n scope_change: 'scope_change',\n periodic_review: 'periodic_review',\n correction: 'correction',\n incident_response: 'incident_response',\n} as const;\n\nexport type PhiPolicySource = typeof PhiPolicySource[keyof typeof PhiPolicySource];\n\n\nexport const PhiPolicySource = {\n customer_attestation: 'customer_attestation',\n contract_review: 'contract_review',\n staff_review: 'staff_review',\n legacy_inventory: 'legacy_inventory',\n} as const;\n\nexport interface PhiPostureFinding {\n reasonCode: PhiPostureReasonCode;\n organizationId: number;\n workspaceId?: number | null;\n workspaceUuid?: string | null;\n decision: PhiPostureDecision;\n}\n\nexport interface PhiPostureReportResponse {\n generatedAt: string;\n organizationCount: number;\n workspaceCount: number;\n findingCount: number;\n offset: number;\n limit: number;\n nextOffset?: number | null;\n findings: PhiPostureFinding[];\n truncated: boolean;\n}\n\nexport interface PhiPostureTransitionResponse {\n targetType: PhiPostureTransitionResponseTargetType;\n organizationId: number;\n workspaceId?: number | null;\n workspaceUuid?: string | null;\n declaredDataUse?: DeclaredDataUse | null;\n phiDataPolicy?: PhiDataPolicy | null;\n decision?: PhiPostureDecision | null;\n reasonCode?: PhiPostureReasonCode | null;\n policyVersion: string;\n source: string;\n reason: string;\n reviewedAt: string;\n reviewedByAccountId: number;\n reviewDueAt: string;\n}\n\nexport type PhiPostureTransitionResponseTargetType = typeof PhiPostureTransitionResponseTargetType[keyof typeof PhiPostureTransitionResponseTargetType];\n\n\nexport const PhiPostureTransitionResponseTargetType = {\n organization: 'organization',\n workspace: 'workspace',\n} as const;\n\nexport interface UpdateOrganizationPhiPostureRequest {\n /**\n * @minLength 1\n * @maxLength 64\n */\n policyVersion: string;\n source: PhiPolicySource;\n reason: PhiPolicyReason;\n reviewDueAt: string;\n declaredDataUse: DeclaredDataUse;\n}\n\nexport interface UpdateWorkspacePhiPolicyRequest {\n /**\n * @minLength 1\n * @maxLength 64\n */\n policyVersion: string;\n source: PhiPolicySource;\n reason: PhiPolicyReason;\n reviewDueAt: string;\n phiDataPolicy: PhiDataPolicy;\n}\n","/**\n * Generated by Orval, grouped by scripts/types-codegen/group_generated.ts\n * (group map from emit_openapi.py). Do not edit manually.\n * Group: workspace\n */\n\nimport type { Query } from './ir';\n\n/**\n * Admin request to create a user's membership in a workspace.\n */\nexport interface AdminCreateWorkspaceMemberRequest {\n memberRoleId?: number | null;\n}\n\n/**\n * Request model for admin workspace operations.\n */\nexport interface AdminCreateWorkspaceRequest {\n organizationId: number;\n name?: string | null;\n slug?: string | null;\n signupCode?: string | null;\n isPublic?: boolean | null;\n allowSignup?: boolean | null;\n resellerId?: number | null;\n templateWorkspaceUuid?: string | null;\n locale?: string | null;\n features?: string[] | null;\n chatClassifierPrompt?: string | null;\n subscriptionProductId?: number | null;\n}\n\n/**\n * Admin request to map a site to a workspace.\n */\nexport interface AdminMapSiteRequest {\n workspaceId?: number | null;\n siteUuid: string;\n name?: string | null;\n siteSlug?: string | null;\n externalDomain?: string | null;\n ownerId?: number | null;\n allowSignup?: boolean;\n}\n\n/**\n * Response model for site mappings.\n */\nexport interface AdminSiteMappingResponse {\n id: number;\n siteId: number;\n siteUuid: string;\n siteName: string;\n siteSlug: string;\n externalDomain?: string | null;\n workspaceId: number;\n workspaceUuid: string;\n workspaceName: string;\n workspaceSlug: string;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * Admin request to update a user's membership in a workspace.\n */\nexport interface AdminUpdateWorkspaceMemberRequest {\n tosAccepted?: boolean | null;\n memberRoleId?: number | null;\n}\n\n/**\n * Request model for admin workspace operations.\n */\nexport interface AdminUpdateWorkspaceRequest {\n organizationId?: number | null;\n name?: string | null;\n slug?: string | null;\n signupCode?: string | null;\n isPublic?: boolean | null;\n allowSignup?: boolean | null;\n resellerId?: number | null;\n creatorId?: number | null;\n features?: string[] | null;\n featuresOverride?: AdminUpdateWorkspaceRequestFeaturesOverride;\n themes?: string[] | null;\n locale?: string | null;\n timezone?: string | null;\n chatClassifierPrompt?: string | null;\n}\n\nexport type AdminUpdateWorkspaceRequestFeaturesOverride = {[key: string]: boolean} | null;\n\nexport interface AdminWorkspaceResponse {\n id: number;\n uuid: string;\n slug: string;\n name: string;\n organizationId: number;\n organizationUuid?: string | null;\n organizationName?: string | null;\n organizationLogoUrl?: string | null;\n signupCode?: string | null;\n createdAt: string;\n userRole: string | null;\n isPublic?: boolean;\n allowSignup?: boolean;\n resellerId?: number | null;\n themes?: string[];\n features?: string[] | null;\n featureStatus?: AdminWorkspaceResponseFeatureStatus;\n signupRequestStatus?: string | null;\n status?: number | null;\n locale?: string | null;\n timezone?: string | null;\n pendingSetupSpecIds?: number[];\n creatorId?: number | null;\n creatorName?: string | null;\n dbId?: number | null;\n featuresOverride?: AdminWorkspaceResponseFeaturesOverride;\n billingOwnerId?: number | null;\n billingOwnerName?: string | null;\n subscriptionProductId?: number | null;\n subscriptionProductName?: string | null;\n chatClassifierPrompt?: string | null;\n phiDataPolicy?: PhiDataPolicy;\n phiPostureDecision?: PhiPostureDecision;\n phiPostureReasonCode?: PhiPostureReasonCode;\n phiPolicyVersion?: string | null;\n phiPolicySource?: string | null;\n phiPolicyReason?: string | null;\n phiPolicyReviewedAt?: string | null;\n phiPolicyReviewedByAccountId?: number | null;\n phiPolicyReviewDueAt?: string | null;\n}\n\nexport type AdminWorkspaceResponseFeatureStatus = {[key: string]: string} | null;\n\nexport type AdminWorkspaceResponseFeaturesOverride = {[key: string]: boolean} | null;\n\nexport interface BusinessHoursStatusResponse {\n isBusinessHours: boolean;\n}\n\n/**\n * Typed body for the CLI-facing ``change-org`` / ``change-org/preview``\n * admin endpoints.\n *\n * Typing ``targetOrganizationId`` / ``newCreatorId`` as ``int`` makes FastAPI\n * return 422 on a non-numeric body field instead of letting a string value\n * reach the DB driver. Mirrors the superuser\n * ``WorkspaceMigrationRequest`` model used by the sibling\n * ``POST /admin/org-migration/workspace`` endpoint.\n */\nexport interface ChangeWorkspaceOrgRequest {\n /**\n * ID of the target organization\n * @exclusiveMinimum 0\n */\n targetOrganizationId: number;\n /**\n * Account ID to set as the workspace creator (created or promoted to OWNER in the target org)\n * @exclusiveMinimum 0\n */\n newCreatorId: number;\n}\n\nexport interface ClassifyPhoneResponse {\n phoneType?: string | null;\n}\n\nexport interface CostInfo {\n score: number;\n budget: number;\n}\n\n/**\n * Request model for associating data records with assignments.\n */\nexport interface DataRecordAssociationRequest {\n id: number;\n accessMode?: number;\n}\n\nexport interface DeleteMembershipResponse {\n message: string;\n}\n\nexport interface DeleteWorkspaceResponse {\n status: string;\n}\n\nexport interface FirstRunState {\n mode?: string;\n statuses?: FirstRunStateStatuses;\n collapsed?: boolean | null;\n}\n\nexport type FirstRunStateStatuses = {[key: string]: string} | null;\n\n/**\n * Create request for org-scoped workspace creation.\n *\n * Only allows fields appropriate for org admins.\n * Does NOT allow: resellerId, features, featuresOverride, isPublic, allowSignup.\n */\nexport interface OrgCreateWorkspaceRequest {\n name: string;\n slug?: string | null;\n templateWorkspaceUuid?: string | null;\n productId: number;\n planPeriod?: string;\n}\n\n/**\n * Request to join a workspace as an org admin.\n */\nexport interface OrgJoinWorkspaceRequest {\n memberRoleId: number;\n}\n\n/**\n * Response after joining a workspace.\n */\nexport interface OrgJoinWorkspaceResponse {\n memberId: number;\n memberRoleId: number;\n message: string;\n}\n\n/**\n * Update request for org-scoped workspace updates.\n *\n * Only allows fields that org admins should be able to change.\n * Does NOT allow: features, featuresOverride, organizationId, resellerId,\n * creatorId, themes.\n */\nexport interface OrgUpdateWorkspaceRequest {\n name?: string | null;\n slug?: string | null;\n signupCode?: string | null;\n isPublic?: boolean | null;\n allowSignup?: boolean | null;\n locale?: string | null;\n timezone?: string | null;\n}\n\n/**\n * Workspace response for org context.\n *\n * Similar to AdminWorkspaceResponse but without superuser-only fields\n * like dbId, featuresOverride, billingOwnerId, etc.\n */\nexport interface OrgWorkspaceResponse {\n id: number;\n uuid: string;\n slug: string;\n name: string;\n organizationId: number;\n organizationUuid?: string | null;\n organizationName?: string | null;\n signupCode?: string | null;\n createdAt: string;\n isPublic?: boolean;\n allowSignup?: boolean;\n resellerId?: number | null;\n status: number;\n features?: string[] | null;\n featureStatus?: OrgWorkspaceResponseFeatureStatus;\n creatorId?: number | null;\n creatorName?: string | null;\n locale?: string | null;\n timezone?: string | null;\n isMember?: boolean;\n}\n\nexport type OrgWorkspaceResponseFeatureStatus = {[key: string]: string} | null;\n\nexport type PhiDataPolicy = typeof PhiDataPolicy[keyof typeof PhiDataPolicy];\n\n\nexport const PhiDataPolicy = {\n unclassified: 'unclassified',\n phi_prohibited: 'phi_prohibited',\n phi_permitted: 'phi_permitted',\n} as const;\n\nexport type PhiPostureDecision = typeof PhiPostureDecision[keyof typeof PhiPostureDecision];\n\n\nexport const PhiPostureDecision = {\n allow_non_phi: 'allow_non_phi',\n warn_non_phi: 'warn_non_phi',\n review_required: 'review_required',\n authorization_required: 'authorization_required',\n conflict: 'conflict',\n} as const;\n\nexport type PhiPostureReasonCode = typeof PhiPostureReasonCode[keyof typeof PhiPostureReasonCode];\n\n\nexport const PhiPostureReasonCode = {\n org_unclassified: 'org_unclassified',\n workspace_unclassified: 'workspace_unclassified',\n non_phi_policy_aligned: 'non_phi_policy_aligned',\n phi_expected_workspace_prohibited: 'phi_expected_workspace_prohibited',\n phi_authorization_not_evaluated: 'phi_authorization_not_evaluated',\n non_phi_org_workspace_permitted: 'non_phi_org_workspace_permitted',\n phi_permitted_org_not_expected: 'phi_permitted_org_not_expected',\n organization_review_expired: 'organization_review_expired',\n workspace_review_expired: 'workspace_review_expired',\n invalid_state: 'invalid_state',\n} as const;\n\nexport interface PublicWorkspaceResponse {\n id: number;\n uuid: string;\n slug: string;\n name: string;\n createdAt: string;\n allowSignup?: boolean;\n resellerId?: number | null;\n memberRole?: string | null;\n signupRequestStatus?: string | null;\n}\n\nexport interface QueryDataTypeInfo {\n id: number;\n slug: string;\n name: string;\n isCollection: boolean;\n recordFields: RecordFieldInfo[];\n}\n\n/**\n * A labeled choice for a field whose raw values are ids/codes.\n */\nexport interface QueryEnumOption {\n value: unknown;\n label: string;\n color?: string | null;\n}\n\nexport interface QueryFieldInfo {\n path: string;\n type: string;\n operators: string[];\n sortable?: boolean;\n selectable?: boolean;\n enumValues?: unknown[] | null;\n enumOptions?: QueryEnumOption[] | null;\n displayName?: string | null;\n category?: string | null;\n}\n\nexport interface QueryFieldsResponse {\n entities: QueryFieldsResponseEntities;\n aggregateSources: QueryFieldsResponseAggregateSources;\n dataTypes: QueryDataTypeInfo[];\n recordSystemFields: QueryFieldInfo[];\n relations?: QueryFieldsResponseRelations;\n aggregateSourceCategories?: QueryFieldsResponseAggregateSourceCategories;\n}\n\nexport type QueryFieldsResponseAggregateSourceCategories = {[key: string]: {[key: string]: string}};\n\nexport type QueryFieldsResponseAggregateSources = {[key: string]: string[]};\n\nexport type QueryFieldsResponseEntities = {[key: string]: QueryFieldInfo[]};\n\nexport type QueryFieldsResponseRelations = {[key: string]: {[key: string]: QueryFieldInfo[]}};\n\nexport interface RecordFieldInfo {\n slug: string;\n name: string;\n type: string;\n operators: string[];\n enumValues?: unknown[] | null;\n}\n\nexport interface RunQueryRequest {\n query: Query;\n mode?: RunQueryRequestMode;\n}\n\nexport type RunQueryRequestMode = typeof RunQueryRequestMode[keyof typeof RunQueryRequestMode] | null;\n\n\nexport const RunQueryRequestMode = {\n rows: 'rows',\n count: 'count',\n aggregate: 'aggregate',\n} as const;\n\nexport interface RunQueryResponse {\n mode: string;\n items?: RunQueryResponseItems;\n nextCursor?: string | null;\n count?: number | null;\n rows?: RunQueryResponseRows;\n warnings?: string[];\n cost?: CostInfo | null;\n}\n\nexport type RunQueryResponseItems = { [key: string]: unknown }[] | null;\n\nexport type RunQueryResponseRows = { [key: string]: unknown }[] | null;\n\n/**\n * Request model for associating child tasks (parent-child relationships).\n *\n * ``order`` is optional and backward-compatible: when omitted, callers\n * that build associations from a UI-style ``childTasks`` list keep the\n * historical array-index ordering. When provided (e.g. by the workspace\n * transfer importer), it preserves the authored routing order so that\n * automatic routing still selects the lower-order matching child after\n * transfer.\n */\nexport interface TaskAssociationRequest {\n taskId: number;\n autoNext: boolean;\n required: boolean;\n choicePrompt?: string | null;\n celCondition?: string | null;\n order?: number | null;\n}\n\n/**\n * Update workspace defaults.\n */\nexport interface UpdateWorkspaceDefaultsRequest {\n defaultPhoneNumberId?: number | null;\n defaultAgentId?: number | null;\n escalationBusinessHours?: string | null;\n escalationOnlineMessageTemplate?: string | null;\n escalationOfflineMessageTemplate?: string | null;\n escalationNotifiedMessageTemplate?: string | null;\n escalationPausedMessageTemplate?: string | null;\n emailFooter?: string | null;\n pauseOnEscalate?: boolean | null;\n enableAudioRecording?: boolean | null;\n enableVoicemailDetection?: boolean | null;\n transcriptionModel?: string | null;\n}\n\n/**\n * Update a workspace.\n */\nexport interface UpdateWorkspaceRequest {\n name?: string | null;\n slug?: string | null;\n signupCode?: string | null;\n isPublic?: boolean | null;\n allowSignup?: boolean | null;\n locale?: string | null;\n timezone?: string | null;\n}\n\nexport interface ValidateQueryResponse {\n valid: boolean;\n cost: CostInfo;\n warnings?: string[];\n errors?: string[];\n}\n\n/**\n * Slim view of an OrgDomain for selection in workspace forms.\n *\n * Intentionally smaller than `OrgDomainResponse` — workspace members\n * don't need ownership tokens, DNS records, last-checked timestamps,\n * etc. Just enough to populate a dropdown, pass the uuid back as a\n * foreign reference (e.g. `orgDomainUuid` on inbox creation), and\n * let the UI mark non-verified entries as disabled with a reason.\n */\nexport interface WorkspaceAvailableDomain {\n uuid: string;\n domain: string;\n ownershipStatus: string;\n emailStatus?: string | null;\n siteStatus?: string | null;\n}\n\nexport interface WorkspaceAvailableDomainsResponse {\n items: WorkspaceAvailableDomain[];\n total: number;\n}\n\n/**\n * Response model for workspace counts.\n */\nexport interface WorkspaceCountsResponse {\n humans: number;\n agents: number;\n tasks: number;\n workflows: number;\n inboxes: number;\n phoneNumbers: number;\n chats: number;\n files: number;\n sites: number;\n forms: number;\n}\n\n/**\n * Request model for joining a workspace.\n */\nexport interface WorkspaceJoinRequest {\n memberRoleId: number;\n orgRole?: string | null;\n}\n\n/**\n * Response model for joining a workspace.\n */\nexport interface WorkspaceJoinResponse {\n success: boolean;\n memberUuid: string;\n memberId: number;\n workspaceUuid: string;\n workspaceName: string;\n memberRoleName: string;\n message: string;\n}\n\nexport interface WorkspaceResponse {\n id: number;\n uuid: string;\n slug: string;\n name: string;\n organizationId: number;\n organizationUuid?: string | null;\n organizationName?: string | null;\n organizationLogoUrl?: string | null;\n signupCode?: string | null;\n createdAt: string;\n userRole: string | null;\n isPublic?: boolean;\n allowSignup?: boolean;\n resellerId?: number | null;\n themes?: string[];\n features?: string[] | null;\n featureStatus?: WorkspaceResponseFeatureStatus;\n signupRequestStatus?: string | null;\n status?: number | null;\n locale?: string | null;\n timezone?: string | null;\n pendingSetupSpecIds?: number[];\n}\n\nexport type WorkspaceResponseFeatureStatus = {[key: string]: string} | null;\n\n/**\n * Individual scope metadata.\n */\nexport interface WorkspaceScopeResponse {\n name: string;\n category: string;\n description: string;\n implies?: string[];\n dangerous?: boolean;\n}\n\n/**\n * Response containing all workspace-grantable scopes.\n */\nexport interface WorkspaceScopesListResponse {\n items: WorkspaceScopeResponse[];\n categories: string[];\n}\n\nexport interface WorkspaceSettingsResponse {\n id: number;\n slug: string;\n defaultPhoneNumberId: number | null;\n defaultAgentId: number | null;\n workspaceFolderId?: number | null;\n escalationBusinessHours: string | null;\n escalationOnlineMessageTemplate: string | null;\n escalationOfflineMessageTemplate: string | null;\n escalationNotifiedMessageTemplate: string | null;\n escalationPausedMessageTemplate: string | null;\n emailFooter: string | null;\n pauseOnEscalate: boolean;\n sesDomain: string;\n enableAudioRecording: boolean;\n enableVoicemailDetection: boolean;\n transcriptionModel?: string | null;\n defaultChatModel: string;\n defaultRealtimeModel: string;\n defaultInferenceModel: string;\n defaultVoiceModel: string;\n firstRunMode?: string | null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBO,IAAM,yCAAyC;AAAA,EACpD,4BAA4B;AAAA,EAC5B,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,aAAa;AACf;AAKO,IAAM,kCAAkC;AAAA,EAC7C,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,wBAAwB;AAAA,EACxB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,kBAAkB;AACpB;AAoEO,IAAM,8BAA8B;AAAA,EACzC,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AACZ;AAKO,IAAM,8BAA8B;AAAA,EACzC,KAAK;AAAA,EACL,UAAU;AACZ;AAKO,IAAM,gCAAgC;AAAA,EAC3C,kBAAkB;AAAA,EAClB,yBAAyB;AAAA,EACzB,WAAW;AAAA,EACX,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,eAAe;AACjB;AAKO,IAAM,2BAA2B;AAAA,EACtC,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AACZ;;;ACnIO,IAAM,kBAAkB;AAAA,EAC7B,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,mBAAmB;AACrB;AAKO,IAAM,kBAAkB;AAAA,EAC7B,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,kBAAkB;AACpB;AA0CO,IAAM,yCAAyC;AAAA,EACpD,cAAc;AAAA,EACd,WAAW;AACb;;;AC+MO,IAAM,gBAAgB;AAAA,EAC3B,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,eAAe;AACjB;AAKO,IAAM,qBAAqB;AAAA,EAChC,eAAe;AAAA,EACf,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,wBAAwB;AAAA,EACxB,UAAU;AACZ;AAKO,IAAM,uBAAuB;AAAA,EAClC,kBAAkB;AAAA,EAClB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,mCAAmC;AAAA,EACnC,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,gCAAgC;AAAA,EAChC,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,eAAe;AACjB;","names":[]}
1
+ {"version":3,"sources":["../src/types/generated/customer_activity.ts","../src/types/generated/phi_posture.ts","../src/types/generated/workspace.ts"],"sourcesContent":["/**\n * Generated by Orval, grouped by scripts/types-codegen/group_generated.ts\n * (group map from emit_openapi.py). Do not edit manually.\n * Group: customer_activity\n */\n\n\nexport interface CustomerActivityClassifierDefinitionResponse {\n detectorName: CustomerActivityClassifierDetectorName;\n subjectType: string;\n labels: CustomerActivityClassifierLabel[];\n}\n\nexport type CustomerActivityClassifierDetectorName = typeof CustomerActivityClassifierDetectorName[keyof typeof CustomerActivityClassifierDetectorName];\n\n\nexport const CustomerActivityClassifierDetectorName = {\n assignment_chat_classifier: 'assignment_chat_classifier',\n manager_chat_classifier: 'manager_chat_classifier',\n concierge_chat_classifier: 'concierge_chat_classifier',\n chat_review: 'chat_review',\n} as const;\n\nexport type CustomerActivityClassifierLabel = typeof CustomerActivityClassifierLabel[keyof typeof CustomerActivityClassifierLabel];\n\n\nexport const CustomerActivityClassifierLabel = {\n user_distress: 'user_distress',\n user_confusion: 'user_confusion',\n health_topic_mentioned: 'health_topic_mentioned',\n health_advice_given: 'health_advice_given',\n escalation_failure: 'escalation_failure',\n repeated_tool_failure: 'repeated_tool_failure',\n transcription_quality: 'transcription_quality',\n repetitive_loop: 'repetitive_loop',\n manager_no_response: 'manager_no_response',\n docs_or_skill_gap: 'docs_or_skill_gap',\n discovery_thrash: 'discovery_thrash',\n} as const;\n\nexport interface CustomerActivityClassifiersResponse {\n assignmentChatClassifier: CustomerActivityClassifierDefinitionResponse;\n managerChatClassifier: CustomerActivityClassifierDefinitionResponse;\n conciergeChatClassifier: CustomerActivityClassifierDefinitionResponse;\n}\n\nexport interface CustomerActivityEventListResponse {\n items: CustomerActivityEventResponse[];\n total: number;\n page: number;\n pageSize: number;\n totalPages: number;\n}\n\n/**\n * Admin/operator view of one customer-activity event.\n *\n * The list response remains free of operator-authored text. The single-event\n * detail response may include ``reviewNote`` and ``classifierFeedback`` for the\n * internal review workflow.\n */\nexport interface CustomerActivityEventResponse {\n id: number;\n uuid: string;\n accountId?: number | null;\n accountName?: string | null;\n organizationId?: number | null;\n organizationName?: string | null;\n workspaceId?: number | null;\n workspaceName?: string | null;\n subjectType: string;\n subjectRef: string;\n title?: string | null;\n labels: string[];\n severity: CustomerActivitySeverity;\n confidence?: number | null;\n score?: number | null;\n source: CustomerActivityEventSource;\n dedupeKey?: string | null;\n detectorName?: CustomerActivityClassifierDetectorName | null;\n detectorVersion?: string | null;\n modelId?: string | null;\n promptVersion?: string | null;\n status: CustomerActivityEventStatus;\n reviewOutcome?: CustomerActivityReviewOutcome | null;\n reviewNote?: string | null;\n classifierFeedback?: CustomerActivityEventResponseClassifierFeedback;\n linkUrl?: string | null;\n reviewedByAccountId?: number | null;\n reviewedByName?: string | null;\n reviewedAt?: string | null;\n supportRequestId?: number | null;\n resourceId?: number | null;\n workspaceUuid?: string | null;\n chatClassifierPrompt?: string | null;\n subjectTitle?: string | null;\n subjectSubtitle?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport type CustomerActivityEventResponseClassifierFeedback = { [key: string]: unknown } | null;\n\nexport type CustomerActivityEventSource = typeof CustomerActivityEventSource[keyof typeof CustomerActivityEventSource];\n\n\nexport const CustomerActivityEventSource = {\n system: 'system',\n customer: 'customer',\n classifier: 'classifier',\n operator: 'operator',\n} as const;\n\nexport type CustomerActivityEventStatus = typeof CustomerActivityEventStatus[keyof typeof CustomerActivityEventStatus];\n\n\nexport const CustomerActivityEventStatus = {\n new: 'new',\n reviewed: 'reviewed',\n} as const;\n\nexport type CustomerActivityReviewOutcome = typeof CustomerActivityReviewOutcome[keyof typeof CustomerActivityReviewOutcome];\n\n\nexport const CustomerActivityReviewOutcome = {\n no_action_needed: 'no_action_needed',\n support_request_created: 'support_request_created',\n bug_filed: 'bug_filed',\n linked_existing_work: 'linked_existing_work',\n classifier_feedback: 'classifier_feedback',\n test_activity: 'test_activity',\n} as const;\n\nexport type CustomerActivitySeverity = typeof CustomerActivitySeverity[keyof typeof CustomerActivitySeverity];\n\n\nexport const CustomerActivitySeverity = {\n none: 'none',\n minimal: 'minimal',\n low: 'low',\n medium: 'medium',\n high: 'high',\n critical: 'critical',\n} as const;\n","/**\n * Generated by Orval, grouped by scripts/types-codegen/group_generated.ts\n * (group map from emit_openapi.py). Do not edit manually.\n * Group: phi_posture\n */\n\nimport type { DeclaredDataUse } from './organization';\nimport type { PhiDataPolicy, PhiPostureDecision, PhiPostureReasonCode } from './workspace';\n\nexport type PhiPolicyReason = typeof PhiPolicyReason[keyof typeof PhiPolicyReason];\n\n\nexport const PhiPolicyReason = {\n initial_classification: 'initial_classification',\n customer_confirmation: 'customer_confirmation',\n agreement_verified: 'agreement_verified',\n scope_change: 'scope_change',\n periodic_review: 'periodic_review',\n correction: 'correction',\n incident_response: 'incident_response',\n} as const;\n\nexport type PhiPolicySource = typeof PhiPolicySource[keyof typeof PhiPolicySource];\n\n\nexport const PhiPolicySource = {\n customer_attestation: 'customer_attestation',\n contract_review: 'contract_review',\n staff_review: 'staff_review',\n legacy_inventory: 'legacy_inventory',\n} as const;\n\nexport interface PhiPostureFinding {\n reasonCode: PhiPostureReasonCode;\n organizationId: number;\n workspaceId?: number | null;\n workspaceUuid?: string | null;\n decision: PhiPostureDecision;\n}\n\nexport interface PhiPostureReportResponse {\n generatedAt: string;\n organizationCount: number;\n workspaceCount: number;\n findingCount: number;\n offset: number;\n limit: number;\n nextOffset?: number | null;\n findings: PhiPostureFinding[];\n truncated: boolean;\n}\n\nexport interface PhiPostureTransitionResponse {\n targetType: PhiPostureTransitionResponseTargetType;\n organizationId: number;\n workspaceId?: number | null;\n workspaceUuid?: string | null;\n declaredDataUse?: DeclaredDataUse | null;\n phiDataPolicy?: PhiDataPolicy | null;\n decision?: PhiPostureDecision | null;\n reasonCode?: PhiPostureReasonCode | null;\n policyVersion: string;\n source: string;\n reason: string;\n reviewedAt: string;\n reviewedByAccountId: number;\n reviewDueAt: string;\n}\n\nexport type PhiPostureTransitionResponseTargetType = typeof PhiPostureTransitionResponseTargetType[keyof typeof PhiPostureTransitionResponseTargetType];\n\n\nexport const PhiPostureTransitionResponseTargetType = {\n organization: 'organization',\n workspace: 'workspace',\n} as const;\n\nexport interface UpdateOrganizationPhiPostureRequest {\n /**\n * @minLength 1\n * @maxLength 64\n */\n policyVersion: string;\n source: PhiPolicySource;\n reason: PhiPolicyReason;\n reviewDueAt: string;\n declaredDataUse: DeclaredDataUse;\n}\n\nexport interface UpdateWorkspacePhiPolicyRequest {\n /**\n * @minLength 1\n * @maxLength 64\n */\n policyVersion: string;\n source: PhiPolicySource;\n reason: PhiPolicyReason;\n reviewDueAt: string;\n phiDataPolicy: PhiDataPolicy;\n}\n","/**\n * Generated by Orval, grouped by scripts/types-codegen/group_generated.ts\n * (group map from emit_openapi.py). Do not edit manually.\n * Group: workspace\n */\n\nimport type { Query } from './ir';\n\n/**\n * Admin request to create a user's membership in a workspace.\n */\nexport interface AdminCreateWorkspaceMemberRequest {\n memberRoleId?: number | null;\n}\n\n/**\n * Request model for admin workspace operations.\n */\nexport interface AdminCreateWorkspaceRequest {\n organizationId: number;\n name?: string | null;\n slug?: string | null;\n signupCode?: string | null;\n isPublic?: boolean | null;\n allowSignup?: boolean | null;\n resellerId?: number | null;\n templateWorkspaceUuid?: string | null;\n locale?: string | null;\n features?: string[] | null;\n chatClassifierPrompt?: string | null;\n subscriptionProductId?: number | null;\n}\n\n/**\n * Admin request to map a site to a workspace.\n */\nexport interface AdminMapSiteRequest {\n workspaceId?: number | null;\n siteUuid: string;\n name?: string | null;\n siteSlug?: string | null;\n externalDomain?: string | null;\n ownerId?: number | null;\n allowSignup?: boolean;\n}\n\n/**\n * Response model for site mappings.\n */\nexport interface AdminSiteMappingResponse {\n id: number;\n siteId: number;\n siteUuid: string;\n siteName: string;\n siteSlug: string;\n externalDomain?: string | null;\n workspaceId: number;\n workspaceUuid: string;\n workspaceName: string;\n workspaceSlug: string;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * Admin request to update a user's membership in a workspace.\n */\nexport interface AdminUpdateWorkspaceMemberRequest {\n tosAccepted?: boolean | null;\n memberRoleId?: number | null;\n}\n\n/**\n * Request model for admin workspace operations.\n */\nexport interface AdminUpdateWorkspaceRequest {\n organizationId?: number | null;\n name?: string | null;\n slug?: string | null;\n signupCode?: string | null;\n isPublic?: boolean | null;\n allowSignup?: boolean | null;\n resellerId?: number | null;\n creatorId?: number | null;\n features?: string[] | null;\n featuresOverride?: AdminUpdateWorkspaceRequestFeaturesOverride;\n themes?: string[] | null;\n locale?: string | null;\n timezone?: string | null;\n chatClassifierPrompt?: string | null;\n}\n\nexport type AdminUpdateWorkspaceRequestFeaturesOverride = {[key: string]: boolean} | null;\n\nexport interface AdminWorkspaceResponse {\n id: number;\n uuid: string;\n slug: string;\n name: string;\n organizationId: number;\n organizationUuid?: string | null;\n organizationName?: string | null;\n organizationLogoUrl?: string | null;\n signupCode?: string | null;\n createdAt: string;\n userRole: string | null;\n isPublic?: boolean;\n allowSignup?: boolean;\n resellerId?: number | null;\n themes?: string[];\n features?: string[] | null;\n featureStatus?: AdminWorkspaceResponseFeatureStatus;\n signupRequestStatus?: string | null;\n status?: number | null;\n locale?: string | null;\n timezone?: string | null;\n creatorId?: number | null;\n creatorName?: string | null;\n dbId?: number | null;\n featuresOverride?: AdminWorkspaceResponseFeaturesOverride;\n billingOwnerId?: number | null;\n billingOwnerName?: string | null;\n subscriptionProductId?: number | null;\n subscriptionProductName?: string | null;\n chatClassifierPrompt?: string | null;\n phiDataPolicy?: PhiDataPolicy;\n phiPostureDecision?: PhiPostureDecision;\n phiPostureReasonCode?: PhiPostureReasonCode;\n phiPolicyVersion?: string | null;\n phiPolicySource?: string | null;\n phiPolicyReason?: string | null;\n phiPolicyReviewedAt?: string | null;\n phiPolicyReviewedByAccountId?: number | null;\n phiPolicyReviewDueAt?: string | null;\n}\n\nexport type AdminWorkspaceResponseFeatureStatus = {[key: string]: string} | null;\n\nexport type AdminWorkspaceResponseFeaturesOverride = {[key: string]: boolean} | null;\n\nexport interface BusinessHoursStatusResponse {\n isBusinessHours: boolean;\n}\n\n/**\n * Typed body for the CLI-facing ``change-org`` / ``change-org/preview``\n * admin endpoints.\n *\n * Typing ``targetOrganizationId`` / ``newCreatorId`` as ``int`` makes FastAPI\n * return 422 on a non-numeric body field instead of letting a string value\n * reach the DB driver. Mirrors the superuser\n * ``WorkspaceMigrationRequest`` model used by the sibling\n * ``POST /admin/org-migration/workspace`` endpoint.\n */\nexport interface ChangeWorkspaceOrgRequest {\n /**\n * ID of the target organization\n * @exclusiveMinimum 0\n */\n targetOrganizationId: number;\n /**\n * Account ID to set as the workspace creator (created or promoted to OWNER in the target org)\n * @exclusiveMinimum 0\n */\n newCreatorId: number;\n}\n\nexport interface ClassifyPhoneResponse {\n phoneType?: string | null;\n}\n\nexport interface CostInfo {\n score: number;\n budget: number;\n}\n\n/**\n * Request model for associating data records with assignments.\n */\nexport interface DataRecordAssociationRequest {\n id: number;\n accessMode?: number;\n}\n\nexport interface DeleteMembershipResponse {\n message: string;\n}\n\nexport interface DeleteWorkspaceResponse {\n status: string;\n}\n\nexport interface FirstRunState {\n mode?: string;\n statuses?: FirstRunStateStatuses;\n collapsed?: boolean | null;\n}\n\nexport type FirstRunStateStatuses = {[key: string]: string} | null;\n\n/**\n * Create request for org-scoped workspace creation.\n *\n * Only allows fields appropriate for org admins.\n * Does NOT allow: resellerId, features, featuresOverride, isPublic, allowSignup.\n */\nexport interface OrgCreateWorkspaceRequest {\n name: string;\n slug?: string | null;\n templateWorkspaceUuid?: string | null;\n productId: number;\n planPeriod?: string;\n}\n\n/**\n * Request to join a workspace as an org admin.\n */\nexport interface OrgJoinWorkspaceRequest {\n memberRoleId: number;\n}\n\n/**\n * Response after joining a workspace.\n */\nexport interface OrgJoinWorkspaceResponse {\n memberId: number;\n memberRoleId: number;\n message: string;\n}\n\n/**\n * Update request for org-scoped workspace updates.\n *\n * Only allows fields that org admins should be able to change.\n * Does NOT allow: features, featuresOverride, organizationId, resellerId,\n * creatorId, themes.\n */\nexport interface OrgUpdateWorkspaceRequest {\n name?: string | null;\n slug?: string | null;\n signupCode?: string | null;\n isPublic?: boolean | null;\n allowSignup?: boolean | null;\n locale?: string | null;\n timezone?: string | null;\n}\n\n/**\n * Workspace response for org context.\n *\n * Similar to AdminWorkspaceResponse but without superuser-only fields\n * like dbId, featuresOverride, billingOwnerId, etc.\n */\nexport interface OrgWorkspaceResponse {\n id: number;\n uuid: string;\n slug: string;\n name: string;\n organizationId: number;\n organizationUuid?: string | null;\n organizationName?: string | null;\n signupCode?: string | null;\n createdAt: string;\n isPublic?: boolean;\n allowSignup?: boolean;\n resellerId?: number | null;\n status: number;\n features?: string[] | null;\n featureStatus?: OrgWorkspaceResponseFeatureStatus;\n creatorId?: number | null;\n creatorName?: string | null;\n locale?: string | null;\n timezone?: string | null;\n isMember?: boolean;\n}\n\nexport type OrgWorkspaceResponseFeatureStatus = {[key: string]: string} | null;\n\nexport type PhiDataPolicy = typeof PhiDataPolicy[keyof typeof PhiDataPolicy];\n\n\nexport const PhiDataPolicy = {\n unclassified: 'unclassified',\n phi_prohibited: 'phi_prohibited',\n phi_permitted: 'phi_permitted',\n} as const;\n\nexport type PhiPostureDecision = typeof PhiPostureDecision[keyof typeof PhiPostureDecision];\n\n\nexport const PhiPostureDecision = {\n allow_non_phi: 'allow_non_phi',\n warn_non_phi: 'warn_non_phi',\n review_required: 'review_required',\n authorization_required: 'authorization_required',\n conflict: 'conflict',\n} as const;\n\nexport type PhiPostureReasonCode = typeof PhiPostureReasonCode[keyof typeof PhiPostureReasonCode];\n\n\nexport const PhiPostureReasonCode = {\n org_unclassified: 'org_unclassified',\n workspace_unclassified: 'workspace_unclassified',\n non_phi_policy_aligned: 'non_phi_policy_aligned',\n phi_expected_workspace_prohibited: 'phi_expected_workspace_prohibited',\n phi_authorization_not_evaluated: 'phi_authorization_not_evaluated',\n non_phi_org_workspace_permitted: 'non_phi_org_workspace_permitted',\n phi_permitted_org_not_expected: 'phi_permitted_org_not_expected',\n organization_review_expired: 'organization_review_expired',\n workspace_review_expired: 'workspace_review_expired',\n invalid_state: 'invalid_state',\n} as const;\n\nexport interface PublicWorkspaceResponse {\n id: number;\n uuid: string;\n slug: string;\n name: string;\n createdAt: string;\n allowSignup?: boolean;\n resellerId?: number | null;\n memberRole?: string | null;\n signupRequestStatus?: string | null;\n}\n\nexport interface QueryDataTypeInfo {\n id: number;\n slug: string;\n name: string;\n isCollection: boolean;\n recordFields: RecordFieldInfo[];\n}\n\n/**\n * A labeled choice for a field whose raw values are ids/codes.\n */\nexport interface QueryEnumOption {\n value: unknown;\n label: string;\n color?: string | null;\n}\n\nexport interface QueryFieldInfo {\n path: string;\n type: string;\n operators: string[];\n sortable?: boolean;\n selectable?: boolean;\n enumValues?: unknown[] | null;\n enumOptions?: QueryEnumOption[] | null;\n displayName?: string | null;\n category?: string | null;\n}\n\nexport interface QueryFieldsResponse {\n entities: QueryFieldsResponseEntities;\n aggregateSources: QueryFieldsResponseAggregateSources;\n dataTypes: QueryDataTypeInfo[];\n recordSystemFields: QueryFieldInfo[];\n relations?: QueryFieldsResponseRelations;\n aggregateSourceCategories?: QueryFieldsResponseAggregateSourceCategories;\n}\n\nexport type QueryFieldsResponseAggregateSourceCategories = {[key: string]: {[key: string]: string}};\n\nexport type QueryFieldsResponseAggregateSources = {[key: string]: string[]};\n\nexport type QueryFieldsResponseEntities = {[key: string]: QueryFieldInfo[]};\n\nexport type QueryFieldsResponseRelations = {[key: string]: {[key: string]: QueryFieldInfo[]}};\n\nexport interface RecordFieldInfo {\n slug: string;\n name: string;\n type: string;\n operators: string[];\n enumValues?: unknown[] | null;\n}\n\nexport interface RunQueryRequest {\n query: Query;\n mode?: RunQueryRequestMode;\n}\n\nexport type RunQueryRequestMode = typeof RunQueryRequestMode[keyof typeof RunQueryRequestMode] | null;\n\n\nexport const RunQueryRequestMode = {\n rows: 'rows',\n count: 'count',\n aggregate: 'aggregate',\n} as const;\n\nexport interface RunQueryResponse {\n mode: string;\n items?: RunQueryResponseItems;\n nextCursor?: string | null;\n count?: number | null;\n rows?: RunQueryResponseRows;\n warnings?: string[];\n cost?: CostInfo | null;\n}\n\nexport type RunQueryResponseItems = { [key: string]: unknown }[] | null;\n\nexport type RunQueryResponseRows = { [key: string]: unknown }[] | null;\n\n/**\n * Request model for associating child tasks (parent-child relationships).\n *\n * ``order`` is optional and backward-compatible: when omitted, callers\n * that build associations from a UI-style ``childTasks`` list keep the\n * historical array-index ordering. When provided (e.g. by the workspace\n * transfer importer), it preserves the authored routing order so that\n * automatic routing still selects the lower-order matching child after\n * transfer.\n */\nexport interface TaskAssociationRequest {\n taskId: number;\n autoNext: boolean;\n required: boolean;\n choicePrompt?: string | null;\n celCondition?: string | null;\n order?: number | null;\n}\n\n/**\n * Update workspace defaults.\n */\nexport interface UpdateWorkspaceDefaultsRequest {\n defaultPhoneNumberId?: number | null;\n defaultAgentId?: number | null;\n escalationBusinessHours?: string | null;\n escalationOnlineMessageTemplate?: string | null;\n escalationOfflineMessageTemplate?: string | null;\n escalationNotifiedMessageTemplate?: string | null;\n escalationPausedMessageTemplate?: string | null;\n emailFooter?: string | null;\n pauseOnEscalate?: boolean | null;\n enableAudioRecording?: boolean | null;\n enableVoicemailDetection?: boolean | null;\n transcriptionModel?: string | null;\n}\n\n/**\n * Update a workspace.\n */\nexport interface UpdateWorkspaceRequest {\n name?: string | null;\n slug?: string | null;\n signupCode?: string | null;\n isPublic?: boolean | null;\n allowSignup?: boolean | null;\n locale?: string | null;\n timezone?: string | null;\n}\n\nexport interface ValidateQueryResponse {\n valid: boolean;\n cost: CostInfo;\n warnings?: string[];\n errors?: string[];\n}\n\n/**\n * Slim view of an OrgDomain for selection in workspace forms.\n *\n * Intentionally smaller than `OrgDomainResponse` — workspace members\n * don't need ownership tokens, DNS records, last-checked timestamps,\n * etc. Just enough to populate a dropdown, pass the uuid back as a\n * foreign reference (e.g. `orgDomainUuid` on inbox creation), and\n * let the UI mark non-verified entries as disabled with a reason.\n */\nexport interface WorkspaceAvailableDomain {\n uuid: string;\n domain: string;\n ownershipStatus: string;\n emailStatus?: string | null;\n siteStatus?: string | null;\n}\n\nexport interface WorkspaceAvailableDomainsResponse {\n items: WorkspaceAvailableDomain[];\n total: number;\n}\n\n/**\n * Response model for workspace counts.\n */\nexport interface WorkspaceCountsResponse {\n humans: number;\n agents: number;\n tasks: number;\n workflows: number;\n inboxes: number;\n phoneNumbers: number;\n chats: number;\n files: number;\n sites: number;\n forms: number;\n}\n\n/**\n * Request model for joining a workspace.\n */\nexport interface WorkspaceJoinRequest {\n memberRoleId: number;\n orgRole?: string | null;\n}\n\n/**\n * Response model for joining a workspace.\n */\nexport interface WorkspaceJoinResponse {\n success: boolean;\n memberUuid: string;\n memberId: number;\n workspaceUuid: string;\n workspaceName: string;\n memberRoleName: string;\n message: string;\n}\n\nexport interface WorkspaceResponse {\n id: number;\n uuid: string;\n slug: string;\n name: string;\n organizationId: number;\n organizationUuid?: string | null;\n organizationName?: string | null;\n organizationLogoUrl?: string | null;\n signupCode?: string | null;\n createdAt: string;\n userRole: string | null;\n isPublic?: boolean;\n allowSignup?: boolean;\n resellerId?: number | null;\n themes?: string[];\n features?: string[] | null;\n featureStatus?: WorkspaceResponseFeatureStatus;\n signupRequestStatus?: string | null;\n status?: number | null;\n locale?: string | null;\n timezone?: string | null;\n}\n\nexport type WorkspaceResponseFeatureStatus = {[key: string]: string} | null;\n\n/**\n * Individual scope metadata.\n */\nexport interface WorkspaceScopeResponse {\n name: string;\n category: string;\n description: string;\n implies?: string[];\n dangerous?: boolean;\n}\n\n/**\n * Response containing all workspace-grantable scopes.\n */\nexport interface WorkspaceScopesListResponse {\n items: WorkspaceScopeResponse[];\n categories: string[];\n}\n\nexport interface WorkspaceSettingsResponse {\n id: number;\n slug: string;\n defaultPhoneNumberId: number | null;\n defaultAgentId: number | null;\n workspaceFolderId?: number | null;\n escalationBusinessHours: string | null;\n escalationOnlineMessageTemplate: string | null;\n escalationOfflineMessageTemplate: string | null;\n escalationNotifiedMessageTemplate: string | null;\n escalationPausedMessageTemplate: string | null;\n emailFooter: string | null;\n pauseOnEscalate: boolean;\n sesDomain: string;\n enableAudioRecording: boolean;\n enableVoicemailDetection: boolean;\n transcriptionModel?: string | null;\n defaultChatModel: string;\n defaultRealtimeModel: string;\n defaultInferenceModel: string;\n defaultVoiceModel: string;\n firstRunMode?: string | null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBO,IAAM,yCAAyC;AAAA,EACpD,4BAA4B;AAAA,EAC5B,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,aAAa;AACf;AAKO,IAAM,kCAAkC;AAAA,EAC7C,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,wBAAwB;AAAA,EACxB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,iBAAiB;AAAA,EACjB,qBAAqB;AAAA,EACrB,mBAAmB;AAAA,EACnB,kBAAkB;AACpB;AAoEO,IAAM,8BAA8B;AAAA,EACzC,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AACZ;AAKO,IAAM,8BAA8B;AAAA,EACzC,KAAK;AAAA,EACL,UAAU;AACZ;AAKO,IAAM,gCAAgC;AAAA,EAC3C,kBAAkB;AAAA,EAClB,yBAAyB;AAAA,EACzB,WAAW;AAAA,EACX,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,eAAe;AACjB;AAKO,IAAM,2BAA2B;AAAA,EACtC,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AACZ;;;ACnIO,IAAM,kBAAkB;AAAA,EAC7B,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,YAAY;AAAA,EACZ,mBAAmB;AACrB;AAKO,IAAM,kBAAkB;AAAA,EAC7B,sBAAsB;AAAA,EACtB,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,kBAAkB;AACpB;AA0CO,IAAM,yCAAyC;AAAA,EACpD,cAAc;AAAA,EACd,WAAW;AACb;;;AC8MO,IAAM,gBAAgB;AAAA,EAC3B,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,eAAe;AACjB;AAKO,IAAM,qBAAqB;AAAA,EAChC,eAAe;AAAA,EACf,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,wBAAwB;AAAA,EACxB,UAAU;AACZ;AAKO,IAAM,uBAAuB;AAAA,EAClC,kBAAkB;AAAA,EAClB,wBAAwB;AAAA,EACxB,wBAAwB;AAAA,EACxB,mCAAmC;AAAA,EACnC,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,gCAAgC;AAAA,EAChC,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,eAAe;AACjB;","names":[]}
@@ -1,5 +1,5 @@
1
- import { ew as SortOrder } from './tasks-Dl1Dzgkf.js';
2
- import { mK as WorkspaceFeature, hY as Resource$1, hq as ProductType } from './client-DjyYhpnv.js';
1
+ import { ew as SortOrder } from './tasks-Boi6AxGp.js';
2
+ import { n6 as WorkspaceFeature, ii as Resource$1, hL as ProductType } from './client-CefA5Mxe.js';
3
3
 
4
4
  interface MemberNotificationPreferences {
5
5
  notifySms?: boolean;
@@ -760,6 +760,8 @@ interface HealthSummary {
760
760
  totalEventRuleVolume?: number;
761
761
  totalWebhookFailures?: number;
762
762
  totalWebhookVolume?: number;
763
+ totalRoutineRunFailures?: number;
764
+ totalRoutineRunVolume?: number;
763
765
  totalSmsResponded?: number;
764
766
  totalSmsOutboundChats?: number;
765
767
  totalNeedsResponse?: number;
@@ -767,6 +769,21 @@ interface HealthSummary {
767
769
  totalRoutineWorkflowAccessWarnings?: number;
768
770
  totalOpenCriticalActionIncidents?: number;
769
771
  }
772
+ /**
773
+ * Automated Routine delivery failure and volume counts.
774
+ *
775
+ * OPERATIONAL HISTORY, not configuration health: these are realized
776
+ * ``RoutineRun`` outcomes for automated (SCHEDULED / ONCE) parent runs in the
777
+ * dashboard's time window. Deliberately distinct from
778
+ * ``routineWorkflowAccessWarnings``, which is current *structural* risk with
779
+ * no evidence that a delivery was actually missed. See
780
+ * ``lib/db/reports/health_report.get_routine_run_metrics`` for the exact
781
+ * parent/trigger/window predicate.
782
+ */
783
+ interface RoutineRunMetrics {
784
+ failures?: number;
785
+ total?: number;
786
+ }
770
787
  /**
771
788
  * A workspace that was skipped during metrics collection.
772
789
  */
@@ -795,6 +812,7 @@ interface WorkspaceHealthRow {
795
812
  channelFailures: ChannelFailures;
796
813
  eventRules: EventRuleMetrics;
797
814
  webhooks: WebhookMetrics;
815
+ routineRuns?: RoutineRunMetrics;
798
816
  memberChats?: number;
799
817
  needsResponse?: number;
800
818
  accessGapWarnings?: number;
@@ -1013,8 +1031,13 @@ interface AppContext {
1013
1031
  autoApprove?: boolean;
1014
1032
  /** Enable deep thinking mode for the current session */
1015
1033
  deepThink?: boolean;
1016
- /** Setup spec IDs linked to the current workspace that are pending execution. */
1017
- pendingSetupSpecIds?: number[];
1034
+ /**
1035
+ * Client has a local browser the agent can drive (the Gravity Rail desktop
1036
+ * app is running and its core is reachable). The server loads the
1037
+ * `browser_*` tools ONLY when this is true, so a plain web session does not
1038
+ * pay for tool schemas it could never use.
1039
+ */
1040
+ hasLocalBrowser?: boolean;
1018
1041
  /** Additional structured page state */
1019
1042
  pageState?: {
1020
1043
  /** Route parameters from Next.js */
@@ -1851,4 +1874,4 @@ interface RevisionState {
1851
1874
  */
1852
1875
  declare function getRevisionState(workflow: RevisionStateWorkflow, revision?: RevisionStateRevision): RevisionState;
1853
1876
 
1854
- export { type HealthMetricsResponse as $, type AIModelUsageResponse as A, type BaseChatModelConfig as B, type CallEndSection as C, DEFAULT_CHAT_MODEL as D, DEFAULT_THINKING_SPEECH_PHRASES as E, DEFAULT_VOICE_INFERENCE_MODEL as F, type DailyPhoneRowResponse as G, type DailySMSRowResponse as H, type DashboardMetrics as I, type DataRecordContext as J, type EfficiencyMetricsResponse as K, type EmailCountsResponse as L, type EmailUsageResponse as M, type EngineTimeSeries as N, type ErrorCodeBucket as O, type EventRuleMetrics as P, type ExportStatistics as Q, type FeatureSyncStatus as R, type GeminiChatModelConfig as S, type GeminiRealtimeModelConfig as T, type GeminiThinkingLevel as U, type MetricSummary$1 as V, type VoiceMetricsResponse$1 as W, type WorkspaceHealthResponse$1 as X, type HealthCheckStatistics as Y, type HealthDetailRequest as Z, type HealthMetricsRequest as _, type AIUsageDetailsResponse as a, type ToolParameter as a$, type HealthSummary as a0, type ImportStatistics as a1, type InterruptionSound as a2, type MemberNotificationPreferences as a3, type MemberNotifyActionParams as a4, type MemberUsageReport as a5, type MetricDataPoint as a6, type MetricSection as a7, type MetricSummary as a8, type MetricValue as a9, type ResourceScope as aA, type ResourceUsageResponse as aB, type RevisionState as aC, type RevisionStateRevision as aD, type RevisionStateWorkflow as aE, type RoutineWorkflowAccessMissingRole as aF, type RoutineWorkflowAccessWarning as aG, SCOPES as aH, SCOPE_PRESETS as aI, type SMSCommunicationDetailsResponse as aJ, type SMSMessageUsageResponse as aK, type SMSPhoneNumberUsageResponse as aL, ScopeCategory as aM, ScopeManager as aN, type ScopeName as aO, type SiteContext as aP, type SkippedWorkspace as aQ, type StatisticsSummary as aR, type SystemStatistics as aS, type TTSModel as aT, type TTSPreviewProvider as aU, TTS_PREVIEW_PROVIDERS as aV, type TaskContext as aW, type TaskCountResponse as aX, type ThinkingSound as aY, type TimeSeriesData as aZ, type TimeSeriesDataPoint as a_, type OpenAIChatModelConfig as aa, type OpenAIRealtimeModelConfig as ab, type OpenAIReasoningEffort as ac, type OpenAISemanticVADEagerness as ad, type OpenAISemanticVADTurnDetection as ae, type OpenAIServerVADTurnDetection as af, type OpenAITurnDetection as ag, type OpenAITurnDetectionType as ah, PIDS_DISPOSITIONS as ai, PIDS_SOURCES as aj, type PageContext as ak, type PerformanceMetrics as al, type PhoneCallPhoneNumberUsageResponse as am, type PhoneCallUsageResponse as an, type PhoneCommunicationDetailsResponse as ao, type PhoneNumberUsage as ap, type PidsDisposition as aq, type PidsSource as ar, type ProductOverageConfigResponse as as, type ProvisionPlanRequest as at, type ProvisionPlanResponse as au, type RealtimeModelConfig as av, type RequestsSection as aw, type RequestsStatusEntry as ax, type ResourceMetadata as ay, type ResourceOverageResponse as az, type AWSRealtimeModelConfig as b, type ToolkitContext as b0, ToolkitState as b1, type TopOffender as b2, type TopResourceOverageResponse as b3, type TtsReconnectOutcomeEntry as b4, type TtsReconnectSection as b5, type UsageProductSummaryResponse as b6, type UsageReportResponse as b7, type UsageReportRequest as b8, type UsageStatistics as b9, type VoiceMetricsResponse as ba, type VoiceMetricsTimeRange as bb, WIDGET_SLUGS as bc, type WebhookMetrics as bd, type WidgetSlug as be, type WorkflowContext as bf, type WorkspaceHealthDetail as bg, type WorkspaceHealthResponse as bh, type WorkspaceHealthRow as bi, type WorkspaceRoutineWorkflowAccessResponse as bj, type WorkspaceUsageReportResponse as bk, type XAIChatModelConfig as bl, type XAIRealtimeModelConfig as bm, type XAIReasoningEffort as bn, canPreviewVoice as bo, formatAppContextAsMarkdown as bp, getAllResourceSlugs as bq, getApplicableResourceSlugs as br, getApplicableResources as bs, getResourceMetadata as bt, getRevisionState as bu, getScopeFromProductType as bv, getTTSProvider as bw, getVoiceModelId as bx, type ScopeDefinition as by, type AcquisitionFunnelChannel as c, type AcquisitionFunnelRecentSignup as d, type AcquisitionFunnelResponse as e, type AdminDomainResponse as f, type AdminDomainSiteMapping as g, type AdminDomainWidgetMapping as h, type AdminPidsFindingResponse as i, type AnalyticsFilter as j, type AnalyticsQuery as k, type AppContext as l, type AttachedAddonInfo as m, type BaseRealtimeModelConfig as n, type BillingStatistics as o, type CallEndStatusEntry as p, type ChangeWorkspaceProductRequest as q, type ChangeWorkspaceProductResponse as r, type ChannelErrorBreakdown as s, type ChannelFailures as t, type ChatModelConfig as u, type ClaudeChatModelConfig as v, type CommunicationDetailsResponse as w, type CurrentPlanInfo as x, type CustomRealtimeModelConfig as y, DEFAULT_CUSTOM_VOICE_MODEL as z };
1877
+ export { type HealthMetricsResponse as $, type AIModelUsageResponse as A, type BaseChatModelConfig as B, type CallEndSection as C, DEFAULT_CHAT_MODEL as D, DEFAULT_THINKING_SPEECH_PHRASES as E, DEFAULT_VOICE_INFERENCE_MODEL as F, type DailyPhoneRowResponse as G, type DailySMSRowResponse as H, type DashboardMetrics as I, type DataRecordContext as J, type EfficiencyMetricsResponse as K, type EmailCountsResponse as L, type EmailUsageResponse as M, type EngineTimeSeries as N, type ErrorCodeBucket as O, type EventRuleMetrics as P, type ExportStatistics as Q, type FeatureSyncStatus as R, type GeminiChatModelConfig as S, type GeminiRealtimeModelConfig as T, type GeminiThinkingLevel as U, type MetricSummary$1 as V, type VoiceMetricsResponse$1 as W, type WorkspaceHealthResponse$1 as X, type HealthCheckStatistics as Y, type HealthDetailRequest as Z, type HealthMetricsRequest as _, type AIUsageDetailsResponse as a, type TimeSeriesDataPoint as a$, type HealthSummary as a0, type ImportStatistics as a1, type InterruptionSound as a2, type MemberNotificationPreferences as a3, type MemberNotifyActionParams as a4, type MemberUsageReport as a5, type MetricDataPoint as a6, type MetricSection as a7, type MetricSummary as a8, type MetricValue as a9, type ResourceScope as aA, type ResourceUsageResponse as aB, type RevisionState as aC, type RevisionStateRevision as aD, type RevisionStateWorkflow as aE, type RoutineRunMetrics as aF, type RoutineWorkflowAccessMissingRole as aG, type RoutineWorkflowAccessWarning as aH, SCOPES as aI, SCOPE_PRESETS as aJ, type SMSCommunicationDetailsResponse as aK, type SMSMessageUsageResponse as aL, type SMSPhoneNumberUsageResponse as aM, ScopeCategory as aN, ScopeManager as aO, type ScopeName as aP, type SiteContext as aQ, type SkippedWorkspace as aR, type StatisticsSummary as aS, type SystemStatistics as aT, type TTSModel as aU, type TTSPreviewProvider as aV, TTS_PREVIEW_PROVIDERS as aW, type TaskContext as aX, type TaskCountResponse as aY, type ThinkingSound as aZ, type TimeSeriesData as a_, type OpenAIChatModelConfig as aa, type OpenAIRealtimeModelConfig as ab, type OpenAIReasoningEffort as ac, type OpenAISemanticVADEagerness as ad, type OpenAISemanticVADTurnDetection as ae, type OpenAIServerVADTurnDetection as af, type OpenAITurnDetection as ag, type OpenAITurnDetectionType as ah, PIDS_DISPOSITIONS as ai, PIDS_SOURCES as aj, type PageContext as ak, type PerformanceMetrics as al, type PhoneCallPhoneNumberUsageResponse as am, type PhoneCallUsageResponse as an, type PhoneCommunicationDetailsResponse as ao, type PhoneNumberUsage as ap, type PidsDisposition as aq, type PidsSource as ar, type ProductOverageConfigResponse as as, type ProvisionPlanRequest as at, type ProvisionPlanResponse as au, type RealtimeModelConfig as av, type RequestsSection as aw, type RequestsStatusEntry as ax, type ResourceMetadata as ay, type ResourceOverageResponse as az, type AWSRealtimeModelConfig as b, type ToolParameter as b0, type ToolkitContext as b1, ToolkitState as b2, type TopOffender as b3, type TopResourceOverageResponse as b4, type TtsReconnectOutcomeEntry as b5, type TtsReconnectSection as b6, type UsageProductSummaryResponse as b7, type UsageReportResponse as b8, type UsageReportRequest as b9, type UsageStatistics as ba, type VoiceMetricsResponse as bb, type VoiceMetricsTimeRange as bc, WIDGET_SLUGS as bd, type WebhookMetrics as be, type WidgetSlug as bf, type WorkflowContext as bg, type WorkspaceHealthDetail as bh, type WorkspaceHealthResponse as bi, type WorkspaceHealthRow as bj, type WorkspaceRoutineWorkflowAccessResponse as bk, type WorkspaceUsageReportResponse as bl, type XAIChatModelConfig as bm, type XAIRealtimeModelConfig as bn, type XAIReasoningEffort as bo, canPreviewVoice as bp, formatAppContextAsMarkdown as bq, getAllResourceSlugs as br, getApplicableResourceSlugs as bs, getApplicableResources as bt, getResourceMetadata as bu, getRevisionState as bv, getScopeFromProductType as bw, getTTSProvider as bx, getVoiceModelId as by, type ScopeDefinition as bz, type AcquisitionFunnelChannel as c, type AcquisitionFunnelRecentSignup as d, type AcquisitionFunnelResponse as e, type AdminDomainResponse as f, type AdminDomainSiteMapping as g, type AdminDomainWidgetMapping as h, type AdminPidsFindingResponse as i, type AnalyticsFilter as j, type AnalyticsQuery as k, type AppContext as l, type AttachedAddonInfo as m, type BaseRealtimeModelConfig as n, type BillingStatistics as o, type CallEndStatusEntry as p, type ChangeWorkspaceProductRequest as q, type ChangeWorkspaceProductResponse as r, type ChannelErrorBreakdown as s, type ChannelFailures as t, type ChatModelConfig as u, type ClaudeChatModelConfig as v, type CommunicationDetailsResponse as w, type CurrentPlanInfo as x, type CustomRealtimeModelConfig as y, DEFAULT_CUSTOM_VOICE_MODEL as z };
@@ -1,5 +1,5 @@
1
- import { ew as SortOrder } from './tasks-Dl1Dzgkf.cjs';
2
- import { mK as WorkspaceFeature, hY as Resource$1, hq as ProductType } from './client-eet1pTc_.cjs';
1
+ import { ew as SortOrder } from './tasks-Boi6AxGp.cjs';
2
+ import { n6 as WorkspaceFeature, ii as Resource$1, hL as ProductType } from './client-BLuz00Qr.cjs';
3
3
 
4
4
  interface MemberNotificationPreferences {
5
5
  notifySms?: boolean;
@@ -760,6 +760,8 @@ interface HealthSummary {
760
760
  totalEventRuleVolume?: number;
761
761
  totalWebhookFailures?: number;
762
762
  totalWebhookVolume?: number;
763
+ totalRoutineRunFailures?: number;
764
+ totalRoutineRunVolume?: number;
763
765
  totalSmsResponded?: number;
764
766
  totalSmsOutboundChats?: number;
765
767
  totalNeedsResponse?: number;
@@ -767,6 +769,21 @@ interface HealthSummary {
767
769
  totalRoutineWorkflowAccessWarnings?: number;
768
770
  totalOpenCriticalActionIncidents?: number;
769
771
  }
772
+ /**
773
+ * Automated Routine delivery failure and volume counts.
774
+ *
775
+ * OPERATIONAL HISTORY, not configuration health: these are realized
776
+ * ``RoutineRun`` outcomes for automated (SCHEDULED / ONCE) parent runs in the
777
+ * dashboard's time window. Deliberately distinct from
778
+ * ``routineWorkflowAccessWarnings``, which is current *structural* risk with
779
+ * no evidence that a delivery was actually missed. See
780
+ * ``lib/db/reports/health_report.get_routine_run_metrics`` for the exact
781
+ * parent/trigger/window predicate.
782
+ */
783
+ interface RoutineRunMetrics {
784
+ failures?: number;
785
+ total?: number;
786
+ }
770
787
  /**
771
788
  * A workspace that was skipped during metrics collection.
772
789
  */
@@ -795,6 +812,7 @@ interface WorkspaceHealthRow {
795
812
  channelFailures: ChannelFailures;
796
813
  eventRules: EventRuleMetrics;
797
814
  webhooks: WebhookMetrics;
815
+ routineRuns?: RoutineRunMetrics;
798
816
  memberChats?: number;
799
817
  needsResponse?: number;
800
818
  accessGapWarnings?: number;
@@ -1013,8 +1031,13 @@ interface AppContext {
1013
1031
  autoApprove?: boolean;
1014
1032
  /** Enable deep thinking mode for the current session */
1015
1033
  deepThink?: boolean;
1016
- /** Setup spec IDs linked to the current workspace that are pending execution. */
1017
- pendingSetupSpecIds?: number[];
1034
+ /**
1035
+ * Client has a local browser the agent can drive (the Gravity Rail desktop
1036
+ * app is running and its core is reachable). The server loads the
1037
+ * `browser_*` tools ONLY when this is true, so a plain web session does not
1038
+ * pay for tool schemas it could never use.
1039
+ */
1040
+ hasLocalBrowser?: boolean;
1018
1041
  /** Additional structured page state */
1019
1042
  pageState?: {
1020
1043
  /** Route parameters from Next.js */
@@ -1851,4 +1874,4 @@ interface RevisionState {
1851
1874
  */
1852
1875
  declare function getRevisionState(workflow: RevisionStateWorkflow, revision?: RevisionStateRevision): RevisionState;
1853
1876
 
1854
- export { type HealthMetricsResponse as $, type AIModelUsageResponse as A, type BaseChatModelConfig as B, type CallEndSection as C, DEFAULT_CHAT_MODEL as D, DEFAULT_THINKING_SPEECH_PHRASES as E, DEFAULT_VOICE_INFERENCE_MODEL as F, type DailyPhoneRowResponse as G, type DailySMSRowResponse as H, type DashboardMetrics as I, type DataRecordContext as J, type EfficiencyMetricsResponse as K, type EmailCountsResponse as L, type EmailUsageResponse as M, type EngineTimeSeries as N, type ErrorCodeBucket as O, type EventRuleMetrics as P, type ExportStatistics as Q, type FeatureSyncStatus as R, type GeminiChatModelConfig as S, type GeminiRealtimeModelConfig as T, type GeminiThinkingLevel as U, type MetricSummary$1 as V, type VoiceMetricsResponse$1 as W, type WorkspaceHealthResponse$1 as X, type HealthCheckStatistics as Y, type HealthDetailRequest as Z, type HealthMetricsRequest as _, type AIUsageDetailsResponse as a, type ToolParameter as a$, type HealthSummary as a0, type ImportStatistics as a1, type InterruptionSound as a2, type MemberNotificationPreferences as a3, type MemberNotifyActionParams as a4, type MemberUsageReport as a5, type MetricDataPoint as a6, type MetricSection as a7, type MetricSummary as a8, type MetricValue as a9, type ResourceScope as aA, type ResourceUsageResponse as aB, type RevisionState as aC, type RevisionStateRevision as aD, type RevisionStateWorkflow as aE, type RoutineWorkflowAccessMissingRole as aF, type RoutineWorkflowAccessWarning as aG, SCOPES as aH, SCOPE_PRESETS as aI, type SMSCommunicationDetailsResponse as aJ, type SMSMessageUsageResponse as aK, type SMSPhoneNumberUsageResponse as aL, ScopeCategory as aM, ScopeManager as aN, type ScopeName as aO, type SiteContext as aP, type SkippedWorkspace as aQ, type StatisticsSummary as aR, type SystemStatistics as aS, type TTSModel as aT, type TTSPreviewProvider as aU, TTS_PREVIEW_PROVIDERS as aV, type TaskContext as aW, type TaskCountResponse as aX, type ThinkingSound as aY, type TimeSeriesData as aZ, type TimeSeriesDataPoint as a_, type OpenAIChatModelConfig as aa, type OpenAIRealtimeModelConfig as ab, type OpenAIReasoningEffort as ac, type OpenAISemanticVADEagerness as ad, type OpenAISemanticVADTurnDetection as ae, type OpenAIServerVADTurnDetection as af, type OpenAITurnDetection as ag, type OpenAITurnDetectionType as ah, PIDS_DISPOSITIONS as ai, PIDS_SOURCES as aj, type PageContext as ak, type PerformanceMetrics as al, type PhoneCallPhoneNumberUsageResponse as am, type PhoneCallUsageResponse as an, type PhoneCommunicationDetailsResponse as ao, type PhoneNumberUsage as ap, type PidsDisposition as aq, type PidsSource as ar, type ProductOverageConfigResponse as as, type ProvisionPlanRequest as at, type ProvisionPlanResponse as au, type RealtimeModelConfig as av, type RequestsSection as aw, type RequestsStatusEntry as ax, type ResourceMetadata as ay, type ResourceOverageResponse as az, type AWSRealtimeModelConfig as b, type ToolkitContext as b0, ToolkitState as b1, type TopOffender as b2, type TopResourceOverageResponse as b3, type TtsReconnectOutcomeEntry as b4, type TtsReconnectSection as b5, type UsageProductSummaryResponse as b6, type UsageReportResponse as b7, type UsageReportRequest as b8, type UsageStatistics as b9, type VoiceMetricsResponse as ba, type VoiceMetricsTimeRange as bb, WIDGET_SLUGS as bc, type WebhookMetrics as bd, type WidgetSlug as be, type WorkflowContext as bf, type WorkspaceHealthDetail as bg, type WorkspaceHealthResponse as bh, type WorkspaceHealthRow as bi, type WorkspaceRoutineWorkflowAccessResponse as bj, type WorkspaceUsageReportResponse as bk, type XAIChatModelConfig as bl, type XAIRealtimeModelConfig as bm, type XAIReasoningEffort as bn, canPreviewVoice as bo, formatAppContextAsMarkdown as bp, getAllResourceSlugs as bq, getApplicableResourceSlugs as br, getApplicableResources as bs, getResourceMetadata as bt, getRevisionState as bu, getScopeFromProductType as bv, getTTSProvider as bw, getVoiceModelId as bx, type ScopeDefinition as by, type AcquisitionFunnelChannel as c, type AcquisitionFunnelRecentSignup as d, type AcquisitionFunnelResponse as e, type AdminDomainResponse as f, type AdminDomainSiteMapping as g, type AdminDomainWidgetMapping as h, type AdminPidsFindingResponse as i, type AnalyticsFilter as j, type AnalyticsQuery as k, type AppContext as l, type AttachedAddonInfo as m, type BaseRealtimeModelConfig as n, type BillingStatistics as o, type CallEndStatusEntry as p, type ChangeWorkspaceProductRequest as q, type ChangeWorkspaceProductResponse as r, type ChannelErrorBreakdown as s, type ChannelFailures as t, type ChatModelConfig as u, type ClaudeChatModelConfig as v, type CommunicationDetailsResponse as w, type CurrentPlanInfo as x, type CustomRealtimeModelConfig as y, DEFAULT_CUSTOM_VOICE_MODEL as z };
1877
+ export { type HealthMetricsResponse as $, type AIModelUsageResponse as A, type BaseChatModelConfig as B, type CallEndSection as C, DEFAULT_CHAT_MODEL as D, DEFAULT_THINKING_SPEECH_PHRASES as E, DEFAULT_VOICE_INFERENCE_MODEL as F, type DailyPhoneRowResponse as G, type DailySMSRowResponse as H, type DashboardMetrics as I, type DataRecordContext as J, type EfficiencyMetricsResponse as K, type EmailCountsResponse as L, type EmailUsageResponse as M, type EngineTimeSeries as N, type ErrorCodeBucket as O, type EventRuleMetrics as P, type ExportStatistics as Q, type FeatureSyncStatus as R, type GeminiChatModelConfig as S, type GeminiRealtimeModelConfig as T, type GeminiThinkingLevel as U, type MetricSummary$1 as V, type VoiceMetricsResponse$1 as W, type WorkspaceHealthResponse$1 as X, type HealthCheckStatistics as Y, type HealthDetailRequest as Z, type HealthMetricsRequest as _, type AIUsageDetailsResponse as a, type TimeSeriesDataPoint as a$, type HealthSummary as a0, type ImportStatistics as a1, type InterruptionSound as a2, type MemberNotificationPreferences as a3, type MemberNotifyActionParams as a4, type MemberUsageReport as a5, type MetricDataPoint as a6, type MetricSection as a7, type MetricSummary as a8, type MetricValue as a9, type ResourceScope as aA, type ResourceUsageResponse as aB, type RevisionState as aC, type RevisionStateRevision as aD, type RevisionStateWorkflow as aE, type RoutineRunMetrics as aF, type RoutineWorkflowAccessMissingRole as aG, type RoutineWorkflowAccessWarning as aH, SCOPES as aI, SCOPE_PRESETS as aJ, type SMSCommunicationDetailsResponse as aK, type SMSMessageUsageResponse as aL, type SMSPhoneNumberUsageResponse as aM, ScopeCategory as aN, ScopeManager as aO, type ScopeName as aP, type SiteContext as aQ, type SkippedWorkspace as aR, type StatisticsSummary as aS, type SystemStatistics as aT, type TTSModel as aU, type TTSPreviewProvider as aV, TTS_PREVIEW_PROVIDERS as aW, type TaskContext as aX, type TaskCountResponse as aY, type ThinkingSound as aZ, type TimeSeriesData as a_, type OpenAIChatModelConfig as aa, type OpenAIRealtimeModelConfig as ab, type OpenAIReasoningEffort as ac, type OpenAISemanticVADEagerness as ad, type OpenAISemanticVADTurnDetection as ae, type OpenAIServerVADTurnDetection as af, type OpenAITurnDetection as ag, type OpenAITurnDetectionType as ah, PIDS_DISPOSITIONS as ai, PIDS_SOURCES as aj, type PageContext as ak, type PerformanceMetrics as al, type PhoneCallPhoneNumberUsageResponse as am, type PhoneCallUsageResponse as an, type PhoneCommunicationDetailsResponse as ao, type PhoneNumberUsage as ap, type PidsDisposition as aq, type PidsSource as ar, type ProductOverageConfigResponse as as, type ProvisionPlanRequest as at, type ProvisionPlanResponse as au, type RealtimeModelConfig as av, type RequestsSection as aw, type RequestsStatusEntry as ax, type ResourceMetadata as ay, type ResourceOverageResponse as az, type AWSRealtimeModelConfig as b, type ToolParameter as b0, type ToolkitContext as b1, ToolkitState as b2, type TopOffender as b3, type TopResourceOverageResponse as b4, type TtsReconnectOutcomeEntry as b5, type TtsReconnectSection as b6, type UsageProductSummaryResponse as b7, type UsageReportResponse as b8, type UsageReportRequest as b9, type UsageStatistics as ba, type VoiceMetricsResponse as bb, type VoiceMetricsTimeRange as bc, WIDGET_SLUGS as bd, type WebhookMetrics as be, type WidgetSlug as bf, type WorkflowContext as bg, type WorkspaceHealthDetail as bh, type WorkspaceHealthResponse as bi, type WorkspaceHealthRow as bj, type WorkspaceRoutineWorkflowAccessResponse as bk, type WorkspaceUsageReportResponse as bl, type XAIChatModelConfig as bm, type XAIRealtimeModelConfig as bn, type XAIReasoningEffort as bo, canPreviewVoice as bp, formatAppContextAsMarkdown as bq, getAllResourceSlugs as br, getApplicableResourceSlugs as bs, getApplicableResources as bt, getResourceMetadata as bu, getRevisionState as bv, getScopeFromProductType as bw, getTTSProvider as bx, getVoiceModelId as by, type ScopeDefinition as bz, type AcquisitionFunnelChannel as c, type AcquisitionFunnelRecentSignup as d, type AcquisitionFunnelResponse as e, type AdminDomainResponse as f, type AdminDomainSiteMapping as g, type AdminDomainWidgetMapping as h, type AdminPidsFindingResponse as i, type AnalyticsFilter as j, type AnalyticsQuery as k, type AppContext as l, type AttachedAddonInfo as m, type BaseRealtimeModelConfig as n, type BillingStatistics as o, type CallEndStatusEntry as p, type ChangeWorkspaceProductRequest as q, type ChangeWorkspaceProductResponse as r, type ChannelErrorBreakdown as s, type ChannelFailures as t, type ChatModelConfig as u, type ClaudeChatModelConfig as v, type CommunicationDetailsResponse as w, type CurrentPlanInfo as x, type CustomRealtimeModelConfig as y, DEFAULT_CUSTOM_VOICE_MODEL as z };
package/dist/schemas.cjs CHANGED
@@ -39,6 +39,7 @@ __export(schemas_exports, {
39
39
  ArchiveChatSchema: () => ArchiveChatSchema,
40
40
  ArchivePhoneNumberSchema: () => ArchivePhoneNumberSchema,
41
41
  ArchiveTaskSchema: () => ArchiveTaskSchema,
42
+ AssistantChatParticipantSchema: () => AssistantChatParticipantSchema,
42
43
  CancelCalendarEventSchema: () => CancelCalendarEventSchema,
43
44
  ChannelEnum: () => ChannelEnum,
44
45
  ChatCompletionMessageSchema: () => ChatCompletionMessageSchema,
@@ -58,6 +59,7 @@ __export(schemas_exports, {
58
59
  CheckAvailabilitySchema: () => CheckAvailabilitySchema,
59
60
  ChildTaskFormDataSchema: () => ChildTaskFormDataSchema,
60
61
  CloneWorkflowSchema: () => CloneWorkflowSchema,
62
+ ContributorChatParticipantSchema: () => ContributorChatParticipantSchema,
61
63
  CreateAccountSchema: () => CreateAccountSchema,
62
64
  CreateCalendarEventSchema: () => CreateCalendarEventSchema,
63
65
  CreateCalendarSchema: () => CreateCalendarSchema,
@@ -206,12 +208,13 @@ __export(schemas_exports, {
206
208
  MemberRoleWorkflowAccessSchema: () => MemberRoleWorkflowAccessSchema,
207
209
  MemberSchema: () => MemberSchema,
208
210
  MenuItemFormDataSchema: () => MenuItemFormDataSchema,
211
+ MessageAudienceEnum: () => MessageAudienceEnum,
209
212
  MessageContentPartSchema: () => MessageContentPartSchema,
213
+ MessageOriginEnum: () => MessageOriginEnum,
210
214
  MessageRoleEnum: () => MessageRoleEnum,
211
215
  MilestoneFormDataSchema: () => MilestoneFormDataSchema,
212
216
  MilestoneGoalFormDataSchema: () => MilestoneGoalFormDataSchema,
213
217
  MissingMembershipItemSchema: () => MissingMembershipItemSchema,
214
- OperatorChatParticipantSchema: () => OperatorChatParticipantSchema,
215
218
  OrganizationSchema: () => OrganizationSchema,
216
219
  PhoneNumberFormDataSchema: () => PhoneNumberFormDataSchema,
217
220
  RateLimitAllowlistEntrySchema: () => RateLimitAllowlistEntrySchema,
@@ -231,6 +234,7 @@ __export(schemas_exports, {
231
234
  SiteFormDataSchema: () => SiteFormDataSchema,
232
235
  SitePageFormDataSchema: () => SitePageFormDataSchema,
233
236
  StartSiteCrawlSchema: () => StartSiteCrawlSchema,
237
+ SupervisorChatParticipantSchema: () => SupervisorChatParticipantSchema,
234
238
  TaskExportDataTypeRelationSchema: () => TaskExportDataTypeRelationSchema,
235
239
  TaskFormDataSchema: () => TaskFormDataSchema,
236
240
  TextContentSchema: () => TextContentSchema,
@@ -814,14 +818,7 @@ var ChannelEnum = import_zod4.z.enum([
814
818
  "a2a",
815
819
  "routine"
816
820
  ]);
817
- var MessageRoleEnum = import_zod4.z.enum([
818
- "user",
819
- "assistant",
820
- "system",
821
- "tool",
822
- "function",
823
- "operator"
824
- ]);
821
+ var MessageRoleEnum = import_zod4.z.enum(["user", "assistant", "system", "tool", "function"]);
825
822
  var ChatFilterObjectTypeEnum = import_zod4.z.enum([
826
823
  "title",
827
824
  "participant",
@@ -854,6 +851,28 @@ var TruncationReasonEnum = import_zod4.z.enum([
854
851
  "error"
855
852
  // Error occurred during generation
856
853
  ]);
854
+ var MessageOriginEnum = import_zod4.z.enum([
855
+ "member",
856
+ // a human member of the workspace
857
+ "agent",
858
+ // the AI assistant's own output
859
+ "operator",
860
+ // a human operator acting in the conversation
861
+ "tool",
862
+ // tool / function output
863
+ "workflow",
864
+ // orchestration machinery (task guidance, routing notes)
865
+ "background_run",
866
+ // a detached background trajectory of the agent
867
+ "platform"
868
+ // Gravity Rail itself (notices, system events)
869
+ ]);
870
+ var MessageAudienceEnum = import_zod4.z.enum([
871
+ "conversation",
872
+ // participates in the member-facing transcript
873
+ "agent_only"
874
+ // context the member never said; never render as speech
875
+ ]);
857
876
  var ChatParticipantFormDataSchema = import_zod4.z.object({
858
877
  memberId: import_zod4.z.number().optional(),
859
878
  role: import_zod4.z.string().optional(),
@@ -864,10 +883,27 @@ var HumanChatParticipantSchema = import_zod4.z.object({
864
883
  role: import_zod4.z.literal("user"),
865
884
  memberId: import_zod4.z.number()
866
885
  });
867
- var OperatorChatParticipantSchema = import_zod4.z.object({
886
+ var AssistantChatParticipantSchema = import_zod4.z.object({
887
+ name: import_zod4.z.string(),
888
+ // A revision-backed assistant has no Member row at all, so the backend
889
+ // serves `memberId: null` here — it is NOT a required number.
890
+ memberId: import_zod4.z.number().nullable().optional(),
891
+ memberType: import_zod4.z.string().optional(),
892
+ role: import_zod4.z.literal("assistant"),
893
+ additionalInstructions: import_zod4.z.string().optional()
894
+ });
895
+ var ContributorChatParticipantSchema = import_zod4.z.object({
896
+ name: import_zod4.z.string(),
897
+ memberId: import_zod4.z.number(),
898
+ memberType: import_zod4.z.string().optional(),
899
+ role: import_zod4.z.literal("contributor"),
900
+ additionalInstructions: import_zod4.z.string().optional()
901
+ });
902
+ var SupervisorChatParticipantSchema = import_zod4.z.object({
868
903
  name: import_zod4.z.string(),
869
904
  memberId: import_zod4.z.number(),
870
- role: import_zod4.z.literal("operator")
905
+ memberType: import_zod4.z.string().optional(),
906
+ role: import_zod4.z.literal("supervisor")
871
907
  });
872
908
  var ChatFormDataSchema = import_zod4.z.object({
873
909
  id: import_zod4.z.number().optional(),
@@ -881,6 +917,12 @@ var ChatFormDataSchema = import_zod4.z.object({
881
917
  siteId: import_zod4.z.number().nullable().optional(),
882
918
  memberId: import_zod4.z.number().nullable().optional(),
883
919
  participants: import_zod4.z.array(ChatParticipantFormDataSchema),
920
+ // Who answers. The explicit successor to `agentEnabled` — see ChatFormData.
921
+ assistantKind: import_zod4.z.enum(["ai", "human"]).optional(),
922
+ // The chat's user participant, named without the "unless it's the caller"
923
+ // caveat that `memberId` carries.
924
+ userMemberId: import_zod4.z.number().nullable().optional(),
925
+ // Deprecated alias for `assistantKind`; false ⇒ 'human'.
884
926
  agentEnabled: import_zod4.z.boolean().optional(),
885
927
  assistantMemberId: import_zod4.z.number().nullable().optional(),
886
928
  assistantName: import_zod4.z.string().nullable().optional(),
@@ -1014,14 +1056,9 @@ var ChatSchema = import_zod4.z.object({
1014
1056
  participants: import_zod4.z.array(
1015
1057
  import_zod4.z.union([
1016
1058
  HumanChatParticipantSchema,
1017
- OperatorChatParticipantSchema,
1018
- import_zod4.z.object({
1019
- name: import_zod4.z.string(),
1020
- memberId: import_zod4.z.number(),
1021
- memberType: import_zod4.z.string().optional(),
1022
- role: import_zod4.z.literal("assistant"),
1023
- additionalInstructions: import_zod4.z.string().optional()
1024
- })
1059
+ AssistantChatParticipantSchema,
1060
+ ContributorChatParticipantSchema,
1061
+ SupervisorChatParticipantSchema
1025
1062
  ])
1026
1063
  ),
1027
1064
  canSendAsAssistant: import_zod4.z.boolean().optional()
@@ -1098,7 +1135,16 @@ var ChatMessageAPIResponseSchema = import_zod4.z.object({
1098
1135
  smsDeliveryErrorCode: import_zod4.z.string().nullable().optional(),
1099
1136
  smsDeliveryUpdatedAt: import_zod4.z.string().nullable().optional(),
1100
1137
  // Friendly failure reason — only set when smsDeliveryStatus is failed/undelivered.
1101
- smsDeliveryFailureReason: import_zod4.z.string().nullable().optional()
1138
+ smsDeliveryFailureReason: import_zod4.z.string().nullable().optional(),
1139
+ // ADR-11 provenance. Null on rows written before the columns existed —
1140
+ // clients fall back to `role`.
1141
+ origin: MessageOriginEnum.nullable().optional(),
1142
+ audience: MessageAudienceEnum.nullable().optional(),
1143
+ // Forked-trajectory "show work" affordance: how many messages hang off this
1144
+ // one as a detached background thread, and the fork point this message
1145
+ // itself hangs off (the PARENT's uuid, so it joins against `id`).
1146
+ childMessageCount: import_zod4.z.number().optional(),
1147
+ parentMessageId: import_zod4.z.string().nullable().optional()
1102
1148
  });
1103
1149
  var ChatCompletionMessageSchema = import_zod4.z.object({
1104
1150
  id: import_zod4.z.string().optional(),
@@ -2245,6 +2291,7 @@ var GetProductSchema = import_zod14.z.object({
2245
2291
  ArchiveChatSchema,
2246
2292
  ArchivePhoneNumberSchema,
2247
2293
  ArchiveTaskSchema,
2294
+ AssistantChatParticipantSchema,
2248
2295
  CancelCalendarEventSchema,
2249
2296
  ChannelEnum,
2250
2297
  ChatCompletionMessageSchema,
@@ -2264,6 +2311,7 @@ var GetProductSchema = import_zod14.z.object({
2264
2311
  CheckAvailabilitySchema,
2265
2312
  ChildTaskFormDataSchema,
2266
2313
  CloneWorkflowSchema,
2314
+ ContributorChatParticipantSchema,
2267
2315
  CreateAccountSchema,
2268
2316
  CreateCalendarEventSchema,
2269
2317
  CreateCalendarSchema,
@@ -2412,12 +2460,13 @@ var GetProductSchema = import_zod14.z.object({
2412
2460
  MemberRoleWorkflowAccessSchema,
2413
2461
  MemberSchema,
2414
2462
  MenuItemFormDataSchema,
2463
+ MessageAudienceEnum,
2415
2464
  MessageContentPartSchema,
2465
+ MessageOriginEnum,
2416
2466
  MessageRoleEnum,
2417
2467
  MilestoneFormDataSchema,
2418
2468
  MilestoneGoalFormDataSchema,
2419
2469
  MissingMembershipItemSchema,
2420
- OperatorChatParticipantSchema,
2421
2470
  OrganizationSchema,
2422
2471
  PhoneNumberFormDataSchema,
2423
2472
  RateLimitAllowlistEntrySchema,
@@ -2437,6 +2486,7 @@ var GetProductSchema = import_zod14.z.object({
2437
2486
  SiteFormDataSchema,
2438
2487
  SitePageFormDataSchema,
2439
2488
  StartSiteCrawlSchema,
2489
+ SupervisorChatParticipantSchema,
2440
2490
  TaskExportDataTypeRelationSchema,
2441
2491
  TaskFormDataSchema,
2442
2492
  TextContentSchema,