@gravity-rail/sdk 0.36.1 → 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-CbkSPz3m.d.cts → chat-interaction-BB3ap8_u.d.ts} +8866 -6155
  7. package/dist/{chat-interaction-DqjEfj7G.d.ts → chat-interaction-Bj1pciwo.d.cts} +8866 -6155
  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-R6S5RXW5.js → chunk-ZTUOB4V2.js} +1255 -201
  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 +1365 -330
  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 +110 -116
  27. package/dist/index.js.map +1 -1
  28. package/dist/internal.cjs +1279 -232
  29. package/dist/internal.cjs.map +1 -1
  30. package/dist/internal.d.cts +338 -79
  31. package/dist/internal.d.ts +338 -79
  32. package/dist/internal.js +66 -15
  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-92LHz1jQ.d.ts → revision-state-BaJTq3Or.d.ts} +270 -54
  43. package/dist/{revision-state-CSQ7J3ZU.d.cts → revision-state-CL11FA-T.d.cts} +270 -54
  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-CrF1qC4G.d.cts → tasks-ByJCQ5BI.d.cts} +2995 -2507
  51. package/dist/{tasks-CrF1qC4G.d.ts → tasks-ByJCQ5BI.d.ts} +2995 -2507
  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-R6S5RXW5.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,10 +180,20 @@ __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,
