@gravity-rail/sdk 0.8.0 → 0.11.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 (46) hide show
  1. package/README.md +45 -8
  2. package/dist/chunk-FSSXKQR5.js +471 -0
  3. package/dist/chunk-FSSXKQR5.js.map +1 -0
  4. package/dist/{chunk-QS6ZRQUZ.js → chunk-V7ZKEH4V.js} +8 -1
  5. package/dist/chunk-V7ZKEH4V.js.map +1 -0
  6. package/dist/{chunk-ML55PVP7.js → chunk-YESHLUL7.js} +1435 -703
  7. package/dist/chunk-YESHLUL7.js.map +1 -0
  8. package/dist/{client-C2aWAalu.d.cts → client-BCgXtr8p.d.cts} +3684 -1291
  9. package/dist/{client-CLGovEox.d.ts → client-Dh1l20Ue.d.ts} +3684 -1291
  10. package/dist/helpers.cjs +177 -13
  11. package/dist/helpers.cjs.map +1 -1
  12. package/dist/helpers.d.cts +82 -3
  13. package/dist/helpers.d.ts +82 -3
  14. package/dist/helpers.js +155 -12
  15. package/dist/helpers.js.map +1 -1
  16. package/dist/index.cjs +1679 -420
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +32 -24
  19. package/dist/index.d.ts +32 -24
  20. package/dist/index.js +193 -113
  21. package/dist/index.js.map +1 -1
  22. package/dist/internal.cjs +1742 -413
  23. package/dist/internal.cjs.map +1 -1
  24. package/dist/internal.d.cts +634 -29
  25. package/dist/internal.d.ts +634 -29
  26. package/dist/internal.js +140 -7
  27. package/dist/internal.js.map +1 -1
  28. package/dist/realtime.cjs +43 -0
  29. package/dist/realtime.cjs.map +1 -1
  30. package/dist/realtime.d.cts +26 -0
  31. package/dist/realtime.d.ts +26 -0
  32. package/dist/realtime.js +43 -0
  33. package/dist/realtime.js.map +1 -1
  34. package/dist/{scopes-D6a_Mvqr.d.ts → revision-state-BTF-MnbW.d.cts} +270 -23
  35. package/dist/{scopes-CDaJBQVT.d.cts → revision-state-DOH1NMGb.d.ts} +270 -23
  36. package/dist/schemas.cjs +56 -117
  37. package/dist/schemas.cjs.map +1 -1
  38. package/dist/schemas.d.cts +121 -484
  39. package/dist/schemas.d.ts +121 -484
  40. package/dist/schemas.js +55 -114
  41. package/dist/schemas.js.map +1 -1
  42. package/dist/{inquiries-CmECZnkl.d.cts → tasks-C4aYbWVv.d.cts} +944 -148
  43. package/dist/{inquiries-CmECZnkl.d.ts → tasks-C4aYbWVv.d.ts} +944 -148
  44. package/package.json +5 -5
  45. package/dist/chunk-ML55PVP7.js.map +0 -1
  46. package/dist/chunk-QS6ZRQUZ.js.map +0 -1
