@gravity-rail/sdk 0.36.0 → 0.40.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 (57) hide show
  1. package/README.md +44 -21
  2. package/dist/agui.d.cts +1 -1
  3. package/dist/agui.d.ts +1 -1
  4. package/dist/audio.d.cts +1 -1
  5. package/dist/audio.d.ts +1 -1
  6. package/dist/{chat-interaction-Ck1oMOr5.d.ts → chat-interaction-BB3ap8_u.d.ts} +8920 -6212
  7. package/dist/{chat-interaction-DqQu8Ad1.d.cts → chat-interaction-Bj1pciwo.d.cts} +8920 -6212
  8. package/dist/{chunk-P2E6LU7I.js → chunk-67QXTQVL.js} +1 -26
  9. package/dist/chunk-67QXTQVL.js.map +1 -0
  10. package/dist/chunk-6KPGCPGW.js +48 -0
  11. package/dist/chunk-6KPGCPGW.js.map +1 -0
  12. package/dist/{chunk-HRUMZ46V.js → chunk-72SWNLVD.js} +2 -1
  13. package/dist/chunk-72SWNLVD.js.map +1 -0
  14. package/dist/{chunk-R3C63RZJ.js → chunk-ZTUOB4V2.js} +1278 -218
  15. package/dist/chunk-ZTUOB4V2.js.map +1 -0
  16. package/dist/helpers.cjs +47 -0
  17. package/dist/helpers.cjs.map +1 -1
  18. package/dist/helpers.d.cts +4 -3
  19. package/dist/helpers.d.ts +4 -3
  20. package/dist/helpers.js +7 -1
  21. package/dist/helpers.js.map +1 -1
  22. package/dist/index.cjs +1389 -350
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +13 -35
  25. package/dist/index.d.ts +13 -35
  26. package/dist/index.js +112 -122
  27. package/dist/index.js.map +1 -1
  28. package/dist/internal.cjs +1303 -252
  29. package/dist/internal.cjs.map +1 -1
  30. package/dist/internal.d.cts +338 -55
  31. package/dist/internal.d.ts +338 -55
  32. package/dist/internal.js +68 -21
  33. package/dist/internal.js.map +1 -1
  34. package/dist/member-import-D8fZr2Pd.d.cts +46 -0
  35. package/dist/member-import-YNk9MlEl.d.ts +46 -0
  36. package/dist/realtime.cjs +91 -20
  37. package/dist/realtime.cjs.map +1 -1
  38. package/dist/realtime.d.cts +34 -9
  39. package/dist/realtime.d.ts +34 -9
  40. package/dist/realtime.js +90 -20
  41. package/dist/realtime.js.map +1 -1
  42. package/dist/{revision-state-Tn2V0-zt.d.cts → revision-state-BaJTq3Or.d.ts} +271 -55
  43. package/dist/{revision-state-V5RIhte0.d.ts → revision-state-CL11FA-T.d.cts} +271 -55
  44. package/dist/schemas.cjs +58 -81
  45. package/dist/schemas.cjs.map +1 -1
  46. package/dist/schemas.d.cts +88 -225
  47. package/dist/schemas.d.ts +88 -225
  48. package/dist/schemas.js +58 -76
  49. package/dist/schemas.js.map +1 -1
  50. package/dist/{tasks-BH_i_pVb.d.cts → tasks-ByJCQ5BI.d.cts} +3003 -2508
  51. package/dist/{tasks-BH_i_pVb.d.ts → tasks-ByJCQ5BI.d.ts} +3003 -2508
  52. package/dist/{types-0c6_NGU4.d.cts → types-DlfADjPR.d.cts} +17 -2
  53. package/dist/{types-0c6_NGU4.d.ts → types-DlfADjPR.d.ts} +17 -2
  54. package/package.json +9 -7
  55. package/dist/chunk-HRUMZ46V.js.map +0 -1
  56. package/dist/chunk-P2E6LU7I.js.map +0 -1
  57. package/dist/chunk-R3C63RZJ.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -48,6 +48,8 @@ __export(src_exports, {
48
48
  BaseApiClient: () => BaseApiClient,
49
49
  BuildersApi: () => BuildersApi,
50
50
  BulkMemberResultStatus: () => BulkMemberResultStatus,
51
+ BundleGrantRequestGranteeType: () => BundleGrantRequestGranteeType,
52
+ BundlesApi: () => BundlesApi,
51
53
  BusinessIndustry: () => BusinessIndustry,
52
54
  BusinessType: () => BusinessType,
53
55
  CELApi: () => CELApi,
@@ -64,7 +66,11 @@ __export(src_exports, {
64
66
  ChatInteractionController: () => ChatInteractionController,
65
67
  ChatMuteReason: () => ChatMuteReason,
66
68
  ConsentMethod: () => ConsentMethod,
69
+ CreateMemberContactPointRequestContactType: () => CreateMemberContactPointRequestContactType,
70
+ CreateMemberContactPointRequestPurpose: () => CreateMemberContactPointRequestPurpose,
71
+ CreateMemberContactPointRequestSharing: () => CreateMemberContactPointRequestSharing,
67
72
  CriterionType: () => CriterionType,
73
+ CrmActivityKind: () => CrmActivityKind,
68
74
  DEFAULT_AGENT_CHAT_MODEL: () => DEFAULT_AGENT_CHAT_MODEL,
69
75
  DEFAULT_AGENT_REALTIME_MODEL: () => DEFAULT_AGENT_REALTIME_MODEL,
70
76
  DEFAULT_AGENT_REALTIME_MODEL_CONFIG: () => DEFAULT_AGENT_REALTIME_MODEL_CONFIG,
@@ -87,10 +93,12 @@ __export(src_exports, {
87
93
  EventRuleObjectType: () => EventRuleObjectType,
88
94
  FeatureCategory: () => FeatureCategory,
89
95
  FeatureVisibility: () => FeatureVisibility,
96
+ FeedCursorRejection: () => FeedCursorRejection,
90
97
  FhirClientType: () => FhirClientType,
91
98
  FhirConnectionState: () => FhirConnectionState,
92
99
  FhirVendor: () => FhirVendor,
93
100
  FormBuilder: () => FormBuilder,
101
+ FormBundleItemRecordScope: () => FormBundleItemRecordScope,
94
102
  GravityRailClient: () => GravityRailClient,
95
103
  ImportSkippedRuleResourceGroupResourceType: () => ImportSkippedRuleResourceGroupResourceType,
96
104
  ImportSkippedRuleResponseNeededResourceTypesItem: () => ImportSkippedRuleResponseNeededResourceTypesItem,
@@ -99,6 +107,8 @@ __export(src_exports, {
99
107
  ImportSkippedRuleResponseStatus: () => ImportSkippedRuleResponseStatus,
100
108
  InboundFaxStatusValues: () => InboundFaxStatus,
101
109
  IndexStatus: () => IndexStatus,
110
+ InstallationItemChangeChange: () => InstallationItemChangeChange,
111
+ InstallationsApi: () => InstallationsApi,
102
112
  InvitationStatus: () => InvitationStatus,
103
113
  JobPosition: () => JobPosition,
104
114
  JourneyBuilder: () => JourneyBuilder,
@@ -149,13 +159,20 @@ __export(src_exports, {
149
159
  REALTIME_MODEL_OPENAI_2: () => REALTIME_MODEL_OPENAI_2,
150
160
  REALTIME_MODEL_OPENAI_MINI: () => REALTIME_MODEL_OPENAI_MINI,
151
161
  RefResolutionStatus: () => RefResolutionStatus,
162
+ ReferenceTargetInputKind: () => ReferenceTargetInputKind,
152
163
  Region: () => Region,
153
164
  RegistrationIdentifier: () => RegistrationIdentifier,
154
165
  RelatedMemberRole: () => RelatedMemberRole,
155
166
  RelationshipCardinality: () => RelationshipCardinality,
156
167
  Resource: () => Resource,
157
- RoleUpdate: () => RoleUpdate,
168
+ ResourceWorkflowsApi: () => ResourceWorkflowsApi,
169
+ RevisionHistorySegment: () => RevisionHistorySegment,
158
170
  RoutineBuilder: () => RoutineBuilder,
171
+ RoutingActionType: () => RoutingActionType,
172
+ RoutingAudience: () => RoutingAudience,
173
+ RoutingChannel: () => RoutingChannel,
174
+ RoutingTimeWindow: () => RoutingTimeWindow,
175
+ RunHealthCategory: () => RunHealthCategory,
159
176
  SCOPES: () => SCOPES,
160
177
  SCOPE_PRESETS: () => SCOPE_PRESETS,
161
178
  SMS_DELIVERY_FAILURE_STATUSES: () => SMS_DELIVERY_FAILURE_STATUSES,
@@ -163,17 +180,25 @@ __export(src_exports, {
163
180
  STT_MODEL_DEEPGRAM_FLUX_MULTI: () => STT_MODEL_DEEPGRAM_FLUX_MULTI,
164
181
  STT_MODEL_DEEPGRAM_FLUX_MULTI_SELFHOST: () => STT_MODEL_DEEPGRAM_FLUX_MULTI_SELFHOST,
165
182
  STT_MODEL_DEEPGRAM_FLUX_SELFHOST: () => STT_MODEL_DEEPGRAM_FLUX_SELFHOST,
183
+ ScalarTargetInputKind: () => ScalarTargetInputKind,
184
+ ScenarioHealthCaption: () => ScenarioHealthCaption,
185
+ ScenarioHealthHeadline: () => ScenarioHealthHeadline,
186
+ ScenarioHealthSampleNote: () => ScenarioHealthSampleNote,
187
+ ScenarioHealthState: () => ScenarioHealthState,
188
+ ScenarioRunBlocker: () => ScenarioRunBlocker,
166
189
  Scope: () => Scope,
167
190
  ScopeCategory: () => ScopeCategory,
168
191
  ScopeManager: () => ScopeManager,
192
+ SendingNextStep: () => SendingNextStep,
193
+ SendingStopState: () => SendingStopState,
194
+ SetInstallationPolicyRequestUpgradePolicy: () => SetInstallationPolicyRequestUpgradePolicy,
169
195
  SiteDnsRecordType: () => SiteDnsRecordType,
196
+ SolutionReleaseResponseSlug: () => SolutionReleaseResponseSlug,
170
197
  SupervisorsApi: () => SupervisorsApi,
171
198
  TTS_MODEL_AWS_POLLY_GENERATIVE: () => TTS_MODEL_AWS_POLLY_GENERATIVE,
172
199
  TTS_MODEL_AWS_POLLY_NEURAL: () => TTS_MODEL_AWS_POLLY_NEURAL,
173
200
  TTS_MODEL_DEEPGRAM_AURA_2: () => TTS_MODEL_DEEPGRAM_AURA_2,
174
- TTS_MODEL_ELEVENLABS_FLASH: () => TTS_MODEL_ELEVENLABS_FLASH,
175
- TTS_MODEL_ELEVENLABS_MULTILINGUAL: () => TTS_MODEL_ELEVENLABS_MULTILINGUAL,
176
- TTS_MODEL_ELEVENLABS_TURBO: () => TTS_MODEL_ELEVENLABS_TURBO,
201
+ TTS_MODEL_XAI_V1: () => TTS_MODEL_XAI_V1,
177
202
  TTS_PREVIEW_PROVIDERS: () => TTS_PREVIEW_PROVIDERS,
178
203
  TaskBuilder: () => TaskBuilder,
179
204
  TemplatesApi: () => TemplatesApi,
@@ -183,11 +208,11 @@ __export(src_exports, {
183
208
  UiPromptPresentedKindValues: () => UiPromptPresentedKind,
184
209
  UiPromptResponseKindValues: () => UiPromptResponseKind,
185
210
  UiPromptResponseStatusValues: () => UiPromptResponseStatus,
211
+ UpdateMemberContactPointRequestContactType: () => UpdateMemberContactPointRequestContactType,
212
+ UpdateMemberContactPointRequestPurpose: () => UpdateMemberContactPointRequestPurpose,
213
+ UpdateMemberContactPointRequestSharing: () => UpdateMemberContactPointRequestSharing,
186
214
  WIDGET_SLUGS: () => WIDGET_SLUGS,
187
- WORKFLOW_IMPLICIT_USE_SCOPE: () => WORKFLOW_IMPLICIT_USE_SCOPE,
188
- WorkflowAccessWarningResourceType: () => WorkflowAccessWarningResourceType,
189
215
  WorkflowBuilder: () => WorkflowBuilder,
190
- WorkflowResourceType: () => WorkflowAccessWarningResourceType,
191
216
  WorkflowRoutingMode: () => WorkflowRoutingMode,
192
217
  WorkspaceBuilder: () => WorkspaceBuilder,
193
218
  WorkspaceBuilderResource: () => WorkspaceBuilderResource,
@@ -227,10 +252,9 @@ __export(src_exports, {
227
252
  isSMSDeliveryFailureStatus: () => isSMSDeliveryFailureStatus,
228
253
  parseOrgAuthChallenge: () => parseOrgAuthChallenge,
229
254
  requiresAssistantParticipant: () => requiresAssistantParticipant,
230
- roleCanUseWorkflow: () => roleCanUseWorkflow,
231
- roleImplicitWorkflowUseScope: () => roleImplicitWorkflowUseScope,
232
- roleWorkflowAccess: () => roleWorkflowAccess,
233
255
  runWorkspaceScript: () => runWorkspaceScript,
256
+ toSafeMemberImportPreview: () => toSafeMemberImportPreview,
257
+ toSafeMemberImportSummary: () => toSafeMemberImportSummary,
234
258
  usesBuiltinAssistant: () => usesBuiltinAssistant,
235
259
  validateFeatureDependencies: () => validateFeatureDependencies
236
260
  });
@@ -329,7 +353,6 @@ var BaseApiClient = class {
329
353
  enhancedAuthInProgress = null;
330
354
  orgAuthHandler;
331
355
  orgAuthInProgress = null;
332
- actingMemberUuid;
333
356
  orgSession;
334
357
  /**
335
358
  * The org_uuid that issued the current org auth credential. Tracked so we can detect
@@ -369,21 +392,6 @@ var BaseApiClient = class {
369
392
  updateApiKey(newApiKey) {
370
393
  this.apiKey = newApiKey;
371
394
  }
372
- /**
373
- * Set the acting member UUID for member identity switching.
374
- * When set, all API requests will include the X-Acting-Member header.
375
- * The backend will validate that the authenticated account owns this member
376
- * and use it as the effective identity for the request.
377
- */
378
- setActingMember(memberUuid) {
379
- this.actingMemberUuid = memberUuid;
380
- }
381
- /**
382
- * Get the current acting member UUID.
383
- */
384
- getActingMember() {
385
- return this.actingMemberUuid;
386
- }
387
395
  /**
388
396
  * Set the opaque org session credential for cross-domain requests.
389
397
  * Opaque gr_sess_ values use X-Org-Session. Legacy orgToken JWE values still
@@ -421,9 +429,6 @@ var BaseApiClient = class {
421
429
  headers.set("Authorization", `Bearer ${requestToken}`);
422
430
  }
423
431
  }
424
- if (this.actingMemberUuid) {
425
- headers.set("X-Acting-Member", this.actingMemberUuid);
426
- }
427
432
  setOrgAuthHeader(headers, this.orgSession);
428
433
  const fullUrl = `${this.baseUrl}/api/v2/${endpoint}`;
429
434
  const response = await this.fetchFunction(fullUrl, {
@@ -575,9 +580,6 @@ ${formattedErrors}`, response.status);
575
580
  headers.set("Authorization", `Bearer ${requestToken}`);
576
581
  }
577
582
  }
578
- if (this.actingMemberUuid) {
579
- headers.set("X-Acting-Member", this.actingMemberUuid);
580
- }
581
583
  setOrgAuthHeader(headers, this.orgSession);
582
584
  const response = await this.fetchFunction(`${this.baseUrl}/api/v2/${endpoint}`, {
583
585
  ...options,
@@ -687,9 +689,6 @@ ${formattedErrors}`, response.status);
687
689
  headers.set("Authorization", `Bearer ${requestToken}`);
688
690
  }
689
691
  }
690
- if (this.actingMemberUuid) {
691
- headers.set("X-Acting-Member", this.actingMemberUuid);
692
- }
693
692
  setOrgAuthHeader(headers, this.orgSession);
694
693
  const fullUrl = `${this.baseUrl}/${path}`;
695
694
  const response = await this.fetchFunction(fullUrl, {
@@ -785,6 +784,299 @@ var AbilitiesApi = class extends BaseApiClient {
785
784
  }
786
785
  };
787
786
 
787
+ // src/api/resource-workflows.ts
788
+ function resourceWorkflowsPath(wid, ...segments) {
789
+ const tail = segments.map((segment) => encodeURIComponent(String(segment))).join("/");
790
+ const base = `w/${encodeURIComponent(wid)}/resource-workflows`;
791
+ return tail ? `${base}/${tail}` : base;
792
+ }
793
+ var ResourceWorkflowsApi = class extends BaseApiClient {
794
+ /** One Workflow's summary, for a viewer that can see it. */
795
+ async getResourceWorkflow(wid, workflowUuid) {
796
+ return this.fetch(resourceWorkflowsPath(wid, workflowUuid));
797
+ }
798
+ /**
799
+ * One published revision.
800
+ *
801
+ * The response is a union: the owner (or a `full` grantee) receives the
802
+ * complete `ResourceWorkflowGraphResponse`, while a bounded grantee receives
803
+ * the `ResourceWorkflowDisclosureResponse` envelope. Branch on `publishedAt`
804
+ * being present — never assume the full shape. A retained revision stays
805
+ * readable here after a `stop_updates` revocation.
806
+ */
807
+ async getResourceWorkflowRevision(wid, workflowUuid, revisionUuid) {
808
+ return this.fetch(
809
+ resourceWorkflowsPath(wid, workflowUuid, "revisions", revisionUuid)
810
+ );
811
+ }
812
+ /**
813
+ * List published Workflows owned by or shared with this workspace.
814
+ *
815
+ * The Bundle draft editor reads `publishedRevisionUuid` from each summary to
816
+ * pin a Workflow item; archived Workflows are excluded unless asked for.
817
+ */
818
+ async listResourceWorkflows(wid, params) {
819
+ const query = new URLSearchParams();
820
+ if (params?.page !== void 0) query.set("page", String(params.page));
821
+ if (params?.pageSize !== void 0) query.set("pageSize", String(params.pageSize));
822
+ if (params?.includeArchived !== void 0) {
823
+ query.set("includeArchived", String(params.includeArchived));
824
+ }
825
+ const qs = query.toString();
826
+ return this.fetch(
827
+ `w/${encodeURIComponent(wid)}/resource-workflows${qs ? `?${qs}` : ""}`
828
+ );
829
+ }
830
+ };
831
+
832
+ // src/api/bundles.ts
833
+ function bundlesPath(wid, ...segments) {
834
+ const tail = segments.map((segment) => encodeURIComponent(String(segment))).join("/");
835
+ const base = `w/${encodeURIComponent(wid)}/bundles`;
836
+ return tail ? `${base}/${tail}` : base;
837
+ }
838
+ function pageQuery(params) {
839
+ const query = new URLSearchParams();
840
+ if (params?.page !== void 0) query.set("page", String(params.page));
841
+ if (params?.pageSize !== void 0) query.set("pageSize", String(params.pageSize));
842
+ const qs = query.toString();
843
+ return qs ? `?${qs}` : "";
844
+ }
845
+ var BundlesApi = class extends BaseApiClient {
846
+ /** Official solution metadata, independent of the default workspace Library. */
847
+ async getSolutionRelease(slug) {
848
+ return this.fetch(`solutions/${encodeURIComponent(slug)}`);
849
+ }
850
+ /** Read an authorized Bundle by UUID, including official solutions hidden from discovery. */
851
+ async getBundle(wid, bundleUuid) {
852
+ return this.fetch(bundlesPath(wid, bundleUuid));
853
+ }
854
+ async updateBundle(wid, bundleUuid, data) {
855
+ return this.fetch(
856
+ `w/${encodeURIComponent(wid)}/bundles/${encodeURIComponent(bundleUuid)}`,
857
+ {
858
+ method: "PATCH",
859
+ body: JSON.stringify(data)
860
+ }
861
+ );
862
+ }
863
+ async listBundleInstallations(wid, bundleUuid) {
864
+ return this.fetch(
865
+ `w/${encodeURIComponent(wid)}/bundles/${encodeURIComponent(bundleUuid)}/installations`
866
+ );
867
+ }
868
+ /**
869
+ * Bundles visible to this workspace through ownership, a live grant, or
870
+ * an administrator of the owning organization.
871
+ */
872
+ async listBundles(wid, params) {
873
+ return this.fetch(`${bundlesPath(wid)}${pageQuery(params)}`);
874
+ }
875
+ /**
876
+ * This workspace's Workflows for the Bundle picker. `eligible` pins
877
+ * `revisionUuid` (the active revision when published, else the newest
878
+ * published one); `unpublished` has nothing to pin. `dependenciesChecked` is
879
+ * false until a Bundle add has stored the revision's dependencies; that add
880
+ * surfaces any refusal as a 409 `workflow_not_shareable`. Requires
881
+ * `workflows:admin`.
882
+ */
883
+ async listBundleWorkflowCandidates(wid) {
884
+ return this.fetch(bundlesPath(wid, "workflow-candidates"));
885
+ }
886
+ /** Create an empty Bundle owned by this workspace. */
887
+ async createBundle(wid, data) {
888
+ return this.fetch(bundlesPath(wid), {
889
+ method: "POST",
890
+ body: JSON.stringify(data)
891
+ });
892
+ }
893
+ /**
894
+ * The unpublished draft for the owning workspace. A grantee is refused with
895
+ * 404: `version_detail` checks
896
+ * `root.workspace_uuid != viewer.workspace_uuid` for the null version
897
+ * (`lib/db/resources/bundles.py`), after the grantee-inclusive predicate has
898
+ * already admitted them to the Bundle itself.
899
+ *
900
+ * After publication, the next draft contains a copy of the published items.
901
+ * The owner receives it with 200; a grantee receives 404.
902
+ */
903
+ async getBundleDraft(wid, bundleUuid) {
904
+ return this.fetch(bundlesPath(wid, bundleUuid, "draft"));
905
+ }
906
+ /** Replace the whole draft item list. 409 when `expectedGeneration` is stale. */
907
+ async replaceBundleDraft(wid, bundleUuid, data) {
908
+ return this.fetch(bundlesPath(wid, bundleUuid, "draft"), {
909
+ method: "PUT",
910
+ body: JSON.stringify(data)
911
+ });
912
+ }
913
+ /** Cut a new immutable version from the draft. 409 when `expectedGeneration` is stale. */
914
+ async publishBundle(wid, bundleUuid, data) {
915
+ return this.fetch(bundlesPath(wid, bundleUuid, "publish"), {
916
+ method: "POST",
917
+ body: JSON.stringify(data)
918
+ });
919
+ }
920
+ /** Published versions, newest first. */
921
+ async listBundleVersions(wid, bundleUuid, params) {
922
+ return this.fetch(
923
+ `${bundlesPath(wid, bundleUuid, "versions")}${pageQuery(params)}`
924
+ );
925
+ }
926
+ /** One published version, with its items, declared settings and open slots. */
927
+ async getBundleVersion(wid, bundleUuid, version) {
928
+ return this.fetch(bundlesPath(wid, bundleUuid, "versions", version));
929
+ }
930
+ /** Who this Bundle is currently granted to. */
931
+ async listBundleGrants(wid, bundleUuid) {
932
+ return this.fetch(bundlesPath(wid, bundleUuid, "grants"));
933
+ }
934
+ /**
935
+ * Share throughout the publisher's organization with organization-admin authority.
936
+ * Workspace-specific and global author grants are refused. Official public
937
+ * solutions use the separate staff approval API.
938
+ */
939
+ async grantBundle(wid, bundleUuid, data) {
940
+ return this.fetch(bundlesPath(wid, bundleUuid, "grants"), {
941
+ method: "POST",
942
+ body: JSON.stringify(data)
943
+ });
944
+ }
945
+ /** Revoke one grant by id. */
946
+ async revokeBundleGrant(wid, bundleUuid, grantId) {
947
+ return this.fetch(bundlesPath(wid, bundleUuid, "grants", grantId), {
948
+ method: "DELETE"
949
+ });
950
+ }
951
+ };
952
+
953
+ // src/api/installations.ts
954
+ function installationsPath(wid, ...segments) {
955
+ const tail = segments.map((segment) => encodeURIComponent(String(segment))).join("/");
956
+ const base = `w/${encodeURIComponent(wid)}/installations`;
957
+ return tail ? `${base}/${tail}` : base;
958
+ }
959
+ var InstallationsApi = class extends BaseApiClient {
960
+ /** Inspect one published release and its selected example dependencies. */
961
+ async preflightBundleInstallation(wid, bundleUuid, data) {
962
+ return this.fetch(
963
+ `w/${encodeURIComponent(wid)}/bundles/${encodeURIComponent(bundleUuid)}/installation-preflight`,
964
+ { method: "POST", body: JSON.stringify(data) }
965
+ );
966
+ }
967
+ /**
968
+ * Install a published Bundle version into this workspace.
969
+ *
970
+ * A key in `bindings` that this version has no slot or Form item for is
971
+ * refused; a **missing** required slot is not.
972
+ */
973
+ async installBundle(wid, bundleUuid, data) {
974
+ return this.fetch(
975
+ `w/${encodeURIComponent(wid)}/bundles/${encodeURIComponent(bundleUuid)}/installations`,
976
+ { method: "POST", body: JSON.stringify(data) }
977
+ );
978
+ }
979
+ /** Every installation this workspace holds, oldest first. */
980
+ async listInstallations(wid) {
981
+ return this.fetch(installationsPath(wid));
982
+ }
983
+ async getInstallation(wid, installationUuid) {
984
+ return this.fetch(installationsPath(wid, installationUuid));
985
+ }
986
+ /**
987
+ * Open slots, bindings whose target no longer resolves, Forms that drifted
988
+ * from their recipe, missing or changed Workflow dependencies, and archived
989
+ * items. Computed on read, never stored.
990
+ */
991
+ async getInstallationReadiness(wid, installationUuid) {
992
+ return this.fetch(
993
+ installationsPath(wid, installationUuid, "readiness")
994
+ );
995
+ }
996
+ /**
997
+ * What moving to version `to` would change: per-item differences, the slots
998
+ * that would still be unbound, and the release notes of every version in
999
+ * between. `to` must be newer than the version the installation holds.
1000
+ */
1001
+ async previewInstallationUpgrade(wid, installationUuid, to) {
1002
+ const query = new URLSearchParams({ to: String(to) });
1003
+ return this.fetch(
1004
+ `${installationsPath(wid, installationUuid, "upgrade-preview")}?${query.toString()}`
1005
+ );
1006
+ }
1007
+ /**
1008
+ * Move the installation onto a newer published version. The version it
1009
+ * already holds, and any earlier one, are refused with 409.
1010
+ */
1011
+ async upgradeInstallation(wid, installationUuid, data) {
1012
+ return this.fetch(installationsPath(wid, installationUuid, "upgrade"), {
1013
+ method: "POST",
1014
+ body: JSON.stringify(data)
1015
+ });
1016
+ }
1017
+ /** Recreate one deleted Form from the version already installed. */
1018
+ async restoreInstallationForm(wid, installationUuid, data) {
1019
+ return this.fetch(
1020
+ installationsPath(wid, installationUuid, "restore-form"),
1021
+ {
1022
+ method: "POST",
1023
+ body: JSON.stringify(data)
1024
+ }
1025
+ );
1026
+ }
1027
+ /** Recreate missing dependency resources for an installed Workflow. */
1028
+ async restoreInstallationWorkflowResources(wid, installationUuid, data) {
1029
+ return this.fetch(
1030
+ installationsPath(wid, installationUuid, "restore-workflow-resources"),
1031
+ { method: "POST", body: JSON.stringify(data) }
1032
+ );
1033
+ }
1034
+ /** `pinned` holds the installed version; `auto` follows each publication. */
1035
+ async setInstallationPolicy(wid, installationUuid, data) {
1036
+ return this.fetch(installationsPath(wid, installationUuid), {
1037
+ method: "PATCH",
1038
+ body: JSON.stringify(data)
1039
+ });
1040
+ }
1041
+ /** Stop future Bundle updates while keeping the workspace's installed content. */
1042
+ async unsubscribeInstallation(wid, installationUuid) {
1043
+ return this.fetch(
1044
+ installationsPath(wid, installationUuid, "unsubscribe"),
1045
+ { method: "POST", body: JSON.stringify({}) }
1046
+ );
1047
+ }
1048
+ /** Fill open slots. A slot that already carries a target is refused with 409. */
1049
+ async bindInstallationSlots(wid, installationUuid, data) {
1050
+ return this.fetch(
1051
+ installationsPath(wid, installationUuid, "bindings"),
1052
+ { method: "POST", body: JSON.stringify(data) }
1053
+ );
1054
+ }
1055
+ /**
1056
+ * Settle an installation left `pending` by an interrupted operation.
1057
+ *
1058
+ * The body is empty and required: a bodyless cookie-auth POST is forgeable
1059
+ * by a cross-site form, so the route demands JSON.
1060
+ */
1061
+ async reconcileInstallation(wid, installationUuid) {
1062
+ return this.fetch(
1063
+ installationsPath(wid, installationUuid, "reconcile"),
1064
+ { method: "POST", body: JSON.stringify({}) }
1065
+ );
1066
+ }
1067
+ /**
1068
+ * The settings a compiled theme declares, for labelling a Site item's slots
1069
+ * before any Site exists. 404 for an unknown slug and for `source-site`,
1070
+ * whose schema is a per-workspace build artifact rather than a catalog one.
1071
+ * Requires `sites:read`; no Bundle installation authority is needed.
1072
+ */
1073
+ async getThemeSettingsSchema(wid, slug) {
1074
+ return this.fetch(
1075
+ `w/${encodeURIComponent(wid)}/themes/${encodeURIComponent(slug)}/settings-schema`
1076
+ );
1077
+ }
1078
+ };
1079
+
788
1080
  // src/api/access-grants.ts
789
1081
  var AccessGrantsApi = class extends BaseApiClient {
790
1082
  /** List access grants received by the current member. */
@@ -917,7 +1209,6 @@ var AgentsApi = class extends BaseApiClient {
917
1209
  if (options.search) params.append("search", options.search);
918
1210
  if (options.includeArchived)
919
1211
  params.append("includeArchived", options.includeArchived.toString());
920
- if (options.owner) params.append("owner", options.owner);
921
1212
  return this.fetch(
922
1213
  `w/${wid}/agents${params.toString() ? `?${params.toString()}` : ""}`
923
1214
  );
@@ -973,6 +1264,18 @@ var AIModelsApi = class extends BaseApiClient {
973
1264
  const url = queryString ? `ai-models/chat?${queryString}` : "ai-models/chat";
974
1265
  return this.fetch(url);
975
1266
  }
1267
+ /**
1268
+ * Get the models a member may pick for the Workspace Manager, in display
1269
+ * order. Only models this deployment can serve are listed.
1270
+ *
1271
+ * `tokenMultiplier` is each model's input + output price per token relative
1272
+ * to `baselineModelId`; `defaultModelId` is what the Manager runs with no
1273
+ * pick. Send a pick on a Manager chat as `AppContext.managerModel` /
1274
+ * `managerReasoningEffort`.
1275
+ */
1276
+ async getManagerModels() {
1277
+ return this.fetch("ai-models/manager");
1278
+ }
976
1279
  /**
977
1280
  * Get available realtime AI models
978
1281
  */
@@ -1424,6 +1727,19 @@ var AuthApi = class extends BaseApiClient {
1424
1727
  body: JSON.stringify(request)
1425
1728
  });
1426
1729
  }
1730
+ /**
1731
+ * Mint a single-use, account-bound realtime login token (`gr_wst_`) with
1732
+ * this client's credential. Call once per realtime connect attempt; the
1733
+ * token is spent on first use and expires in seconds. Only the full browser
1734
+ * session may mint one — an API key is refused.
1735
+ */
1736
+ async createRealtimeLoginToken() {
1737
+ return this.fetch("auth/realtime/ws-token", {
1738
+ method: "POST",
1739
+ // The route requires a JSON body (its CSRF barrier); it reads nothing from it.
1740
+ body: JSON.stringify({})
1741
+ });
1742
+ }
1427
1743
  /** Get the organization and workspace mapping for a custom domain. */
1428
1744
  async getDomainMapping(customDomain) {
1429
1745
  return this.fetch(`s/mapping/${customDomain}`);
@@ -2083,6 +2399,26 @@ var ChatsApi = class extends BaseApiClient {
2083
2399
  async getChat(wid, id) {
2084
2400
  return this.fetch(`w/${wid}/chats/${id}`);
2085
2401
  }
2402
+ /**
2403
+ * Get a single chat by UUID.
2404
+ *
2405
+ * The uuid-addressed twin of `getChat`: same access check (own chat,
2406
+ * otherwise `chats:read`), same body; a chat the caller may not read is a
2407
+ * 404. Activity events and org webhooks name a chat by `uuid` only.
2408
+ */
2409
+ async getChatByUuid(wid, uuid) {
2410
+ return this.fetch(`w/${wid}/chats/by-uuid/${uuid}`);
2411
+ }
2412
+ async saveChatBrowserStorage(wid, chatId) {
2413
+ await this.fetchRaw(`w/${wid}/chats/${chatId}/browser/storage/save`, {
2414
+ method: "POST",
2415
+ keepalive: true,
2416
+ body: JSON.stringify({})
2417
+ });
2418
+ }
2419
+ async clearChatBrowserStorage(wid, chatId) {
2420
+ await this.fetchRaw(`w/${wid}/chats/${chatId}/browser/storage`, { method: "DELETE" });
2421
+ }
2086
2422
  /**
2087
2423
  * Get a short-lived, interactive AgentCore browser view for this Chat.
2088
2424
  *
@@ -2689,10 +3025,18 @@ var DashboardsApi = class extends BaseApiClient {
2689
3025
  `w/${wid}/dashboards/stats/channels${query ? `?${query}` : ""}`
2690
3026
  );
2691
3027
  }
2692
- /** Assignment status rollup per root workflow. */
2693
- async getDashboardWorkflowAssignmentStats(wid) {
3028
+ /**
3029
+ * Assignment status rollup per root workflow.
3030
+ *
3031
+ * `hours` windows the rollup to runs STARTED within the last N hours.
3032
+ * Omit it (or pass null) for the all-time rollup.
3033
+ */
3034
+ async getDashboardWorkflowAssignmentStats(wid, options) {
3035
+ const params = new URLSearchParams();
3036
+ if (options?.hours != null) params.append("hours", options.hours.toString());
3037
+ const query = params.toString();
2694
3038
  return this.fetch(
2695
- `w/${wid}/dashboards/stats/workflow-assignments`
3039
+ `w/${wid}/dashboards/stats/workflow-assignments${query ? `?${query}` : ""}`
2696
3040
  );
2697
3041
  }
2698
3042
  /**
@@ -2834,6 +3178,26 @@ var DataTypesApi = class extends BaseApiClient {
2834
3178
  `w/${wid}/data-types/${dataTypeId}/records${params?.toString() ? `?${params.toString()}` : ""}`
2835
3179
  );
2836
3180
  }
3181
+ /**
3182
+ * List an anonymous Form's submissions, newest first. Requires
3183
+ * `anonymous_submissions:read`. Submissions are immutable: there is no
3184
+ * update or delete method.
3185
+ */
3186
+ async listAnonymousFormSubmissions(wid, dataTypeId, options) {
3187
+ const params = new URLSearchParams();
3188
+ if (options?.page) params.append("page", options.page.toString());
3189
+ if (options?.pageSize) params.append("page_size", options.pageSize.toString());
3190
+ const qs = params.toString();
3191
+ return this.fetch(
3192
+ `w/${wid}/data-types/${dataTypeId}/anonymous-submissions${qs ? `?${qs}` : ""}`
3193
+ );
3194
+ }
3195
+ /** Get one anonymous Form submission by its uuid. Requires `anonymous_submissions:read`. */
3196
+ async getAnonymousFormSubmission(wid, dataTypeId, submissionUuid) {
3197
+ return this.fetch(
3198
+ `w/${wid}/data-types/${dataTypeId}/anonymous-submissions/${encodeURIComponent(submissionUuid)}`
3199
+ );
3200
+ }
2837
3201
  // Data-record filter APIs (saved Query IR predicates per form)
2838
3202
  /** List saved data-record filters, optionally scoped to one DataType. */
2839
3203
  async getDataRecordFilters(wid, options) {
@@ -2876,6 +3240,15 @@ var DataTypesApi = class extends BaseApiClient {
2876
3240
  async getDataRecord(wid, recordId) {
2877
3241
  return this.fetch(`w/${wid}/data-types/records/${recordId}`);
2878
3242
  }
3243
+ /**
3244
+ * Get a single data record by UUID.
3245
+ *
3246
+ * The uuid-addressed twin of `getDataRecord`: same access check, same body.
3247
+ * Activity events and org webhooks name a record by `uuid` only.
3248
+ */
3249
+ async getDataRecordByUuid(wid, uuid) {
3250
+ return this.fetch(`w/${wid}/data-types/records/by-uuid/${uuid}`);
3251
+ }
2879
3252
  /** Create a new data record under the specified data type. */
2880
3253
  async createDataRecord(wid, dataTypeId, record) {
2881
3254
  return this.fetch(`w/${wid}/data-types/${dataTypeId}/records`, {
@@ -3420,20 +3793,6 @@ var EventsApi = class extends BaseApiClient {
3420
3793
  body: JSON.stringify(request)
3421
3794
  });
3422
3795
  }
3423
- /**
3424
- * Preview which target-audience roles lack Workflow USE for the Workflows a
3425
- * draft Routine would start. Non-persisting, non-blocking authoring assist —
3426
- * returns warnings only (role/Workflow names + IDs; no Member data).
3427
- */
3428
- async previewRoutineWorkflowAccess(wid, request) {
3429
- return this.fetch(
3430
- `w/${wid}/routines/preview-workflow-access`,
3431
- {
3432
- method: "POST",
3433
- body: JSON.stringify(request)
3434
- }
3435
- );
3436
- }
3437
3796
  /**
3438
3797
  * Preview what would stop a draft Routine placing its scheduled outbound
3439
3798
  * calls — the Member voice opt-out, a missing member phone, or a
@@ -4139,6 +4498,19 @@ var FilesApi = class extends BaseApiClient {
4139
4498
  if (folderId != null) params.append("folderId", String(folderId));
4140
4499
  return this.fetch(`w/${wid}/files/resolve-path?${params.toString()}`);
4141
4500
  }
4501
+ /**
4502
+ * Download one file's bytes via GET ``.../files/{id}/contents/{filename}``.
4503
+ *
4504
+ * Uses this client's base URL (FastAPI on the app, same-origin ``/api/v2``
4505
+ * on scoped site sessions) so the payload does not transit the Next.js
4506
+ * ``/api/w/.../files/...`` Lambda proxy, which 500s above the 6MB sync cap.
4507
+ */
4508
+ async downloadFileContents(wid, id, filename) {
4509
+ const response = await this.fetchRaw(
4510
+ `w/${wid}/files/${id}/contents/${encodeURIComponent(filename)}`
4511
+ );
4512
+ return response.blob();
4513
+ }
4142
4514
  /**
4143
4515
  * Download the given files + folders (folders recursively) as a single ZIP.
4144
4516
  * Returns the raw archive bytes for the caller to save.
@@ -4890,7 +5262,21 @@ function throwMemberImportError(errorBody, fallback) {
4890
5262
  }
4891
5263
  throw new Error(typeof detail === "string" ? detail : fallback);
4892
5264
  }
5265
+ function memberImportUpload(file, roleId, options) {
5266
+ const body = new FormData();
5267
+ const filename = "name" in file && typeof file.name === "string" ? file.name : "members.csv";
5268
+ body.append("file", file, filename);
5269
+ if (options?.resolutions !== void 0) {
5270
+ body.append("resolutions", JSON.stringify(options.resolutions));
5271
+ }
5272
+ const params = new URLSearchParams({ new_member_role_id: String(roleId) });
5273
+ if (options?.autoPromoteUniqueContacts !== void 0) {
5274
+ params.set("auto_promote_unique_contacts", String(options.autoPromoteUniqueContacts));
5275
+ }
5276
+ return { body, params };
5277
+ }
4893
5278
  var MembersApi = class extends BaseApiClient {
5279
+ memberImportPlans = /* @__PURE__ */ new WeakMap();
4894
5280
  /** Get the currently authenticated member for a workspace. */
4895
5281
  async getCurrentMember(wid) {
4896
5282
  return this.fetch(`w/${wid}/me`);
@@ -4943,33 +5329,6 @@ var MembersApi = class extends BaseApiClient {
4943
5329
  `w/${wid}/me/records?${params.toString()}`
4944
5330
  );
4945
5331
  }
4946
- /**
4947
- * Get all members owned by the current member in this workspace.
4948
- * Returns the authenticated member plus any members they own (via owner_id).
4949
- * Used by the member switcher to show available identities.
4950
- */
4951
- async getOwnedMembers(wid) {
4952
- return this.fetch(`w/${wid}/members/owned`);
4953
- }
4954
- /**
4955
- * Switch to a different member identity owned by the current member.
4956
- * Sets the actingAsMemberUuid cookie for subsequent requests.
4957
- * Uses UUID (not ID) to prevent cross-workspace identity confusion.
4958
- */
4959
- async switchMember(wid, memberUuid) {
4960
- return this.fetch(`w/${wid}/members/switch`, {
4961
- method: "POST",
4962
- body: JSON.stringify({ memberUuid })
4963
- });
4964
- }
4965
- /**
4966
- * Clear the member switch and return to the authenticated member.
4967
- */
4968
- async clearMemberSwitch(wid) {
4969
- return this.fetch(`w/${wid}/members/switch`, {
4970
- method: "DELETE"
4971
- });
4972
- }
4973
5332
  /** Update the currently authenticated member's profile. */
4974
5333
  async updateCurrentMember(wid, member) {
4975
5334
  return this.fetch(`w/${wid}/me`, {
@@ -5009,6 +5368,16 @@ var MembersApi = class extends BaseApiClient {
5009
5368
  async getWorkspaceMember(wid, memberId) {
5010
5369
  return this.fetch(`w/${wid}/members/${memberId}`);
5011
5370
  }
5371
+ /**
5372
+ * Get a single workspace member by UUID.
5373
+ *
5374
+ * The uuid-addressed twin of `getWorkspaceMember`: same access check (self,
5375
+ * otherwise `members:read`), same body. Activity events and org webhooks
5376
+ * name a member by `uuid` only.
5377
+ */
5378
+ async getMemberByUuid(wid, uuid) {
5379
+ return this.fetch(`w/${wid}/members/by-uuid/${uuid}`);
5380
+ }
5012
5381
  /**
5013
5382
  * Get one member of an org's workspace, under `org:read`.
5014
5383
  *
@@ -5060,6 +5429,53 @@ var MembersApi = class extends BaseApiClient {
5060
5429
  method: "POST"
5061
5430
  });
5062
5431
  }
5432
+ /**
5433
+ * Update a workspace member addressed by its external id.
5434
+ *
5435
+ * The external-id twin of `updateMember`: for an integrator that keys on its
5436
+ * own `externalId` and never stores our numeric member id. Same authorization
5437
+ * (`members:write`) and same body as `updateMember`.
5438
+ */
5439
+ async updateMemberByExternalId(wid, externalId, data) {
5440
+ return this.fetch(
5441
+ `w/${wid}/members/by-external-id/${encodeURIComponent(externalId)}`,
5442
+ {
5443
+ method: "PUT",
5444
+ body: JSON.stringify(data)
5445
+ }
5446
+ );
5447
+ }
5448
+ /**
5449
+ * Archive a workspace member addressed by its external id.
5450
+ *
5451
+ * The external-id twin of `archiveMember`; same authorization
5452
+ * (`members:write` + `members:admin`) and same body.
5453
+ */
5454
+ async archiveMemberByExternalId(wid, externalId) {
5455
+ return this.fetch(
5456
+ `w/${wid}/members/by-external-id/${encodeURIComponent(externalId)}/archive`,
5457
+ {
5458
+ method: "POST",
5459
+ // Required empty JSON body is the route's CSRF barrier (GRA-6284).
5460
+ body: JSON.stringify({})
5461
+ }
5462
+ );
5463
+ }
5464
+ /**
5465
+ * Unarchive a workspace member addressed by its external id.
5466
+ *
5467
+ * The external-id twin of `unarchiveMember`; same authorization and body.
5468
+ */
5469
+ async unarchiveMemberByExternalId(wid, externalId) {
5470
+ return this.fetch(
5471
+ `w/${wid}/members/by-external-id/${encodeURIComponent(externalId)}/unarchive`,
5472
+ {
5473
+ method: "POST",
5474
+ // Required empty JSON body is the route's CSRF barrier (GRA-6284).
5475
+ body: JSON.stringify({})
5476
+ }
5477
+ );
5478
+ }
5063
5479
  /**
5064
5480
  * Send the member an SMS asking them to confirm their phone number. When they
5065
5481
  * reply, a trusted phone auth binding is created so they can use SMS as
@@ -5201,16 +5617,13 @@ var MembersApi = class extends BaseApiClient {
5201
5617
  * operator can decide whether to skip or explicitly overwrite before
5202
5618
  * committing. Requires MEMBERS_ADMIN and is bulk-PHI audited server-side.
5203
5619
  */
5204
- async previewImportMembers(wid, file, newMemberRoleId) {
5205
- const formData = new FormData();
5206
- formData.append("file", file);
5207
- const params = new URLSearchParams();
5208
- params.append("new_member_role_id", newMemberRoleId.toString());
5620
+ async previewImportMembers(wid, file, newMemberRoleId, options) {
5621
+ const { body, params } = memberImportUpload(file, newMemberRoleId, options);
5209
5622
  const response = await this.fetchRaw(
5210
5623
  `w/${wid}/members/import/preview?${params.toString()}`,
5211
5624
  {
5212
5625
  method: "POST",
5213
- body: formData
5626
+ body
5214
5627
  },
5215
5628
  [400, 413]
5216
5629
  );
@@ -5218,7 +5631,19 @@ var MembersApi = class extends BaseApiClient {
5218
5631
  const error = await response.json().catch(() => ({}));
5219
5632
  throwMemberImportError(error, "Import preview failed");
5220
5633
  }
5221
- return response.json();
5634
+ const preview = await response.json();
5635
+ if (preview.previewPlanToken) {
5636
+ this.memberImportPlans.set(file, {
5637
+ wid,
5638
+ role: newMemberRoleId,
5639
+ autoPromote: options?.autoPromoteUniqueContacts ?? true,
5640
+ token: preview.previewPlanToken,
5641
+ cachedAt: Date.now()
5642
+ });
5643
+ } else {
5644
+ this.memberImportPlans.delete(file);
5645
+ }
5646
+ return preview;
5222
5647
  }
5223
5648
  /**
5224
5649
  * Import members from a CSV file, streaming progress updates via callback.
@@ -5228,10 +5653,11 @@ var MembersApi = class extends BaseApiClient {
5228
5653
  * Send 'overwrite_identity_fields' only after the operator confirms a preview.
5229
5654
  */
5230
5655
  async importMembers(wid, file, newMemberRoleId, onProgress, options) {
5231
- const formData = new FormData();
5232
- formData.append("file", file);
5233
- const params = new URLSearchParams();
5234
- params.append("new_member_role_id", newMemberRoleId.toString());
5656
+ const { body, params } = memberImportUpload(file, newMemberRoleId, options);
5657
+ const cachedPlan = this.memberImportPlans.get(file);
5658
+ const autoPromote = options?.autoPromoteUniqueContacts ?? true;
5659
+ const previewPlanToken = options?.previewPlanToken ?? (cachedPlan?.wid === wid && cachedPlan.role === newMemberRoleId && cachedPlan.autoPromote === autoPromote && Date.now() - cachedPlan.cachedAt < 55 * 60 * 1e3 ? cachedPlan.token : (await this.previewImportMembers(wid, file, newMemberRoleId, options)).previewPlanToken);
5660
+ if (previewPlanToken) body.append("previewPlanToken", previewPlanToken);
5235
5661
  if (options?.identityConflictPolicy) {
5236
5662
  params.append("identity_conflict_policy", options.identityConflictPolicy);
5237
5663
  }
@@ -5239,7 +5665,7 @@ var MembersApi = class extends BaseApiClient {
5239
5665
  `w/${wid}/members/import?${params.toString()}`,
5240
5666
  {
5241
5667
  method: "POST",
5242
- body: formData
5668
+ body
5243
5669
  },
5244
5670
  [400, 413]
5245
5671
  );
@@ -5247,34 +5673,48 @@ var MembersApi = class extends BaseApiClient {
5247
5673
  const error = await response.json().catch(() => ({}));
5248
5674
  throwMemberImportError(error, "Import failed");
5249
5675
  }
5250
- if (onProgress && response.body) {
5251
- const reader = response.body.getReader();
5252
- const decoder = new TextDecoder();
5253
- let buffer = "";
5676
+ if (!response.body) throw new Error("Member import response has no progress stream");
5677
+ const reader = response.body.getReader();
5678
+ const decoder = new TextDecoder();
5679
+ let buffer = "";
5680
+ let result;
5681
+ let hadError = false;
5682
+ const consume = (line) => {
5683
+ if (!line.trim()) return;
5684
+ let event;
5685
+ try {
5686
+ event = JSON.parse(line);
5687
+ } catch {
5688
+ throw new Error("Invalid member import progress event");
5689
+ }
5690
+ if (event.type === "complete") result = event;
5691
+ if (event.type === "error") hadError = true;
5692
+ onProgress?.(event);
5693
+ };
5694
+ try {
5254
5695
  while (true) {
5255
5696
  const { done, value } = await reader.read();
5256
5697
  if (done) break;
5257
5698
  buffer += decoder.decode(value, { stream: true });
5258
5699
  const lines = buffer.split("\n");
5259
5700
  buffer = lines.pop() ?? "";
5260
- for (const line of lines) {
5261
- const trimmed = line.trim();
5262
- if (!trimmed) continue;
5263
- try {
5264
- onProgress(JSON.parse(trimmed));
5265
- } catch {
5266
- }
5267
- }
5268
- }
5269
- const tail = buffer.trim();
5270
- if (tail) {
5271
- try {
5272
- onProgress(JSON.parse(tail));
5273
- } catch {
5274
- }
5701
+ for (const line of lines) consume(line);
5275
5702
  }
5703
+ buffer += decoder.decode();
5704
+ consume(buffer);
5705
+ } catch (error) {
5706
+ await reader.cancel().catch(() => void 0);
5707
+ throw error;
5708
+ } finally {
5709
+ reader.releaseLock();
5710
+ }
5711
+ if (!result) {
5712
+ throw new Error("Member import ended before completion; inspect members before retrying");
5276
5713
  }
5277
- return { success: true };
5714
+ return {
5715
+ success: !hadError && (result.failed ?? 0) === 0 && (result.conflicted ?? 0) === 0,
5716
+ result
5717
+ };
5278
5718
  }
5279
5719
  /** Export members as a downloadable file with selected fields and data types. */
5280
5720
  async exportMembers(wid, selectedFields, selectedDataTypes, memberType) {
@@ -5502,6 +5942,18 @@ var MembersApi = class extends BaseApiClient {
5502
5942
  { method: "DELETE" }
5503
5943
  );
5504
5944
  }
5945
+ async listContactPermissions(wid, params) {
5946
+ return this.fetch(`w/${wid}/contact-permissions/history`, {
5947
+ method: "POST",
5948
+ body: JSON.stringify(params)
5949
+ });
5950
+ }
5951
+ async createContactPermission(wid, body) {
5952
+ return this.fetch(`w/${wid}/contact-permissions`, {
5953
+ method: "POST",
5954
+ body: JSON.stringify(body)
5955
+ });
5956
+ }
5505
5957
  };
5506
5958
 
5507
5959
  // src/api/activity.ts
@@ -5918,6 +6370,21 @@ var MondayIntegrationApi = class extends BaseApiClient {
5918
6370
  method: "POST"
5919
6371
  });
5920
6372
  }
6373
+ /**
6374
+ * Managed-rule execution history for this connection (`GET /sync/logs`):
6375
+ * the connection's managed EventRule executions, newest first, with the
6376
+ * shared cursor pagination. Requires `apps:read`; works while the
6377
+ * connection is parked for re-authorization.
6378
+ */
6379
+ async getMondaySyncLogs(wid, params) {
6380
+ const query = new URLSearchParams();
6381
+ if (params?.pageSize) query.set("pageSize", String(params.pageSize));
6382
+ if (params?.cursor) query.set("cursor", params.cursor);
6383
+ const qs = query.toString() ? `?${query.toString()}` : "";
6384
+ return this.fetch(
6385
+ `w/${wid}/app-connections/monday/sync/logs${qs}`
6386
+ );
6387
+ }
5921
6388
  };
5922
6389
 
5923
6390
  // src/api/intervention-requests.ts
@@ -6075,6 +6542,10 @@ var OrgApi = class extends BaseApiClient {
6075
6542
  async getCurrentOrgMember(orgIdOrUuid) {
6076
6543
  return this.fetch(`o/${orgIdOrUuid}/me`);
6077
6544
  }
6545
+ /** Bundles this organization owns — read-only catalog for `/o/{uuid}/library`. */
6546
+ async listOrgBundles(orgIdOrUuid) {
6547
+ return this.fetch(`o/${orgIdOrUuid}/bundles`);
6548
+ }
6078
6549
  /**
6079
6550
  * Update the settings an org admin owns: name, slug and contact details.
6080
6551
  *
@@ -6116,6 +6587,12 @@ var OrgApi = class extends BaseApiClient {
6116
6587
  * `subscriptionId` is the org-scoped row — never pick the customer's
6117
6588
  * newest subscription from the list endpoint. One customer can bill many
6118
6589
  * organizations.
6590
+ *
6591
+ * Returns the generated `OrgBillingCustomerResponse` — the contract the
6592
+ * route actually emits, `audiences` included. The hand-written mirror that
6593
+ * used to live here listed four fields and silently dropped `audiences`,
6594
+ * so callers could not see the commercial roles they hold (GRA-8792).
6595
+ * Regenerate the shape (`yarn generate:types`) rather than re-declaring it.
6119
6596
  */
6120
6597
  async getOrgBillingCustomer(orgIdOrUuid) {
6121
6598
  return this.fetch(`o/${orgIdOrUuid}/billing-customer`);
@@ -6152,7 +6629,10 @@ var OrgApi = class extends BaseApiClient {
6152
6629
  return this.fetch(`o/${orgUuid}/members/check/${accountUuid}`);
6153
6630
  }
6154
6631
  /**
6155
- * Update an organization member's role.
6632
+ * Update an organization member's role and/or org-level display name.
6633
+ *
6634
+ * `name` is the org's own label for the member (the OrgMember row and the
6635
+ * linked OrgAccount); it does not change the person's global Account name.
6156
6636
  */
6157
6637
  async updateOrganizationMember(orgIdOrUuid, memberId, data) {
6158
6638
  return this.fetch(`o/${orgIdOrUuid}/members/${memberId}`, {
@@ -6527,12 +7007,6 @@ var OrgApi = class extends BaseApiClient {
6527
7007
  // ============================================================================
6528
7008
  // Organization A2P Brand Registration API
6529
7009
  // ============================================================================
6530
- /**
6531
- * Get the org's A2P brand registration status.
6532
- */
6533
- async getA2PStatus(orgUuid) {
6534
- return this.fetch(`o/${orgUuid}/phone-numbers/a2p/status`);
6535
- }
6536
7010
  /** Return fixed phone-number and outbound-messaging prices. */
6537
7011
  async getPhoneBillingPricing(orgUuid) {
6538
7012
  return this.fetch(`o/${orgUuid}/phone-numbers/pricing`);
@@ -6541,11 +7015,30 @@ var OrgApi = class extends BaseApiClient {
6541
7015
  * Start A2P brand registration under a legal entity. `legalEntityUuid`
6542
7016
  * is required — brands register per legal entity (Customer Profile);
6543
7017
  * there is no primary-entity fallback.
7018
+ *
7019
+ * `soleProprietorMobile` is the proprietor's own mobile number, the one the
7020
+ * carrier sends the A2P one-time-password verification to. Required when the
7021
+ * entity's registration shape is a sole proprietorship (see
7022
+ * `LegalEntitySummaryResponse.requiredBrandType`); ignored otherwise.
7023
+ *
7024
+ * Three constraints belong to the customer, so the caller must state them:
7025
+ * it has to be a US or Canadian **mobile**, it cannot be a number acquired
7026
+ * from a CPaaS provider (so never one we provisioned — the carrier rejects
7027
+ * it), and the carrier allows it a lifetime maximum of three uses across all
7028
+ * A2P brand registrations, counting those made through other vendors.
7029
+ *
7030
+ * It is forwarded to the registration workflow to reach the carrier as an
7031
+ * EndUser attribute and is never stored on our side.
6544
7032
  */
6545
- async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandUuid = null) {
7033
+ async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandUuid = null, soleProprietorMobile = null) {
6546
7034
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/start`, {
6547
7035
  method: "POST",
6548
- body: JSON.stringify({ legalEntityUuid, brandName, brandUuid })
7036
+ body: JSON.stringify({
7037
+ legalEntityUuid,
7038
+ brandName,
7039
+ brandUuid,
7040
+ soleProprietorMobile
7041
+ })
6549
7042
  });
6550
7043
  }
6551
7044
  /**
@@ -6573,6 +7066,25 @@ var OrgApi = class extends BaseApiClient {
6573
7066
  }
6574
7067
  );
6575
7068
  }
7069
+ /**
7070
+ * Which legal entity's voice trust products (CNAM, SHAKEN/STIR, Voice
7071
+ * Integrity) each of the org's numbers carries, read live from Twilio.
7072
+ */
7073
+ async getPhoneVoiceTrust(orgUuid) {
7074
+ return this.fetch(`o/${orgUuid}/phone-numbers/voice-trust`);
7075
+ }
7076
+ /**
7077
+ * Put a number on a legal entity's Customer Profile and approved voice
7078
+ * trust products, taking it off any other legal entity's first. The
7079
+ * entity's business profile must be approved (400 otherwise).
7080
+ */
7081
+ async attachPhoneVoiceTrust(orgUuid, providerPhoneUuid, legalEntityUuid) {
7082
+ const body = { providerPhoneUuid, legalEntityUuid };
7083
+ return this.fetch(`o/${orgUuid}/phone-numbers/voice-trust/attach`, {
7084
+ method: "POST",
7085
+ body: JSON.stringify(body)
7086
+ });
7087
+ }
6576
7088
  // ============================================================================
6577
7089
  // Organization Business Profile API (Twilio Trust Hub Secondary CP)
6578
7090
  // ============================================================================
@@ -6742,6 +7254,16 @@ var OrgApi = class extends BaseApiClient {
6742
7254
  }
6743
7255
  );
6744
7256
  }
7257
+ /**
7258
+ * Resubmit a campaign the carrier rejected, with the brand's current
7259
+ * campaign copy. Edits the campaign in place, so no second vetting fee.
7260
+ */
7261
+ async resubmitA2PCampaign(orgUuid, brandUuid) {
7262
+ return this.fetch(
7263
+ `o/${orgUuid}/a2p-brands/${brandUuid}/resubmit-campaign`,
7264
+ { method: "POST" }
7265
+ );
7266
+ }
6745
7267
  /**
6746
7268
  * Published Sites across the org's workspaces that can be linked as this
6747
7269
  * brand's enrollment (opt-in) surface. Org-authorized, so it works even when
@@ -6754,7 +7276,7 @@ var OrgApi = class extends BaseApiClient {
6754
7276
  }
6755
7277
  /**
6756
7278
  * Link the brand to a published enrollment Site (sets `site_uuid`). Returns
6757
- * the refreshed campaign config so the editor's link state updates inline.
7279
+ * the refreshed campaign config.
6758
7280
  */
6759
7281
  async linkA2PEnrollmentSite(orgUuid, brandUuid, data) {
6760
7282
  return this.fetch(
@@ -6767,9 +7289,9 @@ var OrgApi = class extends BaseApiClient {
6767
7289
  }
6768
7290
  /**
6769
7291
  * Provision (or reuse) a patient-enrollment Site for the brand and link it —
6770
- * the one-click path behind the SMS Consent tab. `workspaceUuid` is required
6771
- * only when the org has multiple workspaces. Returns the refreshed campaign
6772
- * config so the editor's link state updates inline. Idempotent.
7292
+ * the explicit counterpart to the automatic provisioning at brand
7293
+ * registration. `workspaceUuid` is required only when the org has multiple
7294
+ * workspaces. Returns the refreshed campaign config. Idempotent.
6773
7295
  */
6774
7296
  async provisionA2PEnrollmentSite(orgUuid, brandUuid, data = {}) {
6775
7297
  return this.fetch(
@@ -6788,34 +7310,42 @@ var OrgApi = class extends BaseApiClient {
6788
7310
  );
6789
7311
  }
6790
7312
  /**
6791
- * The brand's enrollment-form template URL (carries `?brand=…`, no
6792
- * credential). `url` is null until a Site is linked. Do not append a
6793
- * patient identifier to this URL — use {@link mintA2PBrandEnrollmentLink}
6794
- * to get a patient-ready link instead.
7313
+ * Stage one A2P opt-in evidence file: get a presigned POST to send the bytes
7314
+ * straight to storage. Nothing is recorded on the brand until
7315
+ * {@link registerA2PEvidenceUpload} reads the object back and normalizes it.
6795
7316
  */
6796
- async getA2PBrandEnrollmentUrl(orgUuid, brandUuid) {
7317
+ async createA2PEvidenceUploadUrl(orgUuid, brandUuid, data) {
6797
7318
  return this.fetch(
6798
- `o/${orgUuid}/a2p-brands/${brandUuid}/enrollment-url`
7319
+ `o/${orgUuid}/a2p-brands/${brandUuid}/evidence-attachments/upload-url`,
7320
+ {
7321
+ method: "POST",
7322
+ body: JSON.stringify(data)
7323
+ }
6799
7324
  );
6800
7325
  }
6801
7326
  /**
6802
- * Mint a patient-ready enrollment link for one patient.
6803
- *
6804
- * The returned URL carries a fresh, expiring, single-use `?grant=…` bound to
6805
- * the member that `externalId` resolves to. `externalId` (the patient's
6806
- * CRM/EHR identifier) travels in the request body, never the query string,
6807
- * so it stays out of access logs. When it matches no member, the
6808
- * credential-free template URL is returned rather than an error.
7327
+ * Normalize a staged evidence upload and record it on the brand. Returns the
7328
+ * refreshed campaign config, so the editor's evidence list updates without a
7329
+ * second round trip.
6809
7330
  */
6810
- async mintA2PBrandEnrollmentLink(orgUuid, brandUuid, externalId) {
7331
+ async registerA2PEvidenceUpload(orgUuid, brandUuid, data) {
6811
7332
  return this.fetch(
6812
- `o/${orgUuid}/a2p-brands/${brandUuid}/enrollment-url`,
7333
+ `o/${orgUuid}/a2p-brands/${brandUuid}/evidence-attachments`,
6813
7334
  {
6814
7335
  method: "POST",
6815
- body: JSON.stringify({ externalId })
7336
+ body: JSON.stringify(data)
6816
7337
  }
6817
7338
  );
6818
7339
  }
7340
+ /** Remove one uploaded evidence artifact. */
7341
+ async deleteA2PEvidenceUpload(orgUuid, brandUuid, attachmentUuid) {
7342
+ return this.fetch(
7343
+ `o/${orgUuid}/a2p-brands/${brandUuid}/evidence-attachments/${encodeURIComponent(
7344
+ attachmentUuid
7345
+ )}`,
7346
+ { method: "DELETE" }
7347
+ );
7348
+ }
6819
7349
  /**
6820
7350
  * List available member roles for a workspace in the organization.
6821
7351
  */
@@ -6840,6 +7370,9 @@ var OrgApi = class extends BaseApiClient {
6840
7370
  async listOrgWebhookEndpoints(orgIdOrUuid) {
6841
7371
  return this.fetch(`o/${orgIdOrUuid}/webhooks`);
6842
7372
  }
7373
+ async getOrgWebhookEndpoint(orgIdOrUuid, endpointUuid) {
7374
+ return this.fetch(`o/${orgIdOrUuid}/webhooks/${endpointUuid}`);
7375
+ }
6843
7376
  /**
6844
7377
  * The subscribable event-type vocabulary for the org UI's event-type
6845
7378
  * picker — exactly what the create/update validators accept, so the UI
@@ -6898,6 +7431,39 @@ var OrgApi = class extends BaseApiClient {
6898
7431
  }
6899
7432
  );
6900
7433
  }
7434
+ // =========================================================================
7435
+ // Organization API keys (GRA-9043)
7436
+ // =========================================================================
7437
+ /**
7438
+ * List every API key bound to this organization. Never carries the secret.
7439
+ *
7440
+ * Org-bound keys authenticate as an org-local principal, so one key reaches
7441
+ * every current workspace of the organization and every workspace created
7442
+ * later. Gated by `org:api_keys`, which `org:admin` holds transitively.
7443
+ */
7444
+ async listOrgApiKeys(orgIdOrUuid) {
7445
+ return this.fetch(`o/${orgIdOrUuid}/api-keys`);
7446
+ }
7447
+ /**
7448
+ * Mint an org-bound API key.
7449
+ *
7450
+ * The payload is the same client-only {@link ApiKeyFormData} the workspace
7451
+ * and account routes take — `{name, expiresInDays, scopes}`, no workspace
7452
+ * id: the mint location is what binds the key. The response carries `key`,
7453
+ * the plaintext secret, which is readable exactly once.
7454
+ */
7455
+ async createOrgApiKey(orgIdOrUuid, apiKey) {
7456
+ return this.fetch(`o/${orgIdOrUuid}/api-keys`, {
7457
+ method: "POST",
7458
+ body: JSON.stringify(apiKey)
7459
+ });
7460
+ }
7461
+ /** Revoke an org-bound API key by its id. */
7462
+ async revokeOrgApiKey(orgIdOrUuid, keyId) {
7463
+ return this.fetch(`o/${orgIdOrUuid}/api-keys/${keyId}`, {
7464
+ method: "DELETE"
7465
+ });
7466
+ }
6901
7467
  };
6902
7468
  function businessProfilePath(orgUuid, legalEntityUuid) {
6903
7469
  return legalEntityUuid ? `o/${orgUuid}/legal-entities/${legalEntityUuid}/business-profile` : `o/${orgUuid}/business-profile`;
@@ -7532,6 +8098,14 @@ var QualificationsApi = class extends BaseApiClient {
7532
8098
  });
7533
8099
  }
7534
8100
  // ===== Test chat runs =====
8101
+ /**
8102
+ * List a Workflow's test chat runs, newest first (default 50, max 500).
8103
+ *
8104
+ * `workflowRevisionId` narrows to that revision before the limit applies.
8105
+ * `includeEarlierRevisions` widens the window to earlier published
8106
+ * revisions and runs whose revision was deleted, and requires
8107
+ * `workflowRevisionId`. Omitting both keeps the unfiltered list.
8108
+ */
7535
8109
  async listTestChatRuns(wid, workflowId, params) {
7536
8110
  const query = new URLSearchParams();
7537
8111
  if (params?.scenarioId !== void 0) query.set("scenarioId", String(params.scenarioId));
@@ -7539,11 +8113,36 @@ var QualificationsApi = class extends BaseApiClient {
7539
8113
  query.set("assistantChatModelId", params.assistantChatModelId);
7540
8114
  }
7541
8115
  if (params?.limit !== void 0) query.set("limit", String(params.limit));
8116
+ if (params?.workflowRevisionId !== void 0) {
8117
+ query.set("workflow_revision_id", String(params.workflowRevisionId));
8118
+ }
8119
+ if (params?.includeEarlierRevisions !== void 0) {
8120
+ query.set("include_earlier_revisions", String(params.includeEarlierRevisions));
8121
+ }
7542
8122
  const qs = query.toString() ? `?${query.toString()}` : "";
7543
8123
  return this.fetch(
7544
8124
  `w/${wid}/qualifications/workflows/${workflowId}/test-chat-runs${qs}`
7545
8125
  );
7546
8126
  }
8127
+ /**
8128
+ * Exact scenario health for one revision of a Workflow: every active
8129
+ * scenario's server-decided state, caption, counts and per-revision pass
8130
+ * rates, plus the board headline. Scenarios arrive in board order.
8131
+ *
8132
+ * Omit `workflowRevisionId` for the server's current revision (the newest
8133
+ * with runs, the Draft counting as newest); the response names the
8134
+ * revision it describes and whether it is the current one.
8135
+ */
8136
+ async listScenarioHealthSummaries(wid, workflowId, params) {
8137
+ const query = new URLSearchParams();
8138
+ if (params?.workflowRevisionId !== void 0) {
8139
+ query.set("workflow_revision_id", String(params.workflowRevisionId));
8140
+ }
8141
+ const qs = query.toString() ? `?${query.toString()}` : "";
8142
+ return this.fetch(
8143
+ `w/${wid}/qualifications/workflows/${workflowId}/scenario-health-summaries${qs}`
8144
+ );
8145
+ }
7547
8146
  async getTestChatRun(wid, runId) {
7548
8147
  return this.fetch(`w/${wid}/qualifications/test-chat-runs/${runId}`);
7549
8148
  }
@@ -7639,6 +8238,96 @@ var ReportsApi = class extends BaseApiClient {
7639
8238
  }
7640
8239
  };
7641
8240
 
8241
+ // src/types/generated/communication.ts
8242
+ var RoutingActionType = {
8243
+ answer_ai: "answer_ai",
8244
+ answer_human: "answer_human",
8245
+ answer_owner: "answer_owner",
8246
+ voicemail: "voicemail",
8247
+ play_message: "play_message",
8248
+ ignore: "ignore",
8249
+ signup: "signup"
8250
+ };
8251
+ var RoutingAudience = {
8252
+ anyone: "anyone",
8253
+ anonymous: "anonymous",
8254
+ members: "members"
8255
+ };
8256
+ var RoutingChannel = {
8257
+ pstn: "pstn",
8258
+ messaging: "messaging",
8259
+ email: "email"
8260
+ };
8261
+ var RoutingTimeWindow = {
8262
+ always: "always",
8263
+ business_hours: "business_hours",
8264
+ non_business_hours: "non_business_hours",
8265
+ custom: "custom"
8266
+ };
8267
+
8268
+ // src/api/routing-rules.ts
8269
+ function appendFilters(params, filters) {
8270
+ if (!filters) return;
8271
+ if (filters.channel !== void 0) params.set("channel", filters.channel);
8272
+ if (filters.phoneNumberId !== void 0)
8273
+ params.set("phoneNumberId", String(filters.phoneNumberId));
8274
+ if (filters.inboxId !== void 0) params.set("inboxId", String(filters.inboxId));
8275
+ if (filters.page !== void 0) params.set("page", String(filters.page));
8276
+ if (filters.pageSize !== void 0) params.set("pageSize", String(filters.pageSize));
8277
+ }
8278
+ var RoutingRulesApi = class extends BaseApiClient {
8279
+ /** List one endpoint's rules. Requires the rule's endpoint read permission (`phones:read`, or `inboxes:read`). */
8280
+ async getRoutingRules(wid, filters) {
8281
+ const params = new URLSearchParams();
8282
+ appendFilters(params, filters);
8283
+ const query = params.toString();
8284
+ return this.fetch(
8285
+ `w/${wid}/routing${query ? `?${query}` : ""}`
8286
+ );
8287
+ }
8288
+ /** Read one rule. Requires the rule's endpoint read permission (`phones:read`, or `inboxes:read`). */
8289
+ async getRoutingRule(wid, ruleUuid) {
8290
+ return this.fetch(`w/${wid}/routing/${ruleUuid}`);
8291
+ }
8292
+ /** Create a rule. Requires the rule's endpoint write permission (`phones:write`, or `inboxes:write`). */
8293
+ async createRoutingRule(wid, data) {
8294
+ return this.fetch(`w/${wid}/routing`, {
8295
+ method: "POST",
8296
+ body: JSON.stringify(data)
8297
+ });
8298
+ }
8299
+ /** Update a rule. Requires the rule's endpoint write permission (`phones:write`, or `inboxes:write`). */
8300
+ async updateRoutingRule(wid, ruleUuid, data) {
8301
+ return this.fetch(`w/${wid}/routing/${ruleUuid}`, {
8302
+ method: "PATCH",
8303
+ body: JSON.stringify(data)
8304
+ });
8305
+ }
8306
+ /** Hard-delete a rule. Requires the rule's endpoint write permission (`phones:write`, or `inboxes:write`); the server audits deletion. */
8307
+ async deleteRoutingRule(wid, ruleUuid) {
8308
+ return this.fetch(`w/${wid}/routing/${ruleUuid}`, {
8309
+ method: "DELETE"
8310
+ });
8311
+ }
8312
+ /** Atomically reorder one endpoint/channel scope. Requires the rule's endpoint write permission (`phones:write`, or `inboxes:write`). */
8313
+ async reorderRoutingRules(wid, ruleUuids) {
8314
+ return this.fetch(`w/${wid}/routing/reorder`, {
8315
+ method: "POST",
8316
+ body: JSON.stringify({ ruleUuids })
8317
+ });
8318
+ }
8319
+ /**
8320
+ * Dry-run rule evaluation without placing or sending anything. Requires
8321
+ * the rule's endpoint read permission (`phones:read`, or `inboxes:read`); previewing a named Member also requires `members:read`.
8322
+ */
8323
+ async previewRoutingRule(wid, data) {
8324
+ return this.fetch(`w/${wid}/routing/preview`, {
8325
+ method: "POST",
8326
+ body: JSON.stringify(data)
8327
+ });
8328
+ }
8329
+ };
8330
+
7642
8331
  // src/api/salesforce.ts
7643
8332
  var SalesforceApi = class extends BaseApiClient {
7644
8333
  /**
@@ -7719,6 +8408,20 @@ var SalesforceApi = class extends BaseApiClient {
7719
8408
  body: JSON.stringify(data)
7720
8409
  });
7721
8410
  }
8411
+ /**
8412
+ * Start a durable run that links unlinked members by Salesforce Id / email
8413
+ * and hydrates them. One run per connection; a second start while one is
8414
+ * in flight is 409.
8415
+ */
8416
+ async linkUnlinkedSalesforceMembersByIdentity(wid) {
8417
+ return this.fetch(
8418
+ `w/${wid}/app-connections/salesforce/reconciliation/link-unlinked-by-identity`,
8419
+ {
8420
+ method: "POST",
8421
+ body: JSON.stringify({})
8422
+ }
8423
+ );
8424
+ }
7722
8425
  async unlinkMemberFromSalesforce(wid, memberId) {
7723
8426
  return this.fetch(`w/${wid}/app-connections/salesforce/reconciliation/unlink/${memberId}`, {
7724
8427
  method: "DELETE"
@@ -7800,6 +8503,21 @@ var SalesforceApi = class extends BaseApiClient {
7800
8503
  }
7801
8504
  );
7802
8505
  }
8506
+ /**
8507
+ * Managed-rule execution history for this connection (`GET /sync/logs`):
8508
+ * the connection's managed EventRule executions, newest first, with the
8509
+ * shared cursor pagination. Requires `apps:read`; works while the
8510
+ * connection is parked for re-authorization.
8511
+ */
8512
+ async getSalesforceSyncLogs(wid, params) {
8513
+ const query = new URLSearchParams();
8514
+ if (params?.pageSize) query.set("pageSize", String(params.pageSize));
8515
+ if (params?.cursor) query.set("cursor", params.cursor);
8516
+ const qs = query.toString() ? `?${query.toString()}` : "";
8517
+ return this.fetch(
8518
+ `w/${wid}/app-connections/salesforce/sync/logs${qs}`
8519
+ );
8520
+ }
7803
8521
  };
7804
8522
 
7805
8523
  // src/api/connection-sync.ts
@@ -7990,12 +8708,19 @@ var HubspotApi = class extends BaseApiClient {
7990
8708
  async getHubspotManagedRules(wid) {
7991
8709
  return this.fetch(`w/${wid}/app-connections/hubspot/managed-rules`);
7992
8710
  }
8711
+ /**
8712
+ * Managed-rule execution history for this connection (`GET /sync/logs`).
8713
+ * Rows are the shared rule-execution response (the same shape the Salesforce
8714
+ * and Monday twins return), with cursor pagination.
8715
+ */
7993
8716
  async getHubspotSyncLogs(wid, params) {
7994
8717
  const query = new URLSearchParams();
7995
8718
  if (params?.pageSize) query.set("pageSize", String(params.pageSize));
7996
8719
  if (params?.cursor) query.set("cursor", params.cursor);
7997
8720
  const qs = query.toString() ? `?${query.toString()}` : "";
7998
- return this.fetch(`w/${wid}/app-connections/hubspot/sync/logs${qs}`);
8721
+ return this.fetch(
8722
+ `w/${wid}/app-connections/hubspot/sync/logs${qs}`
8723
+ );
7999
8724
  }
8000
8725
  async getHubspotTransformPresets(wid) {
8001
8726
  return this.fetch(
@@ -8994,6 +9719,33 @@ var JourneysApi = class extends BaseApiClient {
8994
9719
  body: JSON.stringify(data)
8995
9720
  });
8996
9721
  }
9722
+ /**
9723
+ * Discard a saved editor draft, keeping the runnable definition.
9724
+ *
9725
+ * Body-less: a DELETE carries no document, only the resource to remove and
9726
+ * `expectedUpdatedAt` — the Journey's `updatedAt` as the caller loaded it —
9727
+ * proving they are removing the draft they were looking at. Encoded through
9728
+ * `URLSearchParams` because an ISO timestamp with a positive UTC offset
9729
+ * contains a `+`, which a raw template string would deliver to the server as
9730
+ * a space and turn into a revision conflict nobody can explain.
9731
+ *
9732
+ * Returns the AUTHORING projection (`Journey`) with `authoringDraft: null`
9733
+ * and the advanced `updatedAt`, so the caller can re-derive from the stored
9734
+ * definition without a second read.
9735
+ *
9736
+ * Refusals match the PUT's vocabulary: `journey_v2_definition_conflict`
9737
+ * (someone saved first — nothing was removed),
9738
+ * `journey_v2_structural_edit_not_allowed` (the Journey is live or archived)
9739
+ * and `journey_v2_execution_model_mismatch` (it is legacy). A Journey that
9740
+ * has no saved draft is a success, not an error — the state the caller asked
9741
+ * for is the state it is in.
9742
+ */
9743
+ async deleteJourneyDraft(wid, journeyId, expectedUpdatedAt) {
9744
+ const query = new URLSearchParams({ expectedUpdatedAt });
9745
+ return this.fetch(`w/${wid}/journeys/${journeyId}/draft?${query.toString()}`, {
9746
+ method: "DELETE"
9747
+ });
9748
+ }
8997
9749
  /**
8998
9750
  * List journeys, optionally including archived, paginated.
8999
9751
  *
@@ -9491,11 +10243,6 @@ var WorkflowsApi = class extends BaseApiClient {
9491
10243
  `w/${wid}/workflows/${workflowId}/tasks/${taskId}/chats?${params.toString()}`
9492
10244
  );
9493
10245
  }
9494
- async getWorkflowAccessValidation(wid, workflowId) {
9495
- return this.fetch(
9496
- `w/${wid}/workflows/${workflowId}/validate-access`
9497
- );
9498
- }
9499
10246
  async getWorkflowConfigValidation(wid, workflowId) {
9500
10247
  return this.fetch(
9501
10248
  `w/${wid}/workflows/${workflowId}/validate-config`
@@ -9763,21 +10510,6 @@ function encodePermissions(permissions) {
9763
10510
  if (permissions.delete) accessMode |= PERMISSION_DELETE;
9764
10511
  return accessMode;
9765
10512
  }
9766
- var WORKFLOW_IMPLICIT_USE_SCOPE = "workflows:admin";
9767
- function roleImplicitWorkflowUseScope(role) {
9768
- return (role.grantedScopes ?? []).includes(WORKFLOW_IMPLICIT_USE_SCOPE) ? WORKFLOW_IMPLICIT_USE_SCOPE : null;
9769
- }
9770
- function roleWorkflowAccess(role, workflowId) {
9771
- const viaScope = roleImplicitWorkflowUseScope(role);
9772
- if (viaScope) {
9773
- return { accessMode: PERMISSION_USE | PERMISSION_EDIT, viaScope };
9774
- }
9775
- const entry = (role.workflowAccess ?? []).find((wa) => wa.workflowId === workflowId);
9776
- return { accessMode: entry?.accessMode ?? PERMISSION_NONE, viaScope: null };
9777
- }
9778
- function roleCanUseWorkflow(role, workflowId) {
9779
- return (roleWorkflowAccess(role, workflowId).accessMode & PERMISSION_USE) !== 0;
9780
- }
9781
10513
  var Scope = /* @__PURE__ */ ((Scope2) => {
9782
10514
  Scope2["WORKSPACE_READ"] = "workspace:read";
9783
10515
  Scope2["WORKSPACE_WRITE"] = "workspace:write";
@@ -9846,6 +10578,7 @@ var Scope = /* @__PURE__ */ ((Scope2) => {
9846
10578
  Scope2["LABELS_READ"] = "labels:read";
9847
10579
  Scope2["LABELS_WRITE"] = "labels:write";
9848
10580
  Scope2["ANALYTICS_READ"] = "analytics:read";
10581
+ Scope2["ANONYMOUS_SUBMISSIONS_READ"] = "anonymous_submissions:read";
9849
10582
  Scope2["OPERATOR_READ"] = "operator:read";
9850
10583
  Scope2["OPERATOR_WRITE"] = "operator:write";
9851
10584
  Scope2["EXPORT_READ"] = "export:read";
@@ -9869,6 +10602,8 @@ var BulkMemberResultStatus = {
9869
10602
  skipped: "skipped"
9870
10603
  };
9871
10604
  var MemberImportMatchInfoMatchType = {
10605
+ id: "id",
10606
+ uuid: "uuid",
9872
10607
  external_id: "external_id",
9873
10608
  email: "email",
9874
10609
  phone: "phone",
@@ -9890,6 +10625,36 @@ var MergeMemberRolesRequestAccessStrategy = {
9890
10625
  target_only: "target_only"
9891
10626
  };
9892
10627
 
10628
+ // src/types/generated/member_contact_point.ts
10629
+ var CreateMemberContactPointRequestContactType = {
10630
+ phone: "phone",
10631
+ email: "email"
10632
+ };
10633
+ var CreateMemberContactPointRequestPurpose = {
10634
+ general: "general",
10635
+ notification: "notification",
10636
+ billing: "billing"
10637
+ };
10638
+ var CreateMemberContactPointRequestSharing = {
10639
+ shared: "shared",
10640
+ individual: "individual",
10641
+ unknown: "unknown"
10642
+ };
10643
+ var UpdateMemberContactPointRequestContactType = {
10644
+ phone: "phone",
10645
+ email: "email"
10646
+ };
10647
+ var UpdateMemberContactPointRequestPurpose = {
10648
+ general: "general",
10649
+ notification: "notification",
10650
+ billing: "billing"
10651
+ };
10652
+ var UpdateMemberContactPointRequestSharing = {
10653
+ shared: "shared",
10654
+ individual: "individual",
10655
+ unknown: "unknown"
10656
+ };
10657
+
9893
10658
  // src/types/member-types.ts
9894
10659
  var MemberType = /* @__PURE__ */ ((MemberType2) => {
9895
10660
  MemberType2["ANONYMOUS"] = "anonymous";
@@ -9975,6 +10740,8 @@ var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
9975
10740
  EventRuleEventType2["DATA_RECORD_CHANGED"] = "data_record:changed";
9976
10741
  EventRuleEventType2["CHAT_CREATED"] = "chat:created";
9977
10742
  EventRuleEventType2["CHAT_SUMMARY"] = "chat:summary";
10743
+ EventRuleEventType2["MESSAGE_CREATED"] = "message:created";
10744
+ EventRuleEventType2["LINK_CLICKED"] = "link:clicked";
9978
10745
  EventRuleEventType2["CHAT_CALLBACK"] = "chat:callback";
9979
10746
  EventRuleEventType2["MEMBER_UPDATED"] = "member:updated";
9980
10747
  EventRuleEventType2["ROUTINE_TRIGGERED"] = "routine:triggered";
@@ -10038,6 +10805,20 @@ function eventRuleActionParams(params) {
10038
10805
  }
10039
10806
  var MASKED_SECRET_SENTINEL = "__SECRET_SET__";
10040
10807
 
10808
+ // src/types/generated/credit_stop_service.ts
10809
+ var SendingNextStep = {
10810
+ add_credits: "add_credits",
10811
+ subscribe: "subscribe",
10812
+ contact_billing_owner: "contact_billing_owner"
10813
+ };
10814
+ var SendingStopState = {
10815
+ ok: "ok",
10816
+ credits_suspended: "credits_suspended",
10817
+ out_of_credits: "out_of_credits",
10818
+ operator_suspension: "operator_suspension",
10819
+ billing_unresolved: "billing_unresolved"
10820
+ };
10821
+
10041
10822
  // src/types/billing-types.ts
10042
10823
  var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
10043
10824
  WorkspaceFeature2["PHONE"] = "phone";
@@ -10053,7 +10834,6 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
10053
10834
  WorkspaceFeature2["WEB_SEARCH"] = "web_search";
10054
10835
  WorkspaceFeature2["CALENDAR"] = "calendar";
10055
10836
  WorkspaceFeature2["JOURNEY_V2_EDITOR"] = "journey_v2_editor";
10056
- WorkspaceFeature2["EXPERIMENTS"] = "experiments";
10057
10837
  WorkspaceFeature2["MAILBOX_USER_INPUT"] = "mailbox_user_input";
10058
10838
  WorkspaceFeature2["FORKED_TRAJECTORIES"] = "forked_trajectories";
10059
10839
  WorkspaceFeature2["GMAIL"] = "gmail";
@@ -10074,6 +10854,7 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
10074
10854
  WorkspaceFeature2["IMAGE_GENERATION"] = "image_generation";
10075
10855
  WorkspaceFeature2["CHARLESTON_NEPHROLOGY_PMD_PAGING"] = "charleston_nephrology_pmd_paging";
10076
10856
  WorkspaceFeature2["PATIENTSYNC_TRANSFER"] = "patientsync_transfer";
10857
+ WorkspaceFeature2["COSAN_PATHWAYS_SCHEDULING"] = "cosan_pathways_scheduling";
10077
10858
  return WorkspaceFeature2;
10078
10859
  })(WorkspaceFeature || {});
10079
10860
  var MemberFeature = /* @__PURE__ */ ((MemberFeature2) => {
@@ -10184,6 +10965,7 @@ var IndexStatus = /* @__PURE__ */ ((IndexStatus2) => {
10184
10965
  var DataTypeRecordScope = /* @__PURE__ */ ((DataTypeRecordScope2) => {
10185
10966
  DataTypeRecordScope2["WORKSPACE"] = "workspace";
10186
10967
  DataTypeRecordScope2["MEMBER"] = "member";
10968
+ DataTypeRecordScope2["ANONYMOUS"] = "anonymous";
10187
10969
  return DataTypeRecordScope2;
10188
10970
  })(DataTypeRecordScope || {});
10189
10971
  var DataSensitivity = /* @__PURE__ */ ((DataSensitivity2) => {
@@ -10212,10 +10994,10 @@ var ModelProvider = {
10212
10994
  google: "google",
10213
10995
  anthropic: "anthropic",
10214
10996
  aws: "aws",
10215
- elevenlabs: "elevenlabs",
10216
10997
  deepgram: "deepgram",
10217
10998
  xai: "xai",
10218
10999
  fireworks: "fireworks",
11000
+ vercel: "vercel",
10219
11001
  custom: "custom"
10220
11002
  };
10221
11003
  var ModelType = {
@@ -10238,9 +11020,7 @@ var STT_MODEL_DEEPGRAM_FLUX = "deepgram:stt:flux-general-en";
10238
11020
  var STT_MODEL_DEEPGRAM_FLUX_SELFHOST = "deepgram:stt:flux-general-en:selfhost";
10239
11021
  var STT_MODEL_DEEPGRAM_FLUX_MULTI = "deepgram:stt:flux-general-multi";
10240
11022
  var STT_MODEL_DEEPGRAM_FLUX_MULTI_SELFHOST = "deepgram:stt:flux-general-multi:selfhost";
10241
- var TTS_MODEL_ELEVENLABS_FLASH = "elevenlabs:tts:eleven_flash_v2_5";
10242
- var TTS_MODEL_ELEVENLABS_TURBO = "elevenlabs:tts:eleven_turbo_v2_5";
10243
- var TTS_MODEL_ELEVENLABS_MULTILINGUAL = "elevenlabs:tts:eleven_multilingual_v2";
11023
+ var TTS_MODEL_XAI_V1 = "xai:tts:v1";
10244
11024
  var TTS_MODEL_DEEPGRAM_AURA_2 = "deepgram:tts:aura-2";
10245
11025
  var TTS_MODEL_AWS_POLLY_GENERATIVE = "aws:tts:polly-generative";
10246
11026
  var TTS_MODEL_AWS_POLLY_NEURAL = "aws:tts:polly-neural";
@@ -10318,7 +11098,26 @@ var FhirClientType = /* @__PURE__ */ ((FhirClientType2) => {
10318
11098
  return FhirClientType2;
10319
11099
  })(FhirClientType || {});
10320
11100
 
11101
+ // src/types/app-connection-types.ts
11102
+ var CrmActivityKind = /* @__PURE__ */ ((CrmActivityKind2) => {
11103
+ CrmActivityKind2["MESSAGE"] = "message";
11104
+ CrmActivityKind2["SUMMARY"] = "summary";
11105
+ CrmActivityKind2["CHAT_STARTED"] = "chat_started";
11106
+ CrmActivityKind2["CALL_STARTED"] = "call_started";
11107
+ CrmActivityKind2["CALL_ENDED"] = "call_ended";
11108
+ return CrmActivityKind2;
11109
+ })(CrmActivityKind || {});
11110
+
10321
11111
  // src/types/generated/qualification.ts
11112
+ var RunHealthCategory = {
11113
+ passed: "passed",
11114
+ failed: "failed",
11115
+ running: "running",
11116
+ not_applicable: "not_applicable",
11117
+ awaiting_evaluation: "awaiting_evaluation",
11118
+ ungradeable: "ungradeable",
11119
+ incomplete: "incomplete"
11120
+ };
10322
11121
  var TestChatRunLane = {
10323
11122
  text: "text",
10324
11123
  web_realtime: "web_realtime",
@@ -10336,6 +11135,44 @@ var TestChatRunOutcome = {
10336
11135
  instrument_failure: "instrument_failure"
10337
11136
  };
10338
11137
 
11138
+ // src/types/generated/qualification_health_service.ts
11139
+ var ScenarioHealthCaption = {
11140
+ recent_passes: "recent_passes",
11141
+ pass_ratio: "pass_ratio",
11142
+ could_not_grade: "could_not_grade",
11143
+ awaiting_evaluation: "awaiting_evaluation",
11144
+ running: "running",
11145
+ not_run_since_test_change: "not_run_since_test_change",
11146
+ not_run_on_revision: "not_run_on_revision",
11147
+ never_run: "never_run"
11148
+ };
11149
+ var ScenarioHealthHeadline = {
11150
+ needs_attention: "needs_attention",
11151
+ no_results: "no_results",
11152
+ all_passing: "all_passing",
11153
+ no_scenarios: "no_scenarios"
11154
+ };
11155
+ var ScenarioHealthSampleNote = {
11156
+ low_sample: "low_sample"
11157
+ };
11158
+ var ScenarioHealthState = {
11159
+ failing: "failing",
11160
+ flaky: "flaky",
11161
+ no_results: "no_results",
11162
+ passing: "passing"
11163
+ };
11164
+
11165
+ // src/types/generated/qualification_health_summary.ts
11166
+ var RevisionHistorySegment = {
11167
+ before_test_change: "before_test_change"
11168
+ };
11169
+
11170
+ // src/types/generated/qualification_run_identity.ts
11171
+ var ScenarioRunBlocker = {
11172
+ missing_persona: "missing_persona",
11173
+ archived_persona: "archived_persona"
11174
+ };
11175
+
10339
11176
  // src/types/qualification-types.ts
10340
11177
  var CriterionType = /* @__PURE__ */ ((CriterionType2) => {
10341
11178
  CriterionType2["EXPRESSION"] = "expression";
@@ -11297,17 +12134,17 @@ var WorkspacesApi = class extends BaseApiClient {
11297
12134
  body: JSON.stringify(payload)
11298
12135
  });
11299
12136
  }
11300
- /** List available themes for a workspace. */
12137
+ /**
12138
+ * List available themes for a workspace.
12139
+ *
12140
+ * Read-only: `…/themes` serves GET and nothing else. `Workspace.themes` is
12141
+ * an entitlement allowlist — which non-global themes this workspace may
12142
+ * select. There was never a `PUT …/themes` route; the
12143
+ * `updateWorkspaceThemes` method that targeted one always 405'd (GRA-8892).
12144
+ */
11301
12145
  async getWorkspaceThemes(wid) {
11302
12146
  return this.fetch(`w/${wid}/themes`);
11303
12147
  }
11304
- /** Update the active themes for a workspace. */
11305
- async updateWorkspaceThemes(wid, themes) {
11306
- return this.fetch(`w/${wid}/themes`, {
11307
- method: "PUT",
11308
- body: JSON.stringify({ themes })
11309
- });
11310
- }
11311
12148
  /**
11312
12149
  * Get all workspace-grantable scopes that can be assigned to member roles.
11313
12150
  *
@@ -11336,6 +12173,55 @@ var WorkspacesApi = class extends BaseApiClient {
11336
12173
  }
11337
12174
  };
11338
12175
 
12176
+ // src/types/generated/bundle_contract.ts
12177
+ var BundleGrantRequestGranteeType = {
12178
+ organization: "organization",
12179
+ global: "global"
12180
+ };
12181
+ var FormBundleItemRecordScope = {
12182
+ member: "member",
12183
+ workspace: "workspace",
12184
+ anonymous: "anonymous"
12185
+ };
12186
+ var SolutionReleaseResponseSlug = {
12187
+ "member-enrollment": "member-enrollment",
12188
+ "member-reengagement": "member-reengagement",
12189
+ "treatment-adherence": "treatment-adherence",
12190
+ "heart-health": "heart-health",
12191
+ "recovery-checkins": "recovery-checkins",
12192
+ "care-coordination": "care-coordination"
12193
+ };
12194
+
12195
+ // src/types/generated/installation_contract.ts
12196
+ var InstallationItemChangeChange = {
12197
+ added: "added",
12198
+ removed: "removed",
12199
+ revisionChanged: "revisionChanged",
12200
+ definitionChanged: "definitionChanged",
12201
+ unchanged: "unchanged"
12202
+ };
12203
+ var ReferenceTargetInputKind = {
12204
+ file: "file",
12205
+ file_folder: "file_folder",
12206
+ image: "image",
12207
+ phone_number: "phone_number",
12208
+ member_role: "member_role",
12209
+ page: "page"
12210
+ };
12211
+ var ScalarTargetInputKind = {
12212
+ text: "text",
12213
+ textarea: "textarea",
12214
+ url: "url",
12215
+ color: "color",
12216
+ number: "number",
12217
+ boolean: "boolean",
12218
+ select: "select"
12219
+ };
12220
+ var SetInstallationPolicyRequestUpgradePolicy = {
12221
+ pinned: "pinned",
12222
+ auto: "auto"
12223
+ };
12224
+
11339
12225
  // src/app-context.ts
11340
12226
  function formatAppContextAsMarkdown(context) {
11341
12227
  if (!context) {
@@ -11412,6 +12298,8 @@ function createApiModules(apiKey, baseUrl, customFetch) {
11412
12298
  assignments: new AssignmentsApi(apiKey, baseUrl, customFetch),
11413
12299
  auth: new AuthApi(apiKey, baseUrl, customFetch),
11414
12300
  builders: new BuildersApi(apiKey, baseUrl, customFetch),
12301
+ bundles: new BundlesApi(apiKey, baseUrl, customFetch),
12302
+ installations: new InstallationsApi(apiKey, baseUrl, customFetch),
11415
12303
  calendars: new CalendarsApi(apiKey, baseUrl, customFetch),
11416
12304
  calls: new CallsApi(apiKey, baseUrl, customFetch),
11417
12305
  cel: new CELApi(apiKey, baseUrl, customFetch),
@@ -11460,6 +12348,8 @@ function createApiModules(apiKey, baseUrl, customFetch) {
11460
12348
  metrics: new MetricsApi(apiKey, baseUrl, customFetch),
11461
12349
  queries: new QueriesApi(apiKey, baseUrl, customFetch),
11462
12350
  reports: new ReportsApi(apiKey, baseUrl, customFetch),
12351
+ resourceWorkflows: new ResourceWorkflowsApi(apiKey, baseUrl, customFetch),
12352
+ routingRules: new RoutingRulesApi(apiKey, baseUrl, customFetch),
11463
12353
  salesforce: new SalesforceApi(apiKey, baseUrl, customFetch),
11464
12354
  sites: new SitesApi(apiKey, baseUrl, customFetch),
11465
12355
  subscriptions: new SubscriptionsApi(apiKey, baseUrl, customFetch),
@@ -11489,6 +12379,7 @@ var WORKSPACE_METHOD_NAMES = [
11489
12379
  "archiveDataType",
11490
12380
  "archiveJourney",
11491
12381
  "archiveMember",
12382
+ "archiveMemberByExternalId",
11492
12383
  "archiveMemberRelationship",
11493
12384
  "archivePersona",
11494
12385
  "archivePhoneNumber",
@@ -11515,7 +12406,6 @@ var WORKSPACE_METHOD_NAMES = [
11515
12406
  "checkSiteSlugAvailability",
11516
12407
  "claimDevicePairing",
11517
12408
  "clearConnectionMemberExclusion",
11518
- "clearMemberSwitch",
11519
12409
  "clearTrackedLinkDestinations",
11520
12410
  "clickWorkspaceSupportRequestResource",
11521
12411
  "cloneDataType",
@@ -11538,6 +12428,9 @@ var WORKSPACE_METHOD_NAMES = [
11538
12428
  "createAgent",
11539
12429
  "createApiKey",
11540
12430
  "createAssignment",
12431
+ "bindInstallationSlots",
12432
+ "restoreInstallationForm",
12433
+ "createBundle",
11541
12434
  "createCalendar",
11542
12435
  "createCalendarEvent",
11543
12436
  "createCalendarEventType",
@@ -11550,6 +12443,7 @@ var WORKSPACE_METHOD_NAMES = [
11550
12443
  "createChatLabel",
11551
12444
  "createClientWorkspace",
11552
12445
  "createConnection",
12446
+ "createContactPermission",
11553
12447
  "createCustomTool",
11554
12448
  "createCustomToolkit",
11555
12449
  "createDashboard",
@@ -11585,6 +12479,7 @@ var WORKSPACE_METHOD_NAMES = [
11585
12479
  "createPhoneNumber",
11586
12480
  "createProduct",
11587
12481
  "createRoutine",
12482
+ "createRoutingRule",
11588
12483
  "createScenario",
11589
12484
  "createSignup",
11590
12485
  "createSite",
@@ -11635,6 +12530,7 @@ var WORKSPACE_METHOD_NAMES = [
11635
12530
  "deleteGoal",
11636
12531
  "deleteHubspot",
11637
12532
  "deleteInbox",
12533
+ "deleteJourneyDraft",
11638
12534
  "deleteJourneyNote",
11639
12535
  "deleteMcpServer",
11640
12536
  "deleteMember",
@@ -11652,6 +12548,7 @@ var WORKSPACE_METHOD_NAMES = [
11652
12548
  "deletePlatformApp",
11653
12549
  "deleteProduct",
11654
12550
  "deleteRoutine",
12551
+ "deleteRoutingRule",
11655
12552
  "deleteSalesforce",
11656
12553
  "deleteScenario",
11657
12554
  "deleteSite",
@@ -11684,6 +12581,7 @@ var WORKSPACE_METHOD_NAMES = [
11684
12581
  "dismissAllNotifications",
11685
12582
  "dismissNotification",
11686
12583
  "downloadEmailAttachment",
12584
+ "downloadFileContents",
11687
12585
  "downloadFilesZip",
11688
12586
  "downloadSiteSourceZip",
11689
12587
  "editWorkflowRevisionAsDraft",
@@ -11746,6 +12644,7 @@ var WORKSPACE_METHOD_NAMES = [
11746
12644
  "getAgentTasks",
11747
12645
  "getAgents",
11748
12646
  "getAnonymousResolution",
12647
+ "getAnonymousFormSubmission",
11749
12648
  "getAnonymousResolutions",
11750
12649
  "getApiKeys",
11751
12650
  "getArchiveBlockers",
@@ -11759,6 +12658,12 @@ var WORKSPACE_METHOD_NAMES = [
11759
12658
  "getAvailableActions",
11760
12659
  "getAvailablePhoneNumbers",
11761
12660
  "getAvailableSlots",
12661
+ "getInstallation",
12662
+ "getInstallationReadiness",
12663
+ "getThemeSettingsSchema",
12664
+ "getBundleDraft",
12665
+ "getBundle",
12666
+ "getBundleVersion",
11762
12667
  "getBusinessHoursStatus",
11763
12668
  "getCalendar",
11764
12669
  "getCalendarEvent",
@@ -11771,8 +12676,11 @@ var WORKSPACE_METHOD_NAMES = [
11771
12676
  "getCelContext",
11772
12677
  "getCharlestonTestDeliveryRecipients",
11773
12678
  "getChat",
12679
+ "getChatByUuid",
11774
12680
  "getChatAssignmentTasks",
11775
12681
  "getChatBrowserLiveView",
12682
+ "saveChatBrowserStorage",
12683
+ "clearChatBrowserStorage",
11776
12684
  "getChatCallbacks",
11777
12685
  "getChatEhrWritebackOutcomes",
11778
12686
  "getChatEmails",
@@ -11818,6 +12726,7 @@ var WORKSPACE_METHOD_NAMES = [
11818
12726
  "getDashboardWorkflowAssignmentStats",
11819
12727
  "getDashboards",
11820
12728
  "getDataRecord",
12729
+ "getDataRecordByUuid",
11821
12730
  "getDataRecordChanges",
11822
12731
  "getDataRecordFilter",
11823
12732
  "getDataRecordFilterCount",
@@ -11935,6 +12844,7 @@ var WORKSPACE_METHOD_NAMES = [
11935
12844
  "getMcpServerResources",
11936
12845
  "getMcpServerTools",
11937
12846
  "getMcpServers",
12847
+ "getMemberByUuid",
11938
12848
  "getMemberExperiments",
11939
12849
  "getMemberFieldDefinitions",
11940
12850
  "getMemberFields",
@@ -11966,6 +12876,7 @@ var WORKSPACE_METHOD_NAMES = [
11966
12876
  "getMondayConnectionStatus",
11967
12877
  "getMondayReconciliationMatches",
11968
12878
  "getMondaySyncConfig",
12879
+ "getMondaySyncLogs",
11969
12880
  "getMyCredentials",
11970
12881
  "getMyGivenGrants",
11971
12882
  "getMyReceivedGrants",
@@ -11976,7 +12887,6 @@ var WORKSPACE_METHOD_NAMES = [
11976
12887
  "getOperatorGroup",
11977
12888
  "getOperatorGroups",
11978
12889
  "getOrCreateQualificationForWorkflow",
11979
- "getOwnedMembers",
11980
12890
  "getPage",
11981
12891
  "getPageBySlug",
11982
12892
  "getPersona",
@@ -12006,11 +12916,14 @@ var WORKSPACE_METHOD_NAMES = [
12006
12916
  "getRoutineConfigEvents",
12007
12917
  "getRoutineRuns",
12008
12918
  "getRoutines",
12919
+ "getRoutingRule",
12920
+ "getRoutingRules",
12009
12921
  "getRuleExecutions",
12010
12922
  "getSMSUsageReport",
12011
12923
  "getSalesforceReconciliationMatches",
12012
12924
  "getSalesforceStatus",
12013
12925
  "getSalesforceSyncConfig",
12926
+ "getSalesforceSyncLogs",
12014
12927
  "getScenario",
12015
12928
  "getSite",
12016
12929
  "getSiteByUuid",
@@ -12056,7 +12969,6 @@ var WORKSPACE_METHOD_NAMES = [
12056
12969
  "getWebhookLogs",
12057
12970
  "getWorkflow",
12058
12971
  "getWorkflowOpeningTurnConversionReport",
12059
- "getWorkflowAccessValidation",
12060
12972
  "getWorkflowActivity",
12061
12973
  "getWorkflowConfigValidation",
12062
12974
  "getWorkflowFeedback",
@@ -12087,6 +12999,8 @@ var WORKSPACE_METHOD_NAMES = [
12087
12999
  "getWorkspaceSubscriptions",
12088
13000
  "getWorkspaceSupportRequest",
12089
13001
  "getWorkspaceThemes",
13002
+ "installBundle",
13003
+ "grantBundle",
12090
13004
  "importFromBoard",
12091
13005
  "importHubspotMembers",
12092
13006
  "importMembers",
@@ -12109,12 +13023,23 @@ var WORKSPACE_METHOD_NAMES = [
12109
13023
  "linkMemberToMonday",
12110
13024
  "linkMemberToSalesforce",
12111
13025
  "linkPhoneNumber",
13026
+ "linkUnlinkedSalesforceMembersByIdentity",
12112
13027
  "listAbilities",
13028
+ "listAnonymousFormSubmissions",
12113
13029
  "listAppConnections",
12114
13030
  "listAvailableAppConnections",
13031
+ "listInstallations",
13032
+ "listBundleGrants",
13033
+ "listBundleVersions",
13034
+ "listBundles",
13035
+ "listBundleWorkflowCandidates",
13036
+ "updateBundle",
13037
+ "listBundleInstallations",
12115
13038
  "listConfluencePages",
12116
13039
  "listConfluenceSpaces",
12117
13040
  "listConnectionMemberFieldKeys",
13041
+ "listContactPermissions",
13042
+ "revokeBundleGrant",
12118
13043
  "rollbackSiteSource",
12119
13044
  "rotateDocumoFaxCredentials",
12120
13045
  "runQuery",
@@ -12135,7 +13060,11 @@ var WORKSPACE_METHOD_NAMES = [
12135
13060
  "getMetricSeries",
12136
13061
  "computeChatMetrics",
12137
13062
  "listPushSubscriptions",
13063
+ "listResourceWorkflows",
13064
+ "getResourceWorkflow",
13065
+ "getResourceWorkflowRevision",
12138
13066
  "listSalesforceObjects",
13067
+ "listScenarioHealthSummaries",
12139
13068
  "listScenarios",
12140
13069
  "listTestChatRuns",
12141
13070
  "listWidgetDomains",
@@ -12151,15 +13080,18 @@ var WORKSPACE_METHOD_NAMES = [
12151
13080
  "previewRenameFieldSlug",
12152
13081
  "previewImportWorkspace",
12153
13082
  "previewInboxEmail",
13083
+ "preflightBundleInstallation",
12154
13084
  "previewRoutineVoiceReadiness",
12155
- "previewRoutineWorkflowAccess",
12156
13085
  "previewSchedule",
13086
+ "previewRoutingRule",
12157
13087
  "previewTTS",
12158
13088
  "previewTemplate",
12159
13089
  "previewThinkingSound",
12160
13090
  "previewWorkspaceImport",
12161
13091
  "previewWorkspaceImportZip",
12162
13092
  "provisionClientWorkspace",
13093
+ "previewInstallationUpgrade",
13094
+ "publishBundle",
12163
13095
  "publishWorkflowRevision",
12164
13096
  "putJourneyDraft",
12165
13097
  "putJourneyV2Definition",
@@ -12171,11 +13103,16 @@ var WORKSPACE_METHOD_NAMES = [
12171
13103
  "registerPushSubscription",
12172
13104
  "reindexFolder",
12173
13105
  "releasePhoneNumber",
13106
+ "reorderRoutingRules",
12174
13107
  "removeFileRole",
12175
13108
  "removeFolderRole",
12176
13109
  "removeGroupMember",
12177
13110
  "reorderEventRules",
12178
13111
  "reorderMenuItems",
13112
+ "reconcileInstallation",
13113
+ "setInstallationPolicy",
13114
+ "upgradeInstallation",
13115
+ "replaceBundleDraft",
12179
13116
  "replyToEmail",
12180
13117
  "rotateDocumoFaxCredentials",
12181
13118
  "requestPhoneNumber",
@@ -12211,7 +13148,6 @@ var WORKSPACE_METHOD_NAMES = [
12211
13148
  "startSyncRun",
12212
13149
  "startTestChatRun",
12213
13150
  "summarizeChat",
12214
- "switchMember",
12215
13151
  "syncCalendarWithGoogle",
12216
13152
  "syncCalendarWithHealthie",
12217
13153
  "testFhirConnection",
@@ -12224,6 +13160,7 @@ var WORKSPACE_METHOD_NAMES = [
12224
13160
  "unarchiveChat",
12225
13161
  "unarchiveDataType",
12226
13162
  "unarchiveMember",
13163
+ "unarchiveMemberByExternalId",
12227
13164
  "unarchivePersona",
12228
13165
  "unarchiveStep",
12229
13166
  "unarchiveTask",
@@ -12281,6 +13218,7 @@ var WORKSPACE_METHOD_NAMES = [
12281
13218
  "updateJourneyNote",
12282
13219
  "updateMcpServer",
12283
13220
  "updateMember",
13221
+ "updateMemberByExternalId",
12284
13222
  "updateMemberField",
12285
13223
  "updateMemberFilter",
12286
13224
  "updateMemberLabel",
@@ -12297,6 +13235,7 @@ var WORKSPACE_METHOD_NAMES = [
12297
13235
  "updateProduct",
12298
13236
  "updateProject",
12299
13237
  "updateRoutine",
13238
+ "updateRoutingRule",
12300
13239
  "updateSalesforceSyncConfig",
12301
13240
  "resyncSalesforceLinkedMembers",
12302
13241
  "updateScenario",
@@ -12319,7 +13258,6 @@ var WORKSPACE_METHOD_NAMES = [
12319
13258
  "updateWorkspace",
12320
13259
  "updateWorkspaceDefaults",
12321
13260
  "updateWorkspaceInvitationAdmin",
12322
- "updateWorkspaceThemes",
12323
13261
  "upsertDataRecord",
12324
13262
  "upsertWidgetDomain",
12325
13263
  "validateCelExpression",
@@ -12410,6 +13348,9 @@ function bindChatsMethods(target, chats) {
12410
13348
  target.transitionChatInteractionSession = chats.transitionChatInteractionSession.bind(chats);
12411
13349
  target.getChats = chats.getChats.bind(chats);
12412
13350
  target.getChat = chats.getChat.bind(chats);
13351
+ target.getChatByUuid = chats.getChatByUuid.bind(chats);
13352
+ target.saveChatBrowserStorage = chats.saveChatBrowserStorage.bind(chats);
13353
+ target.clearChatBrowserStorage = chats.clearChatBrowserStorage.bind(chats);
12413
13354
  target.getChatBrowserLiveView = chats.getChatBrowserLiveView.bind(chats);
12414
13355
  target.getChatMachineResources = chats.getChatMachineResources.bind(chats);
12415
13356
  target.getCurrentSmsChat = chats.getCurrentSmsChat.bind(chats);
@@ -12546,7 +13487,10 @@ function bindDataTypesMethods(target, dataTypes) {
12546
13487
  target.unarchiveDataType = dataTypes.unarchiveDataType.bind(dataTypes);
12547
13488
  target.cloneDataType = dataTypes.cloneDataType.bind(dataTypes);
12548
13489
  target.getDataRecords = dataTypes.getDataRecords.bind(dataTypes);
13490
+ target.listAnonymousFormSubmissions = dataTypes.listAnonymousFormSubmissions.bind(dataTypes);
13491
+ target.getAnonymousFormSubmission = dataTypes.getAnonymousFormSubmission.bind(dataTypes);
12549
13492
  target.getDataRecord = dataTypes.getDataRecord.bind(dataTypes);
13493
+ target.getDataRecordByUuid = dataTypes.getDataRecordByUuid.bind(dataTypes);
12550
13494
  target.createDataRecord = dataTypes.createDataRecord.bind(dataTypes);
12551
13495
  target.updateDataRecord = dataTypes.updateDataRecord.bind(dataTypes);
12552
13496
  target.deleteDataRecord = dataTypes.deleteDataRecord.bind(dataTypes);
@@ -12585,18 +13529,19 @@ function bindMembersMethods(target, members) {
12585
13529
  target.previewMemberWorkflowVoice = members.previewMemberWorkflowVoice.bind(members);
12586
13530
  target.setMemberWorkflowVoice = members.setMemberWorkflowVoice.bind(members);
12587
13531
  target.clearMemberWorkflowVoice = members.clearMemberWorkflowVoice.bind(members);
12588
- target.getOwnedMembers = members.getOwnedMembers.bind(members);
12589
- target.switchMember = members.switchMember.bind(members);
12590
- target.clearMemberSwitch = members.clearMemberSwitch.bind(members);
12591
13532
  target.updateCurrentMember = members.updateCurrentMember.bind(members);
12592
13533
  target.getWorkspaceMembers = members.getWorkspaceMembers.bind(members);
12593
13534
  target.getWorkspaceMember = members.getWorkspaceMember.bind(members);
13535
+ target.getMemberByUuid = members.getMemberByUuid.bind(members);
12594
13536
  target.getOrgWorkspaceMember = members.getOrgWorkspaceMember.bind(members);
12595
13537
  target.createWorkspaceMember = members.createWorkspaceMember.bind(members);
12596
13538
  target.updateMember = members.updateMember.bind(members);
12597
13539
  target.deleteMember = members.deleteMember.bind(members);
12598
13540
  target.archiveMember = members.archiveMember.bind(members);
12599
13541
  target.unarchiveMember = members.unarchiveMember.bind(members);
13542
+ target.updateMemberByExternalId = members.updateMemberByExternalId.bind(members);
13543
+ target.archiveMemberByExternalId = members.archiveMemberByExternalId.bind(members);
13544
+ target.unarchiveMemberByExternalId = members.unarchiveMemberByExternalId.bind(members);
12600
13545
  target.sendMemberPhoneConfirmation = members.sendMemberPhoneConfirmation.bind(members);
12601
13546
  target.bulkCreateMembers = members.bulkCreateMembers.bind(members);
12602
13547
  target.previewImportMembers = members.previewImportMembers.bind(members);
@@ -12643,6 +13588,8 @@ function bindMembersMethods(target, members) {
12643
13588
  target.getMemberRelationships = members.getMemberRelationships.bind(members);
12644
13589
  target.createMemberRelationship = members.createMemberRelationship.bind(members);
12645
13590
  target.archiveMemberRelationship = members.archiveMemberRelationship.bind(members);
13591
+ target.listContactPermissions = members.listContactPermissions.bind(members);
13592
+ target.createContactPermission = members.createContactPermission.bind(members);
12646
13593
  }
12647
13594
 
12648
13595
  // src/client/bindings/workspaces.ts
@@ -12696,7 +13643,6 @@ function bindWorkspacesMethods(target, workspaces, signupRequests) {
12696
13643
  target.rebuildImportSkippedRules = workspaces.rebuildImportSkippedRules.bind(workspaces);
12697
13644
  target.previewImportWorkspace = workspaces.previewImportWorkspace.bind(workspaces);
12698
13645
  target.getWorkspaceThemes = workspaces.getWorkspaceThemes.bind(workspaces);
12699
- target.updateWorkspaceThemes = workspaces.updateWorkspaceThemes.bind(workspaces);
12700
13646
  target.getWorkspaceBySlug = workspaces.getWorkspace.bind(workspaces);
12701
13647
  target.getWorkspaceScopes = workspaces.getWorkspaceScopes.bind(workspaces);
12702
13648
  target.getUsageDashboard = workspaces.getUsageDashboard.bind(workspaces);
@@ -12745,6 +13691,7 @@ function bindAuthMethods(target, auth, assignments) {
12745
13691
  target.logout = auth.logout.bind(auth);
12746
13692
  target.requestCrossDomainToken = auth.requestCrossDomainToken.bind(auth);
12747
13693
  target.exchangeToken = auth.exchangeToken.bind(auth);
13694
+ target.createRealtimeLoginToken = auth.createRealtimeLoginToken.bind(auth);
12748
13695
  target.getDomainMapping = auth.getDomainMapping.bind(auth);
12749
13696
  target.createSignup = auth.createSignup.bind(auth);
12750
13697
  target.createAccount = auth.emailPasswordSignup.bind(auth);
@@ -12834,6 +13781,7 @@ function bindSitesMethods(target, sites) {
12834
13781
  function bindFilesMethods(target, files) {
12835
13782
  target.getFiles = files.getFiles.bind(files);
12836
13783
  target.getFile = files.getFile.bind(files);
13784
+ target.downloadFileContents = files.downloadFileContents.bind(files);
12837
13785
  target.downloadFilesZip = files.downloadFilesZip.bind(files);
12838
13786
  target.createFile = files.createFile.bind(files);
12839
13787
  target.uploadFile = files.uploadFile.bind(files);
@@ -12906,7 +13854,6 @@ function bindEventsMethods(target, events) {
12906
13854
  target.resetRoutineRuns = events.resetRoutineRuns.bind(events);
12907
13855
  target.previewSchedule = events.previewSchedule.bind(events);
12908
13856
  target.previewRoutineVoiceReadiness = events.previewRoutineVoiceReadiness.bind(events);
12909
- target.previewRoutineWorkflowAccess = events.previewRoutineWorkflowAccess.bind(events);
12910
13857
  }
12911
13858
 
12912
13859
  // src/client/bindings/experiments.ts
@@ -12947,7 +13894,6 @@ function bindWorkflowsMethods(target, workflows, workflowNotes, voice, superviso
12947
13894
  target.createWorkflowFromTemplate = workflows.createWorkflowFromTemplate.bind(workflows);
12948
13895
  target.getWorkflowTaskAssignmentStats = workflows.getWorkflowTaskAssignmentStats.bind(workflows);
12949
13896
  target.getTaskChats = workflows.getTaskChats.bind(workflows);
12950
- target.getWorkflowAccessValidation = workflows.getWorkflowAccessValidation.bind(workflows);
12951
13897
  target.getWorkflowConfigValidation = workflows.getWorkflowConfigValidation.bind(workflows);
12952
13898
  target.getWorkflowNotes = workflowNotes.getWorkflowNotes.bind(workflowNotes);
12953
13899
  target.createWorkflowNote = workflowNotes.createWorkflowNote.bind(workflowNotes);
@@ -13068,6 +14014,7 @@ function bindToolkitsMethods(target, toolkits, templates, aiModels, customToolki
13068
14014
  target.previewTemplate = templates.previewTemplate.bind(templates);
13069
14015
  target.getVariableRegistry = templates.getVariableRegistry.bind(templates);
13070
14016
  target.getChatModels = aiModels.getChatModels.bind(aiModels);
14017
+ target.getManagerModels = aiModels.getManagerModels.bind(aiModels);
13071
14018
  target.getRealtimeModels = aiModels.getRealtimeModels.bind(aiModels);
13072
14019
  target.getSTTModels = aiModels.getSTTModels.bind(aiModels);
13073
14020
  target.getTTSModels = aiModels.getTTSModels.bind(aiModels);
@@ -13181,6 +14128,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
13181
14128
  target.getMondayConnectionBoardColumns = mondayIntegration.getMondayConnectionBoardColumns.bind(mondayIntegration);
13182
14129
  target.getMondayConnectionBoardGroups = mondayIntegration.getMondayConnectionBoardGroups.bind(mondayIntegration);
13183
14130
  target.getMondaySyncConfig = mondayIntegration.getMondaySyncConfig.bind(mondayIntegration);
14131
+ target.getMondaySyncLogs = mondayIntegration.getMondaySyncLogs.bind(mondayIntegration);
13184
14132
  target.updateMondaySyncConfig = mondayIntegration.updateMondaySyncConfig.bind(mondayIntegration);
13185
14133
  target.getLinkedMondayMembers = mondayIntegration.getLinkedMondayMembers.bind(mondayIntegration);
13186
14134
  target.getMondayReconciliationMatches = mondayIntegration.getMondayReconciliationMatches.bind(mondayIntegration);
@@ -13295,10 +14243,12 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
13295
14243
  target.deleteSalesforce = salesforce.deleteSalesforce.bind(salesforce);
13296
14244
  target.getSalesforceReconciliationMatches = salesforce.getSalesforceReconciliationMatches.bind(salesforce);
13297
14245
  target.linkMemberToSalesforce = salesforce.linkMemberToSalesforce.bind(salesforce);
14246
+ target.linkUnlinkedSalesforceMembersByIdentity = salesforce.linkUnlinkedSalesforceMembersByIdentity.bind(salesforce);
13298
14247
  target.bulkLinkMembersToSalesforce = salesforce.bulkLinkMembersToSalesforce.bind(salesforce);
13299
14248
  target.unlinkMemberFromSalesforce = salesforce.unlinkMemberFromSalesforce.bind(salesforce);
13300
14249
  target.getLinkedSalesforceMembers = salesforce.getLinkedSalesforceMembers.bind(salesforce);
13301
14250
  target.getSalesforceSyncConfig = salesforce.getSalesforceSyncConfig.bind(salesforce);
14251
+ target.getSalesforceSyncLogs = salesforce.getSalesforceSyncLogs.bind(salesforce);
13302
14252
  target.updateSalesforceSyncConfig = salesforce.updateSalesforceSyncConfig.bind(salesforce);
13303
14253
  target.resyncSalesforceLinkedMembers = salesforce.resyncSalesforceLinkedMembers.bind(salesforce);
13304
14254
  target.listSalesforceObjects = salesforce.listSalesforceObjects.bind(salesforce);
@@ -13388,10 +14338,15 @@ function bindOrgMethods(target, org) {
13388
14338
  target.getVoiceTrustProducts = org.getVoiceTrustProducts.bind(org);
13389
14339
  target.syncVoiceTrustProducts = org.syncVoiceTrustProducts.bind(org);
13390
14340
  target.createOrganizationWorkspace = org.createOrganizationWorkspace.bind(org);
14341
+ target.getOrganizationWorkspace = org.getOrganizationWorkspace.bind(org);
14342
+ target.updateOrganizationWorkspace = org.updateOrganizationWorkspace.bind(org);
13391
14343
  target.getOrgBillingCustomer = org.getOrgBillingCustomer.bind(org);
13392
14344
  target.getA2PCampaignConfig = org.getA2PCampaignConfig.bind(org);
13393
14345
  target.updateA2PCampaignConfig = org.updateA2PCampaignConfig.bind(org);
13394
14346
  target.getOrgWorkspaceUsage = org.getOrgWorkspaceUsage.bind(org);
14347
+ target.updateOrganizationMember = org.updateOrganizationMember.bind(org);
14348
+ target.listOrgWebhookEndpoints = org.listOrgWebhookEndpoints.bind(org);
14349
+ target.getOrgWebhookEndpoint = org.getOrgWebhookEndpoint.bind(org);
13395
14350
  }
13396
14351
 
13397
14352
  // src/client/bindings/pronunciations.ts
@@ -13411,12 +14366,58 @@ function bindPronunciationsMethods(target, pronunciations) {
13411
14366
  target.previewPronunciation = pronunciations.previewPronunciation.bind(pronunciations);
13412
14367
  }
13413
14368
 
14369
+ // src/client/bindings/resource-workflows.ts
14370
+ function bindResourceWorkflowsMethods(target, resourceWorkflows) {
14371
+ target.getResourceWorkflow = resourceWorkflows.getResourceWorkflow.bind(resourceWorkflows);
14372
+ target.getResourceWorkflowRevision = resourceWorkflows.getResourceWorkflowRevision.bind(resourceWorkflows);
14373
+ }
14374
+
14375
+ // src/client/bindings/bundles.ts
14376
+ function bindBundlesMethods(target, bundles, resourceWorkflows) {
14377
+ bindResourceWorkflowsMethods(target, resourceWorkflows);
14378
+ target.getSolutionRelease = bundles.getSolutionRelease.bind(bundles);
14379
+ target.updateBundle = bundles.updateBundle.bind(bundles);
14380
+ target.listBundleInstallations = bundles.listBundleInstallations.bind(bundles);
14381
+ target.listBundles = bundles.listBundles.bind(bundles);
14382
+ target.listBundleWorkflowCandidates = bundles.listBundleWorkflowCandidates.bind(bundles);
14383
+ target.createBundle = bundles.createBundle.bind(bundles);
14384
+ target.getBundleDraft = bundles.getBundleDraft.bind(bundles);
14385
+ target.replaceBundleDraft = bundles.replaceBundleDraft.bind(bundles);
14386
+ target.publishBundle = bundles.publishBundle.bind(bundles);
14387
+ target.listBundleVersions = bundles.listBundleVersions.bind(bundles);
14388
+ target.getBundle = bundles.getBundle.bind(bundles);
14389
+ target.getBundleVersion = bundles.getBundleVersion.bind(bundles);
14390
+ target.listBundleGrants = bundles.listBundleGrants.bind(bundles);
14391
+ target.grantBundle = bundles.grantBundle.bind(bundles);
14392
+ target.revokeBundleGrant = bundles.revokeBundleGrant.bind(bundles);
14393
+ target.listResourceWorkflows = resourceWorkflows.listResourceWorkflows.bind(resourceWorkflows);
14394
+ }
14395
+
14396
+ // src/client/bindings/installations.ts
14397
+ function bindInstallationsMethods(target, installations) {
14398
+ target.preflightBundleInstallation = installations.preflightBundleInstallation.bind(installations);
14399
+ target.installBundle = installations.installBundle.bind(installations);
14400
+ target.listInstallations = installations.listInstallations.bind(installations);
14401
+ target.getInstallation = installations.getInstallation.bind(installations);
14402
+ target.getInstallationReadiness = installations.getInstallationReadiness.bind(installations);
14403
+ target.previewInstallationUpgrade = installations.previewInstallationUpgrade.bind(installations);
14404
+ target.upgradeInstallation = installations.upgradeInstallation.bind(installations);
14405
+ target.setInstallationPolicy = installations.setInstallationPolicy.bind(installations);
14406
+ target.unsubscribeInstallation = installations.unsubscribeInstallation.bind(installations);
14407
+ target.restoreInstallationForm = installations.restoreInstallationForm.bind(installations);
14408
+ target.restoreInstallationWorkflowResources = installations.restoreInstallationWorkflowResources.bind(installations);
14409
+ target.bindInstallationSlots = installations.bindInstallationSlots.bind(installations);
14410
+ target.reconcileInstallation = installations.reconcileInstallation.bind(installations);
14411
+ target.getThemeSettingsSchema = installations.getThemeSettingsSchema.bind(installations);
14412
+ }
14413
+
13414
14414
  // src/client/bindings/journeys.ts
13415
14415
  function bindJourneysMethods(target, journeys) {
13416
14416
  target.getJourneys = journeys.getJourneys.bind(journeys);
13417
14417
  target.getJourney = journeys.getJourney.bind(journeys);
13418
14418
  target.getJourneyAuthoring = journeys.getJourneyAuthoring.bind(journeys);
13419
14419
  target.putJourneyDraft = journeys.putJourneyDraft.bind(journeys);
14420
+ target.deleteJourneyDraft = journeys.deleteJourneyDraft.bind(journeys);
13420
14421
  target.putJourneyV2Definition = journeys.putJourneyV2Definition.bind(journeys);
13421
14422
  target.getJourneyV2Validation = journeys.getJourneyV2Validation.bind(journeys);
13422
14423
  target.getJourneyFilterOptions = journeys.getJourneyFilterOptions.bind(journeys);
@@ -13464,6 +14465,7 @@ function bindQualificationsMethods(target, qualifications) {
13464
14465
  target.updateScenario = qualifications.updateScenario.bind(qualifications);
13465
14466
  target.deleteScenario = qualifications.deleteScenario.bind(qualifications);
13466
14467
  target.listTestChatRuns = qualifications.listTestChatRuns.bind(qualifications);
14468
+ target.listScenarioHealthSummaries = qualifications.listScenarioHealthSummaries.bind(qualifications);
13467
14469
  target.getTestChatRun = qualifications.getTestChatRun.bind(qualifications);
13468
14470
  target.startTestChatRun = qualifications.startTestChatRun.bind(qualifications);
13469
14471
  target.evaluateTestChatRun = qualifications.evaluateTestChatRun.bind(qualifications);
@@ -13552,6 +14554,17 @@ function bindSupportRequestMethods(target, supportRequests) {
13552
14554
  target.clickWorkspaceSupportRequestResource = supportRequests.clickWorkspaceSupportRequestResource.bind(supportRequests);
13553
14555
  }
13554
14556
 
14557
+ // src/client/bindings/routing-rules.ts
14558
+ function bindRoutingRulesMethods(target, routingRules) {
14559
+ target.getRoutingRules = routingRules.getRoutingRules.bind(routingRules);
14560
+ target.getRoutingRule = routingRules.getRoutingRule.bind(routingRules);
14561
+ target.createRoutingRule = routingRules.createRoutingRule.bind(routingRules);
14562
+ target.updateRoutingRule = routingRules.updateRoutingRule.bind(routingRules);
14563
+ target.deleteRoutingRule = routingRules.deleteRoutingRule.bind(routingRules);
14564
+ target.reorderRoutingRules = routingRules.reorderRoutingRules.bind(routingRules);
14565
+ target.previewRoutingRule = routingRules.previewRoutingRule.bind(routingRules);
14566
+ }
14567
+
13555
14568
  // src/client/client.ts
13556
14569
  var GravityRailClient = class {
13557
14570
  // WorkspaceInvitations is exposed publicly for backward compatibility
@@ -13577,6 +14590,9 @@ var GravityRailClient = class {
13577
14590
  // Chats API
13578
14591
  getChats;
13579
14592
  getChat;
14593
+ getChatByUuid;
14594
+ saveChatBrowserStorage;
14595
+ clearChatBrowserStorage;
13580
14596
  getChatBrowserLiveView;
13581
14597
  getChatMachineResources;
13582
14598
  getCurrentSmsChat;
@@ -13654,7 +14670,10 @@ var GravityRailClient = class {
13654
14670
  unarchiveDataType;
13655
14671
  cloneDataType;
13656
14672
  getDataRecords;
14673
+ listAnonymousFormSubmissions;
14674
+ getAnonymousFormSubmission;
13657
14675
  getDataRecord;
14676
+ getDataRecordByUuid;
13658
14677
  createDataRecord;
13659
14678
  updateDataRecord;
13660
14679
  deleteDataRecord;
@@ -13680,12 +14699,10 @@ var GravityRailClient = class {
13680
14699
  previewMemberWorkflowVoice;
13681
14700
  setMemberWorkflowVoice;
13682
14701
  clearMemberWorkflowVoice;
13683
- getOwnedMembers;
13684
- switchMember;
13685
- clearMemberSwitch;
13686
14702
  updateCurrentMember;
13687
14703
  getWorkspaceMembers;
13688
14704
  getWorkspaceMember;
14705
+ getMemberByUuid;
13689
14706
  // Org-scoped, so deliberately absent from WORKSPACE_METHOD_NAMES: that proxy
13690
14707
  // passes a workspace uuid as the first argument.
13691
14708
  getOrgWorkspaceMember;
@@ -13694,6 +14711,9 @@ var GravityRailClient = class {
13694
14711
  deleteMember;
13695
14712
  archiveMember;
13696
14713
  unarchiveMember;
14714
+ updateMemberByExternalId;
14715
+ archiveMemberByExternalId;
14716
+ unarchiveMemberByExternalId;
13697
14717
  sendMemberPhoneConfirmation;
13698
14718
  bulkCreateMembers;
13699
14719
  previewImportMembers;
@@ -13746,6 +14766,8 @@ var GravityRailClient = class {
13746
14766
  getMemberRelationships;
13747
14767
  createMemberRelationship;
13748
14768
  archiveMemberRelationship;
14769
+ listContactPermissions;
14770
+ createContactPermission;
13749
14771
  // Agent Tasks API (operator-facing async sub-agent inspection/cancel)
13750
14772
  getAgentTasks;
13751
14773
  getAgentTask;
@@ -13769,6 +14791,7 @@ var GravityRailClient = class {
13769
14791
  updateScenario;
13770
14792
  deleteScenario;
13771
14793
  listTestChatRuns;
14794
+ listScenarioHealthSummaries;
13772
14795
  getTestChatRun;
13773
14796
  startTestChatRun;
13774
14797
  evaluateTestChatRun;
@@ -13846,6 +14869,7 @@ var GravityRailClient = class {
13846
14869
  getJourney;
13847
14870
  getJourneyAuthoring;
13848
14871
  putJourneyDraft;
14872
+ deleteJourneyDraft;
13849
14873
  putJourneyV2Definition;
13850
14874
  getJourneyV2Validation;
13851
14875
  getJourneyFilterOptions;
@@ -13880,6 +14904,41 @@ var GravityRailClient = class {
13880
14904
  createJourneyNote;
13881
14905
  updateJourneyNote;
13882
14906
  deleteJourneyNote;
14907
+ updateBundle;
14908
+ listBundleInstallations;
14909
+ // Bundles API
14910
+ getSolutionRelease;
14911
+ listBundles;
14912
+ listBundleWorkflowCandidates;
14913
+ createBundle;
14914
+ getBundleDraft;
14915
+ replaceBundleDraft;
14916
+ publishBundle;
14917
+ listBundleVersions;
14918
+ getBundle;
14919
+ getBundleVersion;
14920
+ listBundleGrants;
14921
+ grantBundle;
14922
+ revokeBundleGrant;
14923
+ listResourceWorkflows;
14924
+ // Resource Workflows API — published Workflow catalog reads
14925
+ getResourceWorkflow;
14926
+ getResourceWorkflowRevision;
14927
+ // Installations API
14928
+ preflightBundleInstallation;
14929
+ installBundle;
14930
+ listInstallations;
14931
+ getInstallation;
14932
+ getInstallationReadiness;
14933
+ previewInstallationUpgrade;
14934
+ upgradeInstallation;
14935
+ setInstallationPolicy;
14936
+ unsubscribeInstallation;
14937
+ bindInstallationSlots;
14938
+ restoreInstallationForm;
14939
+ restoreInstallationWorkflowResources;
14940
+ reconcileInstallation;
14941
+ getThemeSettingsSchema;
13883
14942
  // Experiments API
13884
14943
  getExperiments;
13885
14944
  getExperiment;
@@ -13972,7 +15031,6 @@ var GravityRailClient = class {
13972
15031
  rebuildImportSkippedRules;
13973
15032
  previewImportWorkspace;
13974
15033
  getWorkspaceThemes;
13975
- updateWorkspaceThemes;
13976
15034
  getWorkspaceBySlug;
13977
15035
  getWorkspaceScopes;
13978
15036
  getUsageDashboard;
@@ -14011,10 +15069,15 @@ var GravityRailClient = class {
14011
15069
  getVoiceTrustProducts;
14012
15070
  syncVoiceTrustProducts;
14013
15071
  createOrganizationWorkspace;
15072
+ getOrganizationWorkspace;
15073
+ updateOrganizationWorkspace;
14014
15074
  getOrgBillingCustomer;
14015
15075
  getA2PCampaignConfig;
14016
15076
  updateA2PCampaignConfig;
14017
15077
  getOrgWorkspaceUsage;
15078
+ updateOrganizationMember;
15079
+ listOrgWebhookEndpoints;
15080
+ getOrgWebhookEndpoint;
14018
15081
  getVapidPublicKey;
14019
15082
  registerPushSubscription;
14020
15083
  unregisterPushSubscription;
@@ -14051,6 +15114,7 @@ var GravityRailClient = class {
14051
15114
  logout;
14052
15115
  requestCrossDomainToken;
14053
15116
  exchangeToken;
15117
+ createRealtimeLoginToken;
14054
15118
  getDomainMapping;
14055
15119
  createSignup;
14056
15120
  createAccount;
@@ -14140,6 +15204,7 @@ var GravityRailClient = class {
14140
15204
  updateProject;
14141
15205
  updatePlan;
14142
15206
  resolveFilePath;
15207
+ downloadFileContents;
14143
15208
  downloadFilesZip;
14144
15209
  createFile;
14145
15210
  uploadFile;
@@ -14200,7 +15265,6 @@ var GravityRailClient = class {
14200
15265
  resetRoutineRuns;
14201
15266
  previewSchedule;
14202
15267
  previewRoutineVoiceReadiness;
14203
- previewRoutineWorkflowAccess;
14204
15268
  // Workflows API
14205
15269
  getWorkflows;
14206
15270
  getWorkflow;
@@ -14221,7 +15285,6 @@ var GravityRailClient = class {
14221
15285
  createWorkflowFromTemplate;
14222
15286
  getWorkflowTaskAssignmentStats;
14223
15287
  getTaskChats;
14224
- getWorkflowAccessValidation;
14225
15288
  getWorkflowConfigValidation;
14226
15289
  getWorkflowNotes;
14227
15290
  createWorkflowNote;
@@ -14333,6 +15396,7 @@ var GravityRailClient = class {
14333
15396
  previewTemplate;
14334
15397
  getVariableRegistry;
14335
15398
  getChatModels;
15399
+ getManagerModels;
14336
15400
  getRealtimeModels;
14337
15401
  getSTTModels;
14338
15402
  getTTSModels;
@@ -14445,6 +15509,7 @@ var GravityRailClient = class {
14445
15509
  getMondayConnectionBoardColumns;
14446
15510
  getMondayConnectionBoardGroups;
14447
15511
  getMondaySyncConfig;
15512
+ getMondaySyncLogs;
14448
15513
  updateMondaySyncConfig;
14449
15514
  getLinkedMondayMembers;
14450
15515
  getMondayReconciliationMatches;
@@ -14566,10 +15631,12 @@ var GravityRailClient = class {
14566
15631
  deleteSalesforce;
14567
15632
  getSalesforceReconciliationMatches;
14568
15633
  linkMemberToSalesforce;
15634
+ linkUnlinkedSalesforceMembersByIdentity;
14569
15635
  bulkLinkMembersToSalesforce;
14570
15636
  unlinkMemberFromSalesforce;
14571
15637
  getLinkedSalesforceMembers;
14572
15638
  getSalesforceSyncConfig;
15639
+ getSalesforceSyncLogs;
14573
15640
  updateSalesforceSyncConfig;
14574
15641
  resyncSalesforceLinkedMembers;
14575
15642
  listSalesforceObjects;
@@ -14666,6 +15733,14 @@ var GravityRailClient = class {
14666
15733
  closeWorkspaceSupportRequest;
14667
15734
  reopenWorkspaceSupportRequest;
14668
15735
  clickWorkspaceSupportRequestResource;
15736
+ // Routing Rules API
15737
+ getRoutingRules;
15738
+ getRoutingRule;
15739
+ createRoutingRule;
15740
+ updateRoutingRule;
15741
+ deleteRoutingRule;
15742
+ reorderRoutingRules;
15743
+ previewRoutingRule;
14669
15744
  constructor(apiKey, baseUrl, customFetch) {
14670
15745
  const apis = createApiModules(apiKey, baseUrl, customFetch);
14671
15746
  this.apis = apis;
@@ -14687,6 +15762,8 @@ var GravityRailClient = class {
14687
15762
  bindMotdMethods(this, apis.motd);
14688
15763
  bindTrackedLinksMethods(this, apis.trackedLinks);
14689
15764
  bindJourneysMethods(this, apis.journeys);
15765
+ bindBundlesMethods(this, apis.bundles, apis.resourceWorkflows);
15766
+ bindInstallationsMethods(this, apis.installations);
14690
15767
  bindExperimentsMethods(this, apis.experiments);
14691
15768
  bindOperatorMethods(this, apis.operatorGroups);
14692
15769
  bindOrgMethods(this, apis.org);
@@ -14740,6 +15817,7 @@ var GravityRailClient = class {
14740
15817
  bindCustomersMethods(this, apis.customers);
14741
15818
  bindResellersMethods(this, apis.resellers);
14742
15819
  bindSupportRequestMethods(this, apis.supportRequests);
15820
+ bindRoutingRulesMethods(this, apis.routingRules);
14743
15821
  }
14744
15822
  /**
14745
15823
  * Return a workspace-scoped client facade.
@@ -14817,32 +15895,6 @@ var GravityRailClient = class {
14817
15895
  }
14818
15896
  });
14819
15897
  }
14820
- /**
14821
- * Set the acting member UUID for member identity switching.
14822
- * When set, all API requests will include the X-Acting-Member header.
14823
- * The backend will validate that the authenticated account owns this member
14824
- * and use it as the effective identity for the request.
14825
- * Propagates to all API modules.
14826
- */
14827
- setActingMember(memberUuid) {
14828
- Object.values(this.apis).forEach((api) => {
14829
- if (typeof api.setActingMember === "function") {
14830
- api.setActingMember(memberUuid);
14831
- }
14832
- });
14833
- }
14834
- /**
14835
- * Get the current acting member UUID.
14836
- * Returns undefined if no member switch is active.
14837
- */
14838
- getActingMember() {
14839
- for (const api of Object.values(this.apis)) {
14840
- if (typeof api.getActingMember === "function") {
14841
- return api.getActingMember();
14842
- }
14843
- }
14844
- return void 0;
14845
- }
14846
15898
  };
14847
15899
 
14848
15900
  // src/workspace-builder/resource.ts
@@ -15894,8 +16946,8 @@ var JourneyV2Builder = class extends WorkspaceBuilderResource {
15894
16946
  *
15895
16947
  * A different rule set from the legacy builder's on purpose. "No incoming
15896
16948
  * edge" has no meaning in a timeline — position is the order — and the v2
15897
- * failure modes are different ones: an action-less touch that is not an
15898
- * explicit wait, and an Ending with no condition.
16949
+ * checks here cover branch shape and Ending conditions. Steps without
16950
+ * actions pass through, with or without a wait.
15899
16951
  */
15900
16952
  validate() {
15901
16953
  const problems = [];
@@ -15904,19 +16956,6 @@ var JourneyV2Builder = class extends WorkspaceBuilderResource {
15904
16956
  `journey '${this.name}' has no touches \u2014 an empty timeline has nothing to execute.`
15905
16957
  );
15906
16958
  }
15907
- const armHeads = new Set(
15908
- this.allRoutes().map((route) => route.touches[0]).filter(Boolean)
15909
- );
15910
- this.allTouches().forEach((touch) => {
15911
- if (touch.hasOutreach) return;
15912
- const wait = touch.options.wait;
15913
- const isFirst = this.touches[0] === touch;
15914
- const isExplicitWait = !isFirst && !armHeads.has(touch) && (wait?.afterDays !== void 0 || !!wait?.when || wait?.filterId !== void 0);
15915
- if (isExplicitWait) return;
15916
- problems.push(
15917
- `touch '${touch.name}' has no JOURNEY_STEP_EXECUTE action \u2014 a member reaching it gets nothing. Add one, or give it a wait so it is an explicit grace period.`
15918
- );
15919
- });
15920
16959
  for (const touch of this.allTouches()) {
15921
16960
  const branch = touch._branch;
15922
16961
  if (!branch) continue;
@@ -15938,13 +16977,6 @@ var JourneyV2Builder = class extends WorkspaceBuilderResource {
15938
16977
  `the Otherwise route of the branch after touch '${touch.name}' is not last; it is taken immediately, so any route after it can never be reached.`
15939
16978
  );
15940
16979
  }
15941
- for (const route of branch.routes) {
15942
- if (!route.touches.length && !route.options.continueAt) {
15943
- problems.push(
15944
- `route '${route.name}' has no target \u2014 give it at least one touch, or a \`continueAt\` naming the touch it continues to.`
15945
- );
15946
- }
15947
- }
15948
16980
  }
15949
16981
  for (const ending of this.endings) {
15950
16982
  if (!ending.when?.trim() && ending.filterId === void 0) {
@@ -16329,34 +17361,6 @@ function buildV2Wait(wait, touchIndex) {
16329
17361
  return { kind: "none", ...extras };
16330
17362
  }
16331
17363
 
16332
- // src/workspace-builder/role-update.ts
16333
- var RoleUpdate = class extends WorkspaceBuilderResource {
16334
- constructor(roleId, workflowIds, dataTypeIds) {
16335
- super();
16336
- this.roleId = roleId;
16337
- this.workflowIds = workflowIds;
16338
- this.dataTypeIds = dataTypeIds;
16339
- }
16340
- roleId;
16341
- workflowIds;
16342
- dataTypeIds;
16343
- planLine() {
16344
- const parts = [];
16345
- if (this.workflowIds) parts.push(`workflows=${JSON.stringify(this.workflowIds)}`);
16346
- if (this.dataTypeIds) parts.push(`dataTypes=${JSON.stringify(this.dataTypeIds)}`);
16347
- return `RoleUpdate: roleId=${this.roleId}${parts.length ? ` (${parts.join(", ")})` : ""}`;
16348
- }
16349
- async apply(client) {
16350
- if (this._existed) return;
16351
- const payload = {};
16352
- if (this.workflowIds) payload.workflowIds = this.workflowIds;
16353
- if (this.dataTypeIds) payload.dataTypeIds = this.dataTypeIds;
16354
- if (Object.keys(payload).length) await client.updateMemberRole(this.roleId, payload);
16355
- this._id = this.roleId;
16356
- this._created = true;
16357
- }
16358
- };
16359
-
16360
17364
  // src/workspace-builder/workflows.ts
16361
17365
  var PERM_KEYS = {
16362
17366
  canRead: "canRead",
@@ -16609,7 +17613,6 @@ var PHASES = /* @__PURE__ */ new Map([
16609
17613
  [AgentBuilder, 1],
16610
17614
  [WorkflowBuilder, 2],
16611
17615
  [TaskBuilder, 3],
16612
- [RoleUpdate, 4],
16613
17616
  [MemberFilterBuilder, 5],
16614
17617
  [RoutineBuilder, 6],
16615
17618
  [NotificationRuleBuilder, 6],
@@ -16631,10 +17634,6 @@ async function collectPages(fetchPage) {
16631
17634
  }
16632
17635
  return all;
16633
17636
  }
16634
- function sameIdSet(left, right) {
16635
- const target = new Set(right);
16636
- return target.size === new Set(left).size && left.every((id) => target.has(id));
16637
- }
16638
17637
  function notificationRuleKey(noticeType, memberId, workflowId) {
16639
17638
  return JSON.stringify([noticeType, memberId, workflowId]);
16640
17639
  }
@@ -16713,11 +17712,6 @@ var WorkspaceBuilder = class {
16713
17712
  this.resources.push(rule);
16714
17713
  return rule;
16715
17714
  }
16716
- roleUpdate(roleId, workflowIds, dataTypeIds) {
16717
- const update = new RoleUpdate(roleId, workflowIds, dataTypeIds);
16718
- this.resources.push(update);
16719
- return update;
16720
- }
16721
17715
  plan() {
16722
17716
  const resources = this.sortedResources();
16723
17717
  writeLine(`
@@ -16978,45 +17972,9 @@ Done! Created ${count} resources.`);
16978
17972
  }
16979
17973
  }
16980
17974
  }
16981
- await this.resolveExistingRoleUpdates(resources);
16982
17975
  await this.resolveExistingWorkflows(resources, workflowNames);
16983
17976
  await this.resolveExistingNotificationRules(resources);
16984
17977
  }
16985
- /**
16986
- * Adopt a role update whose grants the server already has.
16987
- *
16988
- * A role update is a replace-semantics PUT, not a create, so its identity is
16989
- * the role id and "already applied" means the id sets match exactly. Subset
16990
- * would be wrong: `roleUpdate(7, [])` asks to *clear* the role's workflow
16991
- * access, and treating that as satisfied by a role that still has grants
16992
- * would silently skip a real change.
16993
- *
16994
- * Only the fields this update declares are compared — an update that passes
16995
- * `workflowIds` and omits `dataTypeIds` never touches data-type access, so
16996
- * that access cannot make it stale.
16997
- */
16998
- async resolveExistingRoleUpdates(resources) {
16999
- const updates = resources.filter(
17000
- (resource) => resource instanceof RoleUpdate
17001
- );
17002
- if (!updates.length) return;
17003
- const rolesById = new Map(
17004
- (await this.client.getMemberRoles()).map((role) => [role.id, role])
17005
- );
17006
- for (const update of updates) {
17007
- const role = rolesById.get(update.roleId);
17008
- if (!role) continue;
17009
- const workflowsSettled = update.workflowIds === void 0 || sameIdSet(
17010
- update.workflowIds,
17011
- (role.workflowAccess ?? []).map((access) => access.workflowId)
17012
- );
17013
- const dataTypesSettled = update.dataTypeIds === void 0 || sameIdSet(
17014
- update.dataTypeIds,
17015
- (role.dataTypeAccess ?? []).map((access) => access.dataTypeId)
17016
- );
17017
- if (workflowsSettled && dataTypesSettled) update.adopt(role);
17018
- }
17019
- }
17020
17978
  /**
17021
17979
  * Adopt notification rules the server already has.
17022
17980
  *
@@ -17306,7 +18264,6 @@ function assertUniqueJourneyNames(journeys) {
17306
18264
  }
17307
18265
  }
17308
18266
  function resourceKey(resource) {
17309
- if (resource instanceof RoleUpdate) return "roleUpdates";
17310
18267
  if (resource instanceof FormBuilder) return "forms";
17311
18268
  if (resource instanceof MemberLabelBuilder) return "labels";
17312
18269
  if (resource instanceof WorkflowBuilder) return "workflows";
@@ -17430,7 +18387,6 @@ function writeScopeForResource(resource) {
17430
18387
  if (resource instanceof JourneyBuilder || resource instanceof JourneyStepBuilder || resource instanceof JourneyV2Builder) {
17431
18388
  return "journeys:write";
17432
18389
  }
17433
- if (resource instanceof RoleUpdate) return "member_roles:write";
17434
18390
  return null;
17435
18391
  }
17436
18392
  function scopeRetryHint(resource) {
@@ -17509,13 +18465,14 @@ var AbilityTypeSlugs = {
17509
18465
  GOOGLE_DRIVE: "integration:google_drive",
17510
18466
  GOOGLE_SHEETS: "integration:google_sheets",
17511
18467
  CHARLESTON_PMD_PAGING: "integration:charleston_pmd_paging",
18468
+ COSAN_PATHWAYS_SCHEDULING: "integration:cosan_pathways_scheduling",
17512
18469
  // Communication
17513
18470
  PHONE_CALL_TOOLS: "communication:phone_call_tools",
17514
18471
  SEND_SMS: "communication:send_sms",
18472
+ SEND_EMAIL: "communication:send_email",
17515
18473
  SEND_WHATSAPP: "communication:send_whatsapp",
17516
18474
  MEMBER_ACCESS: "communication:member_access",
17517
18475
  AUDIO_PLAYBACK: "communication:audio_playback",
17518
- IMAGE_DISPLAY: "communication:image_display",
17519
18476
  // Oversight
17520
18477
  SUPERVISOR: "oversight:supervisor",
17521
18478
  SUPERVISOR_ACTIONS: "oversight:supervisor_actions",
@@ -17527,6 +18484,8 @@ var AbilityTypeSlugs = {
17527
18484
  MANAGE_WORKSPACE: "delegation:manage_workspace",
17528
18485
  // Workflow
17529
18486
  WORKFLOW_RUN: "workflow:run",
18487
+ // Access
18488
+ MEMBER_ROLE_GATE: "access:member_role_gate",
17530
18489
  // Commerce
17531
18490
  RESELLER: "commerce:reseller",
17532
18491
  // System (auto-injected, hidden from users)
@@ -17545,14 +18504,7 @@ function getTTSProvider(ttsModel) {
17545
18504
  if (!ttsModel || ttsModel === "native") return ttsModel ?? null;
17546
18505
  return ttsModel.split(":")[0] ?? null;
17547
18506
  }
17548
- var TTS_PREVIEW_PROVIDERS = [
17549
- "openai",
17550
- "elevenlabs",
17551
- "google",
17552
- "aws",
17553
- "deepgram",
17554
- "xai"
17555
- ];
18507
+ var TTS_PREVIEW_PROVIDERS = ["openai", "google", "aws", "deepgram", "xai"];
17556
18508
  function getVoiceModelId(entity) {
17557
18509
  const config = entity.realtimeModelConfig;
17558
18510
  return config?.voiceModel ?? null;
@@ -17732,12 +18684,6 @@ var AbilityConfigIssueSeverity = {
17732
18684
  warning: "warning",
17733
18685
  error: "error"
17734
18686
  };
17735
- var WorkflowAccessWarningResourceType = {
17736
- form: "form",
17737
- file: "file",
17738
- folder: "folder",
17739
- calendar: "calendar"
17740
- };
17741
18687
 
17742
18688
  // src/types/generated/workflow.ts
17743
18689
  var WorkflowRoutingMode = {
@@ -17778,7 +18724,8 @@ var ImportSkippedRuleResponseParentKind = {
17778
18724
  var ImportSkippedRuleResponseReasonCode = {
17779
18725
  missing_binding: "missing_binding",
17780
18726
  invalid_event_rule_cel: "invalid_event_rule_cel",
17781
- unresolved_journey_scope: "unresolved_journey_scope"
18727
+ unresolved_journey_scope: "unresolved_journey_scope",
18728
+ missing_source_workflow: "missing_source_workflow"
17782
18729
  };
17783
18730
  var ImportSkippedRuleResponseStatus = {
17784
18731
  outstanding: "outstanding",
@@ -17910,15 +18857,15 @@ function isChatType(value) {
17910
18857
  }
17911
18858
 
17912
18859
  // src/constants/models.ts
17913
- var DEFAULT_CHAT_MODEL = "aws:bedrock:claude-4-5-haiku";
17914
- var DEFAULT_AGENT_CHAT_MODEL = "openai:chat:gpt-5.6-luna";
18860
+ var DEFAULT_CHAT_MODEL = "openai:chat:gpt-6-luna";
18861
+ var DEFAULT_AGENT_CHAT_MODEL = "openai:chat:gpt-6-luna";
17915
18862
  var DEFAULT_AGENT_REALTIME_MODEL = "xai:realtime:voice-agent-2";
17916
18863
  var DEFAULT_AGENT_REALTIME_MODEL_CONFIG = {
17917
18864
  ttsModel: "native",
17918
18865
  voiceModel: "xai:voice:cosmo"
17919
18866
  };
17920
- var DEFAULT_VOICE_INFERENCE_MODEL = "openai:chat:gpt-5.6-luna";
17921
- var DEFAULT_CUSTOM_VOICE_MODEL = "elevenlabs:voice:river";
18867
+ var DEFAULT_VOICE_INFERENCE_MODEL = "openai:chat:gpt-6-luna";
18868
+ var DEFAULT_CUSTOM_VOICE_MODEL = "xai:voice:lux";
17922
18869
 
17923
18870
  // src/types/resource-metadata.ts
17924
18871
  var RESOURCE_METADATA = {
@@ -18049,6 +18996,14 @@ var ActivityWindowBasis = {
18049
18996
  absolute: "absolute",
18050
18997
  workspace_local: "workspace_local"
18051
18998
  };
18999
+ var FeedCursorRejection = {
19000
+ malformed: "malformed",
19001
+ signature: "signature",
19002
+ version: "version",
19003
+ expired: "expired",
19004
+ scope_mismatch: "scope_mismatch",
19005
+ query_mismatch: "query_mismatch"
19006
+ };
18052
19007
 
18053
19008
  // src/types/generated/family.ts
18054
19009
  var ActivityEventFamily = {
@@ -18081,6 +19036,7 @@ var ActivityCapability = {
18081
19036
  "operator:read": "operator:read",
18082
19037
  "org:read": "org:read",
18083
19038
  "phones:read": "phones:read",
19039
+ "records:read": "records:read",
18084
19040
  "workflows:read": "workflows:read",
18085
19041
  "workspace:read": "workspace:read"
18086
19042
  };
@@ -18103,16 +19059,19 @@ var ActivityEventType = {
18103
19059
  chatawaiting_human: "chat.awaiting_human",
18104
19060
  chathuman_replied: "chat.human_replied",
18105
19061
  chatcall_ended: "chat.call_ended",
19062
+ chatsummary: "chat.summary",
18106
19063
  escalationopened: "escalation.opened",
18107
19064
  escalationresolved: "escalation.resolved",
18108
19065
  callstarted: "call.started",
18109
19066
  callcompleted: "call.completed",
18110
19067
  callmissed: "call.missed",
19068
+ callsummary: "call.summary",
18111
19069
  presencewent_online: "presence.went_online",
18112
19070
  presencewent_offline: "presence.went_offline",
18113
19071
  operator_groupmember_added: "operator_group.member_added",
18114
19072
  operator_groupmember_removed: "operator_group.member_removed",
18115
19073
  voicemailreceived: "voicemail.received",
19074
+ voicemailtranscribed: "voicemail.transcribed",
18116
19075
  voicemaillistened: "voicemail.listened",
18117
19076
  routinestarted: "routine.started",
18118
19077
  routinecompleted: "routine.completed",
@@ -18128,7 +19087,9 @@ var ActivityEventType = {
18128
19087
  phone_numberarchived: "phone_number.archived",
18129
19088
  domainlinked: "domain.linked",
18130
19089
  domainverified: "domain.verified",
18131
- configupdated: "config.updated"
19090
+ configupdated: "config.updated",
19091
+ data_recordcreated: "data_record.created",
19092
+ data_recordupdated: "data_record.updated"
18132
19093
  };
18133
19094
  var ActivityVisibility = {
18134
19095
  workspace: "workspace",
@@ -18143,7 +19104,8 @@ var ActorKind = {
18143
19104
  connection: "connection",
18144
19105
  member: "member",
18145
19106
  org_account: "org_account",
18146
- system: "system"
19107
+ system: "system",
19108
+ unattributed: "unattributed"
18147
19109
  };
18148
19110
  var EntityKind = {
18149
19111
  account: "account",
@@ -18175,7 +19137,8 @@ var EntityKind = {
18175
19137
  purchase: "purchase",
18176
19138
  subscription: "subscription",
18177
19139
  data_type: "data_type",
18178
- workspace_config: "workspace_config"
19140
+ workspace_config: "workspace_config",
19141
+ data_record: "data_record"
18179
19142
  };
18180
19143
 
18181
19144
  // src/scopes.ts
@@ -18203,6 +19166,7 @@ var ScopeCategory = /* @__PURE__ */ ((ScopeCategory2) => {
18203
19166
  ScopeCategory2["APPS"] = "apps";
18204
19167
  ScopeCategory2["LABELS"] = "labels";
18205
19168
  ScopeCategory2["ANALYTICS"] = "analytics";
19169
+ ScopeCategory2["ANONYMOUS_SUBMISSIONS"] = "anonymous_submissions";
18206
19170
  ScopeCategory2["OPERATOR"] = "operator";
18207
19171
  ScopeCategory2["EXPORT"] = "export";
18208
19172
  ScopeCategory2["ORG"] = "org";
@@ -18665,6 +19629,14 @@ var SCOPES = {
18665
19629
  description: "View analytics and reports"
18666
19630
  },
18667
19631
  // =========================================================================
19632
+ // ANONYMOUS FORM SUBMISSIONS (read-only: submissions are immutable)
19633
+ // =========================================================================
19634
+ "anonymous_submissions:read": {
19635
+ name: "anonymous_submissions:read",
19636
+ category: "anonymous_submissions" /* ANONYMOUS_SUBMISSIONS */,
19637
+ description: "View what anonymous visitors submitted on anonymous Forms"
19638
+ },
19639
+ // =========================================================================
18668
19640
  // EXPORT
18669
19641
  // =========================================================================
18670
19642
  "export:read": {
@@ -18897,6 +19869,49 @@ var ChatInteractionController = class {
18897
19869
  this.pending = void 0;
18898
19870
  }
18899
19871
  };
19872
+
19873
+ // src/helpers/member-import.ts
19874
+ function toSafeMemberImportPreview(preview) {
19875
+ return {
19876
+ previewPlanToken: preview.previewPlanToken,
19877
+ totalRows: preview.totalRows,
19878
+ summary: preview.summary,
19879
+ rows: preview.rows.map((row) => ({
19880
+ row: row.row,
19881
+ action: row.action,
19882
+ memberId: row.match?.memberId,
19883
+ matchType: row.match?.matchType,
19884
+ conflict: row.conflict ? { code: row.conflict.code, fields: row.conflict.fields } : void 0,
19885
+ proposedChanges: row.proposedChanges,
19886
+ sharedContacts: row.sharedContacts
19887
+ }))
19888
+ };
19889
+ }
19890
+ function toSafeMemberImportSummary(event) {
19891
+ return {
19892
+ total: event.total,
19893
+ created: event.created,
19894
+ updated: event.updated,
19895
+ unchanged: event.unchanged,
19896
+ failed: event.failed,
19897
+ conflicted: event.conflicted,
19898
+ skipped: event.skipped,
19899
+ failedRows: event.failedRows,
19900
+ conflictRows: event.conflictRows,
19901
+ skippedRows: event.skippedRows,
19902
+ conflicts: event.conflicts?.map(({ row, code, fields, member_id }) => ({
19903
+ row,
19904
+ code,
19905
+ fields,
19906
+ memberId: member_id
19907
+ })),
19908
+ updatedMembers: event.updatedMembers?.map(({ row, memberId, changes }) => ({
19909
+ row,
19910
+ memberId,
19911
+ changes
19912
+ }))
19913
+ };
19914
+ }
18900
19915
  // Annotate the CommonJS export names for ESM import in node:
18901
19916
  0 && (module.exports = {
18902
19917
  AGENT_NOTE_ORIGINS,
@@ -18927,6 +19942,8 @@ var ChatInteractionController = class {
18927
19942
  BaseApiClient,
18928
19943
  BuildersApi,
18929
19944
  BulkMemberResultStatus,
19945
+ BundleGrantRequestGranteeType,
19946
+ BundlesApi,
18930
19947
  BusinessIndustry,
18931
19948
  BusinessType,
18932
19949
  CELApi,
@@ -18943,7 +19960,11 @@ var ChatInteractionController = class {
18943
19960
  ChatInteractionController,
18944
19961
  ChatMuteReason,
18945
19962
  ConsentMethod,
19963
+ CreateMemberContactPointRequestContactType,
19964
+ CreateMemberContactPointRequestPurpose,
19965
+ CreateMemberContactPointRequestSharing,
18946
19966
  CriterionType,
19967
+ CrmActivityKind,
18947
19968
  DEFAULT_AGENT_CHAT_MODEL,
18948
19969
  DEFAULT_AGENT_REALTIME_MODEL,
18949
19970
  DEFAULT_AGENT_REALTIME_MODEL_CONFIG,
@@ -18966,10 +19987,12 @@ var ChatInteractionController = class {
18966
19987
  EventRuleObjectType,
18967
19988
  FeatureCategory,
18968
19989
  FeatureVisibility,
19990
+ FeedCursorRejection,
18969
19991
  FhirClientType,
18970
19992
  FhirConnectionState,
18971
19993
  FhirVendor,
18972
19994
  FormBuilder,
19995
+ FormBundleItemRecordScope,
18973
19996
  GravityRailClient,
18974
19997
  ImportSkippedRuleResourceGroupResourceType,
18975
19998
  ImportSkippedRuleResponseNeededResourceTypesItem,
@@ -18978,6 +20001,8 @@ var ChatInteractionController = class {
18978
20001
  ImportSkippedRuleResponseStatus,
18979
20002
  InboundFaxStatusValues,
18980
20003
  IndexStatus,
20004
+ InstallationItemChangeChange,
20005
+ InstallationsApi,
18981
20006
  InvitationStatus,
18982
20007
  JobPosition,
18983
20008
  JourneyBuilder,
@@ -19028,13 +20053,20 @@ var ChatInteractionController = class {
19028
20053
  REALTIME_MODEL_OPENAI_2,
19029
20054
  REALTIME_MODEL_OPENAI_MINI,
19030
20055
  RefResolutionStatus,
20056
+ ReferenceTargetInputKind,
19031
20057
  Region,
19032
20058
  RegistrationIdentifier,
19033
20059
  RelatedMemberRole,
19034
20060
  RelationshipCardinality,
19035
20061
  Resource,
19036
- RoleUpdate,
20062
+ ResourceWorkflowsApi,
20063
+ RevisionHistorySegment,
19037
20064
  RoutineBuilder,
20065
+ RoutingActionType,
20066
+ RoutingAudience,
20067
+ RoutingChannel,
20068
+ RoutingTimeWindow,
20069
+ RunHealthCategory,
19038
20070
  SCOPES,
19039
20071
  SCOPE_PRESETS,
19040
20072
  SMS_DELIVERY_FAILURE_STATUSES,
@@ -19042,17 +20074,25 @@ var ChatInteractionController = class {
19042
20074
  STT_MODEL_DEEPGRAM_FLUX_MULTI,
19043
20075
  STT_MODEL_DEEPGRAM_FLUX_MULTI_SELFHOST,
19044
20076
  STT_MODEL_DEEPGRAM_FLUX_SELFHOST,
20077
+ ScalarTargetInputKind,
20078
+ ScenarioHealthCaption,
20079
+ ScenarioHealthHeadline,
20080
+ ScenarioHealthSampleNote,
20081
+ ScenarioHealthState,
20082
+ ScenarioRunBlocker,
19045
20083
  Scope,
19046
20084
  ScopeCategory,
19047
20085
  ScopeManager,
20086
+ SendingNextStep,
20087
+ SendingStopState,
20088
+ SetInstallationPolicyRequestUpgradePolicy,
19048
20089
  SiteDnsRecordType,
20090
+ SolutionReleaseResponseSlug,
19049
20091
  SupervisorsApi,
19050
20092
  TTS_MODEL_AWS_POLLY_GENERATIVE,
19051
20093
  TTS_MODEL_AWS_POLLY_NEURAL,
19052
20094
  TTS_MODEL_DEEPGRAM_AURA_2,
19053
- TTS_MODEL_ELEVENLABS_FLASH,
19054
- TTS_MODEL_ELEVENLABS_MULTILINGUAL,
19055
- TTS_MODEL_ELEVENLABS_TURBO,
20095
+ TTS_MODEL_XAI_V1,
19056
20096
  TTS_PREVIEW_PROVIDERS,
19057
20097
  TaskBuilder,
19058
20098
  TemplatesApi,
@@ -19062,11 +20102,11 @@ var ChatInteractionController = class {
19062
20102
  UiPromptPresentedKindValues,
19063
20103
  UiPromptResponseKindValues,
19064
20104
  UiPromptResponseStatusValues,
20105
+ UpdateMemberContactPointRequestContactType,
20106
+ UpdateMemberContactPointRequestPurpose,
20107
+ UpdateMemberContactPointRequestSharing,
19065
20108
  WIDGET_SLUGS,
19066
- WORKFLOW_IMPLICIT_USE_SCOPE,
19067
- WorkflowAccessWarningResourceType,
19068
20109
  WorkflowBuilder,
19069
- WorkflowResourceType,
19070
20110
  WorkflowRoutingMode,
19071
20111
  WorkspaceBuilder,
19072
20112
  WorkspaceBuilderResource,
@@ -19106,10 +20146,9 @@ var ChatInteractionController = class {
19106
20146
  isSMSDeliveryFailureStatus,
19107
20147
  parseOrgAuthChallenge,
19108
20148
  requiresAssistantParticipant,
19109
- roleCanUseWorkflow,
19110
- roleImplicitWorkflowUseScope,
19111
- roleWorkflowAccess,
19112
20149
  runWorkspaceScript,
20150
+ toSafeMemberImportPreview,
20151
+ toSafeMemberImportSummary,
19113
20152
  usesBuiltinAssistant,
19114
20153
  validateFeatureDependencies
19115
20154
  });