@gravity-rail/cli 0.42.0 → 0.43.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.
package/dist/gr.js CHANGED
@@ -3205,7 +3205,7 @@ var init_libphonenumber_js = __esm({
3205
3205
  }
3206
3206
  });
3207
3207
 
3208
- // ../sdk/dist/chunk-JTOMGNUO.js
3208
+ // ../sdk/dist/chunk-G32MQGJD.js
3209
3209
  function resourceWorkflowsPath(wid, ...segments) {
3210
3210
  const tail = segments.map((segment) => encodeURIComponent(String(segment))).join("/");
3211
3211
  const base = `w/${encodeURIComponent(wid)}/resource-workflows`;
@@ -3223,6 +3223,9 @@ function pageQuery(params) {
3223
3223
  const qs = query.toString();
3224
3224
  return qs ? `?${qs}` : "";
3225
3225
  }
3226
+ function refusalCode(value) {
3227
+ return typeof value === "string" && REFUSAL_CODES.includes(value) ? value : void 0;
3228
+ }
3226
3229
  function installationsPath(wid, ...segments) {
3227
3230
  const tail = segments.map((segment) => encodeURIComponent(String(segment))).join("/");
3228
3231
  const base = `w/${encodeURIComponent(wid)}/installations`;
@@ -3415,6 +3418,7 @@ function createApiModules(apiKey, baseUrl3, customFetch) {
3415
3418
  auth: new AuthApi(apiKey, baseUrl3, customFetch),
3416
3419
  builders: new BuildersApi(apiKey, baseUrl3, customFetch),
3417
3420
  bundles: new BundlesApi(apiKey, baseUrl3, customFetch),
3421
+ demos: new DemosApi(apiKey, baseUrl3, customFetch),
3418
3422
  installations: new InstallationsApi(apiKey, baseUrl3, customFetch),
3419
3423
  calendars: new CalendarsApi(apiKey, baseUrl3, customFetch),
3420
3424
  calls: new CallsApi(apiKey, baseUrl3, customFetch),
@@ -3578,6 +3582,7 @@ function bindChatsMethods(target, chats) {
3578
3582
  target.updateChatMute = chats.updateChatMute.bind(chats);
3579
3583
  target.summarizeChat = chats.summarizeChat.bind(chats);
3580
3584
  target.getChatMessages = chats.getChatMessages.bind(chats);
3585
+ target.getChatTaskTransitions = chats.getChatTaskTransitions.bind(chats);
3581
3586
  target.getChildThreadMessages = chats.getChildThreadMessages.bind(chats);
3582
3587
  target.getChatToolCallMessages = chats.getChatToolCallMessages.bind(chats);
3583
3588
  target.getChatTools = chats.getChatTools.bind(chats);
@@ -3610,6 +3615,7 @@ function bindCallsMethods(target, calls, cel) {
3610
3615
  target.getPhoneCalls = calls.getPhoneCalls.bind(calls);
3611
3616
  target.getMessageTiming = calls.getMessageTiming.bind(calls);
3612
3617
  target.getRecordingInfo = calls.getRecordingInfo.bind(calls);
3618
+ target.getEdgeCaptureInfo = calls.getEdgeCaptureInfo.bind(calls);
3613
3619
  target.listChatRecordings = calls.listChatRecordings.bind(calls);
3614
3620
  target.getCallRecordingDownloadUrl = calls.getCallRecordingDownloadUrl.bind(calls);
3615
3621
  target.getCelContext = cel.getCelContext.bind(cel);
@@ -4530,6 +4536,8 @@ function bindBundlesMethods(target, bundles, resourceWorkflows) {
4530
4536
  target.listBundleInstallations = bundles.listBundleInstallations.bind(bundles);
4531
4537
  target.listBundles = bundles.listBundles.bind(bundles);
4532
4538
  target.listBundleWorkflowCandidates = bundles.listBundleWorkflowCandidates.bind(bundles);
4539
+ target.listBundleJourneyCandidates = bundles.listBundleJourneyCandidates.bind(bundles);
4540
+ target.getBundleJourneyCandidate = bundles.getBundleJourneyCandidate.bind(bundles);
4533
4541
  target.createBundle = bundles.createBundle.bind(bundles);
4534
4542
  target.getBundleDraft = bundles.getBundleDraft.bind(bundles);
4535
4543
  target.replaceBundleDraft = bundles.replaceBundleDraft.bind(bundles);
@@ -4542,6 +4550,15 @@ function bindBundlesMethods(target, bundles, resourceWorkflows) {
4542
4550
  target.revokeBundleGrant = bundles.revokeBundleGrant.bind(bundles);
4543
4551
  target.listResourceWorkflows = resourceWorkflows.listResourceWorkflows.bind(resourceWorkflows);
4544
4552
  }
4553
+ function bindDemosMethods(target, demos) {
4554
+ target.getDemo = demos.getDemo.bind(demos);
4555
+ target.startDemoSession = demos.startDemoSession.bind(demos);
4556
+ target.sendDemoSessionSms = demos.sendDemoSessionSms.bind(demos);
4557
+ target.sendDemoSessionEmail = demos.sendDemoSessionEmail.bind(demos);
4558
+ target.placeDemoSessionCall = demos.placeDemoSessionCall.bind(demos);
4559
+ target.getDemoSessionTimeline = demos.getDemoSessionTimeline.bind(demos);
4560
+ target.endDemoSession = demos.endDemoSession.bind(demos);
4561
+ }
4545
4562
  function bindInstallationsMethods(target, installations) {
4546
4563
  target.preflightBundleInstallation = installations.preflightBundleInstallation.bind(installations);
4547
4564
  target.installBundle = installations.installBundle.bind(installations);
@@ -4611,6 +4628,10 @@ function bindQualificationsMethods(target, qualifications) {
4611
4628
  target.listTestChatRuns = qualifications.listTestChatRuns.bind(qualifications);
4612
4629
  target.listScenarioHealthSummaries = qualifications.listScenarioHealthSummaries.bind(qualifications);
4613
4630
  target.getTestChatRun = qualifications.getTestChatRun.bind(qualifications);
4631
+ target.listTestChatRunCapturedEffects = qualifications.listTestChatRunCapturedEffects.bind(qualifications);
4632
+ target.deliverTestChatRunSms = qualifications.deliverTestChatRunSms.bind(qualifications);
4633
+ target.deliverTestChatRunEmail = qualifications.deliverTestChatRunEmail.bind(qualifications);
4634
+ target.placeTestChatRunCall = qualifications.placeTestChatRunCall.bind(qualifications);
4614
4635
  target.startTestChatRun = qualifications.startTestChatRun.bind(qualifications);
4615
4636
  target.evaluateTestChatRun = qualifications.evaluateTestChatRun.bind(qualifications);
4616
4637
  target.endTestChatRun = qualifications.endTestChatRun.bind(qualifications);
@@ -4703,9 +4724,9 @@ function getRevisionState(workflow, revision) {
4703
4724
  state: revision?.publishedAt != null ? "published" : "draft"
4704
4725
  };
4705
4726
  }
4706
- var AbilitiesApi, ResourceWorkflowsApi, BundlesApi, InstallationsApi, AccessGrantsApi, AgentTasksApi, AgentsApi, AIModelsApi, ApiKeysApi, AppsApi, AssignmentsApi, VoiceApi, AuthApi, BuildersApi, CalendarsApi, CallsApi, CELApi, ChatsApi, ConfluenceApi, CustomToolkitsApi, DataTypesApi, DiscordBotsApi, SlackAppsApi, EventsApi, FeaturesApi, FhirConnectionsApi, InboundFaxStatus, DocumoFaxApi, HealthieApi, FilesApi, InboxesApi, InquiriesApi, AppConnectionsApi, McpServersApi, MemberImportValidationError, MembersApi, MondayIntegrationApi, NotificationRulesApi, OperatorApi, OrgApi, OAuthConnectionsApi, OAuthApi, PhoneNumbersApi, PronunciationsApi, PromptsApi, PersonasApi, QueriesApi, QualificationsApi, ReportsApi, RoutingRulesApi, SalesforceApi, ConnectionSyncApi, HubspotApi, SitesApi, SubscriptionsApi, SupportRequestsApi, CustomersApi, ResellersApi, SupervisorsApi, TasksApi, TemplatesApi, ToolkitsApi, JourneysApi, WorkflowsApi, WorkflowNotesApi, EventRuleObjectType, EventRuleEventType, EventRuleActionType, DriverMode, MEMBER_RELATIONSHIP_KINDS, WorkspaceInvitationsApi, WorkspacesApi, DashboardsApi, DevicesApi, TeamsAppsApi, ExperimentsApi, PatientSyncConnectionsApi, ActivityApi, MotdApi, InterventionRequestsApi, MetricsApi, ProjectsApi, TrackedLinksApi, WORKSPACE_METHOD_NAMES, WORKSPACE_METHOD_NAME_SET, GravityRailClient, WIDGET_SLUGS, CHAT_TYPES, BUILTIN_ASSISTANT_CHAT_TYPES, MEMBER_AGENT_CHAT_TYPES, ActivityGrain, ActivityGroupBy, ActivityOpenItemOrder, ActivityWindowBasis;
4707
- var init_chunk_JTOMGNUO = __esm({
4708
- "../sdk/dist/chunk-JTOMGNUO.js"() {
4727
+ var AbilitiesApi, ResourceWorkflowsApi, BundlesApi, DemoRefusalCode, REFUSAL_CODES, DemoRequestError, DemosApi, InstallationsApi, AccessGrantsApi, AgentTasksApi, AgentsApi, AIModelsApi, ApiKeysApi, AppsApi, AssignmentsApi, VoiceApi, AuthApi, BuildersApi, CalendarsApi, CallsApi, CELApi, ChatsApi, ConfluenceApi, CustomToolkitsApi, DataTypesApi, DiscordBotsApi, SlackAppsApi, EventsApi, FeaturesApi, FhirConnectionsApi, InboundFaxStatus, DocumoFaxApi, HealthieApi, FilesApi, InboxesApi, InquiriesApi, AppConnectionsApi, McpServersApi, MemberImportValidationError, MembersApi, MondayIntegrationApi, NotificationRulesApi, OperatorApi, OrgApi, OAuthConnectionsApi, OAuthApi, PhoneNumbersApi, PronunciationsApi, PromptsApi, PersonasApi, QueriesApi, QualificationsApi, ReportsApi, RoutingRulesApi, SalesforceApi, ConnectionSyncApi, HubspotApi, SitesApi, SubscriptionsApi, SupportRequestsApi, CustomersApi, ResellersApi, SupervisorsApi, TasksApi, TemplatesApi, ToolkitsApi, JourneysApi, WorkflowsApi, WorkflowNotesApi, EventRuleObjectType, EventRuleEventType, EventRuleActionType, DriverMode, MEMBER_RELATIONSHIP_KINDS, WorkspaceInvitationsApi, WorkspacesApi, DashboardsApi, DevicesApi, TeamsAppsApi, ExperimentsApi, PatientSyncConnectionsApi, ActivityApi, MotdApi, InterventionRequestsApi, MetricsApi, ProjectsApi, TrackedLinksApi, WORKSPACE_METHOD_NAMES, WORKSPACE_METHOD_NAME_SET, GravityRailClient, WIDGET_SLUGS, CHAT_TYPES, BUILTIN_ASSISTANT_CHAT_TYPES, MEMBER_AGENT_CHAT_TYPES, ActivityGrain, ActivityGroupBy, ActivityOpenItemOrder, ActivityWindowBasis;
4728
+ var init_chunk_G32MQGJD = __esm({
4729
+ "../sdk/dist/chunk-G32MQGJD.js"() {
4709
4730
  init_chunk_67QXTQVL();
4710
4731
  init_libphonenumber_js();
4711
4732
  AbilitiesApi = class extends BaseApiClient {
@@ -4857,6 +4878,27 @@ var init_chunk_JTOMGNUO = __esm({
4857
4878
  async listBundleWorkflowCandidates(wid) {
4858
4879
  return this.fetch(bundlesPath(wid, "workflow-candidates"));
4859
4880
  }
4881
+ /**
4882
+ * This workspace's Journeys for the Bundle picker, by name. Nothing is built
4883
+ * for the list. `available` is false while the server refuses Journey items.
4884
+ * Requires `workflows:admin` and `journeys:write`.
4885
+ */
4886
+ async listBundleJourneyCandidates(wid) {
4887
+ return this.fetch(bundlesPath(wid, "journey-candidates"));
4888
+ }
4889
+ /**
4890
+ * One Journey as the Bundle item that adds it: the whole Journey item the
4891
+ * server built (`item`), the Forms its conditions read and the Workflows its
4892
+ * actions start, or the `problems` that name what the Journey must change
4893
+ * first. The item never carries enrollment; `enrollmentOmitted` says the
4894
+ * Journey has automatic enrollment that was left out. Requires
4895
+ * `workflows:admin` and `journeys:write`.
4896
+ */
4897
+ async getBundleJourneyCandidate(wid, journeyUuid) {
4898
+ return this.fetch(
4899
+ bundlesPath(wid, "journey-candidates", journeyUuid)
4900
+ );
4901
+ }
4860
4902
  /** Create an empty Bundle owned by this workspace. */
4861
4903
  async createBundle(wid, data) {
4862
4904
  return this.fetch(bundlesPath(wid), {
@@ -4923,6 +4965,109 @@ var init_chunk_JTOMGNUO = __esm({
4923
4965
  });
4924
4966
  }
4925
4967
  };
4968
+ DemoRefusalCode = {
4969
+ session_expired: "session_expired",
4970
+ session_capped: "session_capped",
4971
+ calls_capped: "calls_capped",
4972
+ session_ended: "session_ended",
4973
+ destination_not_allowed: "destination_not_allowed",
4974
+ sender_cannot_send: "sender_cannot_send",
4975
+ demo_not_available: "demo_not_available"
4976
+ };
4977
+ REFUSAL_CODES = Object.values(DemoRefusalCode);
4978
+ DemoRequestError = class extends ApiError {
4979
+ code;
4980
+ constructor(message, statusCode, code) {
4981
+ super(message, statusCode);
4982
+ this.name = "DemoRequestError";
4983
+ this.code = code;
4984
+ }
4985
+ };
4986
+ DemosApi = class extends BaseApiClient {
4987
+ /** Whether a Bundle has a Demo, and what a visitor may contact in it. Needs no session. */
4988
+ async getDemo(bundleUuid2) {
4989
+ return this.anonymous(`demos/${encodeURIComponent(bundleUuid2)}`, {
4990
+ method: "GET"
4991
+ });
4992
+ }
4993
+ /** Start a Demo session. Needs no session; `recaptchaToken` is required where reCAPTCHA is enforced. */
4994
+ async startDemoSession(bundleUuid2, data = {}) {
4995
+ return this.anonymous(
4996
+ `demos/${encodeURIComponent(bundleUuid2)}/sessions`,
4997
+ { method: "POST", body: JSON.stringify(data) }
4998
+ );
4999
+ }
5000
+ /** Text one of the Demo's numbers as the session's Persona. */
5001
+ async sendDemoSessionSms(sessionToken, data) {
5002
+ return this.anonymous(
5003
+ "demos/sessions/sms",
5004
+ { method: "POST", body: JSON.stringify(data) },
5005
+ sessionToken
5006
+ );
5007
+ }
5008
+ /** Email one of the Demo's inboxes as the session's Persona. Returns after the Agent's turn. */
5009
+ async sendDemoSessionEmail(sessionToken, data) {
5010
+ return this.anonymous(
5011
+ "demos/sessions/email",
5012
+ { method: "POST", body: JSON.stringify(data) },
5013
+ sessionToken
5014
+ );
5015
+ }
5016
+ /**
5017
+ * Call one of the Demo's numbers as the session's Persona.
5018
+ *
5019
+ * For an `answered` call, `join` holds what a browser opens the call with:
5020
+ * the web voice socket `url`, a single-use login `token` for this call's
5021
+ * Chat, and `chatId`. Send them in `voice.login`. For a `not_answered`
5022
+ * call, `notAnsweredBranch` says what the number does and nothing connects.
5023
+ */
5024
+ async placeDemoSessionCall(sessionToken, data) {
5025
+ return this.anonymous(
5026
+ "demos/sessions/call",
5027
+ { method: "POST", body: JSON.stringify(data) },
5028
+ sessionToken
5029
+ );
5030
+ }
5031
+ /**
5032
+ * The session's own messages, oldest first, and its state. `after` returns
5033
+ * only the rows after that row id, so a poll reads what is new.
5034
+ */
5035
+ async getDemoSessionTimeline(sessionToken, params) {
5036
+ const query = params?.after !== void 0 ? `?after=${encodeURIComponent(params.after)}` : "";
5037
+ return this.anonymous(
5038
+ `demos/sessions/timeline${query}`,
5039
+ { method: "GET" },
5040
+ sessionToken
5041
+ );
5042
+ }
5043
+ /** End the session. Nothing further is captured on it. */
5044
+ async endDemoSession(sessionToken) {
5045
+ return this.anonymous(
5046
+ "demos/sessions/end",
5047
+ { method: "POST" },
5048
+ sessionToken
5049
+ );
5050
+ }
5051
+ /**
5052
+ * A request that carries the Demo session token, or no credential at all.
5053
+ * It never sends this client's API key or the browser's cookies.
5054
+ */
5055
+ async anonymous(endpoint, init, sessionToken) {
5056
+ const headers2 = new Headers({ "Content-Type": "application/json" });
5057
+ if (sessionToken) headers2.set("Authorization", `Bearer ${sessionToken}`);
5058
+ const response = await this.fetchFunction(`${this.baseUrl}/api/v2/${endpoint}`, {
5059
+ ...init,
5060
+ headers: headers2,
5061
+ credentials: "omit"
5062
+ });
5063
+ if (!response.ok) {
5064
+ const body = await response.json().catch(() => ({}));
5065
+ const detail = typeof body.detail === "string" ? body.detail : `Request failed (${response.status})`;
5066
+ throw new DemoRequestError(detail, response.status, refusalCode(body.code));
5067
+ }
5068
+ return await response.json();
5069
+ }
5070
+ };
4926
5071
  InstallationsApi = class extends BaseApiClient {
4927
5072
  /** Inspect one published release and its selected example dependencies. */
4928
5073
  async preflightBundleInstallation(wid, bundleUuid2, data) {
@@ -6203,9 +6348,25 @@ var init_chunk_JTOMGNUO = __esm({
6203
6348
  `w/${wid}/calls${params.toString() ? `?${params.toString()}` : ""}`
6204
6349
  );
6205
6350
  }
6206
- /** Get message timing data for a chat recording. */
6207
- async getMessageTiming(wid, chatId) {
6208
- return this.fetch(`w/${wid}/recordings/chat/${chatId}/message-timing`);
6351
+ /**
6352
+ * Get message timing data for a chat recording. `source` selects whose
6353
+ * timeline the offsets are measured against; omitted means `standard`.
6354
+ */
6355
+ async getMessageTiming(wid, chatId, options = {}) {
6356
+ const params = new URLSearchParams();
6357
+ if (options.source) params.set("source", options.source);
6358
+ return this.fetch(
6359
+ `w/${wid}/recordings/chat/${chatId}/message-timing${params.toString() ? `?${params.toString()}` : ""}`
6360
+ );
6361
+ }
6362
+ /**
6363
+ * Staff-only discovery of retained edge-stream capture for a chat:
6364
+ * whether any is retained, its aggregate coverage status, the interval it
6365
+ * covers, and closed reason codes. `available: false` when nothing is
6366
+ * retained; 403 for anyone who is not Gravity Rail staff.
6367
+ */
6368
+ async getEdgeCaptureInfo(wid, chatId) {
6369
+ return this.fetch(`w/${wid}/recordings/chat/${chatId}/edge-capture`);
6209
6370
  }
6210
6371
  /**
6211
6372
  * Get PHI-safe provenance metadata for the recording served by
@@ -6571,6 +6732,19 @@ var init_chunk_JTOMGNUO = __esm({
6571
6732
  `w/${wid}/chats/${id}/messages${params.toString() ? `?${params.toString()}` : ""}`
6572
6733
  );
6573
6734
  }
6735
+ /** Who moved the chat's Assignment between Tasks, for a time window.
6736
+ * Pair it with `getChatMessages`: pass the window the message page covers as
6737
+ * `after` / `before` (ISO-8601, inclusive). The newest `limit` moves in the
6738
+ * window come back, oldest first. */
6739
+ async getChatTaskTransitions(wid, id, options) {
6740
+ const params = new URLSearchParams();
6741
+ if (options?.after) params.append("after", options.after);
6742
+ if (options?.before) params.append("before", options.before);
6743
+ if (options?.limit) params.append("limit", options.limit.toString());
6744
+ return this.fetch(
6745
+ `w/${wid}/chats/${id}/task-transitions${params.toString() ? `?${params.toString()}` : ""}`
6746
+ );
6747
+ }
6574
6748
  /** List the background-work thread hanging off a message.
6575
6749
  *
6576
6750
  * When a tool trajectory outgrows its turn it detaches and runs in the
@@ -9787,7 +9961,8 @@ var init_chunk_JTOMGNUO = __esm({
9787
9961
  return this.fetch(`o/${orgIdOrUuid}/bundles`);
9788
9962
  }
9789
9963
  /**
9790
- * Update the settings an org admin owns: name, slug and contact details.
9964
+ * Update the settings an org admin owns: name, slug, contact details and
9965
+ * the security contact.
9791
9966
  *
9792
9967
  * Deliberately NOT the admin organization update — `enforceCreditLimit`
9793
9968
  * is superuser-only and is not a field on this endpoint's request model
@@ -11239,6 +11414,18 @@ var init_chunk_JTOMGNUO = __esm({
11239
11414
  async getTestChatRun(wid, runId) {
11240
11415
  return this.fetch(`w/${wid}/qualifications/test-chat-runs/${runId}`);
11241
11416
  }
11417
+ /**
11418
+ * What a test run would have sent: the SMS, WhatsApp, email, call,
11419
+ * notification and escalation it prepared, with content, oldest first.
11420
+ * One entry per Member reached, naming the Member and the workspace phone
11421
+ * number or inbox used. Nothing in the list was delivered. `truncated` means the list is
11422
+ * incomplete.
11423
+ */
11424
+ async listTestChatRunCapturedEffects(wid, runId) {
11425
+ return this.fetch(
11426
+ `w/${wid}/qualifications/test-chat-runs/${runId}/captured-effects`
11427
+ );
11428
+ }
11242
11429
  async startTestChatRun(wid, workflowId, data = {}) {
11243
11430
  return this.fetch(
11244
11431
  `w/${wid}/qualifications/workflows/${workflowId}/test-chat-runs`,
@@ -11248,6 +11435,50 @@ var init_chunk_JTOMGNUO = __esm({
11248
11435
  }
11249
11436
  );
11250
11437
  }
11438
+ /**
11439
+ * Text a workspace phone number as the run's Persona. The text enters the
11440
+ * inbound SMS pipeline; the Agent's reply is captured on the run and never
11441
+ * sent. `chatId` is the Chat the text landed in.
11442
+ */
11443
+ async deliverTestChatRunSms(wid, runId, data) {
11444
+ return this.fetch(
11445
+ `w/${wid}/qualifications/test-chat-runs/${runId}/inbound/sms`,
11446
+ {
11447
+ method: "POST",
11448
+ body: JSON.stringify(data)
11449
+ }
11450
+ );
11451
+ }
11452
+ /**
11453
+ * Email a workspace inbox as the run's Persona. The email enters the
11454
+ * inbound email pipeline; the call returns after the Agent's turn, and the
11455
+ * reply is captured on the run and never sent.
11456
+ */
11457
+ async deliverTestChatRunEmail(wid, runId, data) {
11458
+ return this.fetch(
11459
+ `w/${wid}/qualifications/test-chat-runs/${runId}/inbound/email`,
11460
+ {
11461
+ method: "POST",
11462
+ body: JSON.stringify(data)
11463
+ }
11464
+ );
11465
+ }
11466
+ /**
11467
+ * Call a workspace phone number as the run's Persona. When the Agent
11468
+ * answers (`answered: true`), `chatId` is the test Chat a browser joins
11469
+ * over the web voice socket (`voice.login` with that Chat id). Otherwise
11470
+ * `notAnsweredBranch` names what the number does with the call, and
11471
+ * nothing is run. No carrier is dialed.
11472
+ */
11473
+ async placeTestChatRunCall(wid, runId, data) {
11474
+ return this.fetch(
11475
+ `w/${wid}/qualifications/test-chat-runs/${runId}/inbound/call`,
11476
+ {
11477
+ method: "POST",
11478
+ body: JSON.stringify(data)
11479
+ }
11480
+ );
11481
+ }
11251
11482
  async evaluateTestChatRun(wid, runId) {
11252
11483
  await this.fetch(`w/${wid}/qualifications/test-chat-runs/${runId}/evaluate`, {
11253
11484
  method: "POST"
@@ -15360,6 +15591,7 @@ var init_chunk_JTOMGNUO = __esm({
15360
15591
  "getInstallationReadiness",
15361
15592
  "getThemeSettingsSchema",
15362
15593
  "getBundleDraft",
15594
+ "getBundleJourneyCandidate",
15363
15595
  "getBundle",
15364
15596
  "getBundleVersion",
15365
15597
  "getBusinessHoursStatus",
@@ -15391,6 +15623,7 @@ var init_chunk_JTOMGNUO = __esm({
15391
15623
  "getChatLabels",
15392
15624
  "getChatMachineResources",
15393
15625
  "getChatMessages",
15626
+ "getChatTaskTransitions",
15394
15627
  "getChatModelOverride",
15395
15628
  "getChatPhoneCalls",
15396
15629
  "getChatSkills",
@@ -15448,6 +15681,7 @@ var init_chunk_JTOMGNUO = __esm({
15448
15681
  "getDocumoFaxSetup",
15449
15682
  "listDocumoFaxes",
15450
15683
  "getDocumoFaxStatus",
15684
+ "getEdgeCaptureInfo",
15451
15685
  "getEnrollmentStatusLog",
15452
15686
  "getEventRule",
15453
15687
  "getEventRules",
@@ -15728,6 +15962,7 @@ var init_chunk_JTOMGNUO = __esm({
15728
15962
  "listAvailableAppConnections",
15729
15963
  "listInstallations",
15730
15964
  "listBundleGrants",
15965
+ "listBundleJourneyCandidates",
15731
15966
  "listBundleVersions",
15732
15967
  "listBundles",
15733
15968
  "listBundleWorkflowCandidates",
@@ -15764,6 +15999,10 @@ var init_chunk_JTOMGNUO = __esm({
15764
15999
  "listSalesforceObjects",
15765
16000
  "listScenarioHealthSummaries",
15766
16001
  "listScenarios",
16002
+ "listTestChatRunCapturedEffects",
16003
+ "deliverTestChatRunSms",
16004
+ "deliverTestChatRunEmail",
16005
+ "placeTestChatRunCall",
15767
16006
  "listTestChatRuns",
15768
16007
  "listWidgetDomains",
15769
16008
  "listWorkspaceInvitationsAdmin",
@@ -16018,6 +16257,7 @@ var init_chunk_JTOMGNUO = __esm({
16018
16257
  updateChatMute;
16019
16258
  summarizeChat;
16020
16259
  getChatMessages;
16260
+ getChatTaskTransitions;
16021
16261
  getChildThreadMessages;
16022
16262
  getChatToolCallMessages;
16023
16263
  getChatTools;
@@ -16049,6 +16289,7 @@ var init_chunk_JTOMGNUO = __esm({
16049
16289
  getPhoneCalls;
16050
16290
  getMessageTiming;
16051
16291
  getRecordingInfo;
16292
+ getEdgeCaptureInfo;
16052
16293
  listChatRecordings;
16053
16294
  getCallRecordingDownloadUrl;
16054
16295
  getCelContext;
@@ -16192,6 +16433,10 @@ var init_chunk_JTOMGNUO = __esm({
16192
16433
  listTestChatRuns;
16193
16434
  listScenarioHealthSummaries;
16194
16435
  getTestChatRun;
16436
+ listTestChatRunCapturedEffects;
16437
+ deliverTestChatRunSms;
16438
+ deliverTestChatRunEmail;
16439
+ placeTestChatRunCall;
16195
16440
  startTestChatRun;
16196
16441
  evaluateTestChatRun;
16197
16442
  endTestChatRun;
@@ -16303,6 +16548,14 @@ var init_chunk_JTOMGNUO = __esm({
16303
16548
  createJourneyNote;
16304
16549
  updateJourneyNote;
16305
16550
  deleteJourneyNote;
16551
+ // Demos API
16552
+ getDemo;
16553
+ startDemoSession;
16554
+ sendDemoSessionSms;
16555
+ sendDemoSessionEmail;
16556
+ placeDemoSessionCall;
16557
+ getDemoSessionTimeline;
16558
+ endDemoSession;
16306
16559
  updateBundle;
16307
16560
  listBundleInstallations;
16308
16561
  // Bundles API
@@ -16310,6 +16563,8 @@ var init_chunk_JTOMGNUO = __esm({
16310
16563
  getPublicBundle;
16311
16564
  listBundles;
16312
16565
  listBundleWorkflowCandidates;
16566
+ listBundleJourneyCandidates;
16567
+ getBundleJourneyCandidate;
16313
16568
  createBundle;
16314
16569
  getBundleDraft;
16315
16570
  replaceBundleDraft;
@@ -17163,6 +17418,7 @@ var init_chunk_JTOMGNUO = __esm({
17163
17418
  bindTrackedLinksMethods(this, apis.trackedLinks);
17164
17419
  bindJourneysMethods(this, apis.journeys);
17165
17420
  bindBundlesMethods(this, apis.bundles, apis.resourceWorkflows);
17421
+ bindDemosMethods(this, apis.demos);
17166
17422
  bindInstallationsMethods(this, apis.installations);
17167
17423
  bindExperimentsMethods(this, apis.experiments);
17168
17424
  bindOperatorMethods(this, apis.operatorGroups);
@@ -17393,7 +17649,7 @@ var init_chunk_6KPGCPGW = __esm({
17393
17649
  var SEARCHABLE_EVENT_RULE_SOURCE_FIELDS, ActivityEventType, EntityKind;
17394
17650
  var init_dist = __esm({
17395
17651
  "../sdk/dist/index.js"() {
17396
- init_chunk_JTOMGNUO();
17652
+ init_chunk_G32MQGJD();
17397
17653
  init_chunk_72SWNLVD();
17398
17654
  init_chunk_6KPGCPGW();
17399
17655
  init_chunk_67QXTQVL();
@@ -25023,10 +25279,14 @@ Assistant / models (live on the DRAFT revision \u2014 publish to go live)
25023
25279
  chatModelId (string) Text chat model (see \`gr ai-models chat\`)
25024
25280
  chatModelConfig (object|null) Chat model overrides
25025
25281
  realtimeModelId (string|null) Voice/realtime model (see \`gr ai-models realtime\`)
25282
+ create: omit \u2192 xai:realtime:voice-agent-2 with
25283
+ voice xai:voice:cosmo; null = voice off
25284
+ update: null = voice off
25026
25285
  One-shot voice example:
25027
25286
  {"realtimeModelId":"xai:realtime:voice-agent-2"}
25028
- Native models auto-fill tts=native + default voice
25029
- (xAI \u2192 xai:voice:eve). Optional explicit config:
25287
+ A native model named WITHOUT a config gets
25288
+ tts=native + the provider fallback voice
25289
+ (xAI \u2192 xai:voice:eve, not cosmo). Explicit config:
25030
25290
  {"realtimeModelId":"xai:realtime:voice-agent-2",
25031
25291
  "realtimeModelConfig":{"ttsModel":"native",
25032
25292
  "voiceModel":"xai:voice:ara"}}
@@ -31295,7 +31555,6 @@ init_output();
31295
31555
  var COLUMNS12 = [
31296
31556
  COL.id(),
31297
31557
  COL.name(),
31298
- { header: "AGE", getValue: (item) => item.age != null ? String(item.age) : "" },
31299
31558
  {
31300
31559
  header: "HAS_PHONE",
31301
31560
  getValue: (item) => item.hasPhone ? "yes" : "no"
@@ -39152,6 +39411,14 @@ init_context();
39152
39411
  function runOutcome(run) {
39153
39412
  return run.outcome ?? run.status ?? "";
39154
39413
  }
39414
+ function replayedPages(run) {
39415
+ return typeof run.replayedPages === "number" ? run.replayedPages : 0;
39416
+ }
39417
+ function countSummary(run) {
39418
+ const replayed = replayedPages(run);
39419
+ const replay = replayed > 0 ? `, replayed pages: ${replayed}` : "";
39420
+ return `${run.synced} synced, ${run.failed} failed, ${run.skipped} skipped (${run.total} total${replay})`;
39421
+ }
39155
39422
  var RUN_COLUMNS2 = [
39156
39423
  { header: "RUN ID", getValue: (item) => item.runId ?? "" },
39157
39424
  { header: "OUTCOME", getValue: (item) => runOutcome(item) },
@@ -39161,6 +39428,7 @@ var RUN_COLUMNS2 = [
39161
39428
  { header: "SYNCED", getValue: (item) => String(item.synced ?? 0) },
39162
39429
  { header: "FAILED", getValue: (item) => String(item.failed ?? 0) },
39163
39430
  { header: "SKIPPED", getValue: (item) => String(item.skipped ?? 0) },
39431
+ { header: "REPLAYED PAGES", getValue: (item) => String(replayedPages(item)) },
39164
39432
  { header: "DRY RUN", getValue: (item) => item.dryRun ? "yes" : "no" },
39165
39433
  { header: "STARTED", getValue: (item) => item.startedAt ?? "" }
39166
39434
  ];
@@ -39199,9 +39467,7 @@ async function streamSyncRun(response, verbose) {
39199
39467
  lastRun = data;
39200
39468
  if (verbose) {
39201
39469
  const s = data;
39202
- process.stderr.write(
39203
- `\r ${runOutcome(s)} \u2014 ${s.synced} synced, ${s.failed} failed, ${s.skipped} skipped (${s.total} total)`
39204
- );
39470
+ process.stderr.write(`\r ${runOutcome(s)} \u2014 ${countSummary(s)}`);
39205
39471
  }
39206
39472
  } else if (data.type === "sync_item") {
39207
39473
  if (verbose) {
@@ -46082,7 +46348,7 @@ init_concierge_api();
46082
46348
 
46083
46349
  // package.json
46084
46350
  var package_default = {
46085
- version: "0.42.0"};
46351
+ version: "0.43.0"};
46086
46352
 
46087
46353
  // src/gr.ts
46088
46354
  var VERSION = package_default.version;