@wayai/cli 0.3.228 → 0.3.230

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -488,67 +488,6 @@ var init_sentry = __esm({
488
488
  }
489
489
  });
490
490
 
491
- // ../../packages/core/dist/chunk-DHPUPI4Y.js
492
- function normalizeAuthType(raw) {
493
- if (VALID_AUTH_TYPES.has(raw)) return raw;
494
- return LEGACY_AUTH_TYPE_MAP[raw] ?? raw;
495
- }
496
- var AUTH_TYPE, ORG_CREDENTIAL_AUTH_TYPES, AUTH_TYPE_DISPLAY, LEGACY_AUTH_TYPE_MAP, VALID_AUTH_TYPES, AGENT_ROLES, PILOT_TRACK_ROLES, COPILOT_TRACK_ROLES, CUSTOMER_FACING_AGENT_ROLES, SAFE_USER_ID_REGEX, SUPPORTED_LOCALES, SKILL_INSTALL_COMMAND;
497
- var init_chunk_DHPUPI4Y = __esm({
498
- "../../packages/core/dist/chunk-DHPUPI4Y.js"() {
499
- "use strict";
500
- AUTH_TYPE = {
501
- OAUTH: "oauth",
502
- API_KEY: "api_key",
503
- BASIC_AUTH: "basic_auth",
504
- BEARER: "bearer",
505
- NONE: "none"
506
- };
507
- ORG_CREDENTIAL_AUTH_TYPES = [
508
- AUTH_TYPE.API_KEY,
509
- AUTH_TYPE.BEARER,
510
- AUTH_TYPE.BASIC_AUTH
511
- ];
512
- AUTH_TYPE_DISPLAY = {
513
- [AUTH_TYPE.OAUTH]: "OAuth",
514
- [AUTH_TYPE.API_KEY]: "API Key",
515
- [AUTH_TYPE.BASIC_AUTH]: "Basic Auth",
516
- [AUTH_TYPE.BEARER]: "Bearer Token",
517
- [AUTH_TYPE.NONE]: "No Authentication"
518
- };
519
- LEGACY_AUTH_TYPE_MAP = {
520
- "OAuth": AUTH_TYPE.OAUTH,
521
- "API Key": AUTH_TYPE.API_KEY,
522
- "Basic Auth": AUTH_TYPE.BASIC_AUTH,
523
- "Bearer Token": AUTH_TYPE.BEARER,
524
- "No authentication": AUTH_TYPE.NONE,
525
- // Also handle the old DISPLAY_TO_CODE bug where 'basic' was used instead of 'basic_auth'
526
- "basic": AUTH_TYPE.BASIC_AUTH
527
- };
528
- VALID_AUTH_TYPES = new Set(Object.values(AUTH_TYPE));
529
- AGENT_ROLES = [
530
- "pilot",
531
- "copilot",
532
- "pilot_specialist",
533
- "copilot_specialist",
534
- "pilot_advisor",
535
- "copilot_advisor",
536
- "monitor",
537
- "conversation_evaluator",
538
- "message_evaluator",
539
- "summarizer",
540
- "consultant",
541
- "pilot_voice"
542
- ];
543
- PILOT_TRACK_ROLES = ["pilot", "pilot_specialist"];
544
- COPILOT_TRACK_ROLES = ["copilot", "copilot_specialist"];
545
- CUSTOMER_FACING_AGENT_ROLES = [...PILOT_TRACK_ROLES, "pilot_advisor"];
546
- SAFE_USER_ID_REGEX = /^[A-Za-z0-9_-]{1,64}$/;
547
- SUPPORTED_LOCALES = ["en", "pt", "es"];
548
- SKILL_INSTALL_COMMAND = "mkdir -p .claude && npx skills add wayai-pro/wayai-skill -y";
549
- }
550
- });
551
-
552
491
  // ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js
553
492
  var util, objectUtil, ZodParsedType, getParsedType;