package/dist/internal.cjs CHANGED
@@ -55,12 +55,19 @@ __export(internal_exports, {
55
55
  CalendarSource: () => CalendarSource,
56
56
  CalendarsApi: () => CalendarsApi,
57
57
  CallsApi: () => CallsApi,
58
+ CapabilityClass: () => CapabilityClass,
58
59
  ChatsApi: () => ChatsApi,
59
60
  ConfluenceApi: () => ConfluenceApi,
60
61
  ConnectionSyncApi: () => ConnectionSyncApi,
61
62
  ConsentMethod: () => ConsentMethod,
62
63
  CriterionType: () => CriterionType,
63
64
  CustomToolkitsApi: () => CustomToolkitsApi,
65
+ CustomerActivityClassifierDetectorName: () => CustomerActivityClassifierDetectorName,
66
+ CustomerActivityClassifierLabel: () => CustomerActivityClassifierLabel,
67
+ CustomerActivityEventSource: () => CustomerActivityEventSource,
68
+ CustomerActivityEventStatus: () => CustomerActivityEventStatus,
69
+ CustomerActivityReviewOutcome: () => CustomerActivityReviewOutcome,
70
+ CustomerActivitySeverity: () => CustomerActivitySeverity,
64
71
  CustomersApi: () => CustomersApi,
65
72
  DEFAULT_CHAT_MODEL: () => DEFAULT_CHAT_MODEL,
66
73
  DEFAULT_CUSTOM_VOICE_MODEL: () => DEFAULT_CUSTOM_VOICE_MODEL,
@@ -68,9 +75,11 @@ __export(internal_exports, {
68
75
  DEFAULT_VOICE_INFERENCE_MODEL: () => DEFAULT_VOICE_INFERENCE_MODEL,
69
76
  DataCategory: () => DataCategory,
70
77
  DataFieldType: () => DataFieldType,
78
+ DataRecordRetirementResponseReason: () => DataRecordRetirementResponseReason,
71
79
  DataSensitivity: () => DataSensitivity,
72
80
  DataTypeRecordScope: () => DataTypeRecordScope,
73
81
  DataTypesApi: () => DataTypesApi,
82
+ DeclaredDataUse: () => DeclaredDataUse,
74
83
  DiscordBotsApi: () => DiscordBotsApi,
75
84
  DriverMode: () => DriverMode,
76
85
  EmailDnsRecordType: () => EmailDnsRecordType,
@@ -100,6 +109,8 @@ __export(internal_exports, {
100
109
  McpServerState: () => McpServerState,
101
110
  McpServersApi: () => McpServersApi,
102
111
  MemberFeature: () => MemberFeature,
112
+ MemberImportMatchInfoMatchType: () => MemberImportMatchInfoMatchType,
113
+ MemberImportPreviewRowAction: () => MemberImportPreviewRowAction,
103
114
  MemberType: () => MemberType,
104
115
  MembersApi: () => MembersApi,
105
116
  MenuItemResponseItemType: () => MenuItemResponseItemType,
@@ -127,11 +138,21 @@ __export(internal_exports, {
127
138
  PERMISSION_NONE: () => PERMISSION_NONE,
128
139
  PERMISSION_USE: () => PERMISSION_USE,
129
140
  PERMISSION_VERIFY: () => PERMISSION_VERIFY,
141
+ PIDS_DISPOSITIONS: () => PIDS_DISPOSITIONS,
142
+ PIDS_SOURCES: () => PIDS_SOURCES,
143
+ POSITIVE_RATING_THRESHOLD: () => POSITIVE_RATING_THRESHOLD,
130
144
  PersonasApi: () => PersonasApi,
145
+ PhiDataPolicy: () => PhiDataPolicy,
146
+ PhiPolicyReason: () => PhiPolicyReason,
147
+ PhiPolicySource: () => PhiPolicySource,
148
+ PhiPostureDecision: () => PhiPostureDecision,
149
+ PhiPostureReasonCode: () => PhiPostureReasonCode,
150
+ PhiPostureTransitionResponseTargetType: () => PhiPostureTransitionResponseTargetType,
131
151
  PhoneNumbersApi: () => PhoneNumbersApi,
132
152
  ProductType: () => ProductType,
133
153
  PromptsApi: () => PromptsApi,
134
154
  PronunciationsApi: () => PronunciationsApi,
155
+ QUERY_VALUELESS_OPS: () => QUERY_VALUELESS_OPS,
135
156
  QualificationsApi: () => QualificationsApi,
136
157
  REALTIME_MODEL_CUSTOM: () => REALTIME_MODEL_CUSTOM,
137
158
  REALTIME_MODEL_GEMINI: () => REALTIME_MODEL_GEMINI,
@@ -169,13 +190,13 @@ __export(internal_exports, {
169
190
  TTS_MODEL_ELEVENLABS_FLASH: () => TTS_MODEL_ELEVENLABS_FLASH,
170
191
  TTS_MODEL_ELEVENLABS_MULTILINGUAL: () => TTS_MODEL_ELEVENLABS_MULTILINGUAL,
171
192
  TTS_MODEL_ELEVENLABS_TURBO: () => TTS_MODEL_ELEVENLABS_TURBO,
172
- TTS_MODEL_POCKET: () => TTS_MODEL_POCKET,
173
193
  TTS_PREVIEW_PROVIDERS: () => TTS_PREVIEW_PROVIDERS,
174
194
  TasksApi: () => TasksApi,
175
195
  TemplatesApi: () => TemplatesApi,
176
196
  ToolkitState: () => ToolkitState,
177
197
  ToolkitsApi: () => ToolkitsApi,
178
198
  VoiceApi: () => VoiceApi,
199
+ WIDGET_SLUGS: () => WIDGET_SLUGS,
179
200
  WorkflowAccessWarningResourceType: () => WorkflowAccessWarningResourceType,
180
201
  WorkflowNotesApi: () => WorkflowNotesApi,
181
202
  WorkflowResourceType: () => WorkflowAccessWarningResourceType,
@@ -196,6 +217,7 @@ __export(internal_exports, {
196
217
  bindChatsMethods: () => bindChatsMethods,
197
218
  bindCommunicationsMethods: () => bindCommunicationsMethods,
198
219
  bindCustomersMethods: () => bindCustomersMethods,
220
+ bindDashboardsMethods: () => bindDashboardsMethods,
199
221
  bindDataTypesMethods: () => bindDataTypesMethods,
200
222
  bindEventsMethods: () => bindEventsMethods,
201
223
  bindExperimentsMethods: () => bindExperimentsMethods,
@@ -203,12 +225,14 @@ __export(internal_exports, {
203
225
  bindIntegrationsMethods: () => bindIntegrationsMethods,
204
226
  bindJourneysMethods: () => bindJourneysMethods,
205
227
  bindMembersMethods: () => bindMembersMethods,
228
+ bindMotdMethods: () => bindMotdMethods,
206
229
  bindOperatorMethods: () => bindOperatorMethods,
207
230
  bindOrgMethods: () => bindOrgMethods,
208
231
  bindPersonasMethods: () => bindPersonasMethods,
209
232
  bindPromptsMethods: () => bindPromptsMethods,
210
233
  bindPronunciationsMethods: () => bindPronunciationsMethods,
211
234
  bindQualificationsMethods: () => bindQualificationsMethods,
235
+ bindQueriesMethods: () => bindQueriesMethods,
212
236
  bindResellersMethods: () => bindResellersMethods,
213
237
  bindSitesMethods: () => bindSitesMethods,
214
238
  bindSupportRequestMethods: () => bindSupportRequestMethods,
@@ -235,12 +259,14 @@ __export(internal_exports, {
235
259
  getFeaturesByVisibility: () => getFeaturesByVisibility,
236
260
  getMissingDependencies: () => getMissingDependencies,
237
261
  getResourceMetadata: () => getResourceMetadata,
262
+ getRevisionState: () => getRevisionState,
238
263
  getScopeFromProductType: () => getScopeFromProductType,
239
264
  getTTSProvider: () => getTTSProvider,
240
265
  getVoiceModelId: () => getVoiceModelId,
241
266
  initializeFeatures: () => initializeFeatures,
242
267
  isChatType: () => isChatType,
243
268
  isFeatureAvailable: () => isFeatureAvailable,
269
+ isPositiveRating: () => isPositiveRating,
244
270
  isRegistryInitialized: () => isRegistryInitialized,
245
271
  isSMSDeliveryFailureStatus: () => isSMSDeliveryFailureStatus,
246
272
  parseExperimentStatCount: () => parseExperimentStatCount,
@@ -358,11 +384,14 @@ var Scope = /* @__PURE__ */ ((Scope2) => {
358
384
  Scope2["ANALYTICS_READ"] = "analytics:read";
359
385
  Scope2["OPERATOR_READ"] = "operator:read";
360
386
  Scope2["OPERATOR_WRITE"] = "operator:write";
387
+ Scope2["EXPORT_READ"] = "export:read";
388
+ Scope2["EXPORT_WRITE"] = "export:write";
389
+ Scope2["EXPORT_ADMIN"] = "export:admin";
361
390
  Scope2["ORG_INFO"] = "org:info";
362
391
  Scope2["ORG_READ"] = "org:read";
363
392
  Scope2["ORG_WRITE"] = "org:write";
364
393
  Scope2["ORG_ADMIN"] = "org:admin";
365
- Scope2["ORG_BILLING"] = "org:billing";
394
+ Scope2["ORG_MANAGE_ADMINS"] = "org:manage_admins";
366
395
  Scope2["ORG_DELETE"] = "org:delete";
367
396
  return Scope2;
368
397
  })(Scope || {});
@@ -373,6 +402,20 @@ var BulkMemberResultStatus = {
373
402
  updated: "updated",
374
403
  failed: "failed"
375
404
  };
405
+ var MemberImportMatchInfoMatchType = {
406
+ external_id: "external_id",
407
+ email: "email",
408
+ phone: "phone",
409
+ account_email: "account_email",
410
+ account_phone: "account_phone"
411
+ };
412
+ var MemberImportPreviewRowAction = {
413
+ create: "create",
414
+ update: "update",
415
+ unchanged: "unchanged",
416
+ conflict: "conflict",
417
+ error: "error"
418
+ };
376
419
 
377
420
  // src/types/member-types.ts
378
421
  var MemberType = /* @__PURE__ */ ((MemberType2) => {
@@ -416,10 +459,14 @@ var EventRuleObjectType = /* @__PURE__ */ ((EventRuleObjectType2) => {
416
459
  })(EventRuleObjectType || {});
417
460
  var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
418
461
  EventRuleEventType2["TASK_EXECUTE"] = "task:execute";
462
+ EventRuleEventType2["TASK_ENTER"] = "task:enter";
463
+ EventRuleEventType2["TASK_COMMAND"] = "task:command";
464
+ EventRuleEventType2["TASK_EXIT"] = "task:exit";
419
465
  EventRuleEventType2["MEMBER_JOINED"] = "workspace:member_joined";
420
466
  EventRuleEventType2["MEMBER_LEFT"] = "workspace:member_left";
421
467
  EventRuleEventType2["DATA_RECORD_CREATED"] = "data_record:created";
422
468
  EventRuleEventType2["DATA_RECORD_UPDATED"] = "data_record:updated";
469
+ EventRuleEventType2["DATA_RECORD_CHANGED"] = "data_record:changed";
423
470
  EventRuleEventType2["CHAT_CREATED"] = "chat:created";
424
471
  EventRuleEventType2["CHAT_CALLBACK"] = "chat:callback";
425
472
  EventRuleEventType2["MEMBER_UPDATED"] = "member:updated";
@@ -449,6 +496,7 @@ var EventRuleActionType = /* @__PURE__ */ ((EventRuleActionType2) => {
449
496
  EventRuleActionType2["SWITCH_TASK_ACTION"] = "task:switch";
450
497
  EventRuleActionType2["ASSISTANT_MESSAGE"] = "assistant:message";
451
498
  EventRuleActionType2["FORM_FIELD_UPDATE"] = "form:update_field";
499
+ EventRuleActionType2["CEL_MUTATE"] = "record:cel_mutate";
452
500
  EventRuleActionType2["MESSAGE_VALIDATION"] = "message:validation";
453
501
  EventRuleActionType2["CHAT_CREATE"] = "chat:create";
454
502
  EventRuleActionType2["CHAT_CONTINUE"] = "chat:continue";
@@ -497,7 +545,6 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
497
545
  WorkspaceFeature2["GCALENDAR"] = "gcalendar";
498
546
  WorkspaceFeature2["MONDAY"] = "monday";
499
547
  WorkspaceFeature2["RESELL_PRODUCTS"] = "resell_products";
500
- WorkspaceFeature2["HIPAA_COMPLIANCE"] = "hipaa_compliance";
501
548
  WorkspaceFeature2["SOC2_COMPLIANCE"] = "soc2_compliance";
502
549
  WorkspaceFeature2["EHR_FHIR"] = "ehr_fhir";
503
550
  WorkspaceFeature2["EHR_ECLINICALWORKS"] = "ehr_eclinicalworks";
@@ -507,7 +554,6 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
507
554
  WorkspaceFeature2["CONFLUENCE"] = "confluence";
508
555
  WorkspaceFeature2["AGENT_MEMORY"] = "agent_memory";
509
556
  WorkspaceFeature2["IMAGE_GENERATION"] = "image_generation";
510
- WorkspaceFeature2["WORKFLOW_VERSIONING"] = "workflow_versioning";
511
557
  return WorkspaceFeature2;
512
558
  })(WorkspaceFeature || {});
513
559
  var MemberFeature = /* @__PURE__ */ ((MemberFeature2) => {
@@ -521,7 +567,6 @@ var MemberFeature = /* @__PURE__ */ ((MemberFeature2) => {
521
567
  var OrgFeature = /* @__PURE__ */ ((OrgFeature2) => {
522
568
  OrgFeature2["SSO"] = "sso";
523
569
  OrgFeature2["AUDIT_LOGS"] = "audit_logs";
524
- OrgFeature2["HIPAA_COMPLIANCE"] = "hipaa_compliance";
525
570
  OrgFeature2["SOC2_COMPLIANCE"] = "soc2_compliance";
526
571
  OrgFeature2["CUSTOM_BRANDING"] = "custom_branding";
527
572
  OrgFeature2["PRIORITY_SUPPORT"] = "priority_support";
@@ -590,6 +635,12 @@ var InvitationStatus = /* @__PURE__ */ ((InvitationStatus2) => {
590
635
  return InvitationStatus2;
591
636
  })(InvitationStatus || {});
592
637
 
638
+ // src/types/generated/data.ts
639
+ var DataRecordRetirementResponseReason = {
640
+ monday_item_archived: "monday_item_archived",
641
+ monday_item_deleted: "monday_item_deleted"
642
+ };
643
+
593
644
  // src/types/data-types.ts
594
645
  var DataFieldType = /* @__PURE__ */ ((DataFieldType2) => {
595
646
  DataFieldType2["ENUM"] = "enum";
@@ -651,7 +702,6 @@ var ModelProvider = {
651
702
  aws: "aws",
652
703
  elevenlabs: "elevenlabs",
653
704
  deepgram: "deepgram",
654
- pocket: "pocket",
655
705
  xai: "xai",
656
706
  custom: "custom"
657
707
  };
@@ -681,7 +731,10 @@ var TTS_MODEL_ELEVENLABS_MULTILINGUAL = "elevenlabs:tts:eleven_multilingual_v2";
681
731
  var TTS_MODEL_DEEPGRAM_AURA_2 = "deepgram:tts:aura-2";
682
732
  var TTS_MODEL_AWS_POLLY_GENERATIVE = "aws:tts:polly-generative";
683
733
  var TTS_MODEL_AWS_POLLY_NEURAL = "aws:tts:polly-neural";
684
- var TTS_MODEL_POCKET = "pocket:tts:default";
734
+
735
+ // src/types/pids-types.ts
736
+ var PIDS_DISPOSITIONS = ["true_positive", "false_positive", "needs_more_context"];
737
+ var PIDS_SOURCES = ["scheduled", "backfill", "pre_llm"];
685
738
 
686
739
  // src/types/calendar-types.ts
687
740
  var CalendarPermissionType = /* @__PURE__ */ ((CalendarPermissionType2) => {
@@ -775,8 +828,15 @@ var AccessGrantResourceType = /* @__PURE__ */ ((AccessGrantResourceType2) => {
775
828
  AccessGrantResourceType2["SITE"] = "site";
776
829
  AccessGrantResourceType2["ASSIGNMENT"] = "assignment";
777
830
  AccessGrantResourceType2["APP_CONNECTION"] = "app_connection";
831
+ AccessGrantResourceType2["CAPABILITY"] = "capability";
778
832
  return AccessGrantResourceType2;
779
833
  })(AccessGrantResourceType || {});
834
+ var CapabilityClass = /* @__PURE__ */ ((CapabilityClass2) => {
835
+ CapabilityClass2["TOOL_ALWAYS_ALLOW"] = "tool.always_allow";
836
+ CapabilityClass2["SELF_MODIFICATION_SCHEDULE"] = "self_modification.schedule";
837
+ CapabilityClass2["ATTENTION_INTERRUPT_RUNG"] = "attention.interrupt_rung";
838
+ return CapabilityClass2;
839
+ })(CapabilityClass || {});
780
840
  var AccessGrantStatus = /* @__PURE__ */ ((AccessGrantStatus2) => {
781
841
  AccessGrantStatus2["PENDING"] = "pending";
782
842
  AccessGrantStatus2["ACTIVE"] = "active";
@@ -821,15 +881,20 @@ var AbilityTypeSlugs = {
821
881
  TOOLKITS: "tools:toolkits",
822
882
  WEB_SEARCH: "tools:web_search",
823
883
  CONVERSATION_HISTORY: "tools:conversation_history",
884
+ IMAGE_GENERATION: "tools:image_generation",
885
+ CONVERSATION_CONTROL: "tools:conversation_control",
824
886
  // Integration
825
887
  CALENDAR_BOOKING: "integration:calendar_booking",
826
888
  FILE_ACCESS: "integration:file_access",
827
889
  DATA_ACCESS: "integration:data_access",
828
890
  GMAIL: "integration:gmail",
891
+ GOOGLE_CALENDAR: "integration:google_calendar",
892
+ GOOGLE_DRIVE: "integration:google_drive",
829
893
  CHARLESTON_PMD_PAGING: "integration:charleston_pmd_paging",
830
894
  // Communication
831
895
  PHONE_CALL_TOOLS: "communication:phone_call_tools",
832
896
  SEND_SMS: "communication:send_sms",
897
+ SEND_WHATSAPP: "communication:send_whatsapp",
833
898
  MEMBER_ACCESS: "communication:member_access",
834
899
  AUDIO_PLAYBACK: "communication:audio_playback",
835
900
  // Oversight
@@ -838,12 +903,209 @@ var AbilityTypeSlugs = {
838
903
  ESCALATION: "oversight:escalation",
839
904
  // Identity
840
905
  MEMBER_FIELD_VERIFICATION: "identity:member_field_verification",
906
+ // Delegation
907
+ CONTRIBUTOR: "delegation:contributor",
908
+ // Workflow
909
+ WORKFLOW_RUN: "workflow:run",
910
+ // Commerce
911
+ RESELLER: "commerce:reseller",
841
912
  // System (auto-injected, hidden from users)
842
913
  USER_MESSAGE_RULES: "system:user_message_rules",
843
914
  ASSISTANT_MESSAGE_RULES: "chat:assistant_message_rules",
844
915
  CEL_ROUTING: "system:cel_routing"
845
916
  };
846
917
 
918
+ // src/types/query-engine-types.ts
919
+ var QUERY_VALUELESS_OPS = /* @__PURE__ */ new Set([
920
+ "isEmpty",
921
+ "notEmpty",
922
+ "exists"
923
+ ]);
924
+
925
+ // src/types/generated/customer_activity.ts
926
+ var CustomerActivityClassifierDetectorName = {
927
+ assignment_chat_classifier: "assignment_chat_classifier",
928
+ manager_chat_classifier: "manager_chat_classifier",
929
+ concierge_chat_classifier: "concierge_chat_classifier",
930
+ chat_review: "chat_review"
931
+ };
932
+ var CustomerActivityClassifierLabel = {
933
+ user_distress: "user_distress",
934
+ user_confusion: "user_confusion",
935
+ health_topic_mentioned: "health_topic_mentioned",
936
+ health_advice_given: "health_advice_given",
937
+ escalation_failure: "escalation_failure",
938
+ repeated_tool_failure: "repeated_tool_failure",
939
+ transcription_quality: "transcription_quality",
940
+ repetitive_loop: "repetitive_loop"
941
+ };
942
+ var CustomerActivityEventSource = {
943
+ system: "system",
944
+ customer: "customer",
945
+ classifier: "classifier",
946
+ operator: "operator"
947
+ };
948
+ var CustomerActivityEventStatus = {
949
+ new: "new",
950
+ reviewed: "reviewed"
951
+ };
952
+ var CustomerActivityReviewOutcome = {
953
+ no_action_needed: "no_action_needed",
954
+ support_request_created: "support_request_created",
955
+ bug_filed: "bug_filed",
956
+ linked_existing_work: "linked_existing_work",
957
+ classifier_feedback: "classifier_feedback",
958
+ test_activity: "test_activity"
959
+ };
960
+ var CustomerActivitySeverity = {
961
+ none: "none",
962
+ minimal: "minimal",
963
+ low: "low",
964
+ medium: "medium",
965
+ high: "high",
966
+ critical: "critical"
967
+ };
968
+
969
+ // src/types/generated/phi_posture.ts
970
+ var PhiPolicyReason = {
971
+ initial_classification: "initial_classification",
972
+ customer_confirmation: "customer_confirmation",
973
+ agreement_verified: "agreement_verified",
974
+ scope_change: "scope_change",
975
+ periodic_review: "periodic_review",
976
+ correction: "correction",
977
+ incident_response: "incident_response"
978
+ };
979
+ var PhiPolicySource = {
980
+ customer_attestation: "customer_attestation",
981
+ contract_review: "contract_review",
982
+ staff_review: "staff_review",
983
+ legacy_inventory: "legacy_inventory"
984
+ };
985
+ var PhiPostureTransitionResponseTargetType = {
986
+ organization: "organization",
987
+ workspace: "workspace"
988
+ };
989
+
990
+ // src/types/generated/organization.ts
991
+ var BusinessIndustry = {
992
+ AGRICULTURE: "AGRICULTURE",
993
+ AUTOMOTIVE: "AUTOMOTIVE",
994
+ BANKING: "BANKING",
995
+ CONSUMER: "CONSUMER",
996
+ EDUCATION: "EDUCATION",
997
+ ELECTRONICS: "ELECTRONICS",
998
+ ENERGY: "ENERGY",
999
+ ENGINEERING: "ENGINEERING",
1000
+ FAST_MOVING_CONSUMER_GOODS: "FAST_MOVING_CONSUMER_GOODS",
1001
+ FINANCIAL: "FINANCIAL",
1002
+ FINTECH: "FINTECH",
1003
+ FOOD_AND_BEVERAGE: "FOOD_AND_BEVERAGE",
1004
+ GOVERNMENT: "GOVERNMENT",
1005
+ HEALTHCARE: "HEALTHCARE",
1006
+ HOSPITALITY: "HOSPITALITY",
1007
+ INSURANCE: "INSURANCE",
1008
+ JEWELRY: "JEWELRY",
1009
+ LEGAL: "LEGAL",
1010
+ MANUFACTURING: "MANUFACTURING",
1011
+ MEDIA: "MEDIA",
1012
+ NOT_FOR_PROFIT: "NOT_FOR_PROFIT",
1013
+ OIL_AND_GAS: "OIL_AND_GAS",
1014
+ ONLINE: "ONLINE",
1015
+ RAW_MATERIALS: "RAW_MATERIALS",
1016
+ REAL_ESTATE: "REAL_ESTATE",
1017
+ RELIGION: "RELIGION",
1018
+ RETAIL: "RETAIL",
1019
+ TECHNOLOGY: "TECHNOLOGY",
1020
+ TELECOMMUNICATIONS: "TELECOMMUNICATIONS",
1021
+ TRANSPORTATION: "TRANSPORTATION",
1022
+ TRAVEL: "TRAVEL"
1023
+ };
1024
+ var BusinessType = {
1025
+ Sole_Proprietorship: "Sole Proprietorship",
1026
+ Partnership: "Partnership",
1027
+ Limited_Liability_Corporation: "Limited Liability Corporation",
1028
+ "Co-operative": "Co-operative",
1029
+ "Non-profit_Corporation": "Non-profit Corporation",
1030
+ Corporation: "Corporation"
1031
+ };
1032
+ var DeclaredDataUse = {
1033
+ unclassified: "unclassified",
1034
+ non_phi_only: "non_phi_only",
1035
+ phi_expected: "phi_expected"
1036
+ };
1037
+ var EmailDnsRecordType = {
1038
+ TXT: "TXT",
1039
+ CNAME: "CNAME",
1040
+ MX: "MX"
1041
+ };
1042
+ var JobPosition = {
1043
+ Director: "Director",
1044
+ GM: "GM",
1045
+ VP: "VP",
1046
+ CEO: "CEO",
1047
+ CFO: "CFO",
1048
+ General_Counsel: "General Counsel",
1049
+ Other: "Other"
1050
+ };
1051
+ var OIDCAdminConfigViewProviderType = {
1052
+ azure_ad: "azure_ad",
1053
+ okta: "okta",
1054
+ auth0: "auth0",
1055
+ generic: "generic"
1056
+ };
1057
+ var Region = {
1058
+ AFRICA: "AFRICA",
1059
+ ASIA: "ASIA",
1060
+ EUROPE: "EUROPE",
1061
+ LATIN_AMERICA: "LATIN_AMERICA",
1062
+ USA_AND_CANADA: "USA_AND_CANADA",
1063
+ AUSTRALIA: "AUSTRALIA"
1064
+ };
1065
+ var RegistrationIdentifier = {
1066
+ EIN: "EIN",
1067
+ CBN: "CBN",
1068
+ CN: "CN",
1069
+ ACN: "ACN",
1070
+ CIN: "CIN",
1071
+ VAT: "VAT",
1072
+ VATRN: "VATRN",
1073
+ RN: "RN",
1074
+ DUNS: "DUNS",
1075
+ Other: "Other"
1076
+ };
1077
+ var SiteDnsRecordType = {
1078
+ CNAME: "CNAME",
1079
+ A: "A",
1080
+ TXT: "TXT"
1081
+ };
1082
+
1083
+ // src/types/generated/workspace.ts
1084
+ var PhiDataPolicy = {
1085
+ unclassified: "unclassified",
1086
+ phi_prohibited: "phi_prohibited",
1087
+ phi_permitted: "phi_permitted"
1088
+ };
1089
+ var PhiPostureDecision = {
1090
+ allow_non_phi: "allow_non_phi",
1091
+ warn_non_phi: "warn_non_phi",
1092
+ review_required: "review_required",
1093
+ authorization_required: "authorization_required",
1094
+ conflict: "conflict"
1095
+ };
1096
+ var PhiPostureReasonCode = {
1097
+ org_unclassified: "org_unclassified",
1098
+ workspace_unclassified: "workspace_unclassified",
1099
+ non_phi_policy_aligned: "non_phi_policy_aligned",
1100
+ phi_expected_workspace_prohibited: "phi_expected_workspace_prohibited",
1101
+ phi_authorization_not_evaluated: "phi_authorization_not_evaluated",
1102
+ non_phi_org_workspace_permitted: "non_phi_org_workspace_permitted",
1103
+ phi_permitted_org_not_expected: "phi_permitted_org_not_expected",
1104
+ organization_review_expired: "organization_review_expired",
1105
+ workspace_review_expired: "workspace_review_expired",
1106
+ invalid_state: "invalid_state"
1107
+ };
1108
+
847
1109
  // src/types/model-config-types.ts
848
1110
  var DEFAULT_THINKING_SPEECH_PHRASES = [
849
1111
  "One moment please",
@@ -859,7 +1121,6 @@ var TTS_PREVIEW_PROVIDERS = [
859
1121
  "elevenlabs",
860
1122
  "google",
861
1123
  "aws",
862
- "pocket",
863
1124
  "deepgram",
864
1125
  "xai"
865
1126
  ];
@@ -1025,94 +1286,10 @@ var SMS_DELIVERY_FAILURE_STATUSES = /* @__PURE__ */ new Set([
1025
1286
  function isSMSDeliveryFailureStatus(status) {
1026
1287
  return status != null && SMS_DELIVERY_FAILURE_STATUSES.has(status);
1027
1288
  }
1028
-
1029
- // src/types/generated/organization.ts
1030
- var BusinessIndustry = {
1031
- AGRICULTURE: "AGRICULTURE",
1032
- AUTOMOTIVE: "AUTOMOTIVE",
1033
- BANKING: "BANKING",
1034
- CONSUMER: "CONSUMER",
1035
- EDUCATION: "EDUCATION",
1036
- ELECTRONICS: "ELECTRONICS",
1037
- ENERGY: "ENERGY",
1038
- ENGINEERING: "ENGINEERING",
1039
- FAST_MOVING_CONSUMER_GOODS: "FAST_MOVING_CONSUMER_GOODS",
1040
- FINANCIAL: "FINANCIAL",
1041
- FINTECH: "FINTECH",
1042
- FOOD_AND_BEVERAGE: "FOOD_AND_BEVERAGE",
1043
- GOVERNMENT: "GOVERNMENT",
1044
- HEALTHCARE: "HEALTHCARE",
1045
- HOSPITALITY: "HOSPITALITY",
1046
- INSURANCE: "INSURANCE",
1047
- JEWELRY: "JEWELRY",
1048
- LEGAL: "LEGAL",
1049
- MANUFACTURING: "MANUFACTURING",
1050
- MEDIA: "MEDIA",
1051
- NOT_FOR_PROFIT: "NOT_FOR_PROFIT",
1052
- OIL_AND_GAS: "OIL_AND_GAS",
1053
- ONLINE: "ONLINE",
1054
- RAW_MATERIALS: "RAW_MATERIALS",
1055
- REAL_ESTATE: "REAL_ESTATE",
1056
- RELIGION: "RELIGION",
1057
- RETAIL: "RETAIL",
1058
- TECHNOLOGY: "TECHNOLOGY",
1059
- TELECOMMUNICATIONS: "TELECOMMUNICATIONS",
1060
- TRANSPORTATION: "TRANSPORTATION",
1061
- TRAVEL: "TRAVEL"
1062
- };
1063
- var BusinessType = {
1064
- Sole_Proprietorship: "Sole Proprietorship",
1065
- Partnership: "Partnership",
1066
- Limited_Liability_Corporation: "Limited Liability Corporation",
1067
- "Co-operative": "Co-operative",
1068
- "Non-profit_Corporation": "Non-profit Corporation",
1069
- Corporation: "Corporation"
1070
- };
1071
- var EmailDnsRecordType = {
1072
- TXT: "TXT",
1073
- CNAME: "CNAME",
1074
- MX: "MX"
1075
- };
1076
- var JobPosition = {
1077
- Director: "Director",
1078
- GM: "GM",
1079
- VP: "VP",
1080
- CEO: "CEO",
1081
- CFO: "CFO",
1082
- General_Counsel: "General Counsel",
1083
- Other: "Other"
1084
- };
1085
- var OIDCAdminConfigViewProviderType = {
1086
- azure_ad: "azure_ad",
1087
- okta: "okta",
1088
- auth0: "auth0",
1089
- generic: "generic"
1090
- };
1091
- var Region = {
1092
- AFRICA: "AFRICA",
1093
- ASIA: "ASIA",
1094
- EUROPE: "EUROPE",
1095
- LATIN_AMERICA: "LATIN_AMERICA",
1096
- USA_AND_CANADA: "USA_AND_CANADA",
1097
- AUSTRALIA: "AUSTRALIA"
1098
- };
1099
- var RegistrationIdentifier = {
1100
- EIN: "EIN",
1101
- CBN: "CBN",
1102
- CN: "CN",
1103
- ACN: "ACN",
1104
- CIN: "CIN",
1105
- VAT: "VAT",
1106
- VATRN: "VATRN",
1107
- RN: "RN",
1108
- DUNS: "DUNS",
1109
- Other: "Other"
1110
- };
1111
- var SiteDnsRecordType = {
1112
- CNAME: "CNAME",
1113
- A: "A",
1114
- TXT: "TXT"
1115
- };
1289
+ var POSITIVE_RATING_THRESHOLD = 0.5;
1290
+ function isPositiveRating(rating) {
1291
+ return rating != null && rating >= POSITIVE_RATING_THRESHOLD;
1292
+ }
1116
1293
 
1117
1294
  // src/types/generated/site.ts
1118
1295
  var MenuItemResponseItemType = {
@@ -1122,11 +1299,15 @@ var MenuItemResponseItemType = {
1122
1299
  none: "none"
1123
1300
  };
1124
1301
 
1302
+ // src/types/widget-domain-types.ts
1303
+ var WIDGET_SLUGS = ["chat", "operator", "operator-tools", "chat-app"];
1304
+
1125
1305
  // src/types/generated/task.ts
1126
1306
  var AbilityConfigIssueCode = {
1127
1307
  missing_resource: "missing_resource",
1128
1308
  invalid_state: "invalid_state",
1129
1309
  feature_disabled: "feature_disabled",
1310
+ missing_connection: "missing_connection",
1130
1311
  external_drift: "external_drift"
1131
1312
  };
1132
1313
  var AbilityConfigIssueSeverity = {
@@ -1305,21 +1486,16 @@ var CHAT_TYPES = {
1305
1486
  ASSIGNMENT: "assignment",
1306
1487
  MANAGER: "manager",
1307
1488
  CONTRIBUTOR: "contributor",
1308
- DEVELOPER: "developer",
1309
- MEMBER: "member",
1310
- /** @deprecated Use MEMBER instead */
1311
- AGENT: "member",
1312
- /** @deprecated Use MEMBER instead */
1313
- DM: "member"
1489
+ DM: "dm"
1314
1490
  };
1315
1491
  var BUILTIN_ASSISTANT_CHAT_TYPES = /* @__PURE__ */ new Set([
1316
1492
  CHAT_TYPES.MANAGER,
1317
- CHAT_TYPES.CONTRIBUTOR,
1318
- CHAT_TYPES.DEVELOPER
1493
+ CHAT_TYPES.CONTRIBUTOR
1319
1494
  ]);
1495
+ var MEMBER_AGENT_CHAT_TYPES = /* @__PURE__ */ new Set([CHAT_TYPES.DM]);
1320
1496
  var NO_ASSISTANT_PARTICIPANT_CHAT_TYPES = /* @__PURE__ */ new Set([
1321
1497
  ...BUILTIN_ASSISTANT_CHAT_TYPES,
1322
- CHAT_TYPES.MEMBER
1498
+ ...MEMBER_AGENT_CHAT_TYPES
1323
1499
  ]);
1324
1500
  function usesBuiltinAssistant(chatType) {
1325
1501
  return BUILTIN_ASSISTANT_CHAT_TYPES.has(chatType);
@@ -1973,6 +2149,19 @@ var SCOPE_PRESETS = {
1973
2149
  ALL: Object.keys(SCOPES)
1974
2150
  };
1975
2151
 
2152
+ // src/utils/revision-state.ts
2153
+ function getRevisionState(workflow, revision) {
2154
+ const draftIsLive = workflow.activeRevisionId === workflow.draftRevisionId;
2155
+ const hasUnpublishedChanges = workflow.draftModifiedAt != null;
2156
+ return {
2157
+ isActive: revision != null && revision.id === workflow.activeRevisionId,
2158
+ isDraft: revision != null && revision.id === workflow.draftRevisionId,
2159
+ draftIsLive,
2160
+ hasUnpublishedChanges,
2161
+ state: revision?.publishedAt != null ? "published" : "draft"
2162
+ };
2163
+ }
2164
+
1976
2165
  // src/api/base.ts
1977
2166
  function getCookieValue(name) {
1978
2167
  if (typeof document === "undefined") return void 0;
@@ -2030,6 +2219,22 @@ function parseOrgAuthChallenge(wwwAuthenticate) {
2030
2219
  authUrl: authUrlMatch[1]
2031
2220
  };
2032
2221
  }
2222
+ function getRequestOrgCookieName(cookieName) {
2223
+ if (cookieName.startsWith("orgToken")) {
2224
+ return cookieName.replace(/^orgToken/, "requestOrgToken");
2225
+ }
2226
+ if (cookieName.startsWith("orgSession")) {
2227
+ return cookieName.replace(/^orgSession/, "requestOrgSession");
2228
+ }
2229
+ return null;
2230
+ }
2231
+ function orgAuthHeaderName(token) {
2232
+ return token.startsWith("gr_sess_") ? "X-Org-Session" : "X-Org-Token";
2233
+ }
2234
+ function setOrgAuthHeader(headers, token) {
2235
+ if (!token) return;
2236
+ headers.set(orgAuthHeaderName(token), token);
2237
+ }
2033
2238
  var BaseApiClient = class {
2034
2239
  baseUrl;
2035
2240
  apiKey;
@@ -2040,15 +2245,15 @@ var BaseApiClient = class {
2040
2245
  orgAuthHandler;
2041
2246
  orgAuthInProgress = null;
2042
2247
  actingMemberUuid;
2043
- orgToken;
2248
+ orgSession;
2044
2249
  /**
2045
- * The org_uuid that issued the current orgToken. Tracked so we can detect
2250
+ * The org_uuid that issued the current org auth credential. Tracked so we can detect
2046
2251
  * a 401 challenge from a *different* org and re-fire the handler — the
2047
- * orgToken is an opaque JWE we cannot decrypt client-side, so without this
2048
- * the original guard `!this.orgToken` would prevent re-auth across orgs and
2049
- * surface as a silent 401 in multi-org CLI workflows.
2252
+ * credential is opaque to the client, so without this the original guard
2253
+ * `!this.orgSession` would prevent re-auth across orgs and surface as a silent
2254
+ * 401 in multi-org CLI workflows.
2050
2255
  */
2051
- orgTokenOrgUuid;
2256
+ orgSessionOrgUuid;
2052
2257
  constructor(apiKey, baseUrl, customFetch) {
2053
2258
  this.baseUrl = baseUrl;
2054
2259
  this.apiKey = apiKey;
@@ -2095,18 +2300,25 @@ var BaseApiClient = class {
2095
2300
  return this.actingMemberUuid;
2096
2301
  }
2097
2302
  /**
2098
- * Set the org token for cross-domain requests.
2099
- * When set, all API requests will include the X-Org-Token header,
2100
- * allowing org-level SSO verification without cookies.
2303
+ * Set the opaque org session credential for cross-domain requests.
2304
+ * Opaque gr_sess_ values use X-Org-Session. Legacy orgToken JWE values still
2305
+ * use X-Org-Token through setOrgToken() during the migration window.
2101
2306
  *
2102
- * `orgUuid` is the org that issued the token; passing it lets the 401
2103
- * handler detect a stale token when a subsequent request targets a
2307
+ * `orgUuid` is the org that issued the credential; passing it lets the 401
2308
+ * handler detect a stale session when a subsequent request targets a
2104
2309
  * different org and re-fire the org-auth handler instead of silently
2105
2310
  * 401-ing. Callers without that context (legacy / unknown) may omit it.
2106
2311
  */
2312
+ setOrgSession(session, orgUuid) {
2313
+ this.orgSession = session;
2314
+ this.orgSessionOrgUuid = session ? orgUuid : void 0;
2315
+ }
2316
+ /**
2317
+ * @deprecated Legacy compatibility for stateless orgToken JWE credentials.
2318
+ * Prefer setOrgSession() for opaque org browser sessions.
2319
+ */
2107
2320
  setOrgToken(token, orgUuid) {
2108
- this.orgToken = token;
2109
- this.orgTokenOrgUuid = token ? orgUuid : void 0;
2321
+ this.setOrgSession(token, orgUuid);
2110
2322
  }
2111
2323
  async fetch(endpoint, options) {
2112
2324
  try {
@@ -2127,9 +2339,7 @@ var BaseApiClient = class {
2127
2339
  if (this.actingMemberUuid) {
2128
2340
  headers.set("X-Acting-Member", this.actingMemberUuid);
2129
2341
  }
2130
- if (this.orgToken) {
2131
- headers.set("X-Org-Token", this.orgToken);
2132
- }
2342
+ setOrgAuthHeader(headers, this.orgSession);
2133
2343
  const fullUrl = `${this.baseUrl}/api/v2/${endpoint}`;
2134
2344
  const response = await this.fetchFunction(fullUrl, {
2135
2345
  ...options,
@@ -2153,31 +2363,28 @@ var BaseApiClient = class {
2153
2363
  try {
2154
2364
  return await this.fetch(endpoint, options);
2155
2365
  } catch (retryError) {
2156
- this.orgToken = void 0;
2157
- this.orgTokenOrgUuid = void 0;
2366
+ this.orgSession = void 0;
2367
+ this.orgSessionOrgUuid = void 0;
2158
2368
  throw retryError;
2159
2369
  }
2160
2370
  }
2161
2371
  if (response.status === 401) {
2162
2372
  const orgAuthInfo = parseOrgAuthChallenge(response.headers.get("WWW-Authenticate"));
2163
- if (orgAuthInfo && this.orgToken && this.orgTokenOrgUuid && this.orgTokenOrgUuid !== orgAuthInfo.orgUuid) {
2164
- this.orgToken = void 0;
2165
- this.orgTokenOrgUuid = void 0;
2373
+ if (orgAuthInfo && this.orgSession && this.orgSessionOrgUuid && this.orgSessionOrgUuid !== orgAuthInfo.orgUuid) {
2374
+ this.orgSession = void 0;
2375
+ this.orgSessionOrgUuid = void 0;
2166
2376
  }
2167
- if (orgAuthInfo && !this.orgToken) {
2168
- const requestCookieName = orgAuthInfo.cookieName.replace(
2169
- /^orgToken/,
2170
- "requestOrgToken"
2171
- );
2172
- const cachedOrgToken = getCookieValue(requestCookieName);
2173
- if (cachedOrgToken) {
2174
- this.orgToken = cachedOrgToken;
2175
- this.orgTokenOrgUuid = orgAuthInfo.orgUuid;
2377
+ if (orgAuthInfo && !this.orgSession) {
2378
+ const requestCookieName = getRequestOrgCookieName(orgAuthInfo.cookieName);
2379
+ const cachedOrgSession = requestCookieName ? getCookieValue(requestCookieName) : void 0;
2380
+ if (cachedOrgSession) {
2381
+ this.orgSession = cachedOrgSession;
2382
+ this.orgSessionOrgUuid = orgAuthInfo.orgUuid;
2176
2383
  try {
2177
2384
  return await this.fetch(endpoint, options);
2178
2385
  } catch (retryError) {
2179
- this.orgToken = void 0;
2180
- this.orgTokenOrgUuid = void 0;
2386
+ this.orgSession = void 0;
2387
+ this.orgSessionOrgUuid = void 0;
2181
2388
  throw retryError;
2182
2389
  }
2183
2390
  }
@@ -2193,20 +2400,20 @@ var BaseApiClient = class {
2193
2400
  })();
2194
2401
  }
2195
2402
  await this.orgAuthInProgress;
2196
- const postHandlerToken = getCookieValue(requestCookieName) ?? this.orgToken;
2197
- if (!postHandlerToken) {
2403
+ const postHandlerSession = (requestCookieName ? getCookieValue(requestCookieName) : void 0) ?? this.orgSession;
2404
+ if (!postHandlerSession) {
2198
2405
  throw new ApiError(
2199
- "Organization authentication did not issue a token",
2406
+ "Organization authentication did not issue a session",
2200
2407
  401
2201
2408
  );
2202
2409
  }
2203
- this.orgToken = postHandlerToken;
2204
- this.orgTokenOrgUuid = orgAuthInfo.orgUuid;
2410
+ this.orgSession = postHandlerSession;
2411
+ this.orgSessionOrgUuid = orgAuthInfo.orgUuid;
2205
2412
  try {
2206
2413
  return await this.fetch(endpoint, options);
2207
2414
  } catch (retryError) {
2208
- this.orgToken = void 0;
2209
- this.orgTokenOrgUuid = void 0;
2415
+ this.orgSession = void 0;
2416
+ this.orgSessionOrgUuid = void 0;
2210
2417
  throw retryError;
2211
2418
  }
2212
2419
  }
@@ -2281,9 +2488,7 @@ ${formattedErrors}`, response.status);
2281
2488
  if (this.actingMemberUuid) {
2282
2489
  headers.set("X-Acting-Member", this.actingMemberUuid);
2283
2490
  }
2284
- if (this.orgToken) {
2285
- headers.set("X-Org-Token", this.orgToken);
2286
- }
2491
+ setOrgAuthHeader(headers, this.orgSession);
2287
2492
  const response = await this.fetchFunction(`${this.baseUrl}/api/v2/${endpoint}`, {
2288
2493
  ...options,
2289
2494
  ...this.apiKey ? {} : { credentials: "include" },
@@ -2306,31 +2511,28 @@ ${formattedErrors}`, response.status);
2306
2511
  try {
2307
2512
  return await this.fetchRaw(endpoint, options, allowedErrorStatuses);
2308
2513
  } catch (retryError) {
2309
- this.orgToken = void 0;
2310
- this.orgTokenOrgUuid = void 0;
2514
+ this.orgSession = void 0;
2515
+ this.orgSessionOrgUuid = void 0;
2311
2516
  throw retryError;
2312
2517
  }
2313
2518
  }
2314
2519
  if (response.status === 401) {
2315
2520
  const orgAuthInfo = parseOrgAuthChallenge(response.headers.get("WWW-Authenticate"));
2316
- if (orgAuthInfo && this.orgToken && this.orgTokenOrgUuid && this.orgTokenOrgUuid !== orgAuthInfo.orgUuid) {
2317
- this.orgToken = void 0;
2318
- this.orgTokenOrgUuid = void 0;
2521
+ if (orgAuthInfo && this.orgSession && this.orgSessionOrgUuid && this.orgSessionOrgUuid !== orgAuthInfo.orgUuid) {
2522
+ this.orgSession = void 0;
2523
+ this.orgSessionOrgUuid = void 0;
2319
2524
  }
2320
- if (orgAuthInfo && !this.orgToken) {
2321
- const requestCookieName = orgAuthInfo.cookieName.replace(
2322
- /^orgToken/,
2323
- "requestOrgToken"
2324
- );
2325
- const cachedOrgToken = getCookieValue(requestCookieName);
2326
- if (cachedOrgToken) {
2327
- this.orgToken = cachedOrgToken;
2328
- this.orgTokenOrgUuid = orgAuthInfo.orgUuid;
2525
+ if (orgAuthInfo && !this.orgSession) {
2526
+ const requestCookieName = getRequestOrgCookieName(orgAuthInfo.cookieName);
2527
+ const cachedOrgSession = requestCookieName ? getCookieValue(requestCookieName) : void 0;
2528
+ if (cachedOrgSession) {
2529
+ this.orgSession = cachedOrgSession;
2530
+ this.orgSessionOrgUuid = orgAuthInfo.orgUuid;
2329
2531
  try {
2330
2532
  return await this.fetchRaw(endpoint, options, allowedErrorStatuses);
2331
2533
  } catch (retryError) {
2332
- this.orgToken = void 0;
2333
- this.orgTokenOrgUuid = void 0;
2534
+ this.orgSession = void 0;
2535
+ this.orgSessionOrgUuid = void 0;
2334
2536
  throw retryError;
2335
2537
  }
2336
2538
  }
@@ -2346,20 +2548,20 @@ ${formattedErrors}`, response.status);
2346
2548
  })();
2347
2549
  }
2348
2550
  await this.orgAuthInProgress;
2349
- const postHandlerToken = getCookieValue(requestCookieName) ?? this.orgToken;
2350
- if (!postHandlerToken) {
2551
+ const postHandlerSession = (requestCookieName ? getCookieValue(requestCookieName) : void 0) ?? this.orgSession;
2552
+ if (!postHandlerSession) {
2351
2553
  throw new ApiError(
2352
- "Organization authentication did not issue a token",
2554
+ "Organization authentication did not issue a session",
2353
2555
  401
2354
2556
  );
2355
2557
  }
2356
- this.orgToken = postHandlerToken;
2357
- this.orgTokenOrgUuid = orgAuthInfo.orgUuid;
2558
+ this.orgSession = postHandlerSession;
2559
+ this.orgSessionOrgUuid = orgAuthInfo.orgUuid;
2358
2560
  try {
2359
2561
  return await this.fetchRaw(endpoint, options, allowedErrorStatuses);
2360
2562
  } catch (retryError) {
2361
- this.orgToken = void 0;
2362
- this.orgTokenOrgUuid = void 0;
2563
+ this.orgSession = void 0;
2564
+ this.orgSessionOrgUuid = void 0;
2363
2565
  throw retryError;
2364
2566
  }
2365
2567
  }
@@ -2398,9 +2600,7 @@ ${formattedErrors}`, response.status);
2398
2600
  if (this.actingMemberUuid) {
2399
2601
  headers.set("X-Acting-Member", this.actingMemberUuid);
2400
2602
  }
2401
- if (this.orgToken) {
2402
- headers.set("X-Org-Token", this.orgToken);
2403
- }
2603
+ setOrgAuthHeader(headers, this.orgSession);
2404
2604
  const fullUrl = `${this.baseUrl}/${path}`;
2405
2605
  const response = await this.fetchFunction(fullUrl, {
2406
2606
  ...options,
@@ -2441,20 +2641,22 @@ var AbilitiesApi = class extends BaseApiClient {
2441
2641
  }
2442
2642
  /** Get the full spec for a single ability type by slug. */
2443
2643
  async getAbilityType(wid, slug) {
2444
- return this.fetch(
2445
- `w/${wid}/abilities/types/${encodeURIComponent(slug)}`
2446
- );
2644
+ return this.fetch(`w/${wid}/abilities/types/${encodeURIComponent(slug)}`);
2447
2645
  }
2448
2646
  /**
2449
2647
  * List configured ability instances for a workflow or task scope.
2450
- * Exactly one of workflowId / taskId must be provided.
2648
+ * Provide exactly one of:
2649
+ * - workflow scope: workflowId (stable root → draft revision) and/or
2650
+ * workflowRevisionId (explicit pin)
2651
+ * - taskId for task-scoped abilities
2451
2652
  */
2452
2653
  async listAbilities(wid, options) {
2453
2654
  const params = new URLSearchParams();
2454
2655
  if (options.workflowId !== void 0)
2455
2656
  params.append("workflowId", options.workflowId.toString());
2456
- if (options.taskId !== void 0)
2457
- params.append("taskId", options.taskId.toString());
2657
+ if (options.workflowRevisionId !== void 0)
2658
+ params.append("workflowRevisionId", options.workflowRevisionId.toString());
2659
+ if (options.taskId !== void 0) params.append("taskId", options.taskId.toString());
2458
2660
  return this.fetch(`w/${wid}/abilities?${params}`);
2459
2661
  }
2460
2662
  /** Create (enable) a configured ability on a workflow or task scope. */
@@ -2477,6 +2679,20 @@ var AbilitiesApi = class extends BaseApiClient {
2477
2679
  method: "DELETE"
2478
2680
  });
2479
2681
  }
2682
+ /**
2683
+ * List recipient-directory rows approved for Charleston PMD test delivery
2684
+ * (CS-150). Returns only {recipientKey, displayLabel} for active,
2685
+ * test-delivery-allowed rows with a device id — never the PatientSync
2686
+ * recipient_id. Scoped to agents:write + the charleston_nephrology_pmd_paging
2687
+ * feature; used by the ability-config test-delivery dropdown. Kept on the
2688
+ * ability-configuration API (not generic DataRecords) because the actual
2689
+ * ability-editor scopes do not guarantee generic record access.
2690
+ */
2691
+ async getCharlestonTestDeliveryRecipients(wid) {
2692
+ return this.fetch(
2693
+ `w/${wid}/app-connections/charleston_nephrology/test-delivery/eligible-recipients`
2694
+ );
2695
+ }
2480
2696
  };
2481
2697
 
2482
2698
  // src/api/access-grants.ts
@@ -2548,6 +2764,24 @@ var AccessGrantsApi = class extends BaseApiClient {
2548
2764
  );
2549
2765
  return resp.items;
2550
2766
  }
2767
+ /**
2768
+ * List access grants *received* by a member (grantee view) — the
2769
+ * "what can this agent do without asking?" list. Filter with
2770
+ * status=active and/or a capabilityClass (e.g. 'tool.always_allow').
2771
+ */
2772
+ async getGranteeGrants(wid, memberId, params) {
2773
+ const searchParams = new URLSearchParams();
2774
+ if (params?.status) searchParams.set("status", params.status);
2775
+ if (params?.capabilityClass) {
2776
+ searchParams.set("capability_class", params.capabilityClass);
2777
+ }
2778
+ if (params?.page) searchParams.set("page", params.page.toString());
2779
+ if (params?.pageSize) searchParams.set("page_size", params.pageSize.toString());
2780
+ const qs = searchParams.toString();
2781
+ return this.fetch(
2782
+ `w/${wid}/access-grants/grantee/${memberId}${qs ? `?${qs}` : ""}`
2783
+ );
2784
+ }
2551
2785
  };
2552
2786
 
2553
2787
  // src/api/agent-tasks.ts
@@ -2634,25 +2868,6 @@ var AgentsApi = class extends BaseApiClient {
2634
2868
  method: "POST"
2635
2869
  });
2636
2870
  }
2637
- /** Resolve runtime tools for an agent on a simulated channel. */
2638
- async resolveAgentTools(wid, id, options) {
2639
- const params = new URLSearchParams();
2640
- params.append("channel", options.channel);
2641
- if (options.taskId !== void 0) params.append("taskId", options.taskId.toString());
2642
- if (options.taskUuid !== void 0) params.append("taskUuid", options.taskUuid);
2643
- return this.fetch(`w/${wid}/agents/${id}/resolve-tools?${params}`);
2644
- }
2645
- /**
2646
- * List the configured abilities effective for an agent via a task's workflow.
2647
- * Requires taskId because abilities are scoped to workflows/tasks, not agents.
2648
- */
2649
- async listAgentAbilities(wid, id, options) {
2650
- const params = new URLSearchParams();
2651
- params.append("taskId", options.taskId.toString());
2652
- return this.fetch(
2653
- `w/${wid}/agents/${id}/abilities?${params}`
2654
- );
2655
- }
2656
2871
  };
2657
2872
 
2658
2873
  // src/api/ai-models.ts
@@ -2849,8 +3064,7 @@ var AssignmentsApi = class extends BaseApiClient {
2849
3064
  if (options.sortOrder) params.append("sortOrder", options.sortOrder);
2850
3065
  if (options.mine) params.append("mine", options.mine.toString());
2851
3066
  if (options.taskId) params.append("taskId", options.taskId.toString());
2852
- if (options.memberId !== void 0)
2853
- params.append("memberId", options.memberId.toString());
3067
+ if (options.memberId !== void 0) params.append("memberId", options.memberId.toString());
2854
3068
  if (options.status) params.append("status", options.status);
2855
3069
  return this.fetch(
2856
3070
  `w/${wid}/assignments${params.toString() ? `?${params.toString()}` : ""}`
@@ -2979,6 +3193,20 @@ var AuthApi = class extends BaseApiClient {
2979
3193
  body: JSON.stringify(info)
2980
3194
  });
2981
3195
  }
3196
+ /**
3197
+ * Persist the account's FIRST-touch marketing attribution (write-once).
3198
+ *
3199
+ * Called by the browser at signup completion with its resolved UTM /
3200
+ * referrer / landing-page capture. The server keeps the first write and
3201
+ * ignores later posts (`recorded: false`), so calling this again is
3202
+ * harmless. Marketing context only — never emails, phones, or free text.
3203
+ */
3204
+ async recordAcquisition(request) {
3205
+ return this.fetch("account/acquisition", {
3206
+ method: "POST",
3207
+ body: JSON.stringify(request)
3208
+ });
3209
+ }
2982
3210
  /** Initiate SMS login by sending a verification code to the given phone number. */
2983
3211
  async login(phoneNumber, wid, organizationUuid) {
2984
3212
  const params = new URLSearchParams();
@@ -3109,15 +3337,11 @@ var AuthApi = class extends BaseApiClient {
3109
3337
  body: JSON.stringify({ email, organizationUuid, redirectUrl })
3110
3338
  });
3111
3339
  }
3112
- /** Validate a magic link token and optional OTP to complete authentication. */
3113
- async validateMagicLink(token, otp) {
3114
- const body = { token };
3115
- if (otp) {
3116
- body.otp = otp;
3117
- }
3340
+ /** Validate a magic link token to complete authentication. */
3341
+ async validateMagicLink(token) {
3118
3342
  return await this.fetch(`auth/validate-magic-link`, {
3119
3343
  method: "POST",
3120
- body: JSON.stringify(body)
3344
+ body: JSON.stringify({ token })
3121
3345
  });
3122
3346
  }
3123
3347
  // ===== EMAIL VERIFICATION METHODS =====
@@ -3206,23 +3430,29 @@ var AuthApi = class extends BaseApiClient {
3206
3430
  // ===== TWO-FACTOR AUTHENTICATION LOGIN METHODS =====
3207
3431
  /** Verify a TOTP code during login to complete two-factor authentication. */
3208
3432
  async verifyTOTPAuth(tempToken, code) {
3209
- return this.fetch("auth/2fa/auth/totp", {
3210
- method: "POST",
3211
- body: JSON.stringify({
3212
- temp_token: tempToken,
3213
- code
3214
- })
3215
- });
3433
+ return this.fetch(
3434
+ "auth/2fa/auth/totp",
3435
+ {
3436
+ method: "POST",
3437
+ body: JSON.stringify({
3438
+ temp_token: tempToken,
3439
+ code
3440
+ })
3441
+ }
3442
+ );
3216
3443
  }
3217
3444
  /** Verify a recovery code during login to complete two-factor authentication. */
3218
3445
  async verifyRecoveryCodeAuth(tempToken, code) {
3219
- return this.fetch("auth/2fa/auth/recovery", {
3220
- method: "POST",
3221
- body: JSON.stringify({
3222
- temp_token: tempToken,
3223
- code
3224
- })
3225
- });
3446
+ return this.fetch(
3447
+ "auth/2fa/auth/recovery",
3448
+ {
3449
+ method: "POST",
3450
+ body: JSON.stringify({
3451
+ temp_token: tempToken,
3452
+ code
3453
+ })
3454
+ }
3455
+ );
3226
3456
  }
3227
3457
  /** Get WebAuthn credential request options for two-factor login verification. */
3228
3458
  async getWebAuthnAuthOptions(tempToken) {
@@ -3235,13 +3465,16 @@ var AuthApi = class extends BaseApiClient {
3235
3465
  }
3236
3466
  /** Verify a WebAuthn assertion during login to complete two-factor authentication. */
3237
3467
  async verifyWebAuthnAuth(tempToken, assertionResponse) {
3238
- return this.fetch("auth/2fa/webauthn", {
3239
- method: "POST",
3240
- body: JSON.stringify({
3241
- temp_token: tempToken,
3242
- assertion_response: assertionResponse
3243
- })
3244
- });
3468
+ return this.fetch(
3469
+ "auth/2fa/webauthn",
3470
+ {
3471
+ method: "POST",
3472
+ body: JSON.stringify({
3473
+ temp_token: tempToken,
3474
+ assertion_response: assertionResponse
3475
+ })
3476
+ }
3477
+ );
3245
3478
  }
3246
3479
  // ===== ORGANIZATION MEMBERSHIP METHODS =====
3247
3480
  /** List all organizations the current account belongs to. */
@@ -3623,6 +3856,35 @@ var CallsApi = class extends BaseApiClient {
3623
3856
  async getMessageTiming(wid, chatId) {
3624
3857
  return this.fetch(`w/${wid}/recordings/chat/${chatId}/message-timing`);
3625
3858
  }
3859
+ /**
3860
+ * Get PHI-safe provenance metadata for the recording served by
3861
+ * `/audio.wav` — source, encryption, channels, duration, status, etc.
3862
+ * Staff-only Twilio SIDs are present only for superusers. Returns 404
3863
+ * when the chat has no native recording row (legacy chunk-only playback).
3864
+ */
3865
+ async getRecordingInfo(wid, chatId) {
3866
+ return this.fetch(`w/${wid}/recordings/chat/${chatId}/info`);
3867
+ }
3868
+ /** List the recorded audio chunks for a chat (metadata only). */
3869
+ async listChatRecordings(wid, chatId, options = {}) {
3870
+ const params = new URLSearchParams();
3871
+ if (options.role) params.set("role", options.role);
3872
+ return this.fetch(
3873
+ `w/${wid}/recordings/chat/${chatId}${params.toString() ? `?${params.toString()}` : ""}`
3874
+ );
3875
+ }
3876
+ /**
3877
+ * Get a single short-lived presigned URL to download the complete call
3878
+ * recording as one WAV file. The first request assembles + caches the
3879
+ * full-call WAV; later requests reuse it.
3880
+ */
3881
+ async getCallRecordingDownloadUrl(wid, chatId, options = {}) {
3882
+ const params = new URLSearchParams();
3883
+ if (options.expiresIn !== void 0) params.set("expires_in", String(options.expiresIn));
3884
+ return this.fetch(
3885
+ `w/${wid}/recordings/chat/${chatId}/download-url${params.toString() ? `?${params.toString()}` : ""}`
3886
+ );
3887
+ }
3626
3888
  };
3627
3889
 
3628
3890
  // src/api/cel.ts
@@ -3661,8 +3923,7 @@ var ChatsApi = class extends BaseApiClient {
3661
3923
  if (options.paused !== void 0) params.append("paused", options.paused.toString());
3662
3924
  if (options.archived !== void 0) params.append("archived", options.archived.toString());
3663
3925
  if (options.channel) params.append("channel", options.channel);
3664
- const chatType = options.chatType ?? "assignment";
3665
- params.append("chatType", chatType);
3926
+ if (options.chatType) params.append("chatType", options.chatType);
3666
3927
  if (options.memberId !== void 0) params.append("memberId", options.memberId.toString());
3667
3928
  if (options.assistantMemberId !== void 0)
3668
3929
  params.append("assistantMemberId", options.assistantMemberId.toString());
@@ -3673,6 +3934,11 @@ var ChatsApi = class extends BaseApiClient {
3673
3934
  if (options.filters && options.filters.length > 0) {
3674
3935
  params.append("filters", JSON.stringify(options.filters));
3675
3936
  }
3937
+ if (options.query) params.append("query", JSON.stringify(options.query));
3938
+ if (options.workflowId !== void 0)
3939
+ params.append("workflowId", options.workflowId.toString());
3940
+ if (options.workflowRevisionId !== void 0)
3941
+ params.append("workflowRevisionId", options.workflowRevisionId.toString());
3676
3942
  if (options.createdAfter) params.append("createdAfter", options.createdAfter);
3677
3943
  if (options.createdBefore) params.append("createdBefore", options.createdBefore);
3678
3944
  return params;
@@ -3707,6 +3973,17 @@ var ChatsApi = class extends BaseApiClient {
3707
3973
  async getChatTokenUsage(wid, chatId) {
3708
3974
  return this.fetch(`w/${wid}/chats/${chatId}/token-usage`);
3709
3975
  }
3976
+ /** List scheduled callbacks for a chat (newest first). */
3977
+ async getChatCallbacks(wid, chatId) {
3978
+ return this.fetch(`w/${wid}/chats/${chatId}/callbacks`);
3979
+ }
3980
+ /** Cancel a pending scheduled callback on a chat. */
3981
+ async cancelChatCallback(wid, chatId, callbackId) {
3982
+ return this.fetch(
3983
+ `w/${wid}/chats/${chatId}/callbacks/${callbackId}/cancel`,
3984
+ { method: "POST" }
3985
+ );
3986
+ }
3710
3987
  /** Get todo items extracted from a chat. */
3711
3988
  async getChatTodos(wid, chatId) {
3712
3989
  return this.fetch(`w/${wid}/chats/${chatId}/todos`);
@@ -3745,9 +4022,11 @@ var ChatsApi = class extends BaseApiClient {
3745
4022
  }
3746
4023
  /** Create a new chat. */
3747
4024
  async createChat(wid, chat) {
4025
+ const { agentMemberId, ...rest } = chat;
4026
+ const payload = agentMemberId !== void 0 && rest.assistantMemberId === void 0 ? { ...rest, assistantMemberId: agentMemberId } : rest;
3748
4027
  return this.fetch(`w/${wid}/chats`, {
3749
4028
  method: "POST",
3750
- body: JSON.stringify(chat)
4029
+ body: JSON.stringify(payload)
3751
4030
  });
3752
4031
  }
3753
4032
  /**
@@ -3780,6 +4059,25 @@ var ChatsApi = class extends BaseApiClient {
3780
4059
  body: JSON.stringify(chat)
3781
4060
  });
3782
4061
  }
4062
+ /**
4063
+ * Get per-chat model provenance for the Chat sidebar's model summary area:
4064
+ * the effective chat + realtime models, the agent's current default (the
4065
+ * reset/inherit target), and pinned/matches flags.
4066
+ */
4067
+ async getChatModelOverride(wid, id) {
4068
+ return this.fetch(`w/${wid}/chats/${id}/model-override`);
4069
+ }
4070
+ /**
4071
+ * Pin or reset the per-chat chat/realtime model snapshot. A concrete model id
4072
+ * pins that model; an empty/null id resets it to the agent's current default.
4073
+ * Only fields present in the payload are touched.
4074
+ */
4075
+ async updateChatModelOverride(wid, id, override) {
4076
+ return this.fetch(`w/${wid}/chats/${id}/model-override`, {
4077
+ method: "PUT",
4078
+ body: JSON.stringify(override)
4079
+ });
4080
+ }
3783
4081
  /** Update the mute status of a chat. */
3784
4082
  async updateChatMute(wid, id, muted) {
3785
4083
  return this.fetch(`w/${wid}/chats/${id}/mute`, {
@@ -3810,7 +4108,8 @@ var ChatsApi = class extends BaseApiClient {
3810
4108
  }
3811
4109
  );
3812
4110
  }
3813
- /** List messages in a chat with optional pagination. */
4111
+ /** List messages in a chat with optional pagination.
4112
+ * ``id`` is the numeric chat id (documented) or the chat uuid (accepted). */
3814
4113
  async getChatMessages(wid, id, limit, offset) {
3815
4114
  const params = new URLSearchParams();
3816
4115
  if (limit) params.append("limit", limit.toString());
@@ -3849,13 +4148,35 @@ var ChatsApi = class extends BaseApiClient {
3849
4148
  })
3850
4149
  });
3851
4150
  }
3852
- /** Rate a chat message by its UUID. */
3853
- async rateMessage(wid, chatId, messageUuid, rating) {
4151
+ /**
4152
+ * List durable feedback rows for a chat (thumbs, explicit, supervisor, extracted).
4153
+ */
4154
+ async getChatFeedback(wid, chatId, options = {}) {
4155
+ const params = new URLSearchParams();
4156
+ if (options.page != null) params.set("page", String(options.page));
4157
+ if (options.pageSize != null) params.set("pageSize", String(options.pageSize));
4158
+ if (options.source) params.set("source", options.source);
4159
+ if (options.rating) params.set("rating", options.rating);
4160
+ if (options.authorKind) params.set("authorKind", options.authorKind);
4161
+ const qs = params.toString();
4162
+ return this.fetch(
4163
+ `w/${wid}/chats/${chatId}/feedback${qs ? `?${qs}` : ""}`
4164
+ );
4165
+ }
4166
+ /**
4167
+ * Rate a chat message by its UUID.
4168
+ * Optional ``comment`` updates free-text details on the same durable rating row.
4169
+ */
4170
+ async rateMessage(wid, chatId, messageUuid, rating, comment) {
4171
+ const body = { rating };
4172
+ if (comment !== void 0) {
4173
+ body.comment = comment;
4174
+ }
3854
4175
  return this.fetch(
3855
4176
  `w/${wid}/chats/${chatId}/messages/${messageUuid}/rate`,
3856
4177
  {
3857
4178
  method: "POST",
3858
- body: JSON.stringify({ rating })
4179
+ body: JSON.stringify(body)
3859
4180
  }
3860
4181
  );
3861
4182
  }
@@ -4121,6 +4442,51 @@ var CustomToolkitsApi = class extends BaseApiClient {
4121
4442
  }
4122
4443
  };
4123
4444
 
4445
+ // src/api/dashboards.ts
4446
+ var DashboardsApi = class extends BaseApiClient {
4447
+ /** List all dashboards for the workspace, in tab order. */
4448
+ async getDashboards(wid) {
4449
+ return this.fetch(`w/${wid}/dashboards`);
4450
+ }
4451
+ /** Get a dashboard by ID. */
4452
+ async getDashboard(wid, id) {
4453
+ return this.fetch(`w/${wid}/dashboards/${id}`);
4454
+ }
4455
+ /** Create a named dashboard, optionally with an initial widget list. */
4456
+ async createDashboard(wid, body) {
4457
+ return this.fetch(`w/${wid}/dashboards`, {
4458
+ method: "POST",
4459
+ body: JSON.stringify(body)
4460
+ });
4461
+ }
4462
+ /** Update a dashboard's name, position, or widget list (full replace). */
4463
+ async updateDashboard(wid, id, body) {
4464
+ return this.fetch(`w/${wid}/dashboards/${id}`, {
4465
+ method: "PATCH",
4466
+ body: JSON.stringify(body)
4467
+ });
4468
+ }
4469
+ /** Delete a dashboard. */
4470
+ async deleteDashboard(wid, id) {
4471
+ await this.fetch(`w/${wid}/dashboards/${id}`, { method: "DELETE" });
4472
+ }
4473
+ /** Per-channel chat volume in the window + live needs-response backlog. */
4474
+ async getDashboardChannelStats(wid, options) {
4475
+ const params = new URLSearchParams();
4476
+ if (options?.hours !== void 0) params.append("hours", options.hours.toString());
4477
+ const query = params.toString();
4478
+ return this.fetch(
4479
+ `w/${wid}/dashboards/stats/channels${query ? `?${query}` : ""}`
4480
+ );
4481
+ }
4482
+ /** Assignment status rollup per root workflow. */
4483
+ async getDashboardWorkflowAssignmentStats(wid) {
4484
+ return this.fetch(
4485
+ `w/${wid}/dashboards/stats/workflow-assignments`
4486
+ );
4487
+ }
4488
+ };
4489
+
4124
4490
  // src/api/data-types.ts
4125
4491
  var DataTypesApi = class extends BaseApiClient {
4126
4492
  /** List all data types for a workspace, optionally filtering by archived status. */
@@ -4190,14 +4556,61 @@ var DataTypesApi = class extends BaseApiClient {
4190
4556
  async getDataRecords(wid, dataTypeId, options) {
4191
4557
  const params = new URLSearchParams();
4192
4558
  if (options?.memberId !== void 0) params.append("member_id", options.memberId.toString());
4559
+ if (options?.memberIds?.length) params.append("member_ids", options.memberIds.join(","));
4193
4560
  if (options?.search) params.append("search", options.search);
4194
4561
  if (options?.searchField) params.append("search_field", options.searchField);
4562
+ if (options?.dataRecordFilterId != null) {
4563
+ params.append("dataRecordFilterId", options.dataRecordFilterId.toString());
4564
+ }
4565
+ if (options?.query != null) params.append("query", JSON.stringify(options.query));
4195
4566
  if (options?.page) params.append("page", options.page.toString());
4196
4567
  if (options?.pageSize) params.append("page_size", options.pageSize.toString());
4197
4568
  return this.fetch(
4198
4569
  `w/${wid}/data-types/${dataTypeId}/records${params?.toString() ? `?${params.toString()}` : ""}`
4199
4570
  );
4200
4571
  }
4572
+ // Data-record filter APIs (saved Query IR predicates per form)
4573
+ /** List saved data-record filters, optionally scoped to one DataType. */
4574
+ async getDataRecordFilters(wid, options) {
4575
+ const params = new URLSearchParams();
4576
+ if (options?.dataTypeId != null) {
4577
+ params.append("dataTypeId", options.dataTypeId.toString());
4578
+ }
4579
+ const qs = params.toString();
4580
+ return this.fetch(
4581
+ `w/${wid}/data-record-filters${qs ? `?${qs}` : ""}`
4582
+ );
4583
+ }
4584
+ /** Get a single data-record filter by ID. */
4585
+ async getDataRecordFilter(wid, filterId) {
4586
+ return this.fetch(`w/${wid}/data-record-filters/${filterId}`);
4587
+ }
4588
+ /** Create a new saved data-record filter. */
4589
+ async createDataRecordFilter(wid, data) {
4590
+ return this.fetch(`w/${wid}/data-record-filters`, {
4591
+ method: "POST",
4592
+ body: JSON.stringify(data)
4593
+ });
4594
+ }
4595
+ /** Update a saved data-record filter. */
4596
+ async updateDataRecordFilter(wid, filterId, data) {
4597
+ return this.fetch(`w/${wid}/data-record-filters/${filterId}`, {
4598
+ method: "PUT",
4599
+ body: JSON.stringify(data)
4600
+ });
4601
+ }
4602
+ /** Delete a saved data-record filter. */
4603
+ async deleteDataRecordFilter(wid, filterId) {
4604
+ return this.fetch(`w/${wid}/data-record-filters/${filterId}`, {
4605
+ method: "DELETE"
4606
+ });
4607
+ }
4608
+ /** Get the count of records matching a saved filter. */
4609
+ async getDataRecordFilterCount(wid, filterId) {
4610
+ return this.fetch(
4611
+ `w/${wid}/data-record-filters/${filterId}/count`
4612
+ );
4613
+ }
4201
4614
  /** Get a single data record by ID. */
4202
4615
  async getDataRecord(wid, recordId) {
4203
4616
  return this.fetch(`w/${wid}/data-types/records/${recordId}`);
@@ -4310,6 +4723,38 @@ var DiscordBotsApi = class extends BaseApiClient {
4310
4723
  body: JSON.stringify(data)
4311
4724
  });
4312
4725
  }
4726
+ /**
4727
+ * Step-up preflight for the Discord account-link flow (GH #20196).
4728
+ *
4729
+ * A no-side-effect GET enforcing the same authenticated, stepped-up
4730
+ * `apps:write` session as authorize/complete-link. Call this through the
4731
+ * client *before* the full-page navigation to `/oauth/authorize`: a 401
4732
+ * `insufficient_user_authentication` triggers the SDK's enhanced-auth
4733
+ * (step-up) modal + retry, so a below-assurance session is prompted here
4734
+ * rather than hitting a raw 401 on a top-level browser navigation.
4735
+ * Resolves (204) once the session is sufficiently assured.
4736
+ */
4737
+ async discordLinkPreflight(wid) {
4738
+ return this.fetch(`w/${wid}/app-connections/discord/oauth/link/preflight`);
4739
+ }
4740
+ /**
4741
+ * Complete an authenticated Discord account link (GH #20196).
4742
+ *
4743
+ * POST-only. Exchanges the one-time opaque handle (issued by the OAuth
4744
+ * callback and carried in the `?discord_link_handle=` return param) for a
4745
+ * persisted MemberCredential. Requires an authenticated, step-up-protected
4746
+ * session with `apps:write`; a 401 `insufficient_user_authentication`
4747
+ * triggers the SDK's enhanced-auth (step-up) retry automatically.
4748
+ */
4749
+ async completeDiscordLink(wid, data) {
4750
+ return this.fetch(
4751
+ `w/${wid}/app-connections/discord/oauth/complete-link`,
4752
+ {
4753
+ method: "POST",
4754
+ body: JSON.stringify(data)
4755
+ }
4756
+ );
4757
+ }
4313
4758
  /**
4314
4759
  * Update an existing Discord bot configuration.
4315
4760
  */
@@ -4564,7 +5009,8 @@ var EventsApi = class extends BaseApiClient {
4564
5009
  if (params.taskId) searchParams.append("taskId", params.taskId.toString());
4565
5010
  if (params.dataTypeId) searchParams.append("dataTypeId", params.dataTypeId.toString());
4566
5011
  if (params.routineId) searchParams.append("routineId", params.routineId.toString());
4567
- if (params.workflowId) searchParams.append("workflowId", params.workflowId.toString());
5012
+ if (params.workflowRevisionId)
5013
+ searchParams.append("workflowRevisionId", params.workflowRevisionId.toString());
4568
5014
  if (params.journeyStepId)
4569
5015
  searchParams.append("journeyStepId", params.journeyStepId.toString());
4570
5016
  if (params.includeDisabled) searchParams.append("includeDisabled", "true");
@@ -4594,6 +5040,13 @@ var EventsApi = class extends BaseApiClient {
4594
5040
  method: "DELETE"
4595
5041
  });
4596
5042
  }
5043
+ /** Send a one-off test webhook for an existing webhook event rule. */
5044
+ async testWebhook(wid, id, request) {
5045
+ return this.fetch(`w/${wid}/event-rules/${id}/test-webhook`, {
5046
+ method: "POST",
5047
+ body: JSON.stringify(request)
5048
+ });
5049
+ }
4597
5050
  /** Reorder event rules by specifying the desired rule ID sequence. */
4598
5051
  async reorderEventRules(wid, ruleIds) {
4599
5052
  return this.fetch(`w/${wid}/event-rules/reorder`, {
@@ -4628,7 +5081,8 @@ var EventsApi = class extends BaseApiClient {
4628
5081
  if (options.objectType) params.append("objectType", options.objectType);
4629
5082
  if (options.eventType) params.append("eventType", options.eventType);
4630
5083
  if (options.actionType) params.append("actionType", options.actionType);
4631
- if (options.workflowId) params.append("workflowId", options.workflowId.toString());
5084
+ if (options.workflowRevisionId)
5085
+ params.append("workflowRevisionId", options.workflowRevisionId.toString());
4632
5086
  return this.fetch(
4633
5087
  `w/${wid}/event-rules/executions${params.toString() ? `?${params.toString()}` : ""}`
4634
5088
  );
@@ -4640,6 +5094,20 @@ var EventsApi = class extends BaseApiClient {
4640
5094
  body: JSON.stringify(request)
4641
5095
  });
4642
5096
  }
5097
+ /**
5098
+ * Preview which target-audience roles lack Workflow USE for the Workflows a
5099
+ * draft Routine would start. Non-persisting, non-blocking authoring assist —
5100
+ * returns warnings only (role/Workflow names + IDs; no Member data).
5101
+ */
5102
+ async previewRoutineWorkflowAccess(wid, request) {
5103
+ return this.fetch(
5104
+ `w/${wid}/routines/preview-workflow-access`,
5105
+ {
5106
+ method: "POST",
5107
+ body: JSON.stringify(request)
5108
+ }
5109
+ );
5110
+ }
4643
5111
  /** List routines with optional pagination and active status filtering. */
4644
5112
  async getRoutines(wid, options = {}) {
4645
5113
  const params = new URLSearchParams();
@@ -5071,6 +5539,25 @@ var FhirConnectionsApi = class extends BaseApiClient {
5071
5539
  }
5072
5540
  };
5073
5541
 
5542
+ // src/api/patientsync-connections.ts
5543
+ var PatientSyncConnectionsApi = class extends BaseApiClient {
5544
+ /** Create or update the workspace's PatientSync connection (singleton). */
5545
+ async configurePatientSync(wid, data) {
5546
+ return this.fetch(
5547
+ `w/${wid}/app-connections/patientsync/configure`,
5548
+ { method: "POST", body: JSON.stringify(data) }
5549
+ );
5550
+ }
5551
+ /** Read the PatientSync connection status (never returns the API key). */
5552
+ async getPatientSyncStatus(wid) {
5553
+ return this.fetch(`w/${wid}/app-connections/patientsync/status`);
5554
+ }
5555
+ /** Delete the workspace's PatientSync connection. */
5556
+ async deletePatientSyncConnection(wid) {
5557
+ return this.fetch(`w/${wid}/app-connections/patientsync/`, { method: "DELETE" });
5558
+ }
5559
+ };
5560
+
5074
5561
  // src/api/healthie.ts
5075
5562
  var HealthieApi = class extends BaseApiClient {
5076
5563
  async configureHealthie(wid, data) {
@@ -5191,6 +5678,29 @@ var FilesApi = class extends BaseApiClient {
5191
5678
  async getFile(wid, id) {
5192
5679
  return this.fetch(`w/${wid}/files/${id}`);
5193
5680
  }
5681
+ /**
5682
+ * Resolve a wiki-style relative path (as authored in a markdown link or
5683
+ * image) to a file. `folderId` is the linking document's folder; omit it
5684
+ * to resolve from the workspace root. Handles `.`/`..` segments and an
5685
+ * omitted `.md` extension server-side.
5686
+ */
5687
+ async resolveFilePath(wid, path, folderId) {
5688
+ const params = new URLSearchParams({ path });
5689
+ if (folderId != null) params.append("folderId", String(folderId));
5690
+ return this.fetch(`w/${wid}/files/resolve-path?${params.toString()}`);
5691
+ }
5692
+ /**
5693
+ * Download the given files + folders (folders recursively) as a single ZIP.
5694
+ * Returns the raw archive bytes for the caller to save.
5695
+ */
5696
+ async downloadFilesZip(wid, fileIds, folderIds) {
5697
+ const response = await this.fetchRaw(`w/${wid}/files/download/zip`, {
5698
+ method: "POST",
5699
+ headers: { "Content-Type": "application/json" },
5700
+ body: JSON.stringify({ file_ids: fileIds, folder_ids: folderIds })
5701
+ });
5702
+ return response.blob();
5703
+ }
5194
5704
  /** Create a new file record in the workspace. */
5195
5705
  async createFile(wid, file) {
5196
5706
  return this.fetch(`w/${wid}/files`, {
@@ -5232,6 +5742,36 @@ var FilesApi = class extends BaseApiClient {
5232
5742
  method: "DELETE"
5233
5743
  });
5234
5744
  }
5745
+ /** List a file's version history (newest first). */
5746
+ async listFileVersions(wid, fileId) {
5747
+ return this.fetch(`w/${wid}/files/${fileId}/versions`);
5748
+ }
5749
+ /** Compare two versions of a file. For text files both raw contents are returned. */
5750
+ async getFileVersionDiff(wid, fileId, fromVersion, toVersion) {
5751
+ return this.fetch(
5752
+ `w/${wid}/files/${fileId}/versions/diff?fromVersion=${fromVersion}&toVersion=${toVersion}`
5753
+ );
5754
+ }
5755
+ /** Restore an earlier version as the file's current contents. */
5756
+ async restoreFileVersion(wid, fileId, versionNumber, changeNote) {
5757
+ return this.fetch(
5758
+ `w/${wid}/files/${fileId}/versions/${versionNumber}/restore`,
5759
+ {
5760
+ method: "POST",
5761
+ // Required JSON body: keeps this cookie-auth POST non-forgeable
5762
+ // by cross-site HTML forms (backend rejects bodyless requests).
5763
+ body: JSON.stringify(changeNote ? { changeNote } : {})
5764
+ }
5765
+ );
5766
+ }
5767
+ /**
5768
+ * Same-origin proxy URL for a version's raw contents. Mirrors the shape of
5769
+ * `FileResponse.cdnUrl`: an app-relative Next.js route that authenticates
5770
+ * via session cookies and forwards to the versioned contents endpoint.
5771
+ */
5772
+ getFileVersionContentsUrl(wid, fileId, versionNumber) {
5773
+ return `/api/w/${wid}/files/${fileId}/versions/${versionNumber}/contents`;
5774
+ }
5235
5775
  /** Convert a file to the specified format (text, markdown, or PDF). */
5236
5776
  async convertFile(wid, fileId, format = "pdf") {
5237
5777
  return this.fetch(
@@ -5807,6 +6347,31 @@ var McpServersApi = class extends BaseApiClient {
5807
6347
  };
5808
6348
 
5809
6349
  // src/api/members.ts
6350
+ var MemberImportValidationError = class extends Error {
6351
+ validationErrors;
6352
+ constructor(message, validationErrors) {
6353
+ super(message);
6354
+ this.name = "MemberImportValidationError";
6355
+ this.validationErrors = validationErrors;
6356
+ }
6357
+ };
6358
+ function throwMemberImportError(errorBody, fallback) {
6359
+ let detail = errorBody?.detail;
6360
+ if (typeof detail === "string") {
6361
+ try {
6362
+ const parsed = JSON.parse(detail);
6363
+ if (parsed && typeof parsed === "object") detail = parsed;
6364
+ } catch {
6365
+ }
6366
+ }
6367
+ if (detail && typeof detail === "object") {
6368
+ const { message, errors } = detail;
6369
+ if (Array.isArray(errors)) {
6370
+ throw new MemberImportValidationError(message || fallback, errors);
6371
+ }
6372
+ }
6373
+ throw new Error(typeof detail === "string" ? detail : fallback);
6374
+ }
5810
6375
  var MembersApi = class extends BaseApiClient {
5811
6376
  /** Get the currently authenticated member for a workspace. */
5812
6377
  async getCurrentMember(wid) {
@@ -5847,19 +6412,14 @@ var MembersApi = class extends BaseApiClient {
5847
6412
  });
5848
6413
  }
5849
6414
  /** List workspace members with pagination, filtering, and sorting. */
5850
- async getWorkspaceMembers(wid, page = 1, pageSize = 10, filters, search, role, sortBy, sortOrder, memberType, isArchived = false, isManager, memberTypes, hasAccount, excludeIds) {
6415
+ async getWorkspaceMembers(wid, page = 1, pageSize = 10, search, role, sortBy, sortOrder, memberType, isArchived = false, isManager, memberTypes, hasAccount, excludeIds, memberFilterId, query) {
5851
6416
  const params = new URLSearchParams();
6417
+ if (memberFilterId != null) params.append("memberFilterId", memberFilterId.toString());
6418
+ if (query != null) params.append("query", JSON.stringify(query));
5852
6419
  if (page) params.append("page", page.toString());
5853
6420
  if (pageSize) params.append("pageSize", pageSize.toString());
5854
6421
  if (sortBy) params.append("sortBy", sortBy);
5855
6422
  if (sortOrder) params.append("sortOrder", sortOrder);
5856
- if (filters) {
5857
- if (Array.isArray(filters)) {
5858
- params.append("filters", JSON.stringify(filters));
5859
- } else {
5860
- params.append("filters", JSON.stringify(filters));
5861
- }
5862
- }
5863
6423
  if (search) params.append("search", search);
5864
6424
  if (role) params.append("role", role);
5865
6425
  if (memberTypes && memberTypes.length > 0) {
@@ -5921,6 +6481,17 @@ var MembersApi = class extends BaseApiClient {
5921
6481
  method: "POST"
5922
6482
  });
5923
6483
  }
6484
+ /**
6485
+ * Send the member an SMS asking them to confirm their phone number. When they
6486
+ * reply, a trusted phone auth binding is created so they can use SMS as
6487
+ * themselves without an account (member-attested alternative to the
6488
+ * members:admin "Trusted" override).
6489
+ */
6490
+ async sendMemberPhoneConfirmation(wid, memberId) {
6491
+ return this.fetch(`w/${wid}/members/${memberId}/phone-confirmation`, {
6492
+ method: "POST"
6493
+ });
6494
+ }
5924
6495
  // Member Filter APIs
5925
6496
  /** List all saved member filters for a workspace. */
5926
6497
  async getMemberFilters(wid) {
@@ -6021,48 +6592,98 @@ var MembersApi = class extends BaseApiClient {
6021
6592
  });
6022
6593
  }
6023
6594
  // Import/Export Members API
6024
- /** Import members from a CSV file, streaming progress updates via callback. */
6025
- async importMembers(wid, file, newMemberRoleId, onProgress) {
6595
+ /**
6596
+ * Read-only preview classifying each CSV row before any write (GRA-5545).
6597
+ *
6598
+ * Returns create/update/unchanged/conflict/error counts. For phone-only
6599
+ * identity conflicts it also returns existing vs incoming identity so the
6600
+ * operator can decide whether to skip or explicitly overwrite before
6601
+ * committing. Requires MEMBERS_ADMIN and is bulk-PHI audited server-side.
6602
+ */
6603
+ async previewImportMembers(wid, file, newMemberRoleId, options) {
6026
6604
  const formData = new FormData();
6027
6605
  formData.append("file", file);
6028
6606
  const params = new URLSearchParams();
6029
6607
  params.append("new_member_role_id", newMemberRoleId.toString());
6030
- const response = await fetch(
6031
- `${this.baseUrl}/api/v2/w/${wid}/members/import?${params.toString()}`,
6608
+ if (options?.trustEmailAddresses) {
6609
+ params.append("trust_email_addresses", "true");
6610
+ }
6611
+ if (options?.trustPhoneNumbers) {
6612
+ params.append("trust_phone_numbers", "true");
6613
+ }
6614
+ const response = await this.fetchRaw(
6615
+ `w/${wid}/members/import/preview?${params.toString()}`,
6032
6616
  {
6033
6617
  method: "POST",
6034
- body: formData,
6035
- credentials: "include"
6036
- }
6618
+ body: formData
6619
+ },
6620
+ [400, 413]
6037
6621
  );
6038
6622
  if (!response.ok) {
6039
- const error = await response.json();
6040
- if (error.detail && typeof error.detail === "object") {
6041
- const { message, errors } = error.detail;
6042
- if (errors && Array.isArray(errors)) {
6043
- const importError = new Error(message || "Import validation failed");
6044
- importError.validationErrors = errors;
6045
- throw importError;
6046
- }
6047
- }
6048
- throw new Error(error.detail || "Import failed");
6623
+ const error = await response.json().catch(() => ({}));
6624
+ throwMemberImportError(error, "Import preview failed");
6625
+ }
6626
+ return response.json();
6627
+ }
6628
+ /**
6629
+ * Import members from a CSV file, streaming progress updates via callback.
6630
+ *
6631
+ * ``identityConflictPolicy`` (default 'skip') controls how a row matching an
6632
+ * existing member ONLY by phone with different identity fields is handled.
6633
+ * Send 'overwrite_identity_fields' only after the operator confirms a preview.
6634
+ */
6635
+ async importMembers(wid, file, newMemberRoleId, onProgress, options) {
6636
+ const formData = new FormData();
6637
+ formData.append("file", file);
6638
+ const params = new URLSearchParams();
6639
+ params.append("new_member_role_id", newMemberRoleId.toString());
6640
+ if (options?.trustEmailAddresses) {
6641
+ params.append("trust_email_addresses", "true");
6642
+ }
6643
+ if (options?.trustPhoneNumbers) {
6644
+ params.append("trust_phone_numbers", "true");
6645
+ }
6646
+ if (options?.identityConflictPolicy) {
6647
+ params.append("identity_conflict_policy", options.identityConflictPolicy);
6648
+ }
6649
+ const response = await this.fetchRaw(
6650
+ `w/${wid}/members/import?${params.toString()}`,
6651
+ {
6652
+ method: "POST",
6653
+ body: formData
6654
+ },
6655
+ [400, 413]
6656
+ );
6657
+ if (!response.ok) {
6658
+ const error = await response.json().catch(() => ({}));
6659
+ throwMemberImportError(error, "Import failed");
6049
6660
  }
6050
6661
  if (onProgress && response.body) {
6051
6662
  const reader = response.body.getReader();
6052
6663
  const decoder = new TextDecoder();
6664
+ let buffer = "";
6053
6665
  while (true) {
6054
6666
  const { done, value } = await reader.read();
6055
6667
  if (done) break;
6056
- const chunk = decoder.decode(value);
6057
- const lines = chunk.split("\n").filter((line) => line.trim());
6668
+ buffer += decoder.decode(value, { stream: true });
6669
+ const lines = buffer.split("\n");
6670
+ buffer = lines.pop() ?? "";
6058
6671
  for (const line of lines) {
6672
+ const trimmed = line.trim();
6673
+ if (!trimmed) continue;
6059
6674
  try {
6060
- const progress = JSON.parse(line);
6061
- onProgress(progress);
6675
+ onProgress(JSON.parse(trimmed));
6062
6676
  } catch {
6063
6677
  }
6064
6678
  }
6065
6679
  }
6680
+ const tail = buffer.trim();
6681
+ if (tail) {
6682
+ try {
6683
+ onProgress(JSON.parse(tail));
6684
+ } catch {
6685
+ }
6686
+ }
6066
6687
  }
6067
6688
  return { success: true };
6068
6689
  }
@@ -6239,6 +6860,11 @@ var MembersApi = class extends BaseApiClient {
6239
6860
  `w/${wid}/members/${memberId}/memories${qs ? `?${qs}` : ""}`
6240
6861
  );
6241
6862
  }
6863
+ async getMemberMemory(wid, memberId, key) {
6864
+ return this.fetch(
6865
+ `w/${wid}/members/${memberId}/memories/${encodeURIComponent(key)}`
6866
+ );
6867
+ }
6242
6868
  async createMemberMemory(wid, memberId, body) {
6243
6869
  return this.fetch(`w/${wid}/members/${memberId}/memories`, {
6244
6870
  method: "POST",
@@ -6254,6 +6880,17 @@ var MembersApi = class extends BaseApiClient {
6254
6880
  { method: "DELETE" }
6255
6881
  );
6256
6882
  }
6883
+ /** Bulk-create members in a workspace. */
6884
+ async bulkCreateMembers(wid, request) {
6885
+ return this.fetch(`w/${wid}/members/bulk`, {
6886
+ method: "POST",
6887
+ body: JSON.stringify(request)
6888
+ });
6889
+ }
6890
+ /** Get all sync links for a member across app connections. */
6891
+ async getMemberSyncLinks(wid, memberId) {
6892
+ return this.fetch(`w/${wid}/members/${memberId}/sync-links`);
6893
+ }
6257
6894
  };
6258
6895
 
6259
6896
  // src/api/milestones.ts
@@ -6296,6 +6933,25 @@ var MilestonesApi = class extends BaseApiClient {
6296
6933
  }
6297
6934
  };
6298
6935
 
6936
+ // src/api/motd.ts
6937
+ var MotdApi = class extends BaseApiClient {
6938
+ /**
6939
+ * The Message-of-the-Day tip for the workspace on a given date.
6940
+ *
6941
+ * `date` is an ISO `YYYY-MM-DD` string (defaults to today, UTC, when
6942
+ * omitted); `offset` advances the rotation ("show another"). Selection is
6943
+ * deterministic — same date + workspace + offset always returns the same
6944
+ * tip — and cycles through the tip list.
6945
+ */
6946
+ async getMotd(wid, options) {
6947
+ const params = new URLSearchParams();
6948
+ if (options?.date !== void 0) params.append("date", options.date);
6949
+ if (options?.offset !== void 0) params.append("offset", options.offset.toString());
6950
+ const query = params.toString();
6951
+ return this.fetch(`w/${wid}/motd${query ? `?${query}` : ""}`);
6952
+ }
6953
+ };
6954
+
6299
6955
  // src/api/monday.ts
6300
6956
  var MondayIntegrationApi = class extends BaseApiClient {
6301
6957
  /**
@@ -6332,6 +6988,20 @@ var MondayIntegrationApi = class extends BaseApiClient {
6332
6988
  // -----------------------------------------------------------------------
6333
6989
  // Monday.com Connection management (OAuth, status, sync, reconciliation)
6334
6990
  // -----------------------------------------------------------------------
6991
+ /**
6992
+ * Create the Monday.com connection shell (no credentials yet).
6993
+ *
6994
+ * First step of the guided setup flow: provisions the connection row so
6995
+ * the admin lands on the detail page where the OAuth callback URL is
6996
+ * shown — which they need to register their Monday.com app before they
6997
+ * have a Client ID / Secret to enter. Idempotent.
6998
+ */
6999
+ async installMondayConnection(wid) {
7000
+ return this.fetch(`w/${wid}/app-connections/monday/install`, {
7001
+ method: "POST",
7002
+ body: JSON.stringify({})
7003
+ });
7004
+ }
6335
7005
  async configureMondayConnection(wid, data) {
6336
7006
  return this.fetch(`w/${wid}/app-connections/monday/configure`, {
6337
7007
  method: "POST",
@@ -6750,6 +7420,7 @@ var OrgApi = class extends BaseApiClient {
6750
7420
  */
6751
7421
  async searchPhoneNumbers(orgUuid, params) {
6752
7422
  const query = new URLSearchParams();
7423
+ if (params?.country) query.set("country", params.country);
6753
7424
  if (params?.numberType) query.set("number_type", params.numberType);
6754
7425
  if (params?.areaCode) query.set("area_code", params.areaCode);
6755
7426
  if (params?.contains) query.set("contains", params.contains);
@@ -6761,11 +7432,20 @@ var OrgApi = class extends BaseApiClient {
6761
7432
  }
6762
7433
  /**
6763
7434
  * Purchase a phone number from Twilio for this org inventory (org admin only).
7435
+ *
7436
+ * Numbers in regulated countries (e.g. Australia) require a Twilio regulatory
7437
+ * bundle and an address — pass `bundleSid` and `addressSid` for those.
6764
7438
  */
6765
- async purchasePhoneNumber(orgUuid, phoneNumber, numberType) {
7439
+ async purchasePhoneNumber(orgUuid, phoneNumber, numberType, opts) {
6766
7440
  return this.fetch(`o/${orgUuid}/phone-numbers/purchase`, {
6767
7441
  method: "POST",
6768
- body: JSON.stringify({ phoneNumber, numberType })
7442
+ body: JSON.stringify({
7443
+ phoneNumber,
7444
+ numberType,
7445
+ country: opts?.country,
7446
+ bundleSid: opts?.bundleSid,
7447
+ addressSid: opts?.addressSid
7448
+ })
6769
7449
  });
6770
7450
  }
6771
7451
  /**
@@ -6943,35 +7623,119 @@ var OrgApi = class extends BaseApiClient {
6943
7623
  return this.fetch(`o/${orgUuid}/business-profile`);
6944
7624
  }
6945
7625
  /**
6946
- * Upsert the org's business profile. Idempotent via cached SIDs.
6947
- * Returns a fresh BusinessProfileResponse on success — including the
6948
- * compliance evaluation result so the frontend can immediately enable
6949
- * Submit without a second round-trip.
7626
+ * Upsert the org's business profile. Idempotent via cached SIDs.
7627
+ * Returns a fresh BusinessProfileResponse on success — including the
7628
+ * compliance evaluation result so the frontend can immediately enable
7629
+ * Submit without a second round-trip.
7630
+ */
7631
+ async updateBusinessProfile(orgUuid, data) {
7632
+ return this.fetch(`o/${orgUuid}/business-profile`, {
7633
+ method: "PUT",
7634
+ body: JSON.stringify(data)
7635
+ });
7636
+ }
7637
+ /**
7638
+ * Submit the business profile to Twilio for review. Server re-evaluates
7639
+ * compliance live and returns 412 if the profile is not currently
7640
+ * `compliant`; returns 409 if a review is already in flight.
7641
+ */
7642
+ async submitBusinessProfile(orgUuid) {
7643
+ return this.fetch(`o/${orgUuid}/business-profile/submit`, {
7644
+ method: "POST"
7645
+ });
7646
+ }
7647
+ /**
7648
+ * Cancel an in-flight Twilio review. Resets the cached profile state
7649
+ * to `draft` so the user can edit and resubmit.
7650
+ */
7651
+ async cancelBusinessProfile(orgUuid) {
7652
+ return this.fetch(`o/${orgUuid}/business-profile/cancel`, {
7653
+ method: "POST"
7654
+ });
7655
+ }
7656
+ /**
7657
+ * List the org's A2P brands (broker resources). The SMS-consent editor uses
7658
+ * this to pick which brand's consent config to edit.
7659
+ */
7660
+ async listA2PBrands(orgUuid) {
7661
+ return this.fetch(`o/${orgUuid}/a2p-brands`);
7662
+ }
7663
+ /**
7664
+ * Fetch a brand's resolved A2P campaign config. The response carries both the
7665
+ * raw `overrides` and the `resolved` payload (defaults + overrides) the editor
7666
+ * previews — including the canonical SMS consent text.
7667
+ */
7668
+ async getA2PCampaignConfig(orgUuid, brandUuid) {
7669
+ return this.fetch(
7670
+ `o/${orgUuid}/a2p-brands/${brandUuid}/campaign-config`
7671
+ );
7672
+ }
7673
+ /**
7674
+ * Partial-update a brand's A2P campaign config. Returns the freshly resolved
7675
+ * config so the editor's live preview updates without a second round-trip.
7676
+ */
7677
+ async updateA2PCampaignConfig(orgUuid, brandUuid, data) {
7678
+ return this.fetch(
7679
+ `o/${orgUuid}/a2p-brands/${brandUuid}/campaign-config`,
7680
+ {
7681
+ method: "PUT",
7682
+ body: JSON.stringify(data)
7683
+ }
7684
+ );
7685
+ }
7686
+ /**
7687
+ * Published Sites across the org's workspaces that can be linked as this
7688
+ * brand's enrollment (opt-in) surface. Org-authorized, so it works even when
7689
+ * the admin isn't a member of the workspace holding the Site.
7690
+ */
7691
+ async listA2PEnrollmentSiteCandidates(orgUuid, brandUuid) {
7692
+ return this.fetch(
7693
+ `o/${orgUuid}/a2p-brands/${brandUuid}/enrollment-site/candidates`
7694
+ );
7695
+ }
7696
+ /**
7697
+ * Link the brand to a published enrollment Site (sets `site_uuid`). Returns
7698
+ * the refreshed campaign config so the editor's link state updates inline.
6950
7699
  */
6951
- async updateBusinessProfile(orgUuid, data) {
6952
- return this.fetch(`o/${orgUuid}/business-profile`, {
6953
- method: "PUT",
6954
- body: JSON.stringify(data)
6955
- });
7700
+ async linkA2PEnrollmentSite(orgUuid, brandUuid, data) {
7701
+ return this.fetch(
7702
+ `o/${orgUuid}/a2p-brands/${brandUuid}/enrollment-site`,
7703
+ {
7704
+ method: "PUT",
7705
+ body: JSON.stringify(data)
7706
+ }
7707
+ );
6956
7708
  }
6957
7709
  /**
6958
- * Submit the business profile to Twilio for review. Server re-evaluates
6959
- * compliance live and returns 412 if the profile is not currently
6960
- * `compliant`; returns 409 if a review is already in flight.
7710
+ * Provision (or reuse) a patient-enrollment Site for the brand and link it —
7711
+ * the one-click path behind the SMS Consent tab. `workspaceUuid` is required
7712
+ * only when the org has multiple workspaces. Returns the refreshed campaign
7713
+ * config so the editor's link state updates inline. Idempotent.
6961
7714
  */
6962
- async submitBusinessProfile(orgUuid) {
6963
- return this.fetch(`o/${orgUuid}/business-profile/submit`, {
6964
- method: "POST"
6965
- });
7715
+ async provisionA2PEnrollmentSite(orgUuid, brandUuid, data = {}) {
7716
+ return this.fetch(
7717
+ `o/${orgUuid}/a2p-brands/${brandUuid}/enrollment-site/provision`,
7718
+ {
7719
+ method: "POST",
7720
+ body: JSON.stringify(data)
7721
+ }
7722
+ );
7723
+ }
7724
+ /** Clear the brand's enrollment-site link. */
7725
+ async unlinkA2PEnrollmentSite(orgUuid, brandUuid) {
7726
+ return this.fetch(
7727
+ `o/${orgUuid}/a2p-brands/${brandUuid}/enrollment-site`,
7728
+ { method: "DELETE" }
7729
+ );
6966
7730
  }
6967
7731
  /**
6968
- * Cancel an in-flight Twilio review. Resets the cached profile state
6969
- * to `draft` so the user can edit and resubmit.
7732
+ * The brand-addressable enrollment form URL (carries `?brand=…`). Outreach
7733
+ * appends each patient's `external_id`. `url` is null until a Site is linked.
6970
7734
  */
6971
- async cancelBusinessProfile(orgUuid) {
6972
- return this.fetch(`o/${orgUuid}/business-profile/cancel`, {
6973
- method: "POST"
6974
- });
7735
+ async getA2PBrandEnrollmentUrl(orgUuid, brandUuid) {
7736
+ return this.fetch(
7737
+ `o/${orgUuid}/a2p-brands/${brandUuid}/enrollment-url`
7738
+ );
6975
7739
  }
6976
7740
  /**
6977
7741
  * List available member roles for a workspace in the organization.
@@ -6997,58 +7761,53 @@ var OrgApi = class extends BaseApiClient {
6997
7761
  function getOAuthPath(providerSlug, action) {
6998
7762
  if (providerSlug === "google_calendar") {
6999
7763
  return `oauth/google/calendar/${action}`;
7000
- } else if (providerSlug === "gmail") {
7764
+ }
7765
+ if (providerSlug === "gmail") {
7001
7766
  return `oauth/google/gmail/${action}`;
7002
- } else {
7003
- return `oauth/${providerSlug}/${action}`;
7004
7767
  }
7768
+ if (providerSlug === "gdrive") {
7769
+ return `oauth/google/drive/${action}`;
7770
+ }
7771
+ return `oauth/${providerSlug}/${action}`;
7772
+ }
7773
+ function buildAuthorizeQuery(options) {
7774
+ if (!options) return "";
7775
+ const params = new URLSearchParams();
7776
+ if (options.credentialUuid) params.set("credentialUuid", options.credentialUuid);
7777
+ if (options.loginHint) params.set("loginHint", options.loginHint);
7778
+ if (options.redirect) params.set("redirect", options.redirect);
7779
+ const qs = params.toString();
7780
+ return qs ? `?${qs}` : "";
7005
7781
  }
7006
7782
  var OAuthConnectionsApi = class extends BaseApiClient {
7007
- /**
7008
- * Get the connection status for an OAuth provider
7009
- */
7010
7783
  async getConnectionStatus(providerSlug) {
7011
7784
  const path = getOAuthPath(providerSlug, "status");
7012
7785
  return this.fetchRoot(path);
7013
7786
  }
7014
- /**
7015
- * Get the authorization URL to start OAuth flow
7016
- */
7017
- async getAuthorizationUrl(providerSlug) {
7018
- const path = getOAuthPath(providerSlug, "authorize");
7787
+ async listAccounts(providerSlug) {
7788
+ const path = getOAuthPath(providerSlug, "accounts");
7019
7789
  return this.fetchRoot(path);
7020
7790
  }
7021
- /**
7022
- * Disconnect an OAuth provider
7023
- */
7024
- async disconnect(providerSlug) {
7791
+ async getAuthorizationUrl(providerSlug, options) {
7792
+ const path = getOAuthPath(providerSlug, "authorize") + buildAuthorizeQuery(options);
7793
+ return this.fetchRoot(path);
7794
+ }
7795
+ async disconnect(providerSlug, credentialUuid) {
7025
7796
  const path = getOAuthPath(providerSlug, "disconnect");
7026
- return this.fetchRoot(path, { method: "DELETE" });
7797
+ const qs = credentialUuid ? `?credentialUuid=${encodeURIComponent(credentialUuid)}` : "";
7798
+ return this.fetchRoot(`${path}${qs}`, { method: "DELETE" });
7027
7799
  }
7028
7800
  };
7029
7801
  var OAuthApi = class extends BaseApiClient {
7030
- /**
7031
- * Get all available OAuth/API key scopes with metadata.
7032
- *
7033
- * This returns the full scope definitions from the backend,
7034
- * ensuring the UI always shows the correct scopes.
7035
- */
7036
7802
  async getAvailableScopes() {
7037
7803
  return this.fetch("oauth/scopes");
7038
7804
  }
7039
- /**
7040
- * Create an authorization code for OAuth flow
7041
- * This is called after the user approves the authorization request
7042
- */
7043
7805
  async authorize(request) {
7044
7806
  return this.fetch("oauth/authorize", {
7045
7807
  method: "POST",
7046
7808
  body: JSON.stringify(request)
7047
7809
  });
7048
7810
  }
7049
- /**
7050
- * Exchange authorization code for access token
7051
- */
7052
7811
  async exchangeOAuthToken(request) {
7053
7812
  const formData = new URLSearchParams();
7054
7813
  formData.append("grant_type", request.grant_type);
@@ -7069,6 +7828,14 @@ var OAuthApi = class extends BaseApiClient {
7069
7828
  };
7070
7829
 
7071
7830
  // src/api/phone-numbers.ts
7831
+ function appendAnalyticsFilters(params, filters) {
7832
+ if (!filters) return;
7833
+ if (filters.dateFrom) params.set("dateFrom", filters.dateFrom);
7834
+ if (filters.dateTo) params.set("dateTo", filters.dateTo);
7835
+ filters.terminationReason?.forEach((v) => params.append("terminationReason", v));
7836
+ filters.answeredBy?.forEach((v) => params.append("answeredBy", v));
7837
+ filters.memberLabel?.forEach((v) => params.append("memberLabel", v));
7838
+ }
7072
7839
  var PhoneNumbersApi = class extends BaseApiClient {
7073
7840
  /** List phone numbers in a workspace, optionally including archived. */
7074
7841
  async getPhoneNumbers(wid, options) {
@@ -7192,6 +7959,62 @@ var PhoneNumbersApi = class extends BaseApiClient {
7192
7959
  method: "POST"
7193
7960
  });
7194
7961
  }
7962
+ /**
7963
+ * Always-anonymized outbound-call analytics summary for one phone number.
7964
+ * No `analyticsSessionId` is sent — the summary carries no row-level PHI.
7965
+ */
7966
+ async getPhoneNumberOutboundAnalyticsSummary(wid, id, filters) {
7967
+ const params = new URLSearchParams();
7968
+ appendAnalyticsFilters(params, filters);
7969
+ const query = params.toString();
7970
+ return this.fetch(
7971
+ `w/${wid}/phone-numbers/${id}/analytics/summary${query ? `?${query}` : ""}`
7972
+ );
7973
+ }
7974
+ /**
7975
+ * One paginated page of outbound-call analytics detail rows. Anonymized by
7976
+ * default; `raw: true` requires the `export:admin` scope server-side and is
7977
+ * audited per response. `analyticsSessionId` keeps the callee pseudonyms
7978
+ * stable across pagination/sort within one browser session.
7979
+ */
7980
+ async getPhoneNumberOutboundAnalyticsCalls(wid, id, options) {
7981
+ const params = new URLSearchParams({
7982
+ analyticsSessionId: options.analyticsSessionId,
7983
+ page: String(options.page ?? 1),
7984
+ pageSize: String(options.pageSize ?? 50)
7985
+ });
7986
+ if (options.sort) params.set("sort", options.sort);
7987
+ if (options.sortDirection) params.set("sortDirection", options.sortDirection);
7988
+ if (options.raw) params.set("raw", "true");
7989
+ appendAnalyticsFilters(params, options.filters);
7990
+ return this.fetch(
7991
+ `w/${wid}/phone-numbers/${id}/analytics/calls?${params}`
7992
+ );
7993
+ }
7994
+ /**
7995
+ * Export outbound-call analytics as a CSV blob (respecting the current
7996
+ * filters + raw state). The server returns HTTP 400 when the result set
7997
+ * exceeds its export cap; that message is surfaced to the caller via
7998
+ * `ApiError` so the UI can toast it.
7999
+ */
8000
+ async exportPhoneNumberOutboundAnalyticsCsv(wid, id, options) {
8001
+ const params = new URLSearchParams({ analyticsSessionId: options.analyticsSessionId });
8002
+ if (options.sort) params.set("sort", options.sort);
8003
+ if (options.sortDirection) params.set("sortDirection", options.sortDirection);
8004
+ if (options.raw) params.set("raw", "true");
8005
+ appendAnalyticsFilters(params, options.filters);
8006
+ const response = await this.fetchRaw(
8007
+ `w/${wid}/phone-numbers/${id}/analytics/export?${params}`,
8008
+ {},
8009
+ [400]
8010
+ );
8011
+ if (!response.ok) {
8012
+ const data = await response.json().catch(() => ({}));
8013
+ const message = typeof data?.detail === "string" ? data.detail : "Failed to export analytics";
8014
+ throw new ApiError(message, response.status);
8015
+ }
8016
+ return response.blob();
8017
+ }
7195
8018
  };
7196
8019
 
7197
8020
  // src/api/pronunciations.ts
@@ -7342,6 +8165,37 @@ var PersonasApi = class extends BaseApiClient {
7342
8165
  }
7343
8166
  };
7344
8167
 
8168
+ // src/api/queries.ts
8169
+ var QueriesApi = class extends BaseApiClient {
8170
+ /** Queryable namespace: native fields, operators per type, DataType record fields. */
8171
+ async getQueryFields(wid) {
8172
+ return this.fetch(`w/${wid}/queries/fields`, {
8173
+ method: "GET"
8174
+ });
8175
+ }
8176
+ /** Structure / field / access / cost validation without execution. */
8177
+ async validateQuery(wid, query) {
8178
+ return this.fetch(`w/${wid}/queries/validate`, {
8179
+ method: "POST",
8180
+ body: JSON.stringify({ query })
8181
+ });
8182
+ }
8183
+ /** Bounded sample run (limit capped server-side). */
8184
+ async previewQuery(wid, query, mode) {
8185
+ return this.fetch(`w/${wid}/queries/preview`, {
8186
+ method: "POST",
8187
+ body: JSON.stringify({ query, mode })
8188
+ });
8189
+ }
8190
+ /** Execute a query (rows / count / aggregate). */
8191
+ async runQuery(wid, query, mode) {
8192
+ return this.fetch(`w/${wid}/queries/run`, {
8193
+ method: "POST",
8194
+ body: JSON.stringify({ query, mode })
8195
+ });
8196
+ }
8197
+ };
8198
+
7345
8199
  // src/api/qualifications.ts
7346
8200
  var QualificationsApi = class extends BaseApiClient {
7347
8201
  /** List qualifications in a workspace, paginated. */
@@ -7393,6 +8247,9 @@ var QualificationsApi = class extends BaseApiClient {
7393
8247
  async listTestChatRuns(wid, workflowId, params) {
7394
8248
  const query = new URLSearchParams();
7395
8249
  if (params?.scenarioId !== void 0) query.set("scenarioId", String(params.scenarioId));
8250
+ if (params?.assistantChatModelId !== void 0) {
8251
+ query.set("assistantChatModelId", params.assistantChatModelId);
8252
+ }
7396
8253
  if (params?.limit !== void 0) query.set("limit", String(params.limit));
7397
8254
  const qs = query.toString() ? `?${query.toString()}` : "";
7398
8255
  return this.fetch(
@@ -7496,6 +8353,20 @@ var ReportsApi = class extends BaseApiClient {
7496
8353
 
7497
8354
  // src/api/salesforce.ts
7498
8355
  var SalesforceApi = class extends BaseApiClient {
8356
+ /**
8357
+ * Create the Salesforce connection shell (no credentials yet).
8358
+ *
8359
+ * First step of the guided setup flow: provisions the connection row so
8360
+ * the admin lands on the detail page where the OAuth callback URL is
8361
+ * shown — which they need to register their Salesforce Connected App
8362
+ * before they have a Client ID / Secret to enter. Idempotent.
8363
+ */
8364
+ async installSalesforce(wid, data) {
8365
+ return this.fetch(`w/${wid}/app-connections/salesforce/install`, {
8366
+ method: "POST",
8367
+ body: JSON.stringify(data ?? {})
8368
+ });
8369
+ }
7499
8370
  async configureSalesforce(wid, data) {
7500
8371
  return this.fetch(
7501
8372
  `w/${wid}/app-connections/salesforce/configure`,
@@ -7697,6 +8568,20 @@ var ConnectionSyncApi = class extends BaseApiClient {
7697
8568
 
7698
8569
  // src/api/hubspot.ts
7699
8570
  var HubspotApi = class extends BaseApiClient {
8571
+ /**
8572
+ * Create the HubSpot connection shell (no credentials yet).
8573
+ *
8574
+ * First step of the guided setup flow: provisions the connection row so
8575
+ * the admin lands on the detail page where the OAuth callback URL is
8576
+ * shown — which they need to register their HubSpot app before they have
8577
+ * a Client ID / Secret to enter. Idempotent.
8578
+ */
8579
+ async installHubspot(wid) {
8580
+ return this.fetch(`w/${wid}/app-connections/hubspot/install`, {
8581
+ method: "POST",
8582
+ body: JSON.stringify({})
8583
+ });
8584
+ }
7700
8585
  async configureHubspot(wid, data) {
7701
8586
  return this.fetch(`w/${wid}/app-connections/hubspot/configure`, {
7702
8587
  method: "POST",
@@ -7827,6 +8712,112 @@ var SitesApi = class extends BaseApiClient {
7827
8712
  async getSite(wid, id) {
7828
8713
  return this.fetch(`w/${wid}/sites/${id}`);
7829
8714
  }
8715
+ /** Get a site's sharing settings. */
8716
+ async getSiteSharing(wid, siteId) {
8717
+ return this.fetch(`w/${wid}/sites/${siteId}/sharing`);
8718
+ }
8719
+ /** Update a site's sharing settings. */
8720
+ async updateSiteSharing(wid, siteId, data) {
8721
+ return this.fetch(`w/${wid}/sites/${siteId}/sharing`, {
8722
+ method: "PUT",
8723
+ body: JSON.stringify(data)
8724
+ });
8725
+ }
8726
+ /** Get a site's source tree. */
8727
+ async getSiteSource(wid, siteId) {
8728
+ return this.fetch(`w/${wid}/sites/${siteId}/source`);
8729
+ }
8730
+ /** Starter templates the caller may seed (superuser-only ones filtered server-side). */
8731
+ async getSiteSourceTemplates(wid, siteId) {
8732
+ return this.fetch(`w/${wid}/sites/${siteId}/source/templates`);
8733
+ }
8734
+ /** Create a site's source tree with starter files if it does not exist. */
8735
+ async createSiteSource(wid, siteId) {
8736
+ return this.fetch(`w/${wid}/sites/${siteId}/source`, {
8737
+ method: "POST"
8738
+ });
8739
+ }
8740
+ /** Build a site's source without publishing. */
8741
+ async buildSiteSource(wid, siteId) {
8742
+ return this.fetch(`w/${wid}/sites/${siteId}/source/build`, {
8743
+ method: "POST"
8744
+ });
8745
+ }
8746
+ /**
8747
+ * Build and publish a site's source. Optionally label the published version
8748
+ * with a `name` and `note`; both default to null (the UI then shows
8749
+ * "Version {version}").
8750
+ */
8751
+ async publishSiteSource(wid, siteId, options) {
8752
+ return this.fetch(`w/${wid}/sites/${siteId}/source/publish`, {
8753
+ method: "POST",
8754
+ body: JSON.stringify({
8755
+ name: options?.name ?? null,
8756
+ note: options?.note ?? null
8757
+ })
8758
+ });
8759
+ }
8760
+ /**
8761
+ * Reset a site's source files: load a starter template and/or wipe existing
8762
+ * files. `template` selects which starter to seed when `loadDefaults` is set
8763
+ * (defaults to "hello-world"; "patient-enrollment" is the other built-in).
8764
+ */
8765
+ async resetSiteSource(wid, siteId, options) {
8766
+ return this.fetch(`w/${wid}/sites/${siteId}/source/reset`, {
8767
+ method: "POST",
8768
+ body: JSON.stringify({
8769
+ load_defaults: options.loadDefaults,
8770
+ delete_existing: options.deleteExisting,
8771
+ ...options.template ? { template: options.template } : {}
8772
+ })
8773
+ });
8774
+ }
8775
+ /**
8776
+ * Re-point the published release to a prior version from the history. A pure
8777
+ * pointer move (no rebuild); the other versions stay in the history.
8778
+ */
8779
+ async rollbackSiteSource(wid, siteId, releaseUuid) {
8780
+ return this.fetch(`w/${wid}/sites/${siteId}/source/rollback`, {
8781
+ method: "POST",
8782
+ body: JSON.stringify({ release_uuid: releaseUuid })
8783
+ });
8784
+ }
8785
+ /**
8786
+ * Export the site's source tree as a ZIP archive (editor-gated server-side).
8787
+ * Returns the raw archive bytes for the caller to save.
8788
+ */
8789
+ async downloadSiteSourceZip(wid, siteId) {
8790
+ const response = await this.fetchRaw(`w/${wid}/sites/${siteId}/source/download`);
8791
+ return response.blob();
8792
+ }
8793
+ /**
8794
+ * Replace the site's source tree with the contents of an uploaded ZIP
8795
+ * (clears the existing source first, like a reset that loads a template).
8796
+ */
8797
+ async importSiteSourceZip(wid, siteId, file) {
8798
+ const form = new FormData();
8799
+ form.append("file", file, "source.zip");
8800
+ return this.fetch(`w/${wid}/sites/${siteId}/source/import`, {
8801
+ method: "POST",
8802
+ body: form
8803
+ });
8804
+ }
8805
+ /**
8806
+ * Get a theme's settings schema, the site's saved values, and capabilities.
8807
+ * Pass `theme` to resolve the schema for a theme other than the saved one
8808
+ * (e.g. one the builder has selected but not yet saved).
8809
+ */
8810
+ async getThemeSettings(wid, siteId, theme) {
8811
+ const query = theme ? `?theme=${encodeURIComponent(theme)}` : "";
8812
+ return this.fetch(`w/${wid}/sites/${siteId}/theme-settings${query}`);
8813
+ }
8814
+ /** Save values for the active theme's settings (validated against the schema). */
8815
+ async updateThemeSettings(wid, siteId, values) {
8816
+ return this.fetch(`w/${wid}/sites/${siteId}/theme-settings`, {
8817
+ method: "PUT",
8818
+ body: JSON.stringify({ values })
8819
+ });
8820
+ }
7830
8821
  /** Get a single site by UUID. */
7831
8822
  async getSiteByUuid(wid, uuid) {
7832
8823
  return this.fetch(`s/${wid}/${uuid}`);
@@ -7865,19 +8856,28 @@ var SitesApi = class extends BaseApiClient {
7865
8856
  }
7866
8857
  );
7867
8858
  }
7868
- /** Verify a phone or email code and complete site authentication. */
8859
+ /**
8860
+ * Verify a phone or email code and complete site authentication.
8861
+ *
8862
+ * When the account has 2FA enrolled, the backend returns a temporary token
8863
+ * with ``requiresTwoFactor: true`` and this method does **not** mint full
8864
+ * session cookies — the caller must complete the 2FA challenge (same handoff
8865
+ * as public-site Google OAuth).
8866
+ */
7869
8867
  async siteVerifyCode(wid, siteUuid, code, phoneNumber, email) {
7870
8868
  const verifyResponse = await this.fetch(`s/${wid}/${siteUuid}/auth/verify`, {
7871
8869
  method: "POST",
7872
8870
  body: JSON.stringify({ code, phoneNumber, email })
7873
8871
  });
7874
- const completeResponse = await fetch(`/api/auth/complete`, {
7875
- method: "POST",
7876
- headers: { "Content-Type": "application/json" },
7877
- body: JSON.stringify({ token: verifyResponse.token })
7878
- });
7879
- if (!completeResponse.ok) {
7880
- throw new Error("Failed to complete authentication");
8872
+ if (!verifyResponse.requiresTwoFactor && verifyResponse.token) {
8873
+ const completeResponse = await fetch(`/api/auth/complete`, {
8874
+ method: "POST",
8875
+ headers: { "Content-Type": "application/json" },
8876
+ body: JSON.stringify({ token: verifyResponse.token })
8877
+ });
8878
+ if (!completeResponse.ok) {
8879
+ throw new Error("Failed to complete authentication");
8880
+ }
7881
8881
  }
7882
8882
  return verifyResponse;
7883
8883
  }
@@ -8209,6 +9209,16 @@ var SupportRequestsApi = class extends BaseApiClient {
8209
9209
  body: JSON.stringify(data)
8210
9210
  });
8211
9211
  }
9212
+ /**
9213
+ * Reopen a resolved support request (e.g. staff resolved it prematurely).
9214
+ * The server rejects requests that are not in the `resolved` state.
9215
+ */
9216
+ async reopenWorkspaceSupportRequest(workspaceUuid, uuid, data = {}) {
9217
+ return this.fetch(`w/${workspaceUuid}/support-requests/${uuid}/reopen`, {
9218
+ method: "POST",
9219
+ body: JSON.stringify(data)
9220
+ });
9221
+ }
8212
9222
  /**
8213
9223
  * Record a click on a pushed resource (Proactive Support). For a
8214
9224
  * manager_prompt, pass the Manager Chat UUID it opened so the
@@ -8354,7 +9364,15 @@ var SupervisorsApi = class extends BaseApiClient {
8354
9364
 
8355
9365
  // src/api/tasks.ts
8356
9366
  var TasksApi = class extends BaseApiClient {
8357
- /** List all tasks in a workspace, optionally filtering by workflow or including archived. */
9367
+ /**
9368
+ * List all tasks in a workspace, optionally filtering by workflow or
9369
+ * including archived.
9370
+ *
9371
+ * `workflowId` is the STABLE workflow root id — the server resolves it to
9372
+ * that workflow's draft revision's tasks. `workflowRevisionId` filters an
9373
+ * explicit revision (the read-only published-revision view). Pass at most
9374
+ * one; passing both that disagree is a 400.
9375
+ */
8358
9376
  async getTasks(wid, options = {}) {
8359
9377
  const params = new URLSearchParams();
8360
9378
  if (options.includeArchived) {
@@ -8363,6 +9381,9 @@ var TasksApi = class extends BaseApiClient {
8363
9381
  if (options.workflowId) {
8364
9382
  params.append("workflow_id", options.workflowId.toString());
8365
9383
  }
9384
+ if (options.workflowRevisionId) {
9385
+ params.append("workflow_revision_id", options.workflowRevisionId.toString());
9386
+ }
8366
9387
  if (options.sortBy) {
8367
9388
  params.append("sortBy", options.sortBy);
8368
9389
  }
@@ -8717,11 +9738,18 @@ var JourneysApi = class extends BaseApiClient {
8717
9738
  // src/api/workflows.ts
8718
9739
  var WorkflowsApi = class extends BaseApiClient {
8719
9740
  /** List all workflows in a workspace, optionally including archived ones. */
8720
- async getWorkflows(wid, archived = false) {
8721
- const url = archived ? `w/${wid}/workflows?archived=true` : `w/${wid}/workflows`;
8722
- return this.fetch(url);
9741
+ async getWorkflows(wid, options = {}) {
9742
+ const params = new URLSearchParams();
9743
+ if (options.archived) params.set("archived", "true");
9744
+ if (options.page) params.set("page", String(options.page));
9745
+ if (options.pageSize) params.set("pageSize", String(options.pageSize));
9746
+ if (options.sortBy) params.set("sortBy", options.sortBy);
9747
+ if (options.sortOrder) params.set("sortOrder", options.sortOrder);
9748
+ if (options.search) params.set("search", options.search);
9749
+ const qs = params.toString();
9750
+ return this.fetch(`w/${wid}/workflows${qs ? `?${qs}` : ""}`);
8723
9751
  }
8724
- /** Get a single workflow by ID. */
9752
+ /** Get a single workflow by ID (root + draft + active-revision summary). */
8725
9753
  async getWorkflow(wid, id) {
8726
9754
  return this.fetch(`w/${wid}/workflows/${id}`);
8727
9755
  }
@@ -8769,7 +9797,7 @@ var WorkflowsApi = class extends BaseApiClient {
8769
9797
  body: JSON.stringify(workflow)
8770
9798
  });
8771
9799
  }
8772
- /** Update an existing workflow. */
9800
+ /** Update an existing workflow's draft revision. */
8773
9801
  async updateWorkflow(wid, id, workflow) {
8774
9802
  return this.fetch(`w/${wid}/workflows/${id}`, {
8775
9803
  method: "PUT",
@@ -8790,13 +9818,15 @@ var WorkflowsApi = class extends BaseApiClient {
8790
9818
  /** Archive a workflow. */
8791
9819
  async archiveWorkflow(wid, id) {
8792
9820
  return this.fetch(`w/${wid}/workflows/${id}/archive`, {
8793
- method: "POST"
9821
+ method: "POST",
9822
+ body: JSON.stringify({})
8794
9823
  });
8795
9824
  }
8796
9825
  /** Unarchive a previously archived workflow. */
8797
9826
  async unarchiveWorkflow(wid, id) {
8798
9827
  return this.fetch(`w/${wid}/workflows/${id}/unarchive`, {
8799
- method: "POST"
9828
+ method: "POST",
9829
+ body: JSON.stringify({})
8800
9830
  });
8801
9831
  }
8802
9832
  /** Clone a workflow with a new name. */
@@ -8812,16 +9842,20 @@ var WorkflowsApi = class extends BaseApiClient {
8812
9842
  }
8813
9843
  /** Create a new workflow from a template. */
8814
9844
  async createWorkflowFromTemplate(wid, templateUuid, data) {
8815
- return this.fetch(`w/${wid}/workflows/templates/${templateUuid}/create-workflow`, {
8816
- method: "POST",
8817
- body: JSON.stringify(data)
8818
- });
9845
+ return this.fetch(
9846
+ `w/${wid}/workflows/templates/${templateUuid}/create-workflow`,
9847
+ {
9848
+ method: "POST",
9849
+ body: JSON.stringify(data)
9850
+ }
9851
+ );
8819
9852
  }
8820
9853
  /** Get task assignment statistics for a workflow within an optional date range. */
8821
- async getWorkflowTaskAssignmentStats(wid, id, fromDate, toDate) {
9854
+ async getWorkflowTaskAssignmentStats(wid, id, fromDate, toDate, workflowRevisionId) {
8822
9855
  const params = new URLSearchParams();
8823
9856
  if (fromDate) params.append("from_date", fromDate);
8824
9857
  if (toDate) params.append("to_date", toDate);
9858
+ if (workflowRevisionId) params.append("workflowRevisionId", String(workflowRevisionId));
8825
9859
  return this.fetch(
8826
9860
  `w/${wid}/workflows/${id}/task-assignment-stats?${params.toString()}`
8827
9861
  );
@@ -8871,6 +9905,24 @@ var WorkflowsApi = class extends BaseApiClient {
8871
9905
  `w/${wid}/workflows/${workflowId}/route-dry-run?${params.toString()}`
8872
9906
  );
8873
9907
  }
9908
+ // Workflow Feedback API
9909
+ /**
9910
+ * List chat feedback for a workflow (thumbs ratings + explicit/extracted rows).
9911
+ * First consumer of the workspace-plane chat_feedback table.
9912
+ */
9913
+ async getWorkflowFeedback(wid, workflowId, options = {}) {
9914
+ const params = new URLSearchParams();
9915
+ if (options.page != null) params.set("page", String(options.page));
9916
+ if (options.pageSize != null) params.set("pageSize", String(options.pageSize));
9917
+ if (options.source) params.set("source", options.source);
9918
+ if (options.rating) params.set("rating", options.rating);
9919
+ if (options.authorKind) params.set("authorKind", options.authorKind);
9920
+ if (options.includeTest != null) params.set("includeTest", String(options.includeTest));
9921
+ const qs = params.toString();
9922
+ return this.fetch(
9923
+ `w/${wid}/workflows/${workflowId}/feedback${qs ? `?${qs}` : ""}`
9924
+ );
9925
+ }
8874
9926
  // Workflow Contributors API
8875
9927
  /** List all contributors for a workflow. */
8876
9928
  async getWorkflowContributors(wid, workflowId) {
@@ -8936,58 +9988,80 @@ var WorkflowsApi = class extends BaseApiClient {
8936
9988
  body: JSON.stringify({ name })
8937
9989
  });
8938
9990
  }
8939
- // Workflow Versions API
8940
- /** List all versions of a workflow. */
8941
- async getWorkflowVersions(wid, workflowUuid) {
8942
- return this.fetch(`w/${wid}/workflows/${workflowUuid}/versions`);
8943
- }
8944
- /** Get the active version of a workflow. */
8945
- async getWorkflowVersionActive(wid, workflowUuid) {
8946
- return this.fetch(
8947
- `w/${wid}/workflows/${workflowUuid}/versions/active`
8948
- );
9991
+ /** List relational revisions for a workflow. */
9992
+ async getWorkflowRevisions(wid, workflowId) {
9993
+ return this.fetch(`w/${wid}/workflows/${workflowId}/revisions`);
8949
9994
  }
8950
- /** Get a specific version of a workflow by version number. */
8951
- async getWorkflowVersion(wid, workflowUuid, versionNumber) {
9995
+ /** Get full workflow details for one relational workflow revision. */
9996
+ async getWorkflowRevision(wid, workflowId, revisionId) {
8952
9997
  return this.fetch(
8953
- `w/${wid}/workflows/${workflowUuid}/versions/${versionNumber}`
9998
+ `w/${wid}/workflows/${workflowId}/revisions/${revisionId}`
8954
9999
  );
8955
10000
  }
8956
- /** Publish the live workflow as a new immutable version. */
8957
- async publishWorkflowVersion(wid, workflowUuid, data) {
8958
- return this.fetch(`w/${wid}/workflows/${workflowUuid}/versions`, {
10001
+ /** Freeze the workflow's draft as a published revision and clone a fresh draft.
10002
+ *
10003
+ * By default the just-published revision becomes the active revision —
10004
+ * live traffic flips to it immediately. Pass `setActive: false` to
10005
+ * publish without flipping live traffic (advanced flow).
10006
+ */
10007
+ async publishWorkflowRevision(wid, workflowId, data = {}) {
10008
+ return this.fetch(`w/${wid}/workflows/${workflowId}/publish`, {
8959
10009
  method: "POST",
8960
10010
  body: JSON.stringify(data)
8961
10011
  });
8962
10012
  }
8963
- async updateWorkflowVersion(wid, workflowUuid, versionNumber, data) {
10013
+ /** Point the workflow's active pointer at a chosen revision (pointer flip only).
10014
+ *
10015
+ * The target may be any of the workflow's published revisions.
10016
+ * Activating the draft requires `allowDraft: true` and a UI warning
10017
+ * confirmation.
10018
+ */
10019
+ async activateWorkflowRevision(wid, workflowId, revisionId, data = {}) {
8964
10020
  return this.fetch(
8965
- `w/${wid}/workflows/${workflowUuid}/versions/${versionNumber}`,
8966
- { method: "PATCH", body: JSON.stringify(data) }
10021
+ `w/${wid}/workflows/${workflowId}/revisions/${revisionId}/activate`,
10022
+ {
10023
+ method: "POST",
10024
+ body: JSON.stringify(data)
10025
+ }
8967
10026
  );
8968
10027
  }
8969
- /** Activate a published version. */
8970
- async activateWorkflowVersion(wid, workflowUuid, versionNumber) {
10028
+ /** Update a revision's curation metadata (label + publish notes).
10029
+ *
10030
+ * Applies to both the draft and published revisions; it is not a graph
10031
+ * change, so it never marks the draft dirty.
10032
+ */
10033
+ async updateWorkflowRevisionMetadata(wid, workflowId, revisionId, data) {
8971
10034
  return this.fetch(
8972
- `w/${wid}/workflows/${workflowUuid}/versions/${versionNumber}/activate`,
10035
+ `w/${wid}/workflows/${workflowId}/revisions/${revisionId}`,
8973
10036
  {
8974
- method: "POST"
10037
+ method: "PATCH",
10038
+ body: JSON.stringify(data)
8975
10039
  }
8976
10040
  );
8977
10041
  }
8978
- /** Deactivate a published version. */
8979
- async deactivateWorkflowVersion(wid, workflowUuid, versionNumber) {
10042
+ /** Compare two revisions of the same workflow.
10043
+ *
10044
+ * `against` is a revision id or UUID; when omitted the diff compares the
10045
+ * named revision against the workflow's draft. Tasks are matched by
10046
+ * stable lineage, so a rename reads as a changed `name` field.
10047
+ */
10048
+ async diffWorkflowRevisions(wid, workflowId, revisionId, against) {
10049
+ const qs = against !== void 0 ? `?against=${encodeURIComponent(String(against))}` : "";
8980
10050
  return this.fetch(
8981
- `w/${wid}/workflows/${workflowUuid}/versions/${versionNumber}/deactivate`,
8982
- {
8983
- method: "POST"
8984
- }
10051
+ `w/${wid}/workflows/${workflowId}/revisions/${revisionId}/diff${qs}`
8985
10052
  );
8986
10053
  }
8987
- /** Compare two workflow versions (0 = draft). */
8988
- async diffWorkflowVersions(wid, workflowUuid, fromVersion, toVersion) {
10054
+ /** Branch a published revision into the workflow's draft ("edit this
10055
+ * revision"): the draft becomes a fresh clone of the named published
10056
+ * revision. Pass `discardDraftChanges` to replace a dirty draft.
10057
+ */
10058
+ async editWorkflowRevisionAsDraft(wid, workflowId, revisionId, data = {}) {
8989
10059
  return this.fetch(
8990
- `w/${wid}/workflows/${workflowUuid}/versions/diff?from=${fromVersion}&to=${toVersion}`
10060
+ `w/${wid}/workflows/${workflowId}/revisions/${revisionId}/edit`,
10061
+ {
10062
+ method: "POST",
10063
+ body: JSON.stringify(data)
10064
+ }
8991
10065
  );
8992
10066
  }
8993
10067
  };
@@ -9305,6 +10379,35 @@ var WorkspacesApi = class extends BaseApiClient {
9305
10379
  async getWorkspaceSiteDomains(wid) {
9306
10380
  return this.fetch(`w/${wid}/domains/for-site`);
9307
10381
  }
10382
+ /**
10383
+ * List org domains available for enabling embeddable widgets. Widgets ride
10384
+ * on domain-ownership verification only, so the consumer gates selection on
10385
+ * `ownershipStatus === 'verified'`.
10386
+ */
10387
+ async getWorkspaceWidgetDomains(wid) {
10388
+ return this.fetch(`w/${wid}/domains/for-widget`);
10389
+ }
10390
+ /** List this workspace's widget-domain enablement entries. */
10391
+ async listWidgetDomains(wid) {
10392
+ return this.fetch(`w/${wid}/widget-domains`);
10393
+ }
10394
+ /**
10395
+ * Enable/replace the set of widgets on one verified org domain. Idempotent
10396
+ * upsert keyed by `orgDomainUuid`; the server rejects unverified domains
10397
+ * (400) and cross-org domains (404).
10398
+ */
10399
+ async upsertWidgetDomain(wid, orgDomainUuid, body) {
10400
+ return this.fetch(`w/${wid}/widget-domains/${orgDomainUuid}`, {
10401
+ method: "PUT",
10402
+ body: JSON.stringify(body)
10403
+ });
10404
+ }
10405
+ /** Remove this workspace's widget entry for a domain (disables all widgets). */
10406
+ async deleteWidgetDomain(wid, orgDomainUuid) {
10407
+ await this.fetch(`w/${wid}/widget-domains/${orgDomainUuid}`, {
10408
+ method: "DELETE"
10409
+ });
10410
+ }
9308
10411
  /** List client workspaces managed by this reseller workspace, paginated. */
9309
10412
  async getResellerWorkspaces(wid, params) {
9310
10413
  const query = new URLSearchParams();
@@ -9464,7 +10567,7 @@ var WorkspacesApi = class extends BaseApiClient {
9464
10567
  /**
9465
10568
  * Get billing dashboard data for a workspace.
9466
10569
  *
9467
- * This endpoint is available to organization owners (with org:billing scope).
10570
+ * This endpoint is available to organization owners (with org:info scope).
9468
10571
  * Superusers should use the admin endpoint via getWorkspaceUsageDashboard.
9469
10572
  *
9470
10573
  * Returns comprehensive billing information including:
@@ -9498,6 +10601,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9498
10601
  customers: new CustomersApi(apiKey, baseUrl, customFetch),
9499
10602
  resellers: new ResellersApi(apiKey, baseUrl, customFetch),
9500
10603
  customToolkits: new CustomToolkitsApi(apiKey, baseUrl, customFetch),
10604
+ dashboards: new DashboardsApi(apiKey, baseUrl, customFetch),
9501
10605
  dataTypes: new DataTypesApi(apiKey, baseUrl, customFetch),
9502
10606
  discordBots: new DiscordBotsApi(apiKey, baseUrl, customFetch),
9503
10607
  slackApps: new SlackAppsApi(apiKey, baseUrl, customFetch),
@@ -9505,6 +10609,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9505
10609
  events: new EventsApi(apiKey, baseUrl, customFetch),
9506
10610
  experiments: new ExperimentsApi(apiKey, baseUrl, customFetch),
9507
10611
  fhirConnections: new FhirConnectionsApi(apiKey, baseUrl, customFetch),
10612
+ patientSyncConnections: new PatientSyncConnectionsApi(apiKey, baseUrl, customFetch),
9508
10613
  healthie: new HealthieApi(apiKey, baseUrl, customFetch),
9509
10614
  hubspot: new HubspotApi(apiKey, baseUrl, customFetch),
9510
10615
  features: new FeaturesApi(apiKey, baseUrl, customFetch),
@@ -9517,6 +10622,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9517
10622
  mcpServers: new McpServersApi(apiKey, baseUrl, customFetch),
9518
10623
  members: new MembersApi(apiKey, baseUrl, customFetch),
9519
10624
  milestones: new MilestonesApi(apiKey, baseUrl, customFetch),
10625
+ motd: new MotdApi(apiKey, baseUrl, customFetch),
9520
10626
  confluence: new ConfluenceApi(apiKey, baseUrl, customFetch),
9521
10627
  mondayIntegration: new MondayIntegrationApi(apiKey, baseUrl, customFetch),
9522
10628
  notificationRules: new NotificationRulesApi(apiKey, baseUrl, customFetch),
@@ -9528,6 +10634,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9528
10634
  pronunciations: new PronunciationsApi(apiKey, baseUrl, customFetch),
9529
10635
  qualifications: new QualificationsApi(apiKey, baseUrl, customFetch),
9530
10636
  personas: new PersonasApi(apiKey, baseUrl, customFetch),
10637
+ queries: new QueriesApi(apiKey, baseUrl, customFetch),
9531
10638
  reports: new ReportsApi(apiKey, baseUrl, customFetch),
9532
10639
  salesforce: new SalesforceApi(apiKey, baseUrl, customFetch),
9533
10640
  sites: new SitesApi(apiKey, baseUrl, customFetch),
@@ -9548,7 +10655,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9548
10655
 
9549
10656
  // src/client/workspace-client.ts
9550
10657
  var WORKSPACE_METHOD_NAMES = [
9551
- "activateWorkflowVersion",
10658
+ "activateWorkflowRevision",
9552
10659
  "addGroupMember",
9553
10660
  "advanceStep",
9554
10661
  "approveWorkspaceInvitation",
@@ -9572,6 +10679,7 @@ var WORKSPACE_METHOD_NAMES = [
9572
10679
  "cancelAgentTask",
9573
10680
  "cancelAssignment",
9574
10681
  "cancelCalendarEvent",
10682
+ "cancelChatCallback",
9575
10683
  "cancelCredentialUpdateInvite",
9576
10684
  "checkAvailability",
9577
10685
  "checkSiteDomainAvailability",
@@ -9586,6 +10694,7 @@ var WORKSPACE_METHOD_NAMES = [
9586
10694
  "commentOnWorkspaceSupportRequest",
9587
10695
  "configureConfluence",
9588
10696
  "configureHealthie",
10697
+ "configurePatientSync",
9589
10698
  "configureHubspot",
9590
10699
  "configureMondayConnection",
9591
10700
  "configureSalesforce",
@@ -9609,6 +10718,7 @@ var WORKSPACE_METHOD_NAMES = [
9609
10718
  "createCustomTool",
9610
10719
  "createCustomToolkit",
9611
10720
  "createDataRecord",
10721
+ "createDataRecordFilter",
9612
10722
  "createDataType",
9613
10723
  "createDiscordBot",
9614
10724
  "createEventRule",
@@ -9655,7 +10765,6 @@ var WORKSPACE_METHOD_NAMES = [
9655
10765
  "createWorkflowOutboundVoiceChat",
9656
10766
  "createWorkspaceMember",
9657
10767
  "createWorkspaceSupportRequest",
9658
- "deactivateWorkflowVersion",
9659
10768
  "deleteAbility",
9660
10769
  "deleteAgent",
9661
10770
  "deleteAssignment",
@@ -9671,6 +10780,7 @@ var WORKSPACE_METHOD_NAMES = [
9671
10780
  "deleteCustomTool",
9672
10781
  "deleteCustomToolkit",
9673
10782
  "deleteDataRecord",
10783
+ "deleteDataRecordFilter",
9674
10784
  "deleteDataType",
9675
10785
  "deleteDiscordBot",
9676
10786
  "deleteEnrollment",
@@ -9680,6 +10790,7 @@ var WORKSPACE_METHOD_NAMES = [
9680
10790
  "deleteExperimentAssignment",
9681
10791
  "deleteExperimentGroup",
9682
10792
  "deleteFhirConnection",
10793
+ "deletePatientSyncConnection",
9683
10794
  "deleteFile",
9684
10795
  "deleteFileLabel",
9685
10796
  "deleteFolder",
@@ -9712,6 +10823,7 @@ var WORKSPACE_METHOD_NAMES = [
9712
10823
  "deleteSupervisor",
9713
10824
  "deleteTask",
9714
10825
  "deleteTeamsApp",
10826
+ "deleteWidgetDomain",
9715
10827
  "deleteWorkflow",
9716
10828
  "deleteWorkflowContributor",
9717
10829
  "deleteWorkflowNote",
@@ -9719,7 +10831,7 @@ var WORKSPACE_METHOD_NAMES = [
9719
10831
  "deleteWorkspaceInvitationAdmin",
9720
10832
  "denyWorkspaceInvitation",
9721
10833
  "describeSalesforceObject",
9722
- "diffWorkflowVersions",
10834
+ "diffWorkflowRevisions",
9723
10835
  "disableConfluence",
9724
10836
  "disableCustomToolkit",
9725
10837
  "disableHubspot",
@@ -9735,6 +10847,7 @@ var WORKSPACE_METHOD_NAMES = [
9735
10847
  "dismissAllNotifications",
9736
10848
  "dismissNotification",
9737
10849
  "downloadEmailAttachment",
10850
+ "editWorkflowRevisionAsDraft",
9738
10851
  "enableConfluence",
9739
10852
  "enableCustomToolkit",
9740
10853
  "enableHubspot",
@@ -9813,8 +10926,10 @@ var WORKSPACE_METHOD_NAMES = [
9813
10926
  "getCalendarSchedules",
9814
10927
  "getCalendars",
9815
10928
  "getCelContext",
10929
+ "getCharlestonTestDeliveryRecipients",
9816
10930
  "getChat",
9817
10931
  "getChatAssignmentTasks",
10932
+ "getChatCallbacks",
9818
10933
  "getChatEmails",
9819
10934
  "getChatFilter",
9820
10935
  "getChatFilterByUuid",
@@ -9845,6 +10960,9 @@ var WORKSPACE_METHOD_NAMES = [
9845
10960
  "getCustomToolkits",
9846
10961
  "getDataRecord",
9847
10962
  "getDataRecordChanges",
10963
+ "getDataRecordFilter",
10964
+ "getDataRecordFilterCount",
10965
+ "getDataRecordFilters",
9848
10966
  "getDataRecords",
9849
10967
  "getDataType",
9850
10968
  "getDataTypeByUuid",
@@ -9868,19 +10986,24 @@ var WORKSPACE_METHOD_NAMES = [
9868
10986
  "getFhirConnections",
9869
10987
  "getFieldIndexStatus",
9870
10988
  "getFile",
10989
+ "resolveFilePath",
9871
10990
  "getFileLabel",
9872
10991
  "getFileLabelByUuid",
9873
10992
  "getFileLabels",
9874
10993
  "getFileSharing",
10994
+ "getFileVersionContentsUrl",
10995
+ "getFileVersionDiff",
9875
10996
  "getFiles",
9876
10997
  "getFirstRunState",
9877
10998
  "getFolder",
9878
10999
  "getFolderSharing",
9879
11000
  "getFolders",
9880
11001
  "getGoogleCalendarStatus",
11002
+ "getGranteeGrants",
9881
11003
  "getHealthieAvailableSlots",
9882
11004
  "getHealthieReconciliationMatches",
9883
11005
  "getHealthieStatus",
11006
+ "getPatientSyncStatus",
9884
11007
  "getHubspotContactProperties",
9885
11008
  "getHubspotManagedRules",
9886
11009
  "getHubspotReconciliationMatches",
@@ -9922,10 +11045,12 @@ var WORKSPACE_METHOD_NAMES = [
9922
11045
  "getMemberLabelByUuid",
9923
11046
  "getMemberLabels",
9924
11047
  "getMemberMemories",
11048
+ "getMemberMemory",
9925
11049
  "getMemberRecordCounts",
9926
11050
  "getMemberRole",
9927
11051
  "getMemberRoleByUuid",
9928
11052
  "getMemberRoles",
11053
+ "getMemberSyncLinks",
9929
11054
  "getMemberSyncSummary",
9930
11055
  "getMemberUsage",
9931
11056
  "getMembersMessageActivity",
@@ -9969,6 +11094,7 @@ var WORKSPACE_METHOD_NAMES = [
9969
11094
  "getPublicProducts",
9970
11095
  "getQualification",
9971
11096
  "getQualifications",
11097
+ "getRecordingInfo",
9972
11098
  "getResellerWorkspaces",
9973
11099
  "getRoutine",
9974
11100
  "getRoutineRuns",
@@ -10023,17 +11149,17 @@ var WORKSPACE_METHOD_NAMES = [
10023
11149
  "getWorkflowAccessValidation",
10024
11150
  "getWorkflowActivity",
10025
11151
  "getWorkflowConfigValidation",
11152
+ "getWorkflowFeedback",
10026
11153
  "getWorkflowContributors",
10027
11154
  "getWorkflowDeletionPreview",
10028
11155
  "getWorkflowDiagram",
10029
11156
  "getWorkflowNotes",
11157
+ "getWorkflowRevision",
11158
+ "getWorkflowRevisions",
10030
11159
  "getWorkflowRouteDryRun",
10031
11160
  "getWorkflowTaskAssignmentStats",
10032
11161
  "getWorkflowTemplates",
10033
11162
  "getWorkflowThumbnailUrl",
10034
- "getWorkflowVersion",
10035
- "getWorkflowVersionActive",
10036
- "getWorkflowVersions",
10037
11163
  "getWorkflows",
10038
11164
  "getWorkflowsActivityBatch",
10039
11165
  "getWorkspace",
@@ -10047,6 +11173,7 @@ var WORKSPACE_METHOD_NAMES = [
10047
11173
  "getWorkspaceNotices",
10048
11174
  "getWorkspaceProduct",
10049
11175
  "getWorkspaceSiteDomains",
11176
+ "getWorkspaceWidgetDomains",
10050
11177
  "getWorkspaceSubscriptions",
10051
11178
  "getWorkspaceSupportRequest",
10052
11179
  "getWorkspaceThemes",
@@ -10058,6 +11185,9 @@ var WORKSPACE_METHOD_NAMES = [
10058
11185
  "initiateCall",
10059
11186
  "initiateOutboundCall",
10060
11187
  "inspectPrompt",
11188
+ "installHubspot",
11189
+ "installMondayConnection",
11190
+ "installSalesforce",
10061
11191
  "inviteMemberCredentialUpdate",
10062
11192
  "inviteToWorkspace",
10063
11193
  "leaveWorkspace",
@@ -10069,13 +11199,13 @@ var WORKSPACE_METHOD_NAMES = [
10069
11199
  "linkMemberToSalesforce",
10070
11200
  "linkPhoneNumber",
10071
11201
  "listAbilities",
10072
- "listAgentAbilities",
10073
11202
  "listAppConnections",
10074
11203
  "listAvailableAppConnections",
10075
11204
  "listConfluencePages",
10076
11205
  "listConfluenceSpaces",
10077
11206
  "listConnectionMemberFieldKeys",
10078
11207
  "setDefaultGooglePlatformAccount",
11208
+ "listFileVersions",
10079
11209
  "listGoogleCalendars",
10080
11210
  "listHealthieAppointmentTypes",
10081
11211
  "listHealthiePatients",
@@ -10085,20 +11215,24 @@ var WORKSPACE_METHOD_NAMES = [
10085
11215
  "listScenarios",
10086
11216
  "listSnippets",
10087
11217
  "listTestChatRuns",
11218
+ "listWidgetDomains",
10088
11219
  "listWorkspaceInvitationsAdmin",
10089
11220
  "listWorkspaceSupportRequests",
10090
11221
  "markEmailAsRead",
10091
11222
  "markEmailAsUnread",
10092
11223
  "markNotificationAsRead",
11224
+ "previewImportMembers",
10093
11225
  "previewImportWorkspace",
11226
+ "previewRoutineWorkflowAccess",
10094
11227
  "previewSchedule",
10095
11228
  "previewTTS",
10096
11229
  "previewTemplate",
10097
11230
  "previewThinkingSound",
10098
11231
  "previewWorkspaceImport",
10099
11232
  "provisionClientWorkspace",
10100
- "publishWorkflowVersion",
11233
+ "publishWorkflowRevision",
10101
11234
  "rateMessage",
11235
+ "getChatFeedback",
10102
11236
  "reenrollMember",
10103
11237
  "registerLinkedRolesMetadata",
10104
11238
  "registerPushSubscription",
@@ -10115,8 +11249,8 @@ var WORKSPACE_METHOD_NAMES = [
10115
11249
  "requestWorkspaceMembership",
10116
11250
  "resetRoutineRuns",
10117
11251
  "resolveAccessGrant",
10118
- "resolveAgentTools",
10119
11252
  "resolveAnonymousMember",
11253
+ "restoreFileVersion",
10120
11254
  "revokeAccessGrant",
10121
11255
  "revokeApiKey",
10122
11256
  "revokeICalToken",
@@ -10182,6 +11316,7 @@ var WORKSPACE_METHOD_NAMES = [
10182
11316
  "updateCustomTool",
10183
11317
  "updateCustomToolkit",
10184
11318
  "updateDataRecord",
11319
+ "updateDataRecordFilter",
10185
11320
  "updateDataType",
10186
11321
  "updateDiscordBot",
10187
11322
  "updateEventAttendee",
@@ -10234,12 +11369,13 @@ var WORKSPACE_METHOD_NAMES = [
10234
11369
  "updateWorkflow",
10235
11370
  "updateWorkflowContributor",
10236
11371
  "updateWorkflowNote",
10237
- "updateWorkflowVersion",
11372
+ "updateWorkflowRevisionMetadata",
10238
11373
  "updateWorkspace",
10239
11374
  "updateWorkspaceDefaults",
10240
11375
  "updateWorkspaceInvitationAdmin",
10241
11376
  "updateWorkspaceThemes",
10242
11377
  "upsertDataRecord",
11378
+ "upsertWidgetDomain",
10243
11379
  "validateDataTypeSlug",
10244
11380
  "validateWorkflowName"
10245
11381
  ];
@@ -10271,6 +11407,7 @@ function bindAccessGrantsMethods(target, accessGrants) {
10271
11407
  target.revokeAccessGrant = accessGrants.revokeAccessGrant.bind(accessGrants);
10272
11408
  target.getAccessGrants = accessGrants.getAccessGrants.bind(accessGrants);
10273
11409
  target.getMemberGrants = accessGrants.getMemberGrants.bind(accessGrants);
11410
+ target.getGranteeGrants = accessGrants.getGranteeGrants.bind(accessGrants);
10274
11411
  }
10275
11412
 
10276
11413
  // src/client/bindings/agent-tasks.ts
@@ -10290,8 +11427,6 @@ function bindAgentsMethods(target, agents) {
10290
11427
  target.deleteAgent = agents.deleteAgent.bind(agents);
10291
11428
  target.archiveAgent = agents.archiveAgent.bind(agents);
10292
11429
  target.unarchiveAgent = agents.unarchiveAgent.bind(agents);
10293
- target.resolveAgentTools = agents.resolveAgentTools.bind(agents);
10294
- target.listAgentAbilities = agents.listAgentAbilities.bind(agents);
10295
11430
  }
10296
11431
 
10297
11432
  // src/client/bindings/tasks.ts
@@ -10310,12 +11445,15 @@ function bindTasksMethods(target, tasks, abilities) {
10310
11445
  target.createAbility = abilities.createAbility.bind(abilities);
10311
11446
  target.updateAbility = abilities.updateAbility.bind(abilities);
10312
11447
  target.deleteAbility = abilities.deleteAbility.bind(abilities);
11448
+ target.getCharlestonTestDeliveryRecipients = abilities.getCharlestonTestDeliveryRecipients.bind(abilities);
10313
11449
  }
10314
11450
 
10315
11451
  // src/client/bindings/chats.ts
10316
11452
  function bindChatsMethods(target, chats) {
10317
11453
  target.getChats = chats.getChats.bind(chats);
10318
11454
  target.getChat = chats.getChat.bind(chats);
11455
+ target.getChatCallbacks = chats.getChatCallbacks.bind(chats);
11456
+ target.cancelChatCallback = chats.cancelChatCallback.bind(chats);
10319
11457
  target.getChatTokenUsage = chats.getChatTokenUsage.bind(chats);
10320
11458
  target.getChatTodos = chats.getChatTodos.bind(chats);
10321
11459
  target.getChatSkills = chats.getChatSkills.bind(chats);
@@ -10328,6 +11466,8 @@ function bindChatsMethods(target, chats) {
10328
11466
  target.createWorkflowOutboundVoiceChat = chats.createWorkflowOutboundVoiceChat.bind(chats);
10329
11467
  target.deleteChat = chats.deleteChat.bind(chats);
10330
11468
  target.updateChat = chats.updateChat.bind(chats);
11469
+ target.getChatModelOverride = chats.getChatModelOverride.bind(chats);
11470
+ target.updateChatModelOverride = chats.updateChatModelOverride.bind(chats);
10331
11471
  target.updateChatMute = chats.updateChatMute.bind(chats);
10332
11472
  target.updateChatNeedsResponse = chats.updateChatNeedsResponse.bind(chats);
10333
11473
  target.summarizeChat = chats.summarizeChat.bind(chats);
@@ -10337,6 +11477,7 @@ function bindChatsMethods(target, chats) {
10337
11477
  target.initiateOutboundCall = chats.initiateOutboundCall.bind(chats);
10338
11478
  target.sendAssistantMessage = chats.sendAssistantMessage.bind(chats);
10339
11479
  target.rateMessage = chats.rateMessage.bind(chats);
11480
+ target.getChatFeedback = chats.getChatFeedback.bind(chats);
10340
11481
  target.getChatAssignmentTasks = chats.getChatAssignmentTasks.bind(chats);
10341
11482
  target.createChatCompletion = chats.createChatCompletion.bind(chats);
10342
11483
  target.exportChats = chats.exportChats.bind(chats);
@@ -10365,9 +11506,28 @@ function bindCallsMethods(target, calls, cel) {
10365
11506
  target.initiateCall = calls.initiateCall.bind(calls);
10366
11507
  target.getVoiceToken = calls.getVoiceToken.bind(calls);
10367
11508
  target.getMessageTiming = calls.getMessageTiming.bind(calls);
11509
+ target.getRecordingInfo = calls.getRecordingInfo.bind(calls);
11510
+ target.listChatRecordings = calls.listChatRecordings.bind(calls);
11511
+ target.getCallRecordingDownloadUrl = calls.getCallRecordingDownloadUrl.bind(calls);
10368
11512
  target.getCelContext = cel.getCelContext.bind(cel);
10369
11513
  }
10370
11514
 
11515
+ // src/client/bindings/dashboards.ts
11516
+ function bindDashboardsMethods(target, dashboards) {
11517
+ target.getDashboards = dashboards.getDashboards.bind(dashboards);
11518
+ target.getDashboard = dashboards.getDashboard.bind(dashboards);
11519
+ target.createDashboard = dashboards.createDashboard.bind(dashboards);
11520
+ target.updateDashboard = dashboards.updateDashboard.bind(dashboards);
11521
+ target.deleteDashboard = dashboards.deleteDashboard.bind(dashboards);
11522
+ target.getDashboardChannelStats = dashboards.getDashboardChannelStats.bind(dashboards);
11523
+ target.getDashboardWorkflowAssignmentStats = dashboards.getDashboardWorkflowAssignmentStats.bind(dashboards);
11524
+ }
11525
+
11526
+ // src/client/bindings/motd.ts
11527
+ function bindMotdMethods(target, motd) {
11528
+ target.getMotd = motd.getMotd.bind(motd);
11529
+ }
11530
+
10371
11531
  // src/client/bindings/data-types.ts
10372
11532
  function bindDataTypesMethods(target, dataTypes) {
10373
11533
  target.getDataTypes = dataTypes.getDataTypes.bind(dataTypes);
@@ -10391,6 +11551,12 @@ function bindDataTypesMethods(target, dataTypes) {
10391
11551
  target.getFieldIndexStatus = dataTypes.getFieldIndexStatus.bind(dataTypes);
10392
11552
  target.validateDataTypeSlug = dataTypes.validateDataTypeSlug.bind(dataTypes);
10393
11553
  target.getMemberRecordCounts = dataTypes.getMemberRecordCounts.bind(dataTypes);
11554
+ target.getDataRecordFilters = dataTypes.getDataRecordFilters.bind(dataTypes);
11555
+ target.getDataRecordFilter = dataTypes.getDataRecordFilter.bind(dataTypes);
11556
+ target.createDataRecordFilter = dataTypes.createDataRecordFilter.bind(dataTypes);
11557
+ target.updateDataRecordFilter = dataTypes.updateDataRecordFilter.bind(dataTypes);
11558
+ target.deleteDataRecordFilter = dataTypes.deleteDataRecordFilter.bind(dataTypes);
11559
+ target.getDataRecordFilterCount = dataTypes.getDataRecordFilterCount.bind(dataTypes);
10394
11560
  }
10395
11561
 
10396
11562
  // src/client/bindings/members.ts
@@ -10407,6 +11573,9 @@ function bindMembersMethods(target, members) {
10407
11573
  target.deleteMember = members.deleteMember.bind(members);
10408
11574
  target.archiveMember = members.archiveMember.bind(members);
10409
11575
  target.unarchiveMember = members.unarchiveMember.bind(members);
11576
+ target.sendMemberPhoneConfirmation = members.sendMemberPhoneConfirmation.bind(members);
11577
+ target.bulkCreateMembers = members.bulkCreateMembers.bind(members);
11578
+ target.previewImportMembers = members.previewImportMembers.bind(members);
10410
11579
  target.importMembers = members.importMembers.bind(members);
10411
11580
  target.exportMembers = members.exportMembers.bind(members);
10412
11581
  target.getMembersMessageActivity = members.getMembersMessageActivity.bind(members);
@@ -10441,8 +11610,10 @@ function bindMembersMethods(target, members) {
10441
11610
  target.resolveAnonymousMember = members.resolveAnonymousMember.bind(members);
10442
11611
  target.expireAnonymousMember = members.expireAnonymousMember.bind(members);
10443
11612
  target.getMemberMemories = members.getMemberMemories.bind(members);
11613
+ target.getMemberMemory = members.getMemberMemory.bind(members);
10444
11614
  target.createMemberMemory = members.createMemberMemory.bind(members);
10445
11615
  target.deleteMemberMemory = members.deleteMemberMemory.bind(members);
11616
+ target.getMemberSyncLinks = members.getMemberSyncLinks.bind(members);
10446
11617
  }
10447
11618
 
10448
11619
  // src/client/bindings/workspaces.ts
@@ -10497,6 +11668,10 @@ function bindWorkspacesMethods(target, workspaces, signupRequests) {
10497
11668
  target.listPushSubscriptions = workspaces.listPushSubscriptions.bind(workspaces);
10498
11669
  target.getWorkspaceEmailDomains = workspaces.getWorkspaceEmailDomains.bind(workspaces);
10499
11670
  target.getWorkspaceSiteDomains = workspaces.getWorkspaceSiteDomains.bind(workspaces);
11671
+ target.getWorkspaceWidgetDomains = workspaces.getWorkspaceWidgetDomains.bind(workspaces);
11672
+ target.listWidgetDomains = workspaces.listWidgetDomains.bind(workspaces);
11673
+ target.upsertWidgetDomain = workspaces.upsertWidgetDomain.bind(workspaces);
11674
+ target.deleteWidgetDomain = workspaces.deleteWidgetDomain.bind(workspaces);
10500
11675
  target.listWorkspaceInvitations = signupRequests.listWorkspaceInvitations.bind(signupRequests);
10501
11676
  target.listWorkspaceInvitationsAdmin = signupRequests.listWorkspaceInvitationsAdmin.bind(signupRequests);
10502
11677
  target.getWorkspaceInvitation = signupRequests.getWorkspaceInvitation.bind(signupRequests);
@@ -10516,6 +11691,7 @@ function bindWorkspacesMethods(target, workspaces, signupRequests) {
10516
11691
  function bindAuthMethods(target, auth, assignments) {
10517
11692
  target.getUserAccount = auth.getUserAccount.bind(auth);
10518
11693
  target.updateUserAccount = auth.updateUserAccount.bind(auth);
11694
+ target.recordAcquisition = auth.recordAcquisition.bind(auth);
10519
11695
  target.login = auth.login.bind(auth);
10520
11696
  target.resendCode = auth.resendCode.bind(auth);
10521
11697
  target.verifyCodeWith2FA = auth.verifyCodeWith2FA.bind(auth);
@@ -10576,6 +11752,19 @@ function bindSitesMethods(target, sites) {
10576
11752
  target.checkSiteSlugAvailability = sites.checkSiteSlugAvailability.bind(sites);
10577
11753
  target.checkSiteDomainAvailability = sites.checkSiteDomainAvailability.bind(sites);
10578
11754
  target.getSite = sites.getSite.bind(sites);
11755
+ target.getSiteSharing = sites.getSiteSharing.bind(sites);
11756
+ target.updateSiteSharing = sites.updateSiteSharing.bind(sites);
11757
+ target.getSiteSource = sites.getSiteSource.bind(sites);
11758
+ target.getSiteSourceTemplates = sites.getSiteSourceTemplates.bind(sites);
11759
+ target.createSiteSource = sites.createSiteSource.bind(sites);
11760
+ target.buildSiteSource = sites.buildSiteSource.bind(sites);
11761
+ target.publishSiteSource = sites.publishSiteSource.bind(sites);
11762
+ target.resetSiteSource = sites.resetSiteSource.bind(sites);
11763
+ target.rollbackSiteSource = sites.rollbackSiteSource.bind(sites);
11764
+ target.downloadSiteSourceZip = sites.downloadSiteSourceZip.bind(sites);
11765
+ target.importSiteSourceZip = sites.importSiteSourceZip.bind(sites);
11766
+ target.getThemeSettings = sites.getThemeSettings.bind(sites);
11767
+ target.updateThemeSettings = sites.updateThemeSettings.bind(sites);
10579
11768
  target.getSiteByUuid = sites.getSiteByUuid.bind(sites);
10580
11769
  target.getSiteRenderedPage = sites.getSiteRenderedPage.bind(sites);
10581
11770
  target.getSiteRenderedMenu = sites.getSiteRenderedMenu.bind(sites);
@@ -10608,10 +11797,16 @@ function bindSitesMethods(target, sites) {
10608
11797
  function bindFilesMethods(target, files) {
10609
11798
  target.getFiles = files.getFiles.bind(files);
10610
11799
  target.getFile = files.getFile.bind(files);
11800
+ target.downloadFilesZip = files.downloadFilesZip.bind(files);
10611
11801
  target.createFile = files.createFile.bind(files);
10612
11802
  target.uploadFile = files.uploadFile.bind(files);
10613
11803
  target.updateFile = files.updateFile.bind(files);
10614
11804
  target.deleteFile = files.deleteFile.bind(files);
11805
+ target.resolveFilePath = files.resolveFilePath.bind(files);
11806
+ target.listFileVersions = files.listFileVersions.bind(files);
11807
+ target.getFileVersionDiff = files.getFileVersionDiff.bind(files);
11808
+ target.restoreFileVersion = files.restoreFileVersion.bind(files);
11809
+ target.getFileVersionContentsUrl = files.getFileVersionContentsUrl.bind(files);
10615
11810
  target.convertFile = files.convertFile.bind(files);
10616
11811
  target.generateFileUploadUrl = files.generateFileUploadUrl.bind(files);
10617
11812
  target.getFolders = files.getFolders.bind(files);
@@ -10649,6 +11844,7 @@ function bindEventsMethods(target, events) {
10649
11844
  target.createEventRule = events.createEventRule.bind(events);
10650
11845
  target.updateEventRule = events.updateEventRule.bind(events);
10651
11846
  target.deleteEventRule = events.deleteEventRule.bind(events);
11847
+ target.testWebhook = events.testWebhook.bind(events);
10652
11848
  target.reorderEventRules = events.reorderEventRules.bind(events);
10653
11849
  target.getWebhookLogs = events.getWebhookLogs.bind(events);
10654
11850
  target.getRuleExecutions = events.getRuleExecutions.bind(events);
@@ -10661,6 +11857,7 @@ function bindEventsMethods(target, events) {
10661
11857
  target.getRoutineRuns = events.getRoutineRuns.bind(events);
10662
11858
  target.resetRoutineRuns = events.resetRoutineRuns.bind(events);
10663
11859
  target.previewSchedule = events.previewSchedule.bind(events);
11860
+ target.previewRoutineWorkflowAccess = events.previewRoutineWorkflowAccess.bind(events);
10664
11861
  }
10665
11862
 
10666
11863
  // src/client/bindings/experiments.ts
@@ -10705,18 +11902,18 @@ function bindWorkflowsMethods(target, workflows, workflowNotes, voice, superviso
10705
11902
  target.createWorkflowNote = workflowNotes.createWorkflowNote.bind(workflowNotes);
10706
11903
  target.updateWorkflowNote = workflowNotes.updateWorkflowNote.bind(workflowNotes);
10707
11904
  target.deleteWorkflowNote = workflowNotes.deleteWorkflowNote.bind(workflowNotes);
11905
+ target.getWorkflowFeedback = workflows.getWorkflowFeedback.bind(workflows);
10708
11906
  target.getWorkflowContributors = workflows.getWorkflowContributors.bind(workflows);
10709
11907
  target.createWorkflowContributor = workflows.createWorkflowContributor.bind(workflows);
10710
11908
  target.updateWorkflowContributor = workflows.updateWorkflowContributor.bind(workflows);
10711
11909
  target.deleteWorkflowContributor = workflows.deleteWorkflowContributor.bind(workflows);
10712
- target.getWorkflowVersions = workflows.getWorkflowVersions.bind(workflows);
10713
- target.getWorkflowVersionActive = workflows.getWorkflowVersionActive.bind(workflows);
10714
- target.getWorkflowVersion = workflows.getWorkflowVersion.bind(workflows);
10715
- target.publishWorkflowVersion = workflows.publishWorkflowVersion.bind(workflows);
10716
- target.updateWorkflowVersion = workflows.updateWorkflowVersion.bind(workflows);
10717
- target.activateWorkflowVersion = workflows.activateWorkflowVersion.bind(workflows);
10718
- target.deactivateWorkflowVersion = workflows.deactivateWorkflowVersion.bind(workflows);
10719
- target.diffWorkflowVersions = workflows.diffWorkflowVersions.bind(workflows);
11910
+ target.getWorkflowRevisions = workflows.getWorkflowRevisions.bind(workflows);
11911
+ target.getWorkflowRevision = workflows.getWorkflowRevision.bind(workflows);
11912
+ target.publishWorkflowRevision = workflows.publishWorkflowRevision.bind(workflows);
11913
+ target.activateWorkflowRevision = workflows.activateWorkflowRevision.bind(workflows);
11914
+ target.updateWorkflowRevisionMetadata = workflows.updateWorkflowRevisionMetadata.bind(workflows);
11915
+ target.diffWorkflowRevisions = workflows.diffWorkflowRevisions.bind(workflows);
11916
+ target.editWorkflowRevisionAsDraft = workflows.editWorkflowRevisionAsDraft.bind(workflows);
10720
11917
  target.getWorkspaceBuilders = workflows.getWorkspaceBuilders.bind(workflows);
10721
11918
  target.getWorkspaceBuilder = workflows.getWorkspaceBuilder.bind(workflows);
10722
11919
  target.buildWorkspace = workflows.buildWorkspace.bind(workflows);
@@ -10781,6 +11978,9 @@ function bindCommunicationsMethods(target, phoneNumbers, inboxes, notificationRu
10781
11978
  target.getArchiveBlockers = phoneNumbers.getArchiveBlockers.bind(phoneNumbers);
10782
11979
  target.archivePhoneNumber = phoneNumbers.archivePhoneNumber.bind(phoneNumbers);
10783
11980
  target.getPhoneNumberCalls = phoneNumbers.getPhoneNumberCalls.bind(phoneNumbers);
11981
+ target.getPhoneNumberOutboundAnalyticsSummary = phoneNumbers.getPhoneNumberOutboundAnalyticsSummary.bind(phoneNumbers);
11982
+ target.getPhoneNumberOutboundAnalyticsCalls = phoneNumbers.getPhoneNumberOutboundAnalyticsCalls.bind(phoneNumbers);
11983
+ target.exportPhoneNumberOutboundAnalyticsCsv = phoneNumbers.exportPhoneNumberOutboundAnalyticsCsv.bind(phoneNumbers);
10784
11984
  target.getPhoneNumberMessages = phoneNumbers.getPhoneNumberMessages.bind(phoneNumbers);
10785
11985
  target.getPhoneNumberVoicemails = phoneNumbers.getPhoneNumberVoicemails.bind(phoneNumbers);
10786
11986
  target.fetchVoicemailAudio = phoneNumbers.fetchVoicemailAudio.bind(phoneNumbers);
@@ -10899,16 +12099,18 @@ function bindAppsMethods(target, apps, builders, inquiries, oauth, oauthConnecti
10899
12099
  target.exchangeOAuthToken = oauth.exchangeOAuthToken.bind(oauth);
10900
12100
  target.getAvailableScopes = oauth.getAvailableScopes.bind(oauth);
10901
12101
  target.getOAuthConnectionStatus = oauthConnections.getConnectionStatus.bind(oauthConnections);
12102
+ target.listOAuthAccounts = oauthConnections.listAccounts.bind(oauthConnections);
10902
12103
  target.getOAuthAuthorizationUrl = oauthConnections.getAuthorizationUrl.bind(oauthConnections);
10903
12104
  target.disconnectOAuthProvider = oauthConnections.disconnect.bind(oauthConnections);
10904
12105
  }
10905
12106
 
10906
12107
  // src/client/bindings/integrations.ts
10907
- function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackApps, teamsApps, fhirConnections, healthie, salesforce, hubspot, appConnections, connectionSync, confluence) {
12108
+ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackApps, teamsApps, fhirConnections, patientSyncConnections, healthie, salesforce, hubspot, appConnections, connectionSync, confluence) {
10908
12109
  target.getMondayBoards = mondayIntegration.getBoards.bind(mondayIntegration);
10909
12110
  target.getMondayBoardColumns = mondayIntegration.getBoardColumns.bind(mondayIntegration);
10910
12111
  target.getMondayBoardGroups = mondayIntegration.getBoardGroups.bind(mondayIntegration);
10911
12112
  target.getMondayCurrentUserInfo = mondayIntegration.getCurrentUserInfo.bind(mondayIntegration);
12113
+ target.installMondayConnection = mondayIntegration.installMondayConnection.bind(mondayIntegration);
10912
12114
  target.configureMondayConnection = mondayIntegration.configureMondayConnection.bind(mondayIntegration);
10913
12115
  target.getMondayConnectionStatus = mondayIntegration.getMondayConnectionStatus.bind(mondayIntegration);
10914
12116
  target.authorizeMondayConnection = mondayIntegration.authorizeMondayConnection.bind(mondayIntegration);
@@ -10943,6 +12145,8 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
10943
12145
  target.getDiscordBotAccounts = discordBots.getDiscordBotAccounts.bind(discordBots);
10944
12146
  target.getMyCredentials = discordBots.getMyCredentials.bind(discordBots);
10945
12147
  target.unlinkCredential = discordBots.unlinkCredential.bind(discordBots);
12148
+ target.completeDiscordLink = discordBots.completeDiscordLink.bind(discordBots);
12149
+ target.discordLinkPreflight = discordBots.discordLinkPreflight.bind(discordBots);
10946
12150
  target.getSlackApps = slackApps.getSlackApps.bind(slackApps);
10947
12151
  target.getSlackApp = slackApps.getSlackApp.bind(slackApps);
10948
12152
  target.createSlackApp = slackApps.createSlackApp.bind(slackApps);
@@ -10989,6 +12193,9 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
10989
12193
  target.fhirGetEncounterSyncRuns = fhirConnections.fhirGetEncounterSyncRuns.bind(fhirConnections);
10990
12194
  target.fhirRefreshEncounterPatient = fhirConnections.fhirRefreshEncounterPatient.bind(fhirConnections);
10991
12195
  target.fhirBackfillEncounterSync = fhirConnections.fhirBackfillEncounterSync.bind(fhirConnections);
12196
+ target.configurePatientSync = patientSyncConnections.configurePatientSync.bind(patientSyncConnections);
12197
+ target.getPatientSyncStatus = patientSyncConnections.getPatientSyncStatus.bind(patientSyncConnections);
12198
+ target.deletePatientSyncConnection = patientSyncConnections.deletePatientSyncConnection.bind(patientSyncConnections);
10992
12199
  target.configureHealthie = healthie.configureHealthie.bind(healthie);
10993
12200
  target.getHealthieStatus = healthie.getHealthieStatus.bind(healthie);
10994
12201
  target.listHealthieProviders = healthie.listHealthieProviders.bind(healthie);
@@ -11012,6 +12219,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
11012
12219
  target.deleteConfluence = confluence.deleteConfluence.bind(confluence);
11013
12220
  target.listConfluenceSpaces = confluence.listConfluenceSpaces.bind(confluence);
11014
12221
  target.listConfluencePages = confluence.listConfluencePages.bind(confluence);
12222
+ target.installSalesforce = salesforce.installSalesforce.bind(salesforce);
11015
12223
  target.configureSalesforce = salesforce.configureSalesforce.bind(salesforce);
11016
12224
  target.startSalesforceOAuth = salesforce.startSalesforceOAuth.bind(salesforce);
11017
12225
  target.getSalesforceStatus = salesforce.getSalesforceStatus.bind(salesforce);
@@ -11029,6 +12237,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
11029
12237
  target.describeSalesforceObject = salesforce.describeSalesforceObject.bind(salesforce);
11030
12238
  target.searchSalesforceRecords = salesforce.searchSalesforceRecords.bind(salesforce);
11031
12239
  target.importSalesforceMembers = salesforce.importSalesforceMembers.bind(salesforce);
12240
+ target.installHubspot = hubspot.installHubspot.bind(hubspot);
11032
12241
  target.configureHubspot = hubspot.configureHubspot.bind(hubspot);
11033
12242
  target.startHubspotOAuth = hubspot.startHubspotOAuth.bind(hubspot);
11034
12243
  target.getHubspotStatus = hubspot.getHubspotStatus.bind(hubspot);
@@ -11182,6 +12391,14 @@ function bindPersonasMethods(target, personas) {
11182
12391
  target.deletePersona = personas.deletePersona.bind(personas);
11183
12392
  }
11184
12393
 
12394
+ // src/client/bindings/queries.ts
12395
+ function bindQueriesMethods(target, queries) {
12396
+ target.getQueryFields = queries.getQueryFields.bind(queries);
12397
+ target.validateQuery = queries.validateQuery.bind(queries);
12398
+ target.previewQuery = queries.previewQuery.bind(queries);
12399
+ target.runQuery = queries.runQuery.bind(queries);
12400
+ }
12401
+
11185
12402
  // src/client/bindings/customers.ts
11186
12403
  function bindCustomersMethods(target, customers) {
11187
12404
  target.getMyCustomers = customers.getMyCustomers.bind(customers);
@@ -11228,6 +12445,7 @@ function bindSupportRequestMethods(target, supportRequests) {
11228
12445
  target.createWorkspaceSupportRequest = supportRequests.createWorkspaceSupportRequest.bind(supportRequests);
11229
12446
  target.commentOnWorkspaceSupportRequest = supportRequests.commentOnWorkspaceSupportRequest.bind(supportRequests);
11230
12447
  target.closeWorkspaceSupportRequest = supportRequests.closeWorkspaceSupportRequest.bind(supportRequests);
12448
+ target.reopenWorkspaceSupportRequest = supportRequests.reopenWorkspaceSupportRequest.bind(supportRequests);
11231
12449
  target.clickWorkspaceSupportRequestResource = supportRequests.clickWorkspaceSupportRequestResource.bind(supportRequests);
11232
12450
  }
11233
12451
 
@@ -11252,9 +12470,12 @@ var GravityRailClient = class {
11252
12470
  createAbility;
11253
12471
  updateAbility;
11254
12472
  deleteAbility;
12473
+ getCharlestonTestDeliveryRecipients;
11255
12474
  // Chats API
11256
12475
  getChats;
11257
12476
  getChat;
12477
+ getChatCallbacks;
12478
+ cancelChatCallback;
11258
12479
  getChatTokenUsage;
11259
12480
  getChatTodos;
11260
12481
  getChatSkills;
@@ -11267,6 +12488,8 @@ var GravityRailClient = class {
11267
12488
  createWorkflowOutboundVoiceChat;
11268
12489
  deleteChat;
11269
12490
  updateChat;
12491
+ getChatModelOverride;
12492
+ updateChatModelOverride;
11270
12493
  updateChatMute;
11271
12494
  updateChatNeedsResponse;
11272
12495
  summarizeChat;
@@ -11276,6 +12499,7 @@ var GravityRailClient = class {
11276
12499
  initiateOutboundCall;
11277
12500
  sendAssistantMessage;
11278
12501
  rateMessage;
12502
+ getChatFeedback;
11279
12503
  getChatAssignmentTasks;
11280
12504
  createChatCompletion;
11281
12505
  exportChats;
@@ -11301,6 +12525,9 @@ var GravityRailClient = class {
11301
12525
  initiateCall;
11302
12526
  getVoiceToken;
11303
12527
  getMessageTiming;
12528
+ getRecordingInfo;
12529
+ listChatRecordings;
12530
+ getCallRecordingDownloadUrl;
11304
12531
  getCelContext;
11305
12532
  // Data Types API
11306
12533
  getDataTypes;
@@ -11324,6 +12551,12 @@ var GravityRailClient = class {
11324
12551
  getFieldIndexStatus;
11325
12552
  validateDataTypeSlug;
11326
12553
  getMemberRecordCounts;
12554
+ getDataRecordFilters;
12555
+ getDataRecordFilter;
12556
+ createDataRecordFilter;
12557
+ updateDataRecordFilter;
12558
+ deleteDataRecordFilter;
12559
+ getDataRecordFilterCount;
11327
12560
  // Members API
11328
12561
  getCurrentMember;
11329
12562
  getOwnedMembers;
@@ -11337,6 +12570,9 @@ var GravityRailClient = class {
11337
12570
  deleteMember;
11338
12571
  archiveMember;
11339
12572
  unarchiveMember;
12573
+ sendMemberPhoneConfirmation;
12574
+ bulkCreateMembers;
12575
+ previewImportMembers;
11340
12576
  importMembers;
11341
12577
  exportMembers;
11342
12578
  getMembersMessageActivity;
@@ -11375,8 +12611,11 @@ var GravityRailClient = class {
11375
12611
  expireAnonymousMember;
11376
12612
  // Member Memories
11377
12613
  getMemberMemories;
12614
+ getMemberMemory;
11378
12615
  createMemberMemory;
11379
12616
  deleteMemberMemory;
12617
+ // Member Sync Links
12618
+ getMemberSyncLinks;
11380
12619
  // Agent Tasks API (operator-facing async sub-agent inspection/cancel)
11381
12620
  getAgentTasks;
11382
12621
  getAgentTask;
@@ -11390,8 +12629,6 @@ var GravityRailClient = class {
11390
12629
  deleteAgent;
11391
12630
  archiveAgent;
11392
12631
  unarchiveAgent;
11393
- resolveAgentTools;
11394
- listAgentAbilities;
11395
12632
  // Qualifications API
11396
12633
  getQualifications;
11397
12634
  getQualification;
@@ -11407,11 +12644,26 @@ var GravityRailClient = class {
11407
12644
  evaluateTestChatRun;
11408
12645
  endTestChatRun;
11409
12646
  // Personas API (workspace-scoped test-identity templates)
12647
+ // Unified Query Engine
12648
+ getQueryFields;
12649
+ validateQuery;
12650
+ previewQuery;
12651
+ runQuery;
11410
12652
  listPersonas;
11411
12653
  getPersona;
11412
12654
  createPersona;
11413
12655
  updatePersona;
11414
12656
  deletePersona;
12657
+ // Dashboards API
12658
+ getDashboards;
12659
+ getDashboard;
12660
+ createDashboard;
12661
+ updateDashboard;
12662
+ deleteDashboard;
12663
+ getDashboardChannelStats;
12664
+ getDashboardWorkflowAssignmentStats;
12665
+ // MOTD API
12666
+ getMotd;
11415
12667
  // Journeys API
11416
12668
  getJourneys;
11417
12669
  getJourney;
@@ -11479,6 +12731,7 @@ var GravityRailClient = class {
11479
12731
  revokeAccessGrant;
11480
12732
  getAccessGrants;
11481
12733
  getMemberGrants;
12734
+ getGranteeGrants;
11482
12735
  // Prompts API
11483
12736
  inspectPrompt;
11484
12737
  // Workspaces API
@@ -11528,6 +12781,10 @@ var GravityRailClient = class {
11528
12781
  getUsageDashboard;
11529
12782
  getWorkspaceEmailDomains;
11530
12783
  getWorkspaceSiteDomains;
12784
+ getWorkspaceWidgetDomains;
12785
+ listWidgetDomains;
12786
+ upsertWidgetDomain;
12787
+ deleteWidgetDomain;
11531
12788
  // Org API
11532
12789
  listOrgDomains;
11533
12790
  registerOrgDomain;
@@ -11568,6 +12825,7 @@ var GravityRailClient = class {
11568
12825
  // Auth API
11569
12826
  getUserAccount;
11570
12827
  updateUserAccount;
12828
+ recordAcquisition;
11571
12829
  login;
11572
12830
  resendCode;
11573
12831
  verifyCodeWith2FA;
@@ -11625,6 +12883,19 @@ var GravityRailClient = class {
11625
12883
  checkSiteSlugAvailability;
11626
12884
  checkSiteDomainAvailability;
11627
12885
  getSite;
12886
+ getSiteSharing;
12887
+ updateSiteSharing;
12888
+ getSiteSource;
12889
+ getSiteSourceTemplates;
12890
+ createSiteSource;
12891
+ buildSiteSource;
12892
+ publishSiteSource;
12893
+ resetSiteSource;
12894
+ rollbackSiteSource;
12895
+ downloadSiteSourceZip;
12896
+ importSiteSourceZip;
12897
+ getThemeSettings;
12898
+ updateThemeSettings;
11628
12899
  getSiteByUuid;
11629
12900
  getSiteRenderedPage;
11630
12901
  getSiteRenderedMenu;
@@ -11654,10 +12925,16 @@ var GravityRailClient = class {
11654
12925
  // Files API
11655
12926
  getFiles;
11656
12927
  getFile;
12928
+ resolveFilePath;
12929
+ downloadFilesZip;
11657
12930
  createFile;
11658
12931
  uploadFile;
11659
12932
  updateFile;
11660
12933
  deleteFile;
12934
+ listFileVersions;
12935
+ getFileVersionDiff;
12936
+ restoreFileVersion;
12937
+ getFileVersionContentsUrl;
11661
12938
  convertFile;
11662
12939
  generateFileUploadUrl;
11663
12940
  getFolders;
@@ -11693,6 +12970,7 @@ var GravityRailClient = class {
11693
12970
  createEventRule;
11694
12971
  updateEventRule;
11695
12972
  deleteEventRule;
12973
+ testWebhook;
11696
12974
  reorderEventRules;
11697
12975
  getWebhookLogs;
11698
12976
  getRuleExecutions;
@@ -11705,6 +12983,7 @@ var GravityRailClient = class {
11705
12983
  getRoutineRuns;
11706
12984
  resetRoutineRuns;
11707
12985
  previewSchedule;
12986
+ previewRoutineWorkflowAccess;
11708
12987
  // Workflows API
11709
12988
  getWorkflows;
11710
12989
  getWorkflow;
@@ -11729,18 +13008,18 @@ var GravityRailClient = class {
11729
13008
  createWorkflowNote;
11730
13009
  updateWorkflowNote;
11731
13010
  deleteWorkflowNote;
13011
+ getWorkflowFeedback;
11732
13012
  getWorkflowContributors;
11733
13013
  createWorkflowContributor;
11734
13014
  updateWorkflowContributor;
11735
13015
  deleteWorkflowContributor;
11736
- getWorkflowVersions;
11737
- getWorkflowVersionActive;
11738
- getWorkflowVersion;
11739
- publishWorkflowVersion;
11740
- updateWorkflowVersion;
11741
- activateWorkflowVersion;
11742
- deactivateWorkflowVersion;
11743
- diffWorkflowVersions;
13016
+ getWorkflowRevisions;
13017
+ getWorkflowRevision;
13018
+ publishWorkflowRevision;
13019
+ activateWorkflowRevision;
13020
+ updateWorkflowRevisionMetadata;
13021
+ diffWorkflowRevisions;
13022
+ editWorkflowRevisionAsDraft;
11744
13023
  getWorkspaceBuilders;
11745
13024
  getWorkspaceBuilder;
11746
13025
  buildWorkspace;
@@ -11799,6 +13078,9 @@ var GravityRailClient = class {
11799
13078
  getArchiveBlockers;
11800
13079
  archivePhoneNumber;
11801
13080
  getPhoneNumberCalls;
13081
+ getPhoneNumberOutboundAnalyticsSummary;
13082
+ getPhoneNumberOutboundAnalyticsCalls;
13083
+ exportPhoneNumberOutboundAnalyticsCsv;
11802
13084
  getPhoneNumberMessages;
11803
13085
  getPhoneNumberVoicemails;
11804
13086
  fetchVoicemailAudio;
@@ -11908,6 +13190,7 @@ var GravityRailClient = class {
11908
13190
  exchangeOAuthToken;
11909
13191
  getAvailableScopes;
11910
13192
  getOAuthConnectionStatus;
13193
+ listOAuthAccounts;
11911
13194
  getOAuthAuthorizationUrl;
11912
13195
  disconnectOAuthProvider;
11913
13196
  // Integrations API
@@ -11916,6 +13199,7 @@ var GravityRailClient = class {
11916
13199
  getMondayBoardGroups;
11917
13200
  getMondayCurrentUserInfo;
11918
13201
  // Monday.com Connection API
13202
+ installMondayConnection;
11919
13203
  configureMondayConnection;
11920
13204
  getMondayConnectionStatus;
11921
13205
  authorizeMondayConnection;
@@ -11951,6 +13235,8 @@ var GravityRailClient = class {
11951
13235
  getDiscordBotAccounts;
11952
13236
  getMyCredentials;
11953
13237
  unlinkCredential;
13238
+ completeDiscordLink;
13239
+ discordLinkPreflight;
11954
13240
  // Slack Apps API
11955
13241
  getSlackApps;
11956
13242
  getSlackApp;
@@ -12001,6 +13287,9 @@ var GravityRailClient = class {
12001
13287
  fhirRefreshEncounterPatient;
12002
13288
  fhirBackfillEncounterSync;
12003
13289
  // Healthie API
13290
+ configurePatientSync;
13291
+ getPatientSyncStatus;
13292
+ deletePatientSyncConnection;
12004
13293
  configureHealthie;
12005
13294
  getHealthieStatus;
12006
13295
  listHealthieProviders;
@@ -12026,6 +13315,7 @@ var GravityRailClient = class {
12026
13315
  listConfluenceSpaces;
12027
13316
  listConfluencePages;
12028
13317
  // Salesforce API
13318
+ installSalesforce;
12029
13319
  configureSalesforce;
12030
13320
  startSalesforceOAuth;
12031
13321
  getSalesforceStatus;
@@ -12044,6 +13334,7 @@ var GravityRailClient = class {
12044
13334
  searchSalesforceRecords;
12045
13335
  importSalesforceMembers;
12046
13336
  // HubSpot API
13337
+ installHubspot;
12047
13338
  configureHubspot;
12048
13339
  startHubspotOAuth;
12049
13340
  getHubspotStatus;
@@ -12129,6 +13420,7 @@ var GravityRailClient = class {
12129
13420
  createWorkspaceSupportRequest;
12130
13421
  commentOnWorkspaceSupportRequest;
12131
13422
  closeWorkspaceSupportRequest;
13423
+ reopenWorkspaceSupportRequest;
12132
13424
  clickWorkspaceSupportRequestResource;
12133
13425
  constructor(apiKey, baseUrl, customFetch) {
12134
13426
  const apis = createApiModules(apiKey, baseUrl, customFetch);
@@ -12143,6 +13435,9 @@ var GravityRailClient = class {
12143
13435
  bindAgentsMethods(this, apis.agents);
12144
13436
  bindQualificationsMethods(this, apis.qualifications);
12145
13437
  bindPersonasMethods(this, apis.personas);
13438
+ bindQueriesMethods(this, apis.queries);
13439
+ bindDashboardsMethods(this, apis.dashboards);
13440
+ bindMotdMethods(this, apis.motd);
12146
13441
  bindJourneysMethods(this, apis.journeys);
12147
13442
  bindExperimentsMethods(this, apis.experiments);
12148
13443
  bindOperatorMethods(this, apis.operatorGroups);
@@ -12182,6 +13477,7 @@ var GravityRailClient = class {
12182
13477
  apis.slackApps,
12183
13478
  apis.teamsApps,
12184
13479
  apis.fhirConnections,
13480
+ apis.patientSyncConnections,
12185
13481
  apis.healthie,
12186
13482
  apis.salesforce,
12187
13483
  apis.hubspot,
@@ -12235,23 +13531,30 @@ var GravityRailClient = class {
12235
13531
  });
12236
13532
  }
12237
13533
  /**
12238
- * Set the org token for cross-domain / non-browser clients (e.g. CLI).
12239
- * When set, all API requests include the X-Org-Token header so the backend
12240
- * accepts the request without requiring a browser cookie.
13534
+ * Set the org session credential for cross-domain / non-browser clients (e.g. CLI).
13535
+ * Opaque gr_sess_ values use X-Org-Session. Legacy orgToken JWE values still
13536
+ * use X-Org-Token during the migration window.
12241
13537
  *
12242
- * `orgUuid` is the org that issued the token. Pass it so the SDK can
12243
- * detect a stale token (e.g. switching orgs mid-session) and re-fire the
13538
+ * `orgUuid` is the org that issued the session. Pass it so the SDK can
13539
+ * detect a stale session (e.g. switching orgs mid-session) and re-fire the
12244
13540
  * org-auth handler instead of silently 401-ing.
12245
13541
  *
12246
13542
  * Propagates to all API modules.
12247
13543
  */
12248
- setOrgToken(token, orgUuid) {
13544
+ setOrgSession(session, orgUuid) {
12249
13545
  Object.values(this.apis).forEach((api) => {
12250
- if (typeof api.setOrgToken === "function") {
12251
- api.setOrgToken(token, orgUuid);
13546
+ if (typeof api.setOrgSession === "function") {
13547
+ api.setOrgSession(session, orgUuid);
12252
13548
  }
12253
13549
  });
12254
13550
  }
13551
+ /**
13552
+ * @deprecated Legacy compatibility for stateless orgToken JWE credentials.
13553
+ * Prefer setOrgSession() for opaque org browser sessions.
13554
+ */
13555
+ setOrgToken(token, orgUuid) {
13556
+ this.setOrgSession(token, orgUuid);
13557
+ }
12255
13558
  /**
12256
13559
  * Update the API key across all modules.
12257
13560
  * Used after successful re-authentication.
@@ -12327,12 +13630,19 @@ var GravityRailClient = class {
12327
13630
  CalendarSource,
12328
13631
  CalendarsApi,
12329
13632
  CallsApi,
13633
+ CapabilityClass,
12330
13634
  ChatsApi,
12331
13635
  ConfluenceApi,
12332
13636
  ConnectionSyncApi,
12333
13637
  ConsentMethod,
12334
13638
  CriterionType,
12335
13639
  CustomToolkitsApi,
13640
+ CustomerActivityClassifierDetectorName,
13641
+ CustomerActivityClassifierLabel,
13642
+ CustomerActivityEventSource,
13643
+ CustomerActivityEventStatus,
13644
+ CustomerActivityReviewOutcome,
13645
+ CustomerActivitySeverity,
12336
13646
  CustomersApi,
12337
13647
  DEFAULT_CHAT_MODEL,
12338
13648
  DEFAULT_CUSTOM_VOICE_MODEL,
@@ -12340,9 +13650,11 @@ var GravityRailClient = class {
12340
13650
  DEFAULT_VOICE_INFERENCE_MODEL,
12341
13651
  DataCategory,
12342
13652
  DataFieldType,
13653
+ DataRecordRetirementResponseReason,
12343
13654
  DataSensitivity,
12344
13655
  DataTypeRecordScope,
12345
13656
  DataTypesApi,
13657
+ DeclaredDataUse,
12346
13658
  DiscordBotsApi,
12347
13659
  DriverMode,
12348
13660
  EmailDnsRecordType,
@@ -12372,6 +13684,8 @@ var GravityRailClient = class {
12372
13684
  McpServerState,
12373
13685
  McpServersApi,
12374
13686
  MemberFeature,
13687
+ MemberImportMatchInfoMatchType,
13688
+ MemberImportPreviewRowAction,
12375
13689
  MemberType,
12376
13690
  MembersApi,
12377
13691
  MenuItemResponseItemType,
@@ -12399,11 +13713,21 @@ var GravityRailClient = class {
12399
13713
  PERMISSION_NONE,
12400
13714
  PERMISSION_USE,
12401
13715
  PERMISSION_VERIFY,
13716
+ PIDS_DISPOSITIONS,
13717
+ PIDS_SOURCES,
13718
+ POSITIVE_RATING_THRESHOLD,
12402
13719
  PersonasApi,
13720
+ PhiDataPolicy,
13721
+ PhiPolicyReason,
13722
+ PhiPolicySource,
13723
+ PhiPostureDecision,
13724
+ PhiPostureReasonCode,
13725
+ PhiPostureTransitionResponseTargetType,
12403
13726
  PhoneNumbersApi,
12404
13727
  ProductType,
12405
13728
  PromptsApi,
12406
13729
  PronunciationsApi,
13730
+ QUERY_VALUELESS_OPS,
12407
13731
  QualificationsApi,
12408
13732
  REALTIME_MODEL_CUSTOM,
12409
13733
  REALTIME_MODEL_GEMINI,
@@ -12441,13 +13765,13 @@ var GravityRailClient = class {
12441
13765
  TTS_MODEL_ELEVENLABS_FLASH,
12442
13766
  TTS_MODEL_ELEVENLABS_MULTILINGUAL,
12443
13767
  TTS_MODEL_ELEVENLABS_TURBO,
12444
- TTS_MODEL_POCKET,
12445
13768
  TTS_PREVIEW_PROVIDERS,
12446
13769
  TasksApi,
12447
13770
  TemplatesApi,
12448
13771
  ToolkitState,
12449
13772
  ToolkitsApi,
12450
13773
  VoiceApi,
13774
+ WIDGET_SLUGS,
12451
13775
  WorkflowAccessWarningResourceType,
12452
13776
  WorkflowNotesApi,
12453
13777
  WorkflowResourceType,
@@ -12468,6 +13792,7 @@ var GravityRailClient = class {
12468
13792
  bindChatsMethods,
12469
13793
  bindCommunicationsMethods,
12470
13794
  bindCustomersMethods,
13795
+ bindDashboardsMethods,
12471
13796
  bindDataTypesMethods,
12472
13797
  bindEventsMethods,
12473
13798
  bindExperimentsMethods,
@@ -12475,12 +13800,14 @@ var GravityRailClient = class {
12475
13800
  bindIntegrationsMethods,
12476
13801
  bindJourneysMethods,
12477
13802
  bindMembersMethods,
13803
+ bindMotdMethods,
12478
13804
  bindOperatorMethods,
12479
13805
  bindOrgMethods,
12480
13806
  bindPersonasMethods,
12481
13807
  bindPromptsMethods,
12482
13808
  bindPronunciationsMethods,
12483
13809
  bindQualificationsMethods,
13810
+ bindQueriesMethods,
12484
13811
  bindResellersMethods,
12485
13812
  bindSitesMethods,
12486
13813
  bindSupportRequestMethods,
@@ -12507,12 +13834,14 @@ var GravityRailClient = class {
12507
13834
  getFeaturesByVisibility,
12508
13835
  getMissingDependencies,
12509
13836
  getResourceMetadata,
13837
+ getRevisionState,
12510
13838
  getScopeFromProductType,
12511
13839
  getTTSProvider,
12512
13840
  getVoiceModelId,
12513
13841
  initializeFeatures,
12514
13842
  isChatType,
12515
13843
  isFeatureAvailable,
13844
+ isPositiveRating,
12516
13845
  isRegistryInitialized,
12517
13846
  isSMSDeliveryFailureStatus,
12518
13847
  parseExperimentStatCount,