@wayai/cli 0.3.223 → 0.3.224

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.js CHANGED
@@ -488,6 +488,67 @@ var init_sentry = __esm({
488
488
  }
489
489
  });
490
490
 
491
+ // ../../packages/core/dist/chunk-DHPUPI4Y.js
492
+ function normalizeAuthType(raw) {
493
+ if (VALID_AUTH_TYPES.has(raw)) return raw;
494
+ return LEGACY_AUTH_TYPE_MAP[raw] ?? raw;
495
+ }
496
+ var AUTH_TYPE, ORG_CREDENTIAL_AUTH_TYPES, AUTH_TYPE_DISPLAY, LEGACY_AUTH_TYPE_MAP, VALID_AUTH_TYPES, AGENT_ROLES, PILOT_TRACK_ROLES, COPILOT_TRACK_ROLES, CUSTOMER_FACING_AGENT_ROLES, SAFE_USER_ID_REGEX, SUPPORTED_LOCALES, SKILL_INSTALL_COMMAND;
497
+ var init_chunk_DHPUPI4Y = __esm({
498
+ "../../packages/core/dist/chunk-DHPUPI4Y.js"() {
499
+ "use strict";
500
+ AUTH_TYPE = {
501
+ OAUTH: "oauth",
502
+ API_KEY: "api_key",
503
+ BASIC_AUTH: "basic_auth",
504
+ BEARER: "bearer",
505
+ NONE: "none"
506
+ };
507
+ ORG_CREDENTIAL_AUTH_TYPES = [
508
+ AUTH_TYPE.API_KEY,
509
+ AUTH_TYPE.BEARER,
510
+ AUTH_TYPE.BASIC_AUTH
511
+ ];
512
+ AUTH_TYPE_DISPLAY = {
513
+ [AUTH_TYPE.OAUTH]: "OAuth",
514
+ [AUTH_TYPE.API_KEY]: "API Key",
515
+ [AUTH_TYPE.BASIC_AUTH]: "Basic Auth",
516
+ [AUTH_TYPE.BEARER]: "Bearer Token",
517
+ [AUTH_TYPE.NONE]: "No Authentication"
518
+ };
519
+ LEGACY_AUTH_TYPE_MAP = {
520
+ "OAuth": AUTH_TYPE.OAUTH,
521
+ "API Key": AUTH_TYPE.API_KEY,
522
+ "Basic Auth": AUTH_TYPE.BASIC_AUTH,
523
+ "Bearer Token": AUTH_TYPE.BEARER,
524
+ "No authentication": AUTH_TYPE.NONE,
525
+ // Also handle the old DISPLAY_TO_CODE bug where 'basic' was used instead of 'basic_auth'
526
+ "basic": AUTH_TYPE.BASIC_AUTH
527
+ };
528
+ VALID_AUTH_TYPES = new Set(Object.values(AUTH_TYPE));
529
+ AGENT_ROLES = [
530
+ "pilot",
531
+ "copilot",
532
+ "pilot_specialist",
533
+ "copilot_specialist",
534
+ "pilot_advisor",
535
+ "copilot_advisor",
536
+ "monitor",
537
+ "conversation_evaluator",
538
+ "message_evaluator",
539
+ "summarizer",
540
+ "consultant",
541
+ "pilot_voice"
542
+ ];
543
+ PILOT_TRACK_ROLES = ["pilot", "pilot_specialist"];
544
+ COPILOT_TRACK_ROLES = ["copilot", "copilot_specialist"];
545
+ CUSTOMER_FACING_AGENT_ROLES = [...PILOT_TRACK_ROLES, "pilot_advisor"];
546
+ SAFE_USER_ID_REGEX = /^[A-Za-z0-9_-]{1,64}$/;
547
+ SUPPORTED_LOCALES = ["en", "pt", "es"];
548
+ SKILL_INSTALL_COMMAND = "mkdir -p .claude && npx skills add wayai-pro/wayai-skill -y";
549
+ }
550
+ });
551
+
491
552
  // ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js
492
553
  var util, objectUtil, ZodParsedType, getParsedType;
