@handlebar/governance-schema 0.0.1

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/README.md ADDED
@@ -0,0 +1,44 @@
1
+ # Handlebar Governance Schema
2
+
3
+ Schemas and types for [Handlebar] rules.
4
+
5
+ _Note: This package in early development and the interface is subject to change._
6
+
7
+ ## Roadmap
8
+
9
+ Handlebar is in early development. We have a lot of functionality planned,
10
+ but need your feedback on what you need to help you build better agents.
11
+
12
+ - Refer to the [roadmap][root_roadmap] to see what we're cooking.
13
+ - Please feel free to [open an issue](https://github.com/gethandlebar/handlebar-js/issues/new) if you have any feedback or suggestions
14
+ - or [join our Discord][discord_invite] to talk to us directly
15
+
16
+ See [contributing][root_contributing] for more ways to get in touch and help.
17
+
18
+ ## Getting started
19
+
20
+ This package should be used alongside a framework-specific Handlebar SDK,
21
+ such as [ai-sdk-v5](https://github.com/gethandlebar/handlebar-js/blob/main/packages/ai-sdk-v5/).
22
+ Refer to that package's README for more information.
23
+
24
+ Please refer to [`./examples/`][examples] for a runable demo of [Handlebar]
25
+ applied to an ai sdk agent.
26
+
27
+ **N.b. Our developer docs are incoming.**
28
+
29
+ ## Contributing
30
+
31
+ We welcome contributions from the community: bug reports, feedback, feature requests
32
+ Please refer to [CONTRIBUTING.md][root_contributing]
33
+ for ways you can help,
34
+ and guidelines.
35
+
36
+ ## About Handlebar
37
+
38
+ Find out more at https://gethandlebar.com
39
+
40
+ [handlebar]: https://gethandlebar.com
41
+ [root_roadmap]: https://github.com/gethandlebar/handlebar-js/blob/main/ROADMAP.md
42
+ [root_contributing]: https://github.com/gethandlebar/handlebar-js/blob/main/CONTRIBUTING.md
43
+ [examples]: https://github.com/gethandlebar/handlebar-js/blob/main/examples/ai-sdk-v5/
44
+ [discord_invite]: https://discord.gg/Q6xwvccg
@@ -0,0 +1,459 @@
1
+ import { z } from "zod";
2
+ export declare const RunStartedEventSchema: z.ZodObject<{
3
+ schema: z.ZodLiteral<"handlebar.audit.v1">;
4
+ ts: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>;
5
+ runId: z.ZodString;
6
+ stepIndex: z.ZodOptional<z.ZodNumber>;
7
+ decisionId: z.ZodOptional<z.ZodString>;
8
+ user: z.ZodOptional<z.ZodObject<{
9
+ userId: z.ZodOptional<z.ZodString>;
10
+ userCategory: z.ZodOptional<z.ZodString>;
11
+ sessionId: z.ZodOptional<z.ZodString>;
12
+ }, z.core.$strip>>;
13
+ otel: z.ZodOptional<z.ZodObject<{
14
+ traceId: z.ZodOptional<z.ZodString>;
15
+ spanId: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>>;
17
+ sample: z.ZodOptional<z.ZodObject<{
18
+ rate: z.ZodOptional<z.ZodNumber>;
19
+ reason: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$strip>>;
21
+ redaction: z.ZodOptional<z.ZodObject<{
22
+ level: z.ZodOptional<z.ZodEnum<{
23
+ none: "none";
24
+ partial: "partial";
25
+ strict: "strict";
26
+ }>>;
27
+ }, z.core.$strip>>;
28
+ kind: z.ZodLiteral<"run.started">;
29
+ data: z.ZodObject<{
30
+ agent: z.ZodObject<{
31
+ framework: z.ZodOptional<z.ZodString>;
32
+ version: z.ZodOptional<z.ZodString>;
33
+ id: z.ZodOptional<z.ZodString>;
34
+ name: z.ZodOptional<z.ZodString>;
35
+ }, z.core.$strip>;
36
+ model: z.ZodOptional<z.ZodObject<{
37
+ provider: z.ZodOptional<z.ZodString>;
38
+ name: z.ZodOptional<z.ZodString>;
39
+ }, z.core.$strip>>;
40
+ adapter: z.ZodObject<{
41
+ name: z.ZodString;
42
+ version: z.ZodOptional<z.ZodString>;
43
+ }, z.core.$strip>;
44
+ policy: z.ZodOptional<z.ZodObject<{
45
+ version: z.ZodOptional<z.ZodString>;
46
+ ruleCount: z.ZodOptional<z.ZodNumber>;
47
+ sequenceId: z.ZodOptional<z.ZodString>;
48
+ }, z.core.$strip>>;
49
+ request: z.ZodOptional<z.ZodObject<{
50
+ id: z.ZodOptional<z.ZodString>;
51
+ traceparent: z.ZodOptional<z.ZodString>;
52
+ }, z.core.$strip>>;
53
+ }, z.core.$strip>;
54
+ }, z.core.$strip>;
55
+ export declare const ToolDecisionEventSchema: z.ZodObject<{
56
+ schema: z.ZodLiteral<"handlebar.audit.v1">;
57
+ ts: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>;
58
+ runId: z.ZodString;
59
+ stepIndex: z.ZodOptional<z.ZodNumber>;
60
+ decisionId: z.ZodOptional<z.ZodString>;
61
+ user: z.ZodOptional<z.ZodObject<{
62
+ userId: z.ZodOptional<z.ZodString>;
63
+ userCategory: z.ZodOptional<z.ZodString>;
64
+ sessionId: z.ZodOptional<z.ZodString>;
65
+ }, z.core.$strip>>;
66
+ otel: z.ZodOptional<z.ZodObject<{
67
+ traceId: z.ZodOptional<z.ZodString>;
68
+ spanId: z.ZodOptional<z.ZodString>;
69
+ }, z.core.$strip>>;
70
+ sample: z.ZodOptional<z.ZodObject<{
71
+ rate: z.ZodOptional<z.ZodNumber>;
72
+ reason: z.ZodOptional<z.ZodString>;
73
+ }, z.core.$strip>>;
74
+ redaction: z.ZodOptional<z.ZodObject<{
75
+ level: z.ZodOptional<z.ZodEnum<{
76
+ none: "none";
77
+ partial: "partial";
78
+ strict: "strict";
79
+ }>>;
80
+ }, z.core.$strip>>;
81
+ kind: z.ZodLiteral<"tool.decision">;
82
+ data: z.ZodObject<{
83
+ effect: z.ZodCustom<import("./governance-actions").GovernanceEffect, import("./governance-actions").GovernanceEffect>;
84
+ code: z.ZodCustom<import("./governance-actions").GovernanceCode, import("./governance-actions").GovernanceCode>;
85
+ matchedRuleIds: z.ZodArray<z.ZodUUID>;
86
+ appliedActions: z.ZodArray<z.ZodObject<{
87
+ type: z.ZodCustom<"allow" | "block" | "notify" | "log" | "hitl", "allow" | "block" | "notify" | "log" | "hitl">;
88
+ ruleId: z.ZodUUID;
89
+ }, z.core.$strip>>;
90
+ reason: z.ZodOptional<z.ZodString>;
91
+ tool: z.ZodObject<{
92
+ name: z.ZodString;
93
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
94
+ }, z.core.$strip>;
95
+ counters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
96
+ latencyMs: z.ZodOptional<z.ZodNumber>;
97
+ argsMeta: z.ZodOptional<z.ZodObject<{
98
+ redacted: z.ZodBoolean;
99
+ redactedFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
100
+ sizeBytesApprox: z.ZodOptional<z.ZodNumber>;
101
+ }, z.core.$strip>>;
102
+ }, z.core.$strip>;
103
+ }, z.core.$strip>;
104
+ export declare const ToolResultEventSchema: z.ZodObject<{
105
+ schema: z.ZodLiteral<"handlebar.audit.v1">;
106
+ ts: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>;
107
+ runId: z.ZodString;
108
+ stepIndex: z.ZodOptional<z.ZodNumber>;
109
+ decisionId: z.ZodOptional<z.ZodString>;
110
+ user: z.ZodOptional<z.ZodObject<{
111
+ userId: z.ZodOptional<z.ZodString>;
112
+ userCategory: z.ZodOptional<z.ZodString>;
113
+ sessionId: z.ZodOptional<z.ZodString>;
114
+ }, z.core.$strip>>;
115
+ otel: z.ZodOptional<z.ZodObject<{
116
+ traceId: z.ZodOptional<z.ZodString>;
117
+ spanId: z.ZodOptional<z.ZodString>;
118
+ }, z.core.$strip>>;
119
+ sample: z.ZodOptional<z.ZodObject<{
120
+ rate: z.ZodOptional<z.ZodNumber>;
121
+ reason: z.ZodOptional<z.ZodString>;
122
+ }, z.core.$strip>>;
123
+ redaction: z.ZodOptional<z.ZodObject<{
124
+ level: z.ZodOptional<z.ZodEnum<{
125
+ none: "none";
126
+ partial: "partial";
127
+ strict: "strict";
128
+ }>>;
129
+ }, z.core.$strip>>;
130
+ kind: z.ZodLiteral<"tool.result">;
131
+ data: z.ZodObject<{
132
+ tool: z.ZodObject<{
133
+ name: z.ZodString;
134
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
135
+ }, z.core.$strip>;
136
+ outcome: z.ZodEnum<{
137
+ success: "success";
138
+ error: "error";
139
+ }>;
140
+ durationMs: z.ZodOptional<z.ZodNumber>;
141
+ counters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
142
+ error: z.ZodOptional<z.ZodObject<{
143
+ name: z.ZodOptional<z.ZodString>;
144
+ message: z.ZodOptional<z.ZodString>;
145
+ stack: z.ZodOptional<z.ZodString>;
146
+ }, z.core.$strip>>;
147
+ resultMeta: z.ZodOptional<z.ZodObject<{
148
+ redacted: z.ZodBoolean;
149
+ redactedFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
150
+ sizeBytesApprox: z.ZodOptional<z.ZodNumber>;
151
+ }, z.core.$strip>>;
152
+ }, z.core.$strip>;
153
+ }, z.core.$strip>;
154
+ export declare const RunEndedEventSchema: z.ZodObject<{
155
+ schema: z.ZodLiteral<"handlebar.audit.v1">;
156
+ ts: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>;
157
+ runId: z.ZodString;
158
+ stepIndex: z.ZodOptional<z.ZodNumber>;
159
+ decisionId: z.ZodOptional<z.ZodString>;
160
+ user: z.ZodOptional<z.ZodObject<{
161
+ userId: z.ZodOptional<z.ZodString>;
162
+ userCategory: z.ZodOptional<z.ZodString>;
163
+ sessionId: z.ZodOptional<z.ZodString>;
164
+ }, z.core.$strip>>;
165
+ otel: z.ZodOptional<z.ZodObject<{
166
+ traceId: z.ZodOptional<z.ZodString>;
167
+ spanId: z.ZodOptional<z.ZodString>;
168
+ }, z.core.$strip>>;
169
+ sample: z.ZodOptional<z.ZodObject<{
170
+ rate: z.ZodOptional<z.ZodNumber>;
171
+ reason: z.ZodOptional<z.ZodString>;
172
+ }, z.core.$strip>>;
173
+ redaction: z.ZodOptional<z.ZodObject<{
174
+ level: z.ZodOptional<z.ZodEnum<{
175
+ none: "none";
176
+ partial: "partial";
177
+ strict: "strict";
178
+ }>>;
179
+ }, z.core.$strip>>;
180
+ kind: z.ZodLiteral<"run.ended">;
181
+ data: z.ZodObject<{
182
+ status: z.ZodEnum<{
183
+ error: "error";
184
+ ok: "ok";
185
+ blocked: "blocked";
186
+ }>;
187
+ totalSteps: z.ZodNumber;
188
+ firstErrorDecisionId: z.ZodOptional<z.ZodString>;
189
+ summary: z.ZodOptional<z.ZodString>;
190
+ }, z.core.$strip>;
191
+ }, z.core.$strip>;
192
+ export declare const ErrorEventSchema: z.ZodObject<{
193
+ schema: z.ZodLiteral<"handlebar.audit.v1">;
194
+ ts: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>;
195
+ runId: z.ZodString;
196
+ stepIndex: z.ZodOptional<z.ZodNumber>;
197
+ decisionId: z.ZodOptional<z.ZodString>;
198
+ user: z.ZodOptional<z.ZodObject<{
199
+ userId: z.ZodOptional<z.ZodString>;
200
+ userCategory: z.ZodOptional<z.ZodString>;
201
+ sessionId: z.ZodOptional<z.ZodString>;
202
+ }, z.core.$strip>>;
203
+ otel: z.ZodOptional<z.ZodObject<{
204
+ traceId: z.ZodOptional<z.ZodString>;
205
+ spanId: z.ZodOptional<z.ZodString>;
206
+ }, z.core.$strip>>;
207
+ sample: z.ZodOptional<z.ZodObject<{
208
+ rate: z.ZodOptional<z.ZodNumber>;
209
+ reason: z.ZodOptional<z.ZodString>;
210
+ }, z.core.$strip>>;
211
+ redaction: z.ZodOptional<z.ZodObject<{
212
+ level: z.ZodOptional<z.ZodEnum<{
213
+ none: "none";
214
+ partial: "partial";
215
+ strict: "strict";
216
+ }>>;
217
+ }, z.core.$strip>>;
218
+ kind: z.ZodLiteral<"error">;
219
+ data: z.ZodObject<{
220
+ scope: z.ZodEnum<{
221
+ agent: "agent";
222
+ adapter: "adapter";
223
+ governance: "governance";
224
+ transport: "transport";
225
+ }>;
226
+ message: z.ZodString;
227
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
228
+ fatal: z.ZodOptional<z.ZodBoolean>;
229
+ }, z.core.$strip>;
230
+ }, z.core.$strip>;
231
+ export declare const AuditEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
232
+ schema: z.ZodLiteral<"handlebar.audit.v1">;
233
+ ts: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>;
234
+ runId: z.ZodString;
235
+ stepIndex: z.ZodOptional<z.ZodNumber>;
236
+ decisionId: z.ZodOptional<z.ZodString>;
237
+ user: z.ZodOptional<z.ZodObject<{
238
+ userId: z.ZodOptional<z.ZodString>;
239
+ userCategory: z.ZodOptional<z.ZodString>;
240
+ sessionId: z.ZodOptional<z.ZodString>;
241
+ }, z.core.$strip>>;
242
+ otel: z.ZodOptional<z.ZodObject<{
243
+ traceId: z.ZodOptional<z.ZodString>;
244
+ spanId: z.ZodOptional<z.ZodString>;
245
+ }, z.core.$strip>>;
246
+ sample: z.ZodOptional<z.ZodObject<{
247
+ rate: z.ZodOptional<z.ZodNumber>;
248
+ reason: z.ZodOptional<z.ZodString>;
249
+ }, z.core.$strip>>;
250
+ redaction: z.ZodOptional<z.ZodObject<{
251
+ level: z.ZodOptional<z.ZodEnum<{
252
+ none: "none";
253
+ partial: "partial";
254
+ strict: "strict";
255
+ }>>;
256
+ }, z.core.$strip>>;
257
+ kind: z.ZodLiteral<"run.started">;
258
+ data: z.ZodObject<{
259
+ agent: z.ZodObject<{
260
+ framework: z.ZodOptional<z.ZodString>;
261
+ version: z.ZodOptional<z.ZodString>;
262
+ id: z.ZodOptional<z.ZodString>;
263
+ name: z.ZodOptional<z.ZodString>;
264
+ }, z.core.$strip>;
265
+ model: z.ZodOptional<z.ZodObject<{
266
+ provider: z.ZodOptional<z.ZodString>;
267
+ name: z.ZodOptional<z.ZodString>;
268
+ }, z.core.$strip>>;
269
+ adapter: z.ZodObject<{
270
+ name: z.ZodString;
271
+ version: z.ZodOptional<z.ZodString>;
272
+ }, z.core.$strip>;
273
+ policy: z.ZodOptional<z.ZodObject<{
274
+ version: z.ZodOptional<z.ZodString>;
275
+ ruleCount: z.ZodOptional<z.ZodNumber>;
276
+ sequenceId: z.ZodOptional<z.ZodString>;
277
+ }, z.core.$strip>>;
278
+ request: z.ZodOptional<z.ZodObject<{
279
+ id: z.ZodOptional<z.ZodString>;
280
+ traceparent: z.ZodOptional<z.ZodString>;
281
+ }, z.core.$strip>>;
282
+ }, z.core.$strip>;
283
+ }, z.core.$strip>, z.ZodObject<{
284
+ schema: z.ZodLiteral<"handlebar.audit.v1">;
285
+ ts: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>;
286
+ runId: z.ZodString;
287
+ stepIndex: z.ZodOptional<z.ZodNumber>;
288
+ decisionId: z.ZodOptional<z.ZodString>;
289
+ user: z.ZodOptional<z.ZodObject<{
290
+ userId: z.ZodOptional<z.ZodString>;
291
+ userCategory: z.ZodOptional<z.ZodString>;
292
+ sessionId: z.ZodOptional<z.ZodString>;
293
+ }, z.core.$strip>>;
294
+ otel: z.ZodOptional<z.ZodObject<{
295
+ traceId: z.ZodOptional<z.ZodString>;
296
+ spanId: z.ZodOptional<z.ZodString>;
297
+ }, z.core.$strip>>;
298
+ sample: z.ZodOptional<z.ZodObject<{
299
+ rate: z.ZodOptional<z.ZodNumber>;
300
+ reason: z.ZodOptional<z.ZodString>;
301
+ }, z.core.$strip>>;
302
+ redaction: z.ZodOptional<z.ZodObject<{
303
+ level: z.ZodOptional<z.ZodEnum<{
304
+ none: "none";
305
+ partial: "partial";
306
+ strict: "strict";
307
+ }>>;
308
+ }, z.core.$strip>>;
309
+ kind: z.ZodLiteral<"tool.decision">;
310
+ data: z.ZodObject<{
311
+ effect: z.ZodCustom<import("./governance-actions").GovernanceEffect, import("./governance-actions").GovernanceEffect>;
312
+ code: z.ZodCustom<import("./governance-actions").GovernanceCode, import("./governance-actions").GovernanceCode>;
313
+ matchedRuleIds: z.ZodArray<z.ZodUUID>;
314
+ appliedActions: z.ZodArray<z.ZodObject<{
315
+ type: z.ZodCustom<"allow" | "block" | "notify" | "log" | "hitl", "allow" | "block" | "notify" | "log" | "hitl">;
316
+ ruleId: z.ZodUUID;
317
+ }, z.core.$strip>>;
318
+ reason: z.ZodOptional<z.ZodString>;
319
+ tool: z.ZodObject<{
320
+ name: z.ZodString;
321
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
322
+ }, z.core.$strip>;
323
+ counters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
324
+ latencyMs: z.ZodOptional<z.ZodNumber>;
325
+ argsMeta: z.ZodOptional<z.ZodObject<{
326
+ redacted: z.ZodBoolean;
327
+ redactedFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
328
+ sizeBytesApprox: z.ZodOptional<z.ZodNumber>;
329
+ }, z.core.$strip>>;
330
+ }, z.core.$strip>;
331
+ }, z.core.$strip>, z.ZodObject<{
332
+ schema: z.ZodLiteral<"handlebar.audit.v1">;
333
+ ts: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>;
334
+ runId: z.ZodString;
335
+ stepIndex: z.ZodOptional<z.ZodNumber>;
336
+ decisionId: z.ZodOptional<z.ZodString>;
337
+ user: z.ZodOptional<z.ZodObject<{
338
+ userId: z.ZodOptional<z.ZodString>;
339
+ userCategory: z.ZodOptional<z.ZodString>;
340
+ sessionId: z.ZodOptional<z.ZodString>;
341
+ }, z.core.$strip>>;
342
+ otel: z.ZodOptional<z.ZodObject<{
343
+ traceId: z.ZodOptional<z.ZodString>;
344
+ spanId: z.ZodOptional<z.ZodString>;
345
+ }, z.core.$strip>>;
346
+ sample: z.ZodOptional<z.ZodObject<{
347
+ rate: z.ZodOptional<z.ZodNumber>;
348
+ reason: z.ZodOptional<z.ZodString>;
349
+ }, z.core.$strip>>;
350
+ redaction: z.ZodOptional<z.ZodObject<{
351
+ level: z.ZodOptional<z.ZodEnum<{
352
+ none: "none";
353
+ partial: "partial";
354
+ strict: "strict";
355
+ }>>;
356
+ }, z.core.$strip>>;
357
+ kind: z.ZodLiteral<"tool.result">;
358
+ data: z.ZodObject<{
359
+ tool: z.ZodObject<{
360
+ name: z.ZodString;
361
+ categories: z.ZodOptional<z.ZodArray<z.ZodString>>;
362
+ }, z.core.$strip>;
363
+ outcome: z.ZodEnum<{
364
+ success: "success";
365
+ error: "error";
366
+ }>;
367
+ durationMs: z.ZodOptional<z.ZodNumber>;
368
+ counters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
369
+ error: z.ZodOptional<z.ZodObject<{
370
+ name: z.ZodOptional<z.ZodString>;
371
+ message: z.ZodOptional<z.ZodString>;
372
+ stack: z.ZodOptional<z.ZodString>;
373
+ }, z.core.$strip>>;
374
+ resultMeta: z.ZodOptional<z.ZodObject<{
375
+ redacted: z.ZodBoolean;
376
+ redactedFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
377
+ sizeBytesApprox: z.ZodOptional<z.ZodNumber>;
378
+ }, z.core.$strip>>;
379
+ }, z.core.$strip>;
380
+ }, z.core.$strip>, z.ZodObject<{
381
+ schema: z.ZodLiteral<"handlebar.audit.v1">;
382
+ ts: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>;
383
+ runId: z.ZodString;
384
+ stepIndex: z.ZodOptional<z.ZodNumber>;
385
+ decisionId: z.ZodOptional<z.ZodString>;
386
+ user: z.ZodOptional<z.ZodObject<{
387
+ userId: z.ZodOptional<z.ZodString>;
388
+ userCategory: z.ZodOptional<z.ZodString>;
389
+ sessionId: z.ZodOptional<z.ZodString>;
390
+ }, z.core.$strip>>;
391
+ otel: z.ZodOptional<z.ZodObject<{
392
+ traceId: z.ZodOptional<z.ZodString>;
393
+ spanId: z.ZodOptional<z.ZodString>;
394
+ }, z.core.$strip>>;
395
+ sample: z.ZodOptional<z.ZodObject<{
396
+ rate: z.ZodOptional<z.ZodNumber>;
397
+ reason: z.ZodOptional<z.ZodString>;
398
+ }, z.core.$strip>>;
399
+ redaction: z.ZodOptional<z.ZodObject<{
400
+ level: z.ZodOptional<z.ZodEnum<{
401
+ none: "none";
402
+ partial: "partial";
403
+ strict: "strict";
404
+ }>>;
405
+ }, z.core.$strip>>;
406
+ kind: z.ZodLiteral<"run.ended">;
407
+ data: z.ZodObject<{
408
+ status: z.ZodEnum<{
409
+ error: "error";
410
+ ok: "ok";
411
+ blocked: "blocked";
412
+ }>;
413
+ totalSteps: z.ZodNumber;
414
+ firstErrorDecisionId: z.ZodOptional<z.ZodString>;
415
+ summary: z.ZodOptional<z.ZodString>;
416
+ }, z.core.$strip>;
417
+ }, z.core.$strip>, z.ZodObject<{
418
+ schema: z.ZodLiteral<"handlebar.audit.v1">;
419
+ ts: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDate>;
420
+ runId: z.ZodString;
421
+ stepIndex: z.ZodOptional<z.ZodNumber>;
422
+ decisionId: z.ZodOptional<z.ZodString>;
423
+ user: z.ZodOptional<z.ZodObject<{
424
+ userId: z.ZodOptional<z.ZodString>;
425
+ userCategory: z.ZodOptional<z.ZodString>;
426
+ sessionId: z.ZodOptional<z.ZodString>;
427
+ }, z.core.$strip>>;
428
+ otel: z.ZodOptional<z.ZodObject<{
429
+ traceId: z.ZodOptional<z.ZodString>;
430
+ spanId: z.ZodOptional<z.ZodString>;
431
+ }, z.core.$strip>>;
432
+ sample: z.ZodOptional<z.ZodObject<{
433
+ rate: z.ZodOptional<z.ZodNumber>;
434
+ reason: z.ZodOptional<z.ZodString>;
435
+ }, z.core.$strip>>;
436
+ redaction: z.ZodOptional<z.ZodObject<{
437
+ level: z.ZodOptional<z.ZodEnum<{
438
+ none: "none";
439
+ partial: "partial";
440
+ strict: "strict";
441
+ }>>;
442
+ }, z.core.$strip>>;
443
+ kind: z.ZodLiteral<"error">;
444
+ data: z.ZodObject<{
445
+ scope: z.ZodEnum<{
446
+ agent: "agent";
447
+ adapter: "adapter";
448
+ governance: "governance";
449
+ transport: "transport";
450
+ }>;
451
+ message: z.ZodString;
452
+ details: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
453
+ fatal: z.ZodOptional<z.ZodBoolean>;
454
+ }, z.core.$strip>;
455
+ }, z.core.$strip>], "kind">;
456
+ export type AuditEvent = z.infer<typeof AuditEventSchema>;
457
+ export type AuditEventByKind = {
458
+ [E in AuditEvent as E["kind"]]: E;
459
+ };
@@ -0,0 +1,21 @@
1
+ import { z } from "zod";
2
+ export type GovernanceEffect = "allow" | "block";
3
+ type RuleAction = "allow" | "block" | "notify" | "log" | "hitl";
4
+ export type GovernanceCode = "BLOCKED_UNCATEGORISED" | "BLOCKED_RULE" | "BLOCKED_CUSTOM" | "ALLOWED" | "NO_OP";
5
+ export declare const AppliedActionSchema: z.ZodObject<{
6
+ type: z.ZodCustom<RuleAction, RuleAction>;
7
+ ruleId: z.ZodUUID;
8
+ }, z.core.$strip>;
9
+ export declare const GovernanceDecisionSchema: z.ZodObject<{
10
+ effect: z.ZodCustom<GovernanceEffect, GovernanceEffect>;
11
+ code: z.ZodCustom<GovernanceCode, GovernanceCode>;
12
+ matchedRuleIds: z.ZodArray<z.ZodUUID>;
13
+ appliedActions: z.ZodArray<z.ZodObject<{
14
+ type: z.ZodCustom<RuleAction, RuleAction>;
15
+ ruleId: z.ZodUUID;
16
+ }, z.core.$strip>>;
17
+ reason: z.ZodOptional<z.ZodString>;
18
+ }, z.core.$strip>;
19
+ export type GovernanceDecision = z.infer<typeof GovernanceDecisionSchema>;
20
+ export type AppliedAction = z.infer<typeof AppliedActionSchema>;
21
+ export {};
@@ -0,0 +1,17 @@
1
+ export type GovernanceEffect = "allow" | "block";
2
+ export type GovernanceCode = "BLOCKED_UNCATEGORISED" | "BLOCKED_RULE" | "BLOCKED_CUSTOM" | "ALLOWED" | "NO_OP";
3
+ export type GovernanceDecision = {
4
+ effect: GovernanceEffect;
5
+ /** which rules matched */
6
+ matchedRuleIds: string[];
7
+ /** which actions were applied (allow, block, notify, etc.) */
8
+ appliedActions: AppliedAction[];
9
+ /** any human-readable summary for logs */
10
+ reason?: string;
11
+ /** engine-internal code for telemetry */
12
+ code: GovernanceCode;
13
+ };
14
+ export type AppliedAction = {
15
+ type: "allow" | "block" | "notify" | "log" | "hitl";
16
+ ruleId: string;
17
+ };
@@ -0,0 +1,5 @@
1
+ export * from "./audit/events";
2
+ export * from "./audit/governance-actions";
3
+ export * from "./rules/action.types";
4
+ export * from "./rules/condition.types";
5
+ export * from "./rules/rule.types";