@work-shape/catalyst-asset-schemas 0.8.0-rc.4 → 0.8.0-rc.6

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.
Files changed (3) hide show
  1. package/dist/index.d.ts +1512 -24
  2. package/dist/index.js +929 -122
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  // src/asset-types.ts
2
+ var ASSET_ACCESS_VERBS = ["read", "write", "delete", "publish"];
2
3
  var localeCodes = ["en", "de"];
3
4
  var REASONING_EFFORTS = ["none", "low", "medium", "high", "xhigh", "max"];
4
5
  var SKILL_STARTERS_MAX = 2;
@@ -12,6 +13,7 @@ var SKILL_RESOURCE_MEDIA_TYPES = [
12
13
  "application/json",
13
14
  "application/yaml"
14
15
  ];
16
+ var APP_AUDIENCES = ["self", "workspace", "instance"];
15
17
 
16
18
  // src/contract-values.ts
17
19
  var AUTH_SCOPE_WILDCARD = "*";
@@ -83,16 +85,23 @@ var ACTIONS = [
83
85
  "data_store.delete",
84
86
  "data_store.insert",
85
87
  "data_store.execute",
88
+ "data_store.records",
86
89
  "knowledge_base.read",
87
90
  "knowledge_base.write",
88
91
  "knowledge_base.publish",
89
92
  "knowledge_base.delete",
90
93
  "knowledge_base.use",
94
+ // Sending e-mail as one sender of the instance (`mail.send`). The `admin` role holds it on
95
+ // the sender `system`; a member only by a grant.
96
+ "mail_sender.use",
91
97
  "guardrail.read",
92
98
  "guardrail.write",
93
99
  "guardrail.publish",
94
100
  "guardrail.delete",
95
101
  "operations.approve",
102
+ // Reading the written feedback on agent messages and marking it handled (LU-4): on the
103
+ // instance, or on one workspace for the agents it owns. No bundle carries it.
104
+ "feedback.review",
96
105
  "users.manage",
97
106
  "usage.view",
98
107
  "audit.view",
@@ -101,11 +110,11 @@ var ACTIONS = [
101
110
  // Their keys stay with `api_access.manage`.
102
111
  "service_principals.manage",
103
112
  "agent_models.manage",
104
- "assets.release"
113
+ "assets.release",
114
+ // The two bundles of a workspace: one row each, expanded by the evaluator (`bundleCarries`).
115
+ "builder",
116
+ "publisher"
105
117
  ];
106
- var NAMESPACE_PREFIX_PATTERN = /^[a-z][a-z0-9]*(-[a-z0-9]+)*-$/u;
107
- var NAMESPACE_PREFIX_MIN_LENGTH = 2;
108
- var NAMESPACE_PREFIX_MAX_LENGTH = 32;
109
118
  var APP_ERROR_STATUS_CODES = {
110
119
  BAD_REQUEST: 400,
111
120
  UNAUTHENTICATED: 401,
@@ -152,13 +161,31 @@ var CONNECTION_HEALTH_STATES = [
152
161
  "secret_unreadable"
153
162
  ];
154
163
  var GRANT_HOLDER_KINDS = ["user", "service_principal", "role", "group"];
155
- var GRANT_SCOPE_KINDS = ["instance", "workspace", "namespace", "asset"];
164
+ var GRANT_SCOPE_KINDS = ["instance", "workspace", "asset"];
165
+ var ROLE_GRANT_SCOPE_KINDS = [
166
+ "instance",
167
+ "workspace",
168
+ "asset"
169
+ ];
170
+ var ROLE_PENDING_CHANGES = ["added", "removed"];
171
+ var ROLE_PENDING_DECISIONS = ["apply", "dismiss"];
156
172
  var GRANT_EFFECTS = ["allow", "deny"];
157
173
  var ACCESS_SOURCES = ["role", "legacy_ref", "grant", "membership"];
158
174
  var POLICY_VALUES = ["allow", "confirm", "approval", "deny"];
159
175
  var AUTH_PRINCIPAL_KINDS = ["user", "service"];
160
176
  var ADMINISTERED_USER_STATUSES = ["active", "disabled", "deleting"];
161
177
  var SERVICE_PRINCIPAL_STATUSES = ["active", "disabled"];
178
+ var WORKFLOW_RIGHT_NEEDED_FOR = ["publish", "run"];
179
+ var WORKFLOW_RIGHTS_REVISIONS = ["draft", "published"];
180
+ var WORKFLOW_RUN_ACCOUNT_STATUSES = [...SERVICE_PRINCIPAL_STATUSES, "unknown"];
181
+ var WORKFLOW_RIGHT_REFUSALS = [
182
+ "not_grantable",
183
+ "not_administrator",
184
+ "not_held",
185
+ "account_unavailable",
186
+ "asset_unavailable",
187
+ "not_visible"
188
+ ];
162
189
  var SERVICE_PRINCIPAL_PERMISSIONS = [
163
190
  "config_assets.read",
164
191
  "config_assets.release"
@@ -453,10 +480,11 @@ var DATA_STORE_STATUSES = ["provisioning", "ready", "retired"];
453
480
  var DATA_STORE_MIGRATION_OUTCOMES = ["none", "pending", "applied", "failed"];
454
481
  var KNOWLEDGE_BASE_STATUSES = ["unchecked", "preparing", "ok", "needs_attention"];
455
482
  var KNOWLEDGE_DOCUMENT_STATES = ["pending", "indexed", "failed"];
483
+ var KNOWLEDGE_FILE_MAX_BYTES = 25 * 1024 * 1024;
456
484
  var KNOWLEDGE_DOCUMENT_FAILURE_CODES = [
457
485
  // The extractor does not read the file's format.
458
486
  "knowledge_file_format_unsupported",
459
- // The file is over a limit of the extraction: size, pages or time.
487
+ // The file is over a limit of the extraction: its size or the size of its text.
460
488
  "knowledge_file_over_limit",
461
489
  // The file is corrupt, encrypted, or not the format it claims.
462
490
  "knowledge_file_unreadable",
@@ -471,7 +499,14 @@ var KNOWLEDGE_DOCUMENT_FAILURE_CODES = [
471
499
  // No text to search, such as a scanned PDF without a text layer.
472
500
  "knowledge_text_empty",
473
501
  // Indexing failed on every attempt.
474
- "knowledge_index_failed"
502
+ "knowledge_index_failed",
503
+ // A PDF or DOCX with more pages than `knowledge.maxPagesPerDocument`, counted before its text
504
+ // is read.
505
+ "knowledge_file_too_many_pages",
506
+ // A built-in or Workflow processor returned output outside its contract.
507
+ "knowledge_processor_output_invalid",
508
+ // Conversion exceeded its page-aware deadline.
509
+ "knowledge_conversion_timeout"
475
510
  ];
476
511
  var KNOWLEDGE_DOCUMENT_WAIT_CODES = [
477
512
  // A usage limit of the instance or the workspace refuses the embedding calls. Indexing goes
@@ -486,7 +521,9 @@ var KNOWLEDGE_SOURCE_FAILURE_CODES = [
486
521
  // A fetch failed on every attempt.
487
522
  "knowledge_fetch_failed",
488
523
  // The Knowledge Base holds its document limit; the listing stopped discovering there.
489
- "knowledge_source_limit_reached"
524
+ "knowledge_source_limit_reached",
525
+ "knowledge_item_invalid",
526
+ "knowledge_fetch_not_allowed"
490
527
  ];
491
528
  var KNOWLEDGE_SOURCE_ITEM_FAILURE_CODES = [
492
529
  ...KNOWLEDGE_SOURCE_FAILURE_CODES,
@@ -500,7 +537,7 @@ var KNOWLEDGE_SOURCE_ITEM_STATES = [
500
537
  "withdrawn"
501
538
  ];
502
539
  var KNOWLEDGE_SYNC_MODES = ["initial", "changes", "full"];
503
- var KNOWLEDGE_SYNC_RUN_STATES = ["running", "done", "failed"];
540
+ var KNOWLEDGE_SYNC_RUN_STATES = ["running", "done", "failed", "superseded"];
504
541
  var KNOWLEDGE_SYNC_COUNTS = [
505
542
  "discovered",
506
543
  "added",
@@ -518,6 +555,7 @@ var DATABASE_RELATION_TYPES = [
518
555
  "foreign_table"
519
556
  ];
520
557
  var WORKFLOW_RUN_STATUSES = [
558
+ "continued",
521
559
  "queued",
522
560
  "running",
523
561
  "waiting",
@@ -544,6 +582,14 @@ var WORKFLOW_RESERVED_STEP_TYPES = [
544
582
  ];
545
583
  var WORKFLOW_TRIGGER_KINDS = ["manual", "schedule", "parent"];
546
584
  var NOTIFY_CHANNELS = ["inbox", "mail"];
585
+ var WORKFLOW_STEP_SOURCE_KINDS = [
586
+ "connection",
587
+ "data_store",
588
+ "knowledge_base",
589
+ "workflow",
590
+ "mail_sender",
591
+ "other"
592
+ ];
547
593
  var PRINCIPAL_HOLDER_KINDS = [
548
594
  "user",
549
595
  "service_principal"
@@ -642,12 +688,19 @@ var WORKFLOW_STEP_RUN_STATUSES = [
642
688
  "cancelled"
643
689
  ];
644
690
  var WORKFLOW_ENDED_STATUSES = [
691
+ "continued",
645
692
  "done",
646
693
  "failed",
647
694
  "cancelled",
648
695
  "limit_reached"
649
696
  ];
650
697
  var MANAGED_FILE_STATUSES = ["available", "released", "deleted"];
698
+ var WORKFLOW_KINDS = ["process", "data"];
699
+ var WORKFLOW_DATASET_DOWNLOAD_FORMATS = ["jsonl", "csv"];
700
+ var WORKSPACE_USE_ASSET_KINDS = ["knowledge_base", "connection"];
701
+ var PUBLISHED_DATA_CONSUMER_KINDS = ["app", "workflow", "knowledge_base"];
702
+ var SCHEDULED_START_STATES = ["active", "paused"];
703
+ var AGENT_PREVIEW_SOURCES = ["draft", "live"];
651
704
 
652
705
  // src/schemas.ts
653
706
  import { z } from "zod";
@@ -807,12 +860,12 @@ var skillConfigObjectSchema = z.object({
807
860
  icon: z.string().min(1).optional()
808
861
  });
809
862
  var skillConfigSchema = skillConfigObjectSchema.superRefine((skill, context) => {
810
- for (const key of SKILL_FRONTMATTER_FIELDS) {
811
- if (skill.frontmatter && Object.hasOwn(skill.frontmatter, key)) {
863
+ for (const key2 of SKILL_FRONTMATTER_FIELDS) {
864
+ if (skill.frontmatter && Object.hasOwn(skill.frontmatter, key2)) {
812
865
  context.addIssue({
813
866
  code: "custom",
814
- path: ["frontmatter", key],
815
- message: `Skill frontmatter cannot hold '${key}': it is a field of the skill itself`
867
+ path: ["frontmatter", key2],
868
+ message: `Skill frontmatter cannot hold '${key2}': it is a field of the skill itself`
816
869
  });
817
870
  }
818
871
  }
@@ -845,7 +898,7 @@ var welcomeSubtitleSchema = z.union([
845
898
  message: "At least one localized value is required"
846
899
  })
847
900
  ]);
848
- var agentNameSchema = z.string().min(1).refine((name) => name !== "." && name !== "..", {
901
+ var agentNameSchema = z.string().min(1).refine((name2) => name2 !== "." && name2 !== "..", {
849
902
  message: "Agent name must not be '.' or '..'"
850
903
  });
851
904
  var agentConfigSchema = z.object({
@@ -899,8 +952,8 @@ import yaml from "js-yaml";
899
952
  // src/yaml-data.ts
900
953
  import { JSON_SCHEMA, YAMLException, load } from "js-yaml";
901
954
  var YAML_DATA_MAX_VALUES = 1e5;
902
- function isStorableText(text) {
903
- return !text.includes("\0") && !/\p{Surrogate}/u.test(text);
955
+ function isStorableText(text2) {
956
+ return !text2.includes("\0") && !/\p{Surrogate}/u.test(text2);
904
957
  }
905
958
  function checkStorableTexts(value, maxValues) {
906
959
  const pending = [value];
@@ -912,15 +965,15 @@ function checkStorableTexts(value, maxValues) {
912
965
  } else if (Array.isArray(next)) {
913
966
  for (const entry of next) pending.push(entry);
914
967
  } else if (typeof next === "object" && next !== null) {
915
- for (const [key, entry] of Object.entries(next)) {
916
- if (!isStorableText(key)) return "unstorable";
968
+ for (const [key2, entry] of Object.entries(next)) {
969
+ if (!isStorableText(key2)) return "unstorable";
917
970
  pending.push(entry);
918
971
  }
919
972
  }
920
973
  }
921
974
  return "storable";
922
975
  }
923
- function readYamlData(text, file, options = {}) {
976
+ function readYamlData(text2, file, options = {}) {
924
977
  const fail = (code, message, line, column) => ({
925
978
  ok: false,
926
979
  issue: {
@@ -932,7 +985,7 @@ function readYamlData(text, file, options = {}) {
932
985
  });
933
986
  let value;
934
987
  try {
935
- value = load(text, { schema: JSON_SCHEMA, filename: file });
988
+ value = load(text2, { schema: JSON_SCHEMA, filename: file });
936
989
  } catch (error) {
937
990
  if (error instanceof YAMLException) {
938
991
  const markLine = error.mark?.line;
@@ -969,8 +1022,8 @@ var YamlDataError = class extends Error {
969
1022
  this.issue = issue;
970
1023
  }
971
1024
  };
972
- function loadYamlData(text, file) {
973
- const read = readYamlData(text, file);
1025
+ function loadYamlData(text2, file) {
1026
+ const read = readYamlData(text2, file);
974
1027
  if (!read.ok) throw new YamlDataError(read.issue);
975
1028
  return read.value;
976
1029
  }
@@ -1007,7 +1060,7 @@ function parseSkillMarkdown(contents, skillFile, skillPath) {
1007
1060
  }
1008
1061
  const content = (match[2] ?? "").trim();
1009
1062
  const { name: named, title, description, summary, starters, ...others } = frontmatter.data;
1010
- const name = named ?? deriveSkillName(skillPath);
1063
+ const name2 = named ?? deriveSkillName(skillPath);
1011
1064
  const json = JSON.stringify(others);
1012
1065
  if (json.length > SKILL_FRONTMATTER_MAX_BYTES) {
1013
1066
  throw new SkillMarkdownError(
@@ -1018,8 +1071,8 @@ function parseSkillMarkdown(contents, skillFile, skillPath) {
1018
1071
  }
1019
1072
  const kept = JSON.parse(json);
1020
1073
  return {
1021
- name,
1022
- title: title ?? deriveSkillTitle(name, content),
1074
+ name: name2,
1075
+ title: title ?? deriveSkillTitle(name2, content),
1023
1076
  description,
1024
1077
  ...summary === void 0 ? {} : { summary },
1025
1078
  ...starters === void 0 ? {} : { starters },
@@ -1027,8 +1080,8 @@ function parseSkillMarkdown(contents, skillFile, skillPath) {
1027
1080
  ...Object.keys(others).length > 0 ? { frontmatter: kept } : {}
1028
1081
  };
1029
1082
  }
1030
- function loadFrontmatter(text, skillFile) {
1031
- const read = readYamlData(text, skillFile, { refuseAliases: true });
1083
+ function loadFrontmatter(text2, skillFile) {
1084
+ const read = readYamlData(text2, skillFile, { refuseAliases: true });
1032
1085
  if (read.ok) return read.value;
1033
1086
  const { issue } = read;
1034
1087
  if (issue.code === "yaml_alias") {
@@ -1055,7 +1108,7 @@ function loadFrontmatter(text, skillFile) {
1055
1108
  { issues: [{ message: issue.message, path: [], line, column }] }
1056
1109
  );
1057
1110
  }
1058
- function deriveSkillTitle(name, content) {
1111
+ function deriveSkillTitle(name2, content) {
1059
1112
  let fence;
1060
1113
  for (const line of content.split(/\r?\n/u)) {
1061
1114
  const marker = /^\s{0,3}(`{3,}|~{3,})/u.exec(line)?.[1];
@@ -1066,8 +1119,8 @@ function deriveSkillTitle(name, content) {
1066
1119
  const heading = fence === void 0 ? /^ {0,3}#{1,6}\s+(.+?)(?:\s+#+)?\s*$/u.exec(line) : null;
1067
1120
  if (heading?.[1]) return heading[1];
1068
1121
  }
1069
- const words = name.replace(/[-_]+/gu, " ").trim();
1070
- return words === "" ? name : words.charAt(0).toUpperCase() + words.slice(1);
1122
+ const words = name2.replace(/[-_]+/gu, " ").trim();
1123
+ return words === "" ? name2 : words.charAt(0).toUpperCase() + words.slice(1);
1071
1124
  }
1072
1125
  function formatSkillMarkdown(skill) {
1073
1126
  const content = skill.content.trim();
@@ -1113,11 +1166,234 @@ function withoutExtension(filename) {
1113
1166
  return dot > 0 ? filename.slice(0, dot) : filename;
1114
1167
  }
1115
1168
 
1116
- // src/knowledge-sources.ts
1169
+ // src/knowledge-write.ts
1170
+ import { z as z3 } from "zod";
1171
+
1172
+ // src/operation-batch.ts
1117
1173
  import { z as z2 } from "zod";
1118
- var sourceIdSchema = z2.string().min(1).max(63);
1119
- var countSchema = z2.number().int().min(0);
1120
- var countsSchema = z2.strictObject({
1174
+ var workflowDatasetReferenceSchema = z2.strictObject({
1175
+ $dataset: z2.string().min(1),
1176
+ rowCount: z2.number().int().min(0),
1177
+ // A view keeps the parent byte count as an upper bound.
1178
+ bytes: z2.number().int().min(0),
1179
+ /** Absolute offset in the parent; rowCount bounds the view. No rows are copied. */
1180
+ offset: z2.number().int().nonnegative().optional()
1181
+ });
1182
+ var operationBatchFailureSchema = z2.strictObject({
1183
+ item: z2.json(),
1184
+ code: z2.string().min(1),
1185
+ message: z2.string().min(1)
1186
+ });
1187
+ var operationBatchResultSchema = z2.strictObject({
1188
+ done: z2.number().int().min(0),
1189
+ failed: z2.number().int().min(0),
1190
+ failures: workflowDatasetReferenceSchema
1191
+ });
1192
+
1193
+ // src/knowledge-write.ts
1194
+ var id = z3.string().min(1).max(200);
1195
+ var count = z3.number().int().min(0);
1196
+ var hash = z3.string().regex(/^[a-f0-9]{64}$/u);
1197
+ var text = z3.string().max(KNOWLEDGE_FILE_MAX_BYTES).refine((value) => new TextEncoder().encode(value).byteLength <= KNOWLEDGE_FILE_MAX_BYTES, {
1198
+ message: `Document text exceeds ${KNOWLEDGE_FILE_MAX_BYTES} bytes`
1199
+ });
1200
+ var knowledgeIngestFetchSchema = z3.strictObject({
1201
+ connection: id,
1202
+ operation: id,
1203
+ input: z3.record(z3.string(), z3.json())
1204
+ });
1205
+ var ingestItemIdentity = z3.strictObject({
1206
+ itemId: id,
1207
+ version: id,
1208
+ name: z3.string().min(1).max(1e3),
1209
+ path: z3.string().startsWith("/").max(4e3).optional(),
1210
+ originLink: z3.url({ protocol: /^https?$/u }).max(4e3).optional(),
1211
+ metadata: z3.record(z3.string(), z3.json()).optional(),
1212
+ text: z3.never().optional(),
1213
+ fileId: z3.never().optional(),
1214
+ fetch: z3.never().optional()
1215
+ });
1216
+ var knowledgeIngestItemSchema = z3.union(
1217
+ [
1218
+ ingestItemIdentity.extend({ text }),
1219
+ ingestItemIdentity.extend({ fileId: id }),
1220
+ ingestItemIdentity.extend({ fetch: knowledgeIngestFetchSchema })
1221
+ ],
1222
+ { error: "knowledge_item_invalid: Supply exactly one of text, fileId or fetch" }
1223
+ ).superRefine((item, context) => {
1224
+ if (item.fetch !== void 0)
1225
+ context.addIssue({
1226
+ code: "custom",
1227
+ path: ["fetch"],
1228
+ message: "not_supported_yet: fetch arrives with CONN-DL; supply text or fileId"
1229
+ });
1230
+ });
1231
+ var knowledgeIngestInputSchema = z3.union([
1232
+ z3.strictObject({ items: z3.array(knowledgeIngestItemSchema), complete: z3.boolean().optional() }),
1233
+ z3.strictObject({ dataset: workflowDatasetReferenceSchema, complete: z3.boolean().optional() })
1234
+ ]);
1235
+ var knowledgeIngestOutputSchema = operationBatchResultSchema.extend({
1236
+ accepted: count,
1237
+ withdrawn: count
1238
+ });
1239
+ var knowledgeWithdrawInputSchema = z3.strictObject({ itemIds: z3.array(id).min(1) });
1240
+ var knowledgeWithdrawOutputSchema = z3.strictObject({ withdrawn: count });
1241
+ var knowledgePendingInputSchema = z3.strictObject({
1242
+ type: id.optional(),
1243
+ since: z3.iso.datetime({ offset: true }).optional(),
1244
+ limit: z3.number().int().positive()
1245
+ });
1246
+ var knowledgePendingRowSchema = z3.strictObject({
1247
+ id,
1248
+ type: id,
1249
+ contentHash: hash,
1250
+ pages: workflowDatasetReferenceSchema
1251
+ });
1252
+ var knowledgePendingOutputSchema = z3.strictObject({
1253
+ documents: workflowDatasetReferenceSchema
1254
+ });
1255
+ var pageNumber = z3.number().int().positive();
1256
+ var range = z3.strictObject({ pageFrom: pageNumber, pageTo: pageNumber });
1257
+ var processorMetadataSchema = z3.strictObject({
1258
+ documents: z3.array(range).min(1),
1259
+ sections: z3.array(range.extend({ title: z3.string().min(1) })).optional(),
1260
+ fields: z3.record(z3.string(), z3.json())
1261
+ });
1262
+ var knowledgeProcessorOutputSchema = processorMetadataSchema.extend({
1263
+ // Count stays unbounded here: PROC-1/PROC-W must enforce the instance's
1264
+ // knowledge.maxPagesPerDocument at runtime (KB-ISO-3a), not a new contract cap.
1265
+ pages: z3.array(z3.strictObject({ page: pageNumber, text })).min(1)
1266
+ }).superRefine((output, context) => {
1267
+ const pages = new Set(output.pages.map((page) => page.page));
1268
+ if (output.pages.some(
1269
+ (page, index) => index > 0 && page.page <= (output.pages[index - 1]?.page ?? 0)
1270
+ )) {
1271
+ context.addIssue({
1272
+ code: "custom",
1273
+ path: ["pages"],
1274
+ message: "knowledge_processor_output_invalid: Pages must be ascending and unique"
1275
+ });
1276
+ }
1277
+ const bytes = output.pages.reduce(
1278
+ (size, page) => size + new TextEncoder().encode(page.text).byteLength,
1279
+ 0
1280
+ );
1281
+ if (bytes > KNOWLEDGE_FILE_MAX_BYTES)
1282
+ context.addIssue({
1283
+ code: "custom",
1284
+ path: ["pages"],
1285
+ message: "knowledge_processor_output_invalid: Document text exceeds the per-document limit"
1286
+ });
1287
+ for (const field of ["documents", "sections"]) {
1288
+ output[field]?.forEach((entry, index) => {
1289
+ if (entry.pageFrom > entry.pageTo || !pages.has(entry.pageFrom) || !pages.has(entry.pageTo)) {
1290
+ context.addIssue({
1291
+ code: "custom",
1292
+ path: [field, index],
1293
+ message: "knowledge_processor_output_invalid: Page range must be ordered and inside the document"
1294
+ });
1295
+ }
1296
+ });
1297
+ }
1298
+ });
1299
+ var knowledgePutProcessedInputSchema = z3.strictObject({
1300
+ items: z3.union([
1301
+ z3.array(
1302
+ z3.strictObject({
1303
+ documentId: id,
1304
+ contentHash: hash,
1305
+ workflowRevision: id,
1306
+ // Mirror pending: page text lives outside step values and item dataset rows.
1307
+ // PROC-W resolves the pages and validates the full processor output above.
1308
+ output: processorMetadataSchema.extend({ pages: workflowDatasetReferenceSchema })
1309
+ })
1310
+ ),
1311
+ workflowDatasetReferenceSchema
1312
+ ])
1313
+ });
1314
+ var knowledgeFieldValueSchema = z3.json();
1315
+ var knowledgeExtractFieldsInputSchema = z3.strictObject({
1316
+ documentId: id,
1317
+ schema: z3.record(z3.string(), knowledgeFieldValueSchema)
1318
+ });
1319
+ var knowledgeExtractFieldsOutputSchema = z3.strictObject({
1320
+ droppedFields: z3.number().int().nonnegative().optional(),
1321
+ failedFields: z3.number().int().nonnegative().optional(),
1322
+ path: z3.string(),
1323
+ date: z3.iso.date().nullable(),
1324
+ type: id,
1325
+ fields: z3.record(
1326
+ z3.string(),
1327
+ z3.strictObject({ value: knowledgeFieldValueSchema, page: pageNumber, quote: z3.string().min(1) })
1328
+ )
1329
+ });
1330
+ var knowledgeWorkflowSourceSchema = z3.strictObject({
1331
+ id: z3.string().startsWith("workflow:"),
1332
+ kind: z3.literal("workflow"),
1333
+ workflowId: z3.string().regex(/^[a-z][a-z0-9_-]{0,62}$/u)
1334
+ }).refine((source) => source.id === `workflow:${source.workflowId}`, {
1335
+ path: ["id"],
1336
+ message: "A Workflow source id is workflow:<workflowId>"
1337
+ });
1338
+ var knowledgeWriteContracts = {
1339
+ ingest: {
1340
+ description: "Ingest items or a dataset into the calling data Workflow's source; complete promises a full pass, withdrawn only after the run succeeds.",
1341
+ inputSchema: knowledgeIngestInputSchema,
1342
+ outputSchema: knowledgeIngestOutputSchema,
1343
+ effect: "changing",
1344
+ right: "knowledge_base.write",
1345
+ keyLevel: "write",
1346
+ completion: "async",
1347
+ batch: true
1348
+ },
1349
+ withdraw: {
1350
+ description: "Withdraw item ids from the calling Workflow's source; removed from search immediately.",
1351
+ inputSchema: knowledgeWithdrawInputSchema,
1352
+ outputSchema: knowledgeWithdrawOutputSchema,
1353
+ effect: "changing",
1354
+ right: "knowledge_base.write",
1355
+ keyLevel: "write"
1356
+ },
1357
+ pending: {
1358
+ description: "Pull pending documents by type and time as a dataset; page text is another dataset reference.",
1359
+ inputSchema: knowledgePendingInputSchema,
1360
+ outputSchema: knowledgePendingOutputSchema,
1361
+ rowSchema: knowledgePendingRowSchema,
1362
+ effect: "reading",
1363
+ right: "knowledge_base.read",
1364
+ keyLevel: "read",
1365
+ dataset: true
1366
+ },
1367
+ put_processed: {
1368
+ description: "Write processor output by document, content hash and Workflow revision, with pages as a dataset reference like pending; the platform validates, chunks and indexes it, with per-item outcomes.",
1369
+ inputSchema: knowledgePutProcessedInputSchema,
1370
+ outputSchema: operationBatchResultSchema,
1371
+ effect: "changing",
1372
+ right: "knowledge_base.write",
1373
+ keyLevel: "write",
1374
+ batch: true
1375
+ },
1376
+ extract_fields: {
1377
+ description: "Extract fields by schema through the approved model binding within the Knowledge Base budget; each value carries page and quote evidence.",
1378
+ inputSchema: knowledgeExtractFieldsInputSchema,
1379
+ outputSchema: knowledgeExtractFieldsOutputSchema,
1380
+ effect: "reading",
1381
+ right: "knowledge_base.read",
1382
+ keyLevel: "read"
1383
+ }
1384
+ };
1385
+ var knowledgeRecordsRefusalSchema = z3.never({
1386
+ error: "'records' belongs in store.yaml. A data Workflow proposes fields into the Data Store's records mechanism."
1387
+ }).optional();
1388
+
1389
+ // src/knowledge-sources.ts
1390
+ import { z as z4 } from "zod";
1391
+ var sourceIdSchema = z4.union([
1392
+ z4.string().regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u).max(63),
1393
+ knowledgeWorkflowSourceSchema.shape.id.regex(/^workflow:[a-z][a-z0-9_-]{0,62}$/u)
1394
+ ]);
1395
+ var countSchema = z4.number().int().min(0);
1396
+ var countsSchema = z4.strictObject({
1121
1397
  discovered: countSchema,
1122
1398
  added: countSchema,
1123
1399
  changed: countSchema,
@@ -1126,28 +1402,25 @@ var countsSchema = z2.strictObject({
1126
1402
  failed: countSchema,
1127
1403
  skipped: countSchema
1128
1404
  });
1129
- var knowledgeSyncInputSchema = z2.strictObject({
1405
+ var knowledgeSyncInputSchema = z4.strictObject({
1130
1406
  /** The `id` of the source in the definition. */
1131
1407
  source: sourceIdSchema,
1132
1408
  /** `changes` unless `full`. The initial import is started by publish, not by this call. */
1133
- mode: z2.literal("full", {
1134
- // Keep SRC-0's accepted values frozen while explaining the deferred mode.
1135
- error: (issue) => issue.input === "changes" ? "not_supported_yet: Change-feed sync is not supported yet; request mode full." : void 0
1136
- }).optional()
1409
+ mode: z4.enum(["changes", "full"]).optional()
1137
1410
  });
1138
- var knowledgeSyncResultSchema = z2.strictObject({
1139
- syncRunId: z2.string(),
1140
- source: z2.string(),
1141
- mode: z2.enum(KNOWLEDGE_SYNC_MODES),
1411
+ var knowledgeSyncResultSchema = z4.strictObject({
1412
+ syncRunId: z4.string(),
1413
+ source: z4.string(),
1414
+ mode: z4.enum(KNOWLEDGE_SYNC_MODES),
1142
1415
  /** Why a run is of another mode than asked, such as a cursor the source refused. */
1143
- reason: z2.enum(["cursor_expired"]).optional(),
1144
- state: z2.enum(KNOWLEDGE_SYNC_RUN_STATES),
1416
+ reason: z4.enum(["cursor_expired"]).optional(),
1417
+ state: z4.enum(KNOWLEDGE_SYNC_RUN_STATES),
1145
1418
  counts: countsSchema,
1146
- bytesFetched: z2.number().int().min(0),
1419
+ bytesFetched: z4.number().int().min(0),
1147
1420
  /** Why the whole sync failed, for a run in state `failed`. */
1148
- failureCode: z2.enum(KNOWLEDGE_SOURCE_FAILURE_CODES).optional(),
1149
- startedAt: z2.string(),
1150
- endedAt: z2.string().optional()
1421
+ failureCode: z4.enum(KNOWLEDGE_SOURCE_FAILURE_CODES).optional(),
1422
+ startedAt: z4.string(),
1423
+ endedAt: z4.string().optional()
1151
1424
  });
1152
1425
  var KNOWLEDGE_SOURCE_ITEM_SHOWN_STATES = [
1153
1426
  "discovered",
@@ -1156,100 +1429,524 @@ var KNOWLEDGE_SOURCE_ITEM_SHOWN_STATES = [
1156
1429
  "failed",
1157
1430
  "withdrawn"
1158
1431
  ];
1159
- var itemFailureCodeSchema = z2.union([
1160
- z2.enum(KNOWLEDGE_SOURCE_ITEM_FAILURE_CODES),
1161
- z2.enum(KNOWLEDGE_DOCUMENT_FAILURE_CODES)
1432
+ var itemFailureCodeSchema = z4.union([
1433
+ z4.enum(KNOWLEDGE_SOURCE_ITEM_FAILURE_CODES),
1434
+ z4.enum(KNOWLEDGE_DOCUMENT_FAILURE_CODES)
1162
1435
  ]);
1163
- var knowledgeSourcesOutputSchema = z2.strictObject({
1164
- sources: z2.array(
1165
- z2.strictObject({
1166
- id: z2.string(),
1167
- /** The name of the Connection it reads through. */
1168
- connection: z2.string(),
1169
- /** Items by the state the page shows. */
1170
- items: z2.strictObject({
1171
- discovered: countSchema,
1172
- fetched: countSchema,
1173
- indexed: countSchema,
1174
- failed: countSchema,
1175
- withdrawn: countSchema
1176
- }),
1177
- /** Failed items per code. */
1178
- failures: z2.array(z2.strictObject({ code: itemFailureCodeSchema, count: countSchema })),
1179
- /** The sync that runs now, with its rate in items per minute and its estimated end. */
1180
- running: z2.strictObject({
1181
- syncRunId: z2.string(),
1182
- mode: z2.enum(KNOWLEDGE_SYNC_MODES),
1183
- startedAt: z2.string(),
1184
- itemsPerMinute: z2.number().min(0).optional(),
1185
- estimatedEndAt: z2.string().optional()
1186
- }).optional(),
1187
- /** The last sync that ended. */
1188
- last: knowledgeSyncResultSchema.optional(),
1189
- /** "Letzte Änderung verarbeitet". */
1190
- lastChangeAt: z2.string().optional(),
1191
- /** "Älteste offene Änderung". */
1192
- oldestOpenChangeAt: z2.string().optional()
1193
- })
1436
+ var sourceStatusSchema = z4.strictObject({
1437
+ id: z4.string(),
1438
+ /** The name of the Connection it reads through. */
1439
+ connection: z4.string(),
1440
+ kind: z4.literal("connector").optional(),
1441
+ /** Items by the state the page shows. */
1442
+ items: z4.strictObject({
1443
+ discovered: countSchema,
1444
+ fetched: countSchema,
1445
+ indexed: countSchema,
1446
+ failed: countSchema,
1447
+ withdrawn: countSchema
1448
+ }),
1449
+ /** Failed items per code. */
1450
+ failures: z4.array(z4.strictObject({ code: itemFailureCodeSchema, count: countSchema })),
1451
+ /** The sync that runs now, with its rate in items per minute and its estimated end. */
1452
+ running: z4.strictObject({
1453
+ syncRunId: z4.string(),
1454
+ mode: z4.enum(KNOWLEDGE_SYNC_MODES),
1455
+ startedAt: z4.string(),
1456
+ itemsPerMinute: z4.number().min(0).optional(),
1457
+ estimatedEndAt: z4.string().optional()
1458
+ }).optional(),
1459
+ /** The last sync that ended. */
1460
+ last: knowledgeSyncResultSchema.optional(),
1461
+ /** "Letzte Änderung verarbeitet". */
1462
+ lastChangeAt: z4.string().optional(),
1463
+ /** "Älteste offene Änderung". */
1464
+ oldestOpenChangeAt: z4.string().optional()
1465
+ });
1466
+ var knowledgeSourcesOutputSchema = z4.strictObject({
1467
+ sources: z4.array(
1468
+ z4.union([
1469
+ sourceStatusSchema,
1470
+ knowledgeWorkflowSourceSchema.safeExtend(
1471
+ sourceStatusSchema.omit({ id: true, connection: true, kind: true }).shape
1472
+ )
1473
+ ])
1194
1474
  )
1195
1475
  });
1196
- var knowledgeSourceItemsInputSchema = z2.strictObject({
1476
+ var knowledgeSourceItemsInputSchema = z4.strictObject({
1197
1477
  source: sourceIdSchema,
1198
- state: z2.enum(KNOWLEDGE_SOURCE_ITEM_SHOWN_STATES).optional(),
1478
+ state: z4.enum(KNOWLEDGE_SOURCE_ITEM_SHOWN_STATES).optional(),
1199
1479
  failureCode: itemFailureCodeSchema.optional(),
1200
1480
  /** Items per page: 50 by default, at most 200. */
1201
- limit: z2.coerce.number().int().min(1).max(200).optional(),
1202
- cursor: z2.string().min(1).max(1e3).optional()
1481
+ limit: z4.coerce.number().int().min(1).max(200).optional(),
1482
+ cursor: z4.string().min(1).max(1e3).optional()
1203
1483
  });
1204
- var knowledgeSourceItemsOutputSchema = z2.strictObject({
1484
+ var knowledgeSourceItemsOutputSchema = z4.strictObject({
1205
1485
  /** Newest change first. */
1206
- items: z2.array(
1207
- z2.strictObject({
1486
+ items: z4.array(
1487
+ z4.strictObject({
1208
1488
  /** The row in `source_items`: what `retry` and `locate` name. */
1209
- id: z2.string(),
1489
+ id: z4.string(),
1210
1490
  /** The id of the item at the source. */
1211
- itemId: z2.string(),
1212
- name: z2.string(),
1213
- path: z2.string(),
1214
- state: z2.enum(KNOWLEDGE_SOURCE_ITEM_SHOWN_STATES),
1491
+ itemId: z4.string(),
1492
+ name: z4.string(),
1493
+ path: z4.string(),
1494
+ state: z4.enum(KNOWLEDGE_SOURCE_ITEM_SHOWN_STATES),
1215
1495
  failureCode: itemFailureCodeSchema.optional(),
1216
- documentId: z2.string().optional(),
1217
- originLink: z2.string().optional(),
1218
- changedAt: z2.string()
1496
+ documentId: z4.string().optional(),
1497
+ originLink: z4.string().optional(),
1498
+ changedAt: z4.string()
1219
1499
  })
1220
1500
  ),
1221
- nextCursor: z2.string().optional()
1501
+ nextCursor: z4.string().optional()
1222
1502
  });
1223
1503
  var RETRY_MAX = 100;
1224
- var knowledgeRetryInputSchema = z2.union([
1225
- z2.strictObject({ documentIds: z2.array(z2.string().min(1).max(200)).min(1).max(RETRY_MAX) }),
1226
- z2.strictObject({
1504
+ var knowledgeRetryInputSchema = z4.union([
1505
+ z4.strictObject({ documentIds: z4.array(z4.string().min(1).max(200)).min(1).max(RETRY_MAX) }),
1506
+ z4.strictObject({
1227
1507
  source: sourceIdSchema,
1228
- sourceItemIds: z2.array(z2.string().min(1).max(200)).min(1).max(RETRY_MAX)
1508
+ sourceItemIds: z4.array(z4.string().min(1).max(200)).min(1).max(RETRY_MAX)
1229
1509
  }),
1230
- z2.strictObject({ source: sourceIdSchema, failureCode: itemFailureCodeSchema }),
1231
- z2.strictObject({ source: sourceIdSchema, all: z2.literal(true) })
1510
+ z4.strictObject({ source: sourceIdSchema, failureCode: itemFailureCodeSchema }),
1511
+ z4.strictObject({ source: sourceIdSchema, all: z4.literal(true) })
1232
1512
  ]);
1233
- var knowledgeRetryOutputSchema = z2.strictObject({
1513
+ var knowledgeRetryOutputSchema = z4.strictObject({
1234
1514
  /** For a retry by document ids: each named document, with its state after the retry. */
1235
- documents: z2.array(z2.strictObject({ id: z2.string(), state: z2.enum(KNOWLEDGE_DOCUMENT_STATES) })).optional(),
1515
+ documents: z4.array(z4.strictObject({ id: z4.string(), state: z4.enum(KNOWLEDGE_DOCUMENT_STATES) })).optional(),
1236
1516
  /** How many contents or items were queued again. */
1237
- queued: z2.number().int()
1517
+ queued: z4.number().int()
1238
1518
  });
1239
- var knowledgeLocateInputSchema = z2.strictObject({
1519
+ var knowledgeLocateInputSchema = z4.strictObject({
1240
1520
  /** The row in `source_items`. */
1241
- sourceItemId: z2.string().min(1).max(200)
1521
+ sourceItemId: z4.string().min(1).max(200)
1242
1522
  });
1243
- var knowledgeLocateOutputSchema = z2.strictObject({
1244
- sourceItemId: z2.string(),
1245
- source: z2.string(),
1246
- itemId: z2.string(),
1247
- state: z2.enum(KNOWLEDGE_SOURCE_ITEM_SHOWN_STATES),
1248
- discoveredAt: z2.string(),
1249
- fetchedAt: z2.string().optional(),
1250
- withdrawnAt: z2.string().optional(),
1251
- purgedAt: z2.string().optional()
1523
+ var knowledgeLocateOutputSchema = z4.strictObject({
1524
+ sourceItemId: z4.string(),
1525
+ source: z4.string(),
1526
+ itemId: z4.string(),
1527
+ state: z4.enum(KNOWLEDGE_SOURCE_ITEM_SHOWN_STATES),
1528
+ discoveredAt: z4.string(),
1529
+ fetchedAt: z4.string().optional(),
1530
+ withdrawnAt: z4.string().optional(),
1531
+ purgedAt: z4.string().optional()
1252
1532
  });
1533
+
1534
+ // src/workflow-datasets.ts
1535
+ var WORKFLOW_DATASET_STATES = ["writing", "complete", "deleted"];
1536
+
1537
+ // src/operation-paging.ts
1538
+ import { z as z5 } from "zod";
1539
+ var operationPagingSchema = z5.discriminatedUnion("by", [
1540
+ z5.strictObject({
1541
+ by: z5.enum(["page", "offset"]),
1542
+ param: z5.string().min(1),
1543
+ sizeParam: z5.string().min(1),
1544
+ size: z5.number().int().min(1),
1545
+ start: z5.number().int().min(0).optional()
1546
+ }),
1547
+ z5.strictObject({
1548
+ by: z5.enum(["cursor", "next_link"]),
1549
+ param: z5.string().min(1),
1550
+ cursor: z5.string().min(1)
1551
+ })
1552
+ ]);
1553
+
1554
+ // src/workflow-data-flows.ts
1555
+ import { z as z6 } from "zod";
1556
+ var workflowDataFlowsSchema = z6.object({
1557
+ fills: z6.array(z6.object({ id: z6.string(), name: z6.string(), title: z6.string() })),
1558
+ processes: z6.array(z6.object({ id: z6.string(), name: z6.string(), title: z6.string() })),
1559
+ hidden: z6.object({ fills: z6.number().int().min(0), processes: z6.number().int().min(0) }),
1560
+ truncated: z6.boolean()
1561
+ });
1562
+
1563
+ // src/data-store-records.ts
1564
+ import { z as z7 } from "zod";
1565
+ var RECORDS_PROPOSE_MAX_ITEMS_PER_CALL = 1e3;
1566
+ var RECORDS_PROPOSE_MAX_FIELDS_PER_ITEM = 1e3;
1567
+ var RECORDS_FLAGGED_MAX_ITEMS_PER_PAGE = 1e4;
1568
+ var name = z7.string().min(1);
1569
+ var id2 = z7.string().min(1).max(200);
1570
+ var key = z7.union([z7.string().min(1), z7.number(), z7.boolean()]);
1571
+ var dataStoreRecordsRuleSchema = z7.strictObject({
1572
+ table: name,
1573
+ key: z7.union([
1574
+ z7.strictObject({ column: name, fromPath: z7.string().startsWith("/").min(1) }),
1575
+ z7.strictObject({ column: name, fromField: name })
1576
+ ]),
1577
+ precedence: z7.array(name).default([]),
1578
+ review: z7.strictObject({ always: z7.array(name).default([]) }).default({ always: [] }),
1579
+ retainWithoutSource: z7.boolean().default(false)
1580
+ }).superRefine((rule, context) => {
1581
+ if ("fromPath" in rule.key) {
1582
+ const placeholders = rule.key.fromPath.match(/\{[^{}]*\}/gu);
1583
+ if (placeholders?.length !== 1 || placeholders[0] !== `{${rule.key.column}}`) {
1584
+ context.addIssue({
1585
+ code: "custom",
1586
+ path: ["key", "fromPath"],
1587
+ message: "fromPath must contain exactly one placeholder naming the key column"
1588
+ });
1589
+ }
1590
+ }
1591
+ });
1592
+ var recordEvidenceResultSchema = z7.discriminatedUnion("status", [
1593
+ z7.strictObject({ status: z7.literal("passed") }),
1594
+ z7.strictObject({
1595
+ status: z7.literal("failed"),
1596
+ reason: z7.enum(["page_not_found", "quote_not_found", "value_not_parsed"])
1597
+ })
1598
+ ]);
1599
+ var RECORD_FIELD_STATES = ["extracted", "confirmed", "corrected", "conflict"];
1600
+ var RECORD_FIELD_FAILURE_CODES = ["record_field_unknown"];
1601
+ var fieldSchema = knowledgeExtractFieldsOutputSchema.shape.fields.valueType.extend({ name });
1602
+ var dataStoreRecordProposalItemSchema = z7.strictObject({
1603
+ // Document ids are scoped by their Knowledge Base. Both ids travel with every citation.
1604
+ knowledgeBaseId: id2,
1605
+ documentId: id2,
1606
+ kind: name,
1607
+ documentDate: z7.iso.date().nullable(),
1608
+ path: z7.string().startsWith("/").optional(),
1609
+ fields: z7.array(fieldSchema).min(1).max(
1610
+ RECORDS_PROPOSE_MAX_FIELDS_PER_ITEM,
1611
+ "At most 1000 fields per item (RECORDS_PROPOSE_MAX_FIELDS_PER_ITEM); split larger proposals into batches"
1612
+ )
1613
+ });
1614
+ var dataStoreRecordsProposeInputSchema = z7.strictObject({
1615
+ table: name,
1616
+ items: z7.array(dataStoreRecordProposalItemSchema).max(
1617
+ RECORDS_PROPOSE_MAX_ITEMS_PER_CALL,
1618
+ "At most 1000 items per call (RECORDS_PROPOSE_MAX_ITEMS_PER_CALL); send another batch"
1619
+ )
1620
+ });
1621
+ var decisionSchema = z7.strictObject({
1622
+ table: name,
1623
+ key,
1624
+ field: name,
1625
+ documentId: id2.optional(),
1626
+ knowledgeBaseId: id2.optional()
1627
+ });
1628
+ var dataStoreRecordsDecideInputSchema = z7.discriminatedUnion("action", [
1629
+ decisionSchema.extend({ action: z7.literal("confirm") }),
1630
+ decisionSchema.extend({ action: z7.literal("correct"), value: z7.json() }),
1631
+ decisionSchema.extend({ action: z7.literal("assign"), documentId: id2, knowledgeBaseId: id2 })
1632
+ ]).refine(
1633
+ (decision) => decision.documentId === void 0 === (decision.knowledgeBaseId === void 0),
1634
+ {
1635
+ path: ["documentId"],
1636
+ message: "A citation needs both knowledgeBaseId and documentId"
1637
+ }
1638
+ );
1639
+ var dataStoreRecordsDecideOutputSchema = z7.strictObject({ decided: z7.literal(true) });
1640
+ var dataStoreRecordsFlaggedInputSchema = z7.strictObject({
1641
+ table: name.optional(),
1642
+ cursor: z7.string().min(1).optional(),
1643
+ limit: z7.number().int().positive().max(
1644
+ RECORDS_FLAGGED_MAX_ITEMS_PER_PAGE,
1645
+ "At most 10000 items per page (RECORDS_FLAGGED_MAX_ITEMS_PER_PAGE); follow nextCursor"
1646
+ )
1647
+ });
1648
+ var dataStoreRecordFieldSchema = fieldSchema.extend({
1649
+ table: name,
1650
+ // Unresolved keys go to review, without writing a customer row.
1651
+ key: key.nullable(),
1652
+ knowledgeBaseId: id2,
1653
+ documentId: id2,
1654
+ kind: name,
1655
+ documentDate: z7.iso.date().nullable(),
1656
+ extractedAt: z7.iso.datetime({ offset: true }),
1657
+ evidence: recordEvidenceResultSchema,
1658
+ state: z7.enum(RECORD_FIELD_STATES),
1659
+ decidedBy: id2.nullable(),
1660
+ decidedAt: z7.iso.datetime({ offset: true }).nullable()
1661
+ });
1662
+ var dataStoreRecordsFlaggedOutputSchema = z7.strictObject({
1663
+ // A citation is shown only after checking access to its Knowledge Base, even for a
1664
+ // holder of data_store.records. Values/quotes never enter jobs, runs or audit metadata.
1665
+ items: z7.array(
1666
+ dataStoreRecordFieldSchema.extend({
1667
+ reason: z7.enum(["conflict", "not_evidenced", "confirmation_required", "key_unresolved"])
1668
+ })
1669
+ ).max(RECORDS_FLAGGED_MAX_ITEMS_PER_PAGE),
1670
+ nextCursor: z7.string().optional()
1671
+ });
1672
+ var scalarSchemas = {
1673
+ text: z7.string(),
1674
+ integer: z7.number().int(),
1675
+ number: z7.number(),
1676
+ boolean: z7.boolean(),
1677
+ date: z7.iso.date(),
1678
+ timestamp: z7.iso.datetime({ offset: true })
1679
+ };
1680
+ function compatible(column, value) {
1681
+ if (column.generated || column.type === "other") return false;
1682
+ if (value === null) return column.nullable;
1683
+ for (const [type, schema] of Object.entries(scalarSchemas)) {
1684
+ if (column.type === type) return schema.safeParse(value).success;
1685
+ if (column.type === `${type}[]`) return z7.array(schema.nullable()).safeParse(value).success;
1686
+ }
1687
+ return false;
1688
+ }
1689
+ function proposalItemSchemaFor(columns) {
1690
+ const byName = new Map(columns.map((column) => [column.name, column]));
1691
+ return dataStoreRecordProposalItemSchema.superRefine((item, context) => {
1692
+ const seen = /* @__PURE__ */ new Set();
1693
+ item.fields.forEach((field, index) => {
1694
+ const column = byName.get(field.name);
1695
+ if (!column || !compatible(column, field.value) || seen.has(field.name)) {
1696
+ context.addIssue({
1697
+ code: "custom",
1698
+ path: ["fields", index],
1699
+ message: `record_field_unknown: Field '${field.name}' has no writable column of a compatible type, or occurs twice`
1700
+ });
1701
+ }
1702
+ seen.add(field.name);
1703
+ });
1704
+ });
1705
+ }
1706
+ var dataStoreRecordsContracts = {
1707
+ propose: {
1708
+ description: "Propose extracted fields with Knowledge Base/document/page/quote evidence. Validate each whole item against the published table before writing; failures are per item. Send at most 1000 items per call and 1000 fields per item; split larger work into batches. Merge by evidence precedence, then document date; unresolved keys and evidence go to review.",
1709
+ inputSchema: dataStoreRecordsProposeInputSchema,
1710
+ outputSchema: operationBatchResultSchema,
1711
+ itemSchemaFor: proposalItemSchemaFor,
1712
+ effect: "changing",
1713
+ right: "data_store.records",
1714
+ keyLevel: "write",
1715
+ batch: true
1716
+ },
1717
+ decide: {
1718
+ description: "Confirm or correct a field against its evidence, or assign a document to an object key. Decisions are pinned; audit table/field/action/actor only, never the value.",
1719
+ inputSchema: dataStoreRecordsDecideInputSchema,
1720
+ outputSchema: dataStoreRecordsDecideOutputSchema,
1721
+ effect: "changing",
1722
+ right: "data_store.records",
1723
+ keyLevel: "write"
1724
+ },
1725
+ flagged: {
1726
+ description: "Page through fields needing review, up to 10000 per call; pass nextCursor as cursor for the next page. Check Knowledge Base access before showing any document citation; the store right alone does not grant access to source documents.",
1727
+ inputSchema: dataStoreRecordsFlaggedInputSchema,
1728
+ outputSchema: dataStoreRecordsFlaggedOutputSchema,
1729
+ effect: "reading",
1730
+ right: "data_store.records",
1731
+ keyLevel: "read"
1732
+ }
1733
+ };
1734
+
1735
+ // src/usage-limits.ts
1736
+ var MODEL_USAGE_LIMIT_PERIODS = ["day", "month"];
1737
+ var MODEL_USAGE_LIMIT_METRICS = ["modelCallCount", "tokens", "costMicros"];
1738
+ var MODEL_USAGE_LIMIT_SCOPES = ["instance", "user", "system"];
1739
+
1740
+ // src/workflow-text.ts
1741
+ var WORKFLOW_TEXT_FORMAT_MARKDOWN = "markdown";
1742
+ var WORKFLOW_TEXT_MAX_PARTS = 100;
1743
+ var WORKFLOW_MARKDOWN_MAX_ROWS = 100;
1744
+ var WORKFLOW_MARKDOWN_MAX_COLUMNS = 8;
1745
+
1746
+ // src/mail-send.ts
1747
+ import { z as z8 } from "zod";
1748
+ var MAIL_SEND_OPERATION = "mail.send";
1749
+ var MAIL_SENDER_RESOURCE_KIND = "mail_sender";
1750
+ var MAIL_SENDER_USE_ACTION = "mail_sender.use";
1751
+ var MAIL_SENDER_SYSTEM = "system";
1752
+ var MAIL_SENDER_CONNECTION_PREFIX = "connection.";
1753
+ var MAIL_SENDER_SYSTEM_ICON = "system-mail";
1754
+ var MAIL_WORKFLOW_MESSAGE_TEMPLATE = "workflow-message";
1755
+ var MAIL_SEND_MAX_ADDRESSES = 50;
1756
+ var MAIL_SUBJECT_MAX_LENGTH = 200;
1757
+ var MAIL_BODY_MAX_BYTES = 64 * 1024;
1758
+ var MAIL_SENDER_NAME_MAX_LENGTH = 80;
1759
+ var MAIL_ADDRESS_MAX_LENGTH = 254;
1760
+ var MAIL_OUTBOUND_DEFAULT_LIMITS = {
1761
+ perWorkflowPerHour: 200,
1762
+ perInstancePerDay: 1e3
1763
+ };
1764
+ var MAIL_OUTBOUND_FOOTER_MAX_LENGTH = 2e3;
1765
+ var MAIL_AUDIT_MAX_DOMAINS = 10;
1766
+ var MAIL_ATTACHMENTS_MAX_FILES = 10;
1767
+ var MAIL_ATTACHMENTS_MAX_BYTES = 10 * 1024 * 1024;
1768
+ var MAIL_SEND_ERROR_CODES = {
1769
+ recipientNotAllowed: "recipient_not_allowed",
1770
+ noRecipient: "no_recipient",
1771
+ mailRejected: "mail_rejected",
1772
+ workspaceNotAllowed: "workspace_not_allowed"
1773
+ };
1774
+ var MAIL_SEND_REFUSAL_REASONS = [
1775
+ MAIL_SEND_ERROR_CODES.recipientNotAllowed,
1776
+ MAIL_SEND_ERROR_CODES.noRecipient,
1777
+ MAIL_SEND_ERROR_CODES.mailRejected,
1778
+ MAIL_SEND_ERROR_CODES.workspaceNotAllowed
1779
+ ];
1780
+ var mailSendRefusalDetailsSchema = z8.discriminatedUnion("reason", [
1781
+ z8.strictObject({
1782
+ reason: z8.literal(MAIL_SEND_ERROR_CODES.recipientNotAllowed),
1783
+ domain: z8.string().min(1).max(MAIL_ADDRESS_MAX_LENGTH)
1784
+ }),
1785
+ z8.strictObject({ reason: z8.literal(MAIL_SEND_ERROR_CODES.noRecipient) }),
1786
+ z8.strictObject({ reason: z8.literal(MAIL_SEND_ERROR_CODES.workspaceNotAllowed) }),
1787
+ z8.strictObject({
1788
+ reason: z8.literal(MAIL_SEND_ERROR_CODES.mailRejected),
1789
+ providerCode: z8.string().min(1).max(100).optional()
1790
+ })
1791
+ ]);
1792
+ var MAIL_RECIPIENT_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$/u;
1793
+ var principalId = z8.string().regex(MAIL_RECIPIENT_ID_PATTERN);
1794
+ var ONE_LINE_PATTERN = /^[^\u0000-\u001f\u007f\u2028\u2029]*$/u;
1795
+ var mailAddressSchema = z8.email().max(MAIL_ADDRESS_MAX_LENGTH);
1796
+ var MAIL_RECIPIENT_DOMAIN_PATTERN = /^(\*\.)?(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+(?:[a-z]{2,63}|xn--[a-z0-9-]{1,59})$/u;
1797
+ var MAIL_RECIPIENT_DOMAINS_ANY = "*";
1798
+ var mailRecipientDomainSchema = z8.string().max(MAIL_ADDRESS_MAX_LENGTH).refine(
1799
+ (domain) => domain === MAIL_RECIPIENT_DOMAINS_ANY || MAIL_RECIPIENT_DOMAIN_PATTERN.test(domain),
1800
+ { message: "A recipient domain is lowercase, such as kanzlei.de or *.kanzlei.de, or * alone" }
1801
+ );
1802
+ var mailSenderIdSchema = z8.union([
1803
+ z8.literal(MAIL_SENDER_SYSTEM),
1804
+ z8.templateLiteral([MAIL_SENDER_CONNECTION_PREFIX, z8.string().regex(CONNECTION_NAME_PATTERN)])
1805
+ ]).superRefine((sender, context) => {
1806
+ if (sender !== MAIL_SENDER_SYSTEM)
1807
+ context.addIssue({
1808
+ code: "custom",
1809
+ message: "not_supported_yet: a Connection sender arrives with MAIL-M365S; send as system"
1810
+ });
1811
+ });
1812
+ var mailRecipientSchema = z8.union([
1813
+ z8.strictObject({ address: mailAddressSchema }),
1814
+ z8.strictObject({ user: principalId }),
1815
+ z8.strictObject({ workspace: principalId })
1816
+ ]);
1817
+ var recipientEntries = z8.array(
1818
+ z8.union([mailAddressSchema, mailRecipientSchema, z8.looseObject({ email: mailAddressSchema })])
1819
+ ).max(MAIL_SEND_MAX_ADDRESSES);
1820
+ var mailRecipientListSchema = z8.union([mailAddressSchema, recipientEntries.min(1)]);
1821
+ var mailCopyRecipientListSchema = z8.union([mailAddressSchema, recipientEntries]);
1822
+ var mailReplyToSchema = z8.union([
1823
+ mailAddressSchema,
1824
+ z8.strictObject({ address: mailAddressSchema }),
1825
+ z8.strictObject({ user: principalId })
1826
+ ]);
1827
+ var mailSubjectSchema = z8.string().min(1).max(MAIL_SUBJECT_MAX_LENGTH).regex(ONE_LINE_PATTERN, { message: "input_invalid: a subject is one line" }).refine((subject) => subject.trim().length > 0, { message: "input_invalid: a subject has text" });
1828
+ var mailBodySchema = z8.string().max(MAIL_BODY_MAX_BYTES).refine((body) => new TextEncoder().encode(body).byteLength <= MAIL_BODY_MAX_BYTES, {
1829
+ message: `input_invalid: the body exceeds ${MAIL_BODY_MAX_BYTES} bytes`
1830
+ }).meta({ format: WORKFLOW_TEXT_FORMAT_MARKDOWN });
1831
+ var mailSenderNameSchema = z8.string().min(1).max(MAIL_SENDER_NAME_MAX_LENGTH).regex(ONE_LINE_PATTERN, { message: "input_invalid: a sender name is one line" }).refine((name2) => !name2.includes("@"), {
1832
+ message: "input_invalid: a sender name holds no @"
1833
+ });
1834
+ var mailSendInputSchema = z8.strictObject({
1835
+ sender: mailSenderIdSchema.default(MAIL_SENDER_SYSTEM),
1836
+ to: mailRecipientListSchema,
1837
+ cc: mailCopyRecipientListSchema.optional(),
1838
+ bcc: mailCopyRecipientListSchema.optional(),
1839
+ subject: mailSubjectSchema,
1840
+ body: mailBodySchema,
1841
+ senderName: mailSenderNameSchema.optional(),
1842
+ replyTo: mailReplyToSchema.optional(),
1843
+ /** The language of the frame around the body; the instance's default unless set. */
1844
+ locale: z8.enum(localeCodes).optional()
1845
+ });
1846
+ var count2 = z8.number().int().min(0);
1847
+ var recipientCounts = z8.strictObject({ to: count2, cc: count2, bcc: count2 });
1848
+ var mailSendOutputSchema = z8.strictObject({
1849
+ sentAt: z8.iso.datetime({ offset: true }),
1850
+ messageId: z8.string().min(1).max(256).optional(),
1851
+ recipients: recipientCounts,
1852
+ skipped: count2,
1853
+ test: z8.literal(true).optional()
1854
+ });
1855
+ var mailPreviewRecipientSchema = z8.strictObject({
1856
+ kind: z8.enum(["person", "address"]),
1857
+ label: z8.string().min(1).max(MAIL_ADDRESS_MAX_LENGTH)
1858
+ });
1859
+ var mailSendPreviewSchema = z8.strictObject({
1860
+ from: z8.strictObject({ name: z8.string().min(1), address: mailAddressSchema }),
1861
+ replyTo: mailAddressSchema.optional(),
1862
+ to: z8.array(mailPreviewRecipientSchema),
1863
+ cc: z8.array(mailPreviewRecipientSchema),
1864
+ bcc: z8.array(mailPreviewRecipientSchema),
1865
+ skipped: count2,
1866
+ subject: z8.string(),
1867
+ html: z8.string(),
1868
+ text: z8.string()
1869
+ });
1870
+ var mailSendSimulatedOutputSchema = z8.strictObject({
1871
+ simulated: z8.literal(true),
1872
+ preview: mailSendPreviewSchema
1873
+ });
1874
+ var workflowMessageMailParamsSchema = z8.strictObject({
1875
+ subject: mailSubjectSchema,
1876
+ markdown: mailBodySchema,
1877
+ sentBy: z8.discriminatedUnion("kind", [
1878
+ z8.strictObject({ kind: z8.literal("workflow"), workflowName: z8.string().min(1).max(200) }),
1879
+ z8.strictObject({ kind: z8.literal("agent"), onBehalfOf: z8.string().min(1).max(200) })
1880
+ ]),
1881
+ test: z8.strictObject({
1882
+ intendedRecipients: z8.strictObject({
1883
+ to: z8.array(mailPreviewRecipientSchema),
1884
+ cc: z8.array(mailPreviewRecipientSchema),
1885
+ bcc: z8.array(mailPreviewRecipientSchema)
1886
+ })
1887
+ }).optional()
1888
+ });
1889
+ var workflowMailSenderFactSchema = z8.strictObject({
1890
+ sender: z8.string().min(1),
1891
+ title: z8.string().min(1),
1892
+ icon: z8.string().min(1),
1893
+ address: mailAddressSchema,
1894
+ recipientDomains: z8.array(mailRecipientDomainSchema)
1895
+ });
1896
+ var mailSendContract = {
1897
+ name: MAIL_SEND_OPERATION,
1898
+ description: "Send one e-mail as a sender of the instance (system unless set). Recipients are addresses, people of the instance and workspaces; an address outside the instance's recipient domains is refused. The body is Markdown in the instance's frame. A test run previews the mail and sends nothing.",
1899
+ inputSchema: mailSendInputSchema,
1900
+ outputSchema: mailSendOutputSchema,
1901
+ simulatedOutputSchema: mailSendSimulatedOutputSchema,
1902
+ effect: "changing",
1903
+ changeClass: "outward",
1904
+ right: MAIL_SENDER_USE_ACTION,
1905
+ resourceKind: MAIL_SENDER_RESOURCE_KIND,
1906
+ events: { after: "mail.sent", refused: "mail.refused" },
1907
+ errorCodes: MAIL_SEND_ERROR_CODES
1908
+ };
1909
+
1910
+ // src/data-scope.ts
1911
+ import { z as z9 } from "zod";
1912
+ var dataScopeNameSchema = z9.string().regex(/^[a-z][a-z0-9_]{0,62}$/u);
1913
+ var dataScopesSchema = z9.record(
1914
+ dataScopeNameSchema,
1915
+ z9.strictObject({
1916
+ label: z9.string().trim().min(1).max(120),
1917
+ valueType: z9.literal("text")
1918
+ })
1919
+ ).refine(
1920
+ (dimensions) => Object.keys(dimensions).length <= 1,
1921
+ "One data scope dimension is supported"
1922
+ );
1923
+ var scopeAssignmentInputSchema = z9.strictObject({
1924
+ dimension: dataScopeNameSchema,
1925
+ holderKind: z9.enum(["user", "group", "service_principal"]),
1926
+ holderId: z9.string().min(1).max(200).refine((value) => !value.includes("\0"), "NUL is not allowed"),
1927
+ effect: z9.enum(GRANT_EFFECTS),
1928
+ values: z9.union([
1929
+ z9.literal("all"),
1930
+ z9.array(
1931
+ z9.string().min(1).max(200).refine((value) => !value.includes("\0"), "NUL is not allowed")
1932
+ ).max(1e4)
1933
+ ])
1934
+ });
1935
+ var identifier = z9.string().regex(/^[a-z_][a-z0-9_]{0,62}$/u);
1936
+ var scopedTablesSchema = z9.record(
1937
+ identifier,
1938
+ z9.strictObject({
1939
+ scope: z9.record(dataScopeNameSchema, identifier).refine((scope) => Object.keys(scope).length === 1, "A scoped table names one dimension")
1940
+ })
1941
+ );
1942
+
1943
+ // src/feedback-values.ts
1944
+ var FEEDBACK_TEXT_MAX_LENGTH = 4e3;
1945
+ var FEEDBACK_SUMMARY_MAX_LENGTH = 1e3;
1946
+ var FEEDBACK_CATEGORY_MAX_LENGTH = 60;
1947
+ var FEEDBACK_NOTE_MAX_LENGTH = 2e3;
1948
+ var FEEDBACK_SUBJECT_KINDS = ["message"];
1949
+ var FEEDBACK_STATES = ["new", "handled"];
1253
1950
  export {
1254
1951
  ACCESS_SOURCES,
1255
1952
  ACTIONS,
@@ -1257,6 +1954,7 @@ export {
1257
1954
  ADMINISTERED_USER_STATUSES,
1258
1955
  AGENT_AVAILABILITY_MODES,
1259
1956
  AGENT_EDITABLE_FIELDS,
1957
+ AGENT_PREVIEW_SOURCES,
1260
1958
  AGENT_RUN_FAILURE_CATEGORIES,
1261
1959
  AGENT_RUN_STATUSES,
1262
1960
  AGENT_STARTERS_MAX,
@@ -1266,12 +1964,14 @@ export {
1266
1964
  APPROVAL_EXECUTIONS,
1267
1965
  APPROVAL_REQUEST_STATUSES,
1268
1966
  APP_ACTION_CALL_STATUSES,
1967
+ APP_AUDIENCES,
1269
1968
  APP_ERROR_CODES,
1270
1969
  APP_ERROR_STATUS_CODES,
1271
1970
  APP_MODES,
1272
1971
  ARTIFACT_PREVIEW_IMAGE_FORMATS,
1273
1972
  ARTIFACT_PREVIEW_IMAGE_MIME_TYPES,
1274
1973
  ARTIFACT_PREVIEW_STATUSES,
1974
+ ASSET_ACCESS_VERBS,
1275
1975
  ASSET_LIFECYCLES,
1276
1976
  ASSET_NAME_REFUSAL_REASONS,
1277
1977
  ASSET_OWNER_KINDS,
@@ -1318,6 +2018,12 @@ export {
1318
2018
  ENDED_AGENT_RUN_STATUSES,
1319
2019
  ENDED_APPROVAL_EXECUTIONS,
1320
2020
  FAILED_JOB_STATUSES,
2021
+ FEEDBACK_CATEGORY_MAX_LENGTH,
2022
+ FEEDBACK_NOTE_MAX_LENGTH,
2023
+ FEEDBACK_STATES,
2024
+ FEEDBACK_SUBJECT_KINDS,
2025
+ FEEDBACK_SUMMARY_MAX_LENGTH,
2026
+ FEEDBACK_TEXT_MAX_LENGTH,
1321
2027
  FIRST_PARTY_AUTH_SCOPES,
1322
2028
  FOLLOW_UP_MODES,
1323
2029
  FOLLOW_UP_STATUSES,
@@ -1337,6 +2043,7 @@ export {
1337
2043
  KNOWLEDGE_DOCUMENT_FAILURE_CODES,
1338
2044
  KNOWLEDGE_DOCUMENT_STATES,
1339
2045
  KNOWLEDGE_DOCUMENT_WAIT_CODES,
2046
+ KNOWLEDGE_FILE_MAX_BYTES,
1340
2047
  KNOWLEDGE_SEARCH_SIGNALS,
1341
2048
  KNOWLEDGE_SOURCE_FAILURE_CODES,
1342
2049
  KNOWLEDGE_SOURCE_ITEM_FAILURE_CODES,
@@ -1347,15 +2054,37 @@ export {
1347
2054
  KNOWLEDGE_SYNC_RUN_STATES,
1348
2055
  LISTED_DATA_STORE_STATUSES,
1349
2056
  LIVE_JOB_STATUSES,
2057
+ MAIL_ADDRESS_MAX_LENGTH,
2058
+ MAIL_ATTACHMENTS_MAX_BYTES,
2059
+ MAIL_ATTACHMENTS_MAX_FILES,
2060
+ MAIL_AUDIT_MAX_DOMAINS,
2061
+ MAIL_BODY_MAX_BYTES,
2062
+ MAIL_OUTBOUND_DEFAULT_LIMITS,
2063
+ MAIL_OUTBOUND_FOOTER_MAX_LENGTH,
2064
+ MAIL_RECIPIENT_DOMAINS_ANY,
2065
+ MAIL_RECIPIENT_DOMAIN_PATTERN,
2066
+ MAIL_RECIPIENT_ID_PATTERN,
2067
+ MAIL_SENDER_CONNECTION_PREFIX,
2068
+ MAIL_SENDER_NAME_MAX_LENGTH,
2069
+ MAIL_SENDER_RESOURCE_KIND,
2070
+ MAIL_SENDER_SYSTEM,
2071
+ MAIL_SENDER_SYSTEM_ICON,
2072
+ MAIL_SENDER_USE_ACTION,
2073
+ MAIL_SEND_ERROR_CODES,
2074
+ MAIL_SEND_MAX_ADDRESSES,
2075
+ MAIL_SEND_OPERATION,
2076
+ MAIL_SEND_REFUSAL_REASONS,
2077
+ MAIL_SUBJECT_MAX_LENGTH,
2078
+ MAIL_WORKFLOW_MESSAGE_TEMPLATE,
1350
2079
  MANAGED_FILE_STATUSES,
1351
2080
  MESSAGE_FINISH_STATUSES,
1352
2081
  MODEL_PROVIDER_AUTH_MODES,
1353
2082
  MODEL_USAGE_EVENT_STATUSES,
2083
+ MODEL_USAGE_LIMIT_METRICS,
2084
+ MODEL_USAGE_LIMIT_PERIODS,
2085
+ MODEL_USAGE_LIMIT_SCOPES,
1354
2086
  MODEL_USAGE_SOURCES,
1355
2087
  MODEL_USAGE_TIERS,
1356
- NAMESPACE_PREFIX_MAX_LENGTH,
1357
- NAMESPACE_PREFIX_MIN_LENGTH,
1358
- NAMESPACE_PREFIX_PATTERN,
1359
2088
  NOTIFY_CHANNELS,
1360
2089
  OPENAI_COMPATIBLE_APIS,
1361
2090
  OPERATIONS_AUDIENCES,
@@ -1372,8 +2101,18 @@ export {
1372
2101
  PROVIDER_CHECK_ERROR_CLASSES,
1373
2102
  PROVIDER_PORTS,
1374
2103
  PROVIDER_REGIONS,
2104
+ PUBLISHED_DATA_CONSUMER_KINDS,
1375
2105
  READING_POLICY_VALUES,
1376
2106
  REASONING_EFFORTS,
2107
+ RECORDS_FLAGGED_MAX_ITEMS_PER_PAGE,
2108
+ RECORDS_PROPOSE_MAX_FIELDS_PER_ITEM,
2109
+ RECORDS_PROPOSE_MAX_ITEMS_PER_CALL,
2110
+ RECORD_FIELD_FAILURE_CODES,
2111
+ RECORD_FIELD_STATES,
2112
+ ROLE_GRANT_SCOPE_KINDS,
2113
+ ROLE_PENDING_CHANGES,
2114
+ ROLE_PENDING_DECISIONS,
2115
+ SCHEDULED_START_STATES,
1377
2116
  SERVICE_PRINCIPAL_PERMISSIONS,
1378
2117
  SERVICE_PRINCIPAL_STATUSES,
1379
2118
  SKILL_CHANGE_TYPES,
@@ -1404,14 +2143,26 @@ export {
1404
2143
  USER_STATUSES,
1405
2144
  WAITING_OPERATION_RUN_STATUSES,
1406
2145
  WEB_SOURCE_PROVIDERS,
2146
+ WORKFLOW_DATASET_DOWNLOAD_FORMATS,
2147
+ WORKFLOW_DATASET_STATES,
1407
2148
  WORKFLOW_ENDED_STATUSES,
2149
+ WORKFLOW_KINDS,
2150
+ WORKFLOW_MARKDOWN_MAX_COLUMNS,
2151
+ WORKFLOW_MARKDOWN_MAX_ROWS,
1408
2152
  WORKFLOW_NAME_PATTERN,
1409
2153
  WORKFLOW_NAME_RULE,
1410
2154
  WORKFLOW_RESERVED_STEP_TYPES,
2155
+ WORKFLOW_RIGHTS_REVISIONS,
2156
+ WORKFLOW_RIGHT_NEEDED_FOR,
2157
+ WORKFLOW_RIGHT_REFUSALS,
2158
+ WORKFLOW_RUN_ACCOUNT_STATUSES,
1411
2159
  WORKFLOW_RUN_MODES,
1412
2160
  WORKFLOW_RUN_STATUSES,
1413
2161
  WORKFLOW_STEP_RUN_STATUSES,
2162
+ WORKFLOW_STEP_SOURCE_KINDS,
1414
2163
  WORKFLOW_STEP_TYPES,
2164
+ WORKFLOW_TEXT_FORMAT_MARKDOWN,
2165
+ WORKFLOW_TEXT_MAX_PARTS,
1415
2166
  WORKFLOW_TRIGGER_KINDS,
1416
2167
  WORKSPACE_ACCENT_COLORS,
1417
2168
  WORKSPACE_ACCESS_STATES,
@@ -1419,16 +2170,41 @@ export {
1419
2170
  WORKSPACE_FILE_KINDS,
1420
2171
  WORKSPACE_MEMBERSHIP_ROLES,
1421
2172
  WORKSPACE_SECTIONS,
2173
+ WORKSPACE_USE_ASSET_KINDS,
1422
2174
  WORKSPACE_VISIBILITIES,
1423
2175
  YAML_DATA_MAX_VALUES,
1424
2176
  YamlDataError,
1425
2177
  agentConfigSchema,
1426
2178
  checkStorableTexts,
2179
+ dataScopeNameSchema,
2180
+ dataScopesSchema,
2181
+ dataStoreRecordFieldSchema,
2182
+ dataStoreRecordProposalItemSchema,
2183
+ dataStoreRecordsContracts,
2184
+ dataStoreRecordsDecideInputSchema,
2185
+ dataStoreRecordsDecideOutputSchema,
2186
+ dataStoreRecordsFlaggedInputSchema,
2187
+ dataStoreRecordsFlaggedOutputSchema,
2188
+ dataStoreRecordsProposeInputSchema,
2189
+ dataStoreRecordsRuleSchema,
1427
2190
  deriveSkillTitle,
1428
2191
  formatSkillMarkdown,
1429
2192
  isStorableText,
2193
+ knowledgeExtractFieldsInputSchema,
2194
+ knowledgeExtractFieldsOutputSchema,
2195
+ knowledgeFieldValueSchema,
2196
+ knowledgeIngestFetchSchema,
2197
+ knowledgeIngestInputSchema,
2198
+ knowledgeIngestItemSchema,
2199
+ knowledgeIngestOutputSchema,
1430
2200
  knowledgeLocateInputSchema,
1431
2201
  knowledgeLocateOutputSchema,
2202
+ knowledgePendingInputSchema,
2203
+ knowledgePendingOutputSchema,
2204
+ knowledgePendingRowSchema,
2205
+ knowledgeProcessorOutputSchema,
2206
+ knowledgePutProcessedInputSchema,
2207
+ knowledgeRecordsRefusalSchema,
1432
2208
  knowledgeRetryInputSchema,
1433
2209
  knowledgeRetryOutputSchema,
1434
2210
  knowledgeSourceItemsInputSchema,
@@ -1436,11 +2212,38 @@ export {
1436
2212
  knowledgeSourcesOutputSchema,
1437
2213
  knowledgeSyncInputSchema,
1438
2214
  knowledgeSyncResultSchema,
2215
+ knowledgeWithdrawInputSchema,
2216
+ knowledgeWithdrawOutputSchema,
2217
+ knowledgeWorkflowSourceSchema,
2218
+ knowledgeWriteContracts,
1439
2219
  loadYamlData,
1440
2220
  localeCodes,
1441
2221
  localizedStringSchema,
2222
+ mailAddressSchema,
2223
+ mailBodySchema,
2224
+ mailCopyRecipientListSchema,
2225
+ mailPreviewRecipientSchema,
2226
+ mailRecipientDomainSchema,
2227
+ mailRecipientListSchema,
2228
+ mailRecipientSchema,
2229
+ mailReplyToSchema,
2230
+ mailSendContract,
2231
+ mailSendInputSchema,
2232
+ mailSendOutputSchema,
2233
+ mailSendPreviewSchema,
2234
+ mailSendRefusalDetailsSchema,
2235
+ mailSendSimulatedOutputSchema,
2236
+ mailSenderIdSchema,
2237
+ mailSenderNameSchema,
2238
+ mailSubjectSchema,
2239
+ operationBatchFailureSchema,
2240
+ operationBatchResultSchema,
2241
+ operationPagingSchema,
1442
2242
  parseSkillMarkdown,
1443
2243
  readYamlData,
2244
+ recordEvidenceResultSchema,
2245
+ scopeAssignmentInputSchema,
2246
+ scopedTablesSchema,
1444
2247
  skillConfigSchema,
1445
2248
  skillFileEntrySchema,
1446
2249
  skillFileFrontmatterSchema,
@@ -1451,6 +2254,10 @@ export {
1451
2254
  skillResourcePathSchema,
1452
2255
  skillStarterSchema,
1453
2256
  workflowConfigSchema,
2257
+ workflowDataFlowsSchema,
2258
+ workflowDatasetReferenceSchema,
2259
+ workflowMailSenderFactSchema,
2260
+ workflowMessageMailParamsSchema,
1454
2261
  yamlValueIssue,
1455
2262
  yamlValueIssueSentence
1456
2263
  };