@gravity-rail/sdk 0.17.0 → 0.18.1

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/index.cjs CHANGED
@@ -131,7 +131,8 @@ __export(src_exports, {
131
131
  SMS_DELIVERY_FAILURE_STATUSES: () => SMS_DELIVERY_FAILURE_STATUSES,
132
132
  STT_MODEL_DEEPGRAM_FLUX: () => STT_MODEL_DEEPGRAM_FLUX,
133
133
  STT_MODEL_DEEPGRAM_FLUX_MULTI: () => STT_MODEL_DEEPGRAM_FLUX_MULTI,
134
- STT_MODEL_ELEVENLABS_SCRIBE: () => STT_MODEL_ELEVENLABS_SCRIBE,
134
+ STT_MODEL_DEEPGRAM_FLUX_MULTI_SELFHOST: () => STT_MODEL_DEEPGRAM_FLUX_MULTI_SELFHOST,
135
+ STT_MODEL_DEEPGRAM_FLUX_SELFHOST: () => STT_MODEL_DEEPGRAM_FLUX_SELFHOST,
135
136
  Scope: () => Scope,
136
137
  ScopeCategory: () => ScopeCategory,
137
138
  ScopeManager: () => ScopeManager,
@@ -169,8 +170,6 @@ __export(src_exports, {
169
170
  formatAppContextAsMarkdown: () => formatAppContextAsMarkdown,
170
171
  getAllFeatures: () => getAllFeatures,
171
172
  getAllResourceSlugs: () => getAllResourceSlugs,
172
- getApplicableResourceSlugs: () => getApplicableResourceSlugs,
173
- getApplicableResources: () => getApplicableResources,
174
173
  getAvailableFeaturesForUpgrade: () => getAvailableFeaturesForUpgrade,
175
174
  getCookieValue: () => getCookieValue,
176
175
  getFeature: () => getFeature,
@@ -179,7 +178,6 @@ __export(src_exports, {
179
178
  getMissingDependencies: () => getMissingDependencies,
180
179
  getResourceMetadata: () => getResourceMetadata,
181
180
  getRevisionState: () => getRevisionState,
182
- getScopeFromProductType: () => getScopeFromProductType,
183
181
  getTTSProvider: () => getTTSProvider,
184
182
  getVoiceModelId: () => getVoiceModelId,
185
183
  initializeFeatures: () => initializeFeatures,
@@ -2077,9 +2075,7 @@ var ChatsApi = class extends BaseApiClient {
2077
2075
  }
2078
2076
  /** Get loaded and revealed skills for a chat. */
2079
2077
  async getChatSkills(wid, chatId) {
2080
- return this.fetch(
2081
- `w/${wid}/chats/${chatId}/skills`
2082
- );
2078
+ return this.fetch(`w/${wid}/chats/${chatId}/skills`);
2083
2079
  }
2084
2080
  /** List built-in skills selectable before a Manager Chat (and on Routine manager tasks). */
2085
2081
  async getManagerSkills(wid) {
@@ -2692,6 +2688,7 @@ var DataTypesApi = class extends BaseApiClient {
2692
2688
  const params = new URLSearchParams();
2693
2689
  if (options?.memberId !== void 0) params.append("member_id", options.memberId.toString());
2694
2690
  if (options?.memberIds?.length) params.append("member_ids", options.memberIds.join(","));
2691
+ if (options?.recordId !== void 0) params.append("record_id", options.recordId.toString());
2695
2692
  if (options?.search) params.append("search", options.search);
2696
2693
  if (options?.searchField) params.append("search_field", options.searchField);
2697
2694
  if (options?.dataRecordFilterId != null) {
@@ -2712,9 +2709,7 @@ var DataTypesApi = class extends BaseApiClient {
2712
2709
  params.append("dataTypeId", options.dataTypeId.toString());
2713
2710
  }
2714
2711
  const qs = params.toString();
2715
- return this.fetch(
2716
- `w/${wid}/data-record-filters${qs ? `?${qs}` : ""}`
2717
- );
2712
+ return this.fetch(`w/${wid}/data-record-filters${qs ? `?${qs}` : ""}`);
2718
2713
  }
2719
2714
  /** Get a single data-record filter by ID. */
2720
2715
  async getDataRecordFilter(wid, filterId) {
@@ -2742,9 +2737,7 @@ var DataTypesApi = class extends BaseApiClient {
2742
2737
  }
2743
2738
  /** Get the count of records matching a saved filter. */
2744
2739
  async getDataRecordFilterCount(wid, filterId) {
2745
- return this.fetch(
2746
- `w/${wid}/data-record-filters/${filterId}/count`
2747
- );
2740
+ return this.fetch(`w/${wid}/data-record-filters/${filterId}/count`);
2748
2741
  }
2749
2742
  /** Get a single data record by ID. */
2750
2743
  async getDataRecord(wid, recordId) {
@@ -3289,6 +3282,27 @@ var EventsApi = class extends BaseApiClient {
3289
3282
  method: "POST"
3290
3283
  });
3291
3284
  }
3285
+ /**
3286
+ * Configuration change history for one routine, newest first.
3287
+ *
3288
+ * Answers "who turned this off, when, and why" — including the
3289
+ * platform-initiated pauses (finite-repeat exhaustion, outbound-safety
3290
+ * runaway auto-pause) that no other surface exposes.
3291
+ *
3292
+ * `transitionsOnly` filters to rows that record a real trigger-gate
3293
+ * transition. Prefer it for a toggle-focused view: a full-form save always
3294
+ * re-sends every field, so unfiltered history includes saves that changed
3295
+ * nothing.
3296
+ */
3297
+ async getRoutineConfigEvents(wid, id, options = {}) {
3298
+ const params = new URLSearchParams();
3299
+ if (options.limit) params.append("limit", options.limit.toString());
3300
+ if (options.beforeId) params.append("before_id", options.beforeId.toString());
3301
+ if (options.transitionsOnly) params.append("transitions_only", "true");
3302
+ return this.fetch(
3303
+ `w/${wid}/routines/${id}/history${params.toString() ? `?${params.toString()}` : ""}`
3304
+ );
3305
+ }
3292
3306
  /** List routine run history with optional filtering by routine and status. */
3293
3307
  async getRoutineRuns(wid, options = {}) {
3294
3308
  const params = new URLSearchParams();
@@ -5144,6 +5158,17 @@ var MembersApi = class extends BaseApiClient {
5144
5158
  }
5145
5159
  };
5146
5160
 
5161
+ // src/api/activity-timeline.ts
5162
+ var ActivityTimelineApi = class extends BaseApiClient {
5163
+ /** One page of activity. Omit `cursor` for a fresh snapshot. */
5164
+ async queryActivityTimeline(wid, request = {}) {
5165
+ return this.fetch(`w/${wid}/activity-timeline/query`, {
5166
+ method: "POST",
5167
+ body: JSON.stringify(request)
5168
+ });
5169
+ }
5170
+ };
5171
+
5147
5172
  // src/api/motd.ts
5148
5173
  var MotdApi = class extends BaseApiClient {
5149
5174
  /**
@@ -5472,9 +5497,9 @@ var OrgApi = class extends BaseApiClient {
5472
5497
  /**
5473
5498
  * Update the settings an org admin owns: name, slug and contact details.
5474
5499
  *
5475
- * Deliberately NOT the admin organization update — `primary` and
5476
- * `enforceCreditLimit` are superuser-only and are not fields on this
5477
- * endpoint's request model at all.
5500
+ * Deliberately NOT the admin organization update — `enforceCreditLimit`
5501
+ * is superuser-only and is not a field on this endpoint's request model
5502
+ * at all.
5478
5503
  */
5479
5504
  async updateOrganizationSettings(orgIdOrUuid, data) {
5480
5505
  return this.fetch(`o/${orgIdOrUuid}`, {
@@ -5510,6 +5535,21 @@ var OrgApi = class extends BaseApiClient {
5510
5535
  async getOrgBillingCustomer(orgIdOrUuid) {
5511
5536
  return this.fetch(`o/${orgIdOrUuid}/billing-customer`);
5512
5537
  }
5538
+ /**
5539
+ * Per-workspace usage for this organization's current credit window.
5540
+ *
5541
+ * Requires a billing role on the organization's billing customer — the
5542
+ * same gate `getOrgBillingCustomer().hasAccess` reports, and the one that
5543
+ * decides whether the billing tab is shown at all.
5544
+ *
5545
+ * `creditsUsed` is a real organization-wide total or it is null; it is
5546
+ * never a partial sum. There is deliberately no per-workspace "remaining"
5547
+ * figure — the caps belong to the organization, so `cap - oneWorkspace`
5548
+ * describes nothing.
5549
+ */
5550
+ async getOrgWorkspaceUsage(orgIdOrUuid) {
5551
+ return this.fetch(`o/${orgIdOrUuid}/usage/workspaces`);
5552
+ }
5513
5553
  /**
5514
5554
  * List members of an organization.
5515
5555
  */
@@ -6281,6 +6321,7 @@ var PhoneNumbersApi = class extends BaseApiClient {
6281
6321
  if (filters?.inbound !== void 0) params.set("inbound", String(filters.inbound));
6282
6322
  if (filters?.dateFrom) params.set("dateFrom", filters.dateFrom);
6283
6323
  if (filters?.dateTo) params.set("dateTo", filters.dateTo);
6324
+ if (filters?.callId !== void 0) params.set("callId", String(filters.callId));
6284
6325
  return this.fetch(`w/${wid}/calls?${params}`);
6285
6326
  }
6286
6327
  /** List paginated voicemails for a phone number. */
@@ -6662,6 +6703,29 @@ var QueriesApi = class extends BaseApiClient {
6662
6703
  }
6663
6704
  };
6664
6705
 
6706
+ // src/api/projects.ts
6707
+ var ProjectsApi = class extends BaseApiClient {
6708
+ /** List projects (README frontmatter summaries). */
6709
+ async getProjects(wid, options = {}) {
6710
+ const params = new URLSearchParams();
6711
+ if (options.page !== void 0) params.append("page", options.page.toString());
6712
+ if (options.pageSize !== void 0) params.append("pageSize", options.pageSize.toString());
6713
+ return this.fetch(
6714
+ `w/${wid}/projects${params.toString() ? `?${params.toString()}` : ""}`
6715
+ );
6716
+ }
6717
+ /** One project: summary + present docs + plan summaries. */
6718
+ async getProject(wid, slug) {
6719
+ return this.fetch(`w/${wid}/projects/${encodeURIComponent(slug)}`);
6720
+ }
6721
+ /** One plan: summary + resolved process + flows + run state. */
6722
+ async getPlan(wid, slug, plan) {
6723
+ return this.fetch(
6724
+ `w/${wid}/projects/${encodeURIComponent(slug)}/plans/${encodeURIComponent(plan)}`
6725
+ );
6726
+ }
6727
+ };
6728
+
6665
6729
  // src/api/qualifications.ts
6666
6730
  var QualificationsApi = class extends BaseApiClient {
6667
6731
  /** List qualifications in a workspace, paginated. */
@@ -7357,12 +7421,6 @@ var SitesApi = class extends BaseApiClient {
7357
7421
  }
7358
7422
  return verifyResponse;
7359
7423
  }
7360
- /** Trigger a crawl of the site's external content source. */
7361
- async crawlSite(wid, siteId) {
7362
- return this.fetch(`w/${wid}/sites/${siteId}/crawl`, {
7363
- method: "POST"
7364
- });
7365
- }
7366
7424
  /** Create a new site in the workspace. */
7367
7425
  async createSite(wid, site) {
7368
7426
  return this.fetch(`w/${wid}/sites`, {
@@ -7506,8 +7564,8 @@ var SubscriptionsApi = class extends BaseApiClient {
7506
7564
  });
7507
7565
  }
7508
7566
  /**
7509
- * List self-service, purchasable plans (org or workspace). Only plans with a
7510
- * paid Stripe price are returned. No auth required.
7567
+ * List self-service, purchasable organization plans or add-ons. Only products
7568
+ * with a Stripe Price are returned; zero-amount plans are allowed.
7511
7569
  */
7512
7570
  async listSelfServeProducts(productType) {
7513
7571
  const qs = productType ? `?product_type=${productType}` : "";
@@ -7542,7 +7600,13 @@ var SubscriptionsApi = class extends BaseApiClient {
7542
7600
  }
7543
7601
  });
7544
7602
  }
7545
- /** Add a workspace to an existing subscription. */
7603
+ /**
7604
+ * Provision a new workspace under an existing org subscription.
7605
+ *
7606
+ * No product or period: the organization already holds the plan and the new
7607
+ * workspace bills through it. Returns before the workspace exists —
7608
+ * `provisioning: true` means poll for it.
7609
+ */
7546
7610
  async addWorkspaceToSubscription(subscriptionId, data) {
7547
7611
  return this.fetch(`subscriptions/${subscriptionId}/add-workspace`, {
7548
7612
  method: "POST",
@@ -8237,6 +8301,8 @@ var JourneysApi = class extends BaseApiClient {
8237
8301
  qs.set("currentTaskId", String(params.currentTaskId));
8238
8302
  if (params?.runtimeFailureEdgeId !== void 0)
8239
8303
  qs.set("runtimeFailureEdgeId", String(params.runtimeFailureEdgeId));
8304
+ if (params?.memberJourneyId !== void 0)
8305
+ qs.set("memberJourneyId", String(params.memberJourneyId));
8240
8306
  const query = qs.toString();
8241
8307
  return this.fetch(
8242
8308
  `w/${wid}/journeys/${journeyId}/members${query ? `?${query}` : ""}`
@@ -8273,6 +8339,36 @@ var JourneysApi = class extends BaseApiClient {
8273
8339
  async getMemberJourneys(wid, memberId) {
8274
8340
  return this.fetch(`w/${wid}/journeys/by-member/${memberId}`);
8275
8341
  }
8342
+ /**
8343
+ * Status history for one enrollment — the per-member journey timeline.
8344
+ *
8345
+ * This is where a step that completed having emitted nothing shows up as
8346
+ * `zeroEmission: true` with its reason, instead of being indistinguishable
8347
+ * from a step that sent (GRA-7341). Newest first.
8348
+ *
8349
+ * PHI-safe: identifiers, closed status codes, operator-authored step names,
8350
+ * counts, and timestamps. `entry.reason` is populated only for rows the
8351
+ * server allowlists; every other row reports `reasonRedacted: true`.
8352
+ *
8353
+ * `zeroEmissionOnly` narrows the page to the dropped-send rows. Use it when
8354
+ * that is all you need: without it a busy enrollment can push every
8355
+ * zero-emission row off the first page, and a caller that renders only what
8356
+ * it loaded would report "nothing was dropped" — the exact failure this
8357
+ * endpoint exists to eliminate. `zeroEmissionCount` is unaffected by the
8358
+ * filter and always counts the whole enrollment.
8359
+ */
8360
+ async getEnrollmentStatusLog(wid, journeyId, memberJourneyId, params = {}) {
8361
+ const qs = new URLSearchParams();
8362
+ if (params.page !== void 0) qs.set("page", String(params.page));
8363
+ if (params.pageSize !== void 0) qs.set("pageSize", String(params.pageSize));
8364
+ if (params.zeroEmissionOnly !== void 0) {
8365
+ qs.set("zeroEmissionOnly", String(params.zeroEmissionOnly));
8366
+ }
8367
+ const query = qs.toString();
8368
+ return this.fetch(
8369
+ `w/${wid}/journeys/${journeyId}/enrollments/${memberJourneyId}/status-log` + (query ? `?${query}` : "")
8370
+ );
8371
+ }
8276
8372
  /** List members currently or historically associated with one journey step. */
8277
8373
  async getStepMembers(wid, journeyId, stepUuid, params = {}) {
8278
8374
  const qs = new URLSearchParams();
@@ -9011,18 +9107,20 @@ var MASKED_SECRET_SENTINEL = "__SECRET_SET__";
9011
9107
  // src/types/billing-types.ts
9012
9108
  var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
9013
9109
  WorkspaceFeature2["PHONE"] = "phone";
9110
+ WorkspaceFeature2["A2P_REGISTRATION"] = "a2p_registration";
9014
9111
  WorkspaceFeature2["EMAIL"] = "email";
9015
9112
  WorkspaceFeature2["WHATSAPP"] = "whatsapp";
9016
9113
  WorkspaceFeature2["DISCORD"] = "discord";
9017
9114
  WorkspaceFeature2["SLACK"] = "slack";
9018
9115
  WorkspaceFeature2["TEAMS"] = "teams";
9019
9116
  WorkspaceFeature2["SITES"] = "sites";
9020
- WorkspaceFeature2["FORMS"] = "forms";
9021
9117
  WorkspaceFeature2["MAPS"] = "maps";
9022
9118
  WorkspaceFeature2["BROWSER"] = "browser";
9023
9119
  WorkspaceFeature2["WEB_SEARCH"] = "web_search";
9024
9120
  WorkspaceFeature2["CALENDAR"] = "calendar";
9025
9121
  WorkspaceFeature2["EXPERIMENTS"] = "experiments";
9122
+ WorkspaceFeature2["MAILBOX_USER_INPUT"] = "mailbox_user_input";
9123
+ WorkspaceFeature2["FORKED_TRAJECTORIES"] = "forked_trajectories";
9026
9124
  WorkspaceFeature2["GMAIL"] = "gmail";
9027
9125
  WorkspaceFeature2["GCALENDAR"] = "gcalendar";
9028
9126
  WorkspaceFeature2["GDRIVE"] = "gdrive";
@@ -9039,6 +9137,9 @@ var WorkspaceFeature = /* @__PURE__ */ ((WorkspaceFeature2) => {
9039
9137
  WorkspaceFeature2["CONFLUENCE"] = "confluence";
9040
9138
  WorkspaceFeature2["AGENT_MEMORY"] = "agent_memory";
9041
9139
  WorkspaceFeature2["IMAGE_GENERATION"] = "image_generation";
9140
+ WorkspaceFeature2["STRICT_NATIVE_VOICE"] = "strict_native_voice";
9141
+ WorkspaceFeature2["CHARLESTON_NEPHROLOGY_PMD_PAGING"] = "charleston_nephrology_pmd_paging";
9142
+ WorkspaceFeature2["PATIENTSYNC_TRANSFER"] = "patientsync_transfer";
9042
9143
  return WorkspaceFeature2;
9043
9144
  })(WorkspaceFeature || {});
9044
9145
  var MemberFeature = /* @__PURE__ */ ((MemberFeature2) => {
@@ -9074,7 +9175,6 @@ var Resource = /* @__PURE__ */ ((Resource2) => {
9074
9175
  return Resource2;
9075
9176
  })(Resource || {});
9076
9177
  var ProductType = /* @__PURE__ */ ((ProductType2) => {
9077
- ProductType2["WORKSPACE"] = "workspace";
9078
9178
  ProductType2["ORG"] = "org";
9079
9179
  ProductType2["ADDON"] = "addon";
9080
9180
  return ProductType2;
@@ -9199,8 +9299,9 @@ var REALTIME_MODEL_GEMINI_VERTEX = "google:vertex:gemini-3.1-flash-live";
9199
9299
  var REALTIME_MODEL_NOVA_SONIC = "aws:bedrock:nova-sonic-1";
9200
9300
  var REALTIME_MODEL_CUSTOM = "custom:realtime:composable";
9201
9301
  var STT_MODEL_DEEPGRAM_FLUX = "deepgram:stt:flux-general-en";
9302
+ var STT_MODEL_DEEPGRAM_FLUX_SELFHOST = "deepgram:stt:flux-general-en:selfhost";
9202
9303
  var STT_MODEL_DEEPGRAM_FLUX_MULTI = "deepgram:stt:flux-general-multi";
9203
- var STT_MODEL_ELEVENLABS_SCRIBE = "elevenlabs:stt:scribe_v2_realtime";
9304
+ var STT_MODEL_DEEPGRAM_FLUX_MULTI_SELFHOST = "deepgram:stt:flux-general-multi:selfhost";
9204
9305
  var TTS_MODEL_ELEVENLABS_FLASH = "elevenlabs:tts:eleven_flash_v2_5";
9205
9306
  var TTS_MODEL_ELEVENLABS_TURBO = "elevenlabs:tts:eleven_turbo_v2_5";
9206
9307
  var TTS_MODEL_ELEVENLABS_MULTILINGUAL = "elevenlabs:tts:eleven_multilingual_v2";
@@ -9937,6 +10038,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9937
10038
  hubspot: new HubspotApi(apiKey, baseUrl, customFetch),
9938
10039
  features: new FeaturesApi(apiKey, baseUrl, customFetch),
9939
10040
  files: new FilesApi(apiKey, baseUrl, customFetch),
10041
+ projects: new ProjectsApi(apiKey, baseUrl, customFetch),
9940
10042
  inboxes: new InboxesApi(apiKey, baseUrl, customFetch),
9941
10043
  inquiries: new InquiriesApi(apiKey, baseUrl, customFetch),
9942
10044
  journeys: new JourneysApi(apiKey, baseUrl, customFetch),
@@ -9944,6 +10046,7 @@ function createApiModules(apiKey, baseUrl, customFetch) {
9944
10046
  connectionSync: new ConnectionSyncApi(apiKey, baseUrl, customFetch),
9945
10047
  mcpServers: new McpServersApi(apiKey, baseUrl, customFetch),
9946
10048
  members: new MembersApi(apiKey, baseUrl, customFetch),
10049
+ activityTimeline: new ActivityTimelineApi(apiKey, baseUrl, customFetch),
9947
10050
  motd: new MotdApi(apiKey, baseUrl, customFetch),
9948
10051
  trackedLinks: new TrackedLinksApi(apiKey, baseUrl, customFetch),
9949
10052
  confluence: new ConfluenceApi(apiKey, baseUrl, customFetch),
@@ -10030,7 +10133,6 @@ var WORKSPACE_METHOD_NAMES = [
10030
10133
  "configureSalesforce",
10031
10134
  "convertEmail",
10032
10135
  "convertFile",
10033
- "crawlSite",
10034
10136
  "createAbility",
10035
10137
  "createAccessGrant",
10036
10138
  "createAgent",
@@ -10321,6 +10423,7 @@ var WORKSPACE_METHOD_NAMES = [
10321
10423
  "getDocumoFaxSetup",
10322
10424
  "listDocumoFaxes",
10323
10425
  "getDocumoFaxStatus",
10426
+ "getEnrollmentStatusLog",
10324
10427
  "getEventRule",
10325
10428
  "getEventRules",
10326
10429
  "getExperiment",
@@ -10348,6 +10451,7 @@ var WORKSPACE_METHOD_NAMES = [
10348
10451
  "listChatRecordings",
10349
10452
  "previewQuery",
10350
10453
  "publishSiteSource",
10454
+ "queryActivityTimeline",
10351
10455
  "registerDiscordSlashCommands",
10352
10456
  "reopenWorkspaceSupportRequest",
10353
10457
  "resetSiteSource",
@@ -10453,8 +10557,11 @@ var WORKSPACE_METHOD_NAMES = [
10453
10557
  "getPhoneNumbers",
10454
10558
  "getPhoneUsageReport",
10455
10559
  "getPlatformApp",
10560
+ "getPlan",
10456
10561
  "getPresenceStatus",
10457
10562
  "getProducts",
10563
+ "getProject",
10564
+ "getProjects",
10458
10565
  "getPublicFile",
10459
10566
  "getPublicFolder",
10460
10567
  "getPublicFolderFiles",
@@ -10465,6 +10572,7 @@ var WORKSPACE_METHOD_NAMES = [
10465
10572
  "getRecordingInfo",
10466
10573
  "getResellerWorkspaces",
10467
10574
  "getRoutine",
10575
+ "getRoutineConfigEvents",
10468
10576
  "getRoutineRuns",
10469
10577
  "getRoutines",
10470
10578
  "getRuleExecutions",
@@ -10920,6 +11028,11 @@ function bindDashboardsMethods(target, dashboards) {
10920
11028
  target.getConfigurationHealth = dashboards.getConfigurationHealth.bind(dashboards);
10921
11029
  }
10922
11030
 
11031
+ // src/client/bindings/activity-timeline.ts
11032
+ function bindActivityTimelineMethods(target, activityTimeline) {
11033
+ target.queryActivityTimeline = activityTimeline.queryActivityTimeline.bind(activityTimeline);
11034
+ }
11035
+
10923
11036
  // src/client/bindings/motd.ts
10924
11037
  function bindMotdMethods(target, motd) {
10925
11038
  target.getMotd = motd.getMotd.bind(motd);
@@ -11182,7 +11295,6 @@ function bindSitesMethods(target, sites) {
11182
11295
  target.siteSendEmailCode = sites.siteSendEmailCode.bind(sites);
11183
11296
  target.siteVerifyCode = sites.siteVerifyCode.bind(sites);
11184
11297
  target.siteGoogleOAuthInitiate = sites.siteGoogleOAuthInitiate.bind(sites);
11185
- target.crawlSite = sites.crawlSite.bind(sites);
11186
11298
  target.createSite = sites.createSite.bind(sites);
11187
11299
  target.updateSite = sites.updateSite.bind(sites);
11188
11300
  target.deleteSite = sites.deleteSite.bind(sites);
@@ -11245,6 +11357,13 @@ function bindFilesMethods(target, files) {
11245
11357
  target.getPublicFolderFiles = files.getPublicFolderFiles.bind(files);
11246
11358
  }
11247
11359
 
11360
+ // src/client/bindings/projects.ts
11361
+ function bindProjectsMethods(target, projects) {
11362
+ target.getProjects = projects.getProjects.bind(projects);
11363
+ target.getProject = projects.getProject.bind(projects);
11364
+ target.getPlan = projects.getPlan.bind(projects);
11365
+ }
11366
+
11248
11367
  // src/client/bindings/events.ts
11249
11368
  function bindEventsMethods(target, events) {
11250
11369
  target.getEventRules = events.getEventRules.bind(events);
@@ -11733,6 +11852,7 @@ function bindOrgMethods(target, org) {
11733
11852
  target.syncVoiceTrustProducts = org.syncVoiceTrustProducts.bind(org);
11734
11853
  target.createOrganizationWorkspace = org.createOrganizationWorkspace.bind(org);
11735
11854
  target.getOrgBillingCustomer = org.getOrgBillingCustomer.bind(org);
11855
+ target.getOrgWorkspaceUsage = org.getOrgWorkspaceUsage.bind(org);
11736
11856
  }
11737
11857
 
11738
11858
  // src/client/bindings/pronunciations.ts
@@ -11777,6 +11897,7 @@ function bindJourneysMethods(target, journeys) {
11777
11897
  target.reenrollMember = journeys.reenrollMember.bind(journeys);
11778
11898
  target.deleteEnrollment = journeys.deleteEnrollment.bind(journeys);
11779
11899
  target.getMemberJourneys = journeys.getMemberJourneys.bind(journeys);
11900
+ target.getEnrollmentStatusLog = journeys.getEnrollmentStatusLog.bind(journeys);
11780
11901
  target.getStepMembers = journeys.getStepMembers.bind(journeys);
11781
11902
  target.getStepMemberCounts = journeys.getStepMemberCounts.bind(journeys);
11782
11903
  target.advanceStep = journeys.advanceStep.bind(journeys);
@@ -12114,6 +12235,8 @@ var GravityRailClient = class {
12114
12235
  getDashboardChannelStats;
12115
12236
  getDashboardWorkflowAssignmentStats;
12116
12237
  getConfigurationHealth;
12238
+ // Activity Timeline API
12239
+ queryActivityTimeline;
12117
12240
  // MOTD API
12118
12241
  getMotd;
12119
12242
  // Tracked Links analytics (#10934)
@@ -12149,6 +12272,7 @@ var GravityRailClient = class {
12149
12272
  reenrollMember;
12150
12273
  deleteEnrollment;
12151
12274
  getMemberJourneys;
12275
+ getEnrollmentStatusLog;
12152
12276
  getStepMembers;
12153
12277
  getStepMemberCounts;
12154
12278
  advanceStep;
@@ -12274,6 +12398,7 @@ var GravityRailClient = class {
12274
12398
  syncVoiceTrustProducts;
12275
12399
  createOrganizationWorkspace;
12276
12400
  getOrgBillingCustomer;
12401
+ getOrgWorkspaceUsage;
12277
12402
  getVapidPublicKey;
12278
12403
  registerPushSubscription;
12279
12404
  unregisterPushSubscription;
@@ -12373,7 +12498,6 @@ var GravityRailClient = class {
12373
12498
  siteSendEmailCode;
12374
12499
  siteVerifyCode;
12375
12500
  siteGoogleOAuthInitiate;
12376
- crawlSite;
12377
12501
  createSite;
12378
12502
  updateSite;
12379
12503
  deleteSite;
@@ -12394,6 +12518,9 @@ var GravityRailClient = class {
12394
12518
  // Files API
12395
12519
  getFiles;
12396
12520
  getFile;
12521
+ getProjects;
12522
+ getProject;
12523
+ getPlan;
12397
12524
  resolveFilePath;
12398
12525
  downloadFilesZip;
12399
12526
  createFile;
@@ -12450,6 +12577,7 @@ var GravityRailClient = class {
12450
12577
  updateRoutine;
12451
12578
  deleteRoutine;
12452
12579
  runRoutine;
12580
+ getRoutineConfigEvents;
12453
12581
  getRoutineRuns;
12454
12582
  resetRoutineRuns;
12455
12583
  previewSchedule;
@@ -12915,6 +13043,7 @@ var GravityRailClient = class {
12915
13043
  bindMetricsMethods(this, apis.metrics);
12916
13044
  bindQueriesMethods(this, apis.queries);
12917
13045
  bindDashboardsMethods(this, apis.dashboards);
13046
+ bindActivityTimelineMethods(this, apis.activityTimeline);
12918
13047
  bindMotdMethods(this, apis.motd);
12919
13048
  bindTrackedLinksMethods(this, apis.trackedLinks);
12920
13049
  bindJourneysMethods(this, apis.journeys);
@@ -12927,6 +13056,7 @@ var GravityRailClient = class {
12927
13056
  bindAuthMethods(this, apis.auth, apis.assignments);
12928
13057
  bindSitesMethods(this, apis.sites);
12929
13058
  bindFilesMethods(this, apis.files);
13059
+ bindProjectsMethods(this, apis.projects);
12930
13060
  bindEventsMethods(this, apis.events);
12931
13061
  bindWorkflowsMethods(this, apis.workflows, apis.workflowNotes, apis.voice, apis.supervisors);
12932
13062
  bindCalendarsMethods(this, apis.calendars);
@@ -15127,105 +15257,79 @@ var RESOURCE_METADATA = {
15127
15257
  label: "Credits",
15128
15258
  unit: "credit",
15129
15259
  unitPlural: "credits",
15130
- description: "AI model usage billed as tokens with model-specific multipliers",
15131
- requiresFeature: null,
15132
- scope: "any"
15260
+ description: "AI model usage billed as tokens with model-specific multipliers"
15133
15261
  },
15134
15262
  ["stt" /* STT */]: {
15135
15263
  label: "Speech-to-Text",
15136
15264
  unit: "minute",
15137
15265
  unitPlural: "minutes",
15138
- description: "Audio transcription in minutes",
15139
- requiresFeature: null,
15140
- scope: "any"
15266
+ description: "Audio transcription in minutes"
15141
15267
  },
15142
15268
  ["tts" /* TTS */]: {
15143
15269
  label: "Text-to-Speech",
15144
15270
  unit: "1,000 characters",
15145
15271
  unitPlural: "1,000 characters",
15146
- description: "Text synthesized to audio, billed in lots of 1,000 characters",
15147
- requiresFeature: null,
15148
- scope: "any"
15272
+ description: "Text synthesized to audio, billed in lots of 1,000 characters"
15149
15273
  },
15150
15274
  ["sms" /* SMS */]: {
15151
15275
  label: "SMS Messages",
15152
15276
  unit: "message",
15153
15277
  unitPlural: "messages",
15154
- description: "Text messages sent via phone number",
15155
- requiresFeature: "phone" /* PHONE */,
15156
- scope: "any"
15278
+ description: "Text messages sent via phone number"
15157
15279
  },
15158
15280
  ["email" /* EMAIL */]: {
15159
15281
  label: "Emails",
15160
15282
  unit: "message",
15161
15283
  unitPlural: "messages",
15162
- description: "Email messages sent or received",
15163
- requiresFeature: "email" /* EMAIL */,
15164
- scope: "any"
15284
+ description: "Email messages sent or received"
15165
15285
  },
15166
15286
  ["phone_call" /* PHONE_CALL */]: {
15167
15287
  label: "Phone Calls",
15168
15288
  unit: "minute",
15169
15289
  unitPlural: "minutes",
15170
- description: "Phone call duration in minutes",
15171
- requiresFeature: "phone" /* PHONE */,
15172
- scope: "any"
15290
+ description: "Phone call duration in minutes"
15173
15291
  },
15174
15292
  ["phone_number" /* PHONE_NUMBER */]: {
15175
15293
  label: "Phone Numbers",
15176
15294
  unit: "number",
15177
15295
  unitPlural: "numbers",
15178
- description: "Active phone numbers for calling and SMS",
15179
- requiresFeature: "phone" /* PHONE */,
15180
- scope: "any"
15296
+ description: "Active phone numbers for calling and SMS"
15181
15297
  },
15182
15298
  ["inbox" /* INBOX */]: {
15183
15299
  label: "Email Inboxes",
15184
15300
  unit: "inbox",
15185
15301
  unitPlural: "inboxes",
15186
- description: "Email inboxes for receiving messages",
15187
- requiresFeature: "email" /* EMAIL */,
15188
- scope: "any"
15302
+ description: "Email inboxes for receiving messages"
15189
15303
  },
15190
15304
  ["site" /* SITE */]: {
15191
15305
  label: "Sites",
15192
15306
  unit: "site",
15193
15307
  unitPlural: "sites",
15194
- description: "Published websites",
15195
- requiresFeature: "sites" /* SITES */,
15196
- scope: "any"
15308
+ description: "Published websites"
15197
15309
  },
15198
15310
  ["member" /* MEMBER */]: {
15199
15311
  label: "Members",
15200
15312
  unit: "member",
15201
15313
  unitPlural: "members",
15202
- description: "Total workspace members",
15203
- requiresFeature: null,
15204
- scope: "workspace"
15314
+ description: "Members across the organization"
15205
15315
  },
15206
15316
  ["workspace" /* WORKSPACE */]: {
15207
15317
  label: "Workspaces",
15208
15318
  unit: "workspace",
15209
15319
  unitPlural: "workspaces",
15210
- description: "Workspaces in the organization",
15211
- requiresFeature: null,
15212
- scope: "org"
15320
+ description: "Workspaces in the organization"
15213
15321
  },
15214
15322
  ["org_admin" /* ORG_ADMIN */]: {
15215
15323
  label: "Organization Admins",
15216
15324
  unit: "admin",
15217
15325
  unitPlural: "admins",
15218
- description: "Organization administrators",
15219
- requiresFeature: null,
15220
- scope: "org"
15326
+ description: "Organization administrators"
15221
15327
  },
15222
15328
  ["storage_mb" /* STORAGE_MB */]: {
15223
15329
  label: "Storage",
15224
15330
  unit: "MB",
15225
15331
  unitPlural: "MB",
15226
- description: "File storage in megabytes",
15227
- requiresFeature: null,
15228
- scope: "any"
15332
+ description: "File storage in megabytes"
15229
15333
  }
15230
15334
  };
15231
15335
  function getResourceMetadata(resource) {
@@ -15234,35 +15338,6 @@ function getResourceMetadata(resource) {
15234
15338
  function getAllResourceSlugs() {
15235
15339
  return Object.keys(RESOURCE_METADATA);
15236
15340
  }
15237
- function getScopeFromProductType(productType) {
15238
- const isOrgProduct = productType === "org" /* ORG */;
15239
- return isOrgProduct ? "org" : "workspace";
15240
- }
15241
- function getApplicableResources(scope, enabledFeatures) {
15242
- const enabledSet = enabledFeatures ? new Set(enabledFeatures) : null;
15243
- return Object.entries(RESOURCE_METADATA).filter(([_slug, metadata]) => {
15244
- if (scope === "workspace" && metadata.scope === "org") {
15245
- return false;
15246
- }
15247
- if (scope === "org" && metadata.scope === "workspace") {
15248
- return false;
15249
- }
15250
- if (enabledSet !== null && metadata.requiresFeature !== null) {
15251
- if (!enabledSet.has(metadata.requiresFeature)) {
15252
- return false;
15253
- }
15254
- }
15255
- return true;
15256
- }).map(([slug]) => slug).sort((a, b) => {
15257
- const metaA = RESOURCE_METADATA[a];
15258
- const metaB = RESOURCE_METADATA[b];
15259
- return metaA.label.localeCompare(metaB.label);
15260
- });
15261
- }
15262
- function getApplicableResourceSlugs(productType) {
15263
- const scope = getScopeFromProductType(productType);
15264
- return getApplicableResources(scope);
15265
- }
15266
15341
 
15267
15342
  // src/scopes.ts
15268
15343
  var ScopeCategory = /* @__PURE__ */ ((ScopeCategory2) => {
@@ -15403,7 +15478,10 @@ var SCOPES = {
15403
15478
  "workflows:read": {
15404
15479
  name: "workflows:read",
15405
15480
  category: "workflows" /* WORKFLOWS */,
15406
- description: "View workflow definitions"
15481
+ // Object access is separate: listing and opening a specific workflow
15482
+ // additionally require ownership, workflows:admin, a workflow role
15483
+ // association, or an access grant (WorkflowAction.USE).
15484
+ description: "Access the Workflows area and view workflows shared with you"
15407
15485
  },
15408
15486
  "workflows:write": {
15409
15487
  name: "workflows:write",
@@ -16026,7 +16104,8 @@ function getRevisionState(workflow, revision) {
16026
16104
  SMS_DELIVERY_FAILURE_STATUSES,
16027
16105
  STT_MODEL_DEEPGRAM_FLUX,
16028
16106
  STT_MODEL_DEEPGRAM_FLUX_MULTI,
16029
- STT_MODEL_ELEVENLABS_SCRIBE,
16107
+ STT_MODEL_DEEPGRAM_FLUX_MULTI_SELFHOST,
16108
+ STT_MODEL_DEEPGRAM_FLUX_SELFHOST,
16030
16109
  Scope,
16031
16110
  ScopeCategory,
16032
16111
  ScopeManager,
@@ -16064,8 +16143,6 @@ function getRevisionState(workflow, revision) {
16064
16143
  formatAppContextAsMarkdown,
16065
16144
  getAllFeatures,
16066
16145
  getAllResourceSlugs,
16067
- getApplicableResourceSlugs,
16068
- getApplicableResources,
16069
16146
  getAvailableFeaturesForUpgrade,
16070
16147
  getCookieValue,
16071
16148
  getFeature,
@@ -16074,7 +16151,6 @@ function getRevisionState(workflow, revision) {
16074
16151
  getMissingDependencies,
16075
16152
  getResourceMetadata,
16076
16153
  getRevisionState,
16077
- getScopeFromProductType,
16078
16154
  getTTSProvider,
16079
16155
  getVoiceModelId,
16080
16156
  initializeFeatures,