@wayai/cli 0.3.223 → 0.3.225

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
5015
- 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"() {
5116
+ // ../../packages/core/dist/chunk-WBFLPPDI.js
5117
+ var connectionIdParam, connectorIdParam, listConnectionsQuery, deleteConnectionQuery, addConnectionBody, editConnectionBody, PRODUCTION_DIRECT_FIELDS, BESIDE_LINK_FIELDS, setProductionCredentialBody, registerWhatsappQuery, registerWhatsappBody, retryProvisioningQuery, resendDomainStatusQuery;
5118
+ var init_chunk_WBFLPPDI = __esm({
5119
+ "../../packages/core/dist/chunk-WBFLPPDI.js"() {
5018
5120
  "use strict";
5019
5121
  init_chunk_HZ6CADSY();
5020
5122
  init_zod();
@@ -5044,7 +5146,8 @@ var init_chunk_2U4BTOR7 = __esm({
5044
5146
  hub_id: uuidSchema,
5045
5147
  sync_credentials_to_production: external_exports.boolean().optional()
5046
5148
  }).passthrough();
5047
- PRODUCTION_DIRECT_FIELDS = ["username", "api_key", "access_token", "password", "refresh_token", "webhook_secret_token", "webhook_signing_secret"];
5149
+ PRODUCTION_DIRECT_FIELDS = ["username", "api_key", "access_token", "password", "refresh_token", "webhook_secret_token", "webhook_signing_secret", "github_app_id", "github_app_private_key"];
5150
+ BESIDE_LINK_FIELDS = /* @__PURE__ */ new Set(["webhook_secret_token", "github_app_id", "github_app_private_key"]);
5048
5151
  setProductionCredentialBody = external_exports.object({
5049
5152
  hub_id: uuidSchema,
5050
5153
  organization_credential_id: external_exports.string().nullable().optional(),
@@ -5055,11 +5158,15 @@ var init_chunk_2U4BTOR7 = __esm({
5055
5158
  password: external_exports.string().optional(),
5056
5159
  refresh_token: external_exports.string().optional(),
5057
5160
  webhook_secret_token: external_exports.string().optional(),
5058
- webhook_signing_secret: external_exports.string().optional()
5161
+ webhook_signing_secret: external_exports.string().optional(),
5162
+ github_app_id: external_exports.string().optional(),
5163
+ github_app_private_key: external_exports.string().optional()
5059
5164
  }).strict().superRefine((data, ctx) => {
5060
5165
  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) {
5166
+ const sets = (f) => data[f] != null && data[f] !== `__USE_EXISTING_${f.toUpperCase()}__`;
5167
+ const hasDirect = PRODUCTION_DIRECT_FIELDS.some(sets);
5168
+ const hasDirectBesideLink = PRODUCTION_DIRECT_FIELDS.some((f) => !BESIDE_LINK_FIELDS.has(f) && sets(f));
5169
+ if (hasOrgLink && hasDirectBesideLink) {
5063
5170
  ctx.addIssue({ code: external_exports.ZodIssueCode.custom, message: "Provide either an organization credential link or direct credential fields, not both" });
5064
5171
  }
5065
5172
  if (!hasOrgLink && !hasDirect) {
@@ -5181,108 +5288,6 @@ var init_chunk_GK27ENTT = __esm({
5181
5288
  }
5182
5289
  });
5183
5290
 
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
5291
  // ../../packages/core/dist/chunk-GPM7PE44.js
5287
5292
  var bootstrapQuery;
5288
5293
  var init_chunk_GPM7PE44 = __esm({
@@ -5517,6 +5522,34 @@ var init_chunk_ZVXO3XL6 = __esm({
5517
5522
  }
5518
5523
  });
5519
5524
 
5525
+ // ../../packages/core/dist/chunk-ZXK6N2HN.js
5526
+ 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;
5527
+ var init_chunk_ZXK6N2HN = __esm({
5528
+ "../../packages/core/dist/chunk-ZXK6N2HN.js"() {
5529
+ "use strict";
5530
+ init_chunk_ZVXO3XL6();
5531
+ init_chunk_HZ6CADSY();
5532
+ init_zod();
5533
+ PEOPLE_MODERATION_NOTE_MAX_LENGTH = 500;
5534
+ ADMIN_PEOPLE_REPORTS_PAGE_MAX = 100;
5535
+ ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT = 50;
5536
+ PEOPLE_SUSPENDED_REASON = "suspended";
5537
+ peopleModerationActionSchema = external_exports.enum(["remove_message", "suspend", "unsuspend", "dismiss"]);
5538
+ moderationNoteSchema = optionalTrimmedText(PEOPLE_MODERATION_NOTE_MAX_LENGTH);
5539
+ adminPeopleReportListQuery = external_exports.object({
5540
+ pending: external_exports.enum(["true", "false"]).optional().transform((value) => value === "true"),
5541
+ /** Lower bound on `created_at`. */
5542
+ since: timestampSchema.optional(),
5543
+ limit: external_exports.coerce.number().int().min(1).max(ADMIN_PEOPLE_REPORTS_PAGE_MAX).default(ADMIN_PEOPLE_REPORTS_PAGE_DEFAULT),
5544
+ offset: external_exports.coerce.number().int().min(0).default(0)
5545
+ });
5546
+ adminPeopleReportIdParam = external_exports.object({ reportId: uuidSchema });
5547
+ adminPeopleMessageRemovalBody = external_exports.object({ report_id: uuidSchema, message_id: uuidSchema.optional(), note: moderationNoteSchema }).strict();
5548
+ adminPeopleSuspendBody = external_exports.object({ report_id: uuidSchema.optional(), note: moderationNoteSchema }).strict();
5549
+ adminPeopleNoteBody = external_exports.object({ note: moderationNoteSchema }).strict();
5550
+ }
5551
+ });
5552
+
5520
5553
  // ../../packages/core/dist/chunk-Y7CFCYX4.js
5521
5554
  var PEOPLE_REPORT_DETAILS_MAX_LENGTH, peopleReportReasonSchema, reportDetailsSchema, reportFields, peopleReportBody;
5522
5555
  var init_chunk_Y7CFCYX4 = __esm({
@@ -5572,10 +5605,10 @@ var init_chunk_5DGHIY7L = __esm({
5572
5605
  }
5573
5606
  });
5574
5607
 
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"() {
5608
+ // ../../packages/core/dist/chunk-5XEJSR22.js
5609
+ 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;
5610
+ var init_chunk_5XEJSR22 = __esm({
5611
+ "../../packages/core/dist/chunk-5XEJSR22.js"() {
5579
5612
  "use strict";
5580
5613
  DATA_PROXY_MOUNT = "/data";
5581
5614
  DATA_PROXY_PREFIX = `/api${DATA_PROXY_MOUNT}`;
@@ -5585,10 +5618,11 @@ var init_chunk_F3JHI4Y4 = __esm({
5585
5618
  COMMUNITY_EMAIL_UNSUBSCRIBE_PATH = "/api/communities/email-unsubscribe";
5586
5619
  CONTACT_BOOK_EMAIL_UNSUBSCRIBE_PATH = "/api/contact-book/email-unsubscribe";
5587
5620
  AUTOMATION_WEBHOOK_MOUNT = "/webhooks/automations";
5621
+ MANAGED_AGENTS_WEBHOOK_MOUNT = "/webhooks/managed-agents";
5588
5622
  }
5589
5623
  });
5590
5624
 
5591
- // ../../packages/core/dist/chunk-IEWJ5MZH.js
5625
+ // ../../packages/core/dist/chunk-ISFDR7SP.js
5592
5626
  function matchPath(pattern, path42) {
5593
5627
  const normalizedPath = path42.replace(/\/$/, "");
5594
5628
  if (pattern.endsWith("/*")) {
@@ -5616,10 +5650,10 @@ function getEndpointConfig(path42) {
5616
5650
  return { tier: "STANDARD" };
5617
5651
  }
5618
5652
  var ENDPOINT_CONFIGS, EXCLUDED_PATHS;
5619
- var init_chunk_IEWJ5MZH = __esm({
5620
- "../../packages/core/dist/chunk-IEWJ5MZH.js"() {
5653
+ var init_chunk_ISFDR7SP = __esm({
5654
+ "../../packages/core/dist/chunk-ISFDR7SP.js"() {
5621
5655
  "use strict";
5622
- init_chunk_F3JHI4Y4();
5656
+ init_chunk_5XEJSR22();
5623
5657
  ENDPOINT_CONFIGS = {
5624
5658
  // OAuth callbacks - strict, fail-closed (prevent brute force)
5625
5659
  "/oauth/callback/*": { tier: "STRICT", failClosed: true },
@@ -5774,6 +5808,8 @@ var init_chunk_IEWJ5MZH = __esm({
5774
5808
  // platform's egress addresses carry many tenants' deliveries. The per-automation budget is
5775
5809
  // `AUTOMATION_WEBHOOK_PER_AUTOMATION_LIMIT`, counted after the delivery is verified.
5776
5810
  [`${AUTOMATION_WEBHOOK_MOUNT}/*`]: { tier: "HIGH" },
5811
+ // Managed Agents session events (#5083 Phase 4): HIGH, one vendor address carries many tenants'.
5812
+ [`${MANAGED_AGENTS_WEBHOOK_MOUNT}/*`]: { tier: "HIGH" },
5777
5813
  // Reports (CLI → platform_report triage queue). One per-user budget covers intake
5778
5814
  // (POST), the content edit (PATCH /:id), the reporter read-back (GET, GET /:id), and the
5779
5815
  // verification loop (POST /:id/accept, /:id/contest). The limiter is path-based, so a
@@ -6082,7 +6118,7 @@ var init_chunk_IEWJ5MZH = __esm({
6082
6118
  }
6083
6119
  });
6084
6120
 
6085
- // ../../packages/core/dist/chunk-CGOLULK2.js
6121
+ // ../../packages/core/dist/chunk-FNNHGL7K.js
6086
6122
  function fileSnapshotChanged(run) {
6087
6123
  return run.written + run.removed > 0;
6088
6124
  }
@@ -6123,11 +6159,11 @@ async function sendWithRetry(opts, cursor) {
6123
6159
  }
6124
6160
  }
6125
6161
  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"() {
6162
+ var init_chunk_FNNHGL7K = __esm({
6163
+ "../../packages/core/dist/chunk-FNNHGL7K.js"() {
6128
6164
  "use strict";
6129
- init_chunk_IEWJ5MZH();
6130
- init_chunk_F3JHI4Y4();
6165
+ init_chunk_ISFDR7SP();
6166
+ init_chunk_5XEJSR22();
6131
6167
  init_zod();
6132
6168
  rekorFileSnapshotAnswerSchema = external_exports.object({
6133
6169
  data: external_exports.object({
@@ -6531,6 +6567,20 @@ var init_chunk_YUZFHVB2 = __esm({
6531
6567
  }
6532
6568
  });
6533
6569
 
6570
+ // ../../packages/core/dist/chunk-I3O2RACG.js
6571
+ var managedAgentsWebhookParams, MANAGED_AGENTS_WEBHOOK_BODY_MAX_BYTES;
6572
+ var init_chunk_I3O2RACG = __esm({
6573
+ "../../packages/core/dist/chunk-I3O2RACG.js"() {
6574
+ "use strict";
6575
+ init_zod();
6576
+ managedAgentsWebhookParams = external_exports.object({
6577
+ hub_id: external_exports.string().uuid(),
6578
+ connection_id: external_exports.string().uuid()
6579
+ });
6580
+ MANAGED_AGENTS_WEBHOOK_BODY_MAX_BYTES = 16 * 1024;
6581
+ }
6582
+ });
6583
+
6534
6584
  // ../../packages/core/dist/chunk-34LE6P7E.js
6535
6585
  var templateIdParam, listTemplatesQuery, deleteTemplateQuery, templateStatusQuery, createTemplateBody, updateTemplateBody, submitTemplateBody, testTemplateBody;
6536
6586
  var init_chunk_34LE6P7E = __esm({
@@ -6606,34 +6656,6 @@ var init_chunk_FPSDNS2E = __esm({
6606
6656
  }
6607
6657
  });
6608
6658
 
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
6659
  // ../../packages/core/dist/chunk-MIWZOSPI.js
6638
6660
  function toIso(epochMs) {
6639
6661
  return new Date(epochMs).toISOString();
@@ -6789,7 +6811,7 @@ var init_chunk_E4DIIOOE = __esm({
6789
6811
  }
6790
6812
  });
6791
6813
 
6792
- // ../../packages/core/dist/chunk-4MXPUC6I.js
6814
+ // ../../packages/core/dist/chunk-OGXIPFQY.js
6793
6815
  function spokenLineField(label, description2) {
6794
6816
  return { type: "text", label, maxLength: SPOKEN_LINE_MAX_CHARS, default: "", description: description2 };
6795
6817
  }
@@ -6799,8 +6821,8 @@ function byLowercaseName(a, b) {
6799
6821
  return x < y ? -1 : x > y ? 1 : 0;
6800
6822
  }
6801
6823
  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"() {
6824
+ var init_chunk_OGXIPFQY = __esm({
6825
+ "../../packages/core/dist/chunk-OGXIPFQY.js"() {
6804
6826
  "use strict";
6805
6827
  CALLER_LANGUAGE = "caller";
6806
6828
  TTS_VOICE_REPLY_ENABLED_FIELD = {
@@ -6838,7 +6860,7 @@ var init_chunk_4MXPUC6I = __esm({
6838
6860
  { value: "agent", label: "Agent (private to this agent)" }
6839
6861
  ],
6840
6862
  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."
6863
+ 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
6864
  },
6843
6865
  sandbox_network: {
6844
6866
  type: "select",
@@ -7664,12 +7686,12 @@ var init_chunk_4MXPUC6I = __esm({
7664
7686
  // The managed session is conversation-lifetime and is NOT reaped at this deadline.
7665
7687
  max_session_minutes: { type: "number", label: "Max Turn (minutes)", min: 1, max: 480, default: 60, description: "Hard cap on a single turn's drain wall-clock, and the bound on the per-turn harness token TTL. The managed session itself lives for the conversation \u2014 it is not reaped at this deadline." },
7666
7688
  ...HARNESS_EGRESS_FIELDS,
7667
- // repo_url only, with no `repo_branch`. The Managed Agents
7668
- // `github_repository` resource exposes no branch/ref/checkout field, so a
7669
- // `repo_branch` setting could not be honoured; per this connector's own rule it is
7670
- // ABSENT rather than silently ignored. Working on a non-default branch is an
7671
- // agent-instruction concern (the agent checks out via git / the GitHub MCP server).
7672
- repo_url: { type: "text", label: "Repository URL", description: "Optional git repository cloned into the managed workspace at session start. The managed API clones the DEFAULT branch and exposes no branch setting \u2014 to work on another branch, instruct the agent to check it out." },
7689
+ // repo_url only, with no `repo_branch`: the session clones the default branch. The
7690
+ // vendor's `github_repository` resource now takes a `checkout` (branch or commit,
7691
+ // platform.claude.com/docs/en/managed-agents/github, 2026-10-19); a branch setting is
7692
+ // left to the "work on a repository" agent template (wayai-pro/wayai#5083 Phase 4).
7693
+ // Until then, working on another branch is an agent-instruction concern.
7694
+ repo_url: { type: "text", label: "Repository URL", description: "Optional GitHub repository (https://github.com/<owner>/<repo>) cloned into the managed workspace at session start. Needs the connection's GitHub App installed on it. The DEFAULT branch is cloned \u2014 to work on another branch, instruct the agent to check it out." },
7673
7695
  ...COPILOT_TRIGGER_FIELD
7674
7696
  },
7675
7697
  channel_settings_schema: null,
@@ -7678,7 +7700,9 @@ var init_chunk_4MXPUC6I = __esm({
7678
7700
  api_key: {
7679
7701
  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
7702
  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__" }
7703
+ github_app_id: { type: "password", label: "GitHub App ID (Optional)", placeholder: "Your GitHub App's App ID", description: "Optional: the App ID of your organization's GitHub App, for agents with a Repository URL. Each session gets a one-hour token for its one repository, with contents and pull requests access only.", maskInEdit: true, useExistingPlaceholder: "__USE_EXISTING_GITHUB_APP_ID__" },
7704
+ github_app_private_key: { type: "password", label: "GitHub App Private Key (Optional)", placeholder: "-----BEGIN RSA PRIVATE KEY-----", description: "Optional: the private key (.pem) GitHub generated for that App. It stays in WayAI: only each session's one-hour token reaches Anthropic.", maskInEdit: true, useExistingPlaceholder: "__USE_EXISTING_GITHUB_APP_PRIVATE_KEY__" },
7705
+ 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
7706
  }
7683
7707
  },
7684
7708
  token_refresh_config: { api_key: { strategy: "none" } },
@@ -7764,13 +7788,13 @@ var init_chunk_4MXPUC6I = __esm({
7764
7788
  }
7765
7789
  });
7766
7790
 
7767
- // ../../packages/core/dist/chunk-NTJMGSSO.js
7791
+ // ../../packages/core/dist/chunk-QZZ3OHLV.js
7768
7792
  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"() {
7793
+ var init_chunk_QZZ3OHLV = __esm({
7794
+ "../../packages/core/dist/chunk-QZZ3OHLV.js"() {
7771
7795
  "use strict";
7772
7796
  init_chunk_E4DIIOOE();
7773
- init_chunk_4MXPUC6I();
7797
+ init_chunk_OGXIPFQY();
7774
7798
  init_chunk_HZ6CADSY();
7775
7799
  init_chunk_MIWZOSPI();
7776
7800
  init_zod();
@@ -8137,15 +8161,15 @@ var init_chunk_MH4O3YEX = __esm({
8137
8161
  }
8138
8162
  });
8139
8163
 
8140
- // ../../packages/core/dist/chunk-CWUV6NL3.js
8164
+ // ../../packages/core/dist/chunk-UZ7SPBM3.js
8141
8165
  function catalogToolSideEffects(toolName) {
8142
8166
  const sideEffects = CATALOG_SIDE_EFFECTS.get(toolName);
8143
8167
  if (sideEffects === void 0) return "unknown";
8144
8168
  return sideEffects ? "side_effects" : "none";
8145
8169
  }
8146
8170
  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"() {
8171
+ var init_chunk_UZ7SPBM3 = __esm({
8172
+ "../../packages/core/dist/chunk-UZ7SPBM3.js"() {
8149
8173
  "use strict";
8150
8174
  init_chunk_DHPUPI4Y();
8151
8175
  NATIVE_TOOL_SCHEMAS = {
@@ -8466,7 +8490,7 @@ var init_chunk_CWUV6NL3 = __esm({
8466
8490
  "bash": {
8467
8491
  "tool_config": {
8468
8492
  "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.",
8493
+ "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
8494
  "strict": false,
8471
8495
  "parameters": {
8472
8496
  "type": "object",
@@ -8493,7 +8517,7 @@ var init_chunk_CWUV6NL3 = __esm({
8493
8517
  "copy_to_sandbox": {
8494
8518
  "tool_config": {
8495
8519
  "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.`,
8520
+ "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
8521
  "strict": false,
8498
8522
  "parameters": {
8499
8523
  "type": "object",
@@ -9465,7 +9489,7 @@ var init_chunk_T7KQKDET = __esm({
9465
9489
  }
9466
9490
  });
9467
9491
 
9468
- // ../../packages/core/dist/chunk-7PJOBY4O.js
9492
+ // ../../packages/core/dist/chunk-XOGFONTQ.js
9469
9493
  function resolveMonitorTrigger(monitorConfig) {
9470
9494
  if (!monitorConfig || typeof monitorConfig !== "object") return "idle";
9471
9495
  const raw = monitorConfig.trigger;
@@ -9771,10 +9795,10 @@ function refineMonitorRulesStructuredOutput(body, ctx) {
9771
9795
  if (refusal2) ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["response_format"], message: refusal2 });
9772
9796
  }
9773
9797
  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"() {
9798
+ var init_chunk_XOGFONTQ = __esm({
9799
+ "../../packages/core/dist/chunk-XOGFONTQ.js"() {
9776
9800
  "use strict";
9777
- init_chunk_CWUV6NL3();
9801
+ init_chunk_UZ7SPBM3();
9778
9802
  init_chunk_IBL7FANV();
9779
9803
  init_chunk_PFDZEKDE();
9780
9804
  init_chunk_HZ6CADSY();
@@ -9997,12 +10021,12 @@ var init_chunk_7PJOBY4O = __esm({
9997
10021
  }
9998
10022
  });
9999
10023
 
10000
- // ../../packages/core/dist/chunk-CYBQP65X.js
10024
+ // ../../packages/core/dist/chunk-TUP5Y6ZB.js
10001
10025
  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"() {
10026
+ var init_chunk_TUP5Y6ZB = __esm({
10027
+ "../../packages/core/dist/chunk-TUP5Y6ZB.js"() {
10004
10028
  "use strict";
10005
- init_chunk_7PJOBY4O();
10029
+ init_chunk_XOGFONTQ();
10006
10030
  init_chunk_HZ6CADSY();
10007
10031
  init_chunk_DHPUPI4Y();
10008
10032
  init_zod();
@@ -10458,7 +10482,7 @@ var init_chunk_BPCNB5RT = __esm({
10458
10482
  }
10459
10483
  });
10460
10484
 
10461
- // ../../packages/core/dist/chunk-NRJINQVD.js
10485
+ // ../../packages/core/dist/chunk-LQSENJ26.js
10462
10486
  function idempotencyHeaderRefusal(value) {
10463
10487
  if (typeof value !== "string" || !/^[A-Za-z0-9][A-Za-z0-9-]{0,63}$/.test(value)) {
10464
10488
  return "idempotency_header must be a header name: letters, digits and dashes, at most 64";
@@ -10469,10 +10493,10 @@ function idempotencyHeaderRefusal(value) {
10469
10493
  return null;
10470
10494
  }
10471
10495
  var CATALOG_REPLAY, REPLAY_OVERRIDES, RESERVED_HEADERS;
10472
- var init_chunk_NRJINQVD = __esm({
10473
- "../../packages/core/dist/chunk-NRJINQVD.js"() {
10496
+ var init_chunk_LQSENJ26 = __esm({
10497
+ "../../packages/core/dist/chunk-LQSENJ26.js"() {
10474
10498
  "use strict";
10475
- init_chunk_CWUV6NL3();
10499
+ init_chunk_UZ7SPBM3();
10476
10500
  CATALOG_REPLAY = new Map(
10477
10501
  NATIVE_TOOLS.map((tool) => [tool.tool_name, tool.replay])
10478
10502
  );
@@ -10705,7 +10729,7 @@ var init_chunk_WEXVYJ5H = __esm({
10705
10729
  }
10706
10730
  });
10707
10731
 
10708
- // ../../packages/core/dist/chunk-QXHWCZ74.js
10732
+ // ../../packages/core/dist/chunk-KRGVB7U6.js
10709
10733
  function refineToolConfig(value, ctx) {
10710
10734
  const raw = value.tool_config;
10711
10735
  if (raw == null) return;
@@ -10741,10 +10765,10 @@ function refineToolConfig(value, ctx) {
10741
10765
  }
10742
10766
  }
10743
10767
  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"() {
10768
+ var init_chunk_KRGVB7U6 = __esm({
10769
+ "../../packages/core/dist/chunk-KRGVB7U6.js"() {
10746
10770
  "use strict";
10747
- init_chunk_NRJINQVD();
10771
+ init_chunk_LQSENJ26();
10748
10772
  init_chunk_WEXVYJ5H();
10749
10773
  init_chunk_HZ6CADSY();
10750
10774
  init_zod();
@@ -12116,7 +12140,7 @@ var init_chunk_6NI5RAM4 = __esm({
12116
12140
  }
12117
12141
  });
12118
12142
 
12119
- // ../../packages/core/dist/chunk-QJTHNMWD.js
12143
+ // ../../packages/core/dist/chunk-RT35VFUY.js
12120
12144
  function refineHubAsCodeCustomTools(config, ctx) {
12121
12145
  const agents = config.agents;
12122
12146
  if (!Array.isArray(agents)) return;
@@ -12652,12 +12676,12 @@ function refineHubAsCodeMonitorRulesOutput(config, ctx) {
12652
12676
  });
12653
12677
  }
12654
12678
  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"() {
12679
+ var init_chunk_RT35VFUY = __esm({
12680
+ "../../packages/core/dist/chunk-RT35VFUY.js"() {
12657
12681
  "use strict";
12658
- init_chunk_QXHWCZ74();
12682
+ init_chunk_KRGVB7U6();
12659
12683
  init_chunk_623SRYWZ();
12660
- init_chunk_7PJOBY4O();
12684
+ init_chunk_XOGFONTQ();
12661
12685
  init_chunk_LBDH7LCG();
12662
12686
  init_chunk_4LXDRTO4();
12663
12687
  init_chunk_T4Q5COKJ();
@@ -13666,15 +13690,15 @@ var init_chunk_LQY2OCQL = __esm({
13666
13690
  }
13667
13691
  });
13668
13692
 
13669
- // ../../packages/core/dist/chunk-UWFYCJCK.js
13693
+ // ../../packages/core/dist/chunk-2VTDOH67.js
13670
13694
  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"() {
13695
+ var init_chunk_2VTDOH67 = __esm({
13696
+ "../../packages/core/dist/chunk-2VTDOH67.js"() {
13673
13697
  "use strict";
13674
13698
  init_chunk_LQY2OCQL();
13675
- init_chunk_7PJOBY4O();
13699
+ init_chunk_XOGFONTQ();
13676
13700
  init_chunk_3HSB6J4J();
13677
- init_chunk_F3JHI4Y4();
13701
+ init_chunk_5XEJSR22();
13678
13702
  init_chunk_DHPUPI4Y();
13679
13703
  init_chunk_T7KQKDET();
13680
13704
  init_zod();
@@ -14917,29 +14941,30 @@ var init_chunk_TS4EYU3W = __esm({
14917
14941
  var init_contracts = __esm({
14918
14942
  "../../packages/core/dist/contracts/index.js"() {
14919
14943
  "use strict";
14944
+ init_chunk_SXDX4GHS();
14920
14945
  init_chunk_FK6HBXM7();
14921
14946
  init_chunk_VXEAR36B();
14922
14947
  init_chunk_TIZ57ZBA();
14923
14948
  init_chunk_Q7KIQHAZ();
14924
- init_chunk_2U4BTOR7();
14949
+ init_chunk_WBFLPPDI();
14925
14950
  init_chunk_IPXBFWUU();
14926
14951
  init_chunk_GK27ENTT();
14927
- init_chunk_SXDX4GHS();
14928
14952
  init_chunk_GPM7PE44();
14929
14953
  init_chunk_DGKMMFIR();
14930
14954
  init_chunk_ZC6YGHNX();
14931
14955
  init_chunk_ACKF2MVU();
14956
+ init_chunk_ZXK6N2HN();
14932
14957
  init_chunk_Y7CFCYX4();
14933
14958
  init_chunk_5DGHIY7L();
14934
- init_chunk_CGOLULK2();
14959
+ init_chunk_FNNHGL7K();
14935
14960
  init_chunk_4MRBBR5L();
14936
14961
  init_chunk_BEOHBREG();
14937
14962
  init_chunk_IPDOHAZ5();
14938
14963
  init_chunk_YUZFHVB2();
14964
+ init_chunk_I3O2RACG();
14939
14965
  init_chunk_34LE6P7E();
14940
14966
  init_chunk_FPSDNS2E();
14941
- init_chunk_ZXK6N2HN();
14942
- init_chunk_NTJMGSSO();
14967
+ init_chunk_QZZ3OHLV();
14943
14968
  init_chunk_C4HEZ7ZI();
14944
14969
  init_chunk_IR2NOSI3();
14945
14970
  init_chunk_EA23LSDS();
@@ -14947,12 +14972,12 @@ var init_contracts = __esm({
14947
14972
  init_chunk_LWMLR2WI();
14948
14973
  init_chunk_ACGAI25T();
14949
14974
  init_chunk_MH4O3YEX();
14950
- init_chunk_CYBQP65X();
14975
+ init_chunk_TUP5Y6ZB();
14951
14976
  init_chunk_KSTYTQ7I();
14952
14977
  init_chunk_LKBSHANA();
14953
14978
  init_chunk_BPCNB5RT();
14954
- init_chunk_QJTHNMWD();
14955
- init_chunk_QXHWCZ74();
14979
+ init_chunk_RT35VFUY();
14980
+ init_chunk_KRGVB7U6();
14956
14981
  init_chunk_623SRYWZ();
14957
14982
  init_chunk_JDJ4EUOL();
14958
14983
  init_chunk_3KYTITOR();
@@ -14962,9 +14987,9 @@ var init_contracts = __esm({
14962
14987
  init_chunk_YULHXJ5M();
14963
14988
  init_chunk_V4FRPRH5();
14964
14989
  init_chunk_ZHJEQBXJ();
14965
- init_chunk_UWFYCJCK();
14990
+ init_chunk_2VTDOH67();
14966
14991
  init_chunk_LQY2OCQL();
14967
- init_chunk_7PJOBY4O();
14992
+ init_chunk_XOGFONTQ();
14968
14993
  init_chunk_3HSB6J4J();
14969
14994
  init_chunk_IG6QBZMA();
14970
14995
  init_chunk_ZJJ5ODOD();
@@ -14973,9 +14998,9 @@ var init_contracts = __esm({
14973
14998
  init_chunk_4LXDRTO4();
14974
14999
  init_chunk_E4DIIOOE();
14975
15000
  init_chunk_7CYHPF35();
14976
- init_chunk_4MXPUC6I();
14977
- init_chunk_NRJINQVD();
14978
- init_chunk_CWUV6NL3();
15001
+ init_chunk_OGXIPFQY();
15002
+ init_chunk_LQSENJ26();
15003
+ init_chunk_UZ7SPBM3();
14979
15004
  init_chunk_NVKU5PPQ();
14980
15005
  init_chunk_2FCLSQSQ();
14981
15006
  init_chunk_FECLIZTY();
@@ -14988,11 +15013,11 @@ var init_contracts = __esm({
14988
15013
  init_chunk_OMPT4ZHR();
14989
15014
  init_chunk_2PZIF56U();
14990
15015
  init_chunk_UEJOG2Q7();
14991
- init_chunk_IEWJ5MZH();
15016
+ init_chunk_ISFDR7SP();
14992
15017
  init_chunk_SOJMWM63();
14993
15018
  init_chunk_WEXVYJ5H();
14994
15019
  init_chunk_LZDVDC2S();
14995
- init_chunk_F3JHI4Y4();
15020
+ init_chunk_5XEJSR22();
14996
15021
  init_chunk_IBL7FANV();
14997
15022
  init_chunk_PFDZEKDE();
14998
15023
  init_chunk_VORPHGDT();
@@ -16316,11 +16341,11 @@ var UUID_RE2, WAYAI_WORKSPACE_LAYOUT;
16316
16341
  var init_dist = __esm({
16317
16342
  "../../packages/core/dist/index.js"() {
16318
16343
  "use strict";
16319
- init_chunk_IEWJ5MZH();
16344
+ init_chunk_ISFDR7SP();
16320
16345
  init_chunk_SOJMWM63();
16321
16346
  init_chunk_WEXVYJ5H();
16322
16347
  init_chunk_LZDVDC2S();
16323
- init_chunk_F3JHI4Y4();
16348
+ init_chunk_5XEJSR22();
16324
16349
  init_chunk_IBL7FANV();
16325
16350
  init_chunk_PFDZEKDE();
16326
16351
  init_chunk_P3AWZG3N();
@@ -21859,6 +21884,7 @@ var init_types2 = __esm({
21859
21884
  ENTITY_KINDS = [
21860
21885
  "record_types",
21861
21886
  "relationship_types",
21887
+ "file_types",
21862
21888
  "inbound_webhooks",
21863
21889
  "triggers",
21864
21890
  "toolsets",
@@ -21868,6 +21894,7 @@ var init_types2 = __esm({
21868
21894
  ENTITY_DIRS = {
21869
21895
  record_types: "record-types",
21870
21896
  relationship_types: "relationship-types",
21897
+ file_types: "file-types",
21871
21898
  inbound_webhooks: "inbound-webhooks",
21872
21899
  triggers: "triggers",
21873
21900
  toolsets: "toolsets",
@@ -22004,6 +22031,7 @@ var init_config_writer = __esm({
22004
22031
  "target_record_types",
22005
22032
  "cascade"
22006
22033
  ],
22034
+ file_types: ["id", "name", "description", "icon", "color", "max_size", "allowed_content_types", "metadata_schema"],
22007
22035
  inbound_webhooks: [
22008
22036
  "id",
22009
22037
  "name",
@@ -22157,9 +22185,12 @@ function parseBaseFolder(folder) {
22157
22185
  );
22158
22186
  }
22159
22187
  const read = (kind) => readEntityDir(folder, path22.join(folder, ENTITY_DIRS[kind]));
22188
+ const fileTypesDir = path22.join(folder, ENTITY_DIRS.file_types);
22189
+ const fileTypes = readEntityDir(folder, fileTypesDir);
22160
22190
  const config = {
22161
22191
  record_types: read("record_types"),
22162
22192
  relationship_types: read("relationship_types"),
22193
+ ...isDirectory(fileTypesDir) ? { file_types: fileTypes } : {},
22163
22194
  inbound_webhooks: read("inbound_webhooks"),
22164
22195
  triggers: read("triggers"),
22165
22196
  toolsets: read("toolsets"),
@@ -22189,10 +22220,15 @@ function isEmptyBucket(b) {
22189
22220
  function isDiffEmpty(diff) {
22190
22221
  return ENTITY_KINDS.every((kind) => isEmptyBucket(bucket(diff, kind)));
22191
22222
  }
22223
+ function isPrunable(id) {
22224
+ return isPathSafeId(id);
22225
+ }
22192
22226
  function collectRemovals(diff) {
22193
22227
  const out = [];
22194
22228
  for (const kind of ENTITY_KINDS) {
22195
- for (const entity of bucket(diff, kind)?.removed ?? []) out.push({ kind, id: entity.id });
22229
+ for (const entity of bucket(diff, kind)?.removed ?? []) {
22230
+ if (isPrunable(entity.id)) out.push({ kind, id: entity.id });
22231
+ }
22196
22232
  }
22197
22233
  return out;
22198
22234
  }
@@ -22205,7 +22241,7 @@ function countChanges(diff) {
22205
22241
  if (!b) continue;
22206
22242
  added += b.added.length;
22207
22243
  modified += b.modified.length;
22208
- removed += b.removed.length;
22244
+ removed += b.removed.filter((e) => isPrunable(e.id)).length;
22209
22245
  }
22210
22246
  return { added, modified, removed };
22211
22247
  }
@@ -22217,7 +22253,11 @@ function renderDiff(diff) {
22217
22253
  lines.push(`${BOLD}${LABELS[kind]}s${RESET}`);
22218
22254
  for (const e of b.added) lines.push(`${GREEN} + ${sanitizeTerminalText(e.id)}${RESET}`);
22219
22255
  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}`);
22256
+ for (const e of b.removed) {
22257
+ lines.push(
22258
+ isPrunable(e.id) ? `${RED} - ${sanitizeTerminalText(e.id)}${RESET}` : `${YELLOW} = ${sanitizeTerminalText(e.id)} (kept: pull cannot write its id to a file)${RESET}`
22259
+ );
22260
+ }
22221
22261
  }
22222
22262
  const { added, modified, removed } = countChanges(diff);
22223
22263
  lines.push("");
@@ -22226,7 +22266,7 @@ function renderDiff(diff) {
22226
22266
  );
22227
22267
  if (removed > 0) {
22228
22268
  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}`
22269
+ `${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
22270
  );
22231
22271
  }
22232
22272
  return lines.join("\n");
@@ -22236,10 +22276,12 @@ var init_diff_format = __esm({
22236
22276
  "src/data/config-as-code/diff-format.ts"() {
22237
22277
  "use strict";
22238
22278
  init_terminal_output();
22279
+ init_base_id();
22239
22280
  init_types2();
22240
22281
  LABELS = {
22241
22282
  record_types: "record type",
22242
22283
  relationship_types: "relationship type",
22284
+ file_types: "file type",
22243
22285
  inbound_webhooks: "inbound webhook",
22244
22286
  triggers: "trigger",
22245
22287
  toolsets: "toolset",
@@ -22461,7 +22503,7 @@ ${RED}${removals.length} ${word} not in your files were left on the base. Re-run
22461
22503
  );
22462
22504
  } else if (autoConfirm || await confirm(
22463
22505
  `
22464
- Delete ${removals.length} server ${word} not in your files? Record types cascade to their records.`
22506
+ Delete ${removals.length} server ${word} not in your files? Record types cascade to their records, file types to their files.`
22465
22507
  )) {
22466
22508
  for (const removal of removals) {
22467
22509
  await deleteEntity(client, baseId2, removal.kind, removal.id);
@@ -32585,7 +32627,7 @@ var init_set_connection_credential = __esm({
32585
32627
  init_workspace();
32586
32628
  init_utils();
32587
32629
  init_push();
32588
- VALID_FIELDS = ["api_key", "access_token", "password", "refresh_token", "webhook_secret_token", "username"];
32630
+ VALID_FIELDS = ["api_key", "access_token", "password", "refresh_token", "webhook_secret_token", "username", "github_app_id", "github_app_private_key"];
32589
32631
  }
32590
32632
  });
32591
32633
 
@@ -34816,6 +34858,7 @@ function metadataValue(value) {
34816
34858
  function fileWriteHeaders(opts) {
34817
34859
  const headers = {};
34818
34860
  if (opts.ifMatch !== void 0) headers["If-Match"] = ifMatchValue(opts.ifMatch);
34861
+ if (opts.createOnly) headers["If-None-Match"] = "*";
34819
34862
  if (opts.label !== void 0) headers["X-Data-Label"] = labelValue(opts.label);
34820
34863
  if (opts.metadata !== void 0) headers["X-Data-Metadata"] = metadataValue(opts.metadata);
34821
34864
  return headers;
@@ -35314,9 +35357,9 @@ var COUNTER_KEYS, STT_PRICING, CONTAINER_PRICING, connectorById, nativeToolById;
35314
35357
  var init_catalog = __esm({
35315
35358
  "../../packages/core/dist/catalog/index.js"() {
35316
35359
  "use strict";
35317
- init_chunk_4MXPUC6I();
35318
- init_chunk_NRJINQVD();
35319
- init_chunk_CWUV6NL3();
35360
+ init_chunk_OGXIPFQY();
35361
+ init_chunk_LQSENJ26();
35362
+ init_chunk_UZ7SPBM3();
35320
35363
  init_chunk_MIWZOSPI();
35321
35364
  init_chunk_DHPUPI4Y();
35322
35365
  COUNTER_KEYS = Object.keys({
@@ -40547,7 +40590,7 @@ Push ${n} change${n === 1 ? "" : "s"} to ${describeSync(target)}?`, opts.yes)) {
40547
40590
  path42,
40548
40591
  bytes,
40549
40592
  contentType,
40550
- fileWriteHeaders({ ifMatch: step.op === "update" ? step.ifMatch : void 0, label })
40593
+ fileWriteHeaders({ ...step.op === "update" ? { ifMatch: step.ifMatch } : { createOnly: true }, label })
40551
40594
  );
40552
40595
  record.files[step.rel] = {
40553
40596
  version: typeof row?.version === "number" ? row.version : 0,
@@ -40561,7 +40604,8 @@ Push ${n} change${n === 1 ? "" : "s"} to ${describeSync(target)}?`, opts.yes)) {
40561
40604
  delete record.files[step.rel];
40562
40605
  } else if (isConflict(err)) {
40563
40606
  if (step.op === "delete") refusedDeletes.add(step.rel);
40564
- const conflict = { rel: step.rel, reason: "changed_while_pushing" };
40607
+ const reason = step.op === "create" && err.status === 412 ? "created_while_pushing" : "changed_while_pushing";
40608
+ const conflict = { rel: step.rel, reason };
40565
40609
  conflicts.push(conflict);
40566
40610
  console.log(` ! ${conflictLine(conflict, PUSH_CONFLICT)}`);
40567
40611
  continue;
@@ -40624,7 +40668,8 @@ var init_sync3 = __esm({
40624
40668
  exists_on_base: "created on the base since your last pull",
40625
40669
  case_twin: "differs only in case from the base's",
40626
40670
  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"
40671
+ changed_while_pushing: "changed on the base while pushing \u2014 not written",
40672
+ created_while_pushing: "created on the base while pushing \u2014 not written"
40628
40673
  };
40629
40674
  }
40630
40675
  });
@@ -40808,7 +40853,7 @@ function buildFilesCommand() {
40808
40853
  });
40809
40854
  });
40810
40855
  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"
40856
+ "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
40857
  ).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
40858
  const base = requireBase(this);
40814
40859
  await pushFiles({