554
493
  var init_util = __esm({
@@ -4665,6 +4604,99 @@ var init_zod = __esm({
4665
4604
  }
4666
4605
  });
4667
4606
 
4607
+ // ../../packages/core/dist/chunk-GK27ENTT.js
4608
+ var BASE_CREDENTIAL_MANAGED_BY, BASE_CREDENTIAL_NAME_MAX, baseCredentialNameSchema, createBaseCredentialLinkBody, baseCredentialLinkParams, baseCredentialLinkQuery;
4609
+ var init_chunk_GK27ENTT = __esm({
4610
+ "../../packages/core/dist/chunk-GK27ENTT.js"() {
4611
+ "use strict";
4612
+ init_zod();
4613
+ BASE_CREDENTIAL_MANAGED_BY = {
4614
+ DIRECT: "direct",
4615
+ ORG_LINK: "org-link"
4616
+ };
4617
+ BASE_CREDENTIAL_NAME_MAX = 100;
4618
+ baseCredentialNameSchema = external_exports.string().min(1).max(BASE_CREDENTIAL_NAME_MAX).regex(
4619
+ /^[A-Za-z0-9][A-Za-z0-9._:@+~=-]*$/,
4620
+ "name must use letters, digits and '. _ : @ + ~ = -', starting with a letter or digit"
4621
+ );
4622
+ createBaseCredentialLinkBody = external_exports.object({
4623
+ organization_id: external_exports.string().uuid(),
4624
+ base_id: external_exports.string().min(1),
4625
+ /** Defaults to a slug derived from the credential's display name. */
4626
+ name: baseCredentialNameSchema.optional()
4627
+ });
4628
+ baseCredentialLinkParams = external_exports.object({
4629
+ id: external_exports.string().uuid(),
4630
+ base_credential_id: external_exports.string().min(1)
4631
+ });
4632
+ baseCredentialLinkQuery = external_exports.object({
4633
+ organization_id: external_exports.string().uuid(),
4634
+ base_id: external_exports.string().min(1)
4635
+ });
4636
+ }
4637
+ });
4638
+
4639
+ // ../../packages/core/dist/chunk-DHPUPI4Y.js
4640
+ function normalizeAuthType(raw) {
4641
+ if (VALID_AUTH_TYPES.has(raw)) return raw;
4642
+ return LEGACY_AUTH_TYPE_MAP[raw] ?? raw;
4643
+ }
4644
+ var AUTH_TYPE, ORG_CREDENTIAL_AUTH_TYPES, AUTH_TYPE_DISPLAY, LEGACY_AUTH_TYPE_MAP, VALID_AUTH_TYPES, AGENT_ROLES, PILOT_TRACK_ROLES, COPILOT_TRACK_ROLES, CUSTOMER_FACING_AGENT_ROLES, SAFE_USER_ID_REGEX, SUPPORTED_LOCALES, SKILL_INSTALL_COMMAND;
4645
+ var init_chunk_DHPUPI4Y = __esm({
4646
+ "../../packages/core/dist/chunk-DHPUPI4Y.js"() {
4647
+ "use strict";
4648
+ AUTH_TYPE = {
4649
+ OAUTH: "oauth",
4650
+ API_KEY: "api_key",
4651
+ BASIC_AUTH: "basic_auth",
4652
+ BEARER: "bearer",
4653
+ NONE: "none"
4654
+ };
4655
+ ORG_CREDENTIAL_AUTH_TYPES = [
4656
+ AUTH_TYPE.API_KEY,
4657
+ AUTH_TYPE.BEARER,
4658
+ AUTH_TYPE.BASIC_AUTH
4659
+ ];
4660
+ AUTH_TYPE_DISPLAY = {
4661
+ [AUTH_TYPE.OAUTH]: "OAuth",
4662
+ [AUTH_TYPE.API_KEY]: "API Key",
4663
+ [AUTH_TYPE.BASIC_AUTH]: "Basic Auth",
4664
+ [AUTH_TYPE.BEARER]: "Bearer Token",
4665
+ [AUTH_TYPE.NONE]: "No Authentication"
4666
+ };
4667
+ LEGACY_AUTH_TYPE_MAP = {
4668
+ "OAuth": AUTH_TYPE.OAUTH,
4669
+ "API Key": AUTH_TYPE.API_KEY,
4670
+ "Basic Auth": AUTH_TYPE.BASIC_AUTH,
4671
+ "Bearer Token": AUTH_TYPE.BEARER,
4672
+ "No authentication": AUTH_TYPE.NONE,
4673
+ // Also handle the old DISPLAY_TO_CODE bug where 'basic' was used instead of 'basic_auth'
4674
+ "basic": AUTH_TYPE.BASIC_AUTH
4675
+ };
4676
+ VALID_AUTH_TYPES = new Set(Object.values(AUTH_TYPE));
4677
+ AGENT_ROLES = [
4678
+ "pilot",
4679
+ "copilot",
4680
+ "pilot_specialist",
4681
+ "copilot_specialist",
4682
+ "pilot_advisor",
4683
+ "copilot_advisor",
4684
+ "monitor",
4685
+ "conversation_evaluator",
4686
+ "message_evaluator",
4687
+ "summarizer",
4688
+ "consultant",
4689
+ "pilot_voice"
4690
+ ];
4691
+ PILOT_TRACK_ROLES = ["pilot", "pilot_specialist"];
4692
+ COPILOT_TRACK_ROLES = ["copilot", "copilot_specialist"];
4693
+ CUSTOMER_FACING_AGENT_ROLES = [...PILOT_TRACK_ROLES, "pilot_advisor"];
4694
+ SAFE_USER_ID_REGEX = /^[A-Za-z0-9_-]{1,64}$/;
4695
+ SUPPORTED_LOCALES = ["en", "pt", "es"];
4696
+ SKILL_INSTALL_COMMAND = "mkdir -p .claude && npx skills add wayai-pro/wayai-skill -y";
4697
+ }
4698
+ });
4699
+
4668
4700
  // ../../packages/core/dist/chunk-SXDX4GHS.js
4669
4701
  var orgCredentialIdParam, listOrgCredentialsQuery, createOrgCredentialBody, updateOrgCredentialBody;
4670
4702
  var init_chunk_SXDX4GHS = __esm({
@@ -4706,10 +4738,10 @@ var init_chunk_SXDX4GHS = __esm({
4706
4738
  }
4707
4739
  });
4708
4740
 
4709
- // ../../packages/core/dist/chunk-FK6HBXM7.js
4741
+ // ../../packages/core/dist/chunk-HENF6YTF.js
4710
4742
  var orgResourceIdParam, orgResourceFileIdParam, orgResourceFolderIdParam, hubOrgResourceParam, listOrgResourcesQuery, orgIdQuery, createOrgResourceBody, updateOrgResourceBody, createOrgResourceFolderBody, updateOrgResourceFolderBody, uploadOrgResourceFileBody, updateOrgResourceFileBody, uploadOrgSkillZipBody, linkOrgResourceBody;
4711
- var init_chunk_FK6HBXM7 = __esm({
4712
- "../../packages/core/dist/chunk-FK6HBXM7.js"() {
4743
+ var init_chunk_HENF6YTF = __esm({
4744
+ "../../packages/core/dist/chunk-HENF6YTF.js"() {
4713
4745
  "use strict";
4714
4746
  init_zod();
4715
4747
  orgResourceIdParam = external_exports.object({
@@ -4736,10 +4768,11 @@ var init_chunk_FK6HBXM7 = __esm({
4736
4768
  organization_id: external_exports.string().uuid(),
4737
4769
  resource_name: external_exports.string().min(1).max(255),
4738
4770
  resource_description: external_exports.string().max(1e3).nullish(),
4739
- resource_type: external_exports.enum(["knowledge", "skill"]).default("knowledge"),
4740
- // Skill-only fields. Required for `resource_type = 'skill'` (validated in
4771
+ // `knowledge` parses so the route can refuse it with its reason (wayai-pro/wayai#5142 step 5).
4772
+ resource_type: external_exports.enum(["knowledge", "skill"]).default("skill"),
4773
+ // Skill-only fields. `skill_name` is required for a skill (validated in
4741
4774
  // the route layer since cross-field refinement complicates the inferred
4742
- // input type for callers). Ignored for `knowledge`.
4775
+ // input type for callers).
4743
4776
  skill_name: external_exports.string().min(1).max(255).nullish(),
4744
4777
  skill_version: external_exports.string().max(50).nullish(),
4745
4778
  folder_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
@@ -4896,10 +4929,10 @@ var init_chunk_HZ6CADSY = __esm({
4896
4929
  }
4897
4930
  });
4898
4931
 
4899
- // ../../packages/core/dist/chunk-TIZ57ZBA.js
4932
+ // ../../packages/core/dist/chunk-DYI3BRJ3.js
4900
4933
  var resourceIdParam, listResourcesQuery, createResourceBody, updateResourceBody, syncSkillsBody, resourceFileIdParam, listResourceFilesQuery, createResourceFileBody, updateResourceFileBody, uploadResourceFileBody, uploadSkillZipBody, resourceFolderIdParam, listResourceFoldersQuery, createResourceFolderBody, updateResourceFolderBody, agentResourceQuery, hubResourceQuery, linkAgentResourceBody, updateAgentResourceBody, unlinkAgentResourceQuery;
4901
- var init_chunk_TIZ57ZBA = __esm({
4902
- "../../packages/core/dist/chunk-TIZ57ZBA.js"() {
4934
+ var init_chunk_DYI3BRJ3 = __esm({
4935
+ "../../packages/core/dist/chunk-DYI3BRJ3.js"() {
4903
4936
  "use strict";
4904
4937
  init_chunk_HZ6CADSY();
4905
4938
  init_zod();
@@ -5256,38 +5289,6 @@ var init_chunk_IPXBFWUU = __esm({
5256
5289
  }
5257
5290
  });
5258
5291
 
5259
- // ../../packages/core/dist/chunk-GK27ENTT.js
5260
- var BASE_CREDENTIAL_MANAGED_BY, BASE_CREDENTIAL_NAME_MAX, baseCredentialNameSchema, createBaseCredentialLinkBody, baseCredentialLinkParams, baseCredentialLinkQuery;
5261
- var init_chunk_GK27ENTT = __esm({
5262
- "../../packages/core/dist/chunk-GK27ENTT.js"() {
5263
- "use strict";
5264
- init_zod();
5265
- BASE_CREDENTIAL_MANAGED_BY = {
5266
- DIRECT: "direct",
5267
- ORG_LINK: "org-link"
5268
- };
5269
- BASE_CREDENTIAL_NAME_MAX = 100;
5270
- baseCredentialNameSchema = external_exports.string().min(1).max(BASE_CREDENTIAL_NAME_MAX).regex(
5271
- /^[A-Za-z0-9][A-Za-z0-9._:@+~=-]*$/,
5272
- "name must use letters, digits and '. _ : @ + ~ = -', starting with a letter or digit"
5273
- );
5274
- createBaseCredentialLinkBody = external_exports.object({
5275
- organization_id: external_exports.string().uuid(),
5276
- base_id: external_exports.string().min(1),
5277
- /** Defaults to a slug derived from the credential's display name. */
5278
- name: baseCredentialNameSchema.optional()
5279
- });
5280
- baseCredentialLinkParams = external_exports.object({
5281
- id: external_exports.string().uuid(),
5282
- base_credential_id: external_exports.string().min(1)
5283
- });
5284
- baseCredentialLinkQuery = external_exports.object({
5285
- organization_id: external_exports.string().uuid(),
5286
- base_id: external_exports.string().min(1)
5287
- });
5288
- }
5289
- });
5290
-
5291
5292
  // ../../packages/core/dist/chunk-GPM7PE44.js
5292
5293
  var bootstrapQuery;
5293
5294
  var init_chunk_GPM7PE44 = __esm({
@@ -5622,7 +5623,7 @@ var init_chunk_5XEJSR22 = __esm({
5622
5623
  }
5623
5624
  });
5624
5625
 
5625
- // ../../packages/core/dist/chunk-ISFDR7SP.js
5626
+ // ../../packages/core/dist/chunk-KJXJKAYT.js
5626
5627
  function matchPath(pattern, path42) {
5627
5628
  const normalizedPath = path42.replace(/\/$/, "");
5628
5629
  if (pattern.endsWith("/*")) {
@@ -5650,8 +5651,8 @@ function getEndpointConfig(path42) {
5650
5651
  return { tier: "STANDARD" };
5651
5652
  }
5652
5653
  var ENDPOINT_CONFIGS, EXCLUDED_PATHS;
5653
- var init_chunk_ISFDR7SP = __esm({
5654
- "../../packages/core/dist/chunk-ISFDR7SP.js"() {
5654
+ var init_chunk_KJXJKAYT = __esm({
5655
+ "../../packages/core/dist/chunk-KJXJKAYT.js"() {
5655
5656
  "use strict";
5656
5657
  init_chunk_5XEJSR22();
5657
5658
  ENDPOINT_CONFIGS = {
@@ -5808,8 +5809,10 @@ var init_chunk_ISFDR7SP = __esm({
5808
5809
  // platform's egress addresses carry many tenants' deliveries. The per-automation budget is
5809
5810
  // `AUTOMATION_WEBHOOK_PER_AUTOMATION_LIMIT`, counted after the delivery is verified.
5810
5811
  [`${AUTOMATION_WEBHOOK_MOUNT}/*`]: { tier: "HIGH" },
5811
- // Managed Agents session events (#5083 Phase 4): HIGH, one vendor address carries many tenants'.
5812
- [`${MANAGED_AGENTS_WEBHOOK_MOUNT}/*`]: { tier: "HIGH" },
5812
+ // Managed Agents session events (#5083 Phase 4): one delivery per hosted tool round, and one
5813
+ // vendor address carries every tenant's, so BULK. The per-connection budget is
5814
+ // `MANAGED_AGENTS_WEBHOOK_PER_CONNECTION_LIMIT`, counted after the delivery is verified.
5815
+ [`${MANAGED_AGENTS_WEBHOOK_MOUNT}/*`]: { tier: "BULK" },
5813
5816
  // Reports (CLI → platform_report triage queue). One per-user budget covers intake
5814
5817
  // (POST), the content edit (PATCH /:id), the reporter read-back (GET, GET /:id), and the
5815
5818
  // verification loop (POST /:id/accept, /:id/contest). The limiter is path-based, so a
@@ -6118,7 +6121,7 @@ var init_chunk_ISFDR7SP = __esm({
6118
6121
  }
6119
6122
  });
6120
6123
 
6121
- // ../../packages/core/dist/chunk-FNNHGL7K.js
6124
+ // ../../packages/core/dist/chunk-4QBKRQMM.js
6122
6125
  function fileSnapshotChanged(run) {
6123
6126
  return run.written + run.removed > 0;
6124
6127
  }
@@ -6159,10 +6162,10 @@ async function sendWithRetry(opts, cursor) {
6159
6162
  }
6160
6163
  }
6161
6164
  var rekorFileSnapshotAnswerSchema, FILE_SNAPSHOT_MAX_PAGES, FILE_SNAPSHOT_CONFLICT_ATTEMPTS, FILE_SNAPSHOT_PAGE_SPACING_MS, FILE_SNAPSHOT_CONFLICT_STATUS;
6162
- var init_chunk_FNNHGL7K = __esm({
6163
- "../../packages/core/dist/chunk-FNNHGL7K.js"() {
6165
+ var init_chunk_4QBKRQMM = __esm({
6166
+ "../../packages/core/dist/chunk-4QBKRQMM.js"() {
6164
6167
  "use strict";
6165
- init_chunk_ISFDR7SP();
6168
+ init_chunk_KJXJKAYT();
6166
6169
  init_chunk_5XEJSR22();
6167
6170
  init_zod();
6168
6171
  rekorFileSnapshotAnswerSchema = external_exports.object({
@@ -6811,7 +6814,16 @@ var init_chunk_E4DIIOOE = __esm({
6811
6814
  }
6812
6815
  });
6813
6816
 
6814
- // ../../packages/core/dist/chunk-OGXIPFQY.js
6817
+ // ../../packages/core/dist/chunk-A4JC7DXB.js
6818
+ var GIT_CHECKOUT_MAX_LENGTH;
6819
+ var init_chunk_A4JC7DXB = __esm({
6820
+ "../../packages/core/dist/chunk-A4JC7DXB.js"() {
6821
+ "use strict";
6822
+ GIT_CHECKOUT_MAX_LENGTH = 255;
6823
+ }
6824
+ });
6825
+
6826
+ // ../../packages/core/dist/chunk-23UZ2IKU.js
6815
6827
  function spokenLineField(label, description2) {
6816
6828
  return { type: "text", label, maxLength: SPOKEN_LINE_MAX_CHARS, default: "", description: description2 };
6817
6829
  }
@@ -6821,9 +6833,10 @@ function byLowercaseName(a, b) {
6821
6833
  return x < y ? -1 : x > y ? 1 : 0;
6822
6834
  }
6823
6835
  var CALLER_LANGUAGE, TTS_VOICE_REPLY_ENABLED_FIELD, COPILOT_TRIGGER_FIELD, SANDBOX_AGENT_FIELDS, AUDIO_LANGUAGE_OPTIONS, whatsapp, instagram, resend, telegram, API_CHANNEL_DELIVERY_EVENTS, apiChannel, OPENAI_REASONING_MODELS, openai, anthropic, googleAiStudio, openRouter, xai, groqStt, openaiStt, elevenLabsStt, openaiTts, groqTts, elevenLabsTts, GEMINI_TTS_VOICES, googleTts, wayai, externalResources, restApiTool, mcpServer, REKOR_TOOLSET_SERVICE_NAME, rekorToolset, CLAUDE_HARNESS_MODELS, CLAUDE_HARNESS_MODEL_OPTIONS, HARNESS_MCP_SERVERS_FIELD, HARNESS_EGRESS_FIELDS, claudeManagedAgents, SPOKEN_LINE_MAX_CHARS, gptLive, CONNECTORS;
6824
- var init_chunk_OGXIPFQY = __esm({
6825
- "../../packages/core/dist/chunk-OGXIPFQY.js"() {
6836
+ var init_chunk_23UZ2IKU = __esm({
6837
+ "../../packages/core/dist/chunk-23UZ2IKU.js"() {
6826
6838
  "use strict";
6839
+ init_chunk_A4JC7DXB();
6827
6840
  CALLER_LANGUAGE = "caller";
6828
6841
  TTS_VOICE_REPLY_ENABLED_FIELD = {
6829
6842
  voice_reply_enabled: {
@@ -7686,12 +7699,12 @@ var init_chunk_OGXIPFQY = __esm({
7686
7699
  // The managed session is conversation-lifetime and is NOT reaped at this deadline.
7687
7700
  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." },
7688
7701
  ...HARNESS_EGRESS_FIELDS,
7689
- // repo_url only, with no `repo_branch`: the session clones the default branch. The
7690
- // vendor's `github_repository` resource now takes a `checkout` (branch or commit,
7691
- // platform.claude.com/docs/en/managed-agents/github, 2026-10-19); a branch setting is
7692
- // left to the "work on a repository" agent template (wayai-pro/wayai#5083 Phase 4).
7693
- // Until then, working on another branch is an agent-instruction concern.
7694
- repo_url: { type: "text", label: "Repository URL", description: "Optional GitHub repository (https://github.com/<owner>/<repo>) cloned into the managed workspace at session start. Needs the connection's GitHub App installed on it. The DEFAULT branch is cloned \u2014 to work on another branch, instruct the agent to check it out." },
7702
+ repo_url: { type: "text", label: "Repository URL", description: "Optional GitHub repository (https://github.com/<owner>/<repo>) cloned into the managed workspace at session start. Needs the connection's GitHub App installed on it." },
7703
+ // The vendor's `checkout` on the session's `github_repository` resource (a branch, or a
7704
+ // commit: platform.claude.com/docs/en/managed-agents/github, checked 2026-10-19). It is
7705
+ // fixed at session create, so a change recreates the session (`config-hash.ts`). Checked
7706
+ // at write (`format: 'git_checkout'`); a full commit hash is read as a commit.
7707
+ repo_checkout: { type: "text", format: "git_checkout", maxLength: GIT_CHECKOUT_MAX_LENGTH, label: "Branch or Commit", description: "Optional: the branch, or the full commit hash, cloned from the Repository URL. Empty clones the repository's default branch." },
7695
7708
  ...COPILOT_TRIGGER_FIELD
7696
7709
  },
7697
7710
  channel_settings_schema: null,
@@ -7788,13 +7801,13 @@ var init_chunk_OGXIPFQY = __esm({
7788
7801
  }
7789
7802
  });
7790
7803
 
7791
- // ../../packages/core/dist/chunk-QZZ3OHLV.js
7804
+ // ../../packages/core/dist/chunk-23ESQLLF.js
7792
7805
  var evalCallInstant, EVAL_CALL_MIN_SECONDS, EVAL_CALL_MAX_SECONDS, EVAL_CALL_SPOKEN_LINE_MAX_CHARS, hubScoped2, createEvalCallBody, createEvalCallResponse, evalCallConversationQuery, evalCallRecordQuery, evalCallSpeaker, evalCallUtterance, evalCallTurn, evalCallRecording, evalCallRecordResponse, evalCallFinishResponse;
7793
- var init_chunk_QZZ3OHLV = __esm({
7794
- "../../packages/core/dist/chunk-QZZ3OHLV.js"() {
7806
+ var init_chunk_23ESQLLF = __esm({
7807
+ "../../packages/core/dist/chunk-23ESQLLF.js"() {
7795
7808
  "use strict";
7796
7809
  init_chunk_E4DIIOOE();
7797
- init_chunk_OGXIPFQY();
7810
+ init_chunk_23UZ2IKU();
7798
7811
  init_chunk_HZ6CADSY();
7799
7812
  init_chunk_MIWZOSPI();
7800
7813
  init_zod();
@@ -8161,15 +8174,15 @@ var init_chunk_MH4O3YEX = __esm({
8161
8174
  }
8162
8175
  });
8163
8176
 
8164
- // ../../packages/core/dist/chunk-UZ7SPBM3.js
8177
+ // ../../packages/core/dist/chunk-UFYIBL66.js
8165
8178
  function catalogToolSideEffects(toolName) {
8166
8179
  const sideEffects = CATALOG_SIDE_EFFECTS.get(toolName);
8167
8180
  if (sideEffects === void 0) return "unknown";
8168
8181
  return sideEffects ? "side_effects" : "none";
8169
8182
  }
8170
8183
  var NATIVE_TOOL_SCHEMAS, WAYAI_CONNECTOR, SANDBOX_AGENT_ROLES, BASE_NATIVE_TOOLS, NATIVE_TOOLS, CATALOG_SIDE_EFFECTS;
8171
- var init_chunk_UZ7SPBM3 = __esm({
8172
- "../../packages/core/dist/chunk-UZ7SPBM3.js"() {
8184
+ var init_chunk_UFYIBL66 = __esm({
8185
+ "../../packages/core/dist/chunk-UFYIBL66.js"() {
8173
8186
  "use strict";
8174
8187
  init_chunk_DHPUPI4Y();
8175
8188
  NATIVE_TOOL_SCHEMAS = {
@@ -8390,15 +8403,15 @@ var init_chunk_UZ7SPBM3 = __esm({
8390
8403
  "properties": {
8391
8404
  "path": {
8392
8405
  "type": "string",
8393
- "description": 'Path to the file. Documents of your knowledge base live under "data/<file-type>/", exactly as list_files lists them \u2014 e.g. "data/policies/eu/refunds.md" \u2014 always written in full, and come back with the version the file is at: as text, or as base64 when the file is not text. Knowledge and skill files live under "resources/", exactly as listed in your resource structure or in a file listing \u2014 e.g. "resources/product-docs/references/menu.md", where the segment after "resources/" names the resource. Files attached to this conversation live under "conversation/" and are announced in the transcript by that path \u2014 e.g. "conversation/report.pdf". A shorter form also works for those two and is matched across everything you can read, preferring an exact path over one that merely ends with what you wrote ("references/menu.md", or just "menu.md"); dropping a middle segment does not resolve, and a bare name carried by both a resource and this conversation is reported as ambiguous so you can retry with the full path. Files from an EARLIER conversation with the same user live under "conversations/<conversation_id>/" \u2014 e.g. "conversations/1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed/receipt.pdf", exactly as the transcript of that conversation announces them (get_conversation). That form takes no shortening: write the mount, the conversation id and the file name in full. Prefer this over file_id: paths are stable, while IDs are regenerated whenever a hub is published.'
8406
+ "description": 'Path to the file. Documents of your knowledge base live under "data/<file-type>/", exactly as list_files lists them \u2014 e.g. "data/policies/eu/refunds.md" \u2014 always written in full, and come back with the version the file is at: as text, or as base64 when the file is not text. Skill files live under "skills/" and knowledge files under "resources/", exactly as listed in your resource structure or in a file listing \u2014 e.g. "skills/order-processing/references/menu.md", where the segment after "skills/" names the skill, or "resources/product-docs/menu.md", where the segment after "resources/" names the knowledge resource. Files attached to this conversation live under "conversation/" and are announced in the transcript by that path \u2014 e.g. "conversation/report.pdf". A shorter form also works for those and is matched across everything you can read, preferring an exact path over one that merely ends with what you wrote ("references/menu.md", or just "menu.md"); dropping a middle segment does not resolve, and a bare name carried by both a skill or resource and this conversation is reported as ambiguous so you can retry with the full path. Files from an EARLIER conversation with the same user live under "conversations/<conversation_id>/" \u2014 e.g. "conversations/1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed/receipt.pdf", exactly as the transcript of that conversation announces them (get_conversation). That form takes no shortening: write the mount, the conversation id and the file name in full. Prefer this over file_id: paths are stable, while IDs are regenerated whenever a hub is published.'
8394
8407
  },
8395
8408
  "file_id": {
8396
8409
  "type": "string",
8397
8410
  "description": "The file ID to retrieve, from a conversation message or a file listing. Still supported, but prefer path for resource files."
8398
8411
  },
8399
- "resource_id": {
8412
+ "skill_id": {
8400
8413
  "type": "string",
8401
- "description": "Optional. Restricts a path to one resource \u2014 use it when the same file name exists in more than one resource and the tool reports the reference as ambiguous. Must be a resource linked to this agent."
8414
+ "description": "Optional. Restricts a path to one skill, named by its id or its slug \u2014 use it when the same file name exists in more than one skill and the tool reports the reference as ambiguous. Must be a skill linked to this agent."
8402
8415
  },
8403
8416
  "view_range": {
8404
8417
  "type": "array",
@@ -8585,7 +8598,7 @@ var init_chunk_UZ7SPBM3 = __esm({
8585
8598
  "items": {
8586
8599
  "type": "string"
8587
8600
  },
8588
- "description": 'Files to send to the user, each named by path (preferred) or by ID. Paths are the addresses announced in the transcript and in your resource structure \u2014 "conversation/report.pdf" for a file attached to this conversation, "conversations/<conversation_id>/receipt.pdf" for one attached to an earlier conversation with the same user, "resources/product-docs/price-list.pdf" for a knowledge or skill file. IDs remain accepted, but they are regenerated whenever a hub is published, so a path is the stable address.'
8601
+ "description": 'Files to send to the user, each named by path (preferred) or by ID. Paths are the addresses announced in the transcript and in your resource structure \u2014 "conversation/report.pdf" for a file attached to this conversation, "conversations/<conversation_id>/receipt.pdf" for one attached to an earlier conversation with the same user, "skills/order-processing/price-list.pdf" for a skill file, "resources/product-docs/price-list.pdf" for a knowledge file. IDs remain accepted, but they are regenerated whenever a hub is published, so a path is the stable address.'
8589
8602
  },
8590
8603
  "folder_ids": {
8591
8604
  "type": "array",
@@ -8615,7 +8628,7 @@ var init_chunk_UZ7SPBM3 = __esm({
8615
8628
  "properties": {
8616
8629
  "path": {
8617
8630
  "type": "string",
8618
- "description": 'What to list. Omit it (or pass "") for the mounts you can browse \u2014 the available mounts are listed here at runtime. "conversation" lists the files attached to this conversation. "resources" lists every resource mount. "resources/<resource-slug>" lists the top level of a knowledge resource or skill, and "resources/<resource-slug>/<folder>/<subfolder>" lists that folder. Folder rows come back with their own path, so you drill down by passing back the path of the row you want. "data" lists your document mounts, and "data/<file-type>" or "data/<file-type>/<folder>" lists every document beneath it, a page at a time.'
8631
+ "description": 'What to list. Omit it (or pass "") for the mounts you can browse \u2014 the available mounts are listed here at runtime. "conversation" lists the files attached to this conversation. "skills" lists every skill mount, and "resources" every knowledge resource mount. "skills/<skill-slug>" lists the top level of a skill and "resources/<resource-slug>" that of a knowledge resource; "skills/<skill-slug>/<folder>/<subfolder>" (or the same under "resources/") lists that folder. Folder rows come back with their own path, so you drill down by passing back the path of the row you want. "data" lists your document mounts, and "data/<file-type>" or "data/<file-type>/<folder>" lists every document beneath it, a page at a time.'
8619
8632
  },
8620
8633
  "query": {
8621
8634
  "type": "string",
@@ -8645,7 +8658,7 @@ var init_chunk_UZ7SPBM3 = __esm({
8645
8658
  "additionalProperties": false
8646
8659
  }
8647
8660
  },
8648
- "tool_instructions": 'Use to find out which files exist before reading one. Call it with no path first: that returns the mounts \u2014 "conversation" for what the user attached here, and one "resources/<slug>" per knowledge resource or skill linked to you. Then pass a mount or folder path back to list its contents. Every row carries a `path`; pass that path to read_file to open the file, or (outside "data/") to send_files to deliver it. Pass query, tags or metadata_filter to search a whole resource or data/ file type at once instead of walking it folder by folder. Files from EARLIER conversations are not listed here \u2014 the transcript of each past conversation announces its own files by path (get_conversation).'
8661
+ "tool_instructions": 'Use to find out which files exist before reading one. Call it with no path first: that returns the mounts \u2014 "conversation" for what the user attached here, one "skills/<slug>" per skill and one "resources/<slug>" per knowledge resource linked to you. Then pass a mount or folder path back to list its contents. Every row carries a `path`; pass that path to read_file to open the file, or (outside "data/") to send_files to deliver it. Pass query, tags or metadata_filter to search a whole skill, resource or data/ file type at once instead of walking it folder by folder. Files from EARLIER conversations are not listed here \u2014 the transcript of each past conversation announces its own files by path (get_conversation).'
8649
8662
  },
8650
8663
  "list_resource_folders": {
8651
8664
  "tool_config": {
@@ -9057,20 +9070,20 @@ var init_chunk_UZ7SPBM3 = __esm({
9057
9070
  SANDBOX_AGENT_ROLES = [...PILOT_TRACK_ROLES, ...COPILOT_TRACK_ROLES];
9058
9071
  BASE_NATIVE_TOOLS = [
9059
9072
  // --- Wayai core tools ---
9060
- { tool_native_id: "nt-001", tool_name: "transfer_to_agent", tool_display_name: "Transfer to Agent", tool_description: "Transfer the conversation to another AI agent", connector_id: WAYAI_CONNECTOR, operation: "transfer_to_agent", tool_method: "internal", tool_group: "Native Tools", is_delegation: true, is_auto_set: false, execution_config: null, side_effects: false, replay: "keyed" },
9061
- { tool_native_id: "nt-002", tool_name: "transfer_to_team", tool_display_name: "Transfer to Team", tool_description: "Escalate conversation to a human support team", connector_id: WAYAI_CONNECTOR, operation: "transfer_to_team", tool_method: "internal", tool_group: "Native Tools", is_delegation: true, is_auto_set: false, execution_config: null, side_effects: false, replay: "keyed" },
9062
- { tool_native_id: "nt-003", tool_name: "close_conversation", tool_display_name: "Close Conversation", tool_description: "Close and end the current conversation", connector_id: WAYAI_CONNECTOR, operation: "close_conversation", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: true, replay: "keyed" },
9063
- { tool_native_id: "nt-004", tool_name: "update_kanban_status", tool_display_name: "Update Kanban Status", tool_description: "Update the kanban status of the conversation", connector_id: WAYAI_CONNECTOR, operation: "update_kanban_status", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9064
- { tool_native_id: "nt-005", tool_name: "schedule_followup", tool_display_name: "Schedule Follow-up", tool_description: "Schedule a follow-up message for the conversation", connector_id: WAYAI_CONNECTOR, operation: "schedule_followup", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: true, execution_config: null, side_effects: true, replay: "keyed" },
9065
- { tool_native_id: "nt-006", tool_name: "send_files", tool_display_name: "Send Files", tool_description: "Send files to the user", connector_id: WAYAI_CONNECTOR, operation: "send_files", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: true, replay: "keyed" },
9066
- { tool_native_id: "nt-007", tool_name: "update_state", tool_display_name: "Update State", tool_description: "Update conversation or user state variables", connector_id: WAYAI_CONNECTOR, operation: "update_state", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9067
- { tool_native_id: "nt-008", tool_name: "get_state", tool_display_name: "Get State", tool_description: "Retrieve conversation or user state values", connector_id: WAYAI_CONNECTOR, operation: "get_state", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9068
- { tool_native_id: "nt-009", tool_name: "reset_state", tool_display_name: "Reset State", tool_description: "Reset conversation or user state to initial values", connector_id: WAYAI_CONNECTOR, operation: "reset_state", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9069
- { tool_native_id: "nt-010", tool_name: "set_state_path", tool_display_name: "Set State Path", tool_description: "Set a specific path within state object", connector_id: WAYAI_CONNECTOR, operation: "set_state_path", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9070
- { tool_native_id: "nt-011", tool_name: "consult_agent", tool_display_name: "Consult Agent", tool_description: "Consult an advisor agent for advice without transferring", connector_id: WAYAI_CONNECTOR, operation: "consult_agent", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "keyed" },
9071
- { tool_native_id: "nt-013", tool_name: "read_skill", tool_display_name: "Read Skill", tool_description: "Read the full specification of a skill", connector_id: WAYAI_CONNECTOR, operation: "read_skill", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9072
- { tool_native_id: "nt-014", tool_name: "read_skill_file", tool_display_name: "Read Skill File", tool_description: "Read a specific file within a skill", connector_id: WAYAI_CONNECTOR, operation: "read_skill_file", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9073
- { tool_native_id: "nt-015", tool_name: "read_file", tool_display_name: "Read File", tool_description: "Read the contents of a resource file", connector_id: WAYAI_CONNECTOR, operation: "read_file", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9073
+ { tool_native_id: "nt-001", tool_name: "transfer_to_agent", tool_display_name: "Transfer to Agent", tool_description: "Transfer the conversation to another AI agent", connector_id: WAYAI_CONNECTOR, operation: "transfer_to_agent", tool_method: "internal", tool_group: "Native Tools", is_delegation: true, is_auto_set: false, execution_config: null, side_effects: false, replay: "keyed", hosted: true },
9074
+ { tool_native_id: "nt-002", tool_name: "transfer_to_team", tool_display_name: "Transfer to Team", tool_description: "Escalate conversation to a human support team", connector_id: WAYAI_CONNECTOR, operation: "transfer_to_team", tool_method: "internal", tool_group: "Native Tools", is_delegation: true, is_auto_set: false, execution_config: null, side_effects: false, replay: "keyed", hosted: true },
9075
+ { tool_native_id: "nt-003", tool_name: "close_conversation", tool_display_name: "Close Conversation", tool_description: "Close and end the current conversation", connector_id: WAYAI_CONNECTOR, operation: "close_conversation", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: true, replay: "keyed", hosted: true },
9076
+ { tool_native_id: "nt-004", tool_name: "update_kanban_status", tool_display_name: "Update Kanban Status", tool_description: "Update the kanban status of the conversation", connector_id: WAYAI_CONNECTOR, operation: "update_kanban_status", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: true },
9077
+ { tool_native_id: "nt-005", tool_name: "schedule_followup", tool_display_name: "Schedule Follow-up", tool_description: "Schedule a follow-up message for the conversation", connector_id: WAYAI_CONNECTOR, operation: "schedule_followup", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: true, execution_config: null, side_effects: true, replay: "keyed", hosted: true },
9078
+ { tool_native_id: "nt-006", tool_name: "send_files", tool_display_name: "Send Files", tool_description: "Send files to the user", connector_id: WAYAI_CONNECTOR, operation: "send_files", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: true, replay: "keyed", hosted: false },
9079
+ { tool_native_id: "nt-007", tool_name: "update_state", tool_display_name: "Update State", tool_description: "Update conversation or user state variables", connector_id: WAYAI_CONNECTOR, operation: "update_state", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: true },
9080
+ { tool_native_id: "nt-008", tool_name: "get_state", tool_display_name: "Get State", tool_description: "Retrieve conversation or user state values", connector_id: WAYAI_CONNECTOR, operation: "get_state", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: true },
9081
+ { tool_native_id: "nt-009", tool_name: "reset_state", tool_display_name: "Reset State", tool_description: "Reset conversation or user state to initial values", connector_id: WAYAI_CONNECTOR, operation: "reset_state", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: true },
9082
+ { tool_native_id: "nt-010", tool_name: "set_state_path", tool_display_name: "Set State Path", tool_description: "Set a specific path within state object", connector_id: WAYAI_CONNECTOR, operation: "set_state_path", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: true },
9083
+ { tool_native_id: "nt-011", tool_name: "consult_agent", tool_display_name: "Consult Agent", tool_description: "Consult an advisor agent for advice without transferring", connector_id: WAYAI_CONNECTOR, operation: "consult_agent", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "keyed", hosted: false },
9084
+ { tool_native_id: "nt-013", tool_name: "read_skill", tool_display_name: "Read Skill", tool_description: "Read the full specification of a skill", connector_id: WAYAI_CONNECTOR, operation: "read_skill", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: false },
9085
+ { tool_native_id: "nt-014", tool_name: "read_skill_file", tool_display_name: "Read Skill File", tool_description: "Read a specific file within a skill", connector_id: WAYAI_CONNECTOR, operation: "read_skill_file", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: false },
9086
+ { tool_native_id: "nt-015", tool_name: "read_file", tool_display_name: "Read File", tool_description: "Read the contents of a resource file", connector_id: WAYAI_CONNECTOR, operation: "read_file", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: false },
9074
9087
  // Superseded by `list_files` (nt-027), which browses the same resource files
9075
9088
  // by PATH plus this conversation's attachments.
9076
9089
  //
@@ -9084,13 +9097,13 @@ var init_chunk_UZ7SPBM3 = __esm({
9084
9097
  // name, and `wayai pull` / `push` still round-trips the YAML. There is no
9085
9098
  // auto-provisioning anywhere in the platform, so an existing agent is never
9086
9099
  // migrated for free — an author swaps the tool deliberately.
9087
- { tool_native_id: "nt-016", tool_name: "list_resource_files", tool_display_name: "List Resource Files", tool_description: "(deprecated \u2014 use list_files) List files in a resource folder", connector_id: WAYAI_CONNECTOR, operation: "list_resource_files", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", ui_assignable: false },
9088
- { tool_native_id: "nt-017", tool_name: "list_resource_folders", tool_display_name: "List Resource Folders", tool_description: "(deprecated \u2014 use list_files) List all resource folders", connector_id: WAYAI_CONNECTOR, operation: "list_resource_folders", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", ui_assignable: false },
9089
- { tool_native_id: "nt-018", tool_name: "get_conversations_summary", tool_display_name: "Get Conversations Summary", tool_description: "Get a summary of recent conversations", connector_id: WAYAI_CONNECTOR, operation: "get_conversations_summary", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9090
- { tool_native_id: "nt-019", tool_name: "get_conversation", tool_display_name: "Get Conversation", tool_description: "Retrieve full conversation history", connector_id: WAYAI_CONNECTOR, operation: "get_conversation", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9091
- { tool_native_id: "nt-020", tool_name: "get_tool_schema", tool_display_name: "Get Tool Schema", tool_description: "Retrieve the JSON schema for a tool", connector_id: WAYAI_CONNECTOR, operation: "get_tool_schema", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9092
- { tool_native_id: "nt-021", tool_name: "execute_tool", tool_display_name: "Execute Tool", tool_description: "Execute any available tool by name", connector_id: WAYAI_CONNECTOR, operation: "execute_tool", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "reconcile" },
9093
- { tool_native_id: "nt-022", tool_name: "expand_summary", tool_display_name: "Expand Summary", tool_description: "Retrieve the original messages of a section in the conversation summary", connector_id: WAYAI_CONNECTOR, operation: "expand_summary", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9100
+ { tool_native_id: "nt-016", tool_name: "list_resource_files", tool_display_name: "List Resource Files", tool_description: "(deprecated \u2014 use list_files) List files in a resource folder", connector_id: WAYAI_CONNECTOR, operation: "list_resource_files", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: false, ui_assignable: false },
9101
+ { tool_native_id: "nt-017", tool_name: "list_resource_folders", tool_display_name: "List Resource Folders", tool_description: "(deprecated \u2014 use list_files) List all resource folders", connector_id: WAYAI_CONNECTOR, operation: "list_resource_folders", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: false, ui_assignable: false },
9102
+ { tool_native_id: "nt-018", tool_name: "get_conversations_summary", tool_display_name: "Get Conversations Summary", tool_description: "Get a summary of recent conversations", connector_id: WAYAI_CONNECTOR, operation: "get_conversations_summary", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: true },
9103
+ { tool_native_id: "nt-019", tool_name: "get_conversation", tool_display_name: "Get Conversation", tool_description: "Retrieve full conversation history", connector_id: WAYAI_CONNECTOR, operation: "get_conversation", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: true },
9104
+ { tool_native_id: "nt-020", tool_name: "get_tool_schema", tool_display_name: "Get Tool Schema", tool_description: "Retrieve the JSON schema for a tool", connector_id: WAYAI_CONNECTOR, operation: "get_tool_schema", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: false },
9105
+ { tool_native_id: "nt-021", tool_name: "execute_tool", tool_display_name: "Execute Tool", tool_description: "Execute any available tool by name", connector_id: WAYAI_CONNECTOR, operation: "execute_tool", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "reconcile", hosted: false },
9106
+ { tool_native_id: "nt-022", tool_name: "expand_summary", tool_display_name: "Expand Summary", tool_description: "Retrieve the original messages of a section in the conversation summary", connector_id: WAYAI_CONNECTOR, operation: "expand_summary", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: false },
9094
9107
  // Hub-as-agent delegation (consultant-agents H1.5). UN-GATED in PR 7 (H1.5b): the
9095
9108
  // spawn + cross-DO completion callback shipped, so the tool is live across the
9096
9109
  // catalog listing, CI push, the config snapshot, and the handler. (PR 6 shipped it
@@ -9103,7 +9116,7 @@ var init_chunk_UZ7SPBM3 = __esm({
9103
9116
  // delegation dialog, clicking Add would submit no delegation params and the write
9104
9117
  // path would reject it — a live button that only ever errors. Assign it via
9105
9118
  // `wayai push` until the picker + boundary control ship.
9106
- { tool_native_id: "nt-025", tool_name: "delegate_to_hub", tool_display_name: "Delegate to Hub", tool_description: "Delegate a request to another hub as a task, and receive the result asynchronously", connector_id: WAYAI_CONNECTOR, operation: "delegate_to_hub", tool_method: "internal", tool_group: "Native Tools", is_delegation: true, is_auto_set: false, execution_config: null, side_effects: true, replay: "reconcile", ui_assignable: false },
9119
+ { tool_native_id: "nt-025", tool_name: "delegate_to_hub", tool_display_name: "Delegate to Hub", tool_description: "Delegate a request to another hub as a task, and receive the result asynchronously", connector_id: WAYAI_CONNECTOR, operation: "delegate_to_hub", tool_method: "internal", tool_group: "Native Tools", is_delegation: true, is_auto_set: false, execution_config: null, side_effects: true, replay: "reconcile", hosted: false, ui_assignable: false },
9107
9120
  // Agent-initiated consults (consultant-agents H1.7b). A delegation tool like the
9108
9121
  // three above: the TARGET is admin configuration (`delegated_agent_id` for a
9109
9122
  // same-hub consultant, `delegated_hub_id` for a partner hub) and the model supplies
@@ -9115,13 +9128,13 @@ var init_chunk_UZ7SPBM3 = __esm({
9115
9128
  // collect (and, for a consultant target, the `allow_consultant_chain` opt-in). A
9116
9129
  // live button that only ever errors is worse than no button. Assign via `wayai push`
9117
9130
  // until the picker ships.
9118
- { tool_native_id: "nt-026", tool_name: "start_consult_thread", tool_display_name: "Start Consult Thread", tool_description: "Ask a configured consultant (or partner hub) a question in a visible consult thread", connector_id: WAYAI_CONNECTOR, operation: "start_consult_thread", tool_method: "internal", tool_group: "Native Tools", is_delegation: true, is_auto_set: false, execution_config: null, side_effects: true, replay: "keyed", ui_assignable: false },
9131
+ { tool_native_id: "nt-026", tool_name: "start_consult_thread", tool_display_name: "Start Consult Thread", tool_description: "Ask a configured consultant (or partner hub) a question in a visible consult thread", connector_id: WAYAI_CONNECTOR, operation: "start_consult_thread", tool_method: "internal", tool_group: "Native Tools", is_delegation: true, is_auto_set: false, execution_config: null, side_effects: true, replay: "keyed", hosted: false, ui_assignable: false },
9119
9132
  // One drill-down listing for every file namespace, replacing `list_resource_files`
9120
9133
  // (nt-016) and `list_resource_folders` (nt-017). Fully visible: it needs no
9121
9134
  // configuration the Add dialog cannot collect — the mounts an agent may browse
9122
9135
  // come from its existing resource links and its own conversation, and the only
9123
9136
  // model-supplied input is a path.
9124
- { tool_native_id: "nt-027", tool_name: "list_files", tool_display_name: "List Files", tool_description: "Browse the files this agent can reach, by path", connector_id: WAYAI_CONNECTOR, operation: "list_files", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun" },
9137
+ { tool_native_id: "nt-027", tool_name: "list_files", tool_display_name: "List Files", tool_description: "Browse the files this agent can reach, by path", connector_id: WAYAI_CONNECTOR, operation: "list_files", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: false },
9125
9138
  // TWO gates, and BOTH are load-bearing — the first shipped alone and was not
9126
9139
  // enough. `assignable_roles: ['monitor']` says only a monitor may HOLD it,
9127
9140
  // because the tool has no meaning off a monitor: a rule SELECTS it and the note
@@ -9131,7 +9144,7 @@ var init_chunk_UZ7SPBM3 = __esm({
9131
9144
  // and a re-roled agent keeps the tools it holds. Offered and called, it reaches
9132
9145
  // the native dispatcher's `default:` branch: a Sentry event and a provider
9133
9146
  // re-call. See `NativeTool.model_callable`.
9134
- { tool_native_id: "nt-028", tool_name: "insert_note", tool_display_name: "Insert Note", tool_description: "Brief the answering agent with an admin-authored note before it replies", connector_id: WAYAI_CONNECTOR, operation: "insert_note", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", assignable_roles: ["monitor"], model_callable: false },
9147
+ { tool_native_id: "nt-028", tool_name: "insert_note", tool_display_name: "Insert Note", tool_description: "Brief the answering agent with an admin-authored note before it replies", connector_id: WAYAI_CONNECTOR, operation: "insert_note", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: false, assignable_roles: ["monitor"], model_callable: false },
9135
9148
  // TWO gates, same pair and same reasons as `insert_note` above — this is the
9136
9149
  // second tool to need both, which is why they are catalog fields rather than a
9137
9150
  // check at one site. `assignable_roles: ['monitor']`: only a monitor may hold it,
@@ -9144,32 +9157,32 @@ var init_chunk_UZ7SPBM3 = __esm({
9144
9157
  // would need remapping on both branching mechanisms and normalizing on both CI
9145
9158
  // directions. `action.tool_name`, one key away in the same object, is the
9146
9159
  // precedent.
9147
- { tool_native_id: "nt-029", tool_name: "run_monitor", tool_display_name: "Run Monitor", tool_description: "Run another monitor on this hub and let it act on its own rules", connector_id: WAYAI_CONNECTOR, operation: "run_monitor", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: true, replay: "reconcile", assignable_roles: ["monitor"], model_callable: false },
9160
+ { tool_native_id: "nt-029", tool_name: "run_monitor", tool_display_name: "Run Monitor", tool_description: "Run another monitor on this hub and let it act on its own rules", connector_id: WAYAI_CONNECTOR, operation: "run_monitor", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: true, replay: "reconcile", hosted: false, assignable_roles: ["monitor"], model_callable: false },
9148
9161
  // The code sandbox (wayai#5083 Phase 3): runs only for an agent whose `code_execution_enabled`
9149
9162
  // setting is on, on any provider. Side effects: under an Allowlist or Web network setting, the
9150
9163
  // code it runs can send data out of the conversation.
9151
- { tool_native_id: "nt-030", tool_name: "bash", tool_display_name: "Run Code (Bash)", tool_description: "Run a Bash command in the conversation's code sandbox", connector_id: WAYAI_CONNECTOR, operation: "bash", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: true, replay: "reconcile", assignable_roles: SANDBOX_AGENT_ROLES },
9164
+ { tool_native_id: "nt-030", tool_name: "bash", tool_display_name: "Run Code (Bash)", tool_description: "Run a Bash command in the conversation's code sandbox", connector_id: WAYAI_CONNECTOR, operation: "bash", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: true, replay: "reconcile", hosted: false, assignable_roles: SANDBOX_AGENT_ROLES },
9152
9165
  // Copies a conversation file, or a toolset document (`data/`, read through the toolset's `get`),
9153
9166
  // INTO the sandbox: the sandbox is conversation state, so nothing leaves the conversation. The
9154
9167
  // conversation's sandbox is shared by its agents whose `sandbox_scope` is `conversation`, so a
9155
9168
  // document copied in is there for each of them, as anything else an agent leaves in it; an agent
9156
9169
  // set to `agent` copies into its own, which no other agent reaches (decision 147).
9157
- { tool_native_id: "nt-031", tool_name: "copy_to_sandbox", tool_display_name: "Copy File to Sandbox", tool_description: "Copy one of the conversation's files into its code sandbox", connector_id: WAYAI_CONNECTOR, operation: "copy_to_sandbox", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", assignable_roles: SANDBOX_AGENT_ROLES },
9170
+ { tool_native_id: "nt-031", tool_name: "copy_to_sandbox", tool_display_name: "Copy File to Sandbox", tool_description: "Copy one of the conversation's files into its code sandbox", connector_id: WAYAI_CONNECTOR, operation: "copy_to_sandbox", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "rerun", hosted: false, assignable_roles: SANDBOX_AGENT_ROLES },
9158
9171
  // Copies a sandbox file OUT into the conversation, as an internal note for the team: nothing
9159
9172
  // reaches the customer until `send_files` sends it. With `path`, it writes a toolset document
9160
9173
  // instead, through the toolset's `put` with its version check: such a call is `reconcile`, not
9161
9174
  // `keyed`, as `write_file` is (`toolCallReplay` reads its arguments). Its side effects stay `false`:
9162
9175
  // only an agent holding a toolset `put` can write one, never a customer-facing role (premise 8),
9163
9176
  // and a voice call's turns, which read this flag, run the pilot track, which is customer-facing.
9164
- { tool_native_id: "nt-032", tool_name: "copy_from_sandbox", tool_display_name: "Copy File from Sandbox", tool_description: "Copy a file out of the code sandbox into the conversation, for the team", connector_id: WAYAI_CONNECTOR, operation: "copy_from_sandbox", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "keyed", assignable_roles: SANDBOX_AGENT_ROLES },
9177
+ { tool_native_id: "nt-032", tool_name: "copy_from_sandbox", tool_display_name: "Copy File from Sandbox", tool_description: "Copy a file out of the code sandbox into the conversation, for the team", connector_id: WAYAI_CONNECTOR, operation: "copy_from_sandbox", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: false, replay: "keyed", hosted: false, assignable_roles: SANDBOX_AGENT_ROLES },
9165
9178
  // The `data/` mount's writes (#5142 step 2): a document of the agent's Base Toolset, written
9166
9179
  // through the toolset's own `put` tool with its version check. `reconcile`, not `keyed`: a re-run
9167
9180
  // after a first write that changed the file is refused by that check (its version, or the create's
9168
9181
  // path, is taken), so it never writes twice, but it answers a refusal where the first answered the
9169
9182
  // write, which is not the no-op `keyed` re-runs promise (owner decision 74). A first write of the
9170
9183
  // content the file already held kept its version, so its re-run is that same no-op.
9171
- { tool_native_id: "nt-033", tool_name: "write_file", tool_display_name: "Write File", tool_description: "Create or replace a Base Toolset document under data/, with a version check", connector_id: WAYAI_CONNECTOR, operation: "write_file", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: true, replay: "reconcile" },
9172
- { tool_native_id: "nt-034", tool_name: "edit_file", tool_display_name: "Edit File", tool_description: "Replace text in a Base Toolset document under data/, with a version check", connector_id: WAYAI_CONNECTOR, operation: "edit_file", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: true, replay: "reconcile" }
9184
+ { tool_native_id: "nt-033", tool_name: "write_file", tool_display_name: "Write File", tool_description: "Create or replace a Base Toolset document under data/, with a version check", connector_id: WAYAI_CONNECTOR, operation: "write_file", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: true, replay: "reconcile", hosted: false },
9185
+ { tool_native_id: "nt-034", tool_name: "edit_file", tool_display_name: "Edit File", tool_description: "Replace text in a Base Toolset document under data/, with a version check", connector_id: WAYAI_CONNECTOR, operation: "edit_file", tool_method: "internal", tool_group: "Native Tools", is_delegation: false, is_auto_set: false, execution_config: null, side_effects: true, replay: "reconcile", hosted: false }
9173
9186
  ];
9174
9187
  NATIVE_TOOLS = BASE_NATIVE_TOOLS.map((base) => {
9175
9188
  const schema = NATIVE_TOOL_SCHEMAS[base.tool_name];
@@ -9200,7 +9213,7 @@ var init_chunk_IBL7FANV = __esm({
9200
9213
  }
9201
9214
  });
9202
9215
 
9203
- // ../../packages/core/dist/chunk-PFDZEKDE.js
9216
+ // ../../packages/core/dist/chunk-Z22T2ASG.js
9204
9217
  function parseExpr(expr) {
9205
9218
  const fnMatch = expr.match(/^([a-zA-Z_][a-zA-Z0-9_]*)\s*\((.*?)\)\s*(?:\.(.*))?$/);
9206
9219
  if (!fnMatch) return null;
@@ -9284,8 +9297,8 @@ function scanTemplateResources(template) {
9284
9297
  return scan;
9285
9298
  }
9286
9299
  var PREVIOUS_CONVERSATIONS_MAX, PLACEHOLDER_RE, CATALOG_FN, LEGACY_CATALOG_FN, EMPTY_SCAN;
9287
- var init_chunk_PFDZEKDE = __esm({
9288
- "../../packages/core/dist/chunk-PFDZEKDE.js"() {
9300
+ var init_chunk_Z22T2ASG = __esm({
9301
+ "../../packages/core/dist/chunk-Z22T2ASG.js"() {
9289
9302
  "use strict";
9290
9303
  PREVIOUS_CONVERSATIONS_MAX = 20;
9291
9304
  PLACEHOLDER_RE = /\{\{\s*([^{}]+?)\s*\}\}/g;
@@ -9489,7 +9502,7 @@ var init_chunk_T7KQKDET = __esm({
9489
9502
  }
9490
9503
  });
9491
9504
 
9492
- // ../../packages/core/dist/chunk-XOGFONTQ.js
9505
+ // ../../packages/core/dist/chunk-2LZYS6YX.js
9493
9506
  function resolveMonitorTrigger(monitorConfig) {
9494
9507
  if (!monitorConfig || typeof monitorConfig !== "object") return "idle";
9495
9508
  const raw = monitorConfig.trigger;
@@ -9795,12 +9808,12 @@ function refineMonitorRulesStructuredOutput(body, ctx) {
9795
9808
  if (refusal2) ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["response_format"], message: refusal2 });
9796
9809
  }
9797
9810
  var NATIVE_TOOL_NAMES, previousConversationsCountField, summarizationThresholdField, flagConditionSchema, MONITOR_TRIGGERS, monitorTriggerSchema, AUTOMATION_GATE_TRIGGERS, NON_FIRING_TRIGGERS, MONITOR_FIRING_TRIGGERS, MONITOR_DELAY_SECONDS_MIN, MONITOR_IDLE_DELAY_REQUIRED_MESSAGE, MONITOR_HISTORY_MESSAGES_MAX, monitorHistoryMessagesSchema, monitorIncludeToolResultsSchema, MONITOR_INPUT_SHAPING_KEYS, MONITOR_INPUT_SHAPING_SCHEMAS, MONITOR_INPUT_SHAPING_IDLE_MESSAGE, monitorArgumentSourceSchema, MONITOR_NOTE_TEMPLATE_MAX, MONITOR_STEER_NOTE_MAX, MONITOR_GATE_AGENT_NAME_MAX, monitorActionSchema, monitorRuleSchema, MONITOR_RULE_KEYS, MONITOR_RULE_SCHEMAS, MONITOR_RULE_TRIGGERS, MONITOR_RULE_TRIGGER_MESSAGE, CALL_UTTERANCE_SPEAKERS, callUtteranceSpeakerSchema, MONITOR_CALL_KEYS, MONITOR_CALL_SCHEMAS, MONITOR_CALL_KEY_MESSAGE, CALL_STEERING_MIN_CONFIDENCE, CALL_UTTERANCE_RULE_NOT_CONFIDENT_MESSAGE, CALL_UTTERANCE_FALLBACK_MESSAGE, CALL_UTTERANCE_FLAG_CONDITIONS_MESSAGE, CALL_STEER_NOTE_BLANK_MESSAGE, MONITOR_USER_MESSAGE_ACTION_KINDS, MONITOR_ASSISTANT_REPLY_ACTION_KINDS, MONITOR_CALL_UTTERANCE_ACTION_KINDS, MONITOR_AUTOMATION_FIRE_ACTION_KINDS, MONITOR_AUTOMATION_ITEM_ACTION_KINDS, INSERT_NOTE_TOOL_NAME, RUN_MONITOR_TOOL_NAME, MONITOR_RULE_ALLOWED_NATIVE_TOOLS, MONITOR_RULE_REENTRY_TOOLS, MONITOR_RULE_REENTRY_TRACKS, AUTOMATION_FIRE_FLAG_CONDITIONS_MESSAGE, AUTOMATION_FIRE_INPUT_SHAPING_MESSAGE, AUTOMATION_ITEM_FLAG_CONDITIONS_MESSAGE, AUTOMATION_ITEM_INPUT_SHAPING_MESSAGE, AUTOMATION_GATE_KEY_MESSAGES, monitorConfigField, flagConditionsField, agentIdParam, listAgentsQuery, agentConnectionsQuery, createAgentBody, updateAgentBody, AGENT_PARAMETER_TYPES, AGENT_PARAMETER_NAME_REGEX, agentParameterCreateSchema, MAX_AGENT_PARAMETERS_PER_REQUEST, createAgentParametersBody;
9798
- var init_chunk_XOGFONTQ = __esm({
9799
- "../../packages/core/dist/chunk-XOGFONTQ.js"() {
9811
+ var init_chunk_2LZYS6YX = __esm({
9812
+ "../../packages/core/dist/chunk-2LZYS6YX.js"() {
9800
9813
  "use strict";
9801
- init_chunk_UZ7SPBM3();
9814
+ init_chunk_UFYIBL66();
9802
9815
  init_chunk_IBL7FANV();
9803
- init_chunk_PFDZEKDE();
9816
+ init_chunk_Z22T2ASG();
9804
9817
  init_chunk_HZ6CADSY();
9805
9818
  init_chunk_C2UEA2KW();
9806
9819
  init_chunk_DHPUPI4Y();
@@ -10021,12 +10034,12 @@ var init_chunk_XOGFONTQ = __esm({
10021
10034
  }
10022
10035
  });
10023
10036
 
10024
- // ../../packages/core/dist/chunk-TUP5Y6ZB.js
10037
+ // ../../packages/core/dist/chunk-XR36MYEY.js
10025
10038
  var conversationIdParam, conversationHubQuery, claimBody, releaseBody, transferBody, closeBody, additionalContextPayloadSchema, kanbanUpdateBody, annotateConversationBody, observabilityParams, observabilityListParams, deleteUserConversationsBody, deleteUserConversationsResponse, sendMessageBody, listConversationsQuery, flagSourceSchema, getConversationsResponse, getConversationDetailParams, getConversationDetailQuery, getConversationDetailResponse, listWhatsAppTemplatesQuery, sendWhatsAppTemplateBody;
10026
- var init_chunk_TUP5Y6ZB = __esm({
10027
- "../../packages/core/dist/chunk-TUP5Y6ZB.js"() {
10039
+ var init_chunk_XR36MYEY = __esm({
10040
+ "../../packages/core/dist/chunk-XR36MYEY.js"() {
10028
10041
  "use strict";
10029
- init_chunk_XOGFONTQ();
10042
+ init_chunk_2LZYS6YX();
10030
10043
  init_chunk_HZ6CADSY();
10031
10044
  init_chunk_DHPUPI4Y();
10032
10045
  init_zod();
@@ -10482,7 +10495,7 @@ var init_chunk_BPCNB5RT = __esm({
10482
10495
  }
10483
10496
  });
10484
10497
 
10485
- // ../../packages/core/dist/chunk-LQSENJ26.js
10498
+ // ../../packages/core/dist/chunk-MCSEEMGN.js
10486
10499
  function idempotencyHeaderRefusal(value) {
10487
10500
  if (typeof value !== "string" || !/^[A-Za-z0-9][A-Za-z0-9-]{0,63}$/.test(value)) {
10488
10501
  return "idempotency_header must be a header name: letters, digits and dashes, at most 64";
@@ -10493,10 +10506,10 @@ function idempotencyHeaderRefusal(value) {
10493
10506
  return null;
10494
10507
  }
10495
10508
  var CATALOG_REPLAY, REPLAY_OVERRIDES, RESERVED_HEADERS;
10496
- var init_chunk_LQSENJ26 = __esm({
10497
- "../../packages/core/dist/chunk-LQSENJ26.js"() {
10509
+ var init_chunk_MCSEEMGN = __esm({
10510
+ "../../packages/core/dist/chunk-MCSEEMGN.js"() {
10498
10511
  "use strict";
10499
- init_chunk_UZ7SPBM3();
10512
+ init_chunk_UFYIBL66();
10500
10513
  CATALOG_REPLAY = new Map(
10501
10514
  NATIVE_TOOLS.map((tool) => [tool.tool_name, tool.replay])
10502
10515
  );
@@ -10729,7 +10742,7 @@ var init_chunk_WEXVYJ5H = __esm({
10729
10742
  }
10730
10743
  });
10731
10744
 
10732
- // ../../packages/core/dist/chunk-KRGVB7U6.js
10745
+ // ../../packages/core/dist/chunk-4S4FBSBE.js
10733
10746
  function refineToolConfig(value, ctx) {
10734
10747
  const raw = value.tool_config;
10735
10748
  if (raw == null) return;
@@ -10765,10 +10778,10 @@ function refineToolConfig(value, ctx) {
10765
10778
  }
10766
10779
  }
10767
10780
  var toolIdParam, listToolsQuery, toolAgentQuery, deleteToolQuery, toolConnectionsQuery, nativeToolIdSchema, CONTEXT_BOUNDARIES, contextBoundarySchema, addNativeToolBody, addMcpToolBody, toolReplaySettingsFields, toolReplaySettingsSchema, createCustomToolBody, updateCustomToolBody, updateToolExecutionConfigBody;
10768
- var init_chunk_KRGVB7U6 = __esm({
10769
- "../../packages/core/dist/chunk-KRGVB7U6.js"() {
10781
+ var init_chunk_4S4FBSBE = __esm({
10782
+ "../../packages/core/dist/chunk-4S4FBSBE.js"() {
10770
10783
  "use strict";
10771
- init_chunk_LQSENJ26();
10784
+ init_chunk_MCSEEMGN();
10772
10785
  init_chunk_WEXVYJ5H();
10773
10786
  init_chunk_HZ6CADSY();
10774
10787
  init_zod();
@@ -10839,7 +10852,7 @@ var init_chunk_4LXDRTO4 = __esm({
10839
10852
  }
10840
10853
  });
10841
10854
 
10842
- // ../../packages/core/dist/chunk-LZDVDC2S.js
10855
+ // ../../packages/core/dist/chunk-6Y7XMRWF.js
10843
10856
  function isIanaTimezone(timezone) {
10844
10857
  try {
10845
10858
  new Intl.DateTimeFormat("en-US", { timeZone: timezone }).format(0);
@@ -10849,10 +10862,10 @@ function isIanaTimezone(timezone) {
10849
10862
  }
10850
10863
  }
10851
10864
  var evalDateContextSchema;
10852
- var init_chunk_LZDVDC2S = __esm({
10853
- "../../packages/core/dist/chunk-LZDVDC2S.js"() {
10865
+ var init_chunk_6Y7XMRWF = __esm({
10866
+ "../../packages/core/dist/chunk-6Y7XMRWF.js"() {
10854
10867
  "use strict";
10855
- init_chunk_PFDZEKDE();
10868
+ init_chunk_Z22T2ASG();
10856
10869
  init_chunk_HZ6CADSY();
10857
10870
  init_chunk_MIWZOSPI();
10858
10871
  init_chunk_DHPUPI4Y();
@@ -10879,7 +10892,7 @@ var init_chunk_2ISUBJG7 = __esm({
10879
10892
  }
10880
10893
  });
10881
10894
 
10882
- // ../../packages/core/dist/chunk-623SRYWZ.js
10895
+ // ../../packages/core/dist/chunk-RCTKQTJH.js
10883
10896
  function describeRole(role) {
10884
10897
  if (typeof role === "string") {
10885
10898
  return JSON.stringify(role.length > ROLE_ECHO_MAX ? `${role.slice(0, ROLE_ECHO_MAX)}\u2026` : role);
@@ -11053,11 +11066,11 @@ function terminalRunCount(counts) {
11053
11066
  return counts.successful_runs + counts.failed_runs;
11054
11067
  }
11055
11068
  var evalIdParam, sessionIdParam, scenarioSetIdParam, hubIdQuery, 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, evalCustomerContactIdSchema, 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, evalAttachmentRef, turnMayCarryAttachments, ATTACHMENTS_USER_ONLY_MESSAGE, journeyIdParam, journeyToolCallSchema, journeyTurnSchema, journeyStepOverrideSchema, fixtureField, createJourneyBody, updateJourneyBody, evalSessionConfigResponseSchema, evalSessionResponseSchema, evalSessionListConfigSchema, evalSessionListItemSchema, seedReleaseStatusSchema, EVAL_SESSION_NOT_QUIESCENT;
11056
- var init_chunk_623SRYWZ = __esm({
11057
- "../../packages/core/dist/chunk-623SRYWZ.js"() {
11069
+ var init_chunk_RCTKQTJH = __esm({
11070
+ "../../packages/core/dist/chunk-RCTKQTJH.js"() {
11058
11071
  "use strict";
11059
11072
  init_chunk_4LXDRTO4();
11060
- init_chunk_LZDVDC2S();
11073
+ init_chunk_6Y7XMRWF();
11061
11074
  init_chunk_HZ6CADSY();
11062
11075
  init_chunk_2ISUBJG7();
11063
11076
  init_zod();
@@ -12140,7 +12153,7 @@ var init_chunk_6NI5RAM4 = __esm({
12140
12153
  }
12141
12154
  });
12142
12155
 
12143
- // ../../packages/core/dist/chunk-RT35VFUY.js
12156
+ // ../../packages/core/dist/chunk-FJ5K57CB.js
12144
12157
  function refineHubAsCodeCustomTools(config, ctx) {
12145
12158
  const agents = config.agents;
12146
12159
  if (!Array.isArray(agents)) return;
@@ -12676,12 +12689,12 @@ function refineHubAsCodeMonitorRulesOutput(config, ctx) {
12676
12689
  });
12677
12690
  }
12678
12691
  var MAX_10MB_BASE64_ENCODED_BYTES, MAX_EVAL_ATTACHMENT_ENCODED_BYTES, MAX_EVAL_ATTACHMENT_CARRIERS, MAX_EVAL_ATTACHMENT_AGGREGATE_ENCODED_BYTES, MAX_RESOURCE_ENCODED_BYTES, MAX_HUB_AS_CODE_RESOURCES, MAX_HUB_AS_CODE_RESOURCE_FILES, MAX_RESOURCE_AGGREGATE_ENCODED_BYTES, MAX_CI_CONFIG_BODY_BYTES, MAX_CALL_OPENING_CARRIERS, MAX_CALL_OPENING_AGGREGATE_ENCODED_BYTES, hubAsCodeStateSchema, hubAsCodeResourceFileSchema, hubAsCodeResourceSchema, uuidPattern, ciUuidSchema, boundedHubAsCodeResourcesSchema, hubAsCodeConfigSchema, ciPullHubIdParam, ciBranchParam, ciPullQuery, ciHubsQuery, ciLookupQuery, ciBranchesQuery, ciSyncBody, ciPushBody, ciDiffBody, ciPublishBody, ciPublishPreviewBody, ciSyncMcpBody, ciOrgResourcesParam, orgResourcesConfigSchema, ciOrgResourcesPushBody, ciOrgResourcesDiffBody, CI_APPLY_ENTITY_KINDS, CI_APPLY_OPERATIONS, ciApplyErrorBaseSchema, ciApplyErrorSchema, ciSyncCountSchema, ciSyncChangesSchema, ciSyncWarningSchema, ciSyncResponseSchema;
12679
- var init_chunk_RT35VFUY = __esm({
12680
- "../../packages/core/dist/chunk-RT35VFUY.js"() {
12692
+ var init_chunk_FJ5K57CB = __esm({
12693
+ "../../packages/core/dist/chunk-FJ5K57CB.js"() {
12681
12694
  "use strict";
12682
- init_chunk_KRGVB7U6();
12683
- init_chunk_623SRYWZ();
12684
- init_chunk_XOGFONTQ();
12695
+ init_chunk_4S4FBSBE();
12696
+ init_chunk_RCTKQTJH();
12697
+ init_chunk_2LZYS6YX();
12685
12698
  init_chunk_LBDH7LCG();
12686
12699
  init_chunk_4LXDRTO4();
12687
12700
  init_chunk_T4Q5COKJ();
@@ -12734,8 +12747,9 @@ var init_chunk_RT35VFUY = __esm({
12734
12747
  hubAsCodeResourceSchema = external_exports.object({
12735
12748
  id: external_exports.string().min(1).optional(),
12736
12749
  name: external_exports.string().min(1),
12750
+ // Omitted: a new resource is a skill, an existing one keeps its type. A push refuses a new
12751
+ // knowledge resource and a change to knowledge (wayai-pro/wayai#5142 step 5).
12737
12752
  type: external_exports.enum(["knowledge", "skill"]).optional(),
12738
- // 'knowledge' (default) | 'skill'
12739
12753
  description: external_exports.string().optional(),
12740
12754
  enabled: external_exports.boolean().optional(),
12741
12755
  // No `user_browsable`: the field is retired (wayai#4710). This schema is `.passthrough()`,
@@ -13690,13 +13704,13 @@ var init_chunk_LQY2OCQL = __esm({
13690
13704
  }
13691
13705
  });
13692
13706
 
13693
- // ../../packages/core/dist/chunk-2VTDOH67.js
13707
+ // ../../packages/core/dist/chunk-EA6XOOL2.js
13694
13708
  var AUTOMATION_TRIGGER_TYPES, AUTOMATION_EVENT_TYPES, AUTOMATION_TARGET_TYPES, AUTOMATION_ACTION_TYPES, AUTOMATION_CHANNEL_TYPES, AUTOMATION_PURPOSES, AUTOMATION_NAME_MAX, AUTOMATION_DESCRIPTION_MAX, AUTOMATION_INSTRUCTIONS_MAX, AUTOMATION_TEXT_MAX, AUTOMATION_CRON_MAX, AUTOMATION_WEBHOOK_AUTHS, AUTOMATION_WEBHOOK_HEADERS, AUTOMATION_WEBHOOK_BODY_MAX_BYTES, AUTOMATION_WEBHOOK_HEADER_NAME_MAX, WEBHOOK_RESERVED_HEADERS, automationTriggerSchema, automationTargetSchema, automationActionSchema, automationGateSchema, automationName, automationDescription, automationIdParam, automationHubQuery, automationWebhookParams, AUTOMATION_RUNS_PAGE_MAX, listAutomationRunsQuery, createAutomationBody, updateAutomationBody, AUTOMATION_ALERT_CATEGORIES, AUTOMATION_BLOCKED_ALERT_CATEGORY, automationEventSubscriberParam;
13695
- var init_chunk_2VTDOH67 = __esm({
13696
- "../../packages/core/dist/chunk-2VTDOH67.js"() {
13709
+ var init_chunk_EA6XOOL2 = __esm({
13710
+ "../../packages/core/dist/chunk-EA6XOOL2.js"() {
13697
13711
  "use strict";
13698
13712
  init_chunk_LQY2OCQL();
13699
- init_chunk_XOGFONTQ();
13713
+ init_chunk_2LZYS6YX();
13700
13714
  init_chunk_3HSB6J4J();
13701
13715
  init_chunk_5XEJSR22();
13702
13716
  init_chunk_DHPUPI4Y();
@@ -14108,10 +14122,10 @@ var init_chunk_BFG4ZWR4 = __esm({
14108
14122
  }
14109
14123
  });
14110
14124
 
14111
- // ../../packages/core/dist/chunk-WO37XYVD.js
14125
+ // ../../packages/core/dist/chunk-6QXCHNFQ.js
14112
14126
  var dataExplorerDebugDoType, DEBUG_READ_MAX_LIMIT, DEBUG_READ_DEFAULT_LIMIT;
14113
- var init_chunk_WO37XYVD = __esm({
14114
- "../../packages/core/dist/chunk-WO37XYVD.js"() {
14127
+ var init_chunk_6QXCHNFQ = __esm({
14128
+ "../../packages/core/dist/chunk-6QXCHNFQ.js"() {
14115
14129
  "use strict";
14116
14130
  init_zod();
14117
14131
  dataExplorerDebugDoType = external_exports.enum(["hub", "org", "conversation", "user", "platform", "thread", "community", "contact_book", "batch"]);
@@ -14222,7 +14236,7 @@ var init_chunk_OMPT4ZHR = __esm({
14222
14236
  }
14223
14237
  });
14224
14238
 
14225
- // ../../packages/core/dist/chunk-2FCLSQSQ.js
14239
+ // ../../packages/core/dist/chunk-3ACHWKFV.js
14226
14240
  function refineScopedTarget(data, ctx) {
14227
14241
  if (data.scope === "org") {
14228
14242
  if (!data.org_id) {
@@ -14247,13 +14261,13 @@ function refineScopedTarget(data, ctx) {
14247
14261
  }
14248
14262
  }
14249
14263
  }
14250
- var 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, 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, DEBUG_DO_HEX_PREFIX, debugDoEntityId, debugTableName, dataExplorerDebugTablesParam, dataExplorerDebugRowsParam, dataExplorerDebugRowsQuery, dataExplorerDebugAnalyticsTable, debugUuid, dataExplorerDebugAnalyticsRowsParam, dataExplorerDebugAnalyticsRowsQuery, debugHubConvParam, debugMessageIdQuery;
14251
- var init_chunk_2FCLSQSQ = __esm({
14252
- "../../packages/core/dist/chunk-2FCLSQSQ.js"() {
14264
+ var 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, 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, DEBUG_DO_HEX_PREFIX, debugDoEntityId, debugTableName, dataExplorerDebugTablesParam, dataExplorerDebugRowsParam, dataExplorerDebugRowsQuery, dataExplorerDebugAnalyticsTable, debugUuid, dataExplorerDebugAnalyticsRowsParam, dataExplorerDebugAnalyticsRowsQuery, dataExplorerDebugCountsDoType, dataExplorerDebugCountsParam, debugHubConvParam, debugMessageIdQuery;
14265
+ var init_chunk_3ACHWKFV = __esm({
14266
+ "../../packages/core/dist/chunk-3ACHWKFV.js"() {
14253
14267
  "use strict";
14254
14268
  init_chunk_FECLIZTY();
14255
14269
  init_chunk_BFG4ZWR4();
14256
- init_chunk_WO37XYVD();
14270
+ init_chunk_6QXCHNFQ();
14257
14271
  init_chunk_T4Q5COKJ();
14258
14272
  init_chunk_OMPT4ZHR();
14259
14273
  init_chunk_HZ6CADSY();
@@ -14580,6 +14594,11 @@ var init_chunk_2FCLSQSQ = __esm({
14580
14594
  message_id: debugUuid.optional(),
14581
14595
  limit: external_exports.coerce.number().int().min(1).max(DEBUG_READ_MAX_LIMIT).default(DEBUG_READ_DEFAULT_LIMIT)
14582
14596
  });
14597
+ dataExplorerDebugCountsDoType = dataExplorerDebugDoType.extract(["hub", "org"]);
14598
+ dataExplorerDebugCountsParam = external_exports.object({
14599
+ type: dataExplorerDebugCountsDoType,
14600
+ id: debugUuid
14601
+ });
14583
14602
  debugHubConvParam = external_exports.object({
14584
14603
  hubId: debugUuid,
14585
14604
  conversationId: debugUuid
@@ -14941,14 +14960,14 @@ var init_chunk_TS4EYU3W = __esm({
14941
14960
  var init_contracts = __esm({
14942
14961
  "../../packages/core/dist/contracts/index.js"() {
14943
14962
  "use strict";
14963
+ init_chunk_GK27ENTT();
14944
14964
  init_chunk_SXDX4GHS();
14945
- init_chunk_FK6HBXM7();
14965
+ init_chunk_HENF6YTF();
14946
14966
  init_chunk_VXEAR36B();
14947
- init_chunk_TIZ57ZBA();
14967
+ init_chunk_DYI3BRJ3();
14948
14968
  init_chunk_Q7KIQHAZ();
14949
14969
  init_chunk_WBFLPPDI();
14950
14970
  init_chunk_IPXBFWUU();
14951
- init_chunk_GK27ENTT();
14952
14971
  init_chunk_GPM7PE44();
14953
14972
  init_chunk_DGKMMFIR();
14954
14973
  init_chunk_ZC6YGHNX();
@@ -14956,7 +14975,7 @@ var init_contracts = __esm({
14956
14975
  init_chunk_ZXK6N2HN();
14957
14976
  init_chunk_Y7CFCYX4();
14958
14977
  init_chunk_5DGHIY7L();
14959
- init_chunk_FNNHGL7K();
14978
+ init_chunk_4QBKRQMM();
14960
14979
  init_chunk_4MRBBR5L();
14961
14980
  init_chunk_BEOHBREG();
14962
14981
  init_chunk_IPDOHAZ5();
@@ -14964,7 +14983,7 @@ var init_contracts = __esm({
14964
14983
  init_chunk_I3O2RACG();
14965
14984
  init_chunk_34LE6P7E();
14966
14985
  init_chunk_FPSDNS2E();
14967
- init_chunk_QZZ3OHLV();
14986
+ init_chunk_23ESQLLF();
14968
14987
  init_chunk_C4HEZ7ZI();
14969
14988
  init_chunk_IR2NOSI3();
14970
14989
  init_chunk_EA23LSDS();
@@ -14972,13 +14991,13 @@ var init_contracts = __esm({
14972
14991
  init_chunk_LWMLR2WI();
14973
14992
  init_chunk_ACGAI25T();
14974
14993
  init_chunk_MH4O3YEX();
14975
- init_chunk_TUP5Y6ZB();
14994
+ init_chunk_XR36MYEY();
14976
14995
  init_chunk_KSTYTQ7I();
14977
14996
  init_chunk_LKBSHANA();
14978
14997
  init_chunk_BPCNB5RT();
14979
- init_chunk_RT35VFUY();
14980
- init_chunk_KRGVB7U6();
14981
- init_chunk_623SRYWZ();
14998
+ init_chunk_FJ5K57CB();
14999
+ init_chunk_4S4FBSBE();
15000
+ init_chunk_RCTKQTJH();
14982
15001
  init_chunk_JDJ4EUOL();
14983
15002
  init_chunk_3KYTITOR();
14984
15003
  init_chunk_XCDUP42J();
@@ -14987,9 +15006,9 @@ var init_contracts = __esm({
14987
15006
  init_chunk_YULHXJ5M();
14988
15007
  init_chunk_V4FRPRH5();
14989
15008
  init_chunk_ZHJEQBXJ();
14990
- init_chunk_2VTDOH67();
15009
+ init_chunk_EA6XOOL2();
14991
15010
  init_chunk_LQY2OCQL();
14992
- init_chunk_XOGFONTQ();
15011
+ init_chunk_2LZYS6YX();
14993
15012
  init_chunk_3HSB6J4J();
14994
15013
  init_chunk_IG6QBZMA();
14995
15014
  init_chunk_ZJJ5ODOD();
@@ -14998,14 +15017,14 @@ var init_contracts = __esm({
14998
15017
  init_chunk_4LXDRTO4();
14999
15018
  init_chunk_E4DIIOOE();
15000
15019
  init_chunk_7CYHPF35();
15001
- init_chunk_OGXIPFQY();
15002
- init_chunk_LQSENJ26();
15003
- init_chunk_UZ7SPBM3();
15020
+ init_chunk_23UZ2IKU();
15021
+ init_chunk_MCSEEMGN();
15022
+ init_chunk_UFYIBL66();
15004
15023
  init_chunk_NVKU5PPQ();
15005
- init_chunk_2FCLSQSQ();
15024
+ init_chunk_3ACHWKFV();
15006
15025
  init_chunk_FECLIZTY();
15007
15026
  init_chunk_BFG4ZWR4();
15008
- init_chunk_WO37XYVD();
15027
+ init_chunk_6QXCHNFQ();
15009
15028
  init_chunk_T4Q5COKJ();
15010
15029
  init_chunk_3VHMUK4W();
15011
15030
  init_chunk_AMG6HKUQ();
@@ -15013,14 +15032,15 @@ var init_contracts = __esm({
15013
15032
  init_chunk_OMPT4ZHR();
15014
15033
  init_chunk_2PZIF56U();
15015
15034
  init_chunk_UEJOG2Q7();
15016
- init_chunk_ISFDR7SP();
15035
+ init_chunk_KJXJKAYT();
15017
15036
  init_chunk_SOJMWM63();
15018
15037
  init_chunk_WEXVYJ5H();
15019
- init_chunk_LZDVDC2S();
15038
+ init_chunk_6Y7XMRWF();
15020
15039
  init_chunk_5XEJSR22();
15021
15040
  init_chunk_IBL7FANV();
15022
- init_chunk_PFDZEKDE();
15041
+ init_chunk_Z22T2ASG();
15023
15042
  init_chunk_VORPHGDT();
15043
+ init_chunk_A4JC7DXB();
15024
15044
  init_chunk_HZ6CADSY();
15025
15045
  init_chunk_MIWZOSPI();
15026
15046
  init_chunk_2ISUBJG7();
@@ -15920,6 +15940,10 @@ var init_api_client = __esm({
15920
15940
  `/api/admin/data-explorer/debug/do/${doType}/${encodeURIComponent(doId)}/tables/${encodeURIComponent(table)}/rows${qs}`
15921
15941
  );
15922
15942
  }
15943
+ /** A hub's or an organization's knowledge as numbers: the admin census's counts (no text). */
15944
+ async debugCounts(doType, doId) {
15945
+ return this.request("GET", `/api/admin/data-explorer/debug/do/${doType}/${encodeURIComponent(doId)}/counts`);
15946
+ }
15923
15947
  async debugListAnalyticsTables() {
15924
15948
  return this.request("GET", "/api/admin/data-explorer/debug/analytics/tables");
15925
15949
  }
@@ -16341,15 +16365,16 @@ var UUID_RE2, WAYAI_WORKSPACE_LAYOUT;
16341
16365
  var init_dist = __esm({
16342
16366
  "../../packages/core/dist/index.js"() {
16343
16367
  "use strict";
16344
- init_chunk_ISFDR7SP();
16368
+ init_chunk_KJXJKAYT();
16345
16369
  init_chunk_SOJMWM63();
16346
16370
  init_chunk_WEXVYJ5H();
16347
- init_chunk_LZDVDC2S();
16371
+ init_chunk_6Y7XMRWF();
16348
16372
  init_chunk_5XEJSR22();
16349
16373
  init_chunk_IBL7FANV();
16350
- init_chunk_PFDZEKDE();
16374
+ init_chunk_Z22T2ASG();
16351
16375
  init_chunk_P3AWZG3N();
16352
16376
  init_chunk_VORPHGDT();
16377
+ init_chunk_A4JC7DXB();
16353
16378
  init_chunk_HZ6CADSY();
16354
16379
  init_chunk_MIWZOSPI();
16355
16380
  init_chunk_ERFR7IRY();
@@ -17738,6 +17763,7 @@ var init_utils = __esm({
17738
17763
  ["admin observability", { positionals: 2, values: ["--message-id"] }],
17739
17764
  ["admin do tables", { positionals: 2 }],
17740
17765
  ["admin do read", { positionals: 3, values: ["--limit", "--id"] }],
17766
+ ["admin do counts", { positionals: 2 }],
17741
17767
  ["admin analytics tables", { positionals: 0 }],
17742
17768
  ["admin analytics read", { positionals: 1, values: ["--limit", "--conversation-id", "--hub-id", "--message-id"] }],
17743
17769
  ["admin report list", { positionals: 0, values: ["--status", "--source", "--limit", "--offset", "--since", "--resolved-since"] }],
@@ -33554,13 +33580,23 @@ function compareForSlugOrder(a, b) {
33554
33580
  if (at !== bt) return at < bt ? -1 : 1;
33555
33581
  return a.resource_id < b.resource_id ? -1 : a.resource_id > b.resource_id ? 1 : 0;
33556
33582
  }
33557
- function buildResourceSlugMap(resources) {
33558
- const ordered = [...resources].sort(compareForSlugOrder);
33583
+ function isSkill(resource) {
33584
+ return resource.resource_type === "skill";
33585
+ }
33586
+ function resourceNamespace(resource) {
33587
+ return isSkill(resource) ? SKILL_NAMESPACE : RESOURCE_NAMESPACE;
33588
+ }
33589
+ function resourceMountPath(resource, slug) {
33590
+ return `${resourceNamespace(resource)}/${slug}`;
33591
+ }
33592
+ function baseSlug(resource) {
33593
+ return slugifySkillName(resourceDisplayName(resource)) || FALLBACK_SLUG;
33594
+ }
33595
+ function rankSlugs(ordered) {
33559
33596
  const used = /* @__PURE__ */ new Set();
33560
33597
  const slugByResourceId = /* @__PURE__ */ new Map();
33561
33598
  for (const resource of ordered) {
33562
- if (!resource?.resource_id) continue;
33563
- const base = slugifySkillName(resourceDisplayName(resource)) || FALLBACK_SLUG;
33599
+ const base = baseSlug(resource);
33564
33600
  let slug = base;
33565
33601
  for (let ordinal = 2; used.has(slug); ordinal++) slug = `${base}-${ordinal}`;
33566
33602
  used.add(slug);
@@ -33568,6 +33604,17 @@ function buildResourceSlugMap(resources) {
33568
33604
  }
33569
33605
  return slugByResourceId;
33570
33606
  }
33607
+ function buildResourceSlugMap(resources) {
33608
+ const ordered = resources.filter((resource) => !!resource?.resource_id).sort(compareForSlugOrder);
33609
+ const overAll = rankSlugs(ordered);
33610
+ const overSkills = rankSlugs(ordered.filter(isSkill));
33611
+ const slugByResourceId = /* @__PURE__ */ new Map();
33612
+ for (const resource of ordered) {
33613
+ const slug = isSkill(resource) ? overSkills.get(resource.resource_id) : overAll.get(resource.resource_id);
33614
+ if (slug) slugByResourceId.set(resource.resource_id, slug);
33615
+ }
33616
+ return slugByResourceId;
33617
+ }
33571
33618
  function sanitizeSegment(name) {
33572
33619
  const cleaned = (name ?? "").replace(/[\\/]+/g, "-").replace(/[\u0000-\u001F\u007F-\u009F\u2028\u2029]+/g, " ").trim();
33573
33620
  return cleaned === "." || cleaned === ".." ? "" : cleaned;
@@ -33684,8 +33731,15 @@ function compareForOrdinalOrder(a, b) {
33684
33731
  }
33685
33732
  function buildResourcePathIndex(resources, files, folders) {
33686
33733
  const slugByResourceId = buildResourceSlugMap(resources);
33687
- const resourceIdBySlug = /* @__PURE__ */ new Map();
33688
- for (const [resourceId, slug] of slugByResourceId) resourceIdBySlug.set(slug, resourceId);
33734
+ const mountPathByResourceId = /* @__PURE__ */ new Map();
33735
+ const resourceIdByMountPath = /* @__PURE__ */ new Map();
33736
+ for (const resource of resources) {
33737
+ const slug = resource?.resource_id ? slugByResourceId.get(resource.resource_id) : void 0;
33738
+ if (!slug) continue;
33739
+ const mountPath = resourceMountPath(resource, slug);
33740
+ mountPathByResourceId.set(resource.resource_id, mountPath);
33741
+ resourceIdByMountPath.set(mountPath, resource.resource_id);
33742
+ }
33689
33743
  const resolveFolder = buildFolderPathResolver(folders);
33690
33744
  const filesByResource = /* @__PURE__ */ new Map();
33691
33745
  for (const row of files) {
@@ -33700,7 +33754,8 @@ function buildResourcePathIndex(resources, files, folders) {
33700
33754
  const entriesByResourceId = /* @__PURE__ */ new Map();
33701
33755
  for (const [resourceId, rows] of filesByResource) {
33702
33756
  const slug = slugByResourceId.get(resourceId);
33703
- if (!slug) continue;
33757
+ const mountPath = mountPathByResourceId.get(resourceId);
33758
+ if (!slug || !mountPath) continue;
33704
33759
  const takenPaths = /* @__PURE__ */ new Set();
33705
33760
  const resourceEntries = [];
33706
33761
  for (const row of [...rows].sort(compareForOrdinalOrder)) {
@@ -33721,7 +33776,7 @@ function buildResourcePathIndex(resources, files, folders) {
33721
33776
  resource_file_id: row.resource_file_id,
33722
33777
  file_id: row.file_id,
33723
33778
  relative_path: relativePath,
33724
- canonical_path: `${RESOURCE_NAMESPACE}/${slug}/${relativePath}`,
33779
+ canonical_path: `${mountPath}/${relativePath}`,
33725
33780
  file: row
33726
33781
  };
33727
33782
  entries.push(entry);
@@ -33731,9 +33786,9 @@ function buildResourcePathIndex(resources, files, folders) {
33731
33786
  }
33732
33787
  entriesByResourceId.set(resourceId, resourceEntries);
33733
33788
  }
33734
- return { entries, slugByResourceId, resourceIdBySlug, byCanonicalPath, byFileId, entriesByResourceId };
33789
+ return { entries, slugByResourceId, mountPathByResourceId, resourceIdByMountPath, byCanonicalPath, byFileId, entriesByResourceId };
33735
33790
  }
33736
- var RESOURCE_NAMESPACE, FALLBACK_SLUG, FALLBACK_LEAF, MAX_FOLDER_DEPTH, UI_UPLOAD_TIMESTAMP_PREFIX, UUID_SEGMENT;
33791
+ var RESOURCE_NAMESPACE, SKILL_NAMESPACE, FALLBACK_SLUG, FALLBACK_LEAF, MAX_FOLDER_DEPTH, UI_UPLOAD_TIMESTAMP_PREFIX, UUID_SEGMENT;
33737
33792
  var init_resource_paths = __esm({
33738
33793
  "../../packages/core/dist/resource-paths.js"() {
33739
33794
  "use strict";
@@ -33741,6 +33796,7 @@ var init_resource_paths = __esm({
33741
33796
  init_chunk_CJ3L46X6();
33742
33797
  init_chunk_6TSQ5HXC();
33743
33798
  RESOURCE_NAMESPACE = "resources";
33799
+ SKILL_NAMESPACE = "skills";
33744
33800
  FALLBACK_SLUG = "resource";
33745
33801
  FALLBACK_LEAF = "file";
33746
33802
  MAX_FOLDER_DEPTH = 32;
@@ -35376,9 +35432,10 @@ var COUNTER_KEYS, STT_PRICING, CONTAINER_PRICING, connectorById, nativeToolById;
35376
35432
  var init_catalog = __esm({
35377
35433
  "../../packages/core/dist/catalog/index.js"() {
35378
35434
  "use strict";
35379
- init_chunk_OGXIPFQY();
35380
- init_chunk_LQSENJ26();
35381
- init_chunk_UZ7SPBM3();
35435
+ init_chunk_23UZ2IKU();
35436
+ init_chunk_MCSEEMGN();
35437
+ init_chunk_UFYIBL66();
35438
+ init_chunk_A4JC7DXB();
35382
35439
  init_chunk_MIWZOSPI();
35383
35440
  init_chunk_DHPUPI4Y();
35384
35441
  COUNTER_KEYS = Object.keys({
@@ -36084,6 +36141,9 @@ async function adminCommand(args2) {
36084
36141
  case "read":
36085
36142
  await runDoRead(positional, flagArgs);
36086
36143
  return;
36144
+ case "counts":
36145
+ await runDoCounts(positional, flagArgs);
36146
+ return;
36087
36147
  default:
36088
36148
  printHelp2();
36089
36149
  process.exit(1);
@@ -36414,6 +36474,32 @@ async function runDoRead(positional, flagArgs) {
36414
36474
  }
36415
36475
  printDebugRowsResult(response.data, jsonOutput);
36416
36476
  }
36477
+ async function runDoCounts(positional, flagArgs) {
36478
+ const type = dataExplorerDebugCountsDoType.safeParse(positional[0]);
36479
+ if (positional.length < 2 || !type.success) {
36480
+ console.error(`wayai admin do counts <${dataExplorerDebugCountsDoType.options.join("|")}> <id> [--json]`);
36481
+ process.exit(1);
36482
+ }
36483
+ const { jsonOutput } = parseFlags2(flagArgs, ["--json"]);
36484
+ const { config, accessToken } = await requireAuth();
36485
+ const client = new ApiClient({ apiUrl: config.api_url, accessToken });
36486
+ let response;
36487
+ try {
36488
+ response = await client.debugCounts(type.data, positional[1]);
36489
+ } catch (err) {
36490
+ exitOnApiError(err);
36491
+ throw err;
36492
+ }
36493
+ if (jsonOutput) {
36494
+ console.log(JSON.stringify(response.data, null, 2));
36495
+ return;
36496
+ }
36497
+ for (const line of flattenCounts(response.data)) console.log(line);
36498
+ }
36499
+ function flattenCounts(value, prefix = "") {
36500
+ if (value === null || typeof value !== "object") return [`${prefix}: ${value === null ? "\u2014" : String(value)}`];
36501
+ return Object.entries(value).flatMap(([key, child]) => flattenCounts(child, prefix ? `${prefix}.${key}` : key));
36502
+ }
36417
36503
  async function runAnalyticsTables() {
36418
36504
  const { config, accessToken } = await requireAuth();
36419
36505
  const client = new ApiClient({ apiUrl: config.api_url, accessToken });
@@ -37777,6 +37863,9 @@ wayai admin \u2014 platform-admin diagnostic commands
37777
37863
  Usage:
37778
37864
  wayai admin do tables <type> <id>
37779
37865
  wayai admin do read <type> <id> <table> [--limit N] [--id X] [--json]
37866
+ wayai admin do counts <hub|org> <id> [--json] Knowledge as numbers, no text: a hub's knowledge rows, links, toolset connections,
37867
+ knowledge placeholders per stored text and (production) publish state; an org's
37868
+ resources and moved-knowledge registry
37780
37869
 
37781
37870
  wayai admin analytics tables
37782
37871
  wayai admin analytics read <table> [--conversation-id X] [--hub-id Y] [--message-id Z] [--limit N] [--json]