493
554
  var init_util = __esm({
@@ -4604,6 +4665,47 @@ var init_zod = __esm({
4604
4665
  }
4605
4666
  });
4606
4667
 
4668
+ // ../../packages/core/dist/chunk-SXDX4GHS.js
4669
+ var orgCredentialIdParam, listOrgCredentialsQuery, createOrgCredentialBody, updateOrgCredentialBody;
4670
+ var init_chunk_SXDX4GHS = __esm({
4671
+ "../../packages/core/dist/chunk-SXDX4GHS.js"() {
4672
+ "use strict";
4673
+ init_chunk_DHPUPI4Y();
4674
+ init_zod();
4675
+ orgCredentialIdParam = external_exports.object({
4676
+ id: external_exports.string().uuid()
4677
+ });
4678
+ listOrgCredentialsQuery = external_exports.object({
4679
+ organization_id: external_exports.string().uuid(),
4680
+ hub_id: external_exports.string().uuid().optional()
4681
+ });
4682
+ createOrgCredentialBody = external_exports.object({
4683
+ organization_id: external_exports.string().uuid(),
4684
+ credential_display_name: external_exports.string().min(1).max(255),
4685
+ credential_description: external_exports.string().max(1e3).nullish(),
4686
+ authentication_type: external_exports.enum(["api_key", "bearer", "basic_auth"]).or(
4687
+ external_exports.enum(["API Key", "Bearer Token", "Basic Auth"]).transform((v) => normalizeAuthType(v))
4688
+ ),
4689
+ api_key: external_exports.string().optional(),
4690
+ access_token: external_exports.string().optional(),
4691
+ username: external_exports.string().optional(),
4692
+ password: external_exports.string().optional(),
4693
+ tags: external_exports.array(external_exports.string().uuid()).optional(),
4694
+ environment: external_exports.enum(["preview", "production", "all"]).optional()
4695
+ });
4696
+ updateOrgCredentialBody = external_exports.object({
4697
+ credential_display_name: external_exports.string().min(1).max(255).optional(),
4698
+ credential_description: external_exports.string().max(1e3).nullish(),
4699
+ api_key: external_exports.string().optional(),
4700
+ access_token: external_exports.string().optional(),
4701
+ username: external_exports.string().optional(),
4702
+ password: external_exports.string().optional(),
4703
+ tags: external_exports.array(external_exports.string().uuid()).optional(),
4704
+ environment: external_exports.enum(["preview", "production", "all"]).optional()
4705
+ });
4706
+ }
4707
+ });
4708
+
4607
4709
  // ../../packages/core/dist/chunk-FK6HBXM7.js
4608
4710
  var orgResourceIdParam, orgResourceFileIdParam, orgResourceFolderIdParam, hubOrgResourceParam, listOrgResourcesQuery, orgIdQuery, createOrgResourceBody, updateOrgResourceBody, createOrgResourceFolderBody, updateOrgResourceFolderBody, uploadOrgResourceFileBody, updateOrgResourceFileBody, uploadOrgSkillZipBody, linkOrgResourceBody;
4609
4711
  var init_chunk_FK6HBXM7 = __esm({
@@ -5011,10 +5113,10 @@ var init_chunk_Q7KIQHAZ = __esm({
5011
5113
  }
5012
5114
  });
5013
5115
 
5014
- // ../../packages/core/dist/chunk-2U4BTOR7.js
5116
+ // ../../packages/core/dist/chunk-QUGQIL47.js
5015
5117
  var connectionIdParam, connectorIdParam, listConnectionsQuery, deleteConnectionQuery, addConnectionBody, editConnectionBody, PRODUCTION_DIRECT_FIELDS, setProductionCredentialBody, registerWhatsappQuery, registerWhatsappBody, retryProvisioningQuery, resendDomainStatusQuery;
5016
- var init_chunk_2U4BTOR7 = __esm({
5017
- "../../packages/core/dist/chunk-2U4BTOR7.js"() {
5118
+ var init_chunk_QUGQIL47 = __esm({
5119
+ "../../packages/core/dist/chunk-QUGQIL47.js"() {
5018
5120
  "use strict";
5019
5121
  init_chunk_HZ6CADSY();
5020
5122
  init_zod();
@@ -5058,8 +5160,10 @@ var init_chunk_2U4BTOR7 = __esm({
5058
5160
  webhook_signing_secret: external_exports.string().optional()
5059
5161
  }).strict().superRefine((data, ctx) => {
5060
5162
  const hasOrgLink = !!data.organization_credential_id || !!data.organization_credential_token_id;
5061
- const hasDirect = PRODUCTION_DIRECT_FIELDS.some((f) => data[f] != null);
5062
- if (hasOrgLink && hasDirect) {
5163
+ const sets = (f) => data[f] != null && data[f] !== `__USE_EXISTING_${f.toUpperCase()}__`;
5164
+ const hasDirect = PRODUCTION_DIRECT_FIELDS.some(sets);
5165
+ const hasDirectBesideLink = PRODUCTION_DIRECT_FIELDS.some((f) => f !== "webhook_secret_token" && sets(f));
5166
+ if (hasOrgLink && hasDirectBesideLink) {
5063
5167
  ctx.addIssue({ code: external_exports.ZodIssueCode.custom, message: "Provide either an organization credential link or direct credential fields, not both" });
5064
5168
  }
5065
5169
  if (!hasOrgLink && !hasDirect) {
@@ -5181,108 +5285,6 @@ var init_chunk_GK27ENTT = __esm({
5181
5285
  }
5182
5286
  });
5183
5287
 
5184
- // ../../packages/core/dist/chunk-DHPUPI4Y.js
5185
- function normalizeAuthType(raw) {
5186
- if (VALID_AUTH_TYPES.has(raw)) return raw;
5187
- return LEGACY_AUTH_TYPE_MAP[raw] ?? raw;
5188
- }
5189
- var AUTH_TYPE, ORG_CREDENTIAL_AUTH_TYPES, AUTH_TYPE_DISPLAY, LEGACY_AUTH_TYPE_MAP, VALID_AUTH_TYPES, AGENT_ROLES, PILOT_TRACK_ROLES, COPILOT_TRACK_ROLES, CUSTOMER_FACING_AGENT_ROLES, SAFE_USER_ID_REGEX, SUPPORTED_LOCALES, SKILL_INSTALL_COMMAND;
5190
- var init_chunk_DHPUPI4Y = __esm({
5191
- "../../packages/core/dist/chunk-DHPUPI4Y.js"() {
5192
- "use strict";
5193
- AUTH_TYPE = {
5194
- OAUTH: "oauth",
5195
- API_KEY: "api_key",
5196
- BASIC_AUTH: "basic_auth",
5197
- BEARER: "bearer",
5198
- NONE: "none"
5199
- };
5200
- ORG_CREDENTIAL_AUTH_TYPES = [
5201
- AUTH_TYPE.API_KEY,
5202
- AUTH_TYPE.BEARER,
5203
- AUTH_TYPE.BASIC_AUTH
5204
- ];
5205
- AUTH_TYPE_DISPLAY = {
5206
- [AUTH_TYPE.OAUTH]: "OAuth",
5207
- [AUTH_TYPE.API_KEY]: "API Key",
5208
- [AUTH_TYPE.BASIC_AUTH]: "Basic Auth",
5209
- [AUTH_TYPE.BEARER]: "Bearer Token",
5210
- [AUTH_TYPE.NONE]: "No Authentication"
5211
- };
5212
- LEGACY_AUTH_TYPE_MAP = {
5213
- "OAuth": AUTH_TYPE.OAUTH,
5214
- "API Key": AUTH_TYPE.API_KEY,
5215
- "Basic Auth": AUTH_TYPE.BASIC_AUTH,
5216
- "Bearer Token": AUTH_TYPE.BEARER,
5217
- "No authentication": AUTH_TYPE.NONE,
5218
- // Also handle the old DISPLAY_TO_CODE bug where 'basic' was used instead of 'basic_auth'
5219
- "basic": AUTH_TYPE.BASIC_AUTH
5220
- };
5221
- VALID_AUTH_TYPES = new Set(Object.values(AUTH_TYPE));
5222
- AGENT_ROLES = [
5223
- "pilot",
5224
- "copilot",
5225
- "pilot_specialist",
5226
- "copilot_specialist",
5227
- "pilot_advisor",
5228
- "copilot_advisor",
5229
- "monitor",
5230
- "conversation_evaluator",
5231
- "message_evaluator",
5232
- "summarizer",
5233
- "consultant",
5234
- "pilot_voice"
5235
- ];
5236
- PILOT_TRACK_ROLES = ["pilot", "pilot_specialist"];
5237
- COPILOT_TRACK_ROLES = ["copilot", "copilot_specialist"];
5238
- CUSTOMER_FACING_AGENT_ROLES = [...PILOT_TRACK_ROLES, "pilot_advisor"];
5239
- SAFE_USER_ID_REGEX = /^[A-Za-z0-9_-]{1,64}$/;
5240
- SUPPORTED_LOCALES = ["en", "pt", "es"];
5241
- SKILL_INSTALL_COMMAND = "mkdir -p .claude && npx skills add wayai-pro/wayai-skill -y";
5242
- }
5243
- });
5244
-
5245
- // ../../packages/core/dist/chunk-SXDX4GHS.js
5246
- var orgCredentialIdParam, listOrgCredentialsQuery, createOrgCredentialBody, updateOrgCredentialBody;
5247
- var init_chunk_SXDX4GHS = __esm({
5248
- "../../packages/core/dist/chunk-SXDX4GHS.js"() {
5249
- "use strict";
5250
- init_chunk_DHPUPI4Y();
5251
- init_zod();
5252
- orgCredentialIdParam = external_exports.object({
5253
- id: external_exports.string().uuid()
5254
- });
5255
- listOrgCredentialsQuery = external_exports.object({
5256
- organization_id: external_exports.string().uuid(),
5257
- hub_id: external_exports.string().uuid().optional()
5258
- });
5259
- createOrgCredentialBody = external_exports.object({
5260
- organization_id: external_exports.string().uuid(),
5261
- credential_display_name: external_exports.string().min(1).max(255),
5262
- credential_description: external_exports.string().max(1e3).nullish(),
5263
- authentication_type: external_exports.enum(["api_key", "bearer", "basic_auth"]).or(
5264
- external_exports.enum(["API Key", "Bearer Token", "Basic Auth"]).transform((v) => normalizeAuthType(v))
5265
- ),
5266
- api_key: external_exports.string().optional(),
5267
- access_token: external_exports.string().optional(),
5268
- username: external_exports.string().optional(),
5269
- password: external_exports.string().optional(),
5270
- tags: external_exports.array(external_exports.string().uuid()).optional(),
5271
- environment: external_exports.enum(["preview", "production", "all"]).optional()
5272
- });
5273
- updateOrgCredentialBody = external_exports.object({
5274
- credential_display_name: external_exports.string().min(1).max(255).optional(),
5275
- credential_description: external_exports.string().max(1e3).nullish(),
5276
- api_key: external_exports.string().optional(),
5277
- access_token: external_exports.string().optional(),
5278
- username: external_exports.string().optional(),
5279
- password: external_exports.string().optional(),
5280
- tags: external_exports.array(external_exports.string().uuid()).optional(),
5281
- environment: external_exports.enum(["preview", "production", "all"]).optional()
5282
- });
5283
- }
5284
- });
5285
-
5286
5288
  // ../../packages/core/dist/chunk-GPM7PE44.js
5287
5289
  var bootstrapQuery;
5288
5290
  var init_chunk_GPM7PE44 = __esm({
@@ -5517,6 +5519,34 @@ var init_chunk_ZVXO3XL6 = __esm({
5517
5519
  }
5518
5520
  });
5519
5521
 
5522
+ // ../../packages/core/dist/chunk-ZXK6N2HN.js
5523
+ var PEOPLE_MODERATION_NOTE_MAX_LENGTH, ADMIN_PEOPLE_REPORTS_PAGE_MAX, ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT, PEOPLE_SUSPENDED_REASON, peopleModerationActionSchema, moderationNoteSchema, adminPeopleReportListQuery, adminPeopleReportIdParam, adminPeopleMessageRemovalBody, adminPeopleSuspendBody, adminPeopleNoteBody;
5524
+ var init_chunk_ZXK6N2HN = __esm({
5525
+ "../../packages/core/dist/chunk-ZXK6N2HN.js"() {
5526
+ "use strict";
5527
+ init_chunk_ZVXO3XL6();
5528
+ init_chunk_HZ6CADSY();
5529
+ init_zod();
5530
+ PEOPLE_MODERATION_NOTE_MAX_LENGTH = 500;
5531
+ ADMIN_PEOPLE_REPORTS_PAGE_MAX = 100;
5532
+ ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT = 50;
5533
+ PEOPLE_SUSPENDED_REASON = "suspended";
5534
+ peopleModerationActionSchema = external_exports.enum(["remove_message", "suspend", "unsuspend", "dismiss"]);
5535
+ moderationNoteSchema = optionalTrimmedText(PEOPLE_MODERATION_NOTE_MAX_LENGTH);
5536
+ adminPeopleReportListQuery = external_exports.object({
5537
+ pending: external_exports.enum(["true", "false"]).optional().transform((value) => value === "true"),
5538
+ /** Lower bound on `created_at`. */
5539
+ since: timestampSchema.optional(),
5540
+ limit: external_exports.coerce.number().int().min(1).max(ADMIN_PEOPLE_REPORTS_PAGE_MAX).default(ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT),
5541
+ offset: external_exports.coerce.number().int().min(0).default(0)
5542
+ });
5543
+ adminPeopleReportIdParam = external_exports.object({ reportId: uuidSchema });
5544
+ adminPeopleMessageRemovalBody = external_exports.object({ report_id: uuidSchema, message_id: uuidSchema.optional(), note: moderationNoteSchema }).strict();
5545
+ adminPeopleSuspendBody = external_exports.object({ report_id: uuidSchema.optional(), note: moderationNoteSchema }).strict();
5546
+ adminPeopleNoteBody = external_exports.object({ note: moderationNoteSchema }).strict();
5547
+ }
5548
+ });
5549
+
5520
5550
  // ../../packages/core/dist/chunk-Y7CFCYX4.js
5521
5551
  var PEOPLE_REPORT_DETAILS_MAX_LENGTH, peopleReportReasonSchema, reportDetailsSchema, reportFields, peopleReportBody;
5522
5552
  var init_chunk_Y7CFCYX4 = __esm({
@@ -5572,10 +5602,10 @@ var init_chunk_5DGHIY7L = __esm({
5572
5602
  }
5573
5603
  });
5574
5604
 
5575
- // ../../packages/core/dist/chunk-F3JHI4Y4.js
5576
- var DATA_PROXY_MOUNT, DATA_PROXY_PREFIX, BASE_DESTRUCTION_MOUNT, BASE_DESTRUCTION_PREFIX, BASE_DESTRUCTION_CONFIRM_PATH, COMMUNITY_EMAIL_UNSUBSCRIBE_PATH, CONTACT_BOOK_EMAIL_UNSUBSCRIBE_PATH, AUTOMATION_WEBHOOK_MOUNT;
5577
- var init_chunk_F3JHI4Y4 = __esm({
5578
- "../../packages/core/dist/chunk-F3JHI4Y4.js"() {
5605
+ // ../../packages/core/dist/chunk-5XEJSR22.js
5606
+ var DATA_PROXY_MOUNT, DATA_PROXY_PREFIX, BASE_DESTRUCTION_MOUNT, BASE_DESTRUCTION_PREFIX, BASE_DESTRUCTION_CONFIRM_PATH, COMMUNITY_EMAIL_UNSUBSCRIBE_PATH, CONTACT_BOOK_EMAIL_UNSUBSCRIBE_PATH, AUTOMATION_WEBHOOK_MOUNT, MANAGED_AGENTS_WEBHOOK_MOUNT;
5607
+ var init_chunk_5XEJSR22 = __esm({
5608
+ "../../packages/core/dist/chunk-5XEJSR22.js"() {
5579
5609
  "use strict";
5580
5610
  DATA_PROXY_MOUNT = "/data";
5581
5611
  DATA_PROXY_PREFIX = `/api${DATA_PROXY_MOUNT}`;
@@ -5585,10 +5615,11 @@ var init_chunk_F3JHI4Y4 = __esm({
5585
5615
  COMMUNITY_EMAIL_UNSUBSCRIBE_PATH = "/api/communities/email-unsubscribe";
5586
5616
  CONTACT_BOOK_EMAIL_UNSUBSCRIBE_PATH = "/api/contact-book/email-unsubscribe";
5587
5617
  AUTOMATION_WEBHOOK_MOUNT = "/webhooks/automations";
5618
+ MANAGED_AGENTS_WEBHOOK_MOUNT = "/webhooks/managed-agents";
5588
5619
  }
5589
5620
  });
5590
5621
 
5591
- // ../../packages/core/dist/chunk-IEWJ5MZH.js
5622
+ // ../../packages/core/dist/chunk-ISFDR7SP.js
5592
5623
  function matchPath(pattern, path42) {
5593
5624
  const normalizedPath = path42.replace(/\/$/, "");
5594
5625
  if (pattern.endsWith("/*")) {
@@ -5616,10 +5647,10 @@ function getEndpointConfig(path42) {
5616
5647
  return { tier: "STANDARD" };
5617
5648
  }
5618
5649
  var ENDPOINT_CONFIGS, EXCLUDED_PATHS;
5619
- var init_chunk_IEWJ5MZH = __esm({
5620
- "../../packages/core/dist/chunk-IEWJ5MZH.js"() {
5650
+ var init_chunk_ISFDR7SP = __esm({
5651
+ "../../packages/core/dist/chunk-ISFDR7SP.js"() {
5621
5652
  "use strict";
5622
- init_chunk_F3JHI4Y4();
5653
+ init_chunk_5XEJSR22();
5623
5654
  ENDPOINT_CONFIGS = {
5624
5655
  // OAuth callbacks - strict, fail-closed (prevent brute force)
5625
5656
  "/oauth/callback/*": { tier: "STRICT", failClosed: true },
@@ -5774,6 +5805,8 @@ var init_chunk_IEWJ5MZH = __esm({
5774
5805
  // platform's egress addresses carry many tenants' deliveries. The per-automation budget is
5775
5806
  // `AUTOMATION_WEBHOOK_PER_AUTOMATION_LIMIT`, counted after the delivery is verified.
5776
5807
  [`${AUTOMATION_WEBHOOK_MOUNT}/*`]: { tier: "HIGH" },
5808
+ // Managed Agents session events (#5083 Phase 4): HIGH, one vendor address carries many tenants'.
5809
+ [`${MANAGED_AGENTS_WEBHOOK_MOUNT}/*`]: { tier: "HIGH" },
5777
5810
  // Reports (CLI → platform_report triage queue). One per-user budget covers intake
5778
5811
  // (POST), the content edit (PATCH /:id), the reporter read-back (GET, GET /:id), and the
5779
5812
  // verification loop (POST /:id/accept, /:id/contest). The limiter is path-based, so a
@@ -6082,7 +6115,7 @@ var init_chunk_IEWJ5MZH = __esm({
6082
6115
  }
6083
6116
  });
6084
6117
 
6085
- // ../../packages/core/dist/chunk-CGOLULK2.js
6118
+ // ../../packages/core/dist/chunk-FNNHGL7K.js
6086
6119
  function fileSnapshotChanged(run) {
6087
6120
  return run.written + run.removed > 0;
6088
6121
  }
@@ -6123,11 +6156,11 @@ async function sendWithRetry(opts, cursor) {
6123
6156
  }
6124
6157
  }
6125
6158
  var rekorFileSnapshotAnswerSchema, FILE_SNAPSHOT_MAX_PAGES, FILE_SNAPSHOT_CONFLICT_ATTEMPTS, FILE_SNAPSHOT_PAGE_SPACING_MS, FILE_SNAPSHOT_CONFLICT_STATUS;
6126
- var init_chunk_CGOLULK2 = __esm({
6127
- "../../packages/core/dist/chunk-CGOLULK2.js"() {
6159
+ var init_chunk_FNNHGL7K = __esm({
6160
+ "../../packages/core/dist/chunk-FNNHGL7K.js"() {
6128
6161
  "use strict";
6129
- init_chunk_IEWJ5MZH();
6130
- init_chunk_F3JHI4Y4();
6162
+ init_chunk_ISFDR7SP();
6163
+ init_chunk_5XEJSR22();
6131
6164
  init_zod();
6132
6165
  rekorFileSnapshotAnswerSchema = external_exports.object({
6133
6166
  data: external_exports.object({
@@ -6531,6 +6564,20 @@ var init_chunk_YUZFHVB2 = __esm({
6531
6564
  }
6532
6565
  });
6533
6566
 
6567
+ // ../../packages/core/dist/chunk-I3O2RACG.js
6568
+ var managedAgentsWebhookParams, MANAGED_AGENTS_WEBHOOK_BODY_MAX_BYTES;
6569
+ var init_chunk_I3O2RACG = __esm({
6570
+ "../../packages/core/dist/chunk-I3O2RACG.js"() {
6571
+ "use strict";
6572
+ init_zod();
6573
+ managedAgentsWebhookParams = external_exports.object({
6574
+ hub_id: external_exports.string().uuid(),
6575
+ connection_id: external_exports.string().uuid()
6576
+ });
6577
+ MANAGED_AGENTS_WEBHOOK_BODY_MAX_BYTES = 16 * 1024;
6578
+ }
6579
+ });
6580
+
6534
6581
  // ../../packages/core/dist/chunk-34LE6P7E.js
6535
6582
  var templateIdParam, listTemplatesQuery, deleteTemplateQuery, templateStatusQuery, createTemplateBody, updateTemplateBody, submitTemplateBody, testTemplateBody;
6536
6583
  var init_chunk_34LE6P7E = __esm({
@@ -6606,34 +6653,6 @@ var init_chunk_FPSDNS2E = __esm({
6606
6653
  }
6607
6654
  });
6608
6655
 
6609
- // ../../packages/core/dist/chunk-ZXK6N2HN.js
6610
- var PEOPLE_MODERATION_NOTE_MAX_LENGTH, ADMIN_PEOPLE_REPORTS_PAGE_MAX, ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT, PEOPLE_SUSPENDED_REASON, peopleModerationActionSchema, moderationNoteSchema, adminPeopleReportListQuery, adminPeopleReportIdParam, adminPeopleMessageRemovalBody, adminPeopleSuspendBody, adminPeopleNoteBody;
6611
- var init_chunk_ZXK6N2HN = __esm({
6612
- "../../packages/core/dist/chunk-ZXK6N2HN.js"() {
6613
- "use strict";
6614
- init_chunk_ZVXO3XL6();
6615
- init_chunk_HZ6CADSY();
6616
- init_zod();
6617
- PEOPLE_MODERATION_NOTE_MAX_LENGTH = 500;
6618
- ADMIN_PEOPLE_REPORTS_PAGE_MAX = 100;
6619
- ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT = 50;
6620
- PEOPLE_SUSPENDED_REASON = "suspended";
6621
- peopleModerationActionSchema = external_exports.enum(["remove_message", "suspend", "unsuspend", "dismiss"]);
6622
- moderationNoteSchema = optionalTrimmedText(PEOPLE_MODERATION_NOTE_MAX_LENGTH);
6623
- adminPeopleReportListQuery = external_exports.object({
6624
- pending: external_exports.enum(["true", "false"]).optional().transform((value) => value === "true"),
6625
- /** Lower bound on `created_at`. */
6626
- since: timestampSchema.optional(),
6627
- limit: external_exports.coerce.number().int().min(1).max(ADMIN_PEOPLE_REPORTS_PAGE_MAX).default(ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT),
6628
- offset: external_exports.coerce.number().int().min(0).default(0)
6629
- });
6630
- adminPeopleReportIdParam = external_exports.object({ reportId: uuidSchema });
6631
- adminPeopleMessageRemovalBody = external_exports.object({ report_id: uuidSchema, message_id: uuidSchema.optional(), note: moderationNoteSchema }).strict();
6632
- adminPeopleSuspendBody = external_exports.object({ report_id: uuidSchema.optional(), note: moderationNoteSchema }).strict();
6633
- adminPeopleNoteBody = external_exports.object({ note: moderationNoteSchema }).strict();
6634
- }
6635
- });
6636
-
6637
6656
  // ../../packages/core/dist/chunk-MIWZOSPI.js
6638
6657
  function toIso(epochMs) {
6639
6658
  return new Date(epochMs).toISOString();
@@ -6789,7 +6808,7 @@ var init_chunk_E4DIIOOE = __esm({
6789
6808
  }
6790
6809
  });
6791
6810
 
6792
- // ../../packages/core/dist/chunk-4MXPUC6I.js
6811
+ // ../../packages/core/dist/chunk-GMWMQ4YA.js
6793
6812
  function spokenLineField(label, description2) {
6794
6813
  return { type: "text", label, maxLength: SPOKEN_LINE_MAX_CHARS, default: "", description: description2 };
6795
6814
  }
@@ -6799,8 +6818,8 @@ function byLowercaseName(a, b) {
6799
6818
  return x < y ? -1 : x > y ? 1 : 0;
6800
6819
  }
6801
6820
  var CALLER_LANGUAGE, TTS_VOICE_REPLY_ENABLED_FIELD, COPILOT_TRIGGER_FIELD, SANDBOX_AGENT_FIELDS, AUDIO_LANGUAGE_OPTIONS, whatsapp, instagram, resend, telegram, API_CHANNEL_DELIVERY_EVENTS, apiChannel, OPENAI_REASONING_MODELS, openai, anthropic, googleAiStudio, openRouter, xai, groqStt, openaiStt, elevenLabsStt, openaiTts, groqTts, elevenLabsTts, GEMINI_TTS_VOICES, googleTts, wayai, externalResources, restApiTool, mcpServer, REKOR_TOOLSET_SERVICE_NAME, rekorToolset, CLAUDE_HARNESS_MODELS, CLAUDE_HARNESS_MODEL_OPTIONS, HARNESS_MCP_SERVERS_FIELD, HARNESS_EGRESS_FIELDS, claudeManagedAgents, SPOKEN_LINE_MAX_CHARS, gptLive, CONNECTORS;
6802
- var init_chunk_4MXPUC6I = __esm({
6803
- "../../packages/core/dist/chunk-4MXPUC6I.js"() {
6821
+ var init_chunk_GMWMQ4YA = __esm({
6822
+ "../../packages/core/dist/chunk-GMWMQ4YA.js"() {
6804
6823
  "use strict";
6805
6824
  CALLER_LANGUAGE = "caller";
6806
6825
  TTS_VOICE_REPLY_ENABLED_FIELD = {
@@ -6838,7 +6857,7 @@ var init_chunk_4MXPUC6I = __esm({
6838
6857
  { value: "agent", label: "Agent (private to this agent)" }
6839
6858
  ],
6840
6859
  default: "conversation",
6841
- description: "Whose sandbox this agent uses. Conversation: shared with the conversation's other agents; every agent sharing it sees its files, and agents sharing it need the same Sandbox Network setting, or a command from one ends the sandbox and starts an empty one. Agent: private to this agent; no other agent sees its files. Set Agent for an agent that handles files others must not see, such as a copilot with internal documents. Each agent sandbox is its own container, counts toward the organization's limit on running sandboxes, and ends with the conversation."
6860
+ description: "Whose sandbox this agent uses. Conversation: shared with the conversation's other agents; every agent sharing it sees its files, and agents sharing it need the same Sandbox Network setting, or a command from one ends the sandbox and starts a new one, which keeps its /workspace files but none of its running processes. Agent: private to this agent; no other agent sees its files. Set Agent for an agent that handles files others must not see, such as a copilot with internal documents. Each agent sandbox is its own container, counts toward the organization's limit on running sandboxes, and ends with the conversation."
6842
6861
  },
6843
6862
  sandbox_network: {
6844
6863
  type: "select",
@@ -7678,7 +7697,8 @@ var init_chunk_4MXPUC6I = __esm({
7678
7697
  api_key: {
7679
7698
  connection_display_name: { type: "text", label: "Connection Name", placeholder: "Enter a name for this connection", description: "This name will be used to identify the connection in the system", required: true },
7680
7699
  api_key: { type: "password", label: "API Key", placeholder: "Enter your Anthropic API key", description: "Anthropic API key for the Managed Agents API. Used only from the WayAI Worker \u2014 no sandbox ever sees it.", required: true, maskInEdit: true, useExistingPlaceholder: "__USE_EXISTING_API_KEY__" },
7681
- access_token: { type: "password", label: "GitHub Token (Optional)", placeholder: "Enter a GitHub personal access token", description: "Optional: personal access token for the repo_url checkout. Anthropic's git proxy injects it after requests leave the sandbox \u2014 it never enters the sandbox.", maskInEdit: true, useExistingPlaceholder: "__USE_EXISTING_ACCESS_TOKEN__" }
7700
+ access_token: { type: "password", label: "GitHub Token (Optional)", placeholder: "Enter a GitHub personal access token", description: "Optional: personal access token for the repo_url checkout. Anthropic's git proxy injects it after requests leave the sandbox \u2014 it never enters the sandbox.", maskInEdit: true, useExistingPlaceholder: "__USE_EXISTING_ACCESS_TOKEN__" },
7701
+ webhook_secret_token: { type: "password", label: "Webhook Signing Secret", placeholder: "whsec_\u2026", description: "Signing secret of this connection's webhook endpoint in the Claude Console. Without it, a finished turn is picked up only by a check every 5 minutes.", maskInEdit: true, useExistingPlaceholder: "__USE_EXISTING_WEBHOOK_SECRET_TOKEN__" }
7682
7702
  }
7683
7703
  },
7684
7704
  token_refresh_config: { api_key: { strategy: "none" } },
@@ -7764,13 +7784,13 @@ var init_chunk_4MXPUC6I = __esm({
7764
7784
  }
7765
7785
  });
7766
7786
 
7767
- // ../../packages/core/dist/chunk-NTJMGSSO.js
7787
+ // ../../packages/core/dist/chunk-PEXTNF6S.js
7768
7788
  var evalCallInstant, EVAL_CALL_MIN_SECONDS, EVAL_CALL_MAX_SECONDS, EVAL_CALL_SPOKEN_LINE_MAX_CHARS, hubScoped2, createEvalCallBody, createEvalCallResponse, evalCallConversationQuery, evalCallRecordQuery, evalCallSpeaker, evalCallUtterance, evalCallTurn, evalCallRecording, evalCallRecordResponse, evalCallFinishResponse;
7769
- var init_chunk_NTJMGSSO = __esm({
7770
- "../../packages/core/dist/chunk-NTJMGSSO.js"() {
7789
+ var init_chunk_PEXTNF6S = __esm({
7790
+ "../../packages/core/dist/chunk-PEXTNF6S.js"() {
7771
7791
  "use strict";
7772
7792
  init_chunk_E4DIIOOE();
7773
- init_chunk_4MXPUC6I();
7793
+ init_chunk_GMWMQ4YA();
7774
7794
  init_chunk_HZ6CADSY();
7775
7795
  init_chunk_MIWZOSPI();
7776
7796
  init_zod();
@@ -8137,15 +8157,15 @@ var init_chunk_MH4O3YEX = __esm({
8137
8157
  }
8138
8158
  });
8139
8159
 
8140
- // ../../packages/core/dist/chunk-CWUV6NL3.js
8160
+ // ../../packages/core/dist/chunk-UZ7SPBM3.js
8141
8161
  function catalogToolSideEffects(toolName) {
8142
8162
  const sideEffects = CATALOG_SIDE_EFFECTS.get(toolName);
8143
8163
  if (sideEffects === void 0) return "unknown";
8144
8164
  return sideEffects ? "side_effects" : "none";
8145
8165
  }
8146
8166
  var NATIVE_TOOL_SCHEMAS, WAYAI_CONNECTOR, SANDBOX_AGENT_ROLES, BASE_NATIVE_TOOLS, NATIVE_TOOLS, CATALOG_SIDE_EFFECTS;
8147
- var init_chunk_CWUV6NL3 = __esm({
8148
- "../../packages/core/dist/chunk-CWUV6NL3.js"() {
8167
+ var init_chunk_UZ7SPBM3 = __esm({
8168
+ "../../packages/core/dist/chunk-UZ7SPBM3.js"() {
8149
8169
  "use strict";
8150
8170
  init_chunk_DHPUPI4Y();
8151
8171
  NATIVE_TOOL_SCHEMAS = {
@@ -8466,7 +8486,7 @@ var init_chunk_CWUV6NL3 = __esm({
8466
8486
  "bash": {
8467
8487
  "tool_config": {
8468
8488
  "name": "bash",
8469
- "description": "Run a Bash command in this conversation's sandbox: a disposable Linux container (Debian, with Python 3, curl, jq, zip and other common tools) whose working directory is /workspace. The sandbox starts on the first command and keeps its files between commands in this conversation, but it ends after 10 minutes without use or 60 minutes in all; the next command then starts an empty one, and its result says so. What the sandbox can reach over the network is set for this agent by a hub admin; with no network, nothing leaves it. A command runs for at most timeout_seconds and never past the turn's own time limit. Long output keeps only its first and last parts. The result gives the exit code, stdout and stderr.",
8489
+ "description": "Run a Bash command in this conversation's sandbox: a disposable Linux container (Debian, with Python 3, curl, jq, zip and other common tools) whose working directory is /workspace. The sandbox starts on the first command and keeps its files between commands in this conversation, but it ends after 10 minutes without use or 60 minutes in all; the next command then starts a new one with the /workspace files from the last save, made when a sandbox stopped and at the end of each turn that ran a command, and its result says what came back. Only files under /workspace are kept, never a running process: a long job should write its progress to files under /workspace, so the work can go on from them. HOME is /workspace, so a pip install --user, or a virtual environment under /workspace, is kept too; a plain pip install is not. Installs count toward the saved workspace's size, and when it is too large to keep, what is under /workspace/.local is left out first. What the sandbox can reach over the network is set for this agent by a hub admin; with no network, nothing leaves it. A command runs for at most timeout_seconds and never past the turn's own time limit. Long output keeps only its first and last parts. The result gives the exit code, stdout and stderr.",
8470
8490
  "strict": false,
8471
8491
  "parameters": {
8472
8492
  "type": "object",
@@ -8493,7 +8513,7 @@ var init_chunk_CWUV6NL3 = __esm({
8493
8513
  "copy_to_sandbox": {
8494
8514
  "tool_config": {
8495
8515
  "name": "copy_to_sandbox",
8496
- "description": `Copy one of this conversation's files, or one of your documents, into the code sandbox, so commands run with bash can read or edit it there. path names the file as read_file does: this conversation's attachments under "conversation/" (e.g. "conversation/report.xlsx"), an earlier conversation's under "conversations/<conversation_id>/<name>", or a document under "data/<file-type>/" (e.g. "data/contracts/acme/msa.docx"), whose result gives the version you copied: pass it to copy_from_sandbox to copy the document back. Hub resource files cannot be copied. The copy lands at sandbox_path, replacing any file there; a file larger than 25 MiB is refused, and a document larger than 1 MiB. If no sandbox is running, the copy starts an empty one.`,
8516
+ "description": `Copy one of this conversation's files, or one of your documents, into the code sandbox, so commands run with bash can read or edit it there. path names the file as read_file does: this conversation's attachments under "conversation/" (e.g. "conversation/report.xlsx"), an earlier conversation's under "conversations/<conversation_id>/<name>", or a document under "data/<file-type>/" (e.g. "data/contracts/acme/msa.docx"), whose result gives the version you copied: pass it to copy_from_sandbox to copy the document back. Hub resource files cannot be copied. The copy lands at sandbox_path, replacing any file there; a file larger than 25 MiB is refused, and a document larger than 1 MiB. If no sandbox is running, the copy starts one, with the /workspace files from the last save.`,
8497
8517
  "strict": false,
8498
8518
  "parameters": {
8499
8519
  "type": "object",
@@ -9465,7 +9485,7 @@ var init_chunk_T7KQKDET = __esm({
9465
9485
  }
9466
9486
  });
9467
9487
 
9468
- // ../../packages/core/dist/chunk-7PJOBY4O.js
9488
+ // ../../packages/core/dist/chunk-XOGFONTQ.js
9469
9489
  function resolveMonitorTrigger(monitorConfig) {
9470
9490
  if (!monitorConfig || typeof monitorConfig !== "object") return "idle";
9471
9491
  const raw = monitorConfig.trigger;
@@ -9771,10 +9791,10 @@ function refineMonitorRulesStructuredOutput(body, ctx) {
9771
9791
  if (refusal2) ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["response_format"], message: refusal2 });
9772
9792
  }
9773
9793
  var NATIVE_TOOL_NAMES, previousConversationsCountField, summarizationThresholdField, flagConditionSchema, MONITOR_TRIGGERS, monitorTriggerSchema, AUTOMATION_GATE_TRIGGERS, NON_FIRING_TRIGGERS, MONITOR_FIRING_TRIGGERS, MONITOR_DELAY_SECONDS_MIN, MONITOR_IDLE_DELAY_REQUIRED_MESSAGE, MONITOR_HISTORY_MESSAGES_MAX, monitorHistoryMessagesSchema, monitorIncludeToolResultsSchema, MONITOR_INPUT_SHAPING_KEYS, MONITOR_INPUT_SHAPING_SCHEMAS, MONITOR_INPUT_SHAPING_IDLE_MESSAGE, monitorArgumentSourceSchema, MONITOR_NOTE_TEMPLATE_MAX, MONITOR_STEER_NOTE_MAX, MONITOR_GATE_AGENT_NAME_MAX, monitorActionSchema, monitorRuleSchema, MONITOR_RULE_KEYS, MONITOR_RULE_SCHEMAS, MONITOR_RULE_TRIGGERS, MONITOR_RULE_TRIGGER_MESSAGE, CALL_UTTERANCE_SPEAKERS, callUtteranceSpeakerSchema, MONITOR_CALL_KEYS, MONITOR_CALL_SCHEMAS, MONITOR_CALL_KEY_MESSAGE, CALL_STEERING_MIN_CONFIDENCE, CALL_UTTERANCE_RULE_NOT_CONFIDENT_MESSAGE, CALL_UTTERANCE_FALLBACK_MESSAGE, CALL_UTTERANCE_FLAG_CONDITIONS_MESSAGE, CALL_STEER_NOTE_BLANK_MESSAGE, MONITOR_USER_MESSAGE_ACTION_KINDS, MONITOR_ASSISTANT_REPLY_ACTION_KINDS, MONITOR_CALL_UTTERANCE_ACTION_KINDS, MONITOR_AUTOMATION_FIRE_ACTION_KINDS, MONITOR_AUTOMATION_ITEM_ACTION_KINDS, INSERT_NOTE_TOOL_NAME, RUN_MONITOR_TOOL_NAME, MONITOR_RULE_ALLOWED_NATIVE_TOOLS, MONITOR_RULE_REENTRY_TOOLS, MONITOR_RULE_REENTRY_TRACKS, AUTOMATION_FIRE_FLAG_CONDITIONS_MESSAGE, AUTOMATION_FIRE_INPUT_SHAPING_MESSAGE, AUTOMATION_ITEM_FLAG_CONDITIONS_MESSAGE, AUTOMATION_ITEM_INPUT_SHAPING_MESSAGE, AUTOMATION_GATE_KEY_MESSAGES, monitorConfigField, flagConditionsField, agentIdParam, listAgentsQuery, agentConnectionsQuery, createAgentBody, updateAgentBody, AGENT_PARAMETER_TYPES, AGENT_PARAMETER_NAME_REGEX, agentParameterCreateSchema, MAX_AGENT_PARAMETERS_PER_REQUEST, createAgentParametersBody;
9774
- var init_chunk_7PJOBY4O = __esm({
9775
- "../../packages/core/dist/chunk-7PJOBY4O.js"() {
9794
+ var init_chunk_XOGFONTQ = __esm({
9795
+ "../../packages/core/dist/chunk-XOGFONTQ.js"() {
9776
9796
  "use strict";
9777
- init_chunk_CWUV6NL3();
9797
+ init_chunk_UZ7SPBM3();
9778
9798
  init_chunk_IBL7FANV();
9779
9799
  init_chunk_PFDZEKDE();
9780
9800
  init_chunk_HZ6CADSY();
@@ -9997,12 +10017,12 @@ var init_chunk_7PJOBY4O = __esm({
9997
10017
  }
9998
10018
  });
9999
10019
 
10000
- // ../../packages/core/dist/chunk-CYBQP65X.js
10020
+ // ../../packages/core/dist/chunk-TUP5Y6ZB.js
10001
10021
  var conversationIdParam, conversationHubQuery, claimBody, releaseBody, transferBody, closeBody, additionalContextPayloadSchema, kanbanUpdateBody, annotateConversationBody, observabilityParams, observabilityListParams, deleteUserConversationsBody, deleteUserConversationsResponse, sendMessageBody, listConversationsQuery, flagSourceSchema, getConversationsResponse, getConversationDetailParams, getConversationDetailQuery, getConversationDetailResponse, listWhatsAppTemplatesQuery, sendWhatsAppTemplateBody;
10002
- var init_chunk_CYBQP65X = __esm({
10003
- "../../packages/core/dist/chunk-CYBQP65X.js"() {
10022
+ var init_chunk_TUP5Y6ZB = __esm({
10023
+ "../../packages/core/dist/chunk-TUP5Y6ZB.js"() {
10004
10024
  "use strict";
10005
- init_chunk_7PJOBY4O();
10025
+ init_chunk_XOGFONTQ();
10006
10026
  init_chunk_HZ6CADSY();
10007
10027
  init_chunk_DHPUPI4Y();
10008
10028
  init_zod();
@@ -10458,7 +10478,7 @@ var init_chunk_BPCNB5RT = __esm({
10458
10478
  }
10459
10479
  });
10460
10480
 
10461
- // ../../packages/core/dist/chunk-NRJINQVD.js
10481
+ // ../../packages/core/dist/chunk-LQSENJ26.js
10462
10482
  function idempotencyHeaderRefusal(value) {
10463
10483
  if (typeof value !== "string" || !/^[A-Za-z0-9][A-Za-z0-9-]{0,63}$/.test(value)) {
10464
10484
  return "idempotency_header must be a header name: letters, digits and dashes, at most 64";
@@ -10469,10 +10489,10 @@ function idempotencyHeaderRefusal(value) {
10469
10489
  return null;
10470
10490
  }
10471
10491
  var CATALOG_REPLAY, REPLAY_OVERRIDES, RESERVED_HEADERS;
10472
- var init_chunk_NRJINQVD = __esm({
10473
- "../../packages/core/dist/chunk-NRJINQVD.js"() {
10492
+ var init_chunk_LQSENJ26 = __esm({
10493
+ "../../packages/core/dist/chunk-LQSENJ26.js"() {
10474
10494
  "use strict";
10475
- init_chunk_CWUV6NL3();
10495
+ init_chunk_UZ7SPBM3();
10476
10496
  CATALOG_REPLAY = new Map(
10477
10497
  NATIVE_TOOLS.map((tool) => [tool.tool_name, tool.replay])
10478
10498
  );
@@ -10705,7 +10725,7 @@ var init_chunk_WEXVYJ5H = __esm({
10705
10725
  }
10706
10726
  });
10707
10727
 
10708
- // ../../packages/core/dist/chunk-QXHWCZ74.js
10728
+ // ../../packages/core/dist/chunk-KRGVB7U6.js
10709
10729
  function refineToolConfig(value, ctx) {
10710
10730
  const raw = value.tool_config;
10711
10731
  if (raw == null) return;
@@ -10741,10 +10761,10 @@ function refineToolConfig(value, ctx) {
10741
10761
  }
10742
10762
  }
10743
10763
  var toolIdParam, listToolsQuery, toolAgentQuery, deleteToolQuery, toolConnectionsQuery, nativeToolIdSchema, CONTEXT_BOUNDARIES, contextBoundarySchema, addNativeToolBody, addMcpToolBody, toolReplaySettingsFields, toolReplaySettingsSchema, createCustomToolBody, updateCustomToolBody, updateToolExecutionConfigBody;
10744
- var init_chunk_QXHWCZ74 = __esm({
10745
- "../../packages/core/dist/chunk-QXHWCZ74.js"() {
10764
+ var init_chunk_KRGVB7U6 = __esm({
10765
+ "../../packages/core/dist/chunk-KRGVB7U6.js"() {
10746
10766
  "use strict";
10747
- init_chunk_NRJINQVD();
10767
+ init_chunk_LQSENJ26();
10748
10768
  init_chunk_WEXVYJ5H();
10749
10769
  init_chunk_HZ6CADSY();
10750
10770
  init_zod();
@@ -12116,7 +12136,7 @@ var init_chunk_6NI5RAM4 = __esm({
12116
12136
  }
12117
12137
  });
12118
12138
 
12119
- // ../../packages/core/dist/chunk-QJTHNMWD.js
12139
+ // ../../packages/core/dist/chunk-RT35VFUY.js
12120
12140
  function refineHubAsCodeCustomTools(config, ctx) {
12121
12141
  const agents = config.agents;
12122
12142
  if (!Array.isArray(agents)) return;
@@ -12652,12 +12672,12 @@ function refineHubAsCodeMonitorRulesOutput(config, ctx) {
12652
12672
  });
12653
12673
  }
12654
12674
  var MAX_10MB_BASE64_ENCODED_BYTES, MAX_EVAL_ATTACHMENT_ENCODED_BYTES, MAX_EVAL_ATTACHMENT_CARRIERS, MAX_EVAL_ATTACHMENT_AGGREGATE_ENCODED_BYTES, MAX_RESOURCE_ENCODED_BYTES, MAX_HUB_AS_CODE_RESOURCES, MAX_HUB_AS_CODE_RESOURCE_FILES, MAX_RESOURCE_AGGREGATE_ENCODED_BYTES, MAX_CI_CONFIG_BODY_BYTES, MAX_CALL_OPENING_CARRIERS, MAX_CALL_OPENING_AGGREGATE_ENCODED_BYTES, hubAsCodeStateSchema, hubAsCodeResourceFileSchema, hubAsCodeResourceSchema, uuidPattern, ciUuidSchema, boundedHubAsCodeResourcesSchema, hubAsCodeConfigSchema, ciPullHubIdParam, ciBranchParam, ciPullQuery, ciHubsQuery, ciLookupQuery, ciBranchesQuery, ciSyncBody, ciPushBody, ciDiffBody, ciPublishBody, ciPublishPreviewBody, ciSyncMcpBody, ciOrgResourcesParam, orgResourcesConfigSchema, ciOrgResourcesPushBody, ciOrgResourcesDiffBody, CI_APPLY_ENTITY_KINDS, CI_APPLY_OPERATIONS, ciApplyErrorBaseSchema, ciApplyErrorSchema, ciSyncCountSchema, ciSyncChangesSchema, ciSyncWarningSchema, ciSyncResponseSchema;
12655
- var init_chunk_QJTHNMWD = __esm({
12656
- "../../packages/core/dist/chunk-QJTHNMWD.js"() {
12675
+ var init_chunk_RT35VFUY = __esm({
12676
+ "../../packages/core/dist/chunk-RT35VFUY.js"() {
12657
12677
  "use strict";
12658
- init_chunk_QXHWCZ74();
12678
+ init_chunk_KRGVB7U6();
12659
12679
  init_chunk_623SRYWZ();
12660
- init_chunk_7PJOBY4O();
12680
+ init_chunk_XOGFONTQ();
12661
12681
  init_chunk_LBDH7LCG();
12662
12682
  init_chunk_4LXDRTO4();
12663
12683
  init_chunk_T4Q5COKJ();
@@ -13666,15 +13686,15 @@ var init_chunk_LQY2OCQL = __esm({
13666
13686
  }
13667
13687
  });
13668
13688
 
13669
- // ../../packages/core/dist/chunk-UWFYCJCK.js
13689
+ // ../../packages/core/dist/chunk-2VTDOH67.js
13670
13690
  var AUTOMATION_TRIGGER_TYPES, AUTOMATION_EVENT_TYPES, AUTOMATION_TARGET_TYPES, AUTOMATION_ACTION_TYPES, AUTOMATION_CHANNEL_TYPES, AUTOMATION_PURPOSES, AUTOMATION_NAME_MAX, AUTOMATION_DESCRIPTION_MAX, AUTOMATION_INSTRUCTIONS_MAX, AUTOMATION_TEXT_MAX, AUTOMATION_CRON_MAX, AUTOMATION_WEBHOOK_AUTHS, AUTOMATION_WEBHOOK_HEADERS, AUTOMATION_WEBHOOK_BODY_MAX_BYTES, AUTOMATION_WEBHOOK_HEADER_NAME_MAX, WEBHOOK_RESERVED_HEADERS, automationTriggerSchema, automationTargetSchema, automationActionSchema, automationGateSchema, automationName, automationDescription, automationIdParam, automationHubQuery, automationWebhookParams, AUTOMATION_RUNS_PAGE_MAX, listAutomationRunsQuery, createAutomationBody, updateAutomationBody, AUTOMATION_ALERT_CATEGORIES, AUTOMATION_BLOCKED_ALERT_CATEGORY, automationEventSubscriberParam;
13671
- var init_chunk_UWFYCJCK = __esm({
13672
- "../../packages/core/dist/chunk-UWFYCJCK.js"() {
13691
+ var init_chunk_2VTDOH67 = __esm({
13692
+ "../../packages/core/dist/chunk-2VTDOH67.js"() {
13673
13693
  "use strict";
13674
13694
  init_chunk_LQY2OCQL();
13675
- init_chunk_7PJOBY4O();
13695
+ init_chunk_XOGFONTQ();
13676
13696
  init_chunk_3HSB6J4J();
13677
- init_chunk_F3JHI4Y4();
13697
+ init_chunk_5XEJSR22();
13678
13698
  init_chunk_DHPUPI4Y();
13679
13699
  init_chunk_T7KQKDET();
13680
13700
  init_zod();
@@ -14917,29 +14937,30 @@ var init_chunk_TS4EYU3W = __esm({
14917
14937
  var init_contracts = __esm({
14918
14938
  "../../packages/core/dist/contracts/index.js"() {
14919
14939
  "use strict";
14940
+ init_chunk_SXDX4GHS();
14920
14941
  init_chunk_FK6HBXM7();
14921
14942
  init_chunk_VXEAR36B();
14922
14943
  init_chunk_TIZ57ZBA();
14923
14944
  init_chunk_Q7KIQHAZ();
14924
- init_chunk_2U4BTOR7();
14945
+ init_chunk_QUGQIL47();
14925
14946
  init_chunk_IPXBFWUU();
14926
14947
  init_chunk_GK27ENTT();
14927
- init_chunk_SXDX4GHS();
14928
14948
  init_chunk_GPM7PE44();
14929
14949
  init_chunk_DGKMMFIR();
14930
14950
  init_chunk_ZC6YGHNX();
14931
14951
  init_chunk_ACKF2MVU();
14952
+ init_chunk_ZXK6N2HN();
14932
14953
  init_chunk_Y7CFCYX4();
14933
14954
  init_chunk_5DGHIY7L();
14934
- init_chunk_CGOLULK2();
14955
+ init_chunk_FNNHGL7K();
14935
14956
  init_chunk_4MRBBR5L();
14936
14957
  init_chunk_BEOHBREG();
14937
14958
  init_chunk_IPDOHAZ5();
14938
14959
  init_chunk_YUZFHVB2();
14960
+ init_chunk_I3O2RACG();
14939
14961
  init_chunk_34LE6P7E();
14940
14962
  init_chunk_FPSDNS2E();
14941
- init_chunk_ZXK6N2HN();
14942
- init_chunk_NTJMGSSO();
14963
+ init_chunk_PEXTNF6S();
14943
14964
  init_chunk_C4HEZ7ZI();
14944
14965
  init_chunk_IR2NOSI3();
14945
14966
  init_chunk_EA23LSDS();
@@ -14947,12 +14968,12 @@ var init_contracts = __esm({
14947
14968
  init_chunk_LWMLR2WI();
14948
14969
  init_chunk_ACGAI25T();
14949
14970
  init_chunk_MH4O3YEX();
14950
- init_chunk_CYBQP65X();
14971
+ init_chunk_TUP5Y6ZB();
14951
14972
  init_chunk_KSTYTQ7I();
14952
14973
  init_chunk_LKBSHANA();
14953
14974
  init_chunk_BPCNB5RT();
14954
- init_chunk_QJTHNMWD();
14955
- init_chunk_QXHWCZ74();
14975
+ init_chunk_RT35VFUY();
14976
+ init_chunk_KRGVB7U6();
14956
14977
  init_chunk_623SRYWZ();
14957
14978
  init_chunk_JDJ4EUOL();
14958
14979
  init_chunk_3KYTITOR();
@@ -14962,9 +14983,9 @@ var init_contracts = __esm({
14962
14983
  init_chunk_YULHXJ5M();
14963
14984
  init_chunk_V4FRPRH5();
14964
14985
  init_chunk_ZHJEQBXJ();
14965
- init_chunk_UWFYCJCK();
14986
+ init_chunk_2VTDOH67();
14966
14987
  init_chunk_LQY2OCQL();
14967
- init_chunk_7PJOBY4O();
14988
+ init_chunk_XOGFONTQ();
14968
14989
  init_chunk_3HSB6J4J();
14969
14990
  init_chunk_IG6QBZMA();
14970
14991
  init_chunk_ZJJ5ODOD();
@@ -14973,9 +14994,9 @@ var init_contracts = __esm({
14973
14994
  init_chunk_4LXDRTO4();
14974
14995
  init_chunk_E4DIIOOE();
14975
14996
  init_chunk_7CYHPF35();
14976
- init_chunk_4MXPUC6I();
14977
- init_chunk_NRJINQVD();
14978
- init_chunk_CWUV6NL3();
14997
+ init_chunk_GMWMQ4YA();
14998
+ init_chunk_LQSENJ26();
14999
+ init_chunk_UZ7SPBM3();
14979
15000
  init_chunk_NVKU5PPQ();
14980
15001
  init_chunk_2FCLSQSQ();
14981
15002
  init_chunk_FECLIZTY();
@@ -14988,11 +15009,11 @@ var init_contracts = __esm({
14988
15009
  init_chunk_OMPT4ZHR();
14989
15010
  init_chunk_2PZIF56U();
14990
15011
  init_chunk_UEJOG2Q7();
14991
- init_chunk_IEWJ5MZH();
15012
+ init_chunk_ISFDR7SP();
14992
15013
  init_chunk_SOJMWM63();
14993
15014
  init_chunk_WEXVYJ5H();
14994
15015
  init_chunk_LZDVDC2S();
14995
- init_chunk_F3JHI4Y4();
15016
+ init_chunk_5XEJSR22();
14996
15017
  init_chunk_IBL7FANV();
14997
15018
  init_chunk_PFDZEKDE();
14998
15019
  init_chunk_VORPHGDT();
@@ -16316,11 +16337,11 @@ var UUID_RE2, WAYAI_WORKSPACE_LAYOUT;
16316
16337
  var init_dist = __esm({
16317
16338
  "../../packages/core/dist/index.js"() {
16318
16339
  "use strict";
16319
- init_chunk_IEWJ5MZH();
16340
+ init_chunk_ISFDR7SP();
16320
16341
  init_chunk_SOJMWM63();
16321
16342
  init_chunk_WEXVYJ5H();
16322
16343
  init_chunk_LZDVDC2S();
16323
- init_chunk_F3JHI4Y4();
16344
+ init_chunk_5XEJSR22();
16324
16345
  init_chunk_IBL7FANV();
16325
16346
  init_chunk_PFDZEKDE();
16326
16347
  init_chunk_P3AWZG3N();
@@ -21859,6 +21880,7 @@ var init_types2 = __esm({
21859
21880
  ENTITY_KINDS = [
21860
21881
  "record_types",
21861
21882
  "relationship_types",
21883
+ "file_types",
21862
21884
  "inbound_webhooks",
21863
21885
  "triggers",
21864
21886
  "toolsets",
@@ -21868,6 +21890,7 @@ var init_types2 = __esm({
21868
21890
  ENTITY_DIRS = {
21869
21891
  record_types: "record-types",
21870
21892
  relationship_types: "relationship-types",
21893
+ file_types: "file-types",
21871
21894
  inbound_webhooks: "inbound-webhooks",
21872
21895
  triggers: "triggers",
21873
21896
  toolsets: "toolsets",
@@ -22004,6 +22027,7 @@ var init_config_writer = __esm({
22004
22027
  "target_record_types",
22005
22028
  "cascade"
22006
22029
  ],
22030
+ file_types: ["id", "name", "description", "icon", "color", "max_size", "allowed_content_types", "metadata_schema"],
22007
22031
  inbound_webhooks: [
22008
22032
  "id",
22009
22033
  "name",
@@ -22157,9 +22181,12 @@ function parseBaseFolder(folder) {
22157
22181
  );
22158
22182
  }
22159
22183
  const read = (kind) => readEntityDir(folder, path22.join(folder, ENTITY_DIRS[kind]));
22184
+ const fileTypesDir = path22.join(folder, ENTITY_DIRS.file_types);
22185
+ const fileTypes = readEntityDir(folder, fileTypesDir);
22160
22186
  const config = {
22161
22187
  record_types: read("record_types"),
22162
22188
  relationship_types: read("relationship_types"),
22189
+ ...isDirectory(fileTypesDir) ? { file_types: fileTypes } : {},
22163
22190
  inbound_webhooks: read("inbound_webhooks"),
22164
22191
  triggers: read("triggers"),
22165
22192
  toolsets: read("toolsets"),
@@ -22189,10 +22216,15 @@ function isEmptyBucket(b) {
22189
22216
  function isDiffEmpty(diff) {
22190
22217
  return ENTITY_KINDS.every((kind) => isEmptyBucket(bucket(diff, kind)));
22191
22218
  }
22219
+ function isPrunable(id) {
22220
+ return isPathSafeId(id);
22221
+ }
22192
22222
  function collectRemovals(diff) {
22193
22223
  const out = [];
22194
22224
  for (const kind of ENTITY_KINDS) {
22195
- for (const entity of bucket(diff, kind)?.removed ?? []) out.push({ kind, id: entity.id });
22225
+ for (const entity of bucket(diff, kind)?.removed ?? []) {
22226
+ if (isPrunable(entity.id)) out.push({ kind, id: entity.id });
22227
+ }
22196
22228
  }
22197
22229
  return out;
22198
22230
  }
@@ -22205,7 +22237,7 @@ function countChanges(diff) {
22205
22237
  if (!b) continue;
22206
22238
  added += b.added.length;
22207
22239
  modified += b.modified.length;
22208
- removed += b.removed.length;
22240
+ removed += b.removed.filter((e) => isPrunable(e.id)).length;
22209
22241
  }
22210
22242
  return { added, modified, removed };
22211
22243
  }
@@ -22217,7 +22249,11 @@ function renderDiff(diff) {
22217
22249
  lines.push(`${BOLD}${LABELS[kind]}s${RESET}`);
22218
22250
  for (const e of b.added) lines.push(`${GREEN} + ${sanitizeTerminalText(e.id)}${RESET}`);
22219
22251
  for (const m of b.modified) lines.push(`${YELLOW} ~ ${sanitizeTerminalText(m.after.id)}${RESET}`);
22220
- for (const e of b.removed) lines.push(`${RED} - ${sanitizeTerminalText(e.id)}${RESET}`);
22252
+ for (const e of b.removed) {
22253
+ lines.push(
22254
+ isPrunable(e.id) ? `${RED} - ${sanitizeTerminalText(e.id)}${RESET}` : `${YELLOW} = ${sanitizeTerminalText(e.id)} (kept: pull cannot write its id to a file)${RESET}`
22255
+ );
22256
+ }
22221
22257
  }
22222
22258
  const { added, modified, removed } = countChanges(diff);
22223
22259
  lines.push("");
@@ -22226,7 +22262,7 @@ function renderDiff(diff) {
22226
22262
  );
22227
22263
  if (removed > 0) {
22228
22264
  lines.push(
22229
- `${RED} ${removed} entit${removed === 1 ? "y" : "ies"} exist on the base but not in your files \u2014 re-run with --prune to delete (record types cascade to their records).${RESET}`
22265
+ `${RED} ${removed} entit${removed === 1 ? "y" : "ies"} exist on the base but not in your files \u2014 re-run with --prune to delete (record types cascade to their records, file types to their files).${RESET}`
22230
22266
  );
22231
22267
  }
22232
22268
  return lines.join("\n");
@@ -22236,10 +22272,12 @@ var init_diff_format = __esm({
22236
22272
  "src/data/config-as-code/diff-format.ts"() {
22237
22273
  "use strict";
22238
22274
  init_terminal_output();
22275
+ init_base_id();
22239
22276
  init_types2();
22240
22277
  LABELS = {
22241
22278
  record_types: "record type",
22242
22279
  relationship_types: "relationship type",
22280
+ file_types: "file type",
22243
22281
  inbound_webhooks: "inbound webhook",
22244
22282
  triggers: "trigger",
22245
22283
  toolsets: "toolset",
@@ -22461,7 +22499,7 @@ ${RED}${removals.length} ${word} not in your files were left on the base. Re-run
22461
22499
  );
22462
22500
  } else if (autoConfirm || await confirm(
22463
22501
  `
22464
- Delete ${removals.length} server ${word} not in your files? Record types cascade to their records.`
22502
+ Delete ${removals.length} server ${word} not in your files? Record types cascade to their records, file types to their files.`
22465
22503
  )) {
22466
22504
  for (const removal of removals) {
22467
22505
  await deleteEntity(client, baseId2, removal.kind, removal.id);
@@ -34816,6 +34854,7 @@ function metadataValue(value) {
34816
34854
  function fileWriteHeaders(opts) {
34817
34855
  const headers = {};
34818
34856
  if (opts.ifMatch !== void 0) headers["If-Match"] = ifMatchValue(opts.ifMatch);
34857
+ if (opts.createOnly) headers["If-None-Match"] = "*";
34819
34858
  if (opts.label !== void 0) headers["X-Data-Label"] = labelValue(opts.label);
34820
34859
  if (opts.metadata !== void 0) headers["X-Data-Metadata"] = metadataValue(opts.metadata);
34821
34860
  return headers;
@@ -35314,9 +35353,9 @@ var COUNTER_KEYS, STT_PRICING, CONTAINER_PRICING, connectorById, nativeToolById;
35314
35353
  var init_catalog = __esm({
35315
35354
  "../../packages/core/dist/catalog/index.js"() {
35316
35355
  "use strict";
35317
- init_chunk_4MXPUC6I();
35318
- init_chunk_NRJINQVD();
35319
- init_chunk_CWUV6NL3();
35356
+ init_chunk_GMWMQ4YA();
35357
+ init_chunk_LQSENJ26();
35358
+ init_chunk_UZ7SPBM3();
35320
35359
  init_chunk_MIWZOSPI();
35321
35360
  init_chunk_DHPUPI4Y();
35322
35361
  COUNTER_KEYS = Object.keys({
@@ -40547,7 +40586,7 @@ Push ${n} change${n === 1 ? "" : "s"} to ${describeSync(target)}?`, opts.yes)) {
40547
40586
  path42,
40548
40587
  bytes,
40549
40588
  contentType,
40550
- fileWriteHeaders({ ifMatch: step.op === "update" ? step.ifMatch : void 0, label })
40589
+ fileWriteHeaders({ ...step.op === "update" ? { ifMatch: step.ifMatch } : { createOnly: true }, label })
40551
40590
  );
40552
40591
  record.files[step.rel] = {
40553
40592
  version: typeof row?.version === "number" ? row.version : 0,
@@ -40561,7 +40600,8 @@ Push ${n} change${n === 1 ? "" : "s"} to ${describeSync(target)}?`, opts.yes)) {
40561
40600
  delete record.files[step.rel];
40562
40601
  } else if (isConflict(err)) {
40563
40602
  if (step.op === "delete") refusedDeletes.add(step.rel);
40564
- const conflict = { rel: step.rel, reason: "changed_while_pushing" };
40603
+ const reason = step.op === "create" && err.status === 412 ? "created_while_pushing" : "changed_while_pushing";
40604
+ const conflict = { rel: step.rel, reason };
40565
40605
  conflicts.push(conflict);
40566
40606
  console.log(` ! ${conflictLine(conflict, PUSH_CONFLICT)}`);
40567
40607
  continue;
@@ -40624,7 +40664,8 @@ var init_sync3 = __esm({
40624
40664
  exists_on_base: "created on the base since your last pull",
40625
40665
  case_twin: "differs only in case from the base's",
40626
40666
  file_folder: "would make one path both a file and a folder with the base's",
40627
- changed_while_pushing: "changed on the base while pushing \u2014 not written"
40667
+ changed_while_pushing: "changed on the base while pushing \u2014 not written",
40668
+ created_while_pushing: "created on the base while pushing \u2014 not written"
40628
40669
  };
40629
40670
  }
40630
40671
  });
@@ -40808,7 +40849,7 @@ function buildFilesCommand() {
40808
40849
  });
40809
40850
  });
40810
40851
  files.command("push <file_type>").description(
40811
- "Push the local changes of a folder pulled with `files pull` to the base, after showing the diff. A file changed, deleted or created on the base since your pull is a conflict, not written; an update or delete also carries the version pulled, so the base refuses it if the file changed meanwhile"
40852
+ "Push the local changes of a folder pulled with `files pull` to the base, after showing the diff. A file changed, deleted or created on the base since your pull is a conflict, not written; an update or delete also carries the version pulled and a new file is sent create-only, so the base refuses a write to a file changed or created meanwhile"
40812
40853
  ).option("--folder <path>", "The folder of the file type the local folder was pulled from").option("--dir <local>", "Local folder to push (default ./<file_type>, or ./<file_type>/<folder>)").option("--dry-run", "Show the diff and push nothing").option("--prune", "Also delete files you deleted locally \u2014 only those unchanged on the base since your pull").option("--label <text>", "Label for every content version the push creates (printable ASCII)").option("-y, --yes", "Push without asking").action(async function(fileType, opts) {
40813
40854
  const base = requireBase(this);
40814
40855
  await pushFiles({