@work-shape/catalyst-asset-schemas 0.8.0-rc.3 → 0.8.0-rc.5
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.d.ts +1776 -16
- package/dist/index.js +990 -33
- 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", "
|
|
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
|
|
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,11 +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
|
];
|
|
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"];
|
|
650
704
|
|
|
651
705
|
// src/schemas.ts
|
|
652
706
|
import { z } from "zod";
|
|
@@ -806,12 +860,12 @@ var skillConfigObjectSchema = z.object({
|
|
|
806
860
|
icon: z.string().min(1).optional()
|
|
807
861
|
});
|
|
808
862
|
var skillConfigSchema = skillConfigObjectSchema.superRefine((skill, context) => {
|
|
809
|
-
for (const
|
|
810
|
-
if (skill.frontmatter && Object.hasOwn(skill.frontmatter,
|
|
863
|
+
for (const key2 of SKILL_FRONTMATTER_FIELDS) {
|
|
864
|
+
if (skill.frontmatter && Object.hasOwn(skill.frontmatter, key2)) {
|
|
811
865
|
context.addIssue({
|
|
812
866
|
code: "custom",
|
|
813
|
-
path: ["frontmatter",
|
|
814
|
-
message: `Skill frontmatter cannot hold '${
|
|
867
|
+
path: ["frontmatter", key2],
|
|
868
|
+
message: `Skill frontmatter cannot hold '${key2}': it is a field of the skill itself`
|
|
815
869
|
});
|
|
816
870
|
}
|
|
817
871
|
}
|
|
@@ -844,7 +898,7 @@ var welcomeSubtitleSchema = z.union([
|
|
|
844
898
|
message: "At least one localized value is required"
|
|
845
899
|
})
|
|
846
900
|
]);
|
|
847
|
-
var agentNameSchema = z.string().min(1).refine((
|
|
901
|
+
var agentNameSchema = z.string().min(1).refine((name2) => name2 !== "." && name2 !== "..", {
|
|
848
902
|
message: "Agent name must not be '.' or '..'"
|
|
849
903
|
});
|
|
850
904
|
var agentConfigSchema = z.object({
|
|
@@ -898,8 +952,8 @@ import yaml from "js-yaml";
|
|
|
898
952
|
// src/yaml-data.ts
|
|
899
953
|
import { JSON_SCHEMA, YAMLException, load } from "js-yaml";
|
|
900
954
|
var YAML_DATA_MAX_VALUES = 1e5;
|
|
901
|
-
function isStorableText(
|
|
902
|
-
return !
|
|
955
|
+
function isStorableText(text2) {
|
|
956
|
+
return !text2.includes("\0") && !/\p{Surrogate}/u.test(text2);
|
|
903
957
|
}
|
|
904
958
|
function checkStorableTexts(value, maxValues) {
|
|
905
959
|
const pending = [value];
|
|
@@ -911,15 +965,15 @@ function checkStorableTexts(value, maxValues) {
|
|
|
911
965
|
} else if (Array.isArray(next)) {
|
|
912
966
|
for (const entry of next) pending.push(entry);
|
|
913
967
|
} else if (typeof next === "object" && next !== null) {
|
|
914
|
-
for (const [
|
|
915
|
-
if (!isStorableText(
|
|
968
|
+
for (const [key2, entry] of Object.entries(next)) {
|
|
969
|
+
if (!isStorableText(key2)) return "unstorable";
|
|
916
970
|
pending.push(entry);
|
|
917
971
|
}
|
|
918
972
|
}
|
|
919
973
|
}
|
|
920
974
|
return "storable";
|
|
921
975
|
}
|
|
922
|
-
function readYamlData(
|
|
976
|
+
function readYamlData(text2, file, options = {}) {
|
|
923
977
|
const fail = (code, message, line, column) => ({
|
|
924
978
|
ok: false,
|
|
925
979
|
issue: {
|
|
@@ -931,7 +985,7 @@ function readYamlData(text, file, options = {}) {
|
|
|
931
985
|
});
|
|
932
986
|
let value;
|
|
933
987
|
try {
|
|
934
|
-
value = load(
|
|
988
|
+
value = load(text2, { schema: JSON_SCHEMA, filename: file });
|
|
935
989
|
} catch (error) {
|
|
936
990
|
if (error instanceof YAMLException) {
|
|
937
991
|
const markLine = error.mark?.line;
|
|
@@ -968,8 +1022,8 @@ var YamlDataError = class extends Error {
|
|
|
968
1022
|
this.issue = issue;
|
|
969
1023
|
}
|
|
970
1024
|
};
|
|
971
|
-
function loadYamlData(
|
|
972
|
-
const read = readYamlData(
|
|
1025
|
+
function loadYamlData(text2, file) {
|
|
1026
|
+
const read = readYamlData(text2, file);
|
|
973
1027
|
if (!read.ok) throw new YamlDataError(read.issue);
|
|
974
1028
|
return read.value;
|
|
975
1029
|
}
|
|
@@ -1006,7 +1060,7 @@ function parseSkillMarkdown(contents, skillFile, skillPath) {
|
|
|
1006
1060
|
}
|
|
1007
1061
|
const content = (match[2] ?? "").trim();
|
|
1008
1062
|
const { name: named, title, description, summary, starters, ...others } = frontmatter.data;
|
|
1009
|
-
const
|
|
1063
|
+
const name2 = named ?? deriveSkillName(skillPath);
|
|
1010
1064
|
const json = JSON.stringify(others);
|
|
1011
1065
|
if (json.length > SKILL_FRONTMATTER_MAX_BYTES) {
|
|
1012
1066
|
throw new SkillMarkdownError(
|
|
@@ -1017,8 +1071,8 @@ function parseSkillMarkdown(contents, skillFile, skillPath) {
|
|
|
1017
1071
|
}
|
|
1018
1072
|
const kept = JSON.parse(json);
|
|
1019
1073
|
return {
|
|
1020
|
-
name,
|
|
1021
|
-
title: title ?? deriveSkillTitle(
|
|
1074
|
+
name: name2,
|
|
1075
|
+
title: title ?? deriveSkillTitle(name2, content),
|
|
1022
1076
|
description,
|
|
1023
1077
|
...summary === void 0 ? {} : { summary },
|
|
1024
1078
|
...starters === void 0 ? {} : { starters },
|
|
@@ -1026,8 +1080,8 @@ function parseSkillMarkdown(contents, skillFile, skillPath) {
|
|
|
1026
1080
|
...Object.keys(others).length > 0 ? { frontmatter: kept } : {}
|
|
1027
1081
|
};
|
|
1028
1082
|
}
|
|
1029
|
-
function loadFrontmatter(
|
|
1030
|
-
const read = readYamlData(
|
|
1083
|
+
function loadFrontmatter(text2, skillFile) {
|
|
1084
|
+
const read = readYamlData(text2, skillFile, { refuseAliases: true });
|
|
1031
1085
|
if (read.ok) return read.value;
|
|
1032
1086
|
const { issue } = read;
|
|
1033
1087
|
if (issue.code === "yaml_alias") {
|
|
@@ -1054,7 +1108,7 @@ function loadFrontmatter(text, skillFile) {
|
|
|
1054
1108
|
{ issues: [{ message: issue.message, path: [], line, column }] }
|
|
1055
1109
|
);
|
|
1056
1110
|
}
|
|
1057
|
-
function deriveSkillTitle(
|
|
1111
|
+
function deriveSkillTitle(name2, content) {
|
|
1058
1112
|
let fence;
|
|
1059
1113
|
for (const line of content.split(/\r?\n/u)) {
|
|
1060
1114
|
const marker = /^\s{0,3}(`{3,}|~{3,})/u.exec(line)?.[1];
|
|
@@ -1065,8 +1119,8 @@ function deriveSkillTitle(name, content) {
|
|
|
1065
1119
|
const heading = fence === void 0 ? /^ {0,3}#{1,6}\s+(.+?)(?:\s+#+)?\s*$/u.exec(line) : null;
|
|
1066
1120
|
if (heading?.[1]) return heading[1];
|
|
1067
1121
|
}
|
|
1068
|
-
const words =
|
|
1069
|
-
return words === "" ?
|
|
1122
|
+
const words = name2.replace(/[-_]+/gu, " ").trim();
|
|
1123
|
+
return words === "" ? name2 : words.charAt(0).toUpperCase() + words.slice(1);
|
|
1070
1124
|
}
|
|
1071
1125
|
function formatSkillMarkdown(skill) {
|
|
1072
1126
|
const content = skill.content.trim();
|
|
@@ -1111,6 +1165,788 @@ function withoutExtension(filename) {
|
|
|
1111
1165
|
const dot = filename.lastIndexOf(".");
|
|
1112
1166
|
return dot > 0 ? filename.slice(0, dot) : filename;
|
|
1113
1167
|
}
|
|
1168
|
+
|
|
1169
|
+
// src/knowledge-write.ts
|
|
1170
|
+
import { z as z3 } from "zod";
|
|
1171
|
+
|
|
1172
|
+
// src/operation-batch.ts
|
|
1173
|
+
import { z as z2 } from "zod";
|
|
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({
|
|
1397
|
+
discovered: countSchema,
|
|
1398
|
+
added: countSchema,
|
|
1399
|
+
changed: countSchema,
|
|
1400
|
+
moved: countSchema,
|
|
1401
|
+
withdrawn: countSchema,
|
|
1402
|
+
failed: countSchema,
|
|
1403
|
+
skipped: countSchema
|
|
1404
|
+
});
|
|
1405
|
+
var knowledgeSyncInputSchema = z4.strictObject({
|
|
1406
|
+
/** The `id` of the source in the definition. */
|
|
1407
|
+
source: sourceIdSchema,
|
|
1408
|
+
/** `changes` unless `full`. The initial import is started by publish, not by this call. */
|
|
1409
|
+
mode: z4.enum(["changes", "full"]).optional()
|
|
1410
|
+
});
|
|
1411
|
+
var knowledgeSyncResultSchema = z4.strictObject({
|
|
1412
|
+
syncRunId: z4.string(),
|
|
1413
|
+
source: z4.string(),
|
|
1414
|
+
mode: z4.enum(KNOWLEDGE_SYNC_MODES),
|
|
1415
|
+
/** Why a run is of another mode than asked, such as a cursor the source refused. */
|
|
1416
|
+
reason: z4.enum(["cursor_expired"]).optional(),
|
|
1417
|
+
state: z4.enum(KNOWLEDGE_SYNC_RUN_STATES),
|
|
1418
|
+
counts: countsSchema,
|
|
1419
|
+
bytesFetched: z4.number().int().min(0),
|
|
1420
|
+
/** Why the whole sync failed, for a run in state `failed`. */
|
|
1421
|
+
failureCode: z4.enum(KNOWLEDGE_SOURCE_FAILURE_CODES).optional(),
|
|
1422
|
+
startedAt: z4.string(),
|
|
1423
|
+
endedAt: z4.string().optional()
|
|
1424
|
+
});
|
|
1425
|
+
var KNOWLEDGE_SOURCE_ITEM_SHOWN_STATES = [
|
|
1426
|
+
"discovered",
|
|
1427
|
+
"fetched",
|
|
1428
|
+
"indexed",
|
|
1429
|
+
"failed",
|
|
1430
|
+
"withdrawn"
|
|
1431
|
+
];
|
|
1432
|
+
var itemFailureCodeSchema = z4.union([
|
|
1433
|
+
z4.enum(KNOWLEDGE_SOURCE_ITEM_FAILURE_CODES),
|
|
1434
|
+
z4.enum(KNOWLEDGE_DOCUMENT_FAILURE_CODES)
|
|
1435
|
+
]);
|
|
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
|
+
])
|
|
1474
|
+
)
|
|
1475
|
+
});
|
|
1476
|
+
var knowledgeSourceItemsInputSchema = z4.strictObject({
|
|
1477
|
+
source: sourceIdSchema,
|
|
1478
|
+
state: z4.enum(KNOWLEDGE_SOURCE_ITEM_SHOWN_STATES).optional(),
|
|
1479
|
+
failureCode: itemFailureCodeSchema.optional(),
|
|
1480
|
+
/** Items per page: 50 by default, at most 200. */
|
|
1481
|
+
limit: z4.coerce.number().int().min(1).max(200).optional(),
|
|
1482
|
+
cursor: z4.string().min(1).max(1e3).optional()
|
|
1483
|
+
});
|
|
1484
|
+
var knowledgeSourceItemsOutputSchema = z4.strictObject({
|
|
1485
|
+
/** Newest change first. */
|
|
1486
|
+
items: z4.array(
|
|
1487
|
+
z4.strictObject({
|
|
1488
|
+
/** The row in `source_items`: what `retry` and `locate` name. */
|
|
1489
|
+
id: z4.string(),
|
|
1490
|
+
/** The id of the item at the source. */
|
|
1491
|
+
itemId: z4.string(),
|
|
1492
|
+
name: z4.string(),
|
|
1493
|
+
path: z4.string(),
|
|
1494
|
+
state: z4.enum(KNOWLEDGE_SOURCE_ITEM_SHOWN_STATES),
|
|
1495
|
+
failureCode: itemFailureCodeSchema.optional(),
|
|
1496
|
+
documentId: z4.string().optional(),
|
|
1497
|
+
originLink: z4.string().optional(),
|
|
1498
|
+
changedAt: z4.string()
|
|
1499
|
+
})
|
|
1500
|
+
),
|
|
1501
|
+
nextCursor: z4.string().optional()
|
|
1502
|
+
});
|
|
1503
|
+
var RETRY_MAX = 100;
|
|
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({
|
|
1507
|
+
source: sourceIdSchema,
|
|
1508
|
+
sourceItemIds: z4.array(z4.string().min(1).max(200)).min(1).max(RETRY_MAX)
|
|
1509
|
+
}),
|
|
1510
|
+
z4.strictObject({ source: sourceIdSchema, failureCode: itemFailureCodeSchema }),
|
|
1511
|
+
z4.strictObject({ source: sourceIdSchema, all: z4.literal(true) })
|
|
1512
|
+
]);
|
|
1513
|
+
var knowledgeRetryOutputSchema = z4.strictObject({
|
|
1514
|
+
/** For a retry by document ids: each named document, with its state after the retry. */
|
|
1515
|
+
documents: z4.array(z4.strictObject({ id: z4.string(), state: z4.enum(KNOWLEDGE_DOCUMENT_STATES) })).optional(),
|
|
1516
|
+
/** How many contents or items were queued again. */
|
|
1517
|
+
queued: z4.number().int()
|
|
1518
|
+
});
|
|
1519
|
+
var knowledgeLocateInputSchema = z4.strictObject({
|
|
1520
|
+
/** The row in `source_items`. */
|
|
1521
|
+
sourceItemId: z4.string().min(1).max(200)
|
|
1522
|
+
});
|
|
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()
|
|
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"];
|
|
1114
1950
|
export {
|
|
1115
1951
|
ACCESS_SOURCES,
|
|
1116
1952
|
ACTIONS,
|
|
@@ -1118,6 +1954,7 @@ export {
|
|
|
1118
1954
|
ADMINISTERED_USER_STATUSES,
|
|
1119
1955
|
AGENT_AVAILABILITY_MODES,
|
|
1120
1956
|
AGENT_EDITABLE_FIELDS,
|
|
1957
|
+
AGENT_PREVIEW_SOURCES,
|
|
1121
1958
|
AGENT_RUN_FAILURE_CATEGORIES,
|
|
1122
1959
|
AGENT_RUN_STATUSES,
|
|
1123
1960
|
AGENT_STARTERS_MAX,
|
|
@@ -1127,12 +1964,14 @@ export {
|
|
|
1127
1964
|
APPROVAL_EXECUTIONS,
|
|
1128
1965
|
APPROVAL_REQUEST_STATUSES,
|
|
1129
1966
|
APP_ACTION_CALL_STATUSES,
|
|
1967
|
+
APP_AUDIENCES,
|
|
1130
1968
|
APP_ERROR_CODES,
|
|
1131
1969
|
APP_ERROR_STATUS_CODES,
|
|
1132
1970
|
APP_MODES,
|
|
1133
1971
|
ARTIFACT_PREVIEW_IMAGE_FORMATS,
|
|
1134
1972
|
ARTIFACT_PREVIEW_IMAGE_MIME_TYPES,
|
|
1135
1973
|
ARTIFACT_PREVIEW_STATUSES,
|
|
1974
|
+
ASSET_ACCESS_VERBS,
|
|
1136
1975
|
ASSET_LIFECYCLES,
|
|
1137
1976
|
ASSET_NAME_REFUSAL_REASONS,
|
|
1138
1977
|
ASSET_OWNER_KINDS,
|
|
@@ -1179,6 +2018,12 @@ export {
|
|
|
1179
2018
|
ENDED_AGENT_RUN_STATUSES,
|
|
1180
2019
|
ENDED_APPROVAL_EXECUTIONS,
|
|
1181
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,
|
|
1182
2027
|
FIRST_PARTY_AUTH_SCOPES,
|
|
1183
2028
|
FOLLOW_UP_MODES,
|
|
1184
2029
|
FOLLOW_UP_STATUSES,
|
|
@@ -1198,23 +2043,48 @@ export {
|
|
|
1198
2043
|
KNOWLEDGE_DOCUMENT_FAILURE_CODES,
|
|
1199
2044
|
KNOWLEDGE_DOCUMENT_STATES,
|
|
1200
2045
|
KNOWLEDGE_DOCUMENT_WAIT_CODES,
|
|
2046
|
+
KNOWLEDGE_FILE_MAX_BYTES,
|
|
1201
2047
|
KNOWLEDGE_SEARCH_SIGNALS,
|
|
1202
2048
|
KNOWLEDGE_SOURCE_FAILURE_CODES,
|
|
1203
2049
|
KNOWLEDGE_SOURCE_ITEM_FAILURE_CODES,
|
|
2050
|
+
KNOWLEDGE_SOURCE_ITEM_SHOWN_STATES,
|
|
1204
2051
|
KNOWLEDGE_SOURCE_ITEM_STATES,
|
|
1205
2052
|
KNOWLEDGE_SYNC_COUNTS,
|
|
1206
2053
|
KNOWLEDGE_SYNC_MODES,
|
|
1207
2054
|
KNOWLEDGE_SYNC_RUN_STATES,
|
|
1208
2055
|
LISTED_DATA_STORE_STATUSES,
|
|
1209
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,
|
|
2079
|
+
MANAGED_FILE_STATUSES,
|
|
1210
2080
|
MESSAGE_FINISH_STATUSES,
|
|
1211
2081
|
MODEL_PROVIDER_AUTH_MODES,
|
|
1212
2082
|
MODEL_USAGE_EVENT_STATUSES,
|
|
2083
|
+
MODEL_USAGE_LIMIT_METRICS,
|
|
2084
|
+
MODEL_USAGE_LIMIT_PERIODS,
|
|
2085
|
+
MODEL_USAGE_LIMIT_SCOPES,
|
|
1213
2086
|
MODEL_USAGE_SOURCES,
|
|
1214
2087
|
MODEL_USAGE_TIERS,
|
|
1215
|
-
NAMESPACE_PREFIX_MAX_LENGTH,
|
|
1216
|
-
NAMESPACE_PREFIX_MIN_LENGTH,
|
|
1217
|
-
NAMESPACE_PREFIX_PATTERN,
|
|
1218
2088
|
NOTIFY_CHANNELS,
|
|
1219
2089
|
OPENAI_COMPATIBLE_APIS,
|
|
1220
2090
|
OPERATIONS_AUDIENCES,
|
|
@@ -1231,8 +2101,18 @@ export {
|
|
|
1231
2101
|
PROVIDER_CHECK_ERROR_CLASSES,
|
|
1232
2102
|
PROVIDER_PORTS,
|
|
1233
2103
|
PROVIDER_REGIONS,
|
|
2104
|
+
PUBLISHED_DATA_CONSUMER_KINDS,
|
|
1234
2105
|
READING_POLICY_VALUES,
|
|
1235
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,
|
|
1236
2116
|
SERVICE_PRINCIPAL_PERMISSIONS,
|
|
1237
2117
|
SERVICE_PRINCIPAL_STATUSES,
|
|
1238
2118
|
SKILL_CHANGE_TYPES,
|
|
@@ -1263,14 +2143,26 @@ export {
|
|
|
1263
2143
|
USER_STATUSES,
|
|
1264
2144
|
WAITING_OPERATION_RUN_STATUSES,
|
|
1265
2145
|
WEB_SOURCE_PROVIDERS,
|
|
2146
|
+
WORKFLOW_DATASET_DOWNLOAD_FORMATS,
|
|
2147
|
+
WORKFLOW_DATASET_STATES,
|
|
1266
2148
|
WORKFLOW_ENDED_STATUSES,
|
|
2149
|
+
WORKFLOW_KINDS,
|
|
2150
|
+
WORKFLOW_MARKDOWN_MAX_COLUMNS,
|
|
2151
|
+
WORKFLOW_MARKDOWN_MAX_ROWS,
|
|
1267
2152
|
WORKFLOW_NAME_PATTERN,
|
|
1268
2153
|
WORKFLOW_NAME_RULE,
|
|
1269
2154
|
WORKFLOW_RESERVED_STEP_TYPES,
|
|
2155
|
+
WORKFLOW_RIGHTS_REVISIONS,
|
|
2156
|
+
WORKFLOW_RIGHT_NEEDED_FOR,
|
|
2157
|
+
WORKFLOW_RIGHT_REFUSALS,
|
|
2158
|
+
WORKFLOW_RUN_ACCOUNT_STATUSES,
|
|
1270
2159
|
WORKFLOW_RUN_MODES,
|
|
1271
2160
|
WORKFLOW_RUN_STATUSES,
|
|
1272
2161
|
WORKFLOW_STEP_RUN_STATUSES,
|
|
2162
|
+
WORKFLOW_STEP_SOURCE_KINDS,
|
|
1273
2163
|
WORKFLOW_STEP_TYPES,
|
|
2164
|
+
WORKFLOW_TEXT_FORMAT_MARKDOWN,
|
|
2165
|
+
WORKFLOW_TEXT_MAX_PARTS,
|
|
1274
2166
|
WORKFLOW_TRIGGER_KINDS,
|
|
1275
2167
|
WORKSPACE_ACCENT_COLORS,
|
|
1276
2168
|
WORKSPACE_ACCESS_STATES,
|
|
@@ -1278,19 +2170,80 @@ export {
|
|
|
1278
2170
|
WORKSPACE_FILE_KINDS,
|
|
1279
2171
|
WORKSPACE_MEMBERSHIP_ROLES,
|
|
1280
2172
|
WORKSPACE_SECTIONS,
|
|
2173
|
+
WORKSPACE_USE_ASSET_KINDS,
|
|
1281
2174
|
WORKSPACE_VISIBILITIES,
|
|
1282
2175
|
YAML_DATA_MAX_VALUES,
|
|
1283
2176
|
YamlDataError,
|
|
1284
2177
|
agentConfigSchema,
|
|
1285
2178
|
checkStorableTexts,
|
|
2179
|
+
dataScopeNameSchema,
|
|
2180
|
+
dataScopesSchema,
|
|
2181
|
+
dataStoreRecordFieldSchema,
|
|
2182
|
+
dataStoreRecordProposalItemSchema,
|
|
2183
|
+
dataStoreRecordsContracts,
|
|
2184
|
+
dataStoreRecordsDecideInputSchema,
|
|
2185
|
+
dataStoreRecordsDecideOutputSchema,
|
|
2186
|
+
dataStoreRecordsFlaggedInputSchema,
|
|
2187
|
+
dataStoreRecordsFlaggedOutputSchema,
|
|
2188
|
+
dataStoreRecordsProposeInputSchema,
|
|
2189
|
+
dataStoreRecordsRuleSchema,
|
|
1286
2190
|
deriveSkillTitle,
|
|
1287
2191
|
formatSkillMarkdown,
|
|
1288
2192
|
isStorableText,
|
|
2193
|
+
knowledgeExtractFieldsInputSchema,
|
|
2194
|
+
knowledgeExtractFieldsOutputSchema,
|
|
2195
|
+
knowledgeFieldValueSchema,
|
|
2196
|
+
knowledgeIngestFetchSchema,
|
|
2197
|
+
knowledgeIngestInputSchema,
|
|
2198
|
+
knowledgeIngestItemSchema,
|
|
2199
|
+
knowledgeIngestOutputSchema,
|
|
2200
|
+
knowledgeLocateInputSchema,
|
|
2201
|
+
knowledgeLocateOutputSchema,
|
|
2202
|
+
knowledgePendingInputSchema,
|
|
2203
|
+
knowledgePendingOutputSchema,
|
|
2204
|
+
knowledgePendingRowSchema,
|
|
2205
|
+
knowledgeProcessorOutputSchema,
|
|
2206
|
+
knowledgePutProcessedInputSchema,
|
|
2207
|
+
knowledgeRecordsRefusalSchema,
|
|
2208
|
+
knowledgeRetryInputSchema,
|
|
2209
|
+
knowledgeRetryOutputSchema,
|
|
2210
|
+
knowledgeSourceItemsInputSchema,
|
|
2211
|
+
knowledgeSourceItemsOutputSchema,
|
|
2212
|
+
knowledgeSourcesOutputSchema,
|
|
2213
|
+
knowledgeSyncInputSchema,
|
|
2214
|
+
knowledgeSyncResultSchema,
|
|
2215
|
+
knowledgeWithdrawInputSchema,
|
|
2216
|
+
knowledgeWithdrawOutputSchema,
|
|
2217
|
+
knowledgeWorkflowSourceSchema,
|
|
2218
|
+
knowledgeWriteContracts,
|
|
1289
2219
|
loadYamlData,
|
|
1290
2220
|
localeCodes,
|
|
1291
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,
|
|
1292
2242
|
parseSkillMarkdown,
|
|
1293
2243
|
readYamlData,
|
|
2244
|
+
recordEvidenceResultSchema,
|
|
2245
|
+
scopeAssignmentInputSchema,
|
|
2246
|
+
scopedTablesSchema,
|
|
1294
2247
|
skillConfigSchema,
|
|
1295
2248
|
skillFileEntrySchema,
|
|
1296
2249
|
skillFileFrontmatterSchema,
|
|
@@ -1301,6 +2254,10 @@ export {
|
|
|
1301
2254
|
skillResourcePathSchema,
|
|
1302
2255
|
skillStarterSchema,
|
|
1303
2256
|
workflowConfigSchema,
|
|
2257
|
+
workflowDataFlowsSchema,
|
|
2258
|
+
workflowDatasetReferenceSchema,
|
|
2259
|
+
workflowMailSenderFactSchema,
|
|
2260
|
+
workflowMessageMailParamsSchema,
|
|
1304
2261
|
yamlValueIssue,
|
|
1305
2262
|
yamlValueIssueSentence
|
|
1306
2263
|
};
|