@wayai/cli 0.3.212 → 0.3.214

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
@@ -512,7 +512,7 @@ var init_chunk_VORPHGDT = __esm({
512
512
  }
513
513
  });
514
514
 
515
- // ../../packages/core/dist/chunk-POL7B3EM.js
515
+ // ../../packages/core/dist/chunk-P5OUVLFP.js
516
516
  function spokenLineField(label, description2) {
517
517
  return { type: "text", label, maxLength: SPOKEN_LINE_MAX_CHARS, default: "", description: description2 };
518
518
  }
@@ -521,9 +521,9 @@ function byLowercaseName(a, b) {
521
521
  const y = b.connector_name.toLowerCase();
522
522
  return x < y ? -1 : x > y ? 1 : 0;
523
523
  }
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"() {
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, 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;
525
+ var init_chunk_P5OUVLFP = __esm({
526
+ "../../packages/core/dist/chunk-P5OUVLFP.js"() {
527
527
  "use strict";
528
528
  CALLER_LANGUAGE = "caller";
529
529
  TTS_VOICE_REPLY_ENABLED_FIELD = {
@@ -1285,45 +1285,36 @@ var init_chunk_POL7B3EM = __esm({
1285
1285
  token_refresh_config: { bearer: { strategy: "none" }, oauth: { strategy: "refresh_token_flow", access_token: { refresh_window_hours: 1 }, refresh_token: { has_expiry: false } } },
1286
1286
  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
1287
  };
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"],
1288
+ REKOR_TOOLSET_SERVICE_NAME = "RekorToolset";
1289
+ rekorToolset = {
1290
+ connector_id: "2cf279bf-29ae-4983-a67f-bf619e391586",
1291
+ service_name: REKOR_TOOLSET_SERVICE_NAME,
1292
+ connector_type: "Tool",
1293
+ tool_variant: "native",
1294
+ connector_name: "Base Toolset",
1295
+ authentication_types: ["bearer"],
1294
1296
  init_endpoint: null,
1295
- unique_per_hub: true,
1297
+ unique_per_hub: false,
1296
1298
  account_sid_placeholder: null,
1297
1299
  models: null,
1298
- is_internal: true,
1300
+ is_internal: false,
1299
1301
  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,
1302
+ connector_module: null,
1303
+ enabled: false,
1307
1304
  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." }
1305
+ toolset: { type: "text", label: "Toolset", default: "", placeholder: "support", description: "The toolset this connection reaches: its slug, as in its MCP URL (\u2026/t/<slug>/mcp). The token must be bound to it.", required: true }
1315
1306
  },
1316
1307
  agent_settings_schema: null,
1317
1308
  channel_settings_schema: null,
1318
1309
  tool_settings_schema: null,
1319
1310
  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__" }
1311
+ bearer: {
1312
+ connection_display_name: { type: "text", label: "Connection Name", placeholder: "Support knowledge", description: "This name will be used to identify the connection in the system", required: true },
1313
+ access_token: { type: "password", label: "Toolset Token", placeholder: "rec_\u2026", description: "An API token bound to this toolset. It must be for a base of this hub's environment: a preview hub holds a preview base's token, a production hub a production base's.", required: true, maskInEdit: true, useExistingPlaceholder: "__USE_EXISTING_ACCESS_TOKEN__" }
1323
1314
  }
1324
1315
  },
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."
1316
+ token_refresh_config: { bearer: { strategy: "none" } },
1317
+ connector_description: "Give agents one toolset of a base: its tools, through a token bound to that toolset."
1327
1318
  };
1328
1319
  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
1320
  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" }];
@@ -1331,57 +1322,8 @@ var init_chunk_POL7B3EM = __esm({
1331
1322
  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
1323
  };
1333
1324
  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."
1325
+ 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." },
1326
+ 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
1327
  };
1386
1328
  claudeManagedAgents = {
1387
1329
  connector_id: "4b8eeecf-a835-444a-abed-516d0a29cee2",
@@ -1402,11 +1344,10 @@ var init_chunk_POL7B3EM = __esm({
1402
1344
  agent_settings_schema: {
1403
1345
  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
1346
  ...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.
1347
+ // The managed session is conversation-lifetime and is NOT reaped at this deadline.
1407
1348
  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
1349
  ...HARNESS_EGRESS_FIELDS,
1409
- // repo_url only — NOT the shared HARNESS_REPO_FIELDS. The Managed Agents
1350
+ // repo_url only, with no `repo_branch`. The Managed Agents
1410
1351
  // `github_repository` resource exposes no branch/ref/checkout field, so a
1411
1352
  // `repo_branch` setting could not be honoured; per this connector's own rule it is
1412
1353
  // ABSENT rather than silently ignored. Working on a non-default branch is an
@@ -1426,77 +1367,6 @@ var init_chunk_POL7B3EM = __esm({
1426
1367
  token_refresh_config: { api_key: { strategy: "none" } },
1427
1368
  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
1369
  };
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
1370
  SPOKEN_LINE_MAX_CHARS = 300;
1501
1371
  gptLive = {
1502
1372
  connector_id: "01e7b19c-bc94-43f4-a780-ad5a22fb7127",
@@ -1551,9 +1421,7 @@ var init_chunk_POL7B3EM = __esm({
1551
1421
  CONNECTORS = [
1552
1422
  anthropic,
1553
1423
  apiChannel,
1554
- claudeAgentSdk,
1555
1424
  claudeManagedAgents,
1556
- e2b,
1557
1425
  elevenLabsStt,
1558
1426
  elevenLabsTts,
1559
1427
  externalResources,
@@ -1568,10 +1436,10 @@ var init_chunk_POL7B3EM = __esm({
1568
1436
  openai,
1569
1437
  openaiStt,
1570
1438
  openaiTts,
1571
- rekorMemory,
1572
1439
  resend,
1573
1440
  telegram,
1574
1441
  restApiTool,
1442
+ rekorToolset,
1575
1443
  wayai,
1576
1444
  whatsapp,
1577
1445
  xai
@@ -6684,14 +6552,14 @@ var init_chunk_3NS3HULK = __esm({
6684
6552
  }
6685
6553
  });
6686
6554
 
6687
- // ../../packages/core/dist/chunk-JWPRTSIB.js
6555
+ // ../../packages/core/dist/chunk-DHPUPI4Y.js
6688
6556
  function normalizeAuthType(raw) {
6689
6557
  if (VALID_AUTH_TYPES.has(raw)) return raw;
6690
6558
  return LEGACY_AUTH_TYPE_MAP[raw] ?? raw;
6691
6559
  }
6692
- 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"() {
6560
+ var AUTH_TYPE, ORG_CREDENTIAL_AUTH_TYPES, AUTH_TYPE_DISPLAY, LEGACY_AUTH_TYPE_MAP, VALID_AUTH_TYPES, AGENT_ROLES, PILOT_TRACK_ROLES, CUSTOMER_FACING_AGENT_ROLES, SAFE_USER_ID_REGEX, SUPPORTED_LOCALES, SKILL_INSTALL_COMMAND;
6561
+ var init_chunk_DHPUPI4Y = __esm({
6562
+ "../../packages/core/dist/chunk-DHPUPI4Y.js"() {
6695
6563
  "use strict";
6696
6564
  AUTH_TYPE = {
6697
6565
  OAUTH: "oauth",
@@ -6736,6 +6604,8 @@ var init_chunk_JWPRTSIB = __esm({
6736
6604
  "consultant",
6737
6605
  "pilot_voice"
6738
6606
  ];
6607
+ PILOT_TRACK_ROLES = ["pilot", "pilot_specialist"];
6608
+ CUSTOMER_FACING_AGENT_ROLES = [...PILOT_TRACK_ROLES, "pilot_advisor"];
6739
6609
  SAFE_USER_ID_REGEX = /^[A-Za-z0-9_-]{1,64}$/;
6740
6610
  SUPPORTED_LOCALES = ["en", "pt", "es"];
6741
6611
  SKILL_INSTALL_COMMAND = "mkdir -p .claude && npx skills add wayai-pro/wayai-skill -y";
@@ -6920,7 +6790,7 @@ var init_chunk_T7KQKDET = __esm({
6920
6790
  }
6921
6791
  });
6922
6792
 
6923
- // ../../packages/core/dist/chunk-YV4TZ2HR.js
6793
+ // ../../packages/core/dist/chunk-XFKJHZ4E.js
6924
6794
  function containsKanbanPlaceholders(value) {
6925
6795
  if (value == null) return false;
6926
6796
  const serialized = typeof value === "string" ? value : JSON.stringify(value);
@@ -8230,8 +8100,8 @@ function refineHubAsCodeMonitorRulesOutput(config, ctx) {
8230
8100
  });
8231
8101
  }
8232
8102
  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"() {
8103
+ var init_chunk_XFKJHZ4E = __esm({
8104
+ "../../packages/core/dist/chunk-XFKJHZ4E.js"() {
8235
8105
  "use strict";
8236
8106
  init_chunk_SNA2DXAC();
8237
8107
  init_chunk_MIWZOSPI();
@@ -8239,7 +8109,7 @@ var init_chunk_YV4TZ2HR = __esm({
8239
8109
  init_chunk_2ISUBJG7();
8240
8110
  init_chunk_C2UEA2KW();
8241
8111
  init_chunk_3NS3HULK();
8242
- init_chunk_JWPRTSIB();
8112
+ init_chunk_DHPUPI4Y();
8243
8113
  init_chunk_T7KQKDET();
8244
8114
  init_chunk_L5F7ZOUJ();
8245
8115
  init_zod();
@@ -9726,7 +9596,7 @@ var init_chunk_YV4TZ2HR = __esm({
9726
9596
  }
9727
9597
  });
9728
9598
 
9729
- // ../../packages/core/dist/chunk-GI5ELTXF.js
9599
+ // ../../packages/core/dist/chunk-EKPXHJ4G.js
9730
9600
  function cacheReconcileIdCount(body) {
9731
9601
  return body.conversations.length + body.histories.reduce((n, history) => n + history.conversation_ids.length, 0) + body.threads.length;
9732
9602
  }
@@ -9792,16 +9662,16 @@ function communityLessonVideoWatchUrl(video) {
9792
9662
  return `https://www.youtube.com/watch?v=${video.id}`;
9793
9663
  }
9794
9664
  }
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"() {
9665
+ 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, TURN_DEADLINE_SECONDS_FLOOR, TURN_DEADLINE_SECONDS_MAX, turnDeadlineSeconds, 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, normalizeEmail, REVIEW_ACCOUNT_EMAILS, 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, baseEnvironmentSchema, toolsetSurfaceSchema, toolsetConnectionBindingSchema, rekorResolvedToolsetSchema, 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;
9666
+ var init_chunk_EKPXHJ4G = __esm({
9667
+ "../../packages/core/dist/chunk-EKPXHJ4G.js"() {
9798
9668
  "use strict";
9799
9669
  init_chunk_VORPHGDT();
9800
- init_chunk_POL7B3EM();
9801
- init_chunk_YV4TZ2HR();
9670
+ init_chunk_P5OUVLFP();
9671
+ init_chunk_XFKJHZ4E();
9802
9672
  init_chunk_MIWZOSPI();
9803
9673
  init_chunk_3NS3HULK();
9804
- init_chunk_JWPRTSIB();
9674
+ init_chunk_DHPUPI4Y();
9805
9675
  init_chunk_T7KQKDET();
9806
9676
  init_zod();
9807
9677
  init_zod();
@@ -11811,6 +11681,9 @@ var init_chunk_GI5ELTXF = __esm({
11811
11681
  automationGateEvaluationsPerOperation = external_exports.number().int().min(1).max(AUTOMATION_GATE_EVALUATIONS_PER_OPERATION_BOUND);
11812
11682
  AUTOMATION_RUN_RETENTION_DAYS_MAX = 3650;
11813
11683
  automationRunRetentionDays = external_exports.number().int().min(1).max(AUTOMATION_RUN_RETENTION_DAYS_MAX);
11684
+ TURN_DEADLINE_SECONDS_FLOOR = 300;
11685
+ TURN_DEADLINE_SECONDS_MAX = 840;
11686
+ turnDeadlineSeconds = external_exports.number().int().min(TURN_DEADLINE_SECONDS_FLOOR).max(TURN_DEADLINE_SECONDS_MAX);
11814
11687
  updatePlatformConfigBody = external_exports.object({
11815
11688
  free_plan_max_free_orgs_per_user: external_exports.number().int().min(0).optional(),
11816
11689
  /** Kill switch for admin debug-read endpoints. 0 = off, 1 = on. */
@@ -11854,6 +11727,8 @@ var init_chunk_GI5ELTXF = __esm({
11854
11727
  automation_gate_evaluations_per_operation: automationGateEvaluationsPerOperation.optional(),
11855
11728
  /** How many days a hub keeps an automation's runs (`automationRunRetentionDays`). */
11856
11729
  automation_run_retention_days: automationRunRetentionDays.optional(),
11730
+ /** How long a native agent turn may run (`turnDeadlineSeconds`). */
11731
+ turn_deadline_seconds: turnDeadlineSeconds.optional(),
11857
11732
  /**
11858
11733
  * The mobile app version policy (`MOBILE_VERSION_POLICY_COLUMNS`), per platform: an install
11859
11734
  * below the minimum is blocked until it updates from the store; one below the recommended
@@ -12052,31 +11927,6 @@ var init_chunk_GI5ELTXF = __esm({
12052
11927
  debugMessageIdQuery = external_exports.object({
12053
11928
  message_id: debugUuid.optional()
12054
11929
  });
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
11930
  META_ENTITY_ID_PATTERN = /^\d{1,32}$/;
12081
11931
  metaEntityId = external_exports.string().regex(META_ENTITY_ID_PATTERN, "must be a numeric Meta entity id");
12082
11932
  whatsappCallbackBody = external_exports.object({
@@ -12141,6 +11991,12 @@ var init_chunk_GI5ELTXF = __esm({
12141
11991
  password: external_exports.string().min(1, "Password is required").max(128)
12142
11992
  // bound the payload; WorkOS validates
12143
11993
  });
11994
+ normalizeEmail = (email) => email.trim().toLowerCase();
11995
+ REVIEW_ACCOUNT_EMAILS = new Set(
11996
+ ["apple.review@wayai.pro", "play.review@wayai.pro", "microsoft.review@wayai.pro", "meta.review@wayai.pro"].map(
11997
+ normalizeEmail
11998
+ )
11999
+ );
12144
12000
  stateOperationBody = external_exports.object({
12145
12001
  hub_id: external_exports.string().uuid(),
12146
12002
  operation: external_exports.enum(["get", "update", "set_path", "reset"]),
@@ -12611,6 +12467,46 @@ var init_chunk_GI5ELTXF = __esm({
12611
12467
  /** Which pane refetches. `base` covers create/delete/promote/config changes. */
12612
12468
  scope: external_exports.enum(["records", "record_types", "files", "base"])
12613
12469
  });
12470
+ baseEnvironmentSchema = external_exports.enum(["preview", "production"]);
12471
+ toolsetSurfaceSchema = external_exports.object({
12472
+ /** Any record, composite or relationship tool: the toolset reaches records. */
12473
+ records: external_exports.boolean(),
12474
+ sql_query: external_exports.boolean(),
12475
+ batch: external_exports.boolean()
12476
+ });
12477
+ toolsetConnectionBindingSchema = external_exports.object({
12478
+ base_id: external_exports.string().min(1),
12479
+ /** The slug the token was resolved against — `settings.toolset` at that write. */
12480
+ toolset: external_exports.string().min(1),
12481
+ /** The base's incarnation when the token was written; a bound attested call states it. */
12482
+ base_generation: external_exports.number().int().min(1),
12483
+ environment: baseEnvironmentSchema,
12484
+ surface: toolsetSurfaceSchema
12485
+ });
12486
+ rekorResolvedToolsetSchema = external_exports.object({
12487
+ data: external_exports.object({
12488
+ base_id: external_exports.string().min(1),
12489
+ environment: baseEnvironmentSchema,
12490
+ base_generation: external_exports.number().int().min(1),
12491
+ /**
12492
+ * The calling token's binding, or null for a token bound to none. A bound token can call only
12493
+ * its toolset's tools, which is what a toolset connection stores (#5083 decision 14). Its org
12494
+ * is the token's own: base ids are unique only per org, so the base id alone does not say
12495
+ * which base the token reaches.
12496
+ */
12497
+ toolset_binding: external_exports.object({
12498
+ org_id: external_exports.string().optional(),
12499
+ base_id: external_exports.string(),
12500
+ toolset_id: external_exports.string()
12501
+ }).nullable().optional(),
12502
+ actions: external_exports.array(external_exports.unknown()).optional(),
12503
+ composites: external_exports.array(external_exports.unknown()).optional(),
12504
+ relationships: external_exports.array(external_exports.unknown()).optional(),
12505
+ files: external_exports.array(external_exports.unknown()).optional(),
12506
+ batch: external_exports.object({ enabled: external_exports.boolean().optional() }).passthrough().nullable().optional(),
12507
+ sql_query: external_exports.boolean().optional()
12508
+ }).passthrough()
12509
+ });
12614
12510
  PEOPLE_CONTACT_PAGE_MAX = 100;
12615
12511
  PEOPLE_CONTACT_PAGE_DEFAULT = 50;
12616
12512
  PEOPLE_CONTACT_EMAIL_MAX_LENGTH = 254;
@@ -13298,10 +13194,10 @@ var init_chunk_BPDC67ML = __esm({
13298
13194
  var init_contracts = __esm({
13299
13195
  "../../packages/core/dist/contracts/index.js"() {
13300
13196
  "use strict";
13301
- init_chunk_GI5ELTXF();
13197
+ init_chunk_EKPXHJ4G();
13302
13198
  init_chunk_VORPHGDT();
13303
- init_chunk_POL7B3EM();
13304
- init_chunk_YV4TZ2HR();
13199
+ init_chunk_P5OUVLFP();
13200
+ init_chunk_XFKJHZ4E();
13305
13201
  init_chunk_SNA2DXAC();
13306
13202
  init_chunk_MIWZOSPI();
13307
13203
  init_chunk_LKBSHANA();
@@ -13309,7 +13205,7 @@ var init_contracts = __esm({
13309
13205
  init_chunk_2ISUBJG7();
13310
13206
  init_chunk_C2UEA2KW();
13311
13207
  init_chunk_3NS3HULK();
13312
- init_chunk_JWPRTSIB();
13208
+ init_chunk_DHPUPI4Y();
13313
13209
  init_chunk_T7KQKDET();
13314
13210
  init_chunk_L5F7ZOUJ();
13315
13211
  init_chunk_BPDC67ML();
@@ -13442,12 +13338,7 @@ var init_api_client = __esm({
13442
13338
  async adminSkillInstall(name) {
13443
13339
  return this.request("GET", `/api/admin/skills/${encodeURIComponent(name)}`);
13444
13340
  }
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
13341
+ // Reap every live harness session / token / slot in scope (platform-admin gated
13451
13342
  // — the harness-agents PR 2.9b incident-response surface). Never carries tokens.
13452
13343
  async adminHarnessMassDestroy(body) {
13453
13344
  return this.request("POST", "/api/admin/harness/mass-destroy", body);
@@ -14098,35 +13989,6 @@ var init_api_client = __esm({
14098
13989
  `/api/admin/data-explorer/debug/archive/${encodeURIComponent(hubId)}/conversations/${encodeURIComponent(conversationId)}${qs}`
14099
13990
  );
14100
13991
  }
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
13992
  /**
14131
13993
  * List per-message observability metadata summaries for a conversation (hub-scoped auth). The
14132
13994
  * hub is named so the backend checks the conversation's row names it; a request naming none is
@@ -14520,10 +14382,10 @@ var init_dist = __esm({
14520
14382
  "../../packages/core/dist/index.js"() {
14521
14383
  "use strict";
14522
14384
  init_chunk_P3AWZG3N();
14523
- init_chunk_GI5ELTXF();
14385
+ init_chunk_EKPXHJ4G();
14524
14386
  init_chunk_VORPHGDT();
14525
- init_chunk_POL7B3EM();
14526
- init_chunk_YV4TZ2HR();
14387
+ init_chunk_P5OUVLFP();
14388
+ init_chunk_XFKJHZ4E();
14527
14389
  init_chunk_SNA2DXAC();
14528
14390
  init_chunk_MIWZOSPI();
14529
14391
  init_chunk_LKBSHANA();
@@ -14534,7 +14396,7 @@ var init_dist = __esm({
14534
14396
  init_chunk_RPGBR5IN();
14535
14397
  init_chunk_C2UEA2KW();
14536
14398
  init_chunk_3NS3HULK();
14537
- init_chunk_JWPRTSIB();
14399
+ init_chunk_DHPUPI4Y();
14538
14400
  init_chunk_BF4WRSOQ();
14539
14401
  init_chunk_T7KQKDET();
14540
14402
  init_chunk_L5F7ZOUJ();
@@ -14828,20 +14690,8 @@ var init_dist = __esm({
14828
14690
  failClosed: true,
14829
14691
  userLimitKey: "/api/admin/data-explorer/*"
14830
14692
  },
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
14693
  // 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
14694
+ // EVERY live harness session/token/slot in scope, so it gets a strict budget
14845
14695
  // (STRICT + a low per-user hourly cap + fail-closed). Platform-admin is enforced
14846
14696
  // at the route; this is the independent defense-in-depth signal so a runaway
14847
14697
  // reap loop surfaces as 429. The break-glass disable/enable rides through
@@ -16374,7 +16224,7 @@ var init_utils = __esm({
16374
16224
  ["report accept", { positionals: 1 }],
16375
16225
  ["report contest", { positionals: 1, values: ["--reason"] }],
16376
16226
  ["update", { positionals: 0 }],
16377
- ["admin archive", { positionals: 2, values: ["--message-id", "--out"] }],
16227
+ ["admin archive", { positionals: 2, values: ["--message-id"] }],
16378
16228
  ["admin observability", { positionals: 2, values: ["--message-id"] }],
16379
16229
  ["admin do tables", { positionals: 2 }],
16380
16230
  ["admin do read", { positionals: 3, values: ["--limit", "--id"] }],
@@ -16401,7 +16251,6 @@ var init_utils = __esm({
16401
16251
  ["admin notice list", { positionals: 0, values: ["--status", "--limit", "--offset"] }],
16402
16252
  ["admin notice resolve", { positionals: 1 }],
16403
16253
  ["admin skill install", { positionals: 1 }],
16404
- ["admin sandbox exec", { positionals: 1, values: ["--hub", "--connection", "--cmd", "--egress", "--allow", "--timeout"] }],
16405
16254
  ["admin hubs repair-team-orphans", { positionals: 0, values: ["--org", "--hub"], dryRun: true }],
16406
16255
  ["admin hubs repair-branching-orphans", { positionals: 0, values: ["--org", "--hub", "--id"], dryRun: true }],
16407
16256
  ["admin orgs repair-legacy-grants", { positionals: 0, values: ["--org"], dryRun: true }],
@@ -18191,7 +18040,7 @@ var init_whoami = __esm({
18191
18040
  var init_constants = __esm({
18192
18041
  "../../packages/core/dist/constants.js"() {
18193
18042
  "use strict";
18194
- init_chunk_JWPRTSIB();
18043
+ init_chunk_DHPUPI4Y();
18195
18044
  }
18196
18045
  });
18197
18046
 
@@ -20668,7 +20517,7 @@ var init_config_writer = __esm({
20668
20517
  "skip_cascade_writes",
20669
20518
  "enabled"
20670
20519
  ],
20671
- toolsets: ["id", "name", "description", "actions", "relationships", "files", "batch", "sql_query"],
20520
+ toolsets: ["id", "name", "description", "actions", "relationships", "files", "batch", "sql_query", "customer_scope"],
20672
20521
  actions: [
20673
20522
  "id",
20674
20523
  "record_type",
@@ -32202,21 +32051,6 @@ async function adminCommand(args2) {
32202
32051
  process.exit(1);
32203
32052
  }
32204
32053
  }
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
32054
  if (group === "hubs") {
32221
32055
  if (!sub) {
32222
32056
  printHelp2();
@@ -32460,31 +32294,14 @@ async function runAnalyticsRead(positional, flagArgs) {
32460
32294
  }
32461
32295
  async function runArchiveRead(positional, flagArgs) {
32462
32296
  if (positional.length < 2) {
32463
- console.error("wayai admin archive <hub_id> <conversation_id> [--message-id X] [--sandbox [--out <path>]] [--json]");
32297
+ console.error("wayai admin archive <hub_id> <conversation_id> [--message-id X] [--json]");
32464
32298
  process.exit(1);
32465
32299
  }
32466
32300
  const hubId = positional[0];
32467
32301
  const conversationId = positional[1];
32468
- const flags = parseFlags2(flagArgs, ["--json", "--message-id", "--sandbox", "--out"]);
32302
+ const flags = parseFlags2(flagArgs, ["--json", "--message-id"]);
32469
32303
  const { config, accessToken } = await requireAuth();
32470
32304
  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
32305
  let response;
32489
32306
  try {
32490
32307
  response = await client.debugReadArchive(hubId, conversationId, {
@@ -32573,18 +32390,12 @@ function parseFlags2(flagArgs, allowed) {
32573
32390
  out.jsonOutput = true;
32574
32391
  continue;
32575
32392
  }
32576
- if (arg === "--sandbox") {
32577
- out.sandbox = true;
32578
- continue;
32579
- }
32580
32393
  const v = flagArgs[++i];
32581
32394
  if (!v) {
32582
32395
  console.error(`${arg} requires a value`);
32583
32396
  process.exit(1);
32584
32397
  }
32585
- if (arg === "--out") {
32586
- out.out = v;
32587
- } else if (arg === "--limit") {
32398
+ if (arg === "--limit") {
32588
32399
  const n = Number.parseInt(v, 10);
32589
32400
  if (!Number.isFinite(n)) {
32590
32401
  console.error("--limit must be an integer");
@@ -32634,112 +32445,6 @@ async function runSkillInstall(positional) {
32634
32445
  console.log(`Installed skill "${name}" (${fileCount} file${fileCount === 1 ? "" : "s"}) \u2192 ${relDirs.join(", ")}`);
32635
32446
  console.log("Reload your agent (e.g. restart Claude Code) to pick up the skill.");
32636
32447
  }
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
32448
  function parseScopedTargetFlags(flagArgs, usage3, opts = {}) {
32744
32449
  const scopes = opts.scopes ?? ["all", "org", "hub"];
32745
32450
  let all = false;
@@ -32981,8 +32686,8 @@ async function runHarnessMassDestroy(flagArgs) {
32981
32686
  const USAGE3 = "wayai admin harness mass-destroy --all | --org <org_id> | --hub <hub_id> [--dry-run] [--yes] [--json]";
32982
32687
  const { body, targetLabel, dryRun, yes, jsonOutput } = parseScopedTargetFlags(flagArgs, USAGE3);
32983
32688
  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.");
32689
+ console.log(`About to REAP every live harness session / token / slot in: ${targetLabel}.`);
32690
+ console.log("This destroys running harness sessions and revokes their tokens. Run with --dry-run first to see the blast radius.");
32986
32691
  const ok = await confirm("Proceed?");
32987
32692
  if (!ok) {
32988
32693
  console.log("Aborted.");
@@ -33017,11 +32722,11 @@ async function runHarnessMassDestroy(flagArgs) {
33017
32722
  return;
33018
32723
  }
33019
32724
  console.log("");
33020
- console.log("hub_id | conversation_id | had_sandbox | sandbox_destroyed | reaped");
33021
- console.log("-------+-----------------+-------------+-------------------+-------");
32725
+ console.log("hub_id | conversation_id | sandbox_destroyed | reaped");
32726
+ console.log("-------+-----------------+-------------------+-------");
33022
32727
  for (const d of data.details) {
33023
32728
  console.log(
33024
- `${d.hub_id} | ${d.conversation_id} | ${d.had_sandbox} | ${d.sandbox_destroyed} | ${d.reaped}`
32729
+ `${d.hub_id} | ${d.conversation_id} | ${d.sandbox_destroyed} | ${d.reaped}`
33025
32730
  );
33026
32731
  }
33027
32732
  }
@@ -33914,7 +33619,7 @@ Usage:
33914
33619
  wayai admin analytics tables
33915
33620
  wayai admin analytics read <table> [--conversation-id X] [--hub-id Y] [--message-id Z] [--limit N] [--json]
33916
33621
 
33917
- wayai admin archive <hub_id> <conversation_id> [--message-id X] [--sandbox [--out <path>]] [--json]
33622
+ wayai admin archive <hub_id> <conversation_id> [--message-id X] [--json]
33918
33623
 
33919
33624
  wayai admin observability <hub_id> <conversation_id> [--message-id X] [--json]
33920
33625
 
@@ -33946,9 +33651,6 @@ Usage:
33946
33651
 
33947
33652
  wayai admin skill install [name] Install a private operator skill (default: wayai-admin) into each present harness's skills/ dir
33948
33653
 
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
33654
  wayai admin hubs repair-team-orphans --all | --org <org_id> | --hub <hub_id> [--dry-run] [--yes] [--json]
33953
33655
  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
33656
 
@@ -33962,7 +33664,7 @@ Usage:
33962
33664
  wayai admin harness enable Flip the platform harness_enabled flag ON
33963
33665
  wayai admin harness status Print the platform harness_enabled flag
33964
33666
  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)
33667
+ Reap every live harness session/token/slot in scope (run --dry-run first to see the blast radius)
33966
33668
 
33967
33669
  wayai admin voice-calls enable Flip the platform voice_calls_enabled kill switch ON (every org)
33968
33670
  wayai admin voice-calls disable Flip it OFF: every voice-call surface goes dark for every org
@@ -34048,17 +33750,12 @@ Sources:
34048
33750
  to a real person and sends no email, so read --dry-run output as the list of
34049
33751
  people about to get access. Idempotent.
34050
33752
 
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
33753
  harness Incident response for harness agents. \`disable\`/\`enable\` flip the single
34057
33754
  PLATFORM-wide harness_enabled flag; \`status\` prints it. That one flag both
34058
33755
  gates harness-agent create/update (default-deny, fail-closed) and drives
34059
33756
  the per-turn kill switch, so \`disable\` is the break-glass: each harness
34060
33757
  turn aborts on its next invocation. \`mass-destroy\` reaps every harness
34061
- sandbox/token/slot that is live NOW (scope: --hub < --org < --all, prefer
33758
+ session/token/slot that is live NOW (scope: --hub < --org < --all, prefer
34062
33759
  the narrowest). Run \`mass-destroy --dry-run\` first to see the blast
34063
33760
  radius.
34064
33761
  voice-calls The voice-calls gate, default-deny: the PLATFORM-wide voice_calls_enabled
@@ -34100,11 +33797,8 @@ Examples:
34100
33797
  wayai admin analytics read conversation --conversation-id <conv-id>
34101
33798
  wayai admin archive <hub-id> <conv-id>
34102
33799
  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
33800
  wayai admin observability <hub-id> <conv-id>
34105
33801
  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
33802
  wayai admin hubs repair-branching-orphans --hub <prod-hub-id>
34109
33803
  wayai admin hubs repair-branching-orphans --hub <prod-hub-id> --id connection:<id> --dry-run
34110
33804
  wayai admin orgs repair-legacy-grants --all --dry-run
@@ -35141,7 +34835,7 @@ var init_import = __esm({
35141
34835
 
35142
34836
  // src/data/commands/providers.ts
35143
34837
  import { Command as Command5 } from "commander";
35144
- import { writeFileSync as writeFileSync11 } from "fs";
34838
+ import { writeFileSync as writeFileSync10 } from "fs";
35145
34839
  function providerSegment(provider) {
35146
34840
  if (!VALID_PROVIDERS.includes(provider)) {
35147
34841
  throw expected(`Unknown provider ${JSON.stringify(provider)}. Expected one of: ${VALID_PROVIDERS_HELP}.`);
@@ -35174,7 +34868,7 @@ function buildBasesProvidersCommand() {
35174
34868
  );
35175
34869
  if (opts.to) {
35176
34870
  try {
35177
- writeFileSync11(opts.to, JSON.stringify(data, null, 2));
34871
+ writeFileSync10(opts.to, JSON.stringify(data, null, 2));
35178
34872
  } catch (e) {
35179
34873
  throw expected(`--to ${opts.to}: ${e instanceof Error ? e.message : "could not be written"}`);
35180
34874
  }
@@ -36259,7 +35953,7 @@ var init_file_types = __esm({
36259
35953
 
36260
35954
  // src/data/commands/files.ts
36261
35955
  import { Command as Command12 } from "commander";
36262
- import { readFileSync as readFileSync23, writeFileSync as writeFileSync12 } from "fs";
35956
+ import { readFileSync as readFileSync23, writeFileSync as writeFileSync11 } from "fs";
36263
35957
  import { basename as basename25 } from "path";
36264
35958
  function renderFileDiff(fileType, filePath, from, to, d) {
36265
35959
  console.log(sanitizeTerminalText(`${fileType}/${filePath}: v${from} \u2192 v${to}`));
@@ -36339,7 +36033,7 @@ function buildFilesCommand() {
36339
36033
  const { bytes } = await client.download(
36340
36034
  `/v1/${base}/files/${pathSegment(fileType, "file_type")}/${encoded}${versionQs ? `?${versionQs}` : ""}`
36341
36035
  );
36342
- writeFileSync12(out, bytes);
36036
+ writeFileSync11(out, bytes);
36343
36037
  console.log(`Downloaded to ${out}`);
36344
36038
  });
36345
36039
  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) {