@@ -181,11 +208,11 @@ __export(src_exports, {
181
208
  UiPromptPresentedKindValues: () => UiPromptPresentedKind,
182
209
  UiPromptResponseKindValues: () => UiPromptResponseKind,
183
210
  UiPromptResponseStatusValues: () => UiPromptResponseStatus,
211
+ UpdateMemberContactPointRequestContactType: () => UpdateMemberContactPointRequestContactType,
212
+ UpdateMemberContactPointRequestPurpose: () => UpdateMemberContactPointRequestPurpose,
213
+ UpdateMemberContactPointRequestSharing: () => UpdateMemberContactPointRequestSharing,
184
214
  WIDGET_SLUGS: () => WIDGET_SLUGS,
185
- WORKFLOW_IMPLICIT_USE_SCOPE: () => WORKFLOW_IMPLICIT_USE_SCOPE,
186
- WorkflowAccessWarningResourceType: () => WorkflowAccessWarningResourceType,
187
215
  WorkflowBuilder: () => WorkflowBuilder,
188
- WorkflowResourceType: () => WorkflowAccessWarningResourceType,
189
216
  WorkflowRoutingMode: () => WorkflowRoutingMode,
190
217
  WorkspaceBuilder: () => WorkspaceBuilder,
191
218
  WorkspaceBuilderResource: () => WorkspaceBuilderResource,
@@ -225,10 +252,9 @@ __export(src_exports, {
225
252
  isSMSDeliveryFailureStatus: () => isSMSDeliveryFailureStatus,
226
253
  parseOrgAuthChallenge: () => parseOrgAuthChallenge,
227
254
  requiresAssistantParticipant: () => requiresAssistantParticipant,
228
- roleCanUseWorkflow: () => roleCanUseWorkflow,
229
- roleImplicitWorkflowUseScope: () => roleImplicitWorkflowUseScope,
230
- roleWorkflowAccess: () => roleWorkflowAccess,
231
255
  runWorkspaceScript: () => runWorkspaceScript,
256
+ toSafeMemberImportPreview: () => toSafeMemberImportPreview,
257
+ toSafeMemberImportSummary: () => toSafeMemberImportSummary,
232
258
  usesBuiltinAssistant: () => usesBuiltinAssistant,
233
259
  validateFeatureDependencies: () => validateFeatureDependencies
234
260
  });
@@ -327,7 +353,6 @@ var BaseApiClient = class {
327
353
  enhancedAuthInProgress = null;
328
354
  orgAuthHandler;
329
355
  orgAuthInProgress = null;
330
- actingMemberUuid;
331
356
  orgSession;
332
357
  /**
333
358
  * The org_uuid that issued the current org auth credential. Tracked so we can detect
@@ -367,21 +392,6 @@ var BaseApiClient = class {
367
392
  updateApiKey(newApiKey) {
368
393
  this.apiKey = newApiKey;
369
394
  }
370
- /**
371
- * Set the acting member UUID for member identity switching.
372
- * When set, all API requests will include the X-Acting-Member header.
373
- * The backend will validate that the authenticated account owns this member
374
- * and use it as the effective identity for the request.
375
- */
376
- setActingMember(memberUuid) {
377
- this.actingMemberUuid = memberUuid;
378
- }
379
- /**
380
- * Get the current acting member UUID.
381
- */
382
- getActingMember() {
383
- return this.actingMemberUuid;
384
- }
385
395
  /**
386
396
  * Set the opaque org session credential for cross-domain requests.
387
397
  * Opaque gr_sess_ values use X-Org-Session. Legacy orgToken JWE values still
@@ -419,9 +429,6 @@ var BaseApiClient = class {
419
429
  headers.set("Authorization", `Bearer ${requestToken}`);
420
430
  }
421
431
  }
422
- if (this.actingMemberUuid) {
423
- headers.set("X-Acting-Member", this.actingMemberUuid);
424
- }
425
432
  setOrgAuthHeader(headers, this.orgSession);
426
433
  const fullUrl = `${this.baseUrl}/api/v2/${endpoint}`;
427
434
  const response = await this.fetchFunction(fullUrl, {
@@ -573,9 +580,6 @@ ${formattedErrors}`, response.status);
573
580
  headers.set("Authorization", `Bearer ${requestToken}`);
574
581
  }
575
582
  }
576
- if (this.actingMemberUuid) {
577
- headers.set("X-Acting-Member", this.actingMemberUuid);
578
- }
579
583
  setOrgAuthHeader(headers, this.orgSession);
580
584
  const response = await this.fetchFunction(`${this.baseUrl}/api/v2/${endpoint}`, {
581
585
  ...options,
@@ -685,9 +689,6 @@ ${formattedErrors}`, response.status);
685
689
  headers.set("Authorization", `Bearer ${requestToken}`);
686
690
  }
687
691
  }
688
- if (this.actingMemberUuid) {
689
- headers.set("X-Acting-Member", this.actingMemberUuid);
690
- }
691
692
  setOrgAuthHeader(headers, this.orgSession);
692
693
  const fullUrl = `${this.baseUrl}/${path}`;
693
694
  const response = await this.fetchFunction(fullUrl, {
@@ -783,6 +784,299 @@ var AbilitiesApi = class extends BaseApiClient {
783
784
  }
784
785
  };
785
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
+
786
1080
  // src/api/access-grants.ts
787
1081
  var AccessGrantsApi = class extends BaseApiClient {
788
1082
  /** List access grants received by the current member. */
@@ -915,7 +1209,6 @@ var AgentsApi = class extends BaseApiClient {
915
1209
  if (options.search) params.append("search", options.search);
916
1210
  if (options.includeArchived)
917
1211
  params.append("includeArchived", options.includeArchived.toString());
918
- if (options.owner) params.append("owner", options.owner);
919
1212
  return this.fetch(
920
1213
  `w/${wid}/agents${params.toString() ? `?${params.toString()}` : ""}`
921
1214
  );
@@ -971,6 +1264,18 @@ var AIModelsApi = class extends BaseApiClient {
971
1264
  const url = queryString ? `ai-models/chat?${queryString}` : "ai-models/chat";
972
1265
  return this.fetch(url);
973
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
+ }
974
1279
  /**
975
1280
  * Get available realtime AI models
976
1281
  */
@@ -1422,6 +1727,19 @@ var AuthApi = class extends BaseApiClient {
1422
1727
  body: JSON.stringify(request)
1423
1728
  });
1424
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
+ }
1425
1743
  /** Get the organization and workspace mapping for a custom domain. */
1426
1744
  async getDomainMapping(customDomain) {
1427
1745
  return this.fetch(`s/mapping/${customDomain}`);
@@ -2081,6 +2399,26 @@ var ChatsApi = class extends BaseApiClient {
2081
2399
  async getChat(wid, id) {
2082
2400
  return this.fetch(`w/${wid}/chats/${id}`);
2083
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
+ }
2084
2422
  /**
2085
2423
  * Get a short-lived, interactive AgentCore browser view for this Chat.
2086
2424
  *
@@ -2687,10 +3025,18 @@ var DashboardsApi = class extends BaseApiClient {
2687
3025
  `w/${wid}/dashboards/stats/channels${query ? `?${query}` : ""}`
2688
3026
  );
2689
3027
  }
2690
- /** Assignment status rollup per root workflow. */
2691
- 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();
2692
3038
  return this.fetch(
2693
- `w/${wid}/dashboards/stats/workflow-assignments`
3039
+ `w/${wid}/dashboards/stats/workflow-assignments${query ? `?${query}` : ""}`
2694
3040
  );
2695
3041
  }
2696
3042
  /**
@@ -2832,6 +3178,26 @@ var DataTypesApi = class extends BaseApiClient {
2832
3178
  `w/${wid}/data-types/${dataTypeId}/records${params?.toString() ? `?${params.toString()}` : ""}`
2833
3179
  );
2834
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
+ }
2835
3201
  // Data-record filter APIs (saved Query IR predicates per form)
2836
3202
  /** List saved data-record filters, optionally scoped to one DataType. */
2837
3203
  async getDataRecordFilters(wid, options) {
@@ -2874,6 +3240,15 @@ var DataTypesApi = class extends BaseApiClient {
2874
3240
  async getDataRecord(wid, recordId) {
2875
3241
  return this.fetch(`w/${wid}/data-types/records/${recordId}`);
2876
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
+ }
2877
3252
  /** Create a new data record under the specified data type. */
2878
3253
  async createDataRecord(wid, dataTypeId, record) {
2879
3254
  return this.fetch(`w/${wid}/data-types/${dataTypeId}/records`, {
@@ -3418,20 +3793,6 @@ var EventsApi = class extends BaseApiClient {
3418
3793
  body: JSON.stringify(request)
3419
3794
  });
3420
3795
  }
3421
- /**
3422
- * Preview which target-audience roles lack Workflow USE for the Workflows a
3423
- * draft Routine would start. Non-persisting, non-blocking authoring assist —
3424
- * returns warnings only (role/Workflow names + IDs; no Member data).
3425
- */
3426
- async previewRoutineWorkflowAccess(wid, request) {
3427
- return this.fetch(
3428
- `w/${wid}/routines/preview-workflow-access`,
3429
- {
3430
- method: "POST",
3431
- body: JSON.stringify(request)
3432
- }
3433
- );
3434
- }
3435
3796
  /**
3436
3797
  * Preview what would stop a draft Routine placing its scheduled outbound
3437
3798
  * calls — the Member voice opt-out, a missing member phone, or a
@@ -4137,6 +4498,19 @@ var FilesApi = class extends BaseApiClient {
4137
4498
  if (folderId != null) params.append("folderId", String(folderId));
4138
4499
  return this.fetch(`w/${wid}/files/resolve-path?${params.toString()}`);
4139
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
+ }
4140
4514
  /**
4141
4515
  * Download the given files + folders (folders recursively) as a single ZIP.
4142
4516
  * Returns the raw archive bytes for the caller to save.
@@ -4888,7 +5262,21 @@ function throwMemberImportError(errorBody, fallback) {
4888
5262
  }
4889
5263
  throw new Error(typeof detail === "string" ? detail : fallback);
4890
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
+ }
4891
5278
  var MembersApi = class extends BaseApiClient {
5279
+ memberImportPlans = /* @__PURE__ */ new WeakMap();
4892
5280
  /** Get the currently authenticated member for a workspace. */
4893
5281
  async getCurrentMember(wid) {
4894
5282
  return this.fetch(`w/${wid}/me`);
@@ -4941,33 +5329,6 @@ var MembersApi = class extends BaseApiClient {
4941
5329
  `w/${wid}/me/records?${params.toString()}`
4942
5330
  );
4943
5331
  }
4944
- /**
4945
- * Get all members owned by the current member in this workspace.
4946
- * Returns the authenticated member plus any members they own (via owner_id).
4947
- * Used by the member switcher to show available identities.
4948
- */
4949
- async getOwnedMembers(wid) {
4950
- return this.fetch(`w/${wid}/members/owned`);
4951
- }
4952
- /**
4953
- * Switch to a different member identity owned by the current member.
4954
- * Sets the actingAsMemberUuid cookie for subsequent requests.
4955
- * Uses UUID (not ID) to prevent cross-workspace identity confusion.
4956
- */
4957
- async switchMember(wid, memberUuid) {
4958
- return this.fetch(`w/${wid}/members/switch`, {
4959
- method: "POST",
4960
- body: JSON.stringify({ memberUuid })
4961
- });
4962
- }
4963
- /**
4964
- * Clear the member switch and return to the authenticated member.
4965
- */
4966
- async clearMemberSwitch(wid) {
4967
- return this.fetch(`w/${wid}/members/switch`, {
4968
- method: "DELETE"
4969
- });
4970
- }
4971
5332
  /** Update the currently authenticated member's profile. */
4972
5333
  async updateCurrentMember(wid, member) {
4973
5334
  return this.fetch(`w/${wid}/me`, {
@@ -5007,6 +5368,16 @@ var MembersApi = class extends BaseApiClient {
5007
5368
  async getWorkspaceMember(wid, memberId) {
5008
5369
  return this.fetch(`w/${wid}/members/${memberId}`);
5009
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
+ }
5010
5381
  /**
5011
5382
  * Get one member of an org's workspace, under `org:read`.
5012
5383
  *
@@ -5058,6 +5429,53 @@ var MembersApi = class extends BaseApiClient {
5058
5429
  method: "POST"
5059
5430
  });
5060
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
+ }
5061
5479
  /**
5062
5480
  * Send the member an SMS asking them to confirm their phone number. When they
5063
5481
  * reply, a trusted phone auth binding is created so they can use SMS as
@@ -5199,16 +5617,13 @@ var MembersApi = class extends BaseApiClient {
5199
5617
  * operator can decide whether to skip or explicitly overwrite before
5200
5618
  * committing. Requires MEMBERS_ADMIN and is bulk-PHI audited server-side.
5201
5619
  */
5202
- async previewImportMembers(wid, file, newMemberRoleId) {
5203
- const formData = new FormData();
5204
- formData.append("file", file);
5205
- const params = new URLSearchParams();
5206
- params.append("new_member_role_id", newMemberRoleId.toString());
5620
+ async previewImportMembers(wid, file, newMemberRoleId, options) {
5621
+ const { body, params } = memberImportUpload(file, newMemberRoleId, options);
5207
5622
  const response = await this.fetchRaw(
5208
5623
  `w/${wid}/members/import/preview?${params.toString()}`,
5209
5624
  {
5210
5625
  method: "POST",
5211
- body: formData
5626
+ body
5212
5627
  },
5213
5628
  [400, 413]
5214
5629
  );
@@ -5216,7 +5631,19 @@ var MembersApi = class extends BaseApiClient {
5216
5631
  const error = await response.json().catch(() => ({}));
5217
5632
  throwMemberImportError(error, "Import preview failed");
5218
5633
  }
5219
- 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;
5220
5647
  }
5221
5648
  /**
5222
5649
  * Import members from a CSV file, streaming progress updates via callback.
@@ -5226,10 +5653,11 @@ var MembersApi = class extends BaseApiClient {
5226
5653
  * Send 'overwrite_identity_fields' only after the operator confirms a preview.
5227
5654
  */
5228
5655
  async importMembers(wid, file, newMemberRoleId, onProgress, options) {
5229
- const formData = new FormData();
5230
- formData.append("file", file);
5231
- const params = new URLSearchParams();
5232
- 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);
5233
5661
  if (options?.identityConflictPolicy) {
5234
5662
  params.append("identity_conflict_policy", options.identityConflictPolicy);
5235
5663
  }
@@ -5237,7 +5665,7 @@ var MembersApi = class extends BaseApiClient {
5237
5665
  `w/${wid}/members/import?${params.toString()}`,
5238
5666
  {
5239
5667
  method: "POST",
5240
- body: formData
5668
+ body
5241
5669
  },
5242
5670
  [400, 413]
5243
5671
  );
@@ -5245,34 +5673,48 @@ var MembersApi = class extends BaseApiClient {
5245
5673
  const error = await response.json().catch(() => ({}));
5246
5674
  throwMemberImportError(error, "Import failed");
5247
5675
  }
5248
- if (onProgress && response.body) {
5249
- const reader = response.body.getReader();
5250
- const decoder = new TextDecoder();
5251
- 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 {
5252
5695
  while (true) {
5253
5696
  const { done, value } = await reader.read();
5254
5697
  if (done) break;
5255
5698
  buffer += decoder.decode(value, { stream: true });
5256
5699
  const lines = buffer.split("\n");
5257
5700
  buffer = lines.pop() ?? "";
5258
- for (const line of lines) {
5259
- const trimmed = line.trim();
5260
- if (!trimmed) continue;
5261
- try {
5262
- onProgress(JSON.parse(trimmed));
5263
- } catch {
5264
- }
5265
- }
5266
- }
5267
- const tail = buffer.trim();
5268
- if (tail) {
5269
- try {
5270
- onProgress(JSON.parse(tail));
5271
- } catch {
5272
- }
5701
+ for (const line of lines) consume(line);
5273
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();
5274
5710
  }
5275
- return { success: true };
5711
+ if (!result) {
5712
+ throw new Error("Member import ended before completion; inspect members before retrying");
5713
+ }
5714
+ return {
5715
+ success: !hadError && (result.failed ?? 0) === 0 && (result.conflicted ?? 0) === 0,
5716
+ result
5717
+ };
5276
5718
  }
5277
5719
  /** Export members as a downloadable file with selected fields and data types. */
5278
5720
  async exportMembers(wid, selectedFields, selectedDataTypes, memberType) {
@@ -5928,6 +6370,21 @@ var MondayIntegrationApi = class extends BaseApiClient {
5928
6370
  method: "POST"
5929
6371
  });
5930
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
+ }
5931
6388
  };
5932
6389
 
5933
6390
  // src/api/intervention-requests.ts
@@ -6085,6 +6542,10 @@ var OrgApi = class extends BaseApiClient {
6085
6542
  async getCurrentOrgMember(orgIdOrUuid) {
6086
6543
  return this.fetch(`o/${orgIdOrUuid}/me`);
6087
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
+ }
6088
6549
  /**
6089
6550
  * Update the settings an org admin owns: name, slug and contact details.
6090
6551
  *
@@ -6126,6 +6587,12 @@ var OrgApi = class extends BaseApiClient {
6126
6587
  * `subscriptionId` is the org-scoped row — never pick the customer's
6127
6588
  * newest subscription from the list endpoint. One customer can bill many
6128
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.
6129
6596
  */
6130
6597
  async getOrgBillingCustomer(orgIdOrUuid) {
6131
6598
  return this.fetch(`o/${orgIdOrUuid}/billing-customer`);
@@ -6162,7 +6629,10 @@ var OrgApi = class extends BaseApiClient {
6162
6629
  return this.fetch(`o/${orgUuid}/members/check/${accountUuid}`);
6163
6630
  }
6164
6631
  /**
6165
- * 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.
6166
6636
  */
6167
6637
  async updateOrganizationMember(orgIdOrUuid, memberId, data) {
6168
6638
  return this.fetch(`o/${orgIdOrUuid}/members/${memberId}`, {
@@ -6537,12 +7007,6 @@ var OrgApi = class extends BaseApiClient {
6537
7007
  // ============================================================================
6538
7008
  // Organization A2P Brand Registration API
6539
7009
  // ============================================================================
6540
- /**
6541
- * Get the org's A2P brand registration status.
6542
- */
6543
- async getA2PStatus(orgUuid) {
6544
- return this.fetch(`o/${orgUuid}/phone-numbers/a2p/status`);
6545
- }
6546
7010
  /** Return fixed phone-number and outbound-messaging prices. */
6547
7011
  async getPhoneBillingPricing(orgUuid) {
6548
7012
  return this.fetch(`o/${orgUuid}/phone-numbers/pricing`);
@@ -6551,11 +7015,30 @@ var OrgApi = class extends BaseApiClient {
6551
7015
  * Start A2P brand registration under a legal entity. `legalEntityUuid`
6552
7016
  * is required — brands register per legal entity (Customer Profile);
6553
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.
6554
7032
  */
6555
- async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandUuid = null) {
7033
+ async startA2PRegistration(orgUuid, legalEntityUuid, brandName, brandUuid = null, soleProprietorMobile = null) {
6556
7034
  return this.fetch(`o/${orgUuid}/phone-numbers/a2p/start`, {
6557
7035
  method: "POST",
6558
- body: JSON.stringify({ legalEntityUuid, brandName, brandUuid })
7036
+ body: JSON.stringify({
7037
+ legalEntityUuid,
7038
+ brandName,
7039
+ brandUuid,
7040
+ soleProprietorMobile
7041
+ })
6559
7042
  });
6560
7043
  }
6561
7044
  /**
@@ -6583,6 +7066,25 @@ var OrgApi = class extends BaseApiClient {
6583
7066
  }
6584
7067
  );
6585
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
+ }
6586
7088
  // ============================================================================
6587
7089
  // Organization Business Profile API (Twilio Trust Hub Secondary CP)
6588
7090
  // ============================================================================
@@ -6752,6 +7254,16 @@ var OrgApi = class extends BaseApiClient {
6752
7254
  }
6753
7255
  );
6754
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
+ }
6755
7267
  /**
6756
7268
  * Published Sites across the org's workspaces that can be linked as this
6757
7269
  * brand's enrollment (opt-in) surface. Org-authorized, so it works even when
@@ -6764,7 +7276,7 @@ var OrgApi = class extends BaseApiClient {
6764
7276
  }
6765
7277
  /**
6766
7278
  * Link the brand to a published enrollment Site (sets `site_uuid`). Returns
6767
- * the refreshed campaign config so the editor's link state updates inline.
7279
+ * the refreshed campaign config.
6768
7280
  */
6769
7281
  async linkA2PEnrollmentSite(orgUuid, brandUuid, data) {
6770
7282
  return this.fetch(
@@ -6777,9 +7289,9 @@ var OrgApi = class extends BaseApiClient {
6777
7289
  }
6778
7290
  /**
6779
7291
  * Provision (or reuse) a patient-enrollment Site for the brand and link it —
6780
- * the one-click path behind the SMS Consent tab. `workspaceUuid` is required
6781
- * only when the org has multiple workspaces. Returns the refreshed campaign
6782
- * 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.
6783
7295
  */
6784
7296
  async provisionA2PEnrollmentSite(orgUuid, brandUuid, data = {}) {
6785
7297
  return this.fetch(
@@ -6798,34 +7310,42 @@ var OrgApi = class extends BaseApiClient {
6798
7310
  );
6799
7311
  }
6800
7312
  /**
6801
- * The brand's enrollment-form template URL (carries `?brand=…`, no
6802
- * credential). `url` is null until a Site is linked. Do not append a
6803
- * patient identifier to this URL — use {@link mintA2PBrandEnrollmentLink}
6804
- * 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.
6805
7316
  */
6806
- async getA2PBrandEnrollmentUrl(orgUuid, brandUuid) {
7317
+ async createA2PEvidenceUploadUrl(orgUuid, brandUuid, data) {
6807
7318
  return this.fetch(
6808
- `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
+ }
6809
7324
  );
6810
7325
  }
6811
7326
  /**
6812
- * Mint a patient-ready enrollment link for one patient.
6813
- *
6814
- * The returned URL carries a fresh, expiring, single-use `?grant=…` bound to
6815
- * the member that `externalId` resolves to. `externalId` (the patient's
6816
- * CRM/EHR identifier) travels in the request body, never the query string,
6817
- * so it stays out of access logs. When it matches no member, the
6818
- * 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.
6819
7330
  */
6820
- async mintA2PBrandEnrollmentLink(orgUuid, brandUuid, externalId) {
7331
+ async registerA2PEvidenceUpload(orgUuid, brandUuid, data) {
6821
7332
  return this.fetch(
6822
- `o/${orgUuid}/a2p-brands/${brandUuid}/enrollment-url`,
7333
+ `o/${orgUuid}/a2p-brands/${brandUuid}/evidence-attachments`,
6823
7334
  {
6824
7335
  method: "POST",
6825
- body: JSON.stringify({ externalId })
7336
+ body: JSON.stringify(data)
6826
7337
  }
6827
7338
  );
6828
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
+ }
6829
7349
  /**
6830
7350
  * List available member roles for a workspace in the organization.
6831
7351
  */
@@ -6850,6 +7370,9 @@ var OrgApi = class extends BaseApiClient {
6850
7370
  async listOrgWebhookEndpoints(orgIdOrUuid) {
6851
7371
  return this.fetch(`o/${orgIdOrUuid}/webhooks`);
6852
7372
  }
7373
+ async getOrgWebhookEndpoint(orgIdOrUuid, endpointUuid) {
7374
+ return this.fetch(`o/${orgIdOrUuid}/webhooks/${endpointUuid}`);
7375
+ }
6853
7376
  /**
6854
7377
  * The subscribable event-type vocabulary for the org UI's event-type
6855
7378
  * picker — exactly what the create/update validators accept, so the UI
@@ -6908,6 +7431,39 @@ var OrgApi = class extends BaseApiClient {
6908
7431
  }
6909
7432
  );
6910
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
+ }
6911
7467
  };
6912
7468
  function businessProfilePath(orgUuid, legalEntityUuid) {
6913
7469
  return legalEntityUuid ? `o/${orgUuid}/legal-entities/${legalEntityUuid}/business-profile` : `o/${orgUuid}/business-profile`;
@@ -7542,6 +8098,14 @@ var QualificationsApi = class extends BaseApiClient {
7542
8098
  });
7543
8099
  }
7544
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
+ */
7545
8109
  async listTestChatRuns(wid, workflowId, params) {
7546
8110
  const query = new URLSearchParams();
7547
8111
  if (params?.scenarioId !== void 0) query.set("scenarioId", String(params.scenarioId));
@@ -7549,11 +8113,36 @@ var QualificationsApi = class extends BaseApiClient {
7549
8113
  query.set("assistantChatModelId", params.assistantChatModelId);
7550
8114
  }
7551
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
+ }
7552
8122
  const qs = query.toString() ? `?${query.toString()}` : "";
7553
8123
  return this.fetch(
7554
8124
  `w/${wid}/qualifications/workflows/${workflowId}/test-chat-runs${qs}`
7555
8125
  );
7556
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
+ }
7557
8146
  async getTestChatRun(wid, runId) {
7558
8147
  return this.fetch(`w/${wid}/qualifications/test-chat-runs/${runId}`);
7559
8148
  }
@@ -7649,6 +8238,96 @@ var ReportsApi = class extends BaseApiClient {
7649
8238
  }
7650
8239
  };
7651
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
+
7652
8331
  // src/api/salesforce.ts
7653
8332
  var SalesforceApi = class extends BaseApiClient {
7654
8333
  /**
@@ -7729,6 +8408,20 @@ var SalesforceApi = class extends BaseApiClient {
7729
8408
  body: JSON.stringify(data)
7730
8409
  });
7731
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
+ }
7732
8425
  async unlinkMemberFromSalesforce(wid, memberId) {
7733
8426
  return this.fetch(`w/${wid}/app-connections/salesforce/reconciliation/unlink/${memberId}`, {
7734
8427
  method: "DELETE"
@@ -7810,6 +8503,21 @@ var SalesforceApi = class extends BaseApiClient {
7810
8503
  }
7811
8504
  );
7812
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
+ }
7813
8521
  };
7814
8522
 
7815
8523
  // src/api/connection-sync.ts
@@ -8000,12 +8708,19 @@ var HubspotApi = class extends BaseApiClient {
8000
8708
  async getHubspotManagedRules(wid) {
8001
8709
  return this.fetch(`w/${wid}/app-connections/hubspot/managed-rules`);
8002
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
+ */
8003
8716
  async getHubspotSyncLogs(wid, params) {
8004
8717
  const query = new URLSearchParams();
8005
8718
  if (params?.pageSize) query.set("pageSize", String(params.pageSize));
8006
8719
  if (params?.cursor) query.set("cursor", params.cursor);
8007
8720
  const qs = query.toString() ? `?${query.toString()}` : "";
8008
- 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
+ );
8009
8724
  }
8010
8725
  async getHubspotTransformPresets(wid) {
8011
8726
  return this.fetch(
@@ -9004,6 +9719,33 @@ var JourneysApi = class extends BaseApiClient {
9004
9719
  body: JSON.stringify(data)
9005
9720
  });
9006
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
+ }
9007
9749
  /**
9008
9750
  * List journeys, optionally including archived, paginated.
9009
9751
  *
@@ -9501,11 +10243,6 @@ var WorkflowsApi = class extends BaseApiClient {
9501
10243
  `w/${wid}/workflows/${workflowId}/tasks/${taskId}/chats?${params.toString()}`
9502
10244
  );
9503
10245
  }
9504
- async getWorkflowAccessValidation(wid, workflowId) {
9505
- return this.fetch(
9506
- `w/${wid}/workflows/${workflowId}/validate-access`
9507
- );
9508
- }
9509
10246
  async getWorkflowConfigValidation(wid, workflowId) {
9510
10247
  return this.fetch(
9511
10248
  `w/${wid}/workflows/${workflowId}/validate-config`
@@ -9773,21 +10510,6 @@ function encodePermissions(permissions) {
9773
10510
  if (permissions.delete) accessMode |= PERMISSION_DELETE;
9774
10511
  return accessMode;
9775
10512
  }
9776
- var WORKFLOW_IMPLICIT_USE_SCOPE = "workflows:admin";
9777
- function roleImplicitWorkflowUseScope(role) {
9778
- return (role.grantedScopes ?? []).includes(WORKFLOW_IMPLICIT_USE_SCOPE) ? WORKFLOW_IMPLICIT_USE_SCOPE : null;
9779
- }
9780
- function roleWorkflowAccess(role, workflowId) {
9781
- const viaScope = roleImplicitWorkflowUseScope(role);
9782
- if (viaScope) {
9783
- return { accessMode: PERMISSION_USE | PERMISSION_EDIT, viaScope };
9784
- }
9785
- const entry = (role.workflowAccess ?? []).find((wa) => wa.workflowId === workflowId);
9786
- return { accessMode: entry?.accessMode ?? PERMISSION_NONE, viaScope: null };
9787
- }
9788
- function roleCanUseWorkflow(role, workflowId) {
9789
- return (roleWorkflowAccess(role, workflowId).accessMode & PERMISSION_USE) !== 0;
9790
- }
9791
10513
  var Scope = /* @__PURE__ */ ((Scope2) => {
9792
10514
  Scope2["WORKSPACE_READ"] = "workspace:read";
9793
10515
  Scope2["WORKSPACE_WRITE"] = "workspace:write";
@@ -9856,6 +10578,7 @@ var Scope = /* @__PURE__ */ ((Scope2) => {
9856
10578
  Scope2["LABELS_READ"] = "labels:read";
9857
10579
  Scope2["LABELS_WRITE"] = "labels:write";
9858
10580
  Scope2["ANALYTICS_READ"] = "analytics:read";
10581
+ Scope2["ANONYMOUS_SUBMISSIONS_READ"] = "anonymous_submissions:read";
9859
10582
  Scope2["OPERATOR_READ"] = "operator:read";
9860
10583
  Scope2["OPERATOR_WRITE"] = "operator:write";
9861
10584
  Scope2["EXPORT_READ"] = "export:read";
@@ -9879,6 +10602,8 @@ var BulkMemberResultStatus = {
9879
10602
  skipped: "skipped"
9880
10603
  };
9881
10604
  var MemberImportMatchInfoMatchType = {
10605
+ id: "id",
10606
+ uuid: "uuid",
9882
10607
  external_id: "external_id",
9883
10608
  email: "email",
9884
10609
  phone: "phone",
@@ -9900,6 +10625,36 @@ var MergeMemberRolesRequestAccessStrategy = {
9900
10625
  target_only: "target_only"
9901
10626
  };
9902
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
+
9903
10658
  // src/types/member-types.ts
9904
10659
  var MemberType = /* @__PURE__ */ ((MemberType2) => {
9905
10660
  MemberType2["ANONYMOUS"] = "anonymous";
@@ -9986,6 +10741,7 @@ var EventRuleEventType = /* @__PURE__ */ ((EventRuleEventType2) => {
9986
10741
  EventRuleEventType2["CHAT_CREATED"] = "chat:created";
9987
10742
  EventRuleEventType2["CHAT_SUMMARY"] = "chat:summary";
9988
10743
  EventRuleEventType2["MESSAGE_CREATED"] = "message:created";
10744
+ EventRuleEventType2["LINK_CLICKED"] = "link:clicked";
9989
10745
  EventRuleEventType2["CHAT_CALLBACK"] = "chat:callback";
9990
10746
  EventRuleEventType2["MEMBER_UPDATED"] = "member:updated";
9991
10747
  EventRuleEventType2["ROUTINE_TRIGGERED"] = "routine:triggered";
@@ -10049,6 +10805,20 @@ function eventRuleActionParams(params) {
10049
10805
  }
10050
10806
  var MASKED_SECRET_SENTINEL = "__SECRET_SET__";
10051
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
+
10052
10822
  // src/types/billing-types.ts
10053
10823
  var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
10054
10824
  WorkspaceFeature2["PHONE"] = "phone";
@@ -10064,7 +10834,6 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
10064
10834
  WorkspaceFeature2["WEB_SEARCH"] = "web_search";
10065
10835
  WorkspaceFeature2["CALENDAR"] = "calendar";
10066
10836
  WorkspaceFeature2["JOURNEY_V2_EDITOR"] = "journey_v2_editor";
10067
- WorkspaceFeature2["EXPERIMENTS"] = "experiments";
10068
10837
  WorkspaceFeature2["MAILBOX_USER_INPUT"] = "mailbox_user_input";
10069
10838
  WorkspaceFeature2["FORKED_TRAJECTORIES"] = "forked_trajectories";
10070
10839
  WorkspaceFeature2["GMAIL"] = "gmail";
@@ -10085,6 +10854,7 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
10085
10854
  WorkspaceFeature2["IMAGE_GENERATION"] = "image_generation";
10086
10855
  WorkspaceFeature2["CHARLESTON_NEPHROLOGY_PMD_PAGING"] = "charleston_nephrology_pmd_paging";
10087
10856
  WorkspaceFeature2["PATIENTSYNC_TRANSFER"] = "patientsync_transfer";
10857
+ WorkspaceFeature2["COSAN_PATHWAYS_SCHEDULING"] = "cosan_pathways_scheduling";
10088
10858
  return WorkspaceFeature2;
10089
10859
  })(WorkspaceFeature || {});
10090
10860
  var MemberFeature = /* @__PURE__ */ ((MemberFeature2) => {
@@ -10195,6 +10965,7 @@ var IndexStatus = /* @__PURE__ */ ((IndexStatus2) => {
10195
10965
  var DataTypeRecordScope = /* @__PURE__ */ ((DataTypeRecordScope2) => {
10196
10966
  DataTypeRecordScope2["WORKSPACE"] = "workspace";
10197
10967
  DataTypeRecordScope2["MEMBER"] = "member";
10968
+ DataTypeRecordScope2["ANONYMOUS"] = "anonymous";
10198
10969
  return DataTypeRecordScope2;
10199
10970
  })(DataTypeRecordScope || {});
10200
10971
  var DataSensitivity = /* @__PURE__ */ ((DataSensitivity2) => {
@@ -10226,6 +10997,7 @@ var ModelProvider = {
10226
10997
  deepgram: "deepgram",
10227
10998
  xai: "xai",
10228
10999
  fireworks: "fireworks",
11000
+ vercel: "vercel",
10229
11001
  custom: "custom"
10230
11002
  };
10231
11003
  var ModelType = {
@@ -10326,7 +11098,26 @@ var FhirClientType = /* @__PURE__ */ ((FhirClientType2) => {
10326
11098
  return FhirClientType2;
10327
11099
  })(FhirClientType || {});
10328
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
+
10329
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
+ };
10330
11121
  var TestChatRunLane = {
10331
11122
  text: "text",
10332
11123
  web_realtime: "web_realtime",
@@ -10344,6 +11135,44 @@ var TestChatRunOutcome = {
10344
11135
  instrument_failure: "instrument_failure"
10345
11136
  };
10346
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
+
10347
11176
  // src/types/qualification-types.ts
10348
11177
  var CriterionType = /* @__PURE__ */ ((CriterionType2) => {
10349
11178
  CriterionType2["EXPRESSION"] = "expression";
@@ -11305,17 +12134,17 @@ var WorkspacesApi = class extends BaseApiClient {
11305
12134
  body: JSON.stringify(payload)
11306
12135
  });
11307
12136
  }
11308
- /** 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
+ */
11309
12145
  async getWorkspaceThemes(wid) {
11310
12146
  return this.fetch(`w/${wid}/themes`);
11311
12147
  }
11312
- /** Update the active themes for a workspace. */
11313
- async updateWorkspaceThemes(wid, themes) {
11314
- return this.fetch(`w/${wid}/themes`, {
11315
- method: "PUT",
11316
- body: JSON.stringify({ themes })
11317
- });
11318
- }
11319
12148
  /**
11320
12149
  * Get all workspace-grantable scopes that can be assigned to member roles.
11321
12150
  *
@@ -11344,6 +12173,55 @@ var WorkspacesApi = class extends BaseApiClient {
11344
12173
  }
11345
12174
  };
11346
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
+
11347
12225
  // src/app-context.ts
11348
12226
  function formatAppContextAsMarkdown(context) {
11349
12227
  if (!context) {
@@ -11420,6 +12298,8 @@ function createApiModules(apiKey, baseUrl, customFetch) {
11420
12298
  assignments: new AssignmentsApi(apiKey, baseUrl, customFetch),
11421
12299
  auth: new AuthApi(apiKey, baseUrl, customFetch),
11422
12300
  builders: new BuildersApi(apiKey, baseUrl, customFetch),
12301
+ bundles: new BundlesApi(apiKey, baseUrl, customFetch),
12302
+ installations: new InstallationsApi(apiKey, baseUrl, customFetch),
11423
12303
  calendars: new CalendarsApi(apiKey, baseUrl, customFetch),
11424
12304
  calls: new CallsApi(apiKey, baseUrl, customFetch),
11425
12305
  cel: new CELApi(apiKey, baseUrl, customFetch),
@@ -11468,6 +12348,8 @@ function createApiModules(apiKey, baseUrl, customFetch) {
11468
12348
  metrics: new MetricsApi(apiKey, baseUrl, customFetch),
11469
12349
  queries: new QueriesApi(apiKey, baseUrl, customFetch),
11470
12350
  reports: new ReportsApi(apiKey, baseUrl, customFetch),
12351
+ resourceWorkflows: new ResourceWorkflowsApi(apiKey, baseUrl, customFetch),
12352
+ routingRules: new RoutingRulesApi(apiKey, baseUrl, customFetch),
11471
12353
  salesforce: new SalesforceApi(apiKey, baseUrl, customFetch),
11472
12354
  sites: new SitesApi(apiKey, baseUrl, customFetch),
11473
12355
  subscriptions: new SubscriptionsApi(apiKey, baseUrl, customFetch),
@@ -11497,6 +12379,7 @@ var WORKSPACE_METHOD_NAMES = [
11497
12379
  "archiveDataType",
11498
12380
  "archiveJourney",
11499
12381
  "archiveMember",
12382
+ "archiveMemberByExternalId",
11500
12383
  "archiveMemberRelationship",
11501
12384
  "archivePersona",
11502
12385
  "archivePhoneNumber",
@@ -11523,7 +12406,6 @@ var WORKSPACE_METHOD_NAMES = [
11523
12406
  "checkSiteSlugAvailability",
11524
12407
  "claimDevicePairing",
11525
12408
  "clearConnectionMemberExclusion",
11526
- "clearMemberSwitch",
11527
12409
  "clearTrackedLinkDestinations",
11528
12410
  "clickWorkspaceSupportRequestResource",
11529
12411
  "cloneDataType",
@@ -11546,6 +12428,9 @@ var WORKSPACE_METHOD_NAMES = [
11546
12428
  "createAgent",
11547
12429
  "createApiKey",
11548
12430
  "createAssignment",
12431
+ "bindInstallationSlots",
12432
+ "restoreInstallationForm",
12433
+ "createBundle",
11549
12434
  "createCalendar",
11550
12435
  "createCalendarEvent",
11551
12436
  "createCalendarEventType",
@@ -11594,6 +12479,7 @@ var WORKSPACE_METHOD_NAMES = [
11594
12479
  "createPhoneNumber",
11595
12480
  "createProduct",
11596
12481
  "createRoutine",
12482
+ "createRoutingRule",
11597
12483
  "createScenario",
11598
12484
  "createSignup",
11599
12485
  "createSite",
@@ -11644,6 +12530,7 @@ var WORKSPACE_METHOD_NAMES = [
11644
12530
  "deleteGoal",
11645
12531
  "deleteHubspot",
11646
12532
  "deleteInbox",
12533
+ "deleteJourneyDraft",
11647
12534
  "deleteJourneyNote",
11648
12535
  "deleteMcpServer",
11649
12536
  "deleteMember",
@@ -11661,6 +12548,7 @@ var WORKSPACE_METHOD_NAMES = [
11661
12548
  "deletePlatformApp",
11662
12549
  "deleteProduct",
11663
12550
  "deleteRoutine",
12551
+ "deleteRoutingRule",
11664
12552
  "deleteSalesforce",
11665
12553
  "deleteScenario",
11666
12554
  "deleteSite",
@@ -11693,6 +12581,7 @@ var WORKSPACE_METHOD_NAMES = [
11693
12581
  "dismissAllNotifications",
11694
12582
  "dismissNotification",
11695
12583
  "downloadEmailAttachment",
12584
+ "downloadFileContents",
11696
12585
  "downloadFilesZip",
11697
12586
  "downloadSiteSourceZip",
11698
12587
  "editWorkflowRevisionAsDraft",
@@ -11755,6 +12644,7 @@ var WORKSPACE_METHOD_NAMES = [
11755
12644
  "getAgentTasks",
11756
12645
  "getAgents",
11757
12646
  "getAnonymousResolution",
12647
+ "getAnonymousFormSubmission",
11758
12648
  "getAnonymousResolutions",
11759
12649
  "getApiKeys",
11760
12650
  "getArchiveBlockers",
@@ -11768,6 +12658,12 @@ var WORKSPACE_METHOD_NAMES = [
11768
12658
  "getAvailableActions",
11769
12659
  "getAvailablePhoneNumbers",
11770
12660
  "getAvailableSlots",
12661
+ "getInstallation",
12662
+ "getInstallationReadiness",
12663
+ "getThemeSettingsSchema",
12664
+ "getBundleDraft",
12665
+ "getBundle",
12666
+ "getBundleVersion",
11771
12667
  "getBusinessHoursStatus",
11772
12668
  "getCalendar",
11773
12669
  "getCalendarEvent",
@@ -11780,8 +12676,11 @@ var WORKSPACE_METHOD_NAMES = [
11780
12676
  "getCelContext",
11781
12677
  "getCharlestonTestDeliveryRecipients",
11782
12678
  "getChat",
12679
+ "getChatByUuid",
11783
12680
  "getChatAssignmentTasks",
11784
12681
  "getChatBrowserLiveView",
12682
+ "saveChatBrowserStorage",
12683
+ "clearChatBrowserStorage",
11785
12684
  "getChatCallbacks",
11786
12685
  "getChatEhrWritebackOutcomes",
11787
12686
  "getChatEmails",
@@ -11827,6 +12726,7 @@ var WORKSPACE_METHOD_NAMES = [
11827
12726
  "getDashboardWorkflowAssignmentStats",
11828
12727
  "getDashboards",
11829
12728
  "getDataRecord",
12729
+ "getDataRecordByUuid",
11830
12730
  "getDataRecordChanges",
11831
12731
  "getDataRecordFilter",
11832
12732
  "getDataRecordFilterCount",
@@ -11944,6 +12844,7 @@ var WORKSPACE_METHOD_NAMES = [
11944
12844
  "getMcpServerResources",
11945
12845
  "getMcpServerTools",
11946
12846
  "getMcpServers",
12847
+ "getMemberByUuid",
11947
12848
  "getMemberExperiments",
11948
12849
  "getMemberFieldDefinitions",
11949
12850
  "getMemberFields",
@@ -11975,6 +12876,7 @@ var WORKSPACE_METHOD_NAMES = [
11975
12876
  "getMondayConnectionStatus",
11976
12877
  "getMondayReconciliationMatches",
11977
12878
  "getMondaySyncConfig",
12879
+ "getMondaySyncLogs",
11978
12880
  "getMyCredentials",
11979
12881
  "getMyGivenGrants",
11980
12882
  "getMyReceivedGrants",
@@ -11985,7 +12887,6 @@ var WORKSPACE_METHOD_NAMES = [
11985
12887
  "getOperatorGroup",
11986
12888
  "getOperatorGroups",
11987
12889
  "getOrCreateQualificationForWorkflow",
11988
- "getOwnedMembers",
11989
12890
  "getPage",
11990
12891
  "getPageBySlug",
11991
12892
  "getPersona",
@@ -12015,11 +12916,14 @@ var WORKSPACE_METHOD_NAMES = [
12015
12916
  "getRoutineConfigEvents",
12016
12917
  "getRoutineRuns",
12017
12918
  "getRoutines",
12919
+ "getRoutingRule",
12920
+ "getRoutingRules",
12018
12921
  "getRuleExecutions",
12019
12922
  "getSMSUsageReport",
12020
12923
  "getSalesforceReconciliationMatches",
12021
12924
  "getSalesforceStatus",
12022
12925
  "getSalesforceSyncConfig",
12926
+ "getSalesforceSyncLogs",
12023
12927
  "getScenario",
12024
12928
  "getSite",
12025
12929
  "getSiteByUuid",
@@ -12065,7 +12969,6 @@ var WORKSPACE_METHOD_NAMES = [
12065
12969
  "getWebhookLogs",
12066
12970
  "getWorkflow",
12067
12971
  "getWorkflowOpeningTurnConversionReport",
12068
- "getWorkflowAccessValidation",
12069
12972
  "getWorkflowActivity",
12070
12973
  "getWorkflowConfigValidation",
12071
12974
  "getWorkflowFeedback",
@@ -12096,6 +12999,8 @@ var WORKSPACE_METHOD_NAMES = [
12096
12999
  "getWorkspaceSubscriptions",
12097
13000
  "getWorkspaceSupportRequest",
12098
13001
  "getWorkspaceThemes",
13002
+ "installBundle",
13003
+ "grantBundle",
12099
13004
  "importFromBoard",
12100
13005
  "importHubspotMembers",
12101
13006
  "importMembers",
@@ -12118,13 +13023,23 @@ var WORKSPACE_METHOD_NAMES = [
12118
13023
  "linkMemberToMonday",
12119
13024
  "linkMemberToSalesforce",
12120
13025
  "linkPhoneNumber",
13026
+ "linkUnlinkedSalesforceMembersByIdentity",
12121
13027
  "listAbilities",
13028
+ "listAnonymousFormSubmissions",
12122
13029
  "listAppConnections",
12123
13030
  "listAvailableAppConnections",
13031
+ "listInstallations",
13032
+ "listBundleGrants",
13033
+ "listBundleVersions",
13034
+ "listBundles",
13035
+ "listBundleWorkflowCandidates",
13036
+ "updateBundle",
13037
+ "listBundleInstallations",
12124
13038
  "listConfluencePages",
12125
13039
  "listConfluenceSpaces",
12126
13040
  "listConnectionMemberFieldKeys",
12127
13041
  "listContactPermissions",
13042
+ "revokeBundleGrant",
12128
13043
  "rollbackSiteSource",
12129
13044
  "rotateDocumoFaxCredentials",
12130
13045
  "runQuery",
@@ -12145,7 +13060,11 @@ var WORKSPACE_METHOD_NAMES = [
12145
13060
  "getMetricSeries",
12146
13061
  "computeChatMetrics",
12147
13062
  "listPushSubscriptions",
13063
+ "listResourceWorkflows",
13064
+ "getResourceWorkflow",
13065
+ "getResourceWorkflowRevision",
12148
13066
  "listSalesforceObjects",
13067
+ "listScenarioHealthSummaries",
12149
13068
  "listScenarios",
12150
13069
  "listTestChatRuns",
12151
13070
  "listWidgetDomains",
@@ -12161,15 +13080,18 @@ var WORKSPACE_METHOD_NAMES = [
12161
13080
  "previewRenameFieldSlug",
12162
13081
  "previewImportWorkspace",
12163
13082
  "previewInboxEmail",
13083
+ "preflightBundleInstallation",
12164
13084
  "previewRoutineVoiceReadiness",
12165
- "previewRoutineWorkflowAccess",
12166
13085
  "previewSchedule",
13086
+ "previewRoutingRule",
12167
13087
  "previewTTS",
12168
13088
  "previewTemplate",
12169
13089
  "previewThinkingSound",
12170
13090
  "previewWorkspaceImport",
12171
13091
  "previewWorkspaceImportZip",
12172
13092
  "provisionClientWorkspace",
13093
+ "previewInstallationUpgrade",
13094
+ "publishBundle",
12173
13095
  "publishWorkflowRevision",
12174
13096
  "putJourneyDraft",
12175
13097
  "putJourneyV2Definition",
@@ -12181,11 +13103,16 @@ var WORKSPACE_METHOD_NAMES = [
12181
13103
  "registerPushSubscription",
12182
13104
  "reindexFolder",
12183
13105
  "releasePhoneNumber",
13106
+ "reorderRoutingRules",
12184
13107
  "removeFileRole",
12185
13108
  "removeFolderRole",
12186
13109
  "removeGroupMember",
12187
13110
  "reorderEventRules",
12188
13111
  "reorderMenuItems",
13112
+ "reconcileInstallation",
13113
+ "setInstallationPolicy",
13114
+ "upgradeInstallation",
13115
+ "replaceBundleDraft",
12189
13116
  "replyToEmail",
12190
13117
  "rotateDocumoFaxCredentials",
12191
13118
  "requestPhoneNumber",
@@ -12221,7 +13148,6 @@ var WORKSPACE_METHOD_NAMES = [
12221
13148
  "startSyncRun",
12222
13149
  "startTestChatRun",
12223
13150
  "summarizeChat",
12224
- "switchMember",
12225
13151
  "syncCalendarWithGoogle",
12226
13152
  "syncCalendarWithHealthie",
12227
13153
  "testFhirConnection",
@@ -12234,6 +13160,7 @@ var WORKSPACE_METHOD_NAMES = [
12234
13160
  "unarchiveChat",
12235
13161
  "unarchiveDataType",
12236
13162
  "unarchiveMember",
13163
+ "unarchiveMemberByExternalId",
12237
13164
  "unarchivePersona",
12238
13165
  "unarchiveStep",
12239
13166
  "unarchiveTask",
@@ -12291,6 +13218,7 @@ var WORKSPACE_METHOD_NAMES = [
12291
13218
  "updateJourneyNote",
12292
13219
  "updateMcpServer",
12293
13220
  "updateMember",
13221
+ "updateMemberByExternalId",
12294
13222
  "updateMemberField",
12295
13223
  "updateMemberFilter",
12296
13224
  "updateMemberLabel",
@@ -12307,6 +13235,7 @@ var WORKSPACE_METHOD_NAMES = [
12307
13235
  "updateProduct",
12308
13236
  "updateProject",
12309
13237
  "updateRoutine",
13238
+ "updateRoutingRule",
12310
13239
  "updateSalesforceSyncConfig",
12311
13240
  "resyncSalesforceLinkedMembers",
12312
13241
  "updateScenario",
@@ -12329,7 +13258,6 @@ var WORKSPACE_METHOD_NAMES = [
12329
13258
  "updateWorkspace",
12330
13259
  "updateWorkspaceDefaults",
12331
13260
  "updateWorkspaceInvitationAdmin",
12332
- "updateWorkspaceThemes",
12333
13261
  "upsertDataRecord",
12334
13262
  "upsertWidgetDomain",
12335
13263
  "validateCelExpression",
@@ -12420,6 +13348,9 @@ function bindChatsMethods(target, chats) {
12420
13348
  target.transitionChatInteractionSession = chats.transitionChatInteractionSession.bind(chats);
12421
13349
  target.getChats = chats.getChats.bind(chats);
12422
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);
12423
13354
  target.getChatBrowserLiveView = chats.getChatBrowserLiveView.bind(chats);
12424
13355
  target.getChatMachineResources = chats.getChatMachineResources.bind(chats);
12425
13356
  target.getCurrentSmsChat = chats.getCurrentSmsChat.bind(chats);
@@ -12556,7 +13487,10 @@ function bindDataTypesMethods(target, dataTypes) {
12556
13487
  target.unarchiveDataType = dataTypes.unarchiveDataType.bind(dataTypes);
12557
13488
  target.cloneDataType = dataTypes.cloneDataType.bind(dataTypes);
12558
13489
  target.getDataRecords = dataTypes.getDataRecords.bind(dataTypes);
13490
+ target.listAnonymousFormSubmissions = dataTypes.listAnonymousFormSubmissions.bind(dataTypes);
13491
+ target.getAnonymousFormSubmission = dataTypes.getAnonymousFormSubmission.bind(dataTypes);
12559
13492
  target.getDataRecord = dataTypes.getDataRecord.bind(dataTypes);
13493
+ target.getDataRecordByUuid = dataTypes.getDataRecordByUuid.bind(dataTypes);
12560
13494
  target.createDataRecord = dataTypes.createDataRecord.bind(dataTypes);
12561
13495
  target.updateDataRecord = dataTypes.updateDataRecord.bind(dataTypes);
12562
13496
  target.deleteDataRecord = dataTypes.deleteDataRecord.bind(dataTypes);
@@ -12595,18 +13529,19 @@ function bindMembersMethods(target, members) {
12595
13529
  target.previewMemberWorkflowVoice = members.previewMemberWorkflowVoice.bind(members);
12596
13530
  target.setMemberWorkflowVoice = members.setMemberWorkflowVoice.bind(members);
12597
13531
  target.clearMemberWorkflowVoice = members.clearMemberWorkflowVoice.bind(members);
12598
- target.getOwnedMembers = members.getOwnedMembers.bind(members);
12599
- target.switchMember = members.switchMember.bind(members);
12600
- target.clearMemberSwitch = members.clearMemberSwitch.bind(members);
12601
13532
  target.updateCurrentMember = members.updateCurrentMember.bind(members);
12602
13533
  target.getWorkspaceMembers = members.getWorkspaceMembers.bind(members);
12603
13534
  target.getWorkspaceMember = members.getWorkspaceMember.bind(members);
13535
+ target.getMemberByUuid = members.getMemberByUuid.bind(members);
12604
13536
  target.getOrgWorkspaceMember = members.getOrgWorkspaceMember.bind(members);
12605
13537
  target.createWorkspaceMember = members.createWorkspaceMember.bind(members);
12606
13538
  target.updateMember = members.updateMember.bind(members);
12607
13539
  target.deleteMember = members.deleteMember.bind(members);
12608
13540
  target.archiveMember = members.archiveMember.bind(members);
12609
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);
12610
13545
  target.sendMemberPhoneConfirmation = members.sendMemberPhoneConfirmation.bind(members);
12611
13546
  target.bulkCreateMembers = members.bulkCreateMembers.bind(members);
12612
13547
  target.previewImportMembers = members.previewImportMembers.bind(members);
@@ -12708,7 +13643,6 @@ function bindWorkspacesMethods(target, workspaces, signupRequests) {
12708
13643
  target.rebuildImportSkippedRules = workspaces.rebuildImportSkippedRules.bind(workspaces);
12709
13644
  target.previewImportWorkspace = workspaces.previewImportWorkspace.bind(workspaces);
12710
13645
  target.getWorkspaceThemes = workspaces.getWorkspaceThemes.bind(workspaces);
12711
- target.updateWorkspaceThemes = workspaces.updateWorkspaceThemes.bind(workspaces);
12712
13646
  target.getWorkspaceBySlug = workspaces.getWorkspace.bind(workspaces);
12713
13647
  target.getWorkspaceScopes = workspaces.getWorkspaceScopes.bind(workspaces);
12714
13648
  target.getUsageDashboard = workspaces.getUsageDashboard.bind(workspaces);
@@ -12757,6 +13691,7 @@ function bindAuthMethods(target, auth, assignments) {
12757
13691
  target.logout = auth.logout.bind(auth);
12758
13692
  target.requestCrossDomainToken = auth.requestCrossDomainToken.bind(auth);
12759
13693
  target.exchangeToken = auth.exchangeToken.bind(auth);
13694
+ target.createRealtimeLoginToken = auth.createRealtimeLoginToken.bind(auth);
12760
13695
  target.getDomainMapping = auth.getDomainMapping.bind(auth);
12761
13696
  target.createSignup = auth.createSignup.bind(auth);
12762
13697
  target.createAccount = auth.emailPasswordSignup.bind(auth);
@@ -12846,6 +13781,7 @@ function bindSitesMethods(target, sites) {
12846
13781
  function bindFilesMethods(target, files) {
12847
13782
  target.getFiles = files.getFiles.bind(files);
12848
13783
  target.getFile = files.getFile.bind(files);
13784
+ target.downloadFileContents = files.downloadFileContents.bind(files);
12849
13785
  target.downloadFilesZip = files.downloadFilesZip.bind(files);
12850
13786
  target.createFile = files.createFile.bind(files);
12851
13787
  target.uploadFile = files.uploadFile.bind(files);
@@ -12918,7 +13854,6 @@ function bindEventsMethods(target, events) {
12918
13854
  target.resetRoutineRuns = events.resetRoutineRuns.bind(events);
12919
13855
  target.previewSchedule = events.previewSchedule.bind(events);
12920
13856
  target.previewRoutineVoiceReadiness = events.previewRoutineVoiceReadiness.bind(events);
12921
- target.previewRoutineWorkflowAccess = events.previewRoutineWorkflowAccess.bind(events);
12922
13857
  }
12923
13858
 
12924
13859
  // src/client/bindings/experiments.ts
@@ -12959,7 +13894,6 @@ function bindWorkflowsMethods(target, workflows, workflowNotes, voice, superviso
12959
13894
  target.createWorkflowFromTemplate = workflows.createWorkflowFromTemplate.bind(workflows);
12960
13895
  target.getWorkflowTaskAssignmentStats = workflows.getWorkflowTaskAssignmentStats.bind(workflows);
12961
13896
  target.getTaskChats = workflows.getTaskChats.bind(workflows);
12962
- target.getWorkflowAccessValidation = workflows.getWorkflowAccessValidation.bind(workflows);
12963
13897
  target.getWorkflowConfigValidation = workflows.getWorkflowConfigValidation.bind(workflows);
12964
13898
  target.getWorkflowNotes = workflowNotes.getWorkflowNotes.bind(workflowNotes);
12965
13899
  target.createWorkflowNote = workflowNotes.createWorkflowNote.bind(workflowNotes);
@@ -13080,6 +14014,7 @@ function bindToolkitsMethods(target, toolkits, templates, aiModels, customToolki
13080
14014
  target.previewTemplate = templates.previewTemplate.bind(templates);
13081
14015
  target.getVariableRegistry = templates.getVariableRegistry.bind(templates);
13082
14016
  target.getChatModels = aiModels.getChatModels.bind(aiModels);
14017
+ target.getManagerModels = aiModels.getManagerModels.bind(aiModels);
13083
14018
  target.getRealtimeModels = aiModels.getRealtimeModels.bind(aiModels);
13084
14019
  target.getSTTModels = aiModels.getSTTModels.bind(aiModels);
13085
14020
  target.getTTSModels = aiModels.getTTSModels.bind(aiModels);
@@ -13193,6 +14128,7 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
13193
14128
  target.getMondayConnectionBoardColumns = mondayIntegration.getMondayConnectionBoardColumns.bind(mondayIntegration);
13194
14129
  target.getMondayConnectionBoardGroups = mondayIntegration.getMondayConnectionBoardGroups.bind(mondayIntegration);
13195
14130
  target.getMondaySyncConfig = mondayIntegration.getMondaySyncConfig.bind(mondayIntegration);
14131
+ target.getMondaySyncLogs = mondayIntegration.getMondaySyncLogs.bind(mondayIntegration);
13196
14132
  target.updateMondaySyncConfig = mondayIntegration.updateMondaySyncConfig.bind(mondayIntegration);
13197
14133
  target.getLinkedMondayMembers = mondayIntegration.getLinkedMondayMembers.bind(mondayIntegration);
13198
14134
  target.getMondayReconciliationMatches = mondayIntegration.getMondayReconciliationMatches.bind(mondayIntegration);
@@ -13307,10 +14243,12 @@ function bindIntegrationsMethods(target, mondayIntegration, discordBots, slackAp
13307
14243
  target.deleteSalesforce = salesforce.deleteSalesforce.bind(salesforce);
13308
14244
  target.getSalesforceReconciliationMatches = salesforce.getSalesforceReconciliationMatches.bind(salesforce);
13309
14245
  target.linkMemberToSalesforce = salesforce.linkMemberToSalesforce.bind(salesforce);
14246
+ target.linkUnlinkedSalesforceMembersByIdentity = salesforce.linkUnlinkedSalesforceMembersByIdentity.bind(salesforce);
13310
14247
  target.bulkLinkMembersToSalesforce = salesforce.bulkLinkMembersToSalesforce.bind(salesforce);
13311
14248
  target.unlinkMemberFromSalesforce = salesforce.unlinkMemberFromSalesforce.bind(salesforce);
13312
14249
  target.getLinkedSalesforceMembers = salesforce.getLinkedSalesforceMembers.bind(salesforce);
13313
14250
  target.getSalesforceSyncConfig = salesforce.getSalesforceSyncConfig.bind(salesforce);
14251
+ target.getSalesforceSyncLogs = salesforce.getSalesforceSyncLogs.bind(salesforce);
13314
14252
  target.updateSalesforceSyncConfig = salesforce.updateSalesforceSyncConfig.bind(salesforce);
13315
14253
  target.resyncSalesforceLinkedMembers = salesforce.resyncSalesforceLinkedMembers.bind(salesforce);
13316
14254
  target.listSalesforceObjects = salesforce.listSalesforceObjects.bind(salesforce);
@@ -13400,10 +14338,15 @@ function bindOrgMethods(target, org) {
13400
14338
  target.getVoiceTrustProducts = org.getVoiceTrustProducts.bind(org);
13401
14339
  target.syncVoiceTrustProducts = org.syncVoiceTrustProducts.bind(org);
13402
14340
  target.createOrganizationWorkspace = org.createOrganizationWorkspace.bind(org);
14341
+ target.getOrganizationWorkspace = org.getOrganizationWorkspace.bind(org);
14342
+ target.updateOrganizationWorkspace = org.updateOrganizationWorkspace.bind(org);
13403
14343
  target.getOrgBillingCustomer = org.getOrgBillingCustomer.bind(org);
13404
14344
  target.getA2PCampaignConfig = org.getA2PCampaignConfig.bind(org);
13405
14345
  target.updateA2PCampaignConfig = org.updateA2PCampaignConfig.bind(org);
13406
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);
13407
14350
  }
13408
14351
 
13409
14352
  // src/client/bindings/pronunciations.ts
@@ -13423,12 +14366,58 @@ function bindPronunciationsMethods(target, pronunciations) {
13423
14366
  target.previewPronunciation = pronunciations.previewPronunciation.bind(pronunciations);
13424
14367
  }
13425
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
+
13426
14414
  // src/client/bindings/journeys.ts
13427
14415
  function bindJourneysMethods(target, journeys) {
13428
14416
  target.getJourneys = journeys.getJourneys.bind(journeys);
13429
14417
  target.getJourney = journeys.getJourney.bind(journeys);
13430
14418
  target.getJourneyAuthoring = journeys.getJourneyAuthoring.bind(journeys);
13431
14419
  target.putJourneyDraft = journeys.putJourneyDraft.bind(journeys);
14420
+ target.deleteJourneyDraft = journeys.deleteJourneyDraft.bind(journeys);
13432
14421
  target.putJourneyV2Definition = journeys.putJourneyV2Definition.bind(journeys);
13433
14422
  target.getJourneyV2Validation = journeys.getJourneyV2Validation.bind(journeys);
13434
14423
  target.getJourneyFilterOptions = journeys.getJourneyFilterOptions.bind(journeys);
@@ -13476,6 +14465,7 @@ function bindQualificationsMethods(target, qualifications) {
13476
14465
  target.updateScenario = qualifications.updateScenario.bind(qualifications);
13477
14466
  target.deleteScenario = qualifications.deleteScenario.bind(qualifications);
13478
14467
  target.listTestChatRuns = qualifications.listTestChatRuns.bind(qualifications);
14468
+ target.listScenarioHealthSummaries = qualifications.listScenarioHealthSummaries.bind(qualifications);
13479
14469
  target.getTestChatRun = qualifications.getTestChatRun.bind(qualifications);
13480
14470
  target.startTestChatRun = qualifications.startTestChatRun.bind(qualifications);
13481
14471
  target.evaluateTestChatRun = qualifications.evaluateTestChatRun.bind(qualifications);
@@ -13564,6 +14554,17 @@ function bindSupportRequestMethods(target, supportRequests) {
13564
14554
  target.clickWorkspaceSupportRequestResource = supportRequests.clickWorkspaceSupportRequestResource.bind(supportRequests);
13565
14555
  }
13566
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
+
13567
14568
  // src/client/client.ts
13568
14569
  var GravityRailClient = class {
13569
14570
  // WorkspaceInvitations is exposed publicly for backward compatibility
@@ -13589,6 +14590,9 @@ var GravityRailClient = class {
13589
14590
  // Chats API
13590
14591
  getChats;
13591
14592
  getChat;
14593
+ getChatByUuid;
14594
+ saveChatBrowserStorage;
14595
+ clearChatBrowserStorage;
13592
14596
  getChatBrowserLiveView;
13593
14597
  getChatMachineResources;
13594
14598
  getCurrentSmsChat;
@@ -13666,7 +14670,10 @@ var GravityRailClient = class {
13666
14670
  unarchiveDataType;
13667
14671
  cloneDataType;
13668
14672
  getDataRecords;
14673
+ listAnonymousFormSubmissions;
14674
+ getAnonymousFormSubmission;
13669
14675
  getDataRecord;
14676
+ getDataRecordByUuid;
13670
14677
  createDataRecord;
13671
14678
  updateDataRecord;
13672
14679
  deleteDataRecord;
@@ -13692,12 +14699,10 @@ var GravityRailClient = class {
13692
14699
  previewMemberWorkflowVoice;
13693
14700
  setMemberWorkflowVoice;
13694
14701
  clearMemberWorkflowVoice;
13695
- getOwnedMembers;
13696
- switchMember;
13697
- clearMemberSwitch;
13698
14702
  updateCurrentMember;
13699
14703
  getWorkspaceMembers;
13700
14704
  getWorkspaceMember;
14705
+ getMemberByUuid;
13701
14706
  // Org-scoped, so deliberately absent from WORKSPACE_METHOD_NAMES: that proxy
13702
14707
  // passes a workspace uuid as the first argument.
13703
14708
  getOrgWorkspaceMember;
@@ -13706,6 +14711,9 @@ var GravityRailClient = class {
13706
14711
  deleteMember;
13707
14712
  archiveMember;
13708
14713
  unarchiveMember;
14714
+ updateMemberByExternalId;
14715
+ archiveMemberByExternalId;
14716
+ unarchiveMemberByExternalId;
13709
14717
  sendMemberPhoneConfirmation;
13710
14718
  bulkCreateMembers;
13711
14719
  previewImportMembers;
@@ -13783,6 +14791,7 @@ var GravityRailClient = class {
13783
14791
  updateScenario;
13784
14792
  deleteScenario;
13785
14793
  listTestChatRuns;
14794
+ listScenarioHealthSummaries;
13786
14795
  getTestChatRun;
13787
14796
  startTestChatRun;
13788
14797
  evaluateTestChatRun;
@@ -13860,6 +14869,7 @@ var GravityRailClient = class {
13860
14869
  getJourney;
13861
14870
  getJourneyAuthoring;
13862
14871
  putJourneyDraft;
14872
+ deleteJourneyDraft;
13863
14873
  putJourneyV2Definition;
13864
14874
  getJourneyV2Validation;
13865
14875
  getJourneyFilterOptions;
@@ -13894,6 +14904,41 @@ var GravityRailClient = class {
13894
14904
  createJourneyNote;
13895
14905
  updateJourneyNote;
13896
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;
13897
14942
  // Experiments API
13898
14943
  getExperiments;
13899
14944
  getExperiment;
@@ -13986,7 +15031,6 @@ var GravityRailClient = class {
13986
15031
  rebuildImportSkippedRules;
13987
15032
  previewImportWorkspace;
13988
15033
  getWorkspaceThemes;
13989
- updateWorkspaceThemes;
13990
15034
  getWorkspaceBySlug;
13991
15035
  getWorkspaceScopes;
13992
15036
  getUsageDashboard;
@@ -14025,10 +15069,15 @@ var GravityRailClient = class {
14025
15069
  getVoiceTrustProducts;
14026
15070
  syncVoiceTrustProducts;
14027
15071
  createOrganizationWorkspace;
15072
+ getOrganizationWorkspace;
15073
+ updateOrganizationWorkspace;
14028
15074
  getOrgBillingCustomer;
14029
15075
  getA2PCampaignConfig;
14030
15076
  updateA2PCampaignConfig;
14031
15077
  getOrgWorkspaceUsage;
15078
+ updateOrganizationMember;
15079
+ listOrgWebhookEndpoints;
15080
+ getOrgWebhookEndpoint;
14032
15081
  getVapidPublicKey;
14033
15082
  registerPushSubscription;
14034
15083
  unregisterPushSubscription;
@@ -14065,6 +15114,7 @@ var GravityRailClient = class {
14065
15114
  logout;
14066
15115
  requestCrossDomainToken;
14067
15116
  exchangeToken;
15117
+ createRealtimeLoginToken;
14068
15118
  getDomainMapping;
14069
15119
  createSignup;
14070
15120
  createAccount;
@@ -14154,6 +15204,7 @@ var GravityRailClient = class {
14154
15204
  updateProject;
14155
15205
  updatePlan;
14156
15206
  resolveFilePath;
15207
+ downloadFileContents;
14157
15208
  downloadFilesZip;
14158
15209
  createFile;
14159
15210
  uploadFile;
@@ -14214,7 +15265,6 @@ var GravityRailClient = class {
14214
15265
  resetRoutineRuns;
14215
15266
  previewSchedule;
14216
15267
  previewRoutineVoiceReadiness;
14217
- previewRoutineWorkflowAccess;
14218
15268
  // Workflows API
14219
15269
  getWorkflows;
14220
15270
  getWorkflow;
@@ -14235,7 +15285,6 @@ var GravityRailClient = class {
14235
15285
  createWorkflowFromTemplate;
14236
15286
  getWorkflowTaskAssignmentStats;
14237
15287
  getTaskChats;
14238
- getWorkflowAccessValidation;
14239
15288
  getWorkflowConfigValidation;
14240
15289
  getWorkflowNotes;
14241
15290
  createWorkflowNote;
@@ -14347,6 +15396,7 @@ var GravityRailClient = class {
14347
15396
  previewTemplate;
14348
15397
  getVariableRegistry;
14349
15398
  getChatModels;
15399
+ getManagerModels;
14350
15400
  getRealtimeModels;
14351
15401
  getSTTModels;
14352
15402
  getTTSModels;
@@ -14459,6 +15509,7 @@ var GravityRailClient = class {
14459
15509
  getMondayConnectionBoardColumns;
14460
15510
  getMondayConnectionBoardGroups;
14461
15511
  getMondaySyncConfig;
15512
+ getMondaySyncLogs;
14462
15513
  updateMondaySyncConfig;
14463
15514
  getLinkedMondayMembers;
14464
15515
  getMondayReconciliationMatches;
@@ -14580,10 +15631,12 @@ var GravityRailClient = class {
14580
15631
  deleteSalesforce;
14581
15632
  getSalesforceReconciliationMatches;
14582
15633
  linkMemberToSalesforce;
15634
+ linkUnlinkedSalesforceMembersByIdentity;
14583
15635
  bulkLinkMembersToSalesforce;
14584
15636
  unlinkMemberFromSalesforce;
14585
15637
  getLinkedSalesforceMembers;
14586
15638
  getSalesforceSyncConfig;
15639
+ getSalesforceSyncLogs;
14587
15640
  updateSalesforceSyncConfig;
14588
15641
  resyncSalesforceLinkedMembers;
14589
15642
  listSalesforceObjects;
@@ -14680,6 +15733,14 @@ var GravityRailClient = class {
14680
15733
  closeWorkspaceSupportRequest;
14681
15734
  reopenWorkspaceSupportRequest;
14682
15735
  clickWorkspaceSupportRequestResource;
15736
+ // Routing Rules API
15737
+ getRoutingRules;
15738
+ getRoutingRule;
15739
+ createRoutingRule;
15740
+ updateRoutingRule;
15741
+ deleteRoutingRule;
15742
+ reorderRoutingRules;
15743
+ previewRoutingRule;
14683
15744
  constructor(apiKey, baseUrl, customFetch) {
14684
15745
  const apis = createApiModules(apiKey, baseUrl, customFetch);
14685
15746
  this.apis = apis;
@@ -14701,6 +15762,8 @@ var GravityRailClient = class {
14701
15762
  bindMotdMethods(this, apis.motd);
14702
15763
  bindTrackedLinksMethods(this, apis.trackedLinks);
14703
15764
  bindJourneysMethods(this, apis.journeys);
15765
+ bindBundlesMethods(this, apis.bundles, apis.resourceWorkflows);
15766
+ bindInstallationsMethods(this, apis.installations);
14704
15767
  bindExperimentsMethods(this, apis.experiments);
14705
15768
  bindOperatorMethods(this, apis.operatorGroups);
14706
15769
  bindOrgMethods(this, apis.org);
@@ -14754,6 +15817,7 @@ var GravityRailClient = class {
14754
15817
  bindCustomersMethods(this, apis.customers);
14755
15818
  bindResellersMethods(this, apis.resellers);
14756
15819
  bindSupportRequestMethods(this, apis.supportRequests);
15820
+ bindRoutingRulesMethods(this, apis.routingRules);
14757
15821
  }
14758
15822
  /**
14759
15823
  * Return a workspace-scoped client facade.
@@ -14831,32 +15895,6 @@ var GravityRailClient = class {
14831
15895
  }
14832
15896
  });
14833
15897
  }
14834
- /**
14835
- * Set the acting member UUID for member identity switching.
14836
- * When set, all API requests will include the X-Acting-Member header.
14837
- * The backend will validate that the authenticated account owns this member
14838
- * and use it as the effective identity for the request.
14839
- * Propagates to all API modules.
14840
- */
14841
- setActingMember(memberUuid) {
14842
- Object.values(this.apis).forEach((api) => {
14843
- if (typeof api.setActingMember === "function") {
14844
- api.setActingMember(memberUuid);
14845
- }
14846
- });
14847
- }
14848
- /**
14849
- * Get the current acting member UUID.
14850
- * Returns undefined if no member switch is active.
14851
- */
14852
- getActingMember() {
14853
- for (const api of Object.values(this.apis)) {
14854
- if (typeof api.getActingMember === "function") {
14855
- return api.getActingMember();
14856
- }
14857
- }
14858
- return void 0;
14859
- }
14860
15898
  };
14861
15899
 
14862
15900
  // src/workspace-builder/resource.ts
@@ -15908,8 +16946,8 @@ var JourneyV2Builder = class extends WorkspaceBuilderResource {
15908
16946
  *
15909
16947
  * A different rule set from the legacy builder's on purpose. "No incoming
15910
16948
  * edge" has no meaning in a timeline — position is the order — and the v2
15911
- * failure modes are different ones: an action-less touch that is not an
15912
- * 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.
15913
16951
  */
15914
16952
  validate() {
15915
16953
  const problems = [];
@@ -15918,19 +16956,6 @@ var JourneyV2Builder = class extends WorkspaceBuilderResource {
15918
16956
  `journey '${this.name}' has no touches \u2014 an empty timeline has nothing to execute.`
15919
16957
  );
15920
16958
  }
15921
- const armHeads = new Set(
15922
- this.allRoutes().map((route) => route.touches[0]).filter(Boolean)
15923
- );
15924
- this.allTouches().forEach((touch) => {
15925
- if (touch.hasOutreach) return;
15926
- const wait = touch.options.wait;
15927
- const isFirst = this.touches[0] === touch;
15928
- const isExplicitWait = !isFirst && !armHeads.has(touch) && (wait?.afterDays !== void 0 || !!wait?.when || wait?.filterId !== void 0);
15929
- if (isExplicitWait) return;
15930
- problems.push(
15931
- `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.`
15932
- );
15933
- });
15934
16959
  for (const touch of this.allTouches()) {
15935
16960
  const branch = touch._branch;
15936
16961
  if (!branch) continue;
@@ -15952,13 +16977,6 @@ var JourneyV2Builder = class extends WorkspaceBuilderResource {
15952
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.`
15953
16978
  );
15954
16979
  }
15955
- for (const route of branch.routes) {
15956
- if (!route.touches.length && !route.options.continueAt) {
15957
- problems.push(
15958
- `route '${route.name}' has no target \u2014 give it at least one touch, or a \`continueAt\` naming the touch it continues to.`
15959
- );
15960
- }
15961
- }
15962
16980
  }
15963
16981
  for (const ending of this.endings) {
15964
16982
  if (!ending.when?.trim() && ending.filterId === void 0) {
@@ -16343,34 +17361,6 @@ function buildV2Wait(wait, touchIndex) {
16343
17361
  return { kind: "none", ...extras };
16344
17362
  }
16345
17363
 
16346
- // src/workspace-builder/role-update.ts
16347
- var RoleUpdate = class extends WorkspaceBuilderResource {
16348
- constructor(roleId, workflowIds, dataTypeIds) {
16349
- super();
16350
- this.roleId = roleId;
16351
- this.workflowIds = workflowIds;
16352
- this.dataTypeIds = dataTypeIds;
16353
- }
16354
- roleId;
16355
- workflowIds;
16356
- dataTypeIds;
16357
- planLine() {
16358
- const parts = [];
16359
- if (this.workflowIds) parts.push(`workflows=${JSON.stringify(this.workflowIds)}`);
16360
- if (this.dataTypeIds) parts.push(`dataTypes=${JSON.stringify(this.dataTypeIds)}`);
16361
- return `RoleUpdate: roleId=${this.roleId}${parts.length ? ` (${parts.join(", ")})` : ""}`;
16362
- }
16363
- async apply(client) {
16364
- if (this._existed) return;
16365
- const payload = {};
16366
- if (this.workflowIds) payload.workflowIds = this.workflowIds;
16367
- if (this.dataTypeIds) payload.dataTypeIds = this.dataTypeIds;
16368
- if (Object.keys(payload).length) await client.updateMemberRole(this.roleId, payload);
16369
- this._id = this.roleId;
16370
- this._created = true;
16371
- }
16372
- };
16373
-
16374
17364
  // src/workspace-builder/workflows.ts
16375
17365
  var PERM_KEYS = {
16376
17366
  canRead: "canRead",
@@ -16623,7 +17613,6 @@ var PHASES = /* @__PURE__ */ new Map([
16623
17613
  [AgentBuilder, 1],
16624
17614
  [WorkflowBuilder, 2],
16625
17615
  [TaskBuilder, 3],
16626
- [RoleUpdate, 4],
16627
17616
  [MemberFilterBuilder, 5],
16628
17617
  [RoutineBuilder, 6],
16629
17618
  [NotificationRuleBuilder, 6],
@@ -16645,10 +17634,6 @@ async function collectPages(fetchPage) {
16645
17634
  }
16646
17635
  return all;
16647
17636
  }
16648
- function sameIdSet(left, right) {
16649
- const target = new Set(right);
16650
- return target.size === new Set(left).size && left.every((id) => target.has(id));
16651
- }
16652
17637
  function notificationRuleKey(noticeType, memberId, workflowId) {
16653
17638
  return JSON.stringify([noticeType, memberId, workflowId]);
16654
17639
  }
@@ -16727,11 +17712,6 @@ var WorkspaceBuilder = class {
16727
17712
  this.resources.push(rule);
16728
17713
  return rule;
16729
17714
  }
16730
- roleUpdate(roleId, workflowIds, dataTypeIds) {
16731
- const update = new RoleUpdate(roleId, workflowIds, dataTypeIds);
16732
- this.resources.push(update);
16733
- return update;
16734
- }
16735
17715
  plan() {
16736
17716
  const resources = this.sortedResources();
16737
17717
  writeLine(`
@@ -16992,45 +17972,9 @@ Done! Created ${count} resources.`);
16992
17972
  }
16993
17973
  }
16994
17974
  }
16995
- await this.resolveExistingRoleUpdates(resources);
16996
17975
  await this.resolveExistingWorkflows(resources, workflowNames);
16997
17976
  await this.resolveExistingNotificationRules(resources);
16998
17977
  }
16999
- /**
17000
- * Adopt a role update whose grants the server already has.
17001
- *
17002
- * A role update is a replace-semantics PUT, not a create, so its identity is
17003
- * the role id and "already applied" means the id sets match exactly. Subset
17004
- * would be wrong: `roleUpdate(7, [])` asks to *clear* the role's workflow
17005
- * access, and treating that as satisfied by a role that still has grants
17006
- * would silently skip a real change.
17007
- *
17008
- * Only the fields this update declares are compared — an update that passes
17009
- * `workflowIds` and omits `dataTypeIds` never touches data-type access, so
17010
- * that access cannot make it stale.
17011
- */
17012
- async resolveExistingRoleUpdates(resources) {
17013
- const updates = resources.filter(
17014
- (resource) => resource instanceof RoleUpdate
17015
- );
17016
- if (!updates.length) return;
17017
- const rolesById = new Map(
17018
- (await this.client.getMemberRoles()).map((role) => [role.id, role])
17019
- );
17020
- for (const update of updates) {
17021
- const role = rolesById.get(update.roleId);
17022
- if (!role) continue;
17023
- const workflowsSettled = update.workflowIds === void 0 || sameIdSet(
17024
- update.workflowIds,
17025
- (role.workflowAccess ?? []).map((access) => access.workflowId)
17026
- );
17027
- const dataTypesSettled = update.dataTypeIds === void 0 || sameIdSet(
17028
- update.dataTypeIds,
17029
- (role.dataTypeAccess ?? []).map((access) => access.dataTypeId)
17030
- );
17031
- if (workflowsSettled && dataTypesSettled) update.adopt(role);
17032
- }
17033
- }
17034
17978
  /**
17035
17979
  * Adopt notification rules the server already has.
17036
17980
  *
@@ -17320,7 +18264,6 @@ function assertUniqueJourneyNames(journeys) {
17320
18264
  }
17321
18265
  }
17322
18266
  function resourceKey(resource) {
17323
- if (resource instanceof RoleUpdate) return "roleUpdates";
17324
18267
  if (resource instanceof FormBuilder) return "forms";
17325
18268
  if (resource instanceof MemberLabelBuilder) return "labels";
17326
18269
  if (resource instanceof WorkflowBuilder) return "workflows";
@@ -17444,7 +18387,6 @@ function writeScopeForResource(resource) {
17444
18387
  if (resource instanceof JourneyBuilder || resource instanceof JourneyStepBuilder || resource instanceof JourneyV2Builder) {
17445
18388
  return "journeys:write";
17446
18389
  }
17447
- if (resource instanceof RoleUpdate) return "member_roles:write";
17448
18390
  return null;
17449
18391
  }
17450
18392
  function scopeRetryHint(resource) {
@@ -17523,9 +18465,11 @@ var AbilityTypeSlugs = {
17523
18465
  GOOGLE_DRIVE: "integration:google_drive",
17524
18466
  GOOGLE_SHEETS: "integration:google_sheets",
17525
18467
  CHARLESTON_PMD_PAGING: "integration:charleston_pmd_paging",
18468
+ COSAN_PATHWAYS_SCHEDULING: "integration:cosan_pathways_scheduling",
17526
18469
  // Communication
17527
18470
  PHONE_CALL_TOOLS: "communication:phone_call_tools",
17528
18471
  SEND_SMS: "communication:send_sms",
18472
+ SEND_EMAIL: "communication:send_email",
17529
18473
  SEND_WHATSAPP: "communication:send_whatsapp",
17530
18474
  MEMBER_ACCESS: "communication:member_access",
17531
18475
  AUDIO_PLAYBACK: "communication:audio_playback",
@@ -17540,6 +18484,8 @@ var AbilityTypeSlugs = {
17540
18484
  MANAGE_WORKSPACE: "delegation:manage_workspace",
17541
18485
  // Workflow
17542
18486
  WORKFLOW_RUN: "workflow:run",
18487
+ // Access
18488
+ MEMBER_ROLE_GATE: "access:member_role_gate",
17543
18489
  // Commerce
17544
18490
  RESELLER: "commerce:reseller",
17545
18491
  // System (auto-injected, hidden from users)
@@ -17738,12 +18684,6 @@ var AbilityConfigIssueSeverity = {
17738
18684
  warning: "warning",
17739
18685
  error: "error"
17740
18686
  };
17741
- var WorkflowAccessWarningResourceType = {
17742
- form: "form",
17743
- file: "file",
17744
- folder: "folder",
17745
- calendar: "calendar"
17746
- };
17747
18687
 
17748
18688
  // src/types/generated/workflow.ts
17749
18689
  var WorkflowRoutingMode = {
@@ -17784,7 +18724,8 @@ var ImportSkippedRuleResponseParentKind = {
17784
18724
  var ImportSkippedRuleResponseReasonCode = {
17785
18725
  missing_binding: "missing_binding",
17786
18726
  invalid_event_rule_cel: "invalid_event_rule_cel",
17787
- unresolved_journey_scope: "unresolved_journey_scope"
18727
+ unresolved_journey_scope: "unresolved_journey_scope",
18728
+ missing_source_workflow: "missing_source_workflow"
17788
18729
  };
17789
18730
  var ImportSkippedRuleResponseStatus = {
17790
18731
  outstanding: "outstanding",
@@ -17916,14 +18857,14 @@ function isChatType(value) {
17916
18857
  }
17917
18858
 
17918
18859
  // src/constants/models.ts
17919
- var DEFAULT_CHAT_MODEL = "aws:bedrock:claude-4-5-haiku";
17920
- 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";
17921
18862
  var DEFAULT_AGENT_REALTIME_MODEL = "xai:realtime:voice-agent-2";
17922
18863
  var DEFAULT_AGENT_REALTIME_MODEL_CONFIG = {
17923
18864
  ttsModel: "native",
17924
18865
  voiceModel: "xai:voice:cosmo"
17925
18866
  };
17926
- var DEFAULT_VOICE_INFERENCE_MODEL = "openai:chat:gpt-5.6-luna";
18867
+ var DEFAULT_VOICE_INFERENCE_MODEL = "openai:chat:gpt-6-luna";
17927
18868
  var DEFAULT_CUSTOM_VOICE_MODEL = "xai:voice:lux";
17928
18869
 
17929
18870
  // src/types/resource-metadata.ts
@@ -18055,6 +18996,14 @@ var ActivityWindowBasis = {
18055
18996
  absolute: "absolute",
18056
18997
  workspace_local: "workspace_local"
18057
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
+ };
18058
19007
 
18059
19008
  // src/types/generated/family.ts
18060
19009
  var ActivityEventFamily = {
@@ -18087,6 +19036,7 @@ var ActivityCapability = {
18087
19036
  "operator:read": "operator:read",
18088
19037
  "org:read": "org:read",
18089
19038
  "phones:read": "phones:read",
19039
+ "records:read": "records:read",
18090
19040
  "workflows:read": "workflows:read",
18091
19041
  "workspace:read": "workspace:read"
18092
19042
  };
@@ -18109,16 +19059,19 @@ var ActivityEventType = {
18109
19059
  chatawaiting_human: "chat.awaiting_human",
18110
19060
  chathuman_replied: "chat.human_replied",
18111
19061
  chatcall_ended: "chat.call_ended",
19062
+ chatsummary: "chat.summary",
18112
19063
  escalationopened: "escalation.opened",
18113
19064
  escalationresolved: "escalation.resolved",
18114
19065
  callstarted: "call.started",
18115
19066
  callcompleted: "call.completed",
18116
19067
  callmissed: "call.missed",
19068
+ callsummary: "call.summary",
18117
19069
  presencewent_online: "presence.went_online",
18118
19070
  presencewent_offline: "presence.went_offline",
18119
19071
  operator_groupmember_added: "operator_group.member_added",
18120
19072
  operator_groupmember_removed: "operator_group.member_removed",
18121
19073
  voicemailreceived: "voicemail.received",
19074
+ voicemailtranscribed: "voicemail.transcribed",
18122
19075
  voicemaillistened: "voicemail.listened",
18123
19076
  routinestarted: "routine.started",
18124
19077
  routinecompleted: "routine.completed",
@@ -18134,7 +19087,9 @@ var ActivityEventType = {
18134
19087
  phone_numberarchived: "phone_number.archived",
18135
19088
  domainlinked: "domain.linked",
18136
19089
  domainverified: "domain.verified",
18137
- configupdated: "config.updated"
19090
+ configupdated: "config.updated",
19091
+ data_recordcreated: "data_record.created",
19092
+ data_recordupdated: "data_record.updated"
18138
19093
  };
18139
19094
  var ActivityVisibility = {
18140
19095
  workspace: "workspace",
@@ -18149,7 +19104,8 @@ var ActorKind = {
18149
19104
  connection: "connection",
18150
19105
  member: "member",
18151
19106
  org_account: "org_account",
18152
- system: "system"
19107
+ system: "system",
19108
+ unattributed: "unattributed"
18153
19109
  };
18154
19110
  var EntityKind = {
18155
19111
  account: "account",
@@ -18181,7 +19137,8 @@ var EntityKind = {
18181
19137
  purchase: "purchase",
18182
19138
  subscription: "subscription",
18183
19139
  data_type: "data_type",
18184
- workspace_config: "workspace_config"
19140
+ workspace_config: "workspace_config",
19141
+ data_record: "data_record"
18185
19142
  };
18186
19143
 
18187
19144
  // src/scopes.ts
@@ -18209,6 +19166,7 @@ var ScopeCategory = /* @__PURE__ */ ((ScopeCategory2) => {
18209
19166
  ScopeCategory2["APPS"] = "apps";
18210
19167
  ScopeCategory2["LABELS"] = "labels";
18211
19168
  ScopeCategory2["ANALYTICS"] = "analytics";
19169
+ ScopeCategory2["ANONYMOUS_SUBMISSIONS"] = "anonymous_submissions";
18212
19170
  ScopeCategory2["OPERATOR"] = "operator";
18213
19171
  ScopeCategory2["EXPORT"] = "export";
18214
19172
  ScopeCategory2["ORG"] = "org";
@@ -18671,6 +19629,14 @@ var SCOPES = {
18671
19629
  description: "View analytics and reports"
18672
19630
  },
18673
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
+ // =========================================================================
18674
19640
  // EXPORT
18675
19641
  // =========================================================================
18676
19642
  "export:read": {
@@ -18903,6 +19869,49 @@ var ChatInteractionController = class {
18903
19869
  this.pending = void 0;
18904
19870
  }
18905
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
+ }
18906
19915
  // Annotate the CommonJS export names for ESM import in node:
18907
19916
  0 && (module.exports = {
18908
19917
  AGENT_NOTE_ORIGINS,
@@ -18933,6 +19942,8 @@ var ChatInteractionController = class {
18933
19942
  BaseApiClient,
18934
19943
  BuildersApi,
18935
19944
  BulkMemberResultStatus,
19945
+ BundleGrantRequestGranteeType,
19946
+ BundlesApi,
18936
19947
  BusinessIndustry,
18937
19948
  BusinessType,
18938
19949
  CELApi,
@@ -18949,7 +19960,11 @@ var ChatInteractionController = class {
18949
19960
  ChatInteractionController,
18950
19961
  ChatMuteReason,
18951
19962
  ConsentMethod,
19963
+ CreateMemberContactPointRequestContactType,
19964
+ CreateMemberContactPointRequestPurpose,
19965
+ CreateMemberContactPointRequestSharing,
18952
19966
  CriterionType,
19967
+ CrmActivityKind,
18953
19968
  DEFAULT_AGENT_CHAT_MODEL,
18954
19969
  DEFAULT_AGENT_REALTIME_MODEL,
18955
19970
  DEFAULT_AGENT_REALTIME_MODEL_CONFIG,
@@ -18972,10 +19987,12 @@ var ChatInteractionController = class {
18972
19987
  EventRuleObjectType,
18973
19988
  FeatureCategory,
18974
19989
  FeatureVisibility,
19990
+ FeedCursorRejection,
18975
19991
  FhirClientType,
18976
19992
  FhirConnectionState,
18977
19993
  FhirVendor,
18978
19994
  FormBuilder,
19995
+ FormBundleItemRecordScope,
18979
19996
  GravityRailClient,
18980
19997
  ImportSkippedRuleResourceGroupResourceType,
18981
19998
  ImportSkippedRuleResponseNeededResourceTypesItem,
@@ -18984,6 +20001,8 @@ var ChatInteractionController = class {
18984
20001
  ImportSkippedRuleResponseStatus,
18985
20002
  InboundFaxStatusValues,
18986
20003
  IndexStatus,
20004
+ InstallationItemChangeChange,
20005
+ InstallationsApi,
18987
20006
  InvitationStatus,
18988
20007
  JobPosition,
18989
20008
  JourneyBuilder,
@@ -19034,13 +20053,20 @@ var ChatInteractionController = class {
19034
20053
  REALTIME_MODEL_OPENAI_2,
19035
20054
  REALTIME_MODEL_OPENAI_MINI,
19036
20055
  RefResolutionStatus,
20056
+ ReferenceTargetInputKind,
19037
20057
  Region,
19038
20058
  RegistrationIdentifier,
19039
20059
  RelatedMemberRole,
19040
20060
  RelationshipCardinality,
19041
20061
  Resource,
19042
- RoleUpdate,
20062
+ ResourceWorkflowsApi,
20063
+ RevisionHistorySegment,
19043
20064
  RoutineBuilder,
20065
+ RoutingActionType,
20066
+ RoutingAudience,
20067
+ RoutingChannel,
20068
+ RoutingTimeWindow,
20069
+ RunHealthCategory,
19044
20070
  SCOPES,
19045
20071
  SCOPE_PRESETS,
19046
20072
  SMS_DELIVERY_FAILURE_STATUSES,
@@ -19048,10 +20074,20 @@ var ChatInteractionController = class {
19048
20074
  STT_MODEL_DEEPGRAM_FLUX_MULTI,
19049
20075
  STT_MODEL_DEEPGRAM_FLUX_MULTI_SELFHOST,
19050
20076
  STT_MODEL_DEEPGRAM_FLUX_SELFHOST,
20077
+ ScalarTargetInputKind,
20078
+ ScenarioHealthCaption,
20079
+ ScenarioHealthHeadline,
20080
+ ScenarioHealthSampleNote,
20081
+ ScenarioHealthState,
20082
+ ScenarioRunBlocker,
19051
20083
  Scope,
19052
20084
  ScopeCategory,
19053
20085
  ScopeManager,
20086
+ SendingNextStep,
20087
+ SendingStopState,
20088
+ SetInstallationPolicyRequestUpgradePolicy,
19054
20089
  SiteDnsRecordType,
20090
+ SolutionReleaseResponseSlug,
19055
20091
  SupervisorsApi,
19056
20092
  TTS_MODEL_AWS_POLLY_GENERATIVE,
19057
20093
  TTS_MODEL_AWS_POLLY_NEURAL,
@@ -19066,11 +20102,11 @@ var ChatInteractionController = class {
19066
20102
  UiPromptPresentedKindValues,
19067
20103
  UiPromptResponseKindValues,
19068
20104
  UiPromptResponseStatusValues,
20105
+ UpdateMemberContactPointRequestContactType,
20106
+ UpdateMemberContactPointRequestPurpose,
20107
+ UpdateMemberContactPointRequestSharing,
19069
20108
  WIDGET_SLUGS,
19070
- WORKFLOW_IMPLICIT_USE_SCOPE,
19071
- WorkflowAccessWarningResourceType,
19072
20109
  WorkflowBuilder,
19073
- WorkflowResourceType,
19074
20110
  WorkflowRoutingMode,
19075
20111
  WorkspaceBuilder,
19076
20112
  WorkspaceBuilderResource,
@@ -19110,10 +20146,9 @@ var ChatInteractionController = class {
19110
20146
  isSMSDeliveryFailureStatus,
19111
20147
  parseOrgAuthChallenge,
19112
20148
  requiresAssistantParticipant,
19113
- roleCanUseWorkflow,
19114
- roleImplicitWorkflowUseScope,
19115
- roleWorkflowAccess,
19116
20149
  runWorkspaceScript,
20150
+ toSafeMemberImportPreview,
20151
+ toSafeMemberImportSummary,
19117
20152
  usesBuiltinAssistant,
19118
20153
  validateFeatureDependencies
19119
20154
  });