@wayai/cli 0.3.212 → 0.3.213

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,31 +488,7 @@ var init_sentry = __esm({
488
488
  }
489
489
  });
490
490
 
491
- // ../../packages/core/dist/chunk-VORPHGDT.js
492
- var PERMISSIONS;
493
- var init_chunk_VORPHGDT = __esm({
494
- "../../packages/core/dist/chunk-VORPHGDT.js"() {
495
- "use strict";
496
- PERMISSIONS = [
497
- "hub:read",
498
- "hub:write",
499
- "hub:admin",
500
- "conversation:read",
501
- "conversation:write",
502
- "analytics:read",
503
- "billing:read",
504
- "billing:write",
505
- "org:read",
506
- "org:write",
507
- "org:admin",
508
- "contacts:write",
509
- "platform:admin",
510
- "*"
511
- ];
512
- }
513
- });
514
-
515
- // ../../packages/core/dist/chunk-POL7B3EM.js
491
+ // ../../packages/core/dist/chunk-5YF23MWO.js
516
492
  function spokenLineField(label, description2) {
517
493
  return { type: "text", label, maxLength: SPOKEN_LINE_MAX_CHARS, default: "", description: description2 };
518
494
  }
@@ -521,9 +497,9 @@ function byLowercaseName(a, b) {
521
497
  const y = b.connector_name.toLowerCase();
522
498
  return x < y ? -1 : x > y ? 1 : 0;
523
499
  }
