@wayai/cli 0.3.235 → 0.3.237

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
@@ -4653,23 +4653,23 @@ var init_chunk_CJ3L46X6 = __esm({
4653
4653
  }
4654
4654
  });
4655
4655
 
4656
- // ../../packages/core/dist/chunk-6NI5RAM4.js
4656
+ // ../../packages/core/dist/chunk-S4VDZ7PZ.js
4657
4657
  function slugifySkillName(name) {
4658
4658
  return slugifyKebab(name, 64);
4659
4659
  }
4660
4660
  var MAX_RESOURCE_FILE_SIZE;
4661
- var init_chunk_6NI5RAM4 = __esm({
4662
- "../../packages/core/dist/chunk-6NI5RAM4.js"() {
4661
+ var init_chunk_S4VDZ7PZ = __esm({
4662
+ "../../packages/core/dist/chunk-S4VDZ7PZ.js"() {
4663
4663
  "use strict";
4664
4664
  init_chunk_CJ3L46X6();
4665
4665
  MAX_RESOURCE_FILE_SIZE = 10 * 1024 * 1024;
4666
4666
  }
4667
4667
  });
4668
4668
 
4669
- // ../../packages/core/dist/chunk-D4AWK26E.js
4669
+ // ../../packages/core/dist/chunk-LD6U3CDG.js
4670
4670
  var PREVIOUS_CONVERSATIONS_MAX;
4671
- var init_chunk_D4AWK26E = __esm({
4672
- "../../packages/core/dist/chunk-D4AWK26E.js"() {
4671
+ var init_chunk_LD6U3CDG = __esm({
4672
+ "../../packages/core/dist/chunk-LD6U3CDG.js"() {
4673
4673
  "use strict";
4674
4674
  PREVIOUS_CONVERSATIONS_MAX = 20;
4675
4675
  }
@@ -4677,23 +4677,17 @@ var init_chunk_D4AWK26E = __esm({
4677
4677
 
4678
4678
  // ../../packages/core/dist/resource-paths.js
4679
4679
  function resourceDisplayName(resource) {
4680
- if (resource.resource_type === "skill") {
4681
- return resource.skill_name || resource.resource_name || "";
4682
- }
4683
- return resource.resource_name || "";
4680
+ return resource.skill_name || resource.resource_name || "";
4684
4681
  }
4685
4682
  function skillSlug(skill) {
4686
- return baseSlug({ ...skill, resource_id: "", resource_type: "skill" });
4687
- }
4688
- function baseSlug(resource) {
4689
- return slugifySkillName(resourceDisplayName(resource)) || FALLBACK_SLUG;
4683
+ return slugifySkillName(resourceDisplayName(skill)) || FALLBACK_SLUG;
4690
4684
  }
4691
4685
  var SKILL_NAMESPACE, FALLBACK_SLUG;
4692
4686
  var init_resource_paths = __esm({
4693
4687
  "../../packages/core/dist/resource-paths.js"() {
4694
4688
  "use strict";
4695
- init_chunk_6NI5RAM4();
4696
- init_chunk_D4AWK26E();
4689
+ init_chunk_S4VDZ7PZ();
4690
+ init_chunk_LD6U3CDG();
4697
4691
  init_chunk_CJ3L46X6();
4698
4692
  init_chunk_6TSQ5HXC();
4699
4693
  SKILL_NAMESPACE = "skills";
@@ -5028,10 +5022,10 @@ var init_chunk_SXDX4GHS = __esm({
5028
5022
  }
5029
5023
  });
5030
5024
 
5031
- // ../../packages/core/dist/chunk-GWOEVI6X.js
5025
+ // ../../packages/core/dist/chunk-LSK5GWKT.js
5032
5026
  var orgResourceIdParam, orgResourceFileIdParam, orgResourceFolderIdParam, hubOrgResourceParam, listOrgResourcesQuery, orgIdQuery, createOrgResourceBody, updateOrgResourceBody, createOrgResourceFolderBody, updateOrgResourceFolderBody, uploadOrgResourceFileBody, updateOrgResourceFileBody, uploadOrgSkillZipBody, linkOrgResourceBody;
5033
- var init_chunk_GWOEVI6X = __esm({
5034
- "../../packages/core/dist/chunk-GWOEVI6X.js"() {
5027
+ var init_chunk_LSK5GWKT = __esm({
5028
+ "../../packages/core/dist/chunk-LSK5GWKT.js"() {
5035
5029
  "use strict";
5036
5030
  init_zod();
5037
5031
  orgResourceIdParam = external_exports.object({
@@ -5058,15 +5052,10 @@ var init_chunk_GWOEVI6X = __esm({
5058
5052
  organization_id: external_exports.string().uuid(),
5059
5053
  resource_name: external_exports.string().min(1).max(255),
5060
5054
  resource_description: external_exports.string().max(1e3).nullish(),
5061
- // `knowledge` parses so the route can refuse it with its reason (wayai-pro/wayai#5142 step 5).
5062
- resource_type: external_exports.enum(["knowledge", "skill"]).default("skill"),
5063
- // Skill-only fields. `skill_name` is required for a skill (validated in
5064
- // the route layer since cross-field refinement complicates the inferred
5065
- // input type for callers).
5055
+ // Required (validated in the route layer, which names the field, since a refinement here
5056
+ // complicates the inferred input type for callers).
5066
5057
  skill_name: external_exports.string().min(1).max(255).nullish(),
5067
5058
  skill_version: external_exports.string().max(50).nullish(),
5068
- folder_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
5069
- file_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
5070
5059
  enabled: external_exports.boolean().optional(),
5071
5060
  tags: external_exports.array(external_exports.string().uuid()).optional(),
5072
5061
  environment: external_exports.enum(["preview", "production", "all"]).optional()
@@ -5076,8 +5065,6 @@ var init_chunk_GWOEVI6X = __esm({
5076
5065
  resource_description: external_exports.string().max(1e3).nullish(),
5077
5066
  skill_name: external_exports.string().min(1).max(255).nullish(),
5078
5067
  skill_version: external_exports.string().max(50).nullish(),
5079
- folder_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
5080
- file_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
5081
5068
  enabled: external_exports.boolean().optional(),
5082
5069
  tags: external_exports.array(external_exports.string().uuid()).optional(),
5083
5070
  environment: external_exports.enum(["preview", "production", "all"]).optional()
@@ -5219,10 +5206,10 @@ var init_chunk_HZ6CADSY = __esm({
5219
5206
  }
5220
5207
  });
5221
5208
 
5222
- // ../../packages/core/dist/chunk-EYLDTMO7.js
5209
+ // ../../packages/core/dist/chunk-DLT7IEAN.js
5223
5210
  var resourceIdParam, listResourcesQuery, createResourceBody, updateResourceBody, syncSkillsBody, resourceFileIdParam, listResourceFilesQuery, createResourceFileBody, updateResourceFileBody, uploadResourceFileBody, uploadSkillZipBody, resourceFolderIdParam, listResourceFoldersQuery, createResourceFolderBody, updateResourceFolderBody, agentResourceQuery, hubResourceQuery, linkAgentResourceBody, updateAgentResourceBody, unlinkAgentResourceQuery;
5224
- var init_chunk_EYLDTMO7 = __esm({
5225
- "../../packages/core/dist/chunk-EYLDTMO7.js"() {
5211
+ var init_chunk_DLT7IEAN = __esm({
5212
+ "../../packages/core/dist/chunk-DLT7IEAN.js"() {
5226
5213
  "use strict";
5227
5214
  init_chunk_HZ6CADSY();
5228
5215
  init_zod();
@@ -5230,7 +5217,6 @@ var init_chunk_EYLDTMO7 = __esm({
5230
5217
  listResourcesQuery = external_exports.object({
5231
5218
  hub_id: uuidSchema,
5232
5219
  enabled: external_exports.enum(["true", "false"]).optional(),
5233
- resource_type: external_exports.enum(["knowledge", "skill"]).optional(),
5234
5220
  search: external_exports.string().optional(),
5235
5221
  limit: external_exports.string().regex(/^\d+$/).optional(),
5236
5222
  offset: external_exports.string().regex(/^\d+$/).optional()
@@ -5240,9 +5226,6 @@ var init_chunk_EYLDTMO7 = __esm({
5240
5226
  resource_name: external_exports.string().min(1),
5241
5227
  resource_description: external_exports.string().optional(),
5242
5228
  enabled: external_exports.boolean().optional(),
5243
- folder_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
5244
- file_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
5245
- resource_type: external_exports.enum(["knowledge", "skill"]).optional(),
5246
5229
  skill_name: external_exports.string().optional(),
5247
5230
  skill_version: external_exports.string().optional()
5248
5231
  });
@@ -5250,8 +5233,6 @@ var init_chunk_EYLDTMO7 = __esm({
5250
5233
  resource_name: external_exports.string().min(1).optional(),
5251
5234
  resource_description: external_exports.string().optional(),
5252
5235
  enabled: external_exports.boolean().optional(),
5253
- folder_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
5254
- file_metadata_schema: external_exports.record(external_exports.unknown()).optional(),
5255
5236
  skill_name: external_exports.string().optional(),
5256
5237
  skill_version: external_exports.string().optional()
5257
5238
  // No `anthropic_skill_id`/`anthropic_version`: `resource` has neither column.
@@ -6504,13 +6485,10 @@ var init_chunk_BEOHBREG = __esm({
6504
6485
  }
6505
6486
  });
6506
6487
 
6507
- // ../../packages/core/dist/chunk-AMHCCKZ3.js
6508
- function declaresReview(schema) {
6509
- return typeof schema === "object" && schema !== null && schema[REVIEW_DECLARATION_KEY] !== void 0;
6510
- }
6511
- var TOOLSET_SLUG_PATTERN, REKOR_STRUCTURAL_ID_PATTERN, baseEnvironmentSchema, toolsetFileToolSchema, toolsetSurfaceSchema, toolsetConnectionBindingSchema, rekorToolsetToolsSchema, rekorBoundAttestation, rekorResolvedToolsetSchema, REVIEW_DECLARATION_KEY, resolvedRecordTypeSchema, reviewWritersSchema, sharedScopeSchema, resolvedFileToolSchema, rekorToolsetFileSchema, rekorToolsetFileUrlAnswerSchema, rekorToolsetFileListSchema, rekorToolsetFileGetSchema, rekorToolsetFilePutSchema, TOOLSET_CUSTOMER_FACING_REFUSAL_MARK, TOOLSET_CUSTOMER_FACING_REFUSAL;
6512
- var init_chunk_AMHCCKZ3 = __esm({
6513
- "../../packages/core/dist/chunk-AMHCCKZ3.js"() {
6488
+ // ../../packages/core/dist/chunk-TPFTFBLF.js
6489
+ var TOOLSET_SLUG_PATTERN, REKOR_STRUCTURAL_ID_PATTERN, baseEnvironmentSchema, toolsetFileToolSchema, toolsetSurfaceSchema, toolsetConnectionBindingSchema, rekorToolsetToolsSchema, rekorBoundAttestation, rekorResolvedToolsetSchema, resolvedRecordTypeSchema, reviewWritersSchema, sharedScopeSchema, resolvedFileToolSchema, rekorToolsetFileSchema, rekorToolsetFileUrlAnswerSchema, rekorToolsetFileListSchema, rekorToolsetFileGetSchema, rekorToolsetFilePutSchema, TOOLSET_CUSTOMER_FACING_REFUSAL_MARK, TOOLSET_CUSTOMER_FACING_REFUSAL;
6490
+ var init_chunk_TPFTFBLF = __esm({
6491
+ "../../packages/core/dist/chunk-TPFTFBLF.js"() {
6514
6492
  "use strict";
6515
6493
  init_chunk_BEOHBREG();
6516
6494
  init_chunk_DHPUPI4Y();
@@ -6559,13 +6537,14 @@ var init_chunk_AMHCCKZ3 = __esm({
6559
6537
  */
6560
6538
  file_writes: external_exports.boolean().optional(),
6561
6539
  /**
6562
- * A record type the toolset's actions or composite steps reach (the resolve's `record_types`) names it
6563
- * among its writers (`x-review.writers`, #5083 RK4): the toolset writes the type's drafts and reads its
6564
- * every record, drafts included. Or such a type's declaration this side cannot read, or a resolve
6565
- * reaching records that carries no record types. A type only its relationship tools reach is not
6566
- * judged: the resolve does not carry that type's declaration. Absent
6567
- * on a surface recorded before it was, which the customer-facing rule reads as writing, for a toolset
6568
- * reaching records, until the connection's next tool sync or token save records it.
6540
+ * A record type the resolve's `record_types` carries names the toolset among its writers
6541
+ * (`x-review.writers`, #5083 RK4): the toolset writes the type's drafts and reads its every record,
6542
+ * drafts included. Those are the types its actions and composite record steps reach, and every
6543
+ * reviewed type it reaches otherwise: at a relationship tool's or a composite relationship step's
6544
+ * end, in a `batch` entry, or, through `sql_query`, all of them (decision 198). Or such a type's
6545
+ * declaration this side cannot read, or a resolve reaching records that carries no record types.
6546
+ * Absent on a surface recorded before it was, which the customer-facing rule reads as writing, for a
6547
+ * toolset reaching records, until the connection's next tool sync or token save records it.
6569
6548
  */
6570
6549
  review_writes: external_exports.boolean().optional(),
6571
6550
  /**
@@ -6658,18 +6637,21 @@ var init_chunk_AMHCCKZ3 = __esm({
6658
6637
  /** The toolset serves one customer per call (#5083 RK2). Absent reads as not scoped. */
6659
6638
  customer_scope: external_exports.boolean().optional(),
6660
6639
  /**
6661
- * Each record type the toolset's actions and composite steps reach, by id, as the data product
6662
- * stores it (`json_schema` included). A reviewed type's `x-review` names its writers (#5083 RK4).
6640
+ * Record types the toolset reaches, by id, as the data product stores them (`json_schema`
6641
+ * included): each one its actions and composite record steps reach, and each reviewed one it
6642
+ * reaches otherwise (relationship ends, `batch` entries, every one through `sql_query`; #5083
6643
+ * decision 198). An unreviewed type it reaches only otherwise is not here. A reviewed type's
6644
+ * `x-review` names its writers (RK4).
6663
6645
  */
6664
6646
  record_types: external_exports.record(external_exports.unknown()).optional(),
6665
6647
  /**
6666
- * What each record type the toolset can reach is to a customer scope (`{ role }`, or null), by id:
6667
- * those `record_types` holds, and those only its relationship tools and steps reach (#5083 RK2).
6648
+ * What each record type the toolset's actions, composite steps and relationship tools reach is to a
6649
+ * customer scope (`{ role }`, or null), by id (#5083 RK2). A reviewed type `record_types` carries
6650
+ * because only a `batch` entry or `sql_query` reaches it has none.
6668
6651
  */
6669
6652
  record_type_scopes: external_exports.record(external_exports.unknown()).optional()
6670
6653
  }).passthrough()
6671
6654
  });
6672
- REVIEW_DECLARATION_KEY = "x-review";
6673
6655
  resolvedRecordTypeSchema = external_exports.object({ json_schema: external_exports.record(external_exports.unknown()) });
6674
6656
  reviewWritersSchema = external_exports.object({ writers: external_exports.array(external_exports.string()).optional() });
6675
6657
  sharedScopeSchema = external_exports.object({ role: external_exports.literal("shared") });
@@ -8452,15 +8434,15 @@ var init_chunk_MH4O3YEX = __esm({
8452
8434
  }
8453
8435
  });
8454
8436
 
8455
- // ../../packages/core/dist/chunk-GWMNV3N4.js
8437
+ // ../../packages/core/dist/chunk-FQZRBIAQ.js
8456
8438
  function catalogToolSideEffects(toolName) {
8457
8439
  const sideEffects = CATALOG_SIDE_EFFECTS.get(toolName);
8458
8440
  if (sideEffects === void 0) return "unknown";
8459
8441
  return sideEffects ? "side_effects" : "none";
8460
8442
  }
8461
8443
  var NATIVE_TOOL_SCHEMAS, WAYAI_CONNECTOR, SANDBOX_AGENT_ROLES, BASE_NATIVE_TOOLS, NATIVE_TOOLS, CATALOG_SIDE_EFFECTS;
8462
- var init_chunk_GWMNV3N4 = __esm({
8463
- "../../packages/core/dist/chunk-GWMNV3N4.js"() {
8444
+ var init_chunk_FQZRBIAQ = __esm({
8445
+ "../../packages/core/dist/chunk-FQZRBIAQ.js"() {
8464
8446
  "use strict";
8465
8447
  init_chunk_DHPUPI4Y();
8466
8448
  NATIVE_TOOL_SCHEMAS = {
@@ -8681,7 +8663,7 @@ var init_chunk_GWMNV3N4 = __esm({
8681
8663
  "properties": {
8682
8664
  "path": {
8683
8665
  "type": "string",
8684
- "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.'
8666
+ "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/", exactly as listed in your skill structure or in a file listing \u2014 e.g. "skills/order-processing/references/menu.md", where the segment after "skills/" names the skill. 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 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.'
8685
8667
  },
8686
8668
  "file_id": {
8687
8669
  "type": "string",
@@ -8876,7 +8858,7 @@ var init_chunk_GWMNV3N4 = __esm({
8876
8858
  "items": {
8877
8859
  "type": "string"
8878
8860
  },
8879
- "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.'
8861
+ "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 skill 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. IDs remain accepted, but they are regenerated whenever a hub is published, so a path is the stable address.'
8880
8862
  },
8881
8863
  "folder_ids": {
8882
8864
  "type": "array",
@@ -8906,7 +8888,7 @@ var init_chunk_GWMNV3N4 = __esm({
8906
8888
  "properties": {
8907
8889
  "path": {
8908
8890
  "type": "string",
8909
- "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.'
8891
+ "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. "skills/<skill-slug>" lists the top level of a skill, and "skills/<skill-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.'
8910
8892
  },
8911
8893
  "query": {
8912
8894
  "type": "string",
@@ -8921,7 +8903,7 @@ var init_chunk_GWMNV3N4 = __esm({
8921
8903
  },
8922
8904
  "metadata_filter": {
8923
8905
  "type": "object",
8924
- "description": `Filter resource and data/ files by their metadata using MongoDB-style operators. Supported: $eq (equal), $ne (not equal), $gt/$gte/$lt/$lte (comparisons), $in/$nin (in/not in array), $contains (substring for text, membership for a list), $and/$or/$not (logical). Nested paths like "location.city" are supported, and a bare value means equality. Examples: {"status": "active"}, {"priority": {"$gte": 5}}, {"location.city": "Miami"}, {"$and": [{"status": "active"}, {"priority": {"$gt": 3}}]}, {"$not": {"status": "archived"}}. A comparison between different types simply does not match. Schema from resource.file_metadata_schema, or under data/ the file type's metadata schema, which refuses a field it does not declare. Searches the whole subtree, like query.`
8906
+ "description": `Filter resource and data/ files by their metadata using MongoDB-style operators. Supported: $eq (equal), $ne (not equal), $gt/$gte/$lt/$lte (comparisons), $in/$nin (in/not in array), $contains (substring for text, membership for a list), $and/$or/$not (logical). Nested paths like "location.city" are supported, and a bare value means equality. Examples: {"status": "active"}, {"priority": {"$gte": 5}}, {"location.city": "Miami"}, {"$and": [{"status": "active"}, {"priority": {"$gt": 3}}]}, {"$not": {"status": "archived"}}. A comparison between different types simply does not match. Under data/, the file type's metadata schema refuses a field it does not declare. Searches the whole subtree, like query.`
8925
8907
  },
8926
8908
  "limit": {
8927
8909
  "type": "integer",
@@ -8936,7 +8918,7 @@ var init_chunk_GWMNV3N4 = __esm({
8936
8918
  "additionalProperties": false
8937
8919
  }
8938
8920
  },
8939
- "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).'
8921
+ "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 linked to you, and one "data/<file-type>" per document type your toolset reaches. 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 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).'
8940
8922
  },
8941
8923
  "get_tool_schema": {
8942
8924
  "tool_config": {
@@ -9587,7 +9569,7 @@ var init_chunk_T7KQKDET = __esm({
9587
9569
  }
9588
9570
  });
9589
9571
 
9590
- // ../../packages/core/dist/chunk-BV6U4HXF.js
9572
+ // ../../packages/core/dist/chunk-WFQU5HXK.js
9591
9573
  function resolveMonitorTrigger(monitorConfig) {
9592
9574
  if (!monitorConfig || typeof monitorConfig !== "object") return "idle";
9593
9575
  const raw = monitorConfig.trigger;
@@ -9893,14 +9875,14 @@ function refineMonitorRulesStructuredOutput(body, ctx) {
9893
9875
  if (refusal2) ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["response_format"], message: refusal2 });
9894
9876
  }
9895
9877
  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;
9896
- var init_chunk_BV6U4HXF = __esm({
9897
- "../../packages/core/dist/chunk-BV6U4HXF.js"() {
9878
+ var init_chunk_WFQU5HXK = __esm({
9879
+ "../../packages/core/dist/chunk-WFQU5HXK.js"() {
9898
9880
  "use strict";
9899
- init_chunk_GWMNV3N4();
9881
+ init_chunk_FQZRBIAQ();
9900
9882
  init_chunk_IBL7FANV();
9901
9883
  init_chunk_HZ6CADSY();
9902
9884
  init_chunk_C2UEA2KW();
9903
- init_chunk_D4AWK26E();
9885
+ init_chunk_LD6U3CDG();
9904
9886
  init_chunk_DHPUPI4Y();
9905
9887
  init_chunk_T7KQKDET();
9906
9888
  init_chunk_L5F7ZOUJ();
@@ -10119,12 +10101,12 @@ var init_chunk_BV6U4HXF = __esm({
10119
10101
  }
10120
10102
  });
10121
10103
 
10122
- // ../../packages/core/dist/chunk-MUG3LWPZ.js
10104
+ // ../../packages/core/dist/chunk-KTUVBNMI.js
10123
10105
  var conversationIdParam, conversationHubQuery, claimBody, releaseBody, transferBody, closeBody, additionalContextPayloadSchema, kanbanUpdateBody, annotateConversationBody, observabilityParams, observabilityListParams, deleteUserConversationsBody, deleteUserConversationsResponse, sendMessageBody, listConversationsQuery, flagSourceSchema, getConversationsResponse, getConversationDetailParams, getConversationDetailQuery, getConversationDetailResponse, listWhatsAppTemplatesQuery, sendWhatsAppTemplateBody;
10124
- var init_chunk_MUG3LWPZ = __esm({
10125
- "../../packages/core/dist/chunk-MUG3LWPZ.js"() {
10106
+ var init_chunk_KTUVBNMI = __esm({
10107
+ "../../packages/core/dist/chunk-KTUVBNMI.js"() {
10126
10108
  "use strict";
10127
- init_chunk_BV6U4HXF();
10109
+ init_chunk_WFQU5HXK();
10128
10110
  init_chunk_HZ6CADSY();
10129
10111
  init_chunk_DHPUPI4Y();
10130
10112
  init_zod();
@@ -10580,7 +10562,7 @@ var init_chunk_BPCNB5RT = __esm({
10580
10562
  }
10581
10563
  });
10582
10564
 
10583
- // ../../packages/core/dist/chunk-HWB3MFZT.js
10565
+ // ../../packages/core/dist/chunk-DYCGBLRW.js
10584
10566
  function idempotencyHeaderRefusal(value) {
10585
10567
  if (typeof value !== "string" || !/^[A-Za-z0-9][A-Za-z0-9-]{0,63}$/.test(value)) {
10586
10568
  return "idempotency_header must be a header name: letters, digits and dashes, at most 64";
@@ -10591,10 +10573,10 @@ function idempotencyHeaderRefusal(value) {
10591
10573
  return null;
10592
10574
  }
10593
10575
  var CATALOG_REPLAY, REPLAY_OVERRIDES, RESERVED_HEADERS;
10594
- var init_chunk_HWB3MFZT = __esm({
10595
- "../../packages/core/dist/chunk-HWB3MFZT.js"() {
10576
+ var init_chunk_DYCGBLRW = __esm({
10577
+ "../../packages/core/dist/chunk-DYCGBLRW.js"() {
10596
10578
  "use strict";
10597
- init_chunk_GWMNV3N4();
10579
+ init_chunk_FQZRBIAQ();
10598
10580
  CATALOG_REPLAY = new Map(
10599
10581
  NATIVE_TOOLS.map((tool) => [tool.tool_name, tool.replay])
10600
10582
  );
@@ -10827,7 +10809,7 @@ var init_chunk_WEXVYJ5H = __esm({
10827
10809
  }
10828
10810
  });
10829
10811
 
10830
- // ../../packages/core/dist/chunk-VHQED53I.js
10812
+ // ../../packages/core/dist/chunk-SK2X6UOC.js
10831
10813
  function refineToolConfig(value, ctx) {
10832
10814
  const raw = value.tool_config;
10833
10815
  if (raw == null) return;
@@ -10863,10 +10845,10 @@ function refineToolConfig(value, ctx) {
10863
10845
  }
10864
10846
  }
10865
10847
  var toolIdParam, listToolsQuery, toolAgentQuery, deleteToolQuery, toolConnectionsQuery, nativeToolIdSchema, CONTEXT_BOUNDARIES, contextBoundarySchema, addNativeToolBody, addMcpToolBody, toolReplaySettingsFields, toolReplaySettingsSchema, createCustomToolBody, updateCustomToolBody, updateToolExecutionConfigBody;
10866
- var init_chunk_VHQED53I = __esm({
10867
- "../../packages/core/dist/chunk-VHQED53I.js"() {
10848
+ var init_chunk_SK2X6UOC = __esm({
10849
+ "../../packages/core/dist/chunk-SK2X6UOC.js"() {
10868
10850
  "use strict";
10869
- init_chunk_HWB3MFZT();
10851
+ init_chunk_DYCGBLRW();
10870
10852
  init_chunk_WEXVYJ5H();
10871
10853
  init_chunk_HZ6CADSY();
10872
10854
  init_zod();
@@ -10889,8 +10871,8 @@ var init_chunk_VHQED53I = __esm({
10889
10871
  * Defaults to `summary` when omitted. Admin-set — the link and boundary require
10890
10872
  * hub-admin (`hub:write`), never derived from any end user's grants. */
10891
10873
  delegation_context_boundary: contextBoundarySchema.optional()
10892
- // `resource_config` was retired with knowledge (wayai-pro/wayai#5142 step 5 C1): written and never
10893
- // read. A body that still sends it is accepted, the key stripped; the column goes at step 5's E.
10874
+ // No `resource_config`: retired with knowledge, its column dropped (HubDO v106). A body that still
10875
+ // sends it is accepted, the key stripped.
10894
10876
  });
10895
10877
  addMcpToolBody = external_exports.object({
10896
10878
  agent_id: uuidSchema,
@@ -10935,7 +10917,7 @@ var init_chunk_4LXDRTO4 = __esm({
10935
10917
  }
10936
10918
  });
10937
10919
 
10938
- // ../../packages/core/dist/chunk-2FQVW3O7.js
10920
+ // ../../packages/core/dist/chunk-LEE5SOCI.js
10939
10921
  function isIanaTimezone(timezone) {
10940
10922
  try {
10941
10923
  new Intl.DateTimeFormat("en-US", { timeZone: timezone }).format(0);
@@ -10945,12 +10927,12 @@ function isIanaTimezone(timezone) {
10945
10927
  }
10946
10928
  }
10947
10929
  var evalDateContextSchema;
10948
- var init_chunk_2FQVW3O7 = __esm({
10949
- "../../packages/core/dist/chunk-2FQVW3O7.js"() {
10930
+ var init_chunk_LEE5SOCI = __esm({
10931
+ "../../packages/core/dist/chunk-LEE5SOCI.js"() {
10950
10932
  "use strict";
10951
10933
  init_chunk_HZ6CADSY();
10952
10934
  init_chunk_MIWZOSPI();
10953
- init_chunk_D4AWK26E();
10935
+ init_chunk_LD6U3CDG();
10954
10936
  init_chunk_DHPUPI4Y();
10955
10937
  init_zod();
10956
10938
  evalDateContextSchema = external_exports.object({
@@ -10975,7 +10957,7 @@ var init_chunk_2ISUBJG7 = __esm({
10975
10957
  }
10976
10958
  });
10977
10959
 
10978
- // ../../packages/core/dist/chunk-TY6K2EWO.js
10960
+ // ../../packages/core/dist/chunk-EE5FYMSX.js
10979
10961
  function describeRole(role) {
10980
10962
  if (typeof role === "string") {
10981
10963
  return JSON.stringify(role.length > ROLE_ECHO_MAX ? `${role.slice(0, ROLE_ECHO_MAX)}\u2026` : role);
@@ -11149,11 +11131,11 @@ function terminalRunCount(counts) {
11149
11131
  return counts.successful_runs + counts.failed_runs;
11150
11132
  }
11151
11133
  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;
11152
- var init_chunk_TY6K2EWO = __esm({
11153
- "../../packages/core/dist/chunk-TY6K2EWO.js"() {
11134
+ var init_chunk_EE5FYMSX = __esm({
11135
+ "../../packages/core/dist/chunk-EE5FYMSX.js"() {
11154
11136
  "use strict";
11155
11137
  init_chunk_4LXDRTO4();
11156
- init_chunk_2FQVW3O7();
11138
+ init_chunk_LEE5SOCI();
11157
11139
  init_chunk_HZ6CADSY();
11158
11140
  init_chunk_2ISUBJG7();
11159
11141
  init_zod();
@@ -12215,7 +12197,7 @@ var init_chunk_T4Q5COKJ = __esm({
12215
12197
  }
12216
12198
  });
12217
12199
 
12218
- // ../../packages/core/dist/chunk-PYQJYI32.js
12200
+ // ../../packages/core/dist/chunk-KQZM7ANN.js
12219
12201
  function refineHubAsCodeCustomTools(config, ctx) {
12220
12202
  const agents = config.agents;
12221
12203
  if (!Array.isArray(agents)) return;
@@ -12750,54 +12732,61 @@ function refineHubAsCodeMonitorRulesOutput(config, ctx) {
12750
12732
  }
12751
12733
  });
12752
12734
  }
12753
- function skillSectionsAsResources(config) {
12754
- if (!isPlainObject(config)) return config;
12755
- let out = config;
12756
- if ("skills" in out && !("resources" in out)) {
12757
- const { skills, ...rest } = out;
12758
- out = {
12759
- ...rest,
12760
- resources: Array.isArray(skills) ? skills.map((skill) => isPlainObject(skill) ? { ...skill, type: "skill" } : skill) : skills
12761
- };
12762
- }
12763
- if (Array.isArray(out.agents)) {
12764
- out = {
12765
- ...out,
12766
- agents: out.agents.map((agent) => {
12767
- if (!isPlainObject(agent) || !("skills" in agent) || "resources" in agent) return agent;
12768
- const { skills, ...rest } = agent;
12769
- return {
12770
- ...rest,
12771
- resources: Array.isArray(skills) ? skills.map((link) => {
12772
- if (!isPlainObject(link)) return link;
12773
- const { skill_id: skillId, ...linkRest } = link;
12774
- return skillId === void 0 ? linkRest : { ...linkRest, resource_id: skillId };
12775
- }) : skills
12776
- };
12777
- })
12778
- };
12779
- }
12780
- return out;
12781
- }
12782
- function refineSkillSections(config, ctx) {
12783
- if (!isPlainObject(config)) return;
12784
- if ("skills" in config) {
12785
- ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["skills"], message: BOTH_SKILL_SECTIONS_MESSAGE });
12786
- }
12787
- if (!Array.isArray(config.agents)) return;
12788
- config.agents.forEach((agent, agentIndex) => {
12789
- if (isPlainObject(agent) && "skills" in agent) {
12790
- ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["agents", agentIndex], message: `agent: ${BOTH_SKILL_SECTIONS_MESSAGE}` });
12735
+ function resourcesSectionRefusal(scope, subject) {
12736
+ const pull = scope === "org" ? "wayai org pull" : "wayai pull";
12737
+ return `${subject} \`resources\` is no longer accepted: skills are named under \`skills\`. Update the CLI to \`@wayai/cli\` ${MIN_SKILLS_LAYOUT_CLI} or later (\`wayai update\`), then run \`${pull}\` once to convert the folder.`;
12738
+ }
12739
+ function skillSectionsAsResources(scope) {
12740
+ return (config, ctx) => {
12741
+ if (!isPlainObject(config)) return config;
12742
+ let out = config;
12743
+ if ("resources" in out) {
12744
+ ctx.addIssue({ code: external_exports.ZodIssueCode.custom, path: ["resources"], message: resourcesSectionRefusal(scope, "A push body's") });
12745
+ const { resources: _old, ...rest } = out;
12746
+ out = rest;
12747
+ }
12748
+ if ("skills" in out) {
12749
+ const { skills, ...rest } = out;
12750
+ out = { ...rest, resources: skills };
12751
+ }
12752
+ if (Array.isArray(out.agents)) {
12753
+ out = {
12754
+ ...out,
12755
+ agents: out.agents.map((agent, agentIndex) => {
12756
+ if (!isPlainObject(agent)) return agent;
12757
+ let next = agent;
12758
+ if ("resources" in next) {
12759
+ ctx.addIssue({
12760
+ code: external_exports.ZodIssueCode.custom,
12761
+ path: ["agents", agentIndex, "resources"],
12762
+ message: resourcesSectionRefusal(scope, "An agent's")
12763
+ });
12764
+ const { resources: _old, ...rest2 } = next;
12765
+ next = rest2;
12766
+ }
12767
+ if (!("skills" in next)) return next;
12768
+ const { skills, ...rest } = next;
12769
+ return {
12770
+ ...rest,
12771
+ resources: Array.isArray(skills) ? skills.map((link) => {
12772
+ if (!isPlainObject(link)) return link;
12773
+ const { skill_id: skillId, ...linkRest } = link;
12774
+ return skillId === void 0 ? linkRest : { ...linkRest, resource_id: skillId };
12775
+ }) : skills
12776
+ };
12777
+ })
12778
+ };
12791
12779
  }
12792
- });
12780
+ return out;
12781
+ };
12793
12782
  }
12794
- 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, isPlainObject, BOTH_SKILL_SECTIONS_MESSAGE, 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;
12795
- var init_chunk_PYQJYI32 = __esm({
12796
- "../../packages/core/dist/chunk-PYQJYI32.js"() {
12783
+ 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, isPlainObject, MIN_SKILLS_LAYOUT_CLI, 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;
12784
+ var init_chunk_KQZM7ANN = __esm({
12785
+ "../../packages/core/dist/chunk-KQZM7ANN.js"() {
12797
12786
  "use strict";
12798
- init_chunk_VHQED53I();
12799
- init_chunk_TY6K2EWO();
12800
- init_chunk_BV6U4HXF();
12787
+ init_chunk_SK2X6UOC();
12788
+ init_chunk_EE5FYMSX();
12789
+ init_chunk_WFQU5HXK();
12801
12790
  init_chunk_LBDH7LCG();
12802
12791
  init_chunk_4LXDRTO4();
12803
12792
  init_chunk_T4Q5COKJ();
@@ -12805,7 +12794,7 @@ var init_chunk_PYQJYI32 = __esm({
12805
12794
  init_chunk_ACN6GXU6();
12806
12795
  init_chunk_WEXVYJ5H();
12807
12796
  init_chunk_C2UEA2KW();
12808
- init_chunk_6NI5RAM4();
12797
+ init_chunk_S4VDZ7PZ();
12809
12798
  init_chunk_T7KQKDET();
12810
12799
  init_zod();
12811
12800
  MAX_10MB_BASE64_ENCODED_BYTES = Math.ceil(MAX_RESOURCE_FILE_SIZE / 3) * 4 + 16;
@@ -12850,9 +12839,8 @@ var init_chunk_PYQJYI32 = __esm({
12850
12839
  hubAsCodeResourceSchema = external_exports.object({
12851
12840
  id: external_exports.string().min(1).optional(),
12852
12841
  name: external_exports.string().min(1),
12853
- // Omitted: a new resource is a skill, an existing one keeps its type. A push refuses a new
12854
- // knowledge resource and a change to knowledge (wayai-pro/wayai#5142 step 5).
12855
- type: external_exports.enum(["knowledge", "skill"]).optional(),
12842
+ // No `type`: every resource is a skill (wayai-pro/wayai#5142 step 5). The schema is
12843
+ // `.passthrough()`, so a stray `type` rides through and nothing reads it.
12856
12844
  description: external_exports.string().optional(),
12857
12845
  enabled: external_exports.boolean().optional(),
12858
12846
  // No `user_browsable`: the field is retired (wayai#4710). This schema is `.passthrough()`,
@@ -12888,8 +12876,8 @@ var init_chunk_PYQJYI32 = __esm({
12888
12876
  }
12889
12877
  }).pipe(external_exports.array(hubAsCodeResourceSchema));
12890
12878
  isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
12891
- BOTH_SKILL_SECTIONS_MESSAGE = "both `skills` and `resources` are given: name the skills under `skills` only";
12892
- hubAsCodeConfigSchema = external_exports.preprocess(skillSectionsAsResources, external_exports.object({
12879
+ MIN_SKILLS_LAYOUT_CLI = "0.3.234";
12880
+ hubAsCodeConfigSchema = external_exports.preprocess(skillSectionsAsResources("hub"), external_exports.object({
12893
12881
  version: external_exports.literal(1),
12894
12882
  hub: external_exports.object({
12895
12883
  name: external_exports.string().min(1, "config.hub.name is required"),
@@ -12913,7 +12901,6 @@ var init_chunk_PYQJYI32 = __esm({
12913
12901
  refineHubAsCodeMonitorConfig(config, ctx);
12914
12902
  refineHubAsCodeDecisionsModel(config, ctx);
12915
12903
  refineHubAsCodeMonitorRulesOutput(config, ctx);
12916
- refineSkillSections(config, ctx);
12917
12904
  }));
12918
12905
  ciPullHubIdParam = external_exports.object({
12919
12906
  hub_id: ciUuidSchema
@@ -12967,12 +12954,11 @@ var init_chunk_PYQJYI32 = __esm({
12967
12954
  ciOrgResourcesParam = external_exports.object({
12968
12955
  org_id: ciUuidSchema
12969
12956
  });
12970
- orgResourcesConfigSchema = external_exports.preprocess(skillSectionsAsResources, external_exports.object({
12957
+ orgResourcesConfigSchema = external_exports.preprocess(skillSectionsAsResources("org"), external_exports.object({
12971
12958
  version: external_exports.literal(1),
12972
12959
  resources: boundedHubAsCodeResourcesSchema.optional()
12973
12960
  }).passthrough().superRefine((config, ctx) => {
12974
12961
  refineHubAsCodeResources(config, ctx);
12975
- refineSkillSections(config, ctx);
12976
12962
  }));
12977
12963
  ciOrgResourcesPushBody = external_exports.object({
12978
12964
  organization_id: ciUuidSchema,
@@ -13814,13 +13800,13 @@ var init_chunk_LQY2OCQL = __esm({
13814
13800
  }
13815
13801
  });
13816
13802
 
13817
- // ../../packages/core/dist/chunk-H6TTCXPL.js
13803
+ // ../../packages/core/dist/chunk-5GJGVPL6.js
13818
13804
  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;
13819
- var init_chunk_H6TTCXPL = __esm({
13820
- "../../packages/core/dist/chunk-H6TTCXPL.js"() {
13805
+ var init_chunk_5GJGVPL6 = __esm({
13806
+ "../../packages/core/dist/chunk-5GJGVPL6.js"() {
13821
13807
  "use strict";
13822
13808
  init_chunk_LQY2OCQL();
13823
- init_chunk_BV6U4HXF();
13809
+ init_chunk_WFQU5HXK();
13824
13810
  init_chunk_3HSB6J4J();
13825
13811
  init_chunk_5XEJSR22();
13826
13812
  init_chunk_DHPUPI4Y();
@@ -14232,10 +14218,10 @@ var init_chunk_BFG4ZWR4 = __esm({
14232
14218
  }
14233
14219
  });
14234
14220
 
14235
- // ../../packages/core/dist/chunk-6QXCHNFQ.js
14221
+ // ../../packages/core/dist/chunk-YZAIZJTO.js
14236
14222
  var dataExplorerDebugDoType, DEBUG_READ_MAX_LIMIT, DEBUG_READ_DEFAULT_LIMIT;
14237
- var init_chunk_6QXCHNFQ = __esm({
14238
- "../../packages/core/dist/chunk-6QXCHNFQ.js"() {
14223
+ var init_chunk_YZAIZJTO = __esm({
14224
+ "../../packages/core/dist/chunk-YZAIZJTO.js"() {
14239
14225
  "use strict";
14240
14226
  init_zod();
14241
14227
  dataExplorerDebugDoType = external_exports.enum(["hub", "org", "conversation", "user", "platform", "thread", "community", "contact_book", "batch"]);
@@ -14346,7 +14332,7 @@ var init_chunk_OMPT4ZHR = __esm({
14346
14332
  }
14347
14333
  });
14348
14334
 
14349
- // ../../packages/core/dist/chunk-RUFVP7Q3.js
14335
+ // ../../packages/core/dist/chunk-7LN3OG3F.js
14350
14336
  function refineScopedTarget(data, ctx) {
14351
14337
  if (data.scope === "org") {
14352
14338
  if (!data.org_id) {
@@ -14372,12 +14358,12 @@ function refineScopedTarget(data, ctx) {
14372
14358
  }
14373
14359
  }
14374
14360
  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, adminRepairKnowledgeBlobsBody, 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;
14375
- var init_chunk_RUFVP7Q3 = __esm({
14376
- "../../packages/core/dist/chunk-RUFVP7Q3.js"() {
14361
+ var init_chunk_7LN3OG3F = __esm({
14362
+ "../../packages/core/dist/chunk-7LN3OG3F.js"() {
14377
14363
  "use strict";
14378
14364
  init_chunk_FECLIZTY();
14379
14365
  init_chunk_BFG4ZWR4();
14380
- init_chunk_6QXCHNFQ();
14366
+ init_chunk_YZAIZJTO();
14381
14367
  init_chunk_T4Q5COKJ();
14382
14368
  init_chunk_OMPT4ZHR();
14383
14369
  init_chunk_HZ6CADSY();
@@ -15073,9 +15059,9 @@ var init_contracts = __esm({
15073
15059
  "use strict";
15074
15060
  init_chunk_GK27ENTT();
15075
15061
  init_chunk_SXDX4GHS();
15076
- init_chunk_GWOEVI6X();
15062
+ init_chunk_LSK5GWKT();
15077
15063
  init_chunk_VXEAR36B();
15078
- init_chunk_EYLDTMO7();
15064
+ init_chunk_DLT7IEAN();
15079
15065
  init_chunk_Q7KIQHAZ();
15080
15066
  init_chunk_WBFLPPDI();
15081
15067
  init_chunk_IPXBFWUU();
@@ -15087,7 +15073,7 @@ var init_contracts = __esm({
15087
15073
  init_chunk_Y7CFCYX4();
15088
15074
  init_chunk_5DGHIY7L();
15089
15075
  init_chunk_N4FMK4UY();
15090
- init_chunk_AMHCCKZ3();
15076
+ init_chunk_TPFTFBLF();
15091
15077
  init_chunk_BEOHBREG();
15092
15078
  init_chunk_IPDOHAZ5();
15093
15079
  init_chunk_YUZFHVB2();
@@ -15102,13 +15088,13 @@ var init_contracts = __esm({
15102
15088
  init_chunk_LWMLR2WI();
15103
15089
  init_chunk_ACGAI25T();
15104
15090
  init_chunk_MH4O3YEX();
15105
- init_chunk_MUG3LWPZ();
15091
+ init_chunk_KTUVBNMI();
15106
15092
  init_chunk_KSTYTQ7I();
15107
15093
  init_chunk_LKBSHANA();
15108
15094
  init_chunk_BPCNB5RT();
15109
- init_chunk_PYQJYI32();
15110
- init_chunk_VHQED53I();
15111
- init_chunk_TY6K2EWO();
15095
+ init_chunk_KQZM7ANN();
15096
+ init_chunk_SK2X6UOC();
15097
+ init_chunk_EE5FYMSX();
15112
15098
  init_chunk_JDJ4EUOL();
15113
15099
  init_chunk_ZLJP22IA();
15114
15100
  init_chunk_6IKFJ3GW();
@@ -15117,9 +15103,9 @@ var init_contracts = __esm({
15117
15103
  init_chunk_YULHXJ5M();
15118
15104
  init_chunk_V4FRPRH5();
15119
15105
  init_chunk_ZHJEQBXJ();
15120
- init_chunk_H6TTCXPL();
15106
+ init_chunk_5GJGVPL6();
15121
15107
  init_chunk_LQY2OCQL();
15122
- init_chunk_BV6U4HXF();
15108
+ init_chunk_WFQU5HXK();
15123
15109
  init_chunk_3HSB6J4J();
15124
15110
  init_chunk_IG6QBZMA();
15125
15111
  init_chunk_ZJJ5ODOD();
@@ -15129,13 +15115,13 @@ var init_contracts = __esm({
15129
15115
  init_chunk_E4DIIOOE();
15130
15116
  init_chunk_7CYHPF35();
15131
15117
  init_chunk_VMAX5YRT();
15132
- init_chunk_HWB3MFZT();
15133
- init_chunk_GWMNV3N4();
15118
+ init_chunk_DYCGBLRW();
15119
+ init_chunk_FQZRBIAQ();
15134
15120
  init_chunk_NVKU5PPQ();
15135
- init_chunk_RUFVP7Q3();
15121
+ init_chunk_7LN3OG3F();
15136
15122
  init_chunk_FECLIZTY();
15137
15123
  init_chunk_BFG4ZWR4();
15138
- init_chunk_6QXCHNFQ();
15124
+ init_chunk_YZAIZJTO();
15139
15125
  init_chunk_T4Q5COKJ();
15140
15126
  init_chunk_3VHMUK4W();
15141
15127
  init_chunk_AMG6HKUQ();
@@ -15146,7 +15132,7 @@ var init_contracts = __esm({
15146
15132
  init_chunk_QUKTIJKE();
15147
15133
  init_chunk_SOJMWM63();
15148
15134
  init_chunk_WEXVYJ5H();
15149
- init_chunk_2FQVW3O7();
15135
+ init_chunk_LEE5SOCI();
15150
15136
  init_chunk_5XEJSR22();
15151
15137
  init_chunk_IBL7FANV();
15152
15138
  init_chunk_VORPHGDT();
@@ -15155,8 +15141,8 @@ var init_contracts = __esm({
15155
15141
  init_chunk_MIWZOSPI();
15156
15142
  init_chunk_2ISUBJG7();
15157
15143
  init_chunk_C2UEA2KW();
15158
- init_chunk_6NI5RAM4();
15159
- init_chunk_D4AWK26E();
15144
+ init_chunk_S4VDZ7PZ();
15145
+ init_chunk_LD6U3CDG();
15160
15146
  init_chunk_CJ3L46X6();
15161
15147
  init_chunk_6TSQ5HXC();
15162
15148
  init_chunk_DHPUPI4Y();
@@ -15299,7 +15285,7 @@ var init_dist = __esm({
15299
15285
  init_chunk_QUKTIJKE();
15300
15286
  init_chunk_SOJMWM63();
15301
15287
  init_chunk_WEXVYJ5H();
15302
- init_chunk_2FQVW3O7();
15288
+ init_chunk_LEE5SOCI();
15303
15289
  init_chunk_5XEJSR22();
15304
15290
  init_chunk_IBL7FANV();
15305
15291
  init_chunk_P3AWZG3N();
@@ -15312,8 +15298,8 @@ var init_dist = __esm({
15312
15298
  init_chunk_FEOO3UPS();
15313
15299
  init_chunk_RPGBR5IN();
15314
15300
  init_chunk_C2UEA2KW();
15315
- init_chunk_6NI5RAM4();
15316
- init_chunk_D4AWK26E();
15301
+ init_chunk_S4VDZ7PZ();
15302
+ init_chunk_LD6U3CDG();
15317
15303
  init_chunk_CJ3L46X6();
15318
15304
  init_chunk_6TSQ5HXC();
15319
15305
  init_chunk_DHPUPI4Y();
@@ -36519,9 +36505,9 @@ wayai admin \u2014 platform-admin diagnostic commands
36519
36505
  Usage:
36520
36506
  wayai admin do tables <type> <id>
36521
36507
  wayai admin do read <type> <id> <table> [--limit N] [--id X] [--json]
36522
- wayai admin do counts <hub|org> <id> [--json] Knowledge as numbers, no text: a hub's knowledge rows, links, toolset connections,
36523
- knowledge placeholders per stored text and (production) publish state; an org's
36524
- resources and moved-knowledge registry
36508
+ wayai admin do counts <hub|org> <id> [--json] Numbers, no text: a hub's toolset connections, knowledge placeholders per stored
36509
+ text and (production) publish state; an org's skills, hub links and
36510
+ moved-knowledge registry
36525
36511
 
36526
36512
  wayai admin analytics tables
36527
36513
  wayai admin analytics read <table> [--conversation-id X] [--hub-id Y] [--message-id Z] [--limit N] [--json]
@@ -37441,16 +37427,6 @@ var init_batch = __esm({
37441
37427
  }
37442
37428
  });
37443
37429
 
37444
- // ../../packages/core/dist/contracts/rekor-toolset.js
37445
- var init_rekor_toolset = __esm({
37446
- "../../packages/core/dist/contracts/rekor-toolset.js"() {
37447
- "use strict";
37448
- init_chunk_AMHCCKZ3();
37449
- init_chunk_BEOHBREG();
37450
- init_chunk_DHPUPI4Y();
37451
- }
37452
- });
37453
-
37454
37430
  // src/data/commands/import.ts
37455
37431
  import { createReadStream } from "fs";
37456
37432
  import { access, constants, stat } from "fs/promises";
@@ -37677,14 +37653,16 @@ Stopped at chunk ${nextIndex}. To resume, re-run the SAME command with:
37677
37653
  }
37678
37654
  if (!opts.yes) {
37679
37655
  const plan = await client.request("GET", `/v1/${base}/import/${pathSegment(importId, "import id")}/rollback-plan?counts=true`);
37680
- const n = plan.matched_records ?? 0;
37656
+ const matched = plan.matched_records ?? 0;
37657
+ const kept2 = Math.min(plan.kept?.records ?? 0, matched);
37658
+ const n = matched - kept2;
37681
37659
  if (n === 0) {
37682
- console.error("No rows left to undo \u2014 closing the import session.");
37660
+ console.error(
37661
+ kept2 > 0 ? `Nothing to delete: the ${approvedRecords(kept2)} left of this import ${kept2 === 1 ? "is" : "are"} kept, since only a person signed in to WayAI removes an approved record \u2014 closing the import session.` : "No rows left to undo \u2014 closing the import session."
37662
+ );
37683
37663
  } else {
37684
- const reviewed = await recordTypeIsReviewed(client, base, plan.record_type);
37685
- const count = `${reviewed ? "up to " : ""}${n} record${n === 1 ? "" : "s"}`;
37686
37664
  const ok = await confirm(
37687
- `Delete ${count} created by this import into "${sanitizeTerminalText(String(plan.record_type))}"${reviewed ? " (those approved now stay unless you are signed in to WayAI as a person)" : ""}, plus every relationship pointing at them?`
37665
+ `Delete ${n} record${n === 1 ? "" : "s"} created by this import into "${sanitizeTerminalText(String(plan.record_type))}"${kept2 > 0 ? ` (${approvedRecords(kept2)} stay: only a person signed in to WayAI removes an approved record)` : ""}, plus every relationship pointing at them?`
37688
37666
  );
37689
37667
  if (!ok) {
37690
37668
  console.error("Aborted.");
@@ -37749,23 +37727,13 @@ Stopped at chunk ${nextIndex}. To resume, re-run the SAME command with:
37749
37727
  });
37750
37728
  return importCmd;
37751
37729
  }
37752
- async function recordTypeIsReviewed(client, base, recordType2) {
37753
- if (recordType2 === null) return false;
37754
- try {
37755
- const type = await client.request(
37756
- "GET",
37757
- `/v1/${base}/record-types/${pathSegment(recordType2, "record_type")}`
37758
- );
37759
- return declaresReview(type?.json_schema);
37760
- } catch {
37761
- return true;
37762
- }
37730
+ function approvedRecords(n) {
37731
+ return `${n} approved record${n === 1 ? "" : "s"}`;
37763
37732
  }
37764
37733
  var MAX_CHUNK_ROWS, MAX_ATTEMPTS, MAX_ROLLBACK_SWEEPS, BASE_BACKOFF_MS, RETRYABLE_CODES, sleep2;
37765
37734
  var init_import = __esm({
37766
37735
  "src/data/commands/import.ts"() {
37767
37736
  "use strict";
37768
- init_rekor_toolset();
37769
37737
  init_client();
37770
37738
  init_output();
37771
37739
  init_helpers();