@blokjs/shared 2.1.0 → 2.2.0
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/AgentSessionContracts.d.ts +316 -0
- package/dist/AgentSessionContracts.js +331 -0
- package/dist/BlokError.d.ts +23 -0
- package/dist/BlokError.js +65 -0
- package/dist/CapabilityContracts.d.ts +91 -0
- package/dist/CapabilityContracts.js +104 -0
- package/dist/CapabilityManifest.d.ts +67 -0
- package/dist/CapabilityManifest.js +172 -0
- package/dist/EnforcementContracts.d.ts +61 -0
- package/dist/EnforcementContracts.js +17 -0
- package/dist/EnforcementProfileContracts.d.ts +36 -0
- package/dist/EnforcementProfileContracts.js +55 -0
- package/dist/EvidenceContracts.d.ts +884 -0
- package/dist/EvidenceContracts.js +237 -0
- package/dist/GitCapabilityContracts.d.ts +103 -0
- package/dist/GitCapabilityContracts.js +222 -0
- package/dist/GlobalLogger.d.ts +2 -0
- package/dist/GlobalLogger.js +4 -0
- package/dist/GraphContracts.d.ts +1643 -0
- package/dist/GraphContracts.js +333 -0
- package/dist/InteractionContracts.d.ts +76 -0
- package/dist/InteractionContracts.js +218 -0
- package/dist/JoinContracts.d.ts +593 -0
- package/dist/JoinContracts.js +329 -0
- package/dist/NodeBase.d.ts +20 -0
- package/dist/NodeBase.js +57 -6
- package/dist/PermissionAlgebra.d.ts +51 -0
- package/dist/PermissionAlgebra.js +125 -0
- package/dist/PolicyContracts.d.ts +184 -0
- package/dist/PolicyContracts.js +1 -0
- package/dist/ProcessCapabilityContracts.d.ts +146 -0
- package/dist/ProcessCapabilityContracts.js +263 -0
- package/dist/RuntimeContracts.d.ts +125 -0
- package/dist/RuntimeContracts.js +108 -0
- package/dist/SecretContracts.d.ts +43 -0
- package/dist/SecretContracts.js +1 -0
- package/dist/WasiComponentContracts.d.ts +582 -0
- package/dist/WasiComponentContracts.js +192 -0
- package/dist/WorkflowBindingContracts.d.ts +1062 -0
- package/dist/WorkflowBindingContracts.js +339 -0
- package/dist/index.d.ts +33 -2
- package/dist/index.js +21 -2
- package/dist/types/LoggerContext.d.ts +7 -0
- package/dist/utils/Mapper.d.ts +14 -0
- package/dist/utils/Mapper.js +32 -0
- package/package.json +3 -2
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ENFORCEMENT_PROFILES, EnforcementProfileSchema } from "./EnforcementProfileContracts.js";
|
|
3
|
+
/** Version of the language-neutral workflow binding contract. */
|
|
4
|
+
export const WORKFLOW_BINDING_CONTRACT_VERSION = "1";
|
|
5
|
+
export const WORKFLOW_RUN_CONTRACT_VERSION = "1";
|
|
6
|
+
export const ENFORCEMENT_OVERRIDE_EVENT_VERSION = "1";
|
|
7
|
+
export const WORKFLOW_BINDING_MAX_RULES = 128;
|
|
8
|
+
export const WORKFLOW_BINDING_MAX_LABELS = 128;
|
|
9
|
+
export const WORKFLOW_BINDING_MAX_PATHS = 128;
|
|
10
|
+
export const WORKFLOW_BINDING_MAX_ATTRIBUTES = 64;
|
|
11
|
+
export const WORKFLOW_BINDING_MAX_NODES = 512;
|
|
12
|
+
export const WORKFLOW_BINDING_MAX_RUNTIMES = 32;
|
|
13
|
+
export const WORKFLOW_BINDING_MAX_SCOPE_ITEMS = 128;
|
|
14
|
+
export const WORKFLOW_BINDING_MAX_STRING_LENGTH = 256;
|
|
15
|
+
export const WORKFLOW_BINDING_MAX_CONTRACT_BYTES = 512 * 1024;
|
|
16
|
+
export const WORKFLOW_SOURCE_KINDS = ["registry", "repository", "workspace"];
|
|
17
|
+
export const WORKFLOW_RUNTIME_KINDS = [
|
|
18
|
+
"nodejs",
|
|
19
|
+
"bun",
|
|
20
|
+
"python3",
|
|
21
|
+
"go",
|
|
22
|
+
"java",
|
|
23
|
+
"kotlin",
|
|
24
|
+
"rust",
|
|
25
|
+
"php",
|
|
26
|
+
"csharp",
|
|
27
|
+
"ruby",
|
|
28
|
+
"swift",
|
|
29
|
+
"dart",
|
|
30
|
+
"elixir",
|
|
31
|
+
"docker",
|
|
32
|
+
"wasm",
|
|
33
|
+
"wasi",
|
|
34
|
+
];
|
|
35
|
+
const IDENTIFIER = /^[A-Za-z][A-Za-z0-9._:/-]{0,127}$/;
|
|
36
|
+
const DIGEST = /^(sha256):[0-9a-f]{64}$|^(sha512):[0-9a-f]{128}$/i;
|
|
37
|
+
const PATH = /^[^\0]{1,256}$/;
|
|
38
|
+
const identifier = z.string().min(1).max(128).regex(IDENTIFIER, "must be a bounded identifier");
|
|
39
|
+
const boundedString = z.string().min(1).max(WORKFLOW_BINDING_MAX_STRING_LENGTH);
|
|
40
|
+
const digest = z
|
|
41
|
+
.string()
|
|
42
|
+
.max(140)
|
|
43
|
+
.regex(DIGEST, "must be a sha256: or sha512: digest with the complete hexadecimal length")
|
|
44
|
+
.transform((value) => value.toLowerCase());
|
|
45
|
+
const version = boundedString;
|
|
46
|
+
const finiteNumber = z.number().finite();
|
|
47
|
+
const bindingScalar = z.union([boundedString, finiteNumber, z.boolean()]);
|
|
48
|
+
const stringList = (limit, valueSchema = identifier) => z.array(valueSchema).min(1).max(limit);
|
|
49
|
+
const scalarRecord = z
|
|
50
|
+
.record(identifier, bindingScalar)
|
|
51
|
+
.refine((value) => Object.keys(value).length <= WORKFLOW_BINDING_MAX_ATTRIBUTES, `must contain at most ${WORKFLOW_BINDING_MAX_ATTRIBUTES} attributes`);
|
|
52
|
+
const repositoryIdentitySchema = z.object({
|
|
53
|
+
provider: identifier,
|
|
54
|
+
id: identifier,
|
|
55
|
+
revision: boundedString.optional(),
|
|
56
|
+
});
|
|
57
|
+
const actorIdentitySchema = z.object({
|
|
58
|
+
id: identifier,
|
|
59
|
+
kind: identifier,
|
|
60
|
+
});
|
|
61
|
+
const pathList = stringList(WORKFLOW_BINDING_MAX_PATHS, z.string().regex(PATH, "must be a bounded path"));
|
|
62
|
+
const labels = stringList(WORKFLOW_BINDING_MAX_LABELS);
|
|
63
|
+
export const WorkflowBindingInputsSchema = z.object({
|
|
64
|
+
repository: repositoryIdentitySchema.optional(),
|
|
65
|
+
taskType: boundedString.optional(),
|
|
66
|
+
labels: labels.optional(),
|
|
67
|
+
paths: pathList.optional(),
|
|
68
|
+
tenant: boundedString.optional(),
|
|
69
|
+
actor: actorIdentitySchema.optional(),
|
|
70
|
+
environment: boundedString.optional(),
|
|
71
|
+
attributes: scalarRecord.optional(),
|
|
72
|
+
});
|
|
73
|
+
export const WorkflowBindingSelectorSchema = z.object({
|
|
74
|
+
repository: repositoryIdentitySchema.optional(),
|
|
75
|
+
taskTypes: stringList(WORKFLOW_BINDING_MAX_LABELS, boundedString).optional(),
|
|
76
|
+
labels: labels.optional(),
|
|
77
|
+
paths: pathList.optional(),
|
|
78
|
+
tenant: boundedString.optional(),
|
|
79
|
+
actors: stringList(WORKFLOW_BINDING_MAX_LABELS).optional(),
|
|
80
|
+
environments: stringList(WORKFLOW_BINDING_MAX_LABELS, boundedString).optional(),
|
|
81
|
+
attributes: scalarRecord.optional(),
|
|
82
|
+
});
|
|
83
|
+
const trustedSourceSchema = z.object({
|
|
84
|
+
kind: z.enum(WORKFLOW_SOURCE_KINDS),
|
|
85
|
+
id: identifier,
|
|
86
|
+
digest,
|
|
87
|
+
trusted: z.literal(true),
|
|
88
|
+
});
|
|
89
|
+
const workflowReferenceSchema = z.object({
|
|
90
|
+
name: identifier,
|
|
91
|
+
version,
|
|
92
|
+
source: trustedSourceSchema,
|
|
93
|
+
irDigest: digest,
|
|
94
|
+
});
|
|
95
|
+
export const WorkflowBindingRuleSchema = z.object({
|
|
96
|
+
version: z.literal(WORKFLOW_BINDING_CONTRACT_VERSION),
|
|
97
|
+
id: identifier,
|
|
98
|
+
priority: z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),
|
|
99
|
+
selector: WorkflowBindingSelectorSchema,
|
|
100
|
+
workflow: workflowReferenceSchema,
|
|
101
|
+
profile: EnforcementProfileSchema,
|
|
102
|
+
});
|
|
103
|
+
export const WorkflowBindingRulesSchema = z
|
|
104
|
+
.array(WorkflowBindingRuleSchema)
|
|
105
|
+
.min(1)
|
|
106
|
+
.max(WORKFLOW_BINDING_MAX_RULES)
|
|
107
|
+
.superRefine((value, context) => {
|
|
108
|
+
const ids = new Set();
|
|
109
|
+
for (const [index, rule] of value.entries()) {
|
|
110
|
+
if (ids.has(rule.id)) {
|
|
111
|
+
context.addIssue({
|
|
112
|
+
code: z.ZodIssueCode.custom,
|
|
113
|
+
path: [index, "id"],
|
|
114
|
+
message: "rule ids must be unique",
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
ids.add(rule.id);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
const pinnedNodeSchema = z.object({ id: identifier, version, digest: digest.optional() });
|
|
121
|
+
const pinnedRuntimeSchema = z.object({ kind: z.enum(WORKFLOW_RUNTIME_KINDS), version });
|
|
122
|
+
const pinnedCapabilityManifestSchema = z.object({ version, digest });
|
|
123
|
+
const pinnedPolicySchema = z.object({ id: identifier, version, digest: digest.optional() });
|
|
124
|
+
const pinnedModelSchema = z.object({ provider: identifier, id: identifier, version, configDigest: digest });
|
|
125
|
+
export const PinnedWorkflowRunContractSchema = z
|
|
126
|
+
.object({
|
|
127
|
+
version: z.literal(WORKFLOW_RUN_CONTRACT_VERSION),
|
|
128
|
+
runId: identifier,
|
|
129
|
+
profile: EnforcementProfileSchema,
|
|
130
|
+
bindingRuleId: identifier,
|
|
131
|
+
boundAt: boundedString,
|
|
132
|
+
workflow: workflowReferenceSchema,
|
|
133
|
+
nodes: z.array(pinnedNodeSchema).min(1).max(WORKFLOW_BINDING_MAX_NODES),
|
|
134
|
+
runtimes: z.array(pinnedRuntimeSchema).min(1).max(WORKFLOW_BINDING_MAX_RUNTIMES),
|
|
135
|
+
capabilityManifest: pinnedCapabilityManifestSchema,
|
|
136
|
+
policy: pinnedPolicySchema,
|
|
137
|
+
model: pinnedModelSchema,
|
|
138
|
+
})
|
|
139
|
+
.superRefine((value, context) => {
|
|
140
|
+
const nodeIds = new Set();
|
|
141
|
+
for (const [index, node] of value.nodes.entries()) {
|
|
142
|
+
if (nodeIds.has(node.id)) {
|
|
143
|
+
context.addIssue({
|
|
144
|
+
code: z.ZodIssueCode.custom,
|
|
145
|
+
path: ["nodes", index, "id"],
|
|
146
|
+
message: "node ids must be unique",
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
nodeIds.add(node.id);
|
|
150
|
+
}
|
|
151
|
+
const runtimeKinds = new Set();
|
|
152
|
+
for (const [index, runtime] of value.runtimes.entries()) {
|
|
153
|
+
if (runtimeKinds.has(runtime.kind)) {
|
|
154
|
+
context.addIssue({
|
|
155
|
+
code: z.ZodIssueCode.custom,
|
|
156
|
+
path: ["runtimes", index, "kind"],
|
|
157
|
+
message: "runtime kinds must be unique",
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
runtimeKinds.add(runtime.kind);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
const scopeList = z.array(identifier).min(1).max(WORKFLOW_BINDING_MAX_SCOPE_ITEMS);
|
|
164
|
+
export const EnforcementOverrideScopeSchema = z
|
|
165
|
+
.object({
|
|
166
|
+
stepIds: scopeList.optional(),
|
|
167
|
+
transitionIds: scopeList.optional(),
|
|
168
|
+
capabilityIds: scopeList.optional(),
|
|
169
|
+
})
|
|
170
|
+
.superRefine((value, context) => {
|
|
171
|
+
if (value.stepIds === undefined && value.transitionIds === undefined && value.capabilityIds === undefined) {
|
|
172
|
+
context.addIssue({
|
|
173
|
+
code: z.ZodIssueCode.custom,
|
|
174
|
+
message: "scope must name at least one step, transition, or capability",
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
const overrideAuthorizationSchema = z.object({
|
|
179
|
+
method: z.literal("durable-interaction"),
|
|
180
|
+
interactionId: identifier,
|
|
181
|
+
decisionId: identifier,
|
|
182
|
+
status: z.literal("answered"),
|
|
183
|
+
});
|
|
184
|
+
export const EnforcementOverrideEventSchema = z.object({
|
|
185
|
+
version: z.literal(ENFORCEMENT_OVERRIDE_EVENT_VERSION),
|
|
186
|
+
eventType: z.literal("enforcement.override"),
|
|
187
|
+
eventId: identifier,
|
|
188
|
+
timestamp: boundedString,
|
|
189
|
+
runId: identifier,
|
|
190
|
+
profile: z.literal("guided"),
|
|
191
|
+
bindingRuleId: identifier,
|
|
192
|
+
requestedBy: actorIdentitySchema.optional(),
|
|
193
|
+
authorizedBy: actorIdentitySchema,
|
|
194
|
+
authorization: overrideAuthorizationSchema,
|
|
195
|
+
reasonCode: identifier,
|
|
196
|
+
reason: boundedString.optional(),
|
|
197
|
+
scope: EnforcementOverrideScopeSchema,
|
|
198
|
+
expiresAt: boundedString.optional(),
|
|
199
|
+
});
|
|
200
|
+
export class WorkflowBindingContractError extends Error {
|
|
201
|
+
issues;
|
|
202
|
+
constructor(issues) {
|
|
203
|
+
super(`Invalid workflow binding contract: ${issues.join("; ")}`);
|
|
204
|
+
this.name = "WorkflowBindingContractError";
|
|
205
|
+
this.issues = [...issues];
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
function sortUnique(values) {
|
|
209
|
+
return [...new Set(values)].sort((left, right) => (left < right ? -1 : left > right ? 1 : 0));
|
|
210
|
+
}
|
|
211
|
+
function normalizeAttributes(value) {
|
|
212
|
+
const result = {};
|
|
213
|
+
for (const key of Object.keys(value).sort((left, right) => (left < right ? -1 : left > right ? 1 : 0))) {
|
|
214
|
+
result[key] = value[key];
|
|
215
|
+
}
|
|
216
|
+
return result;
|
|
217
|
+
}
|
|
218
|
+
function normalizeRepository(value) {
|
|
219
|
+
return {
|
|
220
|
+
provider: value.provider,
|
|
221
|
+
id: value.id,
|
|
222
|
+
...(value.revision === undefined ? {} : { revision: value.revision }),
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
function normalizeInputs(value) {
|
|
226
|
+
return {
|
|
227
|
+
...(value.repository ? { repository: normalizeRepository(value.repository) } : {}),
|
|
228
|
+
...(value.taskType === undefined ? {} : { taskType: value.taskType }),
|
|
229
|
+
...(value.labels ? { labels: sortUnique(value.labels) } : {}),
|
|
230
|
+
...(value.paths ? { paths: sortUnique(value.paths) } : {}),
|
|
231
|
+
...(value.tenant === undefined ? {} : { tenant: value.tenant }),
|
|
232
|
+
...(value.actor ? { actor: { ...value.actor } } : {}),
|
|
233
|
+
...(value.environment === undefined ? {} : { environment: value.environment }),
|
|
234
|
+
...(value.attributes ? { attributes: normalizeAttributes(value.attributes) } : {}),
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
function normalizeSelector(value) {
|
|
238
|
+
return {
|
|
239
|
+
...(value.repository ? { repository: normalizeRepository(value.repository) } : {}),
|
|
240
|
+
...(value.taskTypes ? { taskTypes: sortUnique(value.taskTypes) } : {}),
|
|
241
|
+
...(value.labels ? { labels: sortUnique(value.labels) } : {}),
|
|
242
|
+
...(value.paths ? { paths: sortUnique(value.paths) } : {}),
|
|
243
|
+
...(value.tenant === undefined ? {} : { tenant: value.tenant }),
|
|
244
|
+
...(value.actors ? { actors: sortUnique(value.actors) } : {}),
|
|
245
|
+
...(value.environments ? { environments: sortUnique(value.environments) } : {}),
|
|
246
|
+
...(value.attributes ? { attributes: normalizeAttributes(value.attributes) } : {}),
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
function parseSchema(schema, value, label) {
|
|
250
|
+
const result = schema.safeParse(value);
|
|
251
|
+
if (!result.success) {
|
|
252
|
+
throw new WorkflowBindingContractError(result.error.issues.map((issue) => `${label}${issue.path.length > 0 ? `.${issue.path.join(".")}` : ""} ${issue.message}`));
|
|
253
|
+
}
|
|
254
|
+
return result.data;
|
|
255
|
+
}
|
|
256
|
+
function normalizeScope(value) {
|
|
257
|
+
return {
|
|
258
|
+
...(value.stepIds ? { stepIds: sortUnique(value.stepIds) } : {}),
|
|
259
|
+
...(value.transitionIds ? { transitionIds: sortUnique(value.transitionIds) } : {}),
|
|
260
|
+
...(value.capabilityIds ? { capabilityIds: sortUnique(value.capabilityIds) } : {}),
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
function assertContractSize(value, label) {
|
|
264
|
+
const serialized = JSON.stringify(value);
|
|
265
|
+
if (new TextEncoder().encode(serialized).byteLength > WORKFLOW_BINDING_MAX_CONTRACT_BYTES) {
|
|
266
|
+
throw new WorkflowBindingContractError([`${label} exceeds ${WORKFLOW_BINDING_MAX_CONTRACT_BYTES} bytes`]);
|
|
267
|
+
}
|
|
268
|
+
return value;
|
|
269
|
+
}
|
|
270
|
+
function immutable(value) {
|
|
271
|
+
const snapshot = structuredClone(value);
|
|
272
|
+
const freeze = (item) => {
|
|
273
|
+
if (item === null || typeof item !== "object" || Object.isFrozen(item))
|
|
274
|
+
return;
|
|
275
|
+
for (const child of Object.values(item))
|
|
276
|
+
freeze(child);
|
|
277
|
+
Object.freeze(item);
|
|
278
|
+
};
|
|
279
|
+
freeze(snapshot);
|
|
280
|
+
return snapshot;
|
|
281
|
+
}
|
|
282
|
+
/** Parse and canonicalize caller-controlled binding facts. */
|
|
283
|
+
export function parseWorkflowBindingInputs(value) {
|
|
284
|
+
return immutable(normalizeInputs(parseSchema(WorkflowBindingInputsSchema, value, "workflow binding inputs")));
|
|
285
|
+
}
|
|
286
|
+
export function parseWorkflowBindingSelector(value) {
|
|
287
|
+
return immutable(normalizeSelector(parseSchema(WorkflowBindingSelectorSchema, value, "workflow binding selector")));
|
|
288
|
+
}
|
|
289
|
+
export function parseWorkflowBindingRule(value) {
|
|
290
|
+
const parsed = parseSchema(WorkflowBindingRuleSchema, value, "workflow binding rule");
|
|
291
|
+
return immutable(assertContractSize({
|
|
292
|
+
...parsed,
|
|
293
|
+
selector: normalizeSelector(parsed.selector),
|
|
294
|
+
}, "workflow binding rule"));
|
|
295
|
+
}
|
|
296
|
+
export function parseWorkflowBindingRules(value) {
|
|
297
|
+
const parsed = parseSchema(WorkflowBindingRulesSchema, value, "workflow binding rules");
|
|
298
|
+
return immutable(assertContractSize(parsed
|
|
299
|
+
.map((rule) => ({ ...rule, selector: normalizeSelector(rule.selector) }))
|
|
300
|
+
.sort((left, right) => left.priority !== right.priority
|
|
301
|
+
? right.priority - left.priority
|
|
302
|
+
: left.id < right.id
|
|
303
|
+
? -1
|
|
304
|
+
: left.id > right.id
|
|
305
|
+
? 1
|
|
306
|
+
: 0), "workflow binding rules"));
|
|
307
|
+
}
|
|
308
|
+
/** Parse a complete run contract; the returned value is safe to persist as a pin. */
|
|
309
|
+
export function parsePinnedWorkflowRunContract(value) {
|
|
310
|
+
const parsed = parseSchema(PinnedWorkflowRunContractSchema, value, "pinned workflow run contract");
|
|
311
|
+
return immutable(assertContractSize({
|
|
312
|
+
...parsed,
|
|
313
|
+
nodes: [...parsed.nodes].sort((left, right) => (left.id < right.id ? -1 : left.id > right.id ? 1 : 0)),
|
|
314
|
+
runtimes: [...parsed.runtimes].sort((left, right) => left.kind < right.kind ? -1 : left.kind > right.kind ? 1 : 0),
|
|
315
|
+
}, "pinned workflow run contract"));
|
|
316
|
+
}
|
|
317
|
+
/** Parse a guided authorization event; strict/advisory bypass events are invalid. */
|
|
318
|
+
export function parseEnforcementOverrideEvent(value) {
|
|
319
|
+
const parsed = parseSchema(EnforcementOverrideEventSchema, value, "enforcement override event");
|
|
320
|
+
return immutable(assertContractSize({ ...parsed, scope: normalizeScope(parsed.scope) }, "enforcement override event"));
|
|
321
|
+
}
|
|
322
|
+
export function serializeWorkflowBindingInputs(value) {
|
|
323
|
+
return JSON.stringify(parseWorkflowBindingInputs(value));
|
|
324
|
+
}
|
|
325
|
+
export function serializeWorkflowBindingRule(value) {
|
|
326
|
+
return JSON.stringify(parseWorkflowBindingRule(value));
|
|
327
|
+
}
|
|
328
|
+
export function serializeWorkflowBindingRules(value) {
|
|
329
|
+
return JSON.stringify(parseWorkflowBindingRules(value));
|
|
330
|
+
}
|
|
331
|
+
export function serializePinnedWorkflowRunContract(value) {
|
|
332
|
+
return JSON.stringify(parsePinnedWorkflowRunContract(value));
|
|
333
|
+
}
|
|
334
|
+
export function serializeEnforcementOverrideEvent(value) {
|
|
335
|
+
return JSON.stringify(parseEnforcementOverrideEvent(value));
|
|
336
|
+
}
|
|
337
|
+
export function isEnforcementProfile(value) {
|
|
338
|
+
return typeof value === "string" && ENFORCEMENT_PROFILES.includes(value);
|
|
339
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,11 +6,18 @@
|
|
|
6
6
|
* published as a back-compat alias — existing imports keep working unchanged —
|
|
7
7
|
* but new code should import from `@blokjs/core`.
|
|
8
8
|
*/
|
|
9
|
-
import BlokError, { type BlokErrorOpts, DEFAULT_HTTP_STATUS, DEFAULT_RETRYABLE, ErrorCategory, ErrorSeverity, isNonRetryableValidationError, type NodeErrorPayload, WORKFLOW_INPUT_VALIDATION, WorkflowInputValidationError, type WorkflowInputValidationInfo, type WorkflowInputValidationIssue } from "./BlokError.js";
|
|
9
|
+
import BlokError, { type BlokErrorOpts, DEFAULT_HTTP_STATUS, DEFAULT_RETRYABLE, ErrorCategory, ErrorSeverity, isNonRetryableError, isNonRetryableStepError, isNonRetryableValidationError, markNonRetryableStepError, type NodeErrorPayload, WORKFLOW_INPUT_VALIDATION, WorkflowInputValidationError, type WorkflowInputValidationInfo, type WorkflowInputValidationIssue } from "./BlokError.js";
|
|
10
|
+
import { CAPABILITY_CLASSIFICATIONS, CAPABILITY_DETERMINISM, CAPABILITY_EFFECTS, CAPABILITY_IDEMPOTENCY, CAPABILITY_MANIFEST_VERSION, CAPABILITY_MATURITY, type CapabilityClassification, type CapabilityDeterminism, type CapabilityEffect, type CapabilityIdempotency, type CapabilityManifestAssessment, CapabilityManifestError, type CapabilityManifestStatus, type CapabilityManifestV1, type CapabilityMaturity, type CapabilityResourceBounds, assessCapabilityManifest, parseCapabilityManifest, requireAgentEligibleManifest, serializeCapabilityManifest } from "./CapabilityManifest.js";
|
|
11
|
+
export { WASI_COMPONENT_CAPABILITIES, WASI_COMPONENT_CONTRACT_VERSION, WASI_COMPONENT_MANIFEST_VERSION, WASI_COMPONENT_MEDIA_TYPE, WASI_COMPONENT_WASI_VERSION, WASI_COMPONENT_WIT_PACKAGE, WASI_COMPONENT_WIT_VERSION, WASI_COMPONENT_WIT_WORLD, WasiComponentArtifactSchema, WasiComponentErrorSchema, WasiComponentExecutionRequestSchema, WasiComponentExecutionResponseSchema, WasiComponentLimitsSchema, WasiComponentManifestSchema, WasiComponentNodeSchema, WasiComponentWorldSchema, parseWasiComponentManifest, serializeWasiComponentManifest, } from "./WasiComponentContracts.js";
|
|
12
|
+
export type { WasiComponentArtifact, WasiComponentExecutionRequest, WasiComponentExecutionResponse, WasiComponentLimits, WasiComponentManifestV1, WasiComponentNode, WasiComponentReadiness, WasiComponentWorld, } from "./WasiComponentContracts.js";
|
|
10
13
|
import GlobalError from "./GlobalError.js";
|
|
11
14
|
import GlobalLogger from "./GlobalLogger.js";
|
|
12
15
|
import { Metrics, type MetricsType } from "./Metrics.js";
|
|
13
16
|
import NodeBase from "./NodeBase.js";
|
|
17
|
+
export { JAVASCRIPT_RUNTIMES, JavaScriptRuntimeSchema, JavaScriptRuntimeSelectionSchema, PackageManagerSchema, PACKAGE_MANAGERS, RUNTIME_KINDS, RuntimeCapabilityManifestSchema, RuntimeKindInputSchema, RuntimeKindSchema, normalizeJavaScriptRuntime, normalizeRuntimeKind, runtimeKindForJavaScriptRuntime, } from "./RuntimeContracts.js";
|
|
18
|
+
export type { JavaScriptRuntime, JavaScriptRuntimeSelection, PackageManager, RuntimeCapabilityManifest, RuntimeDiagnostic, RuntimeKind, RuntimeKindInput, RuntimeNormalization, } from "./RuntimeContracts.js";
|
|
19
|
+
export { CapabilityAuthorityError, CapabilityAuthoritySchema, CapabilityFragmentValueSchema, assertCapabilityAuthoritySubset, intersectCapabilityAuthorities, isCapabilityAuthoritySubset, parseCapabilityAuthority, } from "./PermissionAlgebra.js";
|
|
20
|
+
export type { CapabilityAuthority } from "./PermissionAlgebra.js";
|
|
14
21
|
import Trigger from "./Trigger.js";
|
|
15
22
|
import type ConfigContext from "./types/ConfigContext.js";
|
|
16
23
|
import type ConnectionContext from "./types/ConnectionContext.js";
|
|
@@ -32,4 +39,28 @@ import { MapperResolutionError } from "./utils/MapperResolutionError.js";
|
|
|
32
39
|
import MemoryUsage from "./utils/MemoryUsage.js";
|
|
33
40
|
import { NamedMissingStateError } from "./utils/NamedMissingStateError.js";
|
|
34
41
|
import { type StructuralRef, type StructuralTpl, isStructuralRef, isStructuralTpl, lowerRefs } from "./utils/lowerRefs.js";
|
|
35
|
-
export {
|
|
42
|
+
export { AGENT_CAPABILITY_CONTRACT_VERSION, CAPABILITY_MAX_ID_LENGTH, CAPABILITY_MAX_LIST_ITEMS, CAPABILITY_MAX_OUTPUT_CHUNK_BYTES, CAPABILITY_MAX_PATH_LENGTH, CapabilityContractError, CapabilityOwnerSchema, WorkspacePathRefSchema, assertAuthorized, assertOwned, capabilityScope, parseCapabilityAuthorization, parseCapabilityOwner, parseWorkspacePathRef, } from "./CapabilityContracts.js";
|
|
43
|
+
export type { CapabilityAuthorizationPort, CapabilityOwner, CapabilityRequestContext, WorkspacePathRef, } from "./CapabilityContracts.js";
|
|
44
|
+
export { GIT_CAPABILITY_CONTRACT_VERSION, GIT_DESTRUCTIVE_OPERATIONS, GIT_OPERATIONS, GIT_MAX_BRANCH_NAME_LENGTH, GIT_MAX_CHANGED_FILES, assertGitOperationAllowed, assertGitOwner, assertGitPolicyAllowed, gitCapabilityScope, parseGitDiffEvidence, parseGitDirtyState, parseGitOperation, parseGitRepositoryIdentity, parseGitWorktreeCreateRequest, parseGitWorktreeIdentity, workspacePathForGit, } from "./GitCapabilityContracts.js";
|
|
45
|
+
export type { GitCapability, GitCapabilityRequest, GitChangeStatus, GitDiffEvidence, GitDiffFile, GitDirtyState, GitDestructiveOperation, GitOperation, GitRepositoryIdentity, GitRevisionIdentity, GitWorktreeCreateRequest, GitWorktreeCleanupRequest, GitWorktreeIdentity, } from "./GitCapabilityContracts.js";
|
|
46
|
+
export { PROCESS_CAPABILITY_CONTRACT_VERSION, PROCESS_CAPABILITY_IDS, PROCESS_DEFAULT_LIMITS, assertBoundedOutputChunk, assertProcessOwner, assertProcessPolicyAllowed, assertProcessStartResult, parseProcessCancellationRequest, parseProcessHandle, parseProcessOutput, parseProcessOutputChunk, parseProcessOrphanCleanupRequest, parseProcessResult, parseProcessSpec, processCapabilityId, processCapabilityScope, processWorkspaceCwd, } from "./ProcessCapabilityContracts.js";
|
|
47
|
+
export type { ExecutableProcessSpec, NetworkDestination, ProcessCapability, ProcessCapabilityId, ProcessCancellationRequest, ProcessEnvironmentBinding, ProcessHandle, ProcessHandleRequest, ProcessLifecycleStatus, ProcessNetworkPolicy, ProcessOrphanCleanupRequest, ProcessOutputChunk, ProcessOutputSnapshot, ProcessResourceLimits, ProcessResult, ProcessStartResult, ProcessSpec, ProcessSpecBase, ProcessStartRequest, ShellStringProcessSpec, } from "./ProcessCapabilityContracts.js";
|
|
48
|
+
export type { AuditEventBase, AuditRedactionState, AuditSink, ExecutionOrigin, InteractionAttribution, InteractionRequest, InteractionSuspension, InteractionSuspensionPort, PolicyContext, PolicyDecision, PolicyDecisionKind, PolicyEvaluationResult, PolicyLayer, PolicyLayerName, PolicyProvider, PolicyRequest, PolicyRuleMatch, PostExecutionAuditEvent, PreExecutionAuditEvent, PrincipalIdentity, RequestedCapabilityScope, SandboxAttestation, SessionIdentity, StepIdentity, TurnIdentity, WorkflowIdentity, } from "./PolicyContracts.js";
|
|
49
|
+
export type { AgentCompletionContract, AgentStepContract, ApprovalContract, AssertionGateContract, EvidenceGateContract, EvidenceGateRequirement, OutputTrust, TrustedEvidence, } from "./EnforcementContracts.js";
|
|
50
|
+
export { ENFORCEMENT_CONTRACT_VERSION, EnforcementViolationError, } from "./EnforcementContracts.js";
|
|
51
|
+
export type { EnforcementProfile, EnforcementProfileContract, EnforcementProfileSemantics, } from "./EnforcementProfileContracts.js";
|
|
52
|
+
export { ENFORCEMENT_PROFILE_CONTRACT_VERSION, ENFORCEMENT_PROFILE_SEMANTICS, ENFORCEMENT_PROFILES, EnforcementProfileContractError, EnforcementProfileContractSchema, EnforcementProfileSchema, enforcementProfileSemantics, parseEnforcementProfile, parseEnforcementProfileContract, serializeEnforcementProfileContract, } from "./EnforcementProfileContracts.js";
|
|
53
|
+
export type { BindingActorIdentity, BindingScalar, EnforcementOverrideAuthorization, EnforcementOverrideEvent, EnforcementOverrideScope, PinnedCapabilityManifestIdentity, PinnedModelConfigurationIdentity, PinnedNodeIdentity, PinnedPolicyIdentity, PinnedRuntimeIdentity, PinnedWorkflowRunContract, RepositoryIdentity, TrustedWorkflowSource, WorkflowBindingInputs, WorkflowBindingRule, WorkflowBindingRules, WorkflowBindingSelector, WorkflowReference, WorkflowRuntimeKind, WorkflowSourceKind, } from "./WorkflowBindingContracts.js";
|
|
54
|
+
export { ENFORCEMENT_OVERRIDE_EVENT_VERSION, WORKFLOW_BINDING_CONTRACT_VERSION, WORKFLOW_BINDING_MAX_ATTRIBUTES, WORKFLOW_BINDING_MAX_CONTRACT_BYTES, WORKFLOW_BINDING_MAX_LABELS, WORKFLOW_BINDING_MAX_NODES, WORKFLOW_BINDING_MAX_PATHS, WORKFLOW_BINDING_MAX_RULES, WORKFLOW_BINDING_MAX_SCOPE_ITEMS, WORKFLOW_BINDING_MAX_STRING_LENGTH, WORKFLOW_BINDING_MAX_RUNTIMES, WORKFLOW_RUN_CONTRACT_VERSION, EnforcementOverrideEventSchema, EnforcementOverrideScopeSchema, PinnedWorkflowRunContractSchema, WorkflowBindingContractError, WorkflowBindingInputsSchema, WorkflowBindingRuleSchema, WorkflowBindingRulesSchema, WorkflowBindingSelectorSchema, isEnforcementProfile, parseEnforcementOverrideEvent, parsePinnedWorkflowRunContract, parseWorkflowBindingInputs, parseWorkflowBindingRule, parseWorkflowBindingRules, parseWorkflowBindingSelector, serializeEnforcementOverrideEvent, serializePinnedWorkflowRunContract, serializeWorkflowBindingInputs, serializeWorkflowBindingRule, serializeWorkflowBindingRules, WORKFLOW_RUNTIME_KINDS, WORKFLOW_SOURCE_KINDS, } from "./WorkflowBindingContracts.js";
|
|
55
|
+
export type { SecretLease, SecretRef, SecretRequest, SecretResolutionAuditEvent, SecretResolutionFailure, SecretResolver, } from "./SecretContracts.js";
|
|
56
|
+
export type { InteractionPayload, InteractionAnswer, InteractionRecord, InteractionStatus, InteractionStore, } from "./InteractionContracts.js";
|
|
57
|
+
export type { ApprovalRequirement, ArtifactIdentity, ArtifactVersionIdentity, CompletionContract, CompletionRequirement, EvidenceArtifactIdentity, EvidenceCheck, EvidenceCheckOutcome, EvidenceKind, EvidencePayload, EvidenceProducerIdentity, EvidenceProducerKind, EvidenceProvenanceIdentity, EvidenceRecord, EvidenceRequirement, EvidenceVerificationMethod, EvidenceVerificationResult, EvidenceVerificationStatus, EvidenceVerifierIdentity, EvidenceVerifierKind, } from "./EvidenceContracts.js";
|
|
58
|
+
export { ApprovalRequirementSchema, ArtifactIdentitySchema, ArtifactVersionIdentitySchema, CompletionContractSchema, CompletionRequirementSchema, EvidenceCheckSchema, EvidenceContractError, EvidenceProducerIdentitySchema, EvidenceProvenanceIdentitySchema, EvidenceRecordSchema, EvidenceRequirementSchema, EvidencePayloadSchema, EvidenceTraceIdentitySchema, EvidenceVerificationResultSchema, EvidenceVerifierIdentitySchema, EVIDENCE_CHECK_OUTCOMES, EVIDENCE_CONTRACT_VERSION, EVIDENCE_MAX_CHECKS, EVIDENCE_MAX_PAYLOAD_DEPTH, EVIDENCE_MAX_PAYLOAD_ITEMS, EVIDENCE_MAX_RECORD_BYTES, EVIDENCE_MAX_REQUIREMENTS, EVIDENCE_MAX_STRING_LENGTH, EVIDENCE_PRODUCER_KINDS, EVIDENCE_VERIFICATION_METHODS, EVIDENCE_VERIFICATION_STATUSES, EVIDENCE_VERIFIER_KINDS, parseCompletionContract, parseEvidencePayload, parseEvidenceRecord, rejectModelEvidence, serializeCompletionContract, serializeEvidenceRecord, } from "./EvidenceContracts.js";
|
|
59
|
+
export type { EffectRetryEvidence, EffectRetryEvidenceOutcome, JoinBranchObligation, JoinBranchResult, JoinBranchStatus, JoinContract, JoinJsonSchema, JoinOutputDeclaration, JoinResult, RetryResumeEffect, RetryResumeIdempotencyContract, RetryResumeIdempotencyMode, } from "./JoinContracts.js";
|
|
60
|
+
export { EffectRetryEvidenceSchema, JOIN_CONTRACT_VERSION, JOIN_MAX_BRANCHES, JOIN_MAX_CONTRACT_BYTES, JOIN_MAX_OUTPUTS, JOIN_MAX_SCHEMA_DEPTH, JoinBranchObligationSchema, JoinContractError, JoinContractSchema, JoinOutputDeclarationSchema, RETRY_RESUME_IDEMPOTENCY_CONTRACT_VERSION, RETRY_RESUME_MAX_ATTEMPTS, RETRY_RESUME_MAX_EVIDENCE, RETRY_RESUME_MAX_RESUMES, RetryResumeContractError, RetryResumeIdempotencyContractSchema, assertEffectRetryEvidence, assertJoinSatisfied, parseEffectRetryEvidence, parseJoinContract, parseRetryResumeIdempotencyContract, serializeJoinContract, } from "./JoinContracts.js";
|
|
61
|
+
export { INTERACTION_MAX_LINEAGE_DEPTH, INTERACTION_MAX_LINEAGE_PATH, INTERACTION_MAX_PAYLOAD_BYTES, INTERACTION_MAX_PAYLOAD_DEPTH, INTERACTION_MAX_PAYLOAD_ITEMS, INTERACTION_MAX_STRING_LENGTH, INTERACTION_REDACTED_VALUE, INTERACTION_VERSION, InteractionContractError, fingerprintInteractionPayload, immutableInteractionSnapshot, parseInteractionAnswer, parseInteractionPayload, redactInteractionDecision, redactInteractionPayload, redactInteractionRequest, redactInteractionString, } from "./InteractionContracts.js";
|
|
62
|
+
export type { AuthoritativeSourceReadRequest, AuthoritativeSourceReader, AuthoritativeSourceSnapshot, GraphError, GraphErrorCategory, GraphFreshness, GraphFreshnessState, GraphFreshnessRequest, GraphImpactRequest, GraphIndexFile, GraphIndexRequest, GraphIndexResponse, GraphIndexSource, GraphLocation, GraphProvenance, GraphProvider, GraphQueryOptions, GraphQueryResponse, GraphRange, GraphRelation, GraphRelationDirection, GraphRelationKind, GraphRelationRequest, GraphRepositoryIdentity, GraphResultState, GraphResultStatus, GraphScope, GraphSearchHit, GraphSearchKind, GraphSearchRequest, GraphSymbol, GraphSymbolKind, GraphSymbolRequest, GraphWorktreeIdentity, } from "./GraphContracts.js";
|
|
63
|
+
export { GRAPH_CONTRACT_VERSION, GRAPH_FRESHNESS_STATES, GRAPH_INDEX_SOURCES, GRAPH_MAX_DEPTH, GRAPH_MAX_FILES_PER_INDEX, GRAPH_MAX_INDEX_BYTES, GRAPH_MAX_ITEMS, GRAPH_MAX_PATH_LENGTH, GRAPH_MAX_RESPONSE_BYTES, GRAPH_MAX_STRING_LENGTH, GRAPH_RELATION_DIRECTIONS, GRAPH_RELATION_KINDS, GRAPH_RESULT_STATES, GRAPH_SEARCH_KINDS, GRAPH_SYMBOL_KINDS, AuthoritativeSourceReadRequestSchema, AuthoritativeSourceSnapshotSchema, GraphContractError, GraphErrorSchema, GraphFreshnessSchema, GraphFreshnessRequestSchema, GraphImpactRequestSchema, GraphIndexFileSchema, GraphIndexRequestSchema, GraphLocationSchema, GraphProvenanceSchema, GraphRangeSchema, GraphRelationSchema, GraphRelationRequestSchema, GraphRepositoryIdentitySchema, GraphResultStatusSchema, GraphScopeSchema, GraphSearchHitSchema, GraphSearchRequestSchema, GraphSymbolSchema, GraphSymbolRequestSchema, GraphWorktreeIdentitySchema, parseAuthoritativeSourceReadRequest, parseGraphImpactRequest, parseGraphFreshnessRequest, parseGraphIndexRequest, parseGraphIndexResponse, parseGraphQueryResponse, parseGraphRelationRequest, parseGraphScope, parseGraphSearchRequest, parseGraphSymbolRequest, serializeGraphContract, } from "./GraphContracts.js";
|
|
64
|
+
export type { AgentSessionActorKind, AgentSessionEvent, AgentSessionEventKind, AgentSessionEventVisibility, SessionEvent, AgentSessionEventKind as SessionEventKind, AgentSessionEventVisibility as SessionEventVisibility, AgentSessionActorKind as SessionActorKind, SessionActor, SessionJsonValue, SessionEventInput, SessionCursor, SessionEventPage, CorruptSessionTail, SessionSnapshot, SessionFork, SessionMessage, SessionState, SessionFoldOptions, AppendSessionEventsInput, AppendSessionEventsResult, SessionRetentionOptions, SessionStore, ArtifactReference, } from "./AgentSessionContracts.js";
|
|
65
|
+
export { AGENT_SESSION_CONTRACT_VERSION, AGENT_SESSION_SCHEMA_VERSION, AGENT_SESSION_MAX_EVENT_BYTES, AGENT_SESSION_MAX_PAYLOAD_DEPTH, AGENT_SESSION_MAX_PAYLOAD_ITEMS, AGENT_SESSION_MAX_STRING_LENGTH, AGENT_SESSION_MAX_EVENTS_PER_APPEND, AGENT_SESSION_MAX_PAGE_SIZE, AGENT_SESSION_MAX_SNAPSHOT_BYTES, AGENT_SESSION_EVENT_KINDS, AgentSessionContractError, SessionConcurrencyError, SessionCorruptTailError, ArtifactReferenceSchema, SessionJsonValueSchema, SessionActorSchema, SessionEventSchema, SessionEventInputSchema, parseArtifactReference, parseSessionEvent, parseSessionEventInput, serializeSessionEvent, parseSessionCursor, cursorForSequence, immutableSessionSnapshot, fingerprintSessionEvent, foldSessionEvents, } from "./AgentSessionContracts.js";
|
|
66
|
+
export { CAPABILITY_MANIFEST_VERSION, CAPABILITY_EFFECTS, CAPABILITY_CLASSIFICATIONS, CAPABILITY_DETERMINISM, CAPABILITY_IDEMPOTENCY, CAPABILITY_MATURITY, CapabilityManifestError, parseCapabilityManifest, serializeCapabilityManifest, assessCapabilityManifest, requireAgentEligibleManifest, type CapabilityEffect, type CapabilityClassification, type CapabilityDeterminism, type CapabilityIdempotency, type CapabilityMaturity, type CapabilityResourceBounds, type CapabilityManifestV1, type CapabilityManifestStatus, type CapabilityManifestAssessment, NodeBase, type Context, type RequestContext, type ResponseContext, RESPOND_BRAND, type RespondEnvelope, isRespondEnvelope, type EnvContext, type ErrorContext, type LoggerContext, type ConfigContext, type ConnectionContext, type StreamContext, Trigger, type NodeConfigContext, type FunctionContext, type StateContext, type VarsContext, type Step, GlobalLogger, GlobalError, BlokError, type BlokErrorOpts, type NodeErrorPayload, ErrorCategory, ErrorSeverity, DEFAULT_HTTP_STATUS, DEFAULT_RETRYABLE, isNonRetryableValidationError, isNonRetryableError, markNonRetryableStepError, isNonRetryableStepError, WORKFLOW_INPUT_VALIDATION, WorkflowInputValidationError, type WorkflowInputValidationInfo, type WorkflowInputValidationIssue, Metrics, MemoryUsage, type MetricsType, mapper, MapperResolutionError, NamedMissingStateError, lowerRefs, isStructuralRef, isStructuralTpl, type StructuralRef, type StructuralTpl, };
|
package/dist/index.js
CHANGED
|
@@ -6,11 +6,15 @@
|
|
|
6
6
|
* published as a back-compat alias — existing imports keep working unchanged —
|
|
7
7
|
* but new code should import from `@blokjs/core`.
|
|
8
8
|
*/
|
|
9
|
-
import BlokError, { DEFAULT_HTTP_STATUS, DEFAULT_RETRYABLE, ErrorCategory, ErrorSeverity, isNonRetryableValidationError, WORKFLOW_INPUT_VALIDATION, WorkflowInputValidationError, } from "./BlokError.js";
|
|
9
|
+
import BlokError, { DEFAULT_HTTP_STATUS, DEFAULT_RETRYABLE, ErrorCategory, ErrorSeverity, isNonRetryableError, isNonRetryableStepError, isNonRetryableValidationError, markNonRetryableStepError, WORKFLOW_INPUT_VALIDATION, WorkflowInputValidationError, } from "./BlokError.js";
|
|
10
|
+
import { CAPABILITY_CLASSIFICATIONS, CAPABILITY_DETERMINISM, CAPABILITY_EFFECTS, CAPABILITY_IDEMPOTENCY, CAPABILITY_MANIFEST_VERSION, CAPABILITY_MATURITY, CapabilityManifestError, assessCapabilityManifest, parseCapabilityManifest, requireAgentEligibleManifest, serializeCapabilityManifest, } from "./CapabilityManifest.js";
|
|
11
|
+
export { WASI_COMPONENT_CAPABILITIES, WASI_COMPONENT_CONTRACT_VERSION, WASI_COMPONENT_MANIFEST_VERSION, WASI_COMPONENT_MEDIA_TYPE, WASI_COMPONENT_WASI_VERSION, WASI_COMPONENT_WIT_PACKAGE, WASI_COMPONENT_WIT_VERSION, WASI_COMPONENT_WIT_WORLD, WasiComponentArtifactSchema, WasiComponentErrorSchema, WasiComponentExecutionRequestSchema, WasiComponentExecutionResponseSchema, WasiComponentLimitsSchema, WasiComponentManifestSchema, WasiComponentNodeSchema, WasiComponentWorldSchema, parseWasiComponentManifest, serializeWasiComponentManifest, } from "./WasiComponentContracts.js";
|
|
10
12
|
import GlobalError from "./GlobalError.js";
|
|
11
13
|
import GlobalLogger from "./GlobalLogger.js";
|
|
12
14
|
import { Metrics } from "./Metrics.js";
|
|
13
15
|
import NodeBase from "./NodeBase.js";
|
|
16
|
+
export { JAVASCRIPT_RUNTIMES, JavaScriptRuntimeSchema, JavaScriptRuntimeSelectionSchema, PackageManagerSchema, PACKAGE_MANAGERS, RUNTIME_KINDS, RuntimeCapabilityManifestSchema, RuntimeKindInputSchema, RuntimeKindSchema, normalizeJavaScriptRuntime, normalizeRuntimeKind, runtimeKindForJavaScriptRuntime, } from "./RuntimeContracts.js";
|
|
17
|
+
export { CapabilityAuthorityError, CapabilityAuthoritySchema, CapabilityFragmentValueSchema, assertCapabilityAuthoritySubset, intersectCapabilityAuthorities, isCapabilityAuthoritySubset, parseCapabilityAuthority, } from "./PermissionAlgebra.js";
|
|
14
18
|
import Trigger from "./Trigger.js";
|
|
15
19
|
import { RESPOND_BRAND, isRespondEnvelope } from "./types/RespondEnvelope.js";
|
|
16
20
|
import mapper from "./utils/Mapper.js";
|
|
@@ -18,7 +22,22 @@ import { MapperResolutionError } from "./utils/MapperResolutionError.js";
|
|
|
18
22
|
import MemoryUsage from "./utils/MemoryUsage.js";
|
|
19
23
|
import { NamedMissingStateError } from "./utils/NamedMissingStateError.js";
|
|
20
24
|
import { isStructuralRef, isStructuralTpl, lowerRefs } from "./utils/lowerRefs.js";
|
|
21
|
-
export {
|
|
25
|
+
export { AGENT_CAPABILITY_CONTRACT_VERSION, CAPABILITY_MAX_ID_LENGTH, CAPABILITY_MAX_LIST_ITEMS, CAPABILITY_MAX_OUTPUT_CHUNK_BYTES, CAPABILITY_MAX_PATH_LENGTH, CapabilityContractError, CapabilityOwnerSchema, WorkspacePathRefSchema, assertAuthorized, assertOwned, capabilityScope, parseCapabilityAuthorization, parseCapabilityOwner, parseWorkspacePathRef, } from "./CapabilityContracts.js";
|
|
26
|
+
export { GIT_CAPABILITY_CONTRACT_VERSION, GIT_DESTRUCTIVE_OPERATIONS, GIT_OPERATIONS, GIT_MAX_BRANCH_NAME_LENGTH, GIT_MAX_CHANGED_FILES, assertGitOperationAllowed, assertGitOwner, assertGitPolicyAllowed, gitCapabilityScope, parseGitDiffEvidence, parseGitDirtyState, parseGitOperation, parseGitRepositoryIdentity, parseGitWorktreeCreateRequest, parseGitWorktreeIdentity, workspacePathForGit, } from "./GitCapabilityContracts.js";
|
|
27
|
+
export { PROCESS_CAPABILITY_CONTRACT_VERSION, PROCESS_CAPABILITY_IDS, PROCESS_DEFAULT_LIMITS, assertBoundedOutputChunk, assertProcessOwner, assertProcessPolicyAllowed, assertProcessStartResult, parseProcessCancellationRequest, parseProcessHandle, parseProcessOutput, parseProcessOutputChunk, parseProcessOrphanCleanupRequest, parseProcessResult, parseProcessSpec, processCapabilityId, processCapabilityScope, processWorkspaceCwd, } from "./ProcessCapabilityContracts.js";
|
|
28
|
+
export { ENFORCEMENT_CONTRACT_VERSION, EnforcementViolationError, } from "./EnforcementContracts.js";
|
|
29
|
+
export { ENFORCEMENT_PROFILE_CONTRACT_VERSION, ENFORCEMENT_PROFILE_SEMANTICS, ENFORCEMENT_PROFILES, EnforcementProfileContractError, EnforcementProfileContractSchema, EnforcementProfileSchema, enforcementProfileSemantics, parseEnforcementProfile, parseEnforcementProfileContract, serializeEnforcementProfileContract, } from "./EnforcementProfileContracts.js";
|
|
30
|
+
export { ENFORCEMENT_OVERRIDE_EVENT_VERSION, WORKFLOW_BINDING_CONTRACT_VERSION, WORKFLOW_BINDING_MAX_ATTRIBUTES, WORKFLOW_BINDING_MAX_CONTRACT_BYTES, WORKFLOW_BINDING_MAX_LABELS, WORKFLOW_BINDING_MAX_NODES, WORKFLOW_BINDING_MAX_PATHS, WORKFLOW_BINDING_MAX_RULES, WORKFLOW_BINDING_MAX_SCOPE_ITEMS, WORKFLOW_BINDING_MAX_STRING_LENGTH, WORKFLOW_BINDING_MAX_RUNTIMES, WORKFLOW_RUN_CONTRACT_VERSION, EnforcementOverrideEventSchema, EnforcementOverrideScopeSchema, PinnedWorkflowRunContractSchema, WorkflowBindingContractError, WorkflowBindingInputsSchema, WorkflowBindingRuleSchema, WorkflowBindingRulesSchema, WorkflowBindingSelectorSchema, isEnforcementProfile, parseEnforcementOverrideEvent, parsePinnedWorkflowRunContract, parseWorkflowBindingInputs, parseWorkflowBindingRule, parseWorkflowBindingRules, parseWorkflowBindingSelector, serializeEnforcementOverrideEvent, serializePinnedWorkflowRunContract, serializeWorkflowBindingInputs, serializeWorkflowBindingRule, serializeWorkflowBindingRules, WORKFLOW_RUNTIME_KINDS, WORKFLOW_SOURCE_KINDS, } from "./WorkflowBindingContracts.js";
|
|
31
|
+
export { ApprovalRequirementSchema, ArtifactIdentitySchema, ArtifactVersionIdentitySchema, CompletionContractSchema, CompletionRequirementSchema, EvidenceCheckSchema, EvidenceContractError, EvidenceProducerIdentitySchema, EvidenceProvenanceIdentitySchema, EvidenceRecordSchema, EvidenceRequirementSchema, EvidencePayloadSchema, EvidenceTraceIdentitySchema, EvidenceVerificationResultSchema, EvidenceVerifierIdentitySchema, EVIDENCE_CHECK_OUTCOMES, EVIDENCE_CONTRACT_VERSION, EVIDENCE_MAX_CHECKS, EVIDENCE_MAX_PAYLOAD_DEPTH, EVIDENCE_MAX_PAYLOAD_ITEMS, EVIDENCE_MAX_RECORD_BYTES, EVIDENCE_MAX_REQUIREMENTS, EVIDENCE_MAX_STRING_LENGTH, EVIDENCE_PRODUCER_KINDS, EVIDENCE_VERIFICATION_METHODS, EVIDENCE_VERIFICATION_STATUSES, EVIDENCE_VERIFIER_KINDS, parseCompletionContract, parseEvidencePayload, parseEvidenceRecord, rejectModelEvidence, serializeCompletionContract, serializeEvidenceRecord, } from "./EvidenceContracts.js";
|
|
32
|
+
export { EffectRetryEvidenceSchema, JOIN_CONTRACT_VERSION, JOIN_MAX_BRANCHES, JOIN_MAX_CONTRACT_BYTES, JOIN_MAX_OUTPUTS, JOIN_MAX_SCHEMA_DEPTH, JoinBranchObligationSchema, JoinContractError, JoinContractSchema, JoinOutputDeclarationSchema, RETRY_RESUME_IDEMPOTENCY_CONTRACT_VERSION, RETRY_RESUME_MAX_ATTEMPTS, RETRY_RESUME_MAX_EVIDENCE, RETRY_RESUME_MAX_RESUMES, RetryResumeContractError, RetryResumeIdempotencyContractSchema, assertEffectRetryEvidence, assertJoinSatisfied, parseEffectRetryEvidence, parseJoinContract, parseRetryResumeIdempotencyContract, serializeJoinContract, } from "./JoinContracts.js";
|
|
33
|
+
export { INTERACTION_MAX_LINEAGE_DEPTH, INTERACTION_MAX_LINEAGE_PATH, INTERACTION_MAX_PAYLOAD_BYTES, INTERACTION_MAX_PAYLOAD_DEPTH, INTERACTION_MAX_PAYLOAD_ITEMS, INTERACTION_MAX_STRING_LENGTH, INTERACTION_REDACTED_VALUE, INTERACTION_VERSION, InteractionContractError, fingerprintInteractionPayload, immutableInteractionSnapshot, parseInteractionAnswer, parseInteractionPayload, redactInteractionDecision, redactInteractionPayload, redactInteractionRequest, redactInteractionString, } from "./InteractionContracts.js";
|
|
34
|
+
export { GRAPH_CONTRACT_VERSION, GRAPH_FRESHNESS_STATES, GRAPH_INDEX_SOURCES, GRAPH_MAX_DEPTH, GRAPH_MAX_FILES_PER_INDEX, GRAPH_MAX_INDEX_BYTES, GRAPH_MAX_ITEMS, GRAPH_MAX_PATH_LENGTH, GRAPH_MAX_RESPONSE_BYTES, GRAPH_MAX_STRING_LENGTH, GRAPH_RELATION_DIRECTIONS, GRAPH_RELATION_KINDS, GRAPH_RESULT_STATES, GRAPH_SEARCH_KINDS, GRAPH_SYMBOL_KINDS, AuthoritativeSourceReadRequestSchema, AuthoritativeSourceSnapshotSchema, GraphContractError, GraphErrorSchema, GraphFreshnessSchema, GraphFreshnessRequestSchema, GraphImpactRequestSchema, GraphIndexFileSchema, GraphIndexRequestSchema, GraphLocationSchema, GraphProvenanceSchema, GraphRangeSchema, GraphRelationSchema, GraphRelationRequestSchema, GraphRepositoryIdentitySchema, GraphResultStatusSchema, GraphScopeSchema, GraphSearchHitSchema, GraphSearchRequestSchema, GraphSymbolSchema, GraphSymbolRequestSchema, GraphWorktreeIdentitySchema, parseAuthoritativeSourceReadRequest, parseGraphImpactRequest, parseGraphFreshnessRequest, parseGraphIndexRequest, parseGraphIndexResponse, parseGraphQueryResponse, parseGraphRelationRequest, parseGraphScope, parseGraphSearchRequest, parseGraphSymbolRequest, serializeGraphContract, } from "./GraphContracts.js";
|
|
35
|
+
export { AGENT_SESSION_CONTRACT_VERSION, AGENT_SESSION_SCHEMA_VERSION, AGENT_SESSION_MAX_EVENT_BYTES, AGENT_SESSION_MAX_PAYLOAD_DEPTH, AGENT_SESSION_MAX_PAYLOAD_ITEMS, AGENT_SESSION_MAX_STRING_LENGTH, AGENT_SESSION_MAX_EVENTS_PER_APPEND, AGENT_SESSION_MAX_PAGE_SIZE, AGENT_SESSION_MAX_SNAPSHOT_BYTES, AGENT_SESSION_EVENT_KINDS, AgentSessionContractError, SessionConcurrencyError, SessionCorruptTailError, ArtifactReferenceSchema, SessionJsonValueSchema, SessionActorSchema, SessionEventSchema, SessionEventInputSchema, parseArtifactReference, parseSessionEvent, parseSessionEventInput, serializeSessionEvent, parseSessionCursor, cursorForSequence, immutableSessionSnapshot, fingerprintSessionEvent, foldSessionEvents, } from "./AgentSessionContracts.js";
|
|
36
|
+
export { CAPABILITY_MANIFEST_VERSION, CAPABILITY_EFFECTS, CAPABILITY_CLASSIFICATIONS, CAPABILITY_DETERMINISM, CAPABILITY_IDEMPOTENCY, CAPABILITY_MATURITY, CapabilityManifestError, parseCapabilityManifest, serializeCapabilityManifest, assessCapabilityManifest, requireAgentEligibleManifest, NodeBase, RESPOND_BRAND, isRespondEnvelope, Trigger, GlobalLogger, GlobalError, BlokError, ErrorCategory, ErrorSeverity, DEFAULT_HTTP_STATUS, DEFAULT_RETRYABLE, isNonRetryableValidationError,
|
|
37
|
+
// #679 — the ONE non-retryable matcher plus the marker the runner uses to
|
|
38
|
+
// hand its verdict to the transports, so step-level and job-level retry can
|
|
39
|
+
// never disagree.
|
|
40
|
+
isNonRetryableError, markNonRetryableStepError, isNonRetryableStepError, WORKFLOW_INPUT_VALIDATION, WorkflowInputValidationError, Metrics, MemoryUsage, mapper, MapperResolutionError, NamedMissingStateError, lowerRefs,
|
|
22
41
|
// The lowering pass's OWN predicates — exported so the normalizer's
|
|
23
42
|
// post-lowering total invariant (#707) tests the identical rule instead of
|
|
24
43
|
// a second hand-written copy that could drift from what `lowerRefs` lowers.
|
|
@@ -5,5 +5,12 @@ type LoggerContext = {
|
|
|
5
5
|
getLogsAsBase64(): string;
|
|
6
6
|
logLevel(level: string, message: string): void;
|
|
7
7
|
error(message: string, stack: string): void;
|
|
8
|
+
/**
|
|
9
|
+
* Would a message at `level` (default `"info"`) actually be emitted? Lets a
|
|
10
|
+
* caller skip building an expensive message — the per-node config JSON in
|
|
11
|
+
* `BlokService.run` — that the logger would only drop. Optional: a logger
|
|
12
|
+
* that doesn't implement it is treated as always emitting.
|
|
13
|
+
*/
|
|
14
|
+
isLevelEnabled?(level?: string): boolean;
|
|
8
15
|
};
|
|
9
16
|
export default LoggerContext;
|
package/dist/utils/Mapper.d.ts
CHANGED
|
@@ -58,6 +58,20 @@ import type ParamsDictionary from "../types/ParamsDictionary.js";
|
|
|
58
58
|
* tests can flip the mode between cases.
|
|
59
59
|
*/
|
|
60
60
|
export type MapperMode = "warn" | "strict" | "silent";
|
|
61
|
+
/**
|
|
62
|
+
* Copy exactly what {@link Mapper.replaceObjectStrings} can mutate — the plain
|
|
63
|
+
* objects and arrays it recurses into — and SHARE everything else by reference.
|
|
64
|
+
* Resolving a copy leaves the caller's object pristine, which is what lets a
|
|
65
|
+
* step's config slice be resolved per execution (per forEach iteration, per
|
|
66
|
+
* retry) from the same unresolved source (#874).
|
|
67
|
+
*
|
|
68
|
+
* Deliberately not `_.cloneDeep`: this runs on every node execution, and a full
|
|
69
|
+
* deep clone would also walk the framework instances hanging off a flow step's
|
|
70
|
+
* slice (`steps: RunnerNode[]`) — expensive, and the mapper never touches them.
|
|
71
|
+
* Same `isPlainContainer` rule as the walker, so "cloned" and "mutable" are the
|
|
72
|
+
* same set by construction.
|
|
73
|
+
*/
|
|
74
|
+
export declare function cloneResolvable<T>(value: T): T;
|
|
61
75
|
declare class Mapper {
|
|
62
76
|
/**
|
|
63
77
|
* Walk an object recursively, resolving every string value via
|
package/dist/utils/Mapper.js
CHANGED
|
@@ -253,6 +253,38 @@ function isPlainContainer(value) {
|
|
|
253
253
|
const proto = Object.getPrototypeOf(value);
|
|
254
254
|
return proto === Object.prototype || proto === null;
|
|
255
255
|
}
|
|
256
|
+
/**
|
|
257
|
+
* Copy exactly what {@link Mapper.replaceObjectStrings} can mutate — the plain
|
|
258
|
+
* objects and arrays it recurses into — and SHARE everything else by reference.
|
|
259
|
+
* Resolving a copy leaves the caller's object pristine, which is what lets a
|
|
260
|
+
* step's config slice be resolved per execution (per forEach iteration, per
|
|
261
|
+
* retry) from the same unresolved source (#874).
|
|
262
|
+
*
|
|
263
|
+
* Deliberately not `_.cloneDeep`: this runs on every node execution, and a full
|
|
264
|
+
* deep clone would also walk the framework instances hanging off a flow step's
|
|
265
|
+
* slice (`steps: RunnerNode[]`) — expensive, and the mapper never touches them.
|
|
266
|
+
* Same `isPlainContainer` rule as the walker, so "cloned" and "mutable" are the
|
|
267
|
+
* same set by construction.
|
|
268
|
+
*/
|
|
269
|
+
export function cloneResolvable(value) {
|
|
270
|
+
if (value === null || typeof value !== "object")
|
|
271
|
+
return value;
|
|
272
|
+
if (Array.isArray(value)) {
|
|
273
|
+
const out = new Array(value.length);
|
|
274
|
+
for (let i = 0; i < value.length; i++)
|
|
275
|
+
out[i] = cloneResolvable(value[i]);
|
|
276
|
+
return out;
|
|
277
|
+
}
|
|
278
|
+
if (!isPlainContainer(value))
|
|
279
|
+
return value;
|
|
280
|
+
const out = {};
|
|
281
|
+
for (const key in value) {
|
|
282
|
+
if (Object.prototype.hasOwnProperty.call(value, key)) {
|
|
283
|
+
out[key] = cloneResolvable(value[key]);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return out;
|
|
287
|
+
}
|
|
256
288
|
// =============================================================================
|
|
257
289
|
// Mapper
|
|
258
290
|
// =============================================================================
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blokjs/shared",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"files": ["dist"],
|
|
5
5
|
"description": "Shared class, interfaces and types",
|
|
6
6
|
"type": "module",
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"dayjs": "^1.11.19",
|
|
26
|
-
"lodash": "^4.17.21"
|
|
26
|
+
"lodash": "^4.17.21",
|
|
27
|
+
"zod": "^3.24.2"
|
|
27
28
|
},
|
|
28
29
|
"private": false,
|
|
29
30
|
"publishConfig": {
|