524
- var CALLER_LANGUAGE, TTS_VOICE_REPLY_ENABLED_FIELD, COPILOT_TRIGGER_FIELD, 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, e2b, CLAUDE_HARNESS_MODELS, CLAUDE_HARNESS_MODEL_OPTIONS, HARNESS_MCP_SERVERS_FIELD, HARNESS_EGRESS_FIELDS, claudeAgentSdk, claudeManagedAgents, rekorMemory, SPOKEN_LINE_MAX_CHARS, gptLive, CONNECTORS;
525
- var init_chunk_POL7B3EM = __esm({
526
- "../../packages/core/dist/chunk-POL7B3EM.js"() {
500
+ var CALLER_LANGUAGE, TTS_VOICE_REPLY_ENABLED_FIELD, COPILOT_TRIGGER_FIELD, 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, CLAUDE_HARNESS_MODELS, CLAUDE_HARNESS_MODEL_OPTIONS, HARNESS_MCP_SERVERS_FIELD, HARNESS_EGRESS_FIELDS, claudeManagedAgents, SPOKEN_LINE_MAX_CHARS, gptLive, CONNECTORS;
501
+ var init_chunk_5YF23MWO = __esm({
502
+ "../../packages/core/dist/chunk-5YF23MWO.js"() {
527
503
  "use strict";
528
504
  CALLER_LANGUAGE = "caller";
529
505
  TTS_VOICE_REPLY_ENABLED_FIELD = {
@@ -1285,103 +1261,14 @@ var init_chunk_POL7B3EM = __esm({
1285
1261
  token_refresh_config: { bearer: { strategy: "none" }, oauth: { strategy: "refresh_token_flow", access_token: { refresh_window_hours: 1 }, refresh_token: { has_expiry: false } } },
1286
1262
  connector_description: "Connect to external MCP servers with a Bearer Token or OAuth 2.0 authentication. The protocol revision is negotiated per connection, so stateless (2026-07-28) and older servers both work without configuration."
1287
1263
  };
1288
- e2b = {
1289
- connector_id: "cc1bd8ca-e96e-4665-a44c-33223980d8c7",
1290
- service_name: "E2B",
1291
- connector_type: "Sandbox",
1292
- connector_name: "E2B",
1293
- authentication_types: ["api_key"],
1294
- init_endpoint: null,
1295
- unique_per_hub: true,
1296
- account_sid_placeholder: null,
1297
- models: null,
1298
- is_internal: true,
1299
- is_harness: false,
1300
- connector_module: "sandbox",
1301
- // enabled: true — the harness feature has shipped (sandbox driver + durable turn + channel
1302
- // delivery), so the Sandbox connector is now SELECTABLE. Creating/running an is_harness agent
1303
- // that uses it is STILL gated by the platform-wide rollout flag
1304
- // (assertHarnessAllowedForConnection, default-deny), so surfacing it platform-wide is safe: a
1305
- // Sandbox connection does nothing until a gated harness agent uses it.
1306
- enabled: true,
1307
- connector_settings_schema: {
1308
- region: { type: "text", label: "Region", default: "", description: "E2B region to provision sandboxes in (leave empty for the provider default).", placeholder: "us-east-1" },
1309
- // Validated at connection write time via a preflight call to E2B with THIS
1310
- // connection's own credentials — confirms the template exists in the
1311
- // connection's account and rejects cross-tenant references (PR 1.1).
1312
- default_template: { type: "text", label: "Default Template", default: "base", description: "E2B template ID new sandboxes start from. Must exist in this connection's own E2B account.", placeholder: "base" },
1313
- cpu_limit: { type: "number", label: "vCPU Limit", min: 1, max: 8, default: 2, description: "Max vCPUs per sandbox." },
1314
- memory_limit_mb: { type: "number", label: "Memory (MB)", min: 512, max: 8192, default: 2048, description: "Max memory per sandbox, in MB." }
1315
- },
1316
- agent_settings_schema: null,
1317
- channel_settings_schema: null,
1318
- tool_settings_schema: null,
1319
- connector_credential_schema: {
1320
- api_key: {
1321
- 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 },
1322
- api_key: { type: "password", label: "API Key", placeholder: "Enter your E2B API key", description: "Your E2B API key for provisioning sandboxes", required: true, maskInEdit: true, useExistingPlaceholder: "__USE_EXISTING_API_KEY__" }
1323
- }
1324
- },
1325
- token_refresh_config: { api_key: { strategy: "none" } },
1326
- connector_description: "Sandboxed Linux compute (Firecracker microVM) for harness agents \u2014 filesystem, shell, package installs, and arbitrary code execution."
1327
- };
1328
1264
  CLAUDE_HARNESS_MODELS = ["claude-opus-5-5", "claude-opus-4-8", "claude-opus-4-7", "claude-sonnet-5", "claude-sonnet-4-6", "claude-haiku-4-5"];
1329
1265
  CLAUDE_HARNESS_MODEL_OPTIONS = [{ value: "claude-opus-5-5", label: "Claude Opus 5.5" }, { value: "claude-opus-4-8", label: "Claude Opus 4.8" }, { value: "claude-opus-4-7", label: "Claude Opus 4.7" }, { value: "claude-sonnet-5", label: "Claude Sonnet 5" }, { value: "claude-sonnet-4-6", label: "Claude Sonnet 4.6" }, { value: "claude-haiku-4-5", label: "Claude Haiku 4.5" }];
1330
1266
  HARNESS_MCP_SERVERS_FIELD = {
1331
1267
  mcp_servers: { type: "array", itemType: "text", maxItems: 32, label: "MCP Servers", description: "MCP server connection IDs (on this hub) the agent may call from inside the sandbox." }
1332
1268
  };
1333
1269
  HARNESS_EGRESS_FIELDS = {
1334
- network_egress_policy: { type: "select", label: "Network Egress", options: [{ value: "allowlist", label: "Allowlist (deny-all unless listed)" }, { value: "isolated", label: "Isolated (control host only)" }, { value: "open", label: "Open (internet, SSRF ranges blocked)" }], default: "allowlist", description: "Sandbox egress posture (SSRF gate). Empty allowlist \u21D2 deny-all. The SSRF deny floor holds under every policy." },
1335
- network_egress_allowlist: { type: "array", itemType: "text", maxItems: 64, label: "Egress Allowlist", description: "Hosts/CIDRs reachable under Allowlist, or the single control host under Isolated. Ignored under Open." }
1336
- };
1337
- claudeAgentSdk = {
1338
- connector_id: "2a492e72-d009-48c5-82dc-57d8f1493b0e",
1339
- service_name: "ClaudeAgentSdk",
1340
- connector_type: "Agent",
1341
- connector_name: "Claude Agent (Sandbox)",
1342
- authentication_types: ["api_key"],
1343
- init_endpoint: null,
1344
- unique_per_hub: false,
1345
- account_sid_placeholder: null,
1346
- models: CLAUDE_HARNESS_MODELS,
1347
- is_internal: true,
1348
- is_harness: true,
1349
- connector_module: "harness",
1350
- enabled: true,
1351
- connector_settings_schema: null,
1352
- agent_settings_schema: {
1353
- model: { type: "select", label: "Model", allowCustomValue: true, options: CLAUDE_HARNESS_MODEL_OPTIONS, default: "claude-sonnet-5", description: "Claude model the in-sandbox agent loop drives.", required: true },
1354
- sandbox_connection_id: { type: "text", label: "Sandbox Connection", description: "The Sandbox (E2B) connection this agent runs inside. Must be a Sandbox connection on this same hub (re-validated when the session starts).", required: true },
1355
- base_image: { type: "text", label: "Base Image", description: "Sandbox template/image to boot from. Empty \u21D2 the Sandbox connection's own default template.", placeholder: "base" },
1356
- skills: { type: "array", itemType: "text", maxItems: 32, label: "Skills", description: "Skill packages to load into the agent (Claude Agent SDK skills)." },
1357
- ...HARNESS_MCP_SERVERS_FIELD,
1358
- max_session_minutes: { type: "number", label: "Max Session (minutes)", min: 1, max: 480, default: 60, description: "Hard cap on a single harness session's wall-clock life. The sandbox is reaped at this deadline." },
1359
- keep_alive_minutes: { type: "number", label: "Keep-Alive (minutes)", min: 0, max: 1440, default: 5, description: "Idle minutes before the sandbox is paused (0 = pause as soon as the turn ends)." },
1360
- ...HARNESS_EGRESS_FIELDS,
1361
- // No repo_url/repo_branch here: this sandbox harness never clones a repo (the
1362
- // runner task carries no repo field and the image runs no clone), so both settings
1363
- // could only be silently ignored. Same rule as the managed connector — a setting is
1364
- // ABSENT rather than accepted-and-dropped. Restore them together with an actual
1365
- // checkout in the runner, never ahead of one.
1366
- // Phase 4 Track B (shared memory, PR 4.1). Optional: a Memory (Rekor) connection
1367
- // on this same hub whose Base the agent mounts. WayAI holds the credential and
1368
- // does the signed I/O (materialize transport) — the credential never enters the
1369
- // sandbox. Empty memory_connection_id ⇒ no memory. Each mount pins a path prefix
1370
- // + access mode; WayAI maps hub/org scopes to Rekor paths (paths are opaque to Rekor).
1371
- memory_connection_id: { type: "text", label: "Memory Connection", description: "Optional Memory (Rekor) connection on this same hub whose Base the agent mounts for durable, cross-agent shared storage. Empty \u21D2 no memory." },
1372
- memory_mounts: { type: "array", itemType: "text", maxItems: 16, label: "Memory Mounts", description: 'Path mounts from the Memory Base, each `{ "prefix": "\u2026", "mode": "read_only"|"read_write" }` (JSON per item). Empty \u21D2 no memory.' },
1373
- ...COPILOT_TRIGGER_FIELD
1374
- },
1375
- channel_settings_schema: null,
1376
- tool_settings_schema: null,
1377
- connector_credential_schema: {
1378
- api_key: {
1379
- 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 },
1380
- api_key: { type: "password", label: "API Key", placeholder: "Enter your Anthropic API key", description: "Anthropic API key the in-sandbox agent uses (kept out of the sandbox via the WayAI gateway).", required: true, maskInEdit: true, useExistingPlaceholder: "__USE_EXISTING_API_KEY__" }
1381
- }
1382
- },
1383
- token_refresh_config: { api_key: { strategy: "none" } },
1384
- connector_description: "Harness agent powered by the Claude Agent SDK running in a sandbox (skills, MCP, context compaction). Delegates the full turn to an in-sandbox agent loop. Requires a Sandbox connection + an Anthropic API key."
1270
+ network_egress_policy: { type: "select", label: "Network Egress", options: [{ value: "allowlist", label: "Allowlist (deny-all unless listed)" }, { value: "isolated", label: "Isolated (control host only)" }, { value: "open", label: "Open (internet)" }], default: "allowlist", description: "Sandbox egress posture. Empty allowlist \u21D2 deny-all." },
1271
+ network_egress_allowlist: { type: "array", itemType: "text", maxItems: 64, label: "Egress Allowlist", description: "Hosts reachable under Allowlist, or the single control host under Isolated. Ignored under Open." }
1385
1272
  };
1386
1273
  claudeManagedAgents = {
1387
1274
  connector_id: "4b8eeecf-a835-444a-abed-516d0a29cee2",
@@ -1402,11 +1289,10 @@ var init_chunk_POL7B3EM = __esm({
1402
1289
  agent_settings_schema: {
1403
1290
  model: { type: "select", label: "Model", allowCustomValue: true, options: CLAUDE_HARNESS_MODEL_OPTIONS, default: "claude-sonnet-5", description: "Claude model the Anthropic-hosted managed agent loop drives.", required: true },
1404
1291
  ...HARNESS_MCP_SERVERS_FIELD,
1405
- // Same numeric bounds as the E2B entry, different semantics: on CMA the
1406
- // session is conversation-lifetime and is NOT reaped at this deadline.
1292
+ // The managed session is conversation-lifetime and is NOT reaped at this deadline.
1407
1293
  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." },
1408
1294
  ...HARNESS_EGRESS_FIELDS,
1409
- // repo_url only — NOT the shared HARNESS_REPO_FIELDS. The Managed Agents
1295
+ // repo_url only, with no `repo_branch`. The Managed Agents
1410
1296
  // `github_repository` resource exposes no branch/ref/checkout field, so a
1411
1297
  // `repo_branch` setting could not be honoured; per this connector's own rule it is
1412
1298
  // ABSENT rather than silently ignored. Working on a non-default branch is an
@@ -1426,77 +1312,6 @@ var init_chunk_POL7B3EM = __esm({
1426
1312
  token_refresh_config: { api_key: { strategy: "none" } },
1427
1313
  connector_description: "Harness agent powered by Anthropic's Managed Agents API (Beta) \u2014 Anthropic hosts both the agent loop and the sandbox. Delegates the full turn to the managed loop; requires only an Anthropic API key."
1428
1314
  };
1429
- rekorMemory = {
1430
- connector_id: "b3f2a7d1-5c48-4e9a-9d20-8a1c6e4f0b93",
1431
- service_name: "RekorBase",
1432
- connector_type: "Memory",
1433
- connector_name: "Rekor Memory",
1434
- authentication_types: ["api_key"],
1435
- init_endpoint: null,
1436
- unique_per_hub: false,
1437
- account_sid_placeholder: null,
1438
- models: null,
1439
- is_internal: true,
1440
- is_harness: false,
1441
- connector_module: "memory",
1442
- enabled: false,
1443
- connector_settings_schema: {
1444
- rekor_base_id: { type: "text", label: "Rekor Base ID", default: "", description: "The Rekor Base this memory connection mounts (its storage namespace).", placeholder: "base-\u2026", required: true },
1445
- // Which INCARNATION of that id this mount was configured against. A base id is a slug its org
1446
- // can destroy and claim again, so `rekor_base_id` alone names whatever occupies the slug at
1447
- // read time — and the mount re-derives a credential from it on every harness turn, with no
1448
- // human in the loop. Sent as a precondition on every derivation
1449
- // (`DATA_BASE_GENERATION_HEADER`); the data side refuses the request when the id has changed
1450
- // hands since, so the hub fails loudly instead of silently mounting someone else's store.
1451
- //
1452
- // SERVER-OWNED, on every write path without exception. `captureMemoryBaseIncarnation`
1453
- // (`apps/backend/src/rekor/memory-base-incarnation.ts`) writes this value; a number supplied by a
1454
- // caller is never honoured, on any ingress. All three write seams run it:
1455
- // `handleConnectionAddEdit` (console/API) and the two config-as-code seams
1456
- // (`routes/api/ci/{name-resolver,apply-changes}.ts`), which write `settings` directly.
1457
- //
1458
- // Never taken from the caller, and that is the point rather than an implementation detail. A
1459
- // number a person supplies is a guess about a base they have not read: an author who writes `1`
1460
- // for a base already on its second incarnation pins a precondition that refuses EVERY harness turn
1461
- // for that hub, permanently, reported only by a `logger.warn` that never reaches Sentry.
1462
- //
1463
- // RESOLVED only on a create, on an actual `rekor_base_id` change, or for a row that stored no
1464
- // usable value; every other write carries the stored one across untouched. Re-resolving on every
1465
- // write meant an unattended `wayai push` silently re-pointed a hub at the new occupant of a
1466
- // recycled Base id. Re-pointing is something an operator asks for by naming a different Base.
1467
- //
1468
- // An omitted value still means NO PRECONDITION to the READ side (`configuredBaseGeneration`).
1469
- // That rule is unchanged, and it still governs rows written before the capture landed and any
1470
- // other holder of a stored base reference. What changed is that no write path can produce an
1471
- // omission for a Memory connection any more.
1472
- //
1473
- // NO `default`, and no `required: true`, both deliberately. A default would be a statement the
1474
- // operator did not make about a field whose only correct value comes off the wire; `required`
1475
- // would make the console form demand a number from the one caller that must NOT be its source.
1476
- // `min` stays a form hint — the write-side floor is `usableGeneration`, the READ side's own
1477
- // predicate, so a value the mount would ignore is refused rather than stored.
1478
- rekor_base_generation: { type: "number", label: "Rekor Base Incarnation", min: 1, description: "Set for you, and not editable in practice: anything typed here is ignored. It records which incarnation of the Base id this mount was configured against, so that if the id is ever destroyed and claimed again, mounting refuses rather than silently binding to a later occupant. It is read when the connection is created and whenever you point it at a different Base \u2014 never on an ordinary save, so a routine edit cannot re-point a mount at whatever now holds the id. If mounting is failing because the Base was recreated, recreate this connection to record the new one." },
1479
- // The placeholder must be THIS platform's data service: the write path refuses any other origin
1480
- // (owner decision 2026-08-20 — cross-org / self-hosted mounts are unsupported), so suggesting the
1481
- // retired `api.rekor.pro` offered operators a value that would be rejected on sight. The pinned
1482
- // hostname is `data.wayai.pro`; the deployment's own value is `REKOR_PUBLIC_ORIGIN`.
1483
- endpoint: { type: "text", label: "Endpoint", default: "", description: "This platform's data service origin (or its /s3 facade base). Must be the platform's own \u2014 a connection pointing anywhere else is refused, because the Base recorded when you save would not be the one the agent reads.", placeholder: "https://data.wayai.pro", required: true },
1484
- default_file_type: { type: "text", label: "Default File Type", default: "", description: "Default Rekor Bucket (file_type) to mount when a mount does not name one.", placeholder: "kb" }
1485
- },
1486
- agent_settings_schema: null,
1487
- channel_settings_schema: null,
1488
- tool_settings_schema: null,
1489
- connector_credential_schema: {
1490
- api_key: {
1491
- 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 },
1492
- // The Rekor `rec_` Bearer token. A SECRET — WayAI mints scoped, short-TTL S3
1493
- // credentials from it in the Worker and never injects it into the sandbox.
1494
- api_key: { type: "password", label: "API Token", placeholder: "rec_\u2026", description: "Rekor API token (rec_\u2026) with read:files (and write:files for read_write mounts) on the Base. Used server-side only to mint scoped S3 mount credentials.", required: true, maskInEdit: true, useExistingPlaceholder: "__USE_EXISTING_API_KEY__" }
1495
- }
1496
- },
1497
- token_refresh_config: { api_key: { strategy: "none" } },
1498
- connector_description: "Durable, shared cross-agent memory backed by a Rekor Base (S3-compatible). Harness agents mount it read-only or read-write; WayAI holds the credential and performs the signed I/O so it never enters the sandbox."
1499
- };
1500
1315
  SPOKEN_LINE_MAX_CHARS = 300;
1501
1316
  gptLive = {
1502
1317
  connector_id: "01e7b19c-bc94-43f4-a780-ad5a22fb7127",
@@ -1551,9 +1366,7 @@ var init_chunk_POL7B3EM = __esm({
1551
1366
  CONNECTORS = [
1552
1367
  anthropic,
1553
1368
  apiChannel,
1554
- claudeAgentSdk,
1555
1369
  claudeManagedAgents,
1556
- e2b,
1557
1370
  elevenLabsStt,
1558
1371
  elevenLabsTts,
1559
1372
  externalResources,
@@ -1568,7 +1381,6 @@ var init_chunk_POL7B3EM = __esm({
1568
1381
  openai,
1569
1382
  openaiStt,
1570
1383
  openaiTts,
1571
- rekorMemory,
1572
1384
  resend,
1573
1385
  telegram,
1574
1386
  restApiTool,
@@ -6684,14 +6496,14 @@ var init_chunk_3NS3HULK = __esm({
6684
6496
  }
6685
6497
  });
6686
6498
 
6687
- // ../../packages/core/dist/chunk-JWPRTSIB.js
6499
+ // ../../packages/core/dist/chunk-52U34QCF.js
6688
6500
  function normalizeAuthType(raw) {
6689
6501
  if (VALID_AUTH_TYPES.has(raw)) return raw;
6690
6502
  return LEGACY_AUTH_TYPE_MAP[raw] ?? raw;
6691
6503
  }
6692
6504
  var AUTH_TYPE, ORG_CREDENTIAL_AUTH_TYPES, AUTH_TYPE_DISPLAY, LEGACY_AUTH_TYPE_MAP, VALID_AUTH_TYPES, AGENT_ROLES, SAFE_USER_ID_REGEX, SUPPORTED_LOCALES, SKILL_INSTALL_COMMAND;
6693
- var init_chunk_JWPRTSIB = __esm({
6694
- "../../packages/core/dist/chunk-JWPRTSIB.js"() {
6505
+ var init_chunk_52U34QCF = __esm({
6506
+ "../../packages/core/dist/chunk-52U34QCF.js"() {
6695
6507
  "use strict";
6696
6508
  AUTH_TYPE = {
6697
6509
  OAUTH: "oauth",
@@ -6920,7 +6732,7 @@ var init_chunk_T7KQKDET = __esm({
6920
6732
  }
6921
6733
  });
6922
6734
 
6923
- // ../../packages/core/dist/chunk-YV4TZ2HR.js
6735
+ // ../../packages/core/dist/chunk-M3Q4GZSD.js
6924
6736
  function containsKanbanPlaceholders(value) {
6925
6737
  if (value == null) return false;
6926
6738
  const serialized = typeof value === "string" ? value : JSON.stringify(value);
@@ -8230,8 +8042,8 @@ function refineHubAsCodeMonitorRulesOutput(config, ctx) {
8230
8042
  });
8231
8043
  }
8232
8044
  var PLACEHOLDER_TOKENS, ALLOWED_TYPES, SUBSCHEMA_OBJECT_KEYWORDS, SUBSCHEMA_LIST_KEYWORDS, SUBSCHEMA_MAP_KEYWORDS, MAX_SCHEMA_DEPTH, uuidSchema, USER_ID_REGEX, timestampSchema, idParamSchema, clientOptionalString, clientOptionalBoolean, clientOptionalNumber, messageAttachment, MAX_MESSAGE_BODY_BYTES, MAX_ATTACHMENTS_PER_MESSAGE, MESSAGE_ENVELOPE_HEADROOM_BYTES, MAX_AUDIO_FILE_BASE64_BYTES, MAX_KANBAN_STATUSES, MAX_FOLLOWUPS_PER_STATUS, MAX_LANES, MAX_ADDITIONAL_CONTEXT_SCHEMA_BYTES, RESERVED_TEMPLATE_DUMP_NAME, kanbanStatusSlugSchema, followupTypeSchema, EVENT_RELATIVE_FOLLOWUP_TYPES, followupTimeUnitSchema, followupIdSchema, SELECTABLE_FOLLOWUP_TYPES, MAX_LINKED_FOLLOWUP_TARGETS_PER_STATUS, followupSchema, MAX_OUTCOMES_PER_STATUS, kanbanOutcomeSchema, EXCLUSIVE_FLAG_PAIRS, kanbanStatusSchema, kanbanStatusesArraySchema, laneSchema, lanesArraySchema, toolIdParam, listToolsQuery, toolAgentQuery, deleteToolQuery, toolConnectionsQuery, nativeToolIdSchema, CONTEXT_BOUNDARIES, contextBoundarySchema, addNativeToolBody, addMcpToolBody, createCustomToolBody, updateCustomToolBody, updateToolExecutionConfigBody, primaryRegionSchema, placementSourceSchema, orgIdParam, orgAdminIdParam, createOrganizationBody, updateOrganizationBody, addOrgAdminBody, HUB_DISPLAY_NAME_MAX_CHARS, HUB_WELCOME_MESSAGE_MAX_CHARS, HUB_STARTER_QUESTIONS_MAX, HUB_STARTER_QUESTION_MAX_CHARS, displayName, welcomeMessage, starterQuestions, hubDisplayNamesSchema, hubWelcomeMessagesSchema, hubStarterQuestionsSchema, hubDisplayNamesField, hubWelcomeMessagesField, hubStarterQuestionsField, HUB_PRESENTATION_FIELDS, HUB_PRESENTATION_SCHEMAS, hubIdParam, hubAdminIdParam, hubUserIdParam, hubIdentityIdParam, hubTeamIdParam, hubTeamUserDeleteParam, hubSchemaQuery, HUB_USERS_PAGE_SIZE_MAX, HUB_USERS_SEARCH_MAX, HUB_USERS_CHANNEL_TYPES, getHubUsersQuery, PREVIEW_LABEL_MAX_LENGTH, MAX_ENDED_INDEX_RETENTION_DAYS, MAX_EVAL_RETENTION_DAYS, MAX_END_USER_DAILY_MESSAGE_LIMIT, endUserDailyMessageLimitField, previewLabelField, hubTagsField, createHubBody, updateHubBody, HUB_TAG_CHANGE_REFUSED, hubTagChangeRefusalSchema, addHubAdminBody, addHubIdentityAuthorizationBody, contactDecisionBody, approveContactBody, CONTACT_ACCESS_PAGE_SIZE_MAX, listContactAccessQuery, createHubTeamBody, updateHubTeamBody, addHubTeamUserBody, reassignHubUserBody, replicatePreviewBody, HUB_DIFF_SECTION_SET, HUB_DIFF_SECTIONS, updateChannelTestIdentitiesBody, claimCodeChannelParam, claimCodeDeleteParam, PREVIOUS_CONVERSATIONS_MAX, 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, evalIdParam, sessionIdParam, scenarioSetIdParam, hubIdQuery, evalDateContextSchema, EVAL_FIXTURE_NAME_MAX_LENGTH, evalFixtureOverrideSchema, runSessionQuery, runJourneyQuery, EVAL_INPUT_ROLES, EVAL_INPUT_ROLE_LIST, ROLE_ECHO_MAX, EVAL_INITIAL_STATE_SCOPES, MAX_INITIAL_STATE_ENTRIES, evalInitialStateEntry, evalBody, EVAL_LIST_MAX_LIMIT, evalListLimit, getEvalsQuery, toggleEvalBody, bulkToggleEvalsBody, pacingConfigSchema, EVAL_MAX_SELECTED_SCENARIOS, evalScenarioSelectionEntrySchema, evalScenarioSelectionSchema, sessionConfigSchema, createSessionBody, getSessionsQuery, getSessionResultsQuery, getSessionRunsQuery, evalAnalyticsQuery, getSessionCostQuery, compareSessionsQuery, evalsSqlBody, evalsSqlSchemaQuery, exportResultsQuery, validateEvalBody, hubAgentsQuery, createScenarioSetBody, updateScenarioSetBody, scenarioSetsHubQuery, createScenarioFromConversationBody, createJourneyFromConversationBody, EVAL_ATTACHMENT_HASH_REGEX, evalAttachmentRef, turnMayCarryAttachments, ATTACHMENTS_USER_ONLY_MESSAGE, journeyIdParam, journeyToolCallSchema, journeyTurnSchema, journeyStepOverrideSchema, fixtureField, createJourneyBody, updateJourneyBody, evalSessionConfigResponseSchema, evalSessionResponseSchema, evalSessionListConfigSchema, evalSessionListItemSchema, seedReleaseStatusSchema, EVAL_SESSION_NOT_QUIESCENT, MAX_RESOURCE_FILE_SIZE, CALL_OPENING_LANGUAGES, callOpeningLanguage, CALL_OPENING_MAX_DURATION_MS, CALL_OPENING_MAX_BYTES, CALL_OPENING_CAPTION_MAX_CHARS, CALL_OPENING_CONTENT_TYPES, callOpeningContentType, CALL_OPENING_HASH_REGEX, callOpeningHash, callOpeningCaption, storedCallOpening, MAX_CALL_OPENING_ENCODED_BYTES, MAX_CALL_OPENING_BODY_BYTES, agentCallOpeningParams, putAgentCallOpeningBody, deleteAgentCallOpeningQuery, callOpeningParam, callOpeningQuery, 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;
8233
- var init_chunk_YV4TZ2HR = __esm({
8234
- "../../packages/core/dist/chunk-YV4TZ2HR.js"() {
8045
+ var init_chunk_M3Q4GZSD = __esm({
8046
+ "../../packages/core/dist/chunk-M3Q4GZSD.js"() {
8235
8047
  "use strict";
8236
8048
  init_chunk_SNA2DXAC();
8237
8049
  init_chunk_MIWZOSPI();
@@ -8239,7 +8051,7 @@ var init_chunk_YV4TZ2HR = __esm({
8239
8051
  init_chunk_2ISUBJG7();
8240
8052
  init_chunk_C2UEA2KW();
8241
8053
  init_chunk_3NS3HULK();
8242
- init_chunk_JWPRTSIB();
8054
+ init_chunk_52U34QCF();
8243
8055
  init_chunk_T7KQKDET();
8244
8056
  init_chunk_L5F7ZOUJ();
8245
8057
  init_zod();
@@ -9726,7 +9538,31 @@ var init_chunk_YV4TZ2HR = __esm({
9726
9538
  }
9727
9539
  });
9728
9540
 
9729
- // ../../packages/core/dist/chunk-GI5ELTXF.js
9541
+ // ../../packages/core/dist/chunk-VORPHGDT.js
9542
+ var PERMISSIONS;
9543
+ var init_chunk_VORPHGDT = __esm({
9544
+ "../../packages/core/dist/chunk-VORPHGDT.js"() {
9545
+ "use strict";
9546
+ PERMISSIONS = [
9547
+ "hub:read",
9548
+ "hub:write",
9549
+ "hub:admin",
9550
+ "conversation:read",
9551
+ "conversation:write",
9552
+ "analytics:read",
9553
+ "billing:read",
9554
+ "billing:write",
9555
+ "org:read",
9556
+ "org:write",
9557
+ "org:admin",
9558
+ "contacts:write",
9559
+ "platform:admin",
9560
+ "*"
9561
+ ];
9562
+ }
9563
+ });
9564
+
9565
+ // ../../packages/core/dist/chunk-SKU3THIQ.js
9730
9566
  function cacheReconcileIdCount(body) {
9731
9567
  return body.conversations.length + body.histories.reduce((n, history) => n + history.conversation_ids.length, 0) + body.threads.length;
9732
9568
  }
@@ -9792,16 +9628,16 @@ function communityLessonVideoWatchUrl(video) {
9792
9628
  return `https://www.youtube.com/watch?v=${video.id}`;
9793
9629
  }
9794
9630
  }
9795
- var connectionIdParam, connectorIdParam, listConnectionsQuery, deleteConnectionQuery, addConnectionBody, editConnectionBody, PRODUCTION_DIRECT_FIELDS, setProductionCredentialBody, registerWhatsappQuery, registerWhatsappBody, retryProvisioningQuery, resendDomainStatusQuery, initialValueCreateSchema, initialValueUpdateSchema, stateIdParam, listStatesQuery, stateNameSchema, createStateBody, updateStateBody, reorderStatesBody, variantAiModeSchema, experimentStatusSchema, overlayUpdateSchema, experimentIdParam, variantIdParam, listExperimentsQuery, listVariantsQuery, listOverridesQuery, deleteOverrideQuery, createExperimentBody, updateExperimentBody, setExperimentStatusBody, createVariantBody, updateVariantBody, upsertOverrideBody, orgTagIdParam, listOrgTagsQuery, ORG_TAG_NAME_REGEX, ORG_TAG_NAME_MAX_LENGTH, createOrgTagBody, updateOrgTagBody, orgCredentialIdParam, listOrgCredentialsQuery, createOrgCredentialBody, updateOrgCredentialBody, BASE_CREDENTIAL_MANAGED_BY, BASE_CREDENTIAL_NAME_MAX, baseCredentialNameSchema, createBaseCredentialLinkBody, baseCredentialLinkParams, baseCredentialLinkQuery, orgResourceIdParam, orgResourceFileIdParam, orgResourceFolderIdParam, hubOrgResourceParam, listOrgResourcesQuery, orgIdQuery, createOrgResourceBody, updateOrgResourceBody, createOrgResourceFolderBody, updateOrgResourceFolderBody, uploadOrgResourceFileBody, updateOrgResourceFileBody, uploadOrgSkillZipBody, linkOrgResourceBody, resourceIdParam, listResourcesQuery, createResourceBody, updateResourceBody, syncSkillsBody, resourceFileIdParam, listResourceFilesQuery, createResourceFileBody, updateResourceFileBody, uploadResourceFileBody, uploadSkillZipBody, resourceFolderIdParam, listResourceFoldersQuery, createResourceFolderBody, updateResourceFolderBody, agentResourceQuery, hubResourceQuery, linkAgentResourceBody, updateAgentResourceBody, unlinkAgentResourceQuery, navItemSchema, hubCountResetBody, navItemCountResetBody, typingBody, analyticsHubIdParam, analyticsVariableIdParam, updateVariablePinBody, updateAnalyticsViewBody, NUMERIC_FILTER_OPS, TEXT_FILTER_OPS, CATEGORICAL_FILTER_OPS, VARIABLE_FILTER_OPS, STRUCTURED_QUERY_OPS, STRUCTURED_QUERY_AGGREGATIONS, filterValueSchema, conversationsBody, analyticsConversationIdParam, messagesQuery, conversationDetailDataQuery, analyticsDataBody, structuredQueryBody, analyticsSqlBody, analyticsSqlTable, analyticsSqlSchemaQuery, getConversationsQuery, getMessagesQuery, appMessageSenderType, appMessageReceiverType, apiChannelMessage, apiChannelMessageBody, appMessageBody, appMessageResponse, CALL_STATUSES, callStatus, CALL_END_REASONS, callEndReason, CALL_TRANSPORTS, callTransport, CALL_PARTICIPANT_TYPES, callParticipantType, callInstant, MAX_SDP_OFFER_LENGTH, sdpDescription, sdpOffer, MAX_CALL_REQUEST_BODY_BYTES, hubScoped, callSummaryFields, callSummary, callIdParam, createCallBody, createCallResponse, callReadyBody, callHangupBody, callStatusQuery, MAX_REPORTED_DELEGATION_IDS, callDelegationId, callDelegationsBody, callResponse, MAX_CALL_RECORDING_GAPS, callRecordingGap, callRecordingNoteMetadata, 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, updateUserBody, updateProfileBody, pathnameRegex, updatePreferencesBody, registerPushTokenBody, deletePushTokenQuery, recordAiDisclosureAcceptanceBody, activityQuery, deletionModeSchema, deletionRequestBody, CACHE_RECONCILE_MAX_IDS, CACHE_RECONCILE_MAX_HUBS, cacheReconcileScopeSchema, cachedConversationPageSchema, cachedHistoryThreadSchema, cachedPeopleThreadSchema, cacheReconcileBody, archiveHubIdParam, archiveConversationParams, archiveListQuery, archiveMessageObservabilityParams, conversationIdParam, conversationHubQuery, claimBody, releaseBody, transferBody, closeBody, additionalContextPayloadSchema, kanbanUpdateBody, annotateConversationBody, observabilityParams, observabilityListParams, deleteUserConversationsBody, deleteUserConversationsResponse, sendMessageBody, listConversationsQuery, flagSourceSchema, getConversationsResponse, getConversationDetailParams, getConversationDetailQuery, getConversationDetailResponse, listWhatsAppTemplatesQuery, sendWhatsAppTemplateBody, copilotSuggestBody, copilotSuggestResponse, CONSULT_THREAD_STATUSES, consultThreadStatus, CONSULT_THREAD_TITLE_MAX, consultThreadTitle, consultThreadSummary, listConsultThreadsQuery, listConsultThreadsResponse, createConsultThreadBody, createConsultThreadResponse, consultThreadIdParam, updateConsultThreadBody, updateConsultThreadResponse, CONSULT_AWAIT_TIMEOUT_MS, billingOrgIdParam, subscriptionItemParams, planKeySchema, billingStatusSchema, paidTierSchema, spendCapBody, growthPacksBody, portalSessionBody, checkoutSessionBody, changeTierBody, updateBillingCurrencyBody, invoicesQuery, billingPlanTypeSchema, dataUsageCountersSchema, REKOR_ENTITLEMENT_CONTRACT_VERSION, entitlementProjectionSchema, rekorEntitlementRefreshMessageSchema, downloadBody, uploadQuery, SIGN_URL_MAX_EXPIRES_IN_SECONDS, signUrlBody, templateIdParam, listTemplatesQuery, deleteTemplateQuery, templateStatusQuery, createTemplateBody, updateTemplateBody, submitTemplateBody, testTemplateBody, CONTACT_ENVIRONMENTS, CONTACT_NAME_MAX, CONTACT_EMAIL_MAX, CONTACT_PHONE_INPUT_MAX, CONTACT_INSTAGRAM_SID_MAX, CONTACT_METADATA_MAX_BYTES, CONTACT_LABEL_MAX, CONTACT_LABELS_MAX, CONTACT_SCOPE_TAGS_MAX, CONTACT_PAGE_MAX, CONTACT_IMPORT_BATCH_MAX, CONTACT_SEARCH_MAX, CONTACT_LIST_NAME_MAX, CONTACT_LIST_NAME_REGEX, CONTACT_LIST_DESCRIPTION_MAX, CONTACT_LIST_FILTER_MAX, CONTACT_LIST_PINS_PER_REQUEST_MAX, SUPPRESSION_SCOPES, SUPPRESSION_ID_REGEX, contactName, contactPhone, contactEmail, contactInstagramSid, contactLabel, contactLabels, contactMetadata, scopeTagIds, contactVisibilitySchema, hasIdentity, IDENTITY_REQUIRED, contactBookOrgQuery, contactBookContactParam, contactBookListParam, contactBookHubParam, contactBookPageQuery, listContactBookContactsQuery, listHubContactBookContactsQuery, contactBookLinkCandidatesQuery, listContactBookListMembersQuery, contactRowFields, createContactBookContactBody, updateContactBookContactBody, contactImportRowSchema, importContactBookContactsBody, linkContactBookContactBody, listName, contactListFilterSchema, createContactBookListBody, updateContactBookListBody, updateContactBookListPinsBody, suppressionIdentitySchema, createContactBookSuppressionBody, contactBookSuppressionParam, listContactBookSuppressionsQuery, CONTACT_BOOK_EMAIL_UNSUBSCRIBE_PATH, contactBookEmailUnsubscribeTokenSchema, contactBookEmailUnsubscribeQuery, orgListReferenceSchema, hubListNameSchema, HUB_LIST_FILTER_REQUIRED, hubContactListFilterSchema, hubContactListIdParam, hubContactListHubQuery, description, createHubContactListBody, updateHubContactListBody, 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, AUTOMATION_WEBHOOK_MOUNT, 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, VERSION_PART, MOBILE_APP_VERSION_RE, mobileAppVersionSchema, MOBILE_PLATFORMS, mobilePlatformSchema, mobileVersionPolicyQuery, mobileVersionPolicySchema, mobileVersionPolicyResponse, adminOrgIdParam, adminOrgAdminIdParam, adminUserIdParam, PRICING_PLAN_ID_RE, adminPlanIdParam, adminOrganizationsQuery, adminUserSearchQuery, kanbanSlugMigrationQuery, adjustQuotaBody, updatePlanBody, addAdminUserBody, MAX_VOICE_CALL_MINUTE_OPS, voiceCallMinuteOps, AUTOMATION_GATE_EVALUATIONS_PER_OPERATION_BOUND, automationGateEvaluationsPerOperation, AUTOMATION_RUN_RETENTION_DAYS_MAX, automationRunRetentionDays, updatePlatformConfigBody, updateFreeOrgLimitBody, adminScopedTargetShape, adminScopedTargetBody, BRANCHING_ORPHAN_ENTITY_TYPES, BRANCHING_ORPHAN_MAX_TARGETS, adminRepairBranchingOrphansBody, adminRepairLegacyOrgGrantsBody, adminRepairCompedPlansBody, updatePricingPlanBody, dataExplorerSearchQuery, dataExplorerOrgIdParam, dataExplorerHubIdParam, dataExplorerConvIdParam, dataExplorerDoInstancesQuery, dataExplorerNsIdParam, dataExplorerKvKeysBody, dataExplorerKvKeyBody, uuidOrHexId, dataExplorerDeleteOrgParam, dataExplorerDeleteHubParam, dataExplorerDeleteConvParam, dataExplorerDeleteUserParam, dataExplorerDeleteQuery, dataExplorerKvDeleteBody, pitrDoNamespace, pitrBookmarkParam, pitrRestoreBody, healthSamplingTriggerBody, dataExplorerDebugDoType, DEBUG_READ_MAX_LIMIT, DEBUG_READ_DEFAULT_LIMIT, DEBUG_DO_HEX_PREFIX, debugDoEntityId, debugTableName, dataExplorerDebugTablesParam, dataExplorerDebugRowsParam, dataExplorerDebugRowsQuery, dataExplorerDebugAnalyticsTable, debugUuid, dataExplorerDebugAnalyticsRowsParam, dataExplorerDebugAnalyticsRowsQuery, debugHubConvParam, debugMessageIdQuery, sandboxEgressPolicy, SANDBOX_EXEC_MAX_CMD_LENGTH, SANDBOX_EXEC_MAX_ALLOWLIST, SANDBOX_EXEC_MAX_TIMEOUT_MS, adminSandboxExecBody, META_ENTITY_ID_PATTERN, metaEntityId, whatsappCallbackBody, authMeResponse, wsTicketResponse, sessionCheckResponse, logoutResponse, magicCodeSendBody, magicCodeSendResponse, magicCodeVerifyBody, magicCodeVerifyResponse, passwordLoginBody, stateOperationBody, conversationListResourcesQuery, conversationReadResourceQuery, listPendingSchedulesQuery, listHubAggregateSchedulesQuery, reportSourceSchema, intakeReportSourceSchema, reportClassificationSchema, reportStatusSchema, reportLocaleSchema, reportMessageAuthorRoleSchema, reportMessageSchema, sentryRefStatusSchema, createReportBody, editReportBody, reporterReportSummarySchema, reporterListResponseSchema, getReportResponseSchema, reporterTransitionResponseSchema, contestReportBody, reporterListQuery, listReportsQuery, GITHUB_ISSUE_URL_REGEX, githubIssueUrlSchema, transitionReportBody, groupReportsBody, holdReportBody, clickhouseReadyResponse, bootstrapQuery, MAX_NAME_LENGTH, MAX_VALUE_LENGTH, MAX_TAGS, MAX_TAG_LENGTH, MAX_SCOPE_HUBS, MAX_SCOPE_TAGS, vaultSecretScopeSchema, vaultCreateBody, vaultUpdateBody, MAX_NAME_LENGTH2, MAX_HUBS_PER_GRANT, MAX_HUB_TAGS_PER_GRANT, MAX_GRANTS, permissionEnum, grantScopeSchema, grantSchema, createTokenBody, tokenOrgIdParam, invitePreviewQuery, inviteRolePreviewResponse, inviteContactPreviewResponse, invitePreviewResponse, inviteUnsubscribeBody, jsonSchemaSchema, hubUserIdentity, stateValueEntry, getHubUserContextResponse, updateHubUserBody, updateHubUserResponse, unlockHubUserNameResponse, stateResetParams, stateResetResponse, hubAlertsParam, hubAlertSeverity, hubAlert, hubAlertsListResponse, noticeSeveritySchema, noticeStatusSchema, NOTICE_SCOPE_REGEX, noticeScopeSchema, noticeLinkSchema, createNoticeBody, updateNoticeBody, listNoticesQuery, noticeIdParamSchema, ADMIN_SKILL_NAME_REGEX, adminSkillNameParam, REKOR_ACTOR_TYPE_HEADER, REKOR_ACTOR_ID_HEADER, REKOR_ACTOR_LABEL_HEADER, REKOR_ACTOR_ORG_HEADER, REKOR_ACTOR_ADMIN_HEADER, REKOR_CLIENT_HEADER, REKOR_TOOL_ID_HEADER, REKOR_CLIENTS, rekorClientSchema, MAX_REKOR_TOOL_ID_LENGTH, rekorToolIdSchema, DATA_PROXY_MOUNT, DATA_PROXY_PREFIX, REKOR_V1_PREFIX, DATA_PROXY_ORG_QUERY_PARAM, MAX_PROVISIONING_BODY_BYTES, dataProxyQuery, rekorAttestation, REQUIRED_REKOR_ATTESTATION_HEADERS, BASE_DESTRUCTION_MOUNT, BASE_DESTRUCTION_PREFIX, BASE_DESTRUCTION_CONFIRM_PATH, baseDestructionConfirmBody, BASE_DESTRUCTION_GRACE_MS, BASE_DESTRUCTION_CONFIRM_TTL_MS, BASE_DESTRUCTION_ORG_QUERY_PARAM, baseDestructionQuery, baseDestructionParam, baseDestructionInitiateBody, baseDestructionStatus, baseDestructionRequest, baseDestructionListResponse, baseDestructionInitiateResponse, baseDestructionConfirmResponse, baseDestructionCancelResponse, rekorBaseChangeMessageSchema, PEOPLE_CONTACT_PAGE_MAX, PEOPLE_CONTACT_PAGE_DEFAULT, PEOPLE_CONTACT_EMAIL_MAX_LENGTH, peopleUserIdSchema, peopleInviteEmailSchema, peopleContactInviteBody, peopleContactInviteIdParam, peopleContactUserIdParam, peopleContactBlockBody, peopleContactPageQuery, peopleOutgoingInviteSchema, peopleContactPersonSchema, peopleContactSchema, peopleIncomingInviteSchema, peopleBlockedUserSchema, PEOPLE_THREAD_MESSAGE_MAX_LENGTH, PEOPLE_THREAD_MESSAGES_PAGE_MAX, PEOPLE_THREAD_PAGE_MAX, PEOPLE_THREAD_PAGE_DEFAULT, PEOPLE_GROUP_NAME_MAX_LENGTH, PEOPLE_GROUP_AVATAR_URL_MAX_LENGTH, PEOPLE_THREAD_ATTACHMENT_MAX_BYTES, PEOPLE_THREAD_ATTACHMENT_NAME_MAX_LENGTH, PEOPLE_ATTACHMENT_STORAGE_PER_USER_BYTES, PEOPLE_THREAD_ATTACHMENT_MAX_MB, PEOPLE_THREAD_ATTACHMENT_URL_TTL_SECONDS, PEOPLE_THREAD_ATTACHMENT_URLS_MAX, peopleThreadIdParam, peopleThreadMessageIdParam, peopleThreadListQuery, peopleThreadMessagesQuery, peopleThreadAttachmentUploadSchema, peopleThreadSendBody, peopleThreadAttachmentUrlsBody, peopleThreadReadBody, peopleThreadSettingsBody, peopleGroupNameSchema, peopleGroupAvatarUrlSchema, peopleGroupCreateBody, peopleOrgDirectBody, peopleGroupUpdateBody, peopleGroupInviteBody, peopleOrgErasureBody, peopleGroupLeaveBody, peopleGroupInviteIdParam, peopleGroupIncomingInviteIdParam, peopleGroupMemberParam, peopleThreadKindSchema, peopleThreadMemberSchema, peopleThreadLastMessageSchema, peopleGroupRoleSchema, peopleGroupSummarySchema, peopleThreadSummarySchema, peopleThreadAttachmentSchema, peopleThreadMessageSchema, peopleGroupMemberSchema, peopleGroupSentInviteSchema, peopleGroupIncomingInviteSchema, PEOPLE_REPORT_DETAILS_MAX_LENGTH, peopleReportReasonSchema, reportDetailsSchema, reportFields, peopleReportBody, 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, COMMUNITIES_PER_ORG_MAX, COMMUNITY_NAME_MAX_LENGTH, COMMUNITY_REGISTRY_CLOSED_REASON, COMMUNITY_MEMBERS_MAX, COMMUNITY_ADMISSIONS, COMMUNITY_ACCESS_MAX, COMMUNITY_ACCESS_ADD_MAX, COMMUNITY_ACCESS_FULL_REASON, COMMUNITY_JOIN_SOURCE_MAX_LENGTH, COMMUNITY_JOIN_FLOW_TOKEN_MAX_LENGTH, COMMUNITY_ROOMS_MAX, COMMUNITY_ROOM_NAME_MAX_LENGTH, COMMUNITY_MESSAGE_MAX_LENGTH, COMMUNITY_MESSAGES_PAGE_SIZE, COMMUNITY_ATTACHMENT_URLS_MAX, COMMUNITY_POST_TITLE_MAX_LENGTH, COMMUNITY_POST_SEARCH_MAX_LENGTH, COMMUNITY_MEMBER_STATUSES, COMMUNITY_RULES_MAX_LENGTH, COMMUNITY_SLOW_MODE_MAX_SECONDS, COMMUNITY_COURSES_LABEL_MAX_LENGTH, COMMUNITY_LIVE_TICKET_PREFIX, COMMUNITY_STATS_DAYS, communityNameSchema, adminCreateCommunityBody, communityIdParam, communityJoinTokenSchema, communityJoinSourceSchema, communityJoinPreviewQuery, communityJoinBody, communityRoomKindSchema, communityRoomNameSchema, communityRoomIdParam, communityMessageIdParam, communityRoomCreateBody, communityRoomUpdateBody, communityMessagesQuery, communityMessageBodySchema, communityPostTitleSchema, communityAttachmentUploadSchema, communitySendBody, communityEditBody, communityPostIdParam, communityPostsQuery, communityAnswerBody, communityReadBody, communityAttachmentUrlsBody, communityPersonParam, communityOrgParam, communityPeopleQuery, communityCoursesLabelSchema, communityAdmissionSchema, communitySettingsBody, communityAccessEmailSchema, communityAccessAddBody, communityAccessQuery, communityAccessIdParam, communityBanBody, communityLockBody, communityPinBody, communityModLogQuery, communityReportsQuery, communityReportIdParam, communityLiveTicketSchema, communityLiveQuery, communityMuteBody, communityEmailUnsubscribeTokenSchema, COMMUNITY_EMAIL_UNSUBSCRIBE_PATH, communityEmailUnsubscribeQuery, COMMUNITY_COURSES_MAX, COMMUNITY_COURSE_MODULES_MAX, COMMUNITY_COURSE_LESSONS_MAX, COMMUNITY_LESSONS_MAX, COMMUNITY_COURSE_TITLE_MAX_LENGTH, COMMUNITY_COURSE_DESCRIPTION_MAX_LENGTH, COMMUNITY_LESSON_BODY_MAX_LENGTH, COMMUNITY_LESSON_LINKS_MAX, COMMUNITY_LESSON_URL_MAX_LENGTH, YOUTUBE_ID, YOUTUBE_HOSTS, YOUTU_BE, YOUTUBE_ID_PATH, communityCourseIdParam, communityCourseModuleIdParam, communityLessonIdParam, communityCourseTitleSchema, communityCourseDescriptionSchema, communityCoursePositionSchema, communityLessonVideoUrlSchema, communityLessonLinkSchema, communityLessonLinksSchema, communityLessonBodySchema, communityCourseCreateBody, communityCourseUpdateBody, communityModuleCreateBody, communityModuleUpdateBody, communityLessonCreateBody, communityLessonUpdateBody, COMMUNITY_LESSON_TREE_MAX_BYTES, COMMUNITY_LESSON_LINK_PROTOCOLS, COMMUNITY_LESSON_TREE_TOO_LARGE_REASON, COMMUNITY_LESSON_TREE_TOO_DEEP_REASON, COMMUNITY_LESSON_LINE_PREFIX_TOO_WIDE_REASON, LINK_SCHEME, adminSetGuideHubBody, GUIDE_HUB_INELIGIBLE_REASON;
9796
- var init_chunk_GI5ELTXF = __esm({
9797
- "../../packages/core/dist/chunk-GI5ELTXF.js"() {
9631
+ var connectionIdParam, connectorIdParam, listConnectionsQuery, deleteConnectionQuery, addConnectionBody, editConnectionBody, PRODUCTION_DIRECT_FIELDS, setProductionCredentialBody, registerWhatsappQuery, registerWhatsappBody, retryProvisioningQuery, resendDomainStatusQuery, initialValueCreateSchema, initialValueUpdateSchema, stateIdParam, listStatesQuery, stateNameSchema, createStateBody, updateStateBody, reorderStatesBody, variantAiModeSchema, experimentStatusSchema, overlayUpdateSchema, experimentIdParam, variantIdParam, listExperimentsQuery, listVariantsQuery, listOverridesQuery, deleteOverrideQuery, createExperimentBody, updateExperimentBody, setExperimentStatusBody, createVariantBody, updateVariantBody, upsertOverrideBody, orgTagIdParam, listOrgTagsQuery, ORG_TAG_NAME_REGEX, ORG_TAG_NAME_MAX_LENGTH, createOrgTagBody, updateOrgTagBody, orgCredentialIdParam, listOrgCredentialsQuery, createOrgCredentialBody, updateOrgCredentialBody, BASE_CREDENTIAL_MANAGED_BY, BASE_CREDENTIAL_NAME_MAX, baseCredentialNameSchema, createBaseCredentialLinkBody, baseCredentialLinkParams, baseCredentialLinkQuery, orgResourceIdParam, orgResourceFileIdParam, orgResourceFolderIdParam, hubOrgResourceParam, listOrgResourcesQuery, orgIdQuery, createOrgResourceBody, updateOrgResourceBody, createOrgResourceFolderBody, updateOrgResourceFolderBody, uploadOrgResourceFileBody, updateOrgResourceFileBody, uploadOrgSkillZipBody, linkOrgResourceBody, resourceIdParam, listResourcesQuery, createResourceBody, updateResourceBody, syncSkillsBody, resourceFileIdParam, listResourceFilesQuery, createResourceFileBody, updateResourceFileBody, uploadResourceFileBody, uploadSkillZipBody, resourceFolderIdParam, listResourceFoldersQuery, createResourceFolderBody, updateResourceFolderBody, agentResourceQuery, hubResourceQuery, linkAgentResourceBody, updateAgentResourceBody, unlinkAgentResourceQuery, navItemSchema, hubCountResetBody, navItemCountResetBody, typingBody, analyticsHubIdParam, analyticsVariableIdParam, updateVariablePinBody, updateAnalyticsViewBody, NUMERIC_FILTER_OPS, TEXT_FILTER_OPS, CATEGORICAL_FILTER_OPS, VARIABLE_FILTER_OPS, STRUCTURED_QUERY_OPS, STRUCTURED_QUERY_AGGREGATIONS, filterValueSchema, conversationsBody, analyticsConversationIdParam, messagesQuery, conversationDetailDataQuery, analyticsDataBody, structuredQueryBody, analyticsSqlBody, analyticsSqlTable, analyticsSqlSchemaQuery, getConversationsQuery, getMessagesQuery, appMessageSenderType, appMessageReceiverType, apiChannelMessage, apiChannelMessageBody, appMessageBody, appMessageResponse, CALL_STATUSES, callStatus, CALL_END_REASONS, callEndReason, CALL_TRANSPORTS, callTransport, CALL_PARTICIPANT_TYPES, callParticipantType, callInstant, MAX_SDP_OFFER_LENGTH, sdpDescription, sdpOffer, MAX_CALL_REQUEST_BODY_BYTES, hubScoped, callSummaryFields, callSummary, callIdParam, createCallBody, createCallResponse, callReadyBody, callHangupBody, callStatusQuery, MAX_REPORTED_DELEGATION_IDS, callDelegationId, callDelegationsBody, callResponse, MAX_CALL_RECORDING_GAPS, callRecordingGap, callRecordingNoteMetadata, 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, updateUserBody, updateProfileBody, pathnameRegex, updatePreferencesBody, registerPushTokenBody, deletePushTokenQuery, recordAiDisclosureAcceptanceBody, activityQuery, deletionModeSchema, deletionRequestBody, CACHE_RECONCILE_MAX_IDS, CACHE_RECONCILE_MAX_HUBS, cacheReconcileScopeSchema, cachedConversationPageSchema, cachedHistoryThreadSchema, cachedPeopleThreadSchema, cacheReconcileBody, archiveHubIdParam, archiveConversationParams, archiveListQuery, archiveMessageObservabilityParams, conversationIdParam, conversationHubQuery, claimBody, releaseBody, transferBody, closeBody, additionalContextPayloadSchema, kanbanUpdateBody, annotateConversationBody, observabilityParams, observabilityListParams, deleteUserConversationsBody, deleteUserConversationsResponse, sendMessageBody, listConversationsQuery, flagSourceSchema, getConversationsResponse, getConversationDetailParams, getConversationDetailQuery, getConversationDetailResponse, listWhatsAppTemplatesQuery, sendWhatsAppTemplateBody, copilotSuggestBody, copilotSuggestResponse, CONSULT_THREAD_STATUSES, consultThreadStatus, CONSULT_THREAD_TITLE_MAX, consultThreadTitle, consultThreadSummary, listConsultThreadsQuery, listConsultThreadsResponse, createConsultThreadBody, createConsultThreadResponse, consultThreadIdParam, updateConsultThreadBody, updateConsultThreadResponse, CONSULT_AWAIT_TIMEOUT_MS, billingOrgIdParam, subscriptionItemParams, planKeySchema, billingStatusSchema, paidTierSchema, spendCapBody, growthPacksBody, portalSessionBody, checkoutSessionBody, changeTierBody, updateBillingCurrencyBody, invoicesQuery, billingPlanTypeSchema, dataUsageCountersSchema, REKOR_ENTITLEMENT_CONTRACT_VERSION, entitlementProjectionSchema, rekorEntitlementRefreshMessageSchema, downloadBody, uploadQuery, SIGN_URL_MAX_EXPIRES_IN_SECONDS, signUrlBody, templateIdParam, listTemplatesQuery, deleteTemplateQuery, templateStatusQuery, createTemplateBody, updateTemplateBody, submitTemplateBody, testTemplateBody, CONTACT_ENVIRONMENTS, CONTACT_NAME_MAX, CONTACT_EMAIL_MAX, CONTACT_PHONE_INPUT_MAX, CONTACT_INSTAGRAM_SID_MAX, CONTACT_METADATA_MAX_BYTES, CONTACT_LABEL_MAX, CONTACT_LABELS_MAX, CONTACT_SCOPE_TAGS_MAX, CONTACT_PAGE_MAX, CONTACT_IMPORT_BATCH_MAX, CONTACT_SEARCH_MAX, CONTACT_LIST_NAME_MAX, CONTACT_LIST_NAME_REGEX, CONTACT_LIST_DESCRIPTION_MAX, CONTACT_LIST_FILTER_MAX, CONTACT_LIST_PINS_PER_REQUEST_MAX, SUPPRESSION_SCOPES, SUPPRESSION_ID_REGEX, contactName, contactPhone, contactEmail, contactInstagramSid, contactLabel, contactLabels, contactMetadata, scopeTagIds, contactVisibilitySchema, hasIdentity, IDENTITY_REQUIRED, contactBookOrgQuery, contactBookContactParam, contactBookListParam, contactBookHubParam, contactBookPageQuery, listContactBookContactsQuery, listHubContactBookContactsQuery, contactBookLinkCandidatesQuery, listContactBookListMembersQuery, contactRowFields, createContactBookContactBody, updateContactBookContactBody, contactImportRowSchema, importContactBookContactsBody, linkContactBookContactBody, listName, contactListFilterSchema, createContactBookListBody, updateContactBookListBody, updateContactBookListPinsBody, suppressionIdentitySchema, createContactBookSuppressionBody, contactBookSuppressionParam, listContactBookSuppressionsQuery, CONTACT_BOOK_EMAIL_UNSUBSCRIBE_PATH, contactBookEmailUnsubscribeTokenSchema, contactBookEmailUnsubscribeQuery, orgListReferenceSchema, hubListNameSchema, HUB_LIST_FILTER_REQUIRED, hubContactListFilterSchema, hubContactListIdParam, hubContactListHubQuery, description, createHubContactListBody, updateHubContactListBody, 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, AUTOMATION_WEBHOOK_MOUNT, 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, VERSION_PART, MOBILE_APP_VERSION_RE, mobileAppVersionSchema, MOBILE_PLATFORMS, mobilePlatformSchema, mobileVersionPolicyQuery, mobileVersionPolicySchema, mobileVersionPolicyResponse, adminOrgIdParam, adminOrgAdminIdParam, adminUserIdParam, PRICING_PLAN_ID_RE, adminPlanIdParam, adminOrganizationsQuery, adminUserSearchQuery, kanbanSlugMigrationQuery, adjustQuotaBody, updatePlanBody, addAdminUserBody, MAX_VOICE_CALL_MINUTE_OPS, voiceCallMinuteOps, AUTOMATION_GATE_EVALUATIONS_PER_OPERATION_BOUND, automationGateEvaluationsPerOperation, AUTOMATION_RUN_RETENTION_DAYS_MAX, automationRunRetentionDays, updatePlatformConfigBody, updateFreeOrgLimitBody, adminScopedTargetShape, adminScopedTargetBody, BRANCHING_ORPHAN_ENTITY_TYPES, BRANCHING_ORPHAN_MAX_TARGETS, adminRepairBranchingOrphansBody, adminRepairLegacyOrgGrantsBody, adminRepairCompedPlansBody, updatePricingPlanBody, dataExplorerSearchQuery, dataExplorerOrgIdParam, dataExplorerHubIdParam, dataExplorerConvIdParam, dataExplorerDoInstancesQuery, dataExplorerNsIdParam, dataExplorerKvKeysBody, dataExplorerKvKeyBody, uuidOrHexId, dataExplorerDeleteOrgParam, dataExplorerDeleteHubParam, dataExplorerDeleteConvParam, dataExplorerDeleteUserParam, dataExplorerDeleteQuery, dataExplorerKvDeleteBody, pitrDoNamespace, pitrBookmarkParam, pitrRestoreBody, healthSamplingTriggerBody, dataExplorerDebugDoType, DEBUG_READ_MAX_LIMIT, DEBUG_READ_DEFAULT_LIMIT, DEBUG_DO_HEX_PREFIX, debugDoEntityId, debugTableName, dataExplorerDebugTablesParam, dataExplorerDebugRowsParam, dataExplorerDebugRowsQuery, dataExplorerDebugAnalyticsTable, debugUuid, dataExplorerDebugAnalyticsRowsParam, dataExplorerDebugAnalyticsRowsQuery, debugHubConvParam, debugMessageIdQuery, META_ENTITY_ID_PATTERN, metaEntityId, whatsappCallbackBody, authMeResponse, wsTicketResponse, sessionCheckResponse, logoutResponse, magicCodeSendBody, magicCodeSendResponse, magicCodeVerifyBody, magicCodeVerifyResponse, passwordLoginBody, stateOperationBody, conversationListResourcesQuery, conversationReadResourceQuery, listPendingSchedulesQuery, listHubAggregateSchedulesQuery, reportSourceSchema, intakeReportSourceSchema, reportClassificationSchema, reportStatusSchema, reportLocaleSchema, reportMessageAuthorRoleSchema, reportMessageSchema, sentryRefStatusSchema, createReportBody, editReportBody, reporterReportSummarySchema, reporterListResponseSchema, getReportResponseSchema, reporterTransitionResponseSchema, contestReportBody, reporterListQuery, listReportsQuery, GITHUB_ISSUE_URL_REGEX, githubIssueUrlSchema, transitionReportBody, groupReportsBody, holdReportBody, clickhouseReadyResponse, bootstrapQuery, MAX_NAME_LENGTH, MAX_VALUE_LENGTH, MAX_TAGS, MAX_TAG_LENGTH, MAX_SCOPE_HUBS, MAX_SCOPE_TAGS, vaultSecretScopeSchema, vaultCreateBody, vaultUpdateBody, MAX_NAME_LENGTH2, MAX_HUBS_PER_GRANT, MAX_HUB_TAGS_PER_GRANT, MAX_GRANTS, permissionEnum, grantScopeSchema, grantSchema, createTokenBody, tokenOrgIdParam, invitePreviewQuery, inviteRolePreviewResponse, inviteContactPreviewResponse, invitePreviewResponse, inviteUnsubscribeBody, jsonSchemaSchema, hubUserIdentity, stateValueEntry, getHubUserContextResponse, updateHubUserBody, updateHubUserResponse, unlockHubUserNameResponse, stateResetParams, stateResetResponse, hubAlertsParam, hubAlertSeverity, hubAlert, hubAlertsListResponse, noticeSeveritySchema, noticeStatusSchema, NOTICE_SCOPE_REGEX, noticeScopeSchema, noticeLinkSchema, createNoticeBody, updateNoticeBody, listNoticesQuery, noticeIdParamSchema, ADMIN_SKILL_NAME_REGEX, adminSkillNameParam, REKOR_ACTOR_TYPE_HEADER, REKOR_ACTOR_ID_HEADER, REKOR_ACTOR_LABEL_HEADER, REKOR_ACTOR_ORG_HEADER, REKOR_ACTOR_ADMIN_HEADER, REKOR_CLIENT_HEADER, REKOR_TOOL_ID_HEADER, REKOR_CLIENTS, rekorClientSchema, MAX_REKOR_TOOL_ID_LENGTH, rekorToolIdSchema, DATA_PROXY_MOUNT, DATA_PROXY_PREFIX, REKOR_V1_PREFIX, DATA_PROXY_ORG_QUERY_PARAM, MAX_PROVISIONING_BODY_BYTES, dataProxyQuery, rekorAttestation, REQUIRED_REKOR_ATTESTATION_HEADERS, BASE_DESTRUCTION_MOUNT, BASE_DESTRUCTION_PREFIX, BASE_DESTRUCTION_CONFIRM_PATH, baseDestructionConfirmBody, BASE_DESTRUCTION_GRACE_MS, BASE_DESTRUCTION_CONFIRM_TTL_MS, BASE_DESTRUCTION_ORG_QUERY_PARAM, baseDestructionQuery, baseDestructionParam, baseDestructionInitiateBody, baseDestructionStatus, baseDestructionRequest, baseDestructionListResponse, baseDestructionInitiateResponse, baseDestructionConfirmResponse, baseDestructionCancelResponse, rekorBaseChangeMessageSchema, PEOPLE_CONTACT_PAGE_MAX, PEOPLE_CONTACT_PAGE_DEFAULT, PEOPLE_CONTACT_EMAIL_MAX_LENGTH, peopleUserIdSchema, peopleInviteEmailSchema, peopleContactInviteBody, peopleContactInviteIdParam, peopleContactUserIdParam, peopleContactBlockBody, peopleContactPageQuery, peopleOutgoingInviteSchema, peopleContactPersonSchema, peopleContactSchema, peopleIncomingInviteSchema, peopleBlockedUserSchema, PEOPLE_THREAD_MESSAGE_MAX_LENGTH, PEOPLE_THREAD_MESSAGES_PAGE_MAX, PEOPLE_THREAD_PAGE_MAX, PEOPLE_THREAD_PAGE_DEFAULT, PEOPLE_GROUP_NAME_MAX_LENGTH, PEOPLE_GROUP_AVATAR_URL_MAX_LENGTH, PEOPLE_THREAD_ATTACHMENT_MAX_BYTES, PEOPLE_THREAD_ATTACHMENT_NAME_MAX_LENGTH, PEOPLE_ATTACHMENT_STORAGE_PER_USER_BYTES, PEOPLE_THREAD_ATTACHMENT_MAX_MB, PEOPLE_THREAD_ATTACHMENT_URL_TTL_SECONDS, PEOPLE_THREAD_ATTACHMENT_URLS_MAX, peopleThreadIdParam, peopleThreadMessageIdParam, peopleThreadListQuery, peopleThreadMessagesQuery, peopleThreadAttachmentUploadSchema, peopleThreadSendBody, peopleThreadAttachmentUrlsBody, peopleThreadReadBody, peopleThreadSettingsBody, peopleGroupNameSchema, peopleGroupAvatarUrlSchema, peopleGroupCreateBody, peopleOrgDirectBody, peopleGroupUpdateBody, peopleGroupInviteBody, peopleOrgErasureBody, peopleGroupLeaveBody, peopleGroupInviteIdParam, peopleGroupIncomingInviteIdParam, peopleGroupMemberParam, peopleThreadKindSchema, peopleThreadMemberSchema, peopleThreadLastMessageSchema, peopleGroupRoleSchema, peopleGroupSummarySchema, peopleThreadSummarySchema, peopleThreadAttachmentSchema, peopleThreadMessageSchema, peopleGroupMemberSchema, peopleGroupSentInviteSchema, peopleGroupIncomingInviteSchema, PEOPLE_REPORT_DETAILS_MAX_LENGTH, peopleReportReasonSchema, reportDetailsSchema, reportFields, peopleReportBody, 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, COMMUNITIES_PER_ORG_MAX, COMMUNITY_NAME_MAX_LENGTH, COMMUNITY_REGISTRY_CLOSED_REASON, COMMUNITY_MEMBERS_MAX, COMMUNITY_ADMISSIONS, COMMUNITY_ACCESS_MAX, COMMUNITY_ACCESS_ADD_MAX, COMMUNITY_ACCESS_FULL_REASON, COMMUNITY_JOIN_SOURCE_MAX_LENGTH, COMMUNITY_JOIN_FLOW_TOKEN_MAX_LENGTH, COMMUNITY_ROOMS_MAX, COMMUNITY_ROOM_NAME_MAX_LENGTH, COMMUNITY_MESSAGE_MAX_LENGTH, COMMUNITY_MESSAGES_PAGE_SIZE, COMMUNITY_ATTACHMENT_URLS_MAX, COMMUNITY_POST_TITLE_MAX_LENGTH, COMMUNITY_POST_SEARCH_MAX_LENGTH, COMMUNITY_MEMBER_STATUSES, COMMUNITY_RULES_MAX_LENGTH, COMMUNITY_SLOW_MODE_MAX_SECONDS, COMMUNITY_COURSES_LABEL_MAX_LENGTH, COMMUNITY_LIVE_TICKET_PREFIX, COMMUNITY_STATS_DAYS, communityNameSchema, adminCreateCommunityBody, communityIdParam, communityJoinTokenSchema, communityJoinSourceSchema, communityJoinPreviewQuery, communityJoinBody, communityRoomKindSchema, communityRoomNameSchema, communityRoomIdParam, communityMessageIdParam, communityRoomCreateBody, communityRoomUpdateBody, communityMessagesQuery, communityMessageBodySchema, communityPostTitleSchema, communityAttachmentUploadSchema, communitySendBody, communityEditBody, communityPostIdParam, communityPostsQuery, communityAnswerBody, communityReadBody, communityAttachmentUrlsBody, communityPersonParam, communityOrgParam, communityPeopleQuery, communityCoursesLabelSchema, communityAdmissionSchema, communitySettingsBody, communityAccessEmailSchema, communityAccessAddBody, communityAccessQuery, communityAccessIdParam, communityBanBody, communityLockBody, communityPinBody, communityModLogQuery, communityReportsQuery, communityReportIdParam, communityLiveTicketSchema, communityLiveQuery, communityMuteBody, communityEmailUnsubscribeTokenSchema, COMMUNITY_EMAIL_UNSUBSCRIBE_PATH, communityEmailUnsubscribeQuery, COMMUNITY_COURSES_MAX, COMMUNITY_COURSE_MODULES_MAX, COMMUNITY_COURSE_LESSONS_MAX, COMMUNITY_LESSONS_MAX, COMMUNITY_COURSE_TITLE_MAX_LENGTH, COMMUNITY_COURSE_DESCRIPTION_MAX_LENGTH, COMMUNITY_LESSON_BODY_MAX_LENGTH, COMMUNITY_LESSON_LINKS_MAX, COMMUNITY_LESSON_URL_MAX_LENGTH, YOUTUBE_ID, YOUTUBE_HOSTS, YOUTU_BE, YOUTUBE_ID_PATH, communityCourseIdParam, communityCourseModuleIdParam, communityLessonIdParam, communityCourseTitleSchema, communityCourseDescriptionSchema, communityCoursePositionSchema, communityLessonVideoUrlSchema, communityLessonLinkSchema, communityLessonLinksSchema, communityLessonBodySchema, communityCourseCreateBody, communityCourseUpdateBody, communityModuleCreateBody, communityModuleUpdateBody, communityLessonCreateBody, communityLessonUpdateBody, COMMUNITY_LESSON_TREE_MAX_BYTES, COMMUNITY_LESSON_LINK_PROTOCOLS, COMMUNITY_LESSON_TREE_TOO_LARGE_REASON, COMMUNITY_LESSON_TREE_TOO_DEEP_REASON, COMMUNITY_LESSON_LINE_PREFIX_TOO_WIDE_REASON, LINK_SCHEME, adminSetGuideHubBody, GUIDE_HUB_INELIGIBLE_REASON;
9632
+ var init_chunk_SKU3THIQ = __esm({
9633
+ "../../packages/core/dist/chunk-SKU3THIQ.js"() {
9798
9634
  "use strict";
9799
- init_chunk_VORPHGDT();
9800
- init_chunk_POL7B3EM();
9801
- init_chunk_YV4TZ2HR();
9635
+ init_chunk_5YF23MWO();
9636
+ init_chunk_M3Q4GZSD();
9802
9637
  init_chunk_MIWZOSPI();
9638
+ init_chunk_VORPHGDT();
9803
9639
  init_chunk_3NS3HULK();
9804
- init_chunk_JWPRTSIB();
9640
+ init_chunk_52U34QCF();
9805
9641
  init_chunk_T7KQKDET();
9806
9642
  init_zod();
9807
9643
  init_zod();
@@ -9855,7 +9691,6 @@ var init_chunk_GI5ELTXF = __esm({
9855
9691
  init_zod();
9856
9692
  init_zod();
9857
9693
  init_zod();
9858
- init_zod();
9859
9694
  connectionIdParam = external_exports.object({ id: uuidSchema });
9860
9695
  connectorIdParam = external_exports.object({ id: uuidSchema });
9861
9696
  listConnectionsQuery = external_exports.object({ hub_id: uuidSchema });
@@ -12052,31 +11887,6 @@ var init_chunk_GI5ELTXF = __esm({
12052
11887
  debugMessageIdQuery = external_exports.object({
12053
11888
  message_id: debugUuid.optional()
12054
11889
  });
12055
- sandboxEgressPolicy = external_exports.enum(["open", "allowlist", "isolated"]);
12056
- SANDBOX_EXEC_MAX_CMD_LENGTH = 4096;
12057
- SANDBOX_EXEC_MAX_ALLOWLIST = 64;
12058
- SANDBOX_EXEC_MAX_TIMEOUT_MS = 3e5;
12059
- adminSandboxExecBody = external_exports.object({
12060
- /** Hub owning the E2B Sandbox connection whose credential we resolve. */
12061
- hub_id: uuidSchema,
12062
- /** The Sandbox (E2B) connection to source the api_key from. */
12063
- connection_id: uuidSchema,
12064
- /** Shell command to run in the sandbox. Required, bounded length. */
12065
- cmd: external_exports.string().min(1, "cmd is required").max(SANDBOX_EXEC_MAX_CMD_LENGTH, `cmd must be <= ${SANDBOX_EXEC_MAX_CMD_LENGTH} chars`),
12066
- /**
12067
- * Egress posture. Omitted ⇒ the driver fails closed to deny-all outbound (the
12068
- * safe default). The route re-validates the (policy, allowlist) pair via
12069
- * `validateEgressConfig`.
12070
- */
12071
- egress_policy: sandboxEgressPolicy.optional(),
12072
- /**
12073
- * Hosts/CIDRs reachable under `allowlist` (or the single control host under
12074
- * `isolated`). Ignored under `open`. Bounded count.
12075
- */
12076
- egress_allowlist: external_exports.array(external_exports.string().min(1).max(253)).max(SANDBOX_EXEC_MAX_ALLOWLIST, `at most ${SANDBOX_EXEC_MAX_ALLOWLIST} allowlist entries`).optional(),
12077
- /** Sandbox wall-clock lifetime in ms (bounded). */
12078
- timeout_ms: external_exports.number().int().min(1).max(SANDBOX_EXEC_MAX_TIMEOUT_MS).optional()
12079
- });
12080
11890
  META_ENTITY_ID_PATTERN = /^\d{1,32}$/;
12081
11891
  metaEntityId = external_exports.string().regex(META_ENTITY_ID_PATTERN, "must be a numeric Meta entity id");
12082
11892
  whatsappCallbackBody = external_exports.object({
@@ -13298,18 +13108,18 @@ var init_chunk_BPDC67ML = __esm({
13298
13108
  var init_contracts = __esm({
13299
13109
  "../../packages/core/dist/contracts/index.js"() {
13300
13110
  "use strict";
13301
- init_chunk_GI5ELTXF();
13302
- init_chunk_VORPHGDT();
13303
- init_chunk_POL7B3EM();
13304
- init_chunk_YV4TZ2HR();
13111
+ init_chunk_SKU3THIQ();
13112
+ init_chunk_5YF23MWO();
13113
+ init_chunk_M3Q4GZSD();
13305
13114
  init_chunk_SNA2DXAC();
13306
13115
  init_chunk_MIWZOSPI();
13307
13116
  init_chunk_LKBSHANA();
13117
+ init_chunk_VORPHGDT();
13308
13118
  init_chunk_IBL7FANV();
13309
13119
  init_chunk_2ISUBJG7();
13310
13120
  init_chunk_C2UEA2KW();
13311
13121
  init_chunk_3NS3HULK();
13312
- init_chunk_JWPRTSIB();
13122
+ init_chunk_52U34QCF();
13313
13123
  init_chunk_T7KQKDET();
13314
13124
  init_chunk_L5F7ZOUJ();
13315
13125
  init_chunk_BPDC67ML();
@@ -13442,12 +13252,7 @@ var init_api_client = __esm({
13442
13252
  async adminSkillInstall(name) {
13443
13253
  return this.request("GET", `/api/admin/skills/${encodeURIComponent(name)}`);
13444
13254
  }
13445
- // Run a shell command in a fresh E2B sandbox (platform-admin gated — the
13446
- // harness-agents PR 1.5 isolation surface). Never carries the E2B key.
13447
- async adminSandboxExec(body) {
13448
- return this.request("POST", "/api/admin/sandbox/exec", body);
13449
- }
13450
- // Reap every live harness sandbox / token / slot in scope (platform-admin gated
13255
+ // Reap every live harness session / token / slot in scope (platform-admin gated
13451
13256
  // — the harness-agents PR 2.9b incident-response surface). Never carries tokens.
13452
13257
  async adminHarnessMassDestroy(body) {
13453
13258
  return this.request("POST", "/api/admin/harness/mass-destroy", body);
@@ -14098,35 +13903,6 @@ var init_api_client = __esm({
14098
13903
  `/api/admin/data-explorer/debug/archive/${encodeURIComponent(hubId)}/conversations/${encodeURIComponent(conversationId)}${qs}`
14099
13904
  );
14100
13905
  }
14101
- /**
14102
- * Download the harness sandbox FILESYSTEM archive (harness-agents PR 2.12) as
14103
- * raw zip bytes. Distinct from the JSON `request<T>` path — the response is a
14104
- * binary `application/zip`, so this reads `arrayBuffer()`. Single-refresh-on-401
14105
- * like `request`, but no transient-retry loop (a large binary GET is idempotent
14106
- * but not worth re-streaming on a cold-start body probe). 404 ⇒ ApiError (no
14107
- * sandbox for this conversation, or the blob was purged).
14108
- */
14109
- async downloadArchiveSandboxFs(hubId, conversationId) {
14110
- const path41 = `/api/archive/${encodeURIComponent(hubId)}/conversations/${encodeURIComponent(conversationId)}/sandbox`;
14111
- addApiBreadcrumb("GET", path41);
14112
- const url = `${this.apiUrl}${path41}`;
14113
- let response = await this.send(url, "GET");
14114
- if (response.status === 401 && this.onUnauthorized) {
14115
- let refreshed;
14116
- try {
14117
- refreshed = await this.onUnauthorized();
14118
- } catch {
14119
- }
14120
- if (refreshed) {
14121
- this.accessToken = refreshed;
14122
- response = await this.send(url, "GET");
14123
- }
14124
- }
14125
- if (!response.ok) {
14126
- throw new ApiError("GET", path41, response.status, await response.text());
14127
- }
14128
- return new Uint8Array(await response.arrayBuffer());
14129
- }
14130
13906
  /**
14131
13907
  * List per-message observability metadata summaries for a conversation (hub-scoped auth). The
14132
13908
  * hub is named so the backend checks the conversation's row names it; a request naming none is
@@ -14519,14 +14295,14 @@ var ENDPOINT_CONFIGS, UUID_RE2, WAYAI_WORKSPACE_LAYOUT;
14519
14295
  var init_dist = __esm({
14520
14296
  "../../packages/core/dist/index.js"() {
14521
14297
  "use strict";
14522
- init_chunk_P3AWZG3N();
14523
- init_chunk_GI5ELTXF();
14524
- init_chunk_VORPHGDT();
14525
- init_chunk_POL7B3EM();
14526
- init_chunk_YV4TZ2HR();
14298
+ init_chunk_SKU3THIQ();
14299
+ init_chunk_5YF23MWO();
14300
+ init_chunk_M3Q4GZSD();
14527
14301
  init_chunk_SNA2DXAC();
14528
14302
  init_chunk_MIWZOSPI();
14529
14303
  init_chunk_LKBSHANA();
14304
+ init_chunk_P3AWZG3N();
14305
+ init_chunk_VORPHGDT();
14530
14306
  init_chunk_IBL7FANV();
14531
14307
  init_chunk_ERFR7IRY();
14532
14308
  init_chunk_2ISUBJG7();
@@ -14534,7 +14310,7 @@ var init_dist = __esm({
14534
14310
  init_chunk_RPGBR5IN();
14535
14311
  init_chunk_C2UEA2KW();
14536
14312
  init_chunk_3NS3HULK();
14537
- init_chunk_JWPRTSIB();
14313
+ init_chunk_52U34QCF();
14538
14314
  init_chunk_BF4WRSOQ();
14539
14315
  init_chunk_T7KQKDET();
14540
14316
  init_chunk_L5F7ZOUJ();
@@ -14828,20 +14604,8 @@ var init_dist = __esm({
14828
14604
  failClosed: true,
14829
14605
  userLimitKey: "/api/admin/data-explorer/*"
14830
14606
  },
14831
- // Admin sandbox exec (harness-agents PR 1.5) — this is ARBITRARY CODE EXECUTION,
14832
- // so it gets the strictest budget on the platform: STRICT tier + a low per-user
14833
- // hourly cap (well below the debug-read cap) + fail-closed. Platform-admin
14834
- // is enforced at the route; this is the independent defense-in-depth signal so a
14835
- // runaway exec loop surfaces as 429 instead of silently provisioning sandboxes.
14836
- "/api/admin/sandbox/*": {
14837
- tier: "STRICT",
14838
- userLimit: 20,
14839
- userWindow: 3600,
14840
- failClosed: true,
14841
- userLimitKey: "/api/admin/sandbox/*"
14842
- },
14843
14607
  // Admin harness incident-response (harness-agents PR 2.9b) — mass-destroy reaps
14844
- // EVERY live harness sandbox/token/slot in scope, so it gets a strict budget
14608
+ // EVERY live harness session/token/slot in scope, so it gets a strict budget
14845
14609
  // (STRICT + a low per-user hourly cap + fail-closed). Platform-admin is enforced
14846
14610
  // at the route; this is the independent defense-in-depth signal so a runaway
14847
14611
  // reap loop surfaces as 429. The break-glass disable/enable rides through
@@ -16374,7 +16138,7 @@ var init_utils = __esm({
16374
16138
  ["report accept", { positionals: 1 }],
16375
16139
  ["report contest", { positionals: 1, values: ["--reason"] }],
16376
16140
  ["update", { positionals: 0 }],
16377
- ["admin archive", { positionals: 2, values: ["--message-id", "--out"] }],
16141
+ ["admin archive", { positionals: 2, values: ["--message-id"] }],
16378
16142
  ["admin observability", { positionals: 2, values: ["--message-id"] }],
16379
16143
  ["admin do tables", { positionals: 2 }],
16380
16144
  ["admin do read", { positionals: 3, values: ["--limit", "--id"] }],
@@ -16401,7 +16165,6 @@ var init_utils = __esm({
16401
16165
  ["admin notice list", { positionals: 0, values: ["--status", "--limit", "--offset"] }],
16402
16166
  ["admin notice resolve", { positionals: 1 }],
16403
16167
  ["admin skill install", { positionals: 1 }],
16404
- ["admin sandbox exec", { positionals: 1, values: ["--hub", "--connection", "--cmd", "--egress", "--allow", "--timeout"] }],
16405
16168
  ["admin hubs repair-team-orphans", { positionals: 0, values: ["--org", "--hub"], dryRun: true }],
16406
16169
  ["admin hubs repair-branching-orphans", { positionals: 0, values: ["--org", "--hub", "--id"], dryRun: true }],
16407
16170
  ["admin orgs repair-legacy-grants", { positionals: 0, values: ["--org"], dryRun: true }],
@@ -18191,7 +17954,7 @@ var init_whoami = __esm({
18191
17954
  var init_constants = __esm({
18192
17955
  "../../packages/core/dist/constants.js"() {
18193
17956
  "use strict";
18194
- init_chunk_JWPRTSIB();
17957
+ init_chunk_52U34QCF();
18195
17958
  }
18196
17959
  });
18197
17960
 
@@ -32202,21 +31965,6 @@ async function adminCommand(args2) {
32202
31965
  process.exit(1);
32203
31966
  }
32204
31967
  }
32205
- if (group === "sandbox") {
32206
- if (!sub) {
32207
- printHelp2();
32208
- process.exit(1);
32209
- }
32210
- switch (sub) {
32211
- // The command is positional after `exec`; the rest are flags.
32212
- case "exec":
32213
- await runSandboxExec(positional, flagArgs);
32214
- return;
32215
- default:
32216
- printHelp2();
32217
- process.exit(1);
32218
- }
32219
- }
32220
31968
  if (group === "hubs") {
32221
31969
  if (!sub) {
32222
31970
  printHelp2();
@@ -32460,31 +32208,14 @@ async function runAnalyticsRead(positional, flagArgs) {
32460
32208
  }
32461
32209
  async function runArchiveRead(positional, flagArgs) {
32462
32210
  if (positional.length < 2) {
32463
- console.error("wayai admin archive <hub_id> <conversation_id> [--message-id X] [--sandbox [--out <path>]] [--json]");
32211
+ console.error("wayai admin archive <hub_id> <conversation_id> [--message-id X] [--json]");
32464
32212
  process.exit(1);
32465
32213
  }
32466
32214
  const hubId = positional[0];
32467
32215
  const conversationId = positional[1];
32468
- const flags = parseFlags2(flagArgs, ["--json", "--message-id", "--sandbox", "--out"]);
32216
+ const flags = parseFlags2(flagArgs, ["--json", "--message-id"]);
32469
32217
  const { config, accessToken } = await requireAuth();
32470
32218
  const client = new ApiClient({ apiUrl: config.api_url, accessToken });
32471
- if (flags.sandbox) {
32472
- const outPath = flags.out || `${conversationId}-sandbox.zip`;
32473
- let zip;
32474
- try {
32475
- zip = await client.downloadArchiveSandboxFs(hubId, conversationId);
32476
- } catch (err) {
32477
- if (err instanceof ApiError && err.status === 404) {
32478
- console.error("Sandbox archive not found. This conversation had no harness sandbox, or the R2 blob was purged.");
32479
- process.exit(1);
32480
- }
32481
- exitOnApiError(err);
32482
- throw err;
32483
- }
32484
- fs29.writeFileSync(outPath, zip);
32485
- console.log(`Wrote ${zip.byteLength} bytes to ${outPath}`);
32486
- return;
32487
- }
32488
32219
  let response;
32489
32220
  try {
32490
32221
  response = await client.debugReadArchive(hubId, conversationId, {
@@ -32573,18 +32304,12 @@ function parseFlags2(flagArgs, allowed) {
32573
32304
  out.jsonOutput = true;
32574
32305
  continue;
32575
32306
  }
32576
- if (arg === "--sandbox") {
32577
- out.sandbox = true;
32578
- continue;
32579
- }
32580
32307
  const v = flagArgs[++i];
32581
32308
  if (!v) {
32582
32309
  console.error(`${arg} requires a value`);
32583
32310
  process.exit(1);
32584
32311
  }
32585
- if (arg === "--out") {
32586
- out.out = v;
32587
- } else if (arg === "--limit") {
32312
+ if (arg === "--limit") {
32588
32313
  const n = Number.parseInt(v, 10);
32589
32314
  if (!Number.isFinite(n)) {
32590
32315
  console.error("--limit must be an integer");
@@ -32634,112 +32359,6 @@ async function runSkillInstall(positional) {
32634
32359
  console.log(`Installed skill "${name}" (${fileCount} file${fileCount === 1 ? "" : "s"}) \u2192 ${relDirs.join(", ")}`);
32635
32360
  console.log("Reload your agent (e.g. restart Claude Code) to pick up the skill.");
32636
32361
  }
32637
- async function runSandboxExec(positional, flagArgs) {
32638
- const USAGE3 = 'wayai admin sandbox exec [--cmd "<command>" | <command>] --hub <hub_id> --connection <connection_id> [--egress open|allowlist|isolated] [--allow <host> ...] [--timeout <ms>] [--json]';
32639
- let hubId;
32640
- let connectionId;
32641
- let egress;
32642
- let cmdFlag;
32643
- let timeoutMs;
32644
- let jsonOutput = false;
32645
- const allow = [];
32646
- for (let i = 0; i < flagArgs.length; i++) {
32647
- const arg = flagArgs[i];
32648
- switch (arg) {
32649
- case "--json":
32650
- jsonOutput = true;
32651
- break;
32652
- case "--hub":
32653
- hubId = requireFlagValue(flagArgs, ++i, "--hub");
32654
- break;
32655
- case "--connection":
32656
- connectionId = requireFlagValue(flagArgs, ++i, "--connection");
32657
- break;
32658
- case "--cmd":
32659
- cmdFlag = requireFlagValue(flagArgs, ++i, "--cmd");
32660
- break;
32661
- case "--egress": {
32662
- const v = requireFlagValue(flagArgs, ++i, "--egress");
32663
- const parsed = sandboxEgressPolicy.safeParse(v);
32664
- if (!parsed.success) {
32665
- console.error(`--egress must be one of: ${sandboxEgressPolicy.options.join(", ")}`);
32666
- process.exit(1);
32667
- }
32668
- egress = parsed.data;
32669
- break;
32670
- }
32671
- case "--allow":
32672
- allow.push(requireFlagValue(flagArgs, ++i, "--allow"));
32673
- break;
32674
- case "--timeout": {
32675
- const v = requireFlagValue(flagArgs, ++i, "--timeout");
32676
- const n = Number.parseInt(v, 10);
32677
- if (!Number.isFinite(n) || n < 1) {
32678
- console.error("--timeout must be a positive integer (milliseconds)");
32679
- process.exit(1);
32680
- }
32681
- timeoutMs = n;
32682
- break;
32683
- }
32684
- default:
32685
- console.error(`Unknown flag: ${arg}`);
32686
- process.exit(1);
32687
- }
32688
- }
32689
- const positionalCmd = positional[0];
32690
- if (positional.length > 1) {
32691
- console.error("Provide the command as a single quoted argument (or use --cmd).");
32692
- console.error(USAGE3);
32693
- process.exit(1);
32694
- }
32695
- if (positionalCmd && cmdFlag) {
32696
- console.error("Provide the command EITHER positionally OR via --cmd, not both.");
32697
- process.exit(1);
32698
- }
32699
- const cmd = cmdFlag ?? positionalCmd;
32700
- if (!cmd || !hubId || !connectionId) {
32701
- console.error(USAGE3);
32702
- process.exit(1);
32703
- }
32704
- const body = {
32705
- hub_id: hubId,
32706
- connection_id: connectionId,
32707
- cmd,
32708
- ...egress ? { egress_policy: egress } : {},
32709
- ...allow.length > 0 ? { egress_allowlist: allow } : {},
32710
- ...timeoutMs !== void 0 ? { timeout_ms: timeoutMs } : {}
32711
- };
32712
- const { config, accessToken } = await requireAuth();
32713
- const client = new ApiClient({ apiUrl: config.api_url, accessToken });
32714
- let response;
32715
- try {
32716
- response = await client.adminSandboxExec(body);
32717
- } catch (err) {
32718
- exitOnApiError(err);
32719
- throw err;
32720
- }
32721
- const data = response.data;
32722
- if (jsonOutput) {
32723
- console.log(JSON.stringify(data, null, 2));
32724
- return;
32725
- }
32726
- console.log(`exit_code: ${data.exit_code}`);
32727
- console.log(`sandbox_id: ${data.sandbox_id}`);
32728
- if (!data.destroyed) {
32729
- console.log("warning: sandbox destroy failed on the backend (leak logged; cron will reap it)");
32730
- }
32731
- if (data.stdout) {
32732
- console.log("--- stdout ---");
32733
- console.log(data.stdout.replace(/\n$/, ""));
32734
- }
32735
- if (data.stderr) {
32736
- console.log("--- stderr ---");
32737
- console.log(data.stderr.replace(/\n$/, ""));
32738
- }
32739
- if (data.exit_code !== 0) {
32740
- process.exit(data.exit_code);
32741
- }
32742
- }
32743
32362
  function parseScopedTargetFlags(flagArgs, usage3, opts = {}) {
32744
32363
  const scopes = opts.scopes ?? ["all", "org", "hub"];
32745
32364
  let all = false;
@@ -32981,8 +32600,8 @@ async function runHarnessMassDestroy(flagArgs) {
32981
32600
  const USAGE3 = "wayai admin harness mass-destroy --all | --org <org_id> | --hub <hub_id> [--dry-run] [--yes] [--json]";
32982
32601
  const { body, targetLabel, dryRun, yes, jsonOutput } = parseScopedTargetFlags(flagArgs, USAGE3);
32983
32602
  if (!dryRun && !yes && !jsonOutput) {
32984
- console.log(`About to REAP every live harness sandbox / token / slot in: ${targetLabel}.`);
32985
- console.log("This destroys running sandboxes and revokes their tokens. Run with --dry-run first to see the blast radius.");
32603
+ console.log(`About to REAP every live harness session / token / slot in: ${targetLabel}.`);
32604
+ console.log("This destroys running harness sessions and revokes their tokens. Run with --dry-run first to see the blast radius.");
32986
32605
  const ok = await confirm("Proceed?");
32987
32606
  if (!ok) {
32988
32607
  console.log("Aborted.");
@@ -33017,11 +32636,11 @@ async function runHarnessMassDestroy(flagArgs) {
33017
32636
  return;
33018
32637
  }
33019
32638
  console.log("");
33020
- console.log("hub_id | conversation_id | had_sandbox | sandbox_destroyed | reaped");
33021
- console.log("-------+-----------------+-------------+-------------------+-------");
32639
+ console.log("hub_id | conversation_id | sandbox_destroyed | reaped");
32640
+ console.log("-------+-----------------+-------------------+-------");
33022
32641
  for (const d of data.details) {
33023
32642
  console.log(
33024
- `${d.hub_id} | ${d.conversation_id} | ${d.had_sandbox} | ${d.sandbox_destroyed} | ${d.reaped}`
32643
+ `${d.hub_id} | ${d.conversation_id} | ${d.sandbox_destroyed} | ${d.reaped}`
33025
32644
  );
33026
32645
  }
33027
32646
  }
@@ -33914,7 +33533,7 @@ Usage:
33914
33533
  wayai admin analytics tables
33915
33534
  wayai admin analytics read <table> [--conversation-id X] [--hub-id Y] [--message-id Z] [--limit N] [--json]
33916
33535
 
33917
- wayai admin archive <hub_id> <conversation_id> [--message-id X] [--sandbox [--out <path>]] [--json]
33536
+ wayai admin archive <hub_id> <conversation_id> [--message-id X] [--json]
33918
33537
 
33919
33538
  wayai admin observability <hub_id> <conversation_id> [--message-id X] [--json]
33920
33539
 
@@ -33946,9 +33565,6 @@ Usage:
33946
33565
 
33947
33566
  wayai admin skill install [name] Install a private operator skill (default: wayai-admin) into each present harness's skills/ dir
33948
33567
 
33949
- wayai admin sandbox exec [--cmd "<c>" | <c>] --hub <id> --connection <id> [--egress open|allowlist|isolated] [--allow <host> ...] [--timeout <ms>] [--json]
33950
- Run one shell command in a fresh E2B sandbox (create \u2192 run \u2192 destroy) to test the sandbox driver + egress gate
33951
-
33952
33568
  wayai admin hubs repair-team-orphans --all | --org <org_id> | --hub <hub_id> [--dry-run] [--yes] [--json]
33953
33569
  Purge hub_team_id references left dangling by a pre-cascade team deletion (silently empties a support agent's queue). Idempotent \u2014 run --dry-run first
33954
33570
 
@@ -33962,7 +33578,7 @@ Usage:
33962
33578
  wayai admin harness enable Flip the platform harness_enabled flag ON
33963
33579
  wayai admin harness status Print the platform harness_enabled flag
33964
33580
  wayai admin harness mass-destroy --all | --org <org_id> | --hub <hub_id> [--dry-run] [--yes] [--json]
33965
- Reap every live harness sandbox/token/slot in scope (run --dry-run first to see the blast radius)
33581
+ Reap every live harness session/token/slot in scope (run --dry-run first to see the blast radius)
33966
33582
 
33967
33583
  wayai admin voice-calls enable Flip the platform voice_calls_enabled kill switch ON (every org)
33968
33584
  wayai admin voice-calls disable Flip it OFF: every voice-call surface goes dark for every org
@@ -34048,17 +33664,12 @@ Sources:
34048
33664
  to a real person and sends no email, so read --dry-run output as the list of
34049
33665
  people about to get access. Idempotent.
34050
33666
 
34051
- sandbox Run arbitrary code in a fresh E2B sandbox (harness-agents isolation surface).
34052
- \`exec\` provisions a sandbox from a named Sandbox connection, runs one
34053
- command, and destroys it. Egress omitted \u21D2 deny-all (fail-closed); opt up
34054
- with --egress + --allow. The E2B key never leaves the backend. Capped at
34055
- 20 execs/hour/user (the strictest tier \u2014 this is arbitrary code execution).
34056
33667
  harness Incident response for harness agents. \`disable\`/\`enable\` flip the single
34057
33668
  PLATFORM-wide harness_enabled flag; \`status\` prints it. That one flag both
34058
33669
  gates harness-agent create/update (default-deny, fail-closed) and drives
34059
33670
  the per-turn kill switch, so \`disable\` is the break-glass: each harness
34060
33671
  turn aborts on its next invocation. \`mass-destroy\` reaps every harness
34061
- sandbox/token/slot that is live NOW (scope: --hub < --org < --all, prefer
33672
+ session/token/slot that is live NOW (scope: --hub < --org < --all, prefer
34062
33673
  the narrowest). Run \`mass-destroy --dry-run\` first to see the blast
34063
33674
  radius.
34064
33675
  voice-calls The voice-calls gate, default-deny: the PLATFORM-wide voice_calls_enabled
@@ -34100,11 +33711,8 @@ Examples:
34100
33711
  wayai admin analytics read conversation --conversation-id <conv-id>
34101
33712
  wayai admin archive <hub-id> <conv-id>
34102
33713
  wayai admin archive <hub-id> <conv-id> --message-id <msg-id> --json
34103
- wayai admin archive <hub-id> <conv-id> --sandbox --out session.zip
34104
33714
  wayai admin observability <hub-id> <conv-id>
34105
33715
  wayai admin observability <hub-id> <conv-id> --message-id <msg-id> --json
34106
- wayai admin sandbox exec "echo hi" --hub <hub-id> --connection <conn-id>
34107
- wayai admin sandbox exec --cmd "curl -s https://api.github.com" --hub <hub-id> --connection <conn-id> --egress allowlist --allow api.github.com
34108
33716
  wayai admin hubs repair-branching-orphans --hub <prod-hub-id>
34109
33717
  wayai admin hubs repair-branching-orphans --hub <prod-hub-id> --id connection:<id> --dry-run
34110
33718
  wayai admin orgs repair-legacy-grants --all --dry-run
@@ -35141,7 +34749,7 @@ var init_import = __esm({
35141
34749
 
35142
34750
  // src/data/commands/providers.ts
35143
34751
  import { Command as Command5 } from "commander";
35144
- import { writeFileSync as writeFileSync11 } from "fs";
34752
+ import { writeFileSync as writeFileSync10 } from "fs";
35145
34753
  function providerSegment(provider) {
35146
34754
  if (!VALID_PROVIDERS.includes(provider)) {
35147
34755
  throw expected(`Unknown provider ${JSON.stringify(provider)}. Expected one of: ${VALID_PROVIDERS_HELP}.`);
@@ -35174,7 +34782,7 @@ function buildBasesProvidersCommand() {
35174
34782
  );
35175
34783
  if (opts.to) {
35176
34784
  try {
35177
- writeFileSync11(opts.to, JSON.stringify(data, null, 2));
34785
+ writeFileSync10(opts.to, JSON.stringify(data, null, 2));
35178
34786
  } catch (e) {
35179
34787
  throw expected(`--to ${opts.to}: ${e instanceof Error ? e.message : "could not be written"}`);
35180
34788
  }
@@ -36259,7 +35867,7 @@ var init_file_types = __esm({
36259
35867
 
36260
35868
  // src/data/commands/files.ts
36261
35869
  import { Command as Command12 } from "commander";
36262
- import { readFileSync as readFileSync23, writeFileSync as writeFileSync12 } from "fs";
35870
+ import { readFileSync as readFileSync23, writeFileSync as writeFileSync11 } from "fs";
36263
35871
  import { basename as basename25 } from "path";
36264
35872
  function renderFileDiff(fileType, filePath, from, to, d) {
36265
35873
  console.log(sanitizeTerminalText(`${fileType}/${filePath}: v${from} \u2192 v${to}`));
@@ -36339,7 +35947,7 @@ function buildFilesCommand() {
36339
35947
  const { bytes } = await client.download(
36340
35948
  `/v1/${base}/files/${pathSegment(fileType, "file_type")}/${encoded}${versionQs ? `?${versionQs}` : ""}`
36341
35949
  );
36342
- writeFileSync12(out, bytes);
35950
+ writeFileSync11(out, bytes);
36343
35951
  console.log(`Downloaded to ${out}`);
36344
35952
  });
36345
35953
  files.command("history <file_type> <path>").description("List the content versions of a file (newest first)").option("--limit <n>", "Max versions to return").option("--offset <n>", "Pagination offset").action(async function(fileType, filePath, opts) {