recoder-a2a-sdk 1.0.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/audit-helpers.d.mts +209 -0
- package/dist/audit-helpers.d.ts +209 -0
- package/dist/audit-helpers.js +905 -0
- package/dist/audit-helpers.js.map +1 -0
- package/dist/audit-helpers.mjs +34 -0
- package/dist/audit-helpers.mjs.map +1 -0
- package/dist/chunk-7GY5FFBI.mjs +117 -0
- package/dist/chunk-7GY5FFBI.mjs.map +1 -0
- package/dist/chunk-AGD6G5N6.mjs +141 -0
- package/dist/chunk-AGD6G5N6.mjs.map +1 -0
- package/dist/chunk-BWCRJDUB.mjs +357 -0
- package/dist/chunk-BWCRJDUB.mjs.map +1 -0
- package/dist/chunk-DPFH2JIC.mjs +141 -0
- package/dist/chunk-DPFH2JIC.mjs.map +1 -0
- package/dist/chunk-EP2GHC3R.mjs +116 -0
- package/dist/chunk-EP2GHC3R.mjs.map +1 -0
- package/dist/chunk-JOZQDX7A.mjs +359 -0
- package/dist/chunk-JOZQDX7A.mjs.map +1 -0
- package/dist/chunk-MAA7JZ2Q.mjs +142 -0
- package/dist/chunk-MAA7JZ2Q.mjs.map +1 -0
- package/dist/chunk-QVOOBAUA.mjs +140 -0
- package/dist/chunk-QVOOBAUA.mjs.map +1 -0
- package/dist/chunk-T5GUBIFZ.mjs +358 -0
- package/dist/chunk-T5GUBIFZ.mjs.map +1 -0
- package/dist/chunk-WLNW7Y2H.mjs +636 -0
- package/dist/chunk-WLNW7Y2H.mjs.map +1 -0
- package/dist/chunk-XSELW6DU.mjs +356 -0
- package/dist/chunk-XSELW6DU.mjs.map +1 -0
- package/dist/envelope-builders.d.mts +189 -0
- package/dist/envelope-builders.d.ts +189 -0
- package/dist/envelope-builders.js +652 -0
- package/dist/envelope-builders.js.map +1 -0
- package/dist/envelope-builders.mjs +20 -0
- package/dist/envelope-builders.mjs.map +1 -0
- package/dist/error-mapping.d.mts +132 -0
- package/dist/error-mapping.d.ts +132 -0
- package/dist/error-mapping.js +642 -0
- package/dist/error-mapping.js.map +1 -0
- package/dist/error-mapping.mjs +16 -0
- package/dist/error-mapping.mjs.map +1 -0
- package/dist/index.d.mts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +1798 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +153 -0
- package/dist/index.mjs.map +1 -0
- package/dist/state-mapping.d.mts +139 -0
- package/dist/state-mapping.d.ts +139 -0
- package/dist/state-mapping.js +641 -0
- package/dist/state-mapping.js.map +1 -0
- package/dist/state-mapping.mjs +28 -0
- package/dist/state-mapping.mjs.map +1 -0
- package/dist/validation.d.mts +117 -0
- package/dist/validation.d.ts +117 -0
- package/dist/validation.js +850 -0
- package/dist/validation.js.map +1 -0
- package/dist/validation.mjs +22 -0
- package/dist/validation.mjs.map +1 -0
- package/package.json +18 -0
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
// src/audit-helpers.ts
|
|
2
|
+
import {
|
|
3
|
+
AuditEventTypeEnum,
|
|
4
|
+
AuditActorKindEnum,
|
|
5
|
+
AuditTargetKindEnum,
|
|
6
|
+
AuditSeverityEnum,
|
|
7
|
+
createAuditEvent
|
|
8
|
+
} from "@recoder/shared/a2a/schemas";
|
|
9
|
+
function agentActor(agentId, platform, name) {
|
|
10
|
+
return {
|
|
11
|
+
kind: AuditActorKindEnum.Agent,
|
|
12
|
+
id: agentId,
|
|
13
|
+
platform,
|
|
14
|
+
name
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function connectorActor(connectorId, platform, name) {
|
|
18
|
+
return {
|
|
19
|
+
kind: AuditActorKindEnum.Connector,
|
|
20
|
+
id: connectorId,
|
|
21
|
+
platform,
|
|
22
|
+
name
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function systemActor(systemId = "control-plane") {
|
|
26
|
+
return {
|
|
27
|
+
kind: AuditActorKindEnum.System,
|
|
28
|
+
id: systemId,
|
|
29
|
+
name: "A2A Control Plane"
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function taskTarget(taskId) {
|
|
33
|
+
return {
|
|
34
|
+
kind: AuditTargetKindEnum.Task,
|
|
35
|
+
id: taskId
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function connectorTarget(connectorId, name) {
|
|
39
|
+
return {
|
|
40
|
+
kind: AuditTargetKindEnum.Connector,
|
|
41
|
+
id: connectorId,
|
|
42
|
+
name
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function emitTaskSubmitted(input) {
|
|
46
|
+
return createAuditEvent({
|
|
47
|
+
id: input.id,
|
|
48
|
+
event_type: AuditEventTypeEnum.TaskSubmitted,
|
|
49
|
+
severity: AuditSeverityEnum.Info,
|
|
50
|
+
actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),
|
|
51
|
+
target: taskTarget(input.task_id),
|
|
52
|
+
trace_id: input.trace_id,
|
|
53
|
+
workspace_id: input.workspace_id,
|
|
54
|
+
thread_id: input.thread_id,
|
|
55
|
+
task_id: input.task_id,
|
|
56
|
+
parent_event_id: input.parent_event_id,
|
|
57
|
+
metadata: input.metadata,
|
|
58
|
+
tags: input.tags,
|
|
59
|
+
now: input.now
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function emitTaskStarted(input) {
|
|
63
|
+
return createAuditEvent({
|
|
64
|
+
id: input.id,
|
|
65
|
+
event_type: AuditEventTypeEnum.TaskStarted,
|
|
66
|
+
severity: AuditSeverityEnum.Info,
|
|
67
|
+
actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),
|
|
68
|
+
target: taskTarget(input.task_id),
|
|
69
|
+
trace_id: input.trace_id,
|
|
70
|
+
workspace_id: input.workspace_id,
|
|
71
|
+
thread_id: input.thread_id,
|
|
72
|
+
task_id: input.task_id,
|
|
73
|
+
parent_event_id: input.parent_event_id,
|
|
74
|
+
metadata: input.metadata,
|
|
75
|
+
tags: input.tags,
|
|
76
|
+
now: input.now
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function emitTaskProgress(input) {
|
|
80
|
+
const metadata = { ...input.metadata };
|
|
81
|
+
if (input.progress_pct !== void 0) {
|
|
82
|
+
metadata.progress_pct = input.progress_pct;
|
|
83
|
+
}
|
|
84
|
+
return createAuditEvent({
|
|
85
|
+
id: input.id,
|
|
86
|
+
event_type: AuditEventTypeEnum.TaskProgress,
|
|
87
|
+
severity: AuditSeverityEnum.Info,
|
|
88
|
+
actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),
|
|
89
|
+
target: taskTarget(input.task_id),
|
|
90
|
+
trace_id: input.trace_id,
|
|
91
|
+
workspace_id: input.workspace_id,
|
|
92
|
+
thread_id: input.thread_id,
|
|
93
|
+
task_id: input.task_id,
|
|
94
|
+
parent_event_id: input.parent_event_id,
|
|
95
|
+
metadata,
|
|
96
|
+
tags: input.tags,
|
|
97
|
+
now: input.now
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
function emitTaskInputRequired(input) {
|
|
101
|
+
return createAuditEvent({
|
|
102
|
+
id: input.id,
|
|
103
|
+
event_type: AuditEventTypeEnum.TaskInputRequired,
|
|
104
|
+
severity: AuditSeverityEnum.Info,
|
|
105
|
+
actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),
|
|
106
|
+
target: taskTarget(input.task_id),
|
|
107
|
+
trace_id: input.trace_id,
|
|
108
|
+
workspace_id: input.workspace_id,
|
|
109
|
+
thread_id: input.thread_id,
|
|
110
|
+
task_id: input.task_id,
|
|
111
|
+
parent_event_id: input.parent_event_id,
|
|
112
|
+
metadata: input.metadata,
|
|
113
|
+
tags: input.tags,
|
|
114
|
+
now: input.now
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function emitTaskCompleted(input) {
|
|
118
|
+
return createAuditEvent({
|
|
119
|
+
id: input.id,
|
|
120
|
+
event_type: AuditEventTypeEnum.TaskCompleted,
|
|
121
|
+
severity: AuditSeverityEnum.Info,
|
|
122
|
+
actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),
|
|
123
|
+
target: taskTarget(input.task_id),
|
|
124
|
+
trace_id: input.trace_id,
|
|
125
|
+
workspace_id: input.workspace_id,
|
|
126
|
+
thread_id: input.thread_id,
|
|
127
|
+
task_id: input.task_id,
|
|
128
|
+
parent_event_id: input.parent_event_id,
|
|
129
|
+
duration_ms: input.duration_ms,
|
|
130
|
+
metadata: input.metadata,
|
|
131
|
+
tags: input.tags,
|
|
132
|
+
now: input.now
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
function emitTaskFailed(input) {
|
|
136
|
+
const metadata = { ...input.metadata };
|
|
137
|
+
if (input.error_code) metadata.error_code = input.error_code;
|
|
138
|
+
if (input.error_message) metadata.error_message = input.error_message;
|
|
139
|
+
return createAuditEvent({
|
|
140
|
+
id: input.id,
|
|
141
|
+
event_type: AuditEventTypeEnum.TaskFailed,
|
|
142
|
+
severity: AuditSeverityEnum.Error,
|
|
143
|
+
actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),
|
|
144
|
+
target: taskTarget(input.task_id),
|
|
145
|
+
trace_id: input.trace_id,
|
|
146
|
+
workspace_id: input.workspace_id,
|
|
147
|
+
thread_id: input.thread_id,
|
|
148
|
+
task_id: input.task_id,
|
|
149
|
+
parent_event_id: input.parent_event_id,
|
|
150
|
+
duration_ms: input.duration_ms,
|
|
151
|
+
metadata,
|
|
152
|
+
tags: input.tags,
|
|
153
|
+
now: input.now
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
function emitTaskCancelled(input) {
|
|
157
|
+
const metadata = { ...input.metadata };
|
|
158
|
+
if (input.reason) metadata.cancellation_reason = input.reason;
|
|
159
|
+
return createAuditEvent({
|
|
160
|
+
id: input.id,
|
|
161
|
+
event_type: AuditEventTypeEnum.TaskCancelled,
|
|
162
|
+
severity: AuditSeverityEnum.Info,
|
|
163
|
+
actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),
|
|
164
|
+
target: taskTarget(input.task_id),
|
|
165
|
+
trace_id: input.trace_id,
|
|
166
|
+
workspace_id: input.workspace_id,
|
|
167
|
+
thread_id: input.thread_id,
|
|
168
|
+
task_id: input.task_id,
|
|
169
|
+
parent_event_id: input.parent_event_id,
|
|
170
|
+
metadata,
|
|
171
|
+
tags: input.tags,
|
|
172
|
+
now: input.now
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
function emitConnectorAttached(input) {
|
|
176
|
+
return createAuditEvent({
|
|
177
|
+
id: input.id,
|
|
178
|
+
event_type: AuditEventTypeEnum.ConnectorAttached,
|
|
179
|
+
severity: AuditSeverityEnum.Info,
|
|
180
|
+
actor: systemActor(),
|
|
181
|
+
target: connectorTarget(input.connector_id, input.connector_name),
|
|
182
|
+
trace_id: input.trace_id,
|
|
183
|
+
workspace_id: input.workspace_id,
|
|
184
|
+
thread_id: input.thread_id,
|
|
185
|
+
task_id: input.task_id,
|
|
186
|
+
parent_event_id: input.parent_event_id,
|
|
187
|
+
metadata: {
|
|
188
|
+
...input.metadata,
|
|
189
|
+
connector_platform: input.connector_platform
|
|
190
|
+
},
|
|
191
|
+
tags: input.tags,
|
|
192
|
+
now: input.now
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
function emitConnectorHealth(input) {
|
|
196
|
+
return createAuditEvent({
|
|
197
|
+
id: input.id,
|
|
198
|
+
event_type: AuditEventTypeEnum.ConnectorHealth,
|
|
199
|
+
severity: input.healthy ? AuditSeverityEnum.Info : AuditSeverityEnum.Warning,
|
|
200
|
+
actor: connectorActor(input.connector_id, input.connector_platform, input.connector_name),
|
|
201
|
+
target: connectorTarget(input.connector_id, input.connector_name),
|
|
202
|
+
trace_id: input.trace_id,
|
|
203
|
+
workspace_id: input.workspace_id,
|
|
204
|
+
thread_id: input.thread_id,
|
|
205
|
+
task_id: input.task_id,
|
|
206
|
+
parent_event_id: input.parent_event_id,
|
|
207
|
+
metadata: {
|
|
208
|
+
...input.metadata,
|
|
209
|
+
healthy: input.healthy,
|
|
210
|
+
...input.latency_ms !== void 0 ? { latency_ms: input.latency_ms } : {}
|
|
211
|
+
},
|
|
212
|
+
tags: input.tags,
|
|
213
|
+
now: input.now
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
function emitConnectorError(input) {
|
|
217
|
+
return createAuditEvent({
|
|
218
|
+
id: input.id,
|
|
219
|
+
event_type: AuditEventTypeEnum.ConnectorError,
|
|
220
|
+
severity: AuditSeverityEnum.Error,
|
|
221
|
+
actor: connectorActor(input.connector_id, input.connector_platform, input.connector_name),
|
|
222
|
+
target: connectorTarget(input.connector_id, input.connector_name),
|
|
223
|
+
trace_id: input.trace_id,
|
|
224
|
+
workspace_id: input.workspace_id,
|
|
225
|
+
thread_id: input.thread_id,
|
|
226
|
+
task_id: input.task_id,
|
|
227
|
+
parent_event_id: input.parent_event_id,
|
|
228
|
+
metadata: {
|
|
229
|
+
...input.metadata,
|
|
230
|
+
...input.error_code ? { error_code: input.error_code } : {},
|
|
231
|
+
error_message: input.error_message
|
|
232
|
+
},
|
|
233
|
+
tags: input.tags,
|
|
234
|
+
now: input.now
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
function emitPolicyChecked(input) {
|
|
238
|
+
const policyContext = {
|
|
239
|
+
action: input.action,
|
|
240
|
+
rule: input.rule,
|
|
241
|
+
approved: input.approved,
|
|
242
|
+
reason: input.reason,
|
|
243
|
+
agent_id: input.agent_id
|
|
244
|
+
};
|
|
245
|
+
return createAuditEvent({
|
|
246
|
+
id: input.id,
|
|
247
|
+
event_type: AuditEventTypeEnum.PolicyChecked,
|
|
248
|
+
severity: AuditSeverityEnum.Info,
|
|
249
|
+
actor: systemActor("policy-engine"),
|
|
250
|
+
target: taskTarget(input.task_id),
|
|
251
|
+
trace_id: input.trace_id,
|
|
252
|
+
workspace_id: input.workspace_id,
|
|
253
|
+
thread_id: input.thread_id,
|
|
254
|
+
task_id: input.task_id,
|
|
255
|
+
parent_event_id: input.parent_event_id,
|
|
256
|
+
duration_ms: input.duration_ms,
|
|
257
|
+
policy: policyContext,
|
|
258
|
+
metadata: input.metadata,
|
|
259
|
+
tags: input.tags,
|
|
260
|
+
now: input.now
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
function emitPolicyApproved(input) {
|
|
264
|
+
return createAuditEvent({
|
|
265
|
+
id: input.id,
|
|
266
|
+
event_type: AuditEventTypeEnum.PolicyApproved,
|
|
267
|
+
severity: AuditSeverityEnum.Info,
|
|
268
|
+
actor: systemActor("policy-engine"),
|
|
269
|
+
target: taskTarget(input.task_id),
|
|
270
|
+
trace_id: input.trace_id,
|
|
271
|
+
workspace_id: input.workspace_id,
|
|
272
|
+
thread_id: input.thread_id,
|
|
273
|
+
task_id: input.task_id,
|
|
274
|
+
parent_event_id: input.parent_event_id,
|
|
275
|
+
duration_ms: input.duration_ms,
|
|
276
|
+
policy: {
|
|
277
|
+
action: input.action,
|
|
278
|
+
rule: input.rule,
|
|
279
|
+
approved: true,
|
|
280
|
+
reason: input.reason,
|
|
281
|
+
agent_id: input.agent_id
|
|
282
|
+
},
|
|
283
|
+
metadata: input.metadata,
|
|
284
|
+
tags: input.tags,
|
|
285
|
+
now: input.now
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
function emitPolicyDenied(input) {
|
|
289
|
+
return createAuditEvent({
|
|
290
|
+
id: input.id,
|
|
291
|
+
event_type: AuditEventTypeEnum.PolicyDenied,
|
|
292
|
+
severity: AuditSeverityEnum.Warning,
|
|
293
|
+
actor: systemActor("policy-engine"),
|
|
294
|
+
target: taskTarget(input.task_id),
|
|
295
|
+
trace_id: input.trace_id,
|
|
296
|
+
workspace_id: input.workspace_id,
|
|
297
|
+
thread_id: input.thread_id,
|
|
298
|
+
task_id: input.task_id,
|
|
299
|
+
parent_event_id: input.parent_event_id,
|
|
300
|
+
duration_ms: input.duration_ms,
|
|
301
|
+
policy: {
|
|
302
|
+
action: input.action,
|
|
303
|
+
rule: input.rule,
|
|
304
|
+
approved: false,
|
|
305
|
+
reason: input.reason,
|
|
306
|
+
agent_id: input.agent_id
|
|
307
|
+
},
|
|
308
|
+
metadata: input.metadata,
|
|
309
|
+
tags: input.tags,
|
|
310
|
+
now: input.now
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
var STATE_TO_EVENT_TYPE = {
|
|
314
|
+
submitted: AuditEventTypeEnum.TaskSubmitted,
|
|
315
|
+
working: AuditEventTypeEnum.TaskStarted,
|
|
316
|
+
"input-required": AuditEventTypeEnum.TaskInputRequired,
|
|
317
|
+
completed: AuditEventTypeEnum.TaskCompleted,
|
|
318
|
+
failed: AuditEventTypeEnum.TaskFailed,
|
|
319
|
+
cancelled: AuditEventTypeEnum.TaskCancelled
|
|
320
|
+
};
|
|
321
|
+
function emitAuditForTransition(input, newState) {
|
|
322
|
+
const eventType = STATE_TO_EVENT_TYPE[newState] ?? AuditEventTypeEnum.TaskProgress;
|
|
323
|
+
const severity = newState === "failed" ? AuditSeverityEnum.Error : newState === "cancelled" ? AuditSeverityEnum.Warning : AuditSeverityEnum.Info;
|
|
324
|
+
return createAuditEvent({
|
|
325
|
+
id: input.id,
|
|
326
|
+
event_type: eventType,
|
|
327
|
+
severity,
|
|
328
|
+
actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),
|
|
329
|
+
target: taskTarget(input.task_id),
|
|
330
|
+
trace_id: input.trace_id,
|
|
331
|
+
workspace_id: input.workspace_id,
|
|
332
|
+
thread_id: input.thread_id,
|
|
333
|
+
task_id: input.task_id,
|
|
334
|
+
parent_event_id: input.parent_event_id,
|
|
335
|
+
duration_ms: input.duration_ms,
|
|
336
|
+
metadata: input.metadata,
|
|
337
|
+
tags: input.tags,
|
|
338
|
+
now: input.now
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
export {
|
|
343
|
+
emitTaskSubmitted,
|
|
344
|
+
emitTaskStarted,
|
|
345
|
+
emitTaskProgress,
|
|
346
|
+
emitTaskInputRequired,
|
|
347
|
+
emitTaskCompleted,
|
|
348
|
+
emitTaskFailed,
|
|
349
|
+
emitTaskCancelled,
|
|
350
|
+
emitConnectorAttached,
|
|
351
|
+
emitConnectorHealth,
|
|
352
|
+
emitConnectorError,
|
|
353
|
+
emitPolicyChecked,
|
|
354
|
+
emitPolicyApproved,
|
|
355
|
+
emitPolicyDenied,
|
|
356
|
+
emitAuditForTransition
|
|
357
|
+
};
|
|
358
|
+
//# sourceMappingURL=chunk-T5GUBIFZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/audit-helpers.ts"],"sourcesContent":["/**\n * @module audit-helpers\n *\n * High-level audit event emitter helpers for common A2A operations.\n *\n * Instead of manually constructing `CreateAuditEventInput` objects for every\n * lifecycle event, adapter code can call these type-safe helper functions\n * which pre-fill the `event_type`, `actor`, `target`, and `severity` fields\n * for the most common scenarios.\n *\n * All helpers return an `AuditEvent` (not a side-effecting \"emit\"). The\n * caller is responsible for persisting or publishing the event through\n * the audit-log service transport layer.\n *\n * @example\n * ```ts\n * import { emitTaskSubmitted, emitConnectorInvoked } from '@recoder/a2a-sdk/audit-helpers';\n *\n * const evt = emitTaskSubmitted({\n * id: 'evt_01',\n * task_id: 'task_01',\n * workspace_id: 'ws_abc',\n * trace_id: '4bf92f3577b34da6a3ce929d0e0e4736',\n * actor_agent_id: 'agent-pm',\n * actor_platform: 'recoder_pm',\n * });\n * await auditLogService.persist(evt);\n * ```\n */\n\nimport {\n type AuditEvent,\n type AuditActor,\n type AuditTarget,\n type AuditSeverity,\n type AuditPolicyContext,\n AuditEventTypeEnum,\n AuditActorKindEnum,\n AuditTargetKindEnum,\n AuditSeverityEnum,\n createAuditEvent,\n} from '@recoder/shared/a2a/schemas';\n\nimport type { RecoderAgentPlatform } from '@recoder/shared/a2a';\n\n// ---------------------------------------------------------------------------\n// Common input base\n// ---------------------------------------------------------------------------\n\n/**\n * Common fields required by all audit event helpers.\n */\nexport interface AuditEventBase {\n /** Unique event ID. */\n id: string;\n /** Workspace ID. */\n workspace_id: string;\n /** Trace ID for correlation with the originating TaskEnvelope. */\n trace_id: string;\n /** Optional thread ID. */\n thread_id?: string;\n /** Optional parent event ID. */\n parent_event_id?: string;\n /** Optional additional metadata. */\n metadata?: Record<string, unknown>;\n /** Optional tags. */\n tags?: string[];\n /** Override the timestamp (defaults to now). */\n now?: string;\n}\n\n/**\n * Fields for task-scoped audit events.\n */\nexport interface TaskAuditEventInput extends AuditEventBase {\n /** The task ID that this event is about. */\n task_id: string;\n /** The actor agent ID. */\n actor_agent_id: string;\n /** The actor's platform. */\n actor_platform: RecoderAgentPlatform;\n /** Optional actor display name. */\n actor_name?: string;\n}\n\n/**\n * Fields for connector-scoped audit events.\n */\nexport interface ConnectorAuditEventInput extends AuditEventBase {\n /** The connector ID. */\n connector_id: string;\n /** The connector platform. */\n connector_platform: RecoderAgentPlatform;\n /** Optional task ID. */\n task_id?: string;\n /** Optional connector display name. */\n connector_name?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\nfunction agentActor(\n agentId: string,\n platform: RecoderAgentPlatform,\n name?: string,\n): AuditActor {\n return {\n kind: AuditActorKindEnum.Agent,\n id: agentId,\n platform,\n name,\n };\n}\n\nfunction connectorActor(\n connectorId: string,\n platform: RecoderAgentPlatform,\n name?: string,\n): AuditActor {\n return {\n kind: AuditActorKindEnum.Connector,\n id: connectorId,\n platform,\n name,\n };\n}\n\nfunction systemActor(systemId: string = 'control-plane'): AuditActor {\n return {\n kind: AuditActorKindEnum.System,\n id: systemId,\n name: 'A2A Control Plane',\n };\n}\n\nfunction taskTarget(taskId: string): AuditTarget {\n return {\n kind: AuditTargetKindEnum.Task,\n id: taskId,\n };\n}\n\nfunction connectorTarget(\n connectorId: string,\n name?: string,\n): AuditTarget {\n return {\n kind: AuditTargetKindEnum.Connector,\n id: connectorId,\n name,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Task lifecycle events\n// ---------------------------------------------------------------------------\n\n/**\n * Emit a `task.submitted` audit event.\n *\n * Call this when a new task envelope is created and submitted to the\n * control plane.\n */\nexport function emitTaskSubmitted(input: TaskAuditEventInput): AuditEvent {\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.TaskSubmitted,\n severity: AuditSeverityEnum.Info,\n actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),\n target: taskTarget(input.task_id),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n metadata: input.metadata,\n tags: input.tags,\n now: input.now,\n });\n}\n\n/**\n * Emit a `task.started` audit event.\n *\n * Call this when a task transitions from `submitted` to `working`.\n */\nexport function emitTaskStarted(input: TaskAuditEventInput): AuditEvent {\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.TaskStarted,\n severity: AuditSeverityEnum.Info,\n actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),\n target: taskTarget(input.task_id),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n metadata: input.metadata,\n tags: input.tags,\n now: input.now,\n });\n}\n\n/**\n * Emit a `task.progress` audit event.\n *\n * Call this for intermediate progress updates during task execution.\n */\nexport function emitTaskProgress(\n input: TaskAuditEventInput & { progress_pct?: number },\n): AuditEvent {\n const metadata = { ...input.metadata };\n if (input.progress_pct !== undefined) {\n metadata.progress_pct = input.progress_pct;\n }\n\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.TaskProgress,\n severity: AuditSeverityEnum.Info,\n actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),\n target: taskTarget(input.task_id),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n metadata,\n tags: input.tags,\n now: input.now,\n });\n}\n\n/**\n * Emit a `task.input_required` audit event.\n *\n * Call this when the assignee agent needs additional input.\n */\nexport function emitTaskInputRequired(input: TaskAuditEventInput): AuditEvent {\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.TaskInputRequired,\n severity: AuditSeverityEnum.Info,\n actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),\n target: taskTarget(input.task_id),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n metadata: input.metadata,\n tags: input.tags,\n now: input.now,\n });\n}\n\n/**\n * Emit a `task.completed` audit event.\n *\n * Call this when a task reaches the `completed` terminal state.\n */\nexport function emitTaskCompleted(\n input: TaskAuditEventInput & { duration_ms?: number },\n): AuditEvent {\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.TaskCompleted,\n severity: AuditSeverityEnum.Info,\n actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),\n target: taskTarget(input.task_id),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n duration_ms: input.duration_ms,\n metadata: input.metadata,\n tags: input.tags,\n now: input.now,\n });\n}\n\n/**\n * Emit a `task.failed` audit event.\n *\n * Call this when a task reaches the `failed` terminal state.\n */\nexport function emitTaskFailed(\n input: TaskAuditEventInput & {\n error_code?: string;\n error_message?: string;\n duration_ms?: number;\n },\n): AuditEvent {\n const metadata: Record<string, unknown> = { ...input.metadata };\n if (input.error_code) metadata.error_code = input.error_code;\n if (input.error_message) metadata.error_message = input.error_message;\n\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.TaskFailed,\n severity: AuditSeverityEnum.Error,\n actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),\n target: taskTarget(input.task_id),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n duration_ms: input.duration_ms,\n metadata,\n tags: input.tags,\n now: input.now,\n });\n}\n\n/**\n * Emit a `task.cancelled` audit event.\n *\n * Call this when a task is explicitly cancelled.\n */\nexport function emitTaskCancelled(\n input: TaskAuditEventInput & { reason?: string },\n): AuditEvent {\n const metadata: Record<string, unknown> = { ...input.metadata };\n if (input.reason) metadata.cancellation_reason = input.reason;\n\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.TaskCancelled,\n severity: AuditSeverityEnum.Info,\n actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),\n target: taskTarget(input.task_id),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n metadata,\n tags: input.tags,\n now: input.now,\n });\n}\n\n// ---------------------------------------------------------------------------\n// Connector events\n// ---------------------------------------------------------------------------\n\n/**\n * Emit a `connector.attached` audit event.\n *\n * Call this when a connector is attached to an agent for task execution.\n */\nexport function emitConnectorAttached(input: ConnectorAuditEventInput): AuditEvent {\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.ConnectorAttached,\n severity: AuditSeverityEnum.Info,\n actor: systemActor(),\n target: connectorTarget(input.connector_id, input.connector_name),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n metadata: {\n ...input.metadata,\n connector_platform: input.connector_platform,\n },\n tags: input.tags,\n now: input.now,\n });\n}\n\n/**\n * Emit a `connector.health` audit event.\n *\n * Call this when a connector emits a health check or diagnostic event.\n */\nexport function emitConnectorHealth(\n input: ConnectorAuditEventInput & {\n healthy: boolean;\n latency_ms?: number;\n },\n): AuditEvent {\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.ConnectorHealth,\n severity: input.healthy ? AuditSeverityEnum.Info : AuditSeverityEnum.Warning,\n actor: connectorActor(input.connector_id, input.connector_platform, input.connector_name),\n target: connectorTarget(input.connector_id, input.connector_name),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n metadata: {\n ...input.metadata,\n healthy: input.healthy,\n ...(input.latency_ms !== undefined ? { latency_ms: input.latency_ms } : {}),\n },\n tags: input.tags,\n now: input.now,\n });\n}\n\n/**\n * Emit a `connector.error` audit event.\n *\n * Call this when a connector encounters an error during task execution.\n */\nexport function emitConnectorError(\n input: ConnectorAuditEventInput & {\n error_code?: string;\n error_message: string;\n },\n): AuditEvent {\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.ConnectorError,\n severity: AuditSeverityEnum.Error,\n actor: connectorActor(input.connector_id, input.connector_platform, input.connector_name),\n target: connectorTarget(input.connector_id, input.connector_name),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n metadata: {\n ...input.metadata,\n ...(input.error_code ? { error_code: input.error_code } : {}),\n error_message: input.error_message,\n },\n tags: input.tags,\n now: input.now,\n });\n}\n\n// ---------------------------------------------------------------------------\n// Policy events\n// ---------------------------------------------------------------------------\n\n/**\n * Input for policy audit events.\n */\nexport interface PolicyAuditEventInput extends AuditEventBase {\n /** The task ID the policy was checked for. */\n task_id: string;\n /** The agent ID the policy was evaluated against. */\n agent_id: string;\n /** The policy action (e.g. 'file:write', 'bash:exec'). */\n action: string;\n /** The rule that was applied ('auto', 'prompt', 'deny'). */\n rule: string;\n /** Whether the action was approved. */\n approved: boolean;\n /** Human-readable reason for the decision. */\n reason: string;\n /** Duration of the policy check. */\n duration_ms?: number;\n}\n\n/**\n * Emit a `policy.checked` audit event.\n *\n * Call this after a policy evaluation completes.\n */\nexport function emitPolicyChecked(input: PolicyAuditEventInput): AuditEvent {\n const policyContext: AuditPolicyContext = {\n action: input.action,\n rule: input.rule,\n approved: input.approved,\n reason: input.reason,\n agent_id: input.agent_id,\n };\n\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.PolicyChecked,\n severity: AuditSeverityEnum.Info,\n actor: systemActor('policy-engine'),\n target: taskTarget(input.task_id),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n duration_ms: input.duration_ms,\n policy: policyContext,\n metadata: input.metadata,\n tags: input.tags,\n now: input.now,\n });\n}\n\n/**\n * Emit a `policy.approved` audit event.\n *\n * Convenience wrapper around `emitPolicyChecked` for approved actions.\n */\nexport function emitPolicyApproved(\n input: Omit<PolicyAuditEventInput, 'approved'>,\n): AuditEvent {\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.PolicyApproved,\n severity: AuditSeverityEnum.Info,\n actor: systemActor('policy-engine'),\n target: taskTarget(input.task_id),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n duration_ms: input.duration_ms,\n policy: {\n action: input.action,\n rule: input.rule,\n approved: true,\n reason: input.reason,\n agent_id: input.agent_id,\n },\n metadata: input.metadata,\n tags: input.tags,\n now: input.now,\n });\n}\n\n/**\n * Emit a `policy.denied` audit event.\n *\n * Convenience wrapper for denied actions.\n */\nexport function emitPolicyDenied(\n input: Omit<PolicyAuditEventInput, 'approved'>,\n): AuditEvent {\n return createAuditEvent({\n id: input.id,\n event_type: AuditEventTypeEnum.PolicyDenied,\n severity: AuditSeverityEnum.Warning,\n actor: systemActor('policy-engine'),\n target: taskTarget(input.task_id),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n duration_ms: input.duration_ms,\n policy: {\n action: input.action,\n rule: input.rule,\n approved: false,\n reason: input.reason,\n agent_id: input.agent_id,\n },\n metadata: input.metadata,\n tags: input.tags,\n now: input.now,\n });\n}\n\n// ---------------------------------------------------------------------------\n// Compound helper: emit audit event from envelope transition\n// ---------------------------------------------------------------------------\n\n/**\n * Mapping from canonical TaskState to the appropriate audit event emitter.\n * Used by `emitAuditForTransition` to automatically produce the right\n * event type when a task envelope transitions.\n */\nconst STATE_TO_EVENT_TYPE = {\n submitted: AuditEventTypeEnum.TaskSubmitted,\n working: AuditEventTypeEnum.TaskStarted,\n 'input-required': AuditEventTypeEnum.TaskInputRequired,\n completed: AuditEventTypeEnum.TaskCompleted,\n failed: AuditEventTypeEnum.TaskFailed,\n cancelled: AuditEventTypeEnum.TaskCancelled,\n} as const;\n\n/**\n * Automatically emit the correct audit event type for a task state\n * transition. This is the preferred method for adapter code that processes\n * state changes and wants to emit a matching audit event without manually\n * switching on the state.\n *\n * @param input - The task audit event input.\n * @param newState - The canonical state the task transitioned to.\n * @returns An `AuditEvent` with the correct event_type for the transition.\n */\nexport function emitAuditForTransition(\n input: TaskAuditEventInput & { duration_ms?: number },\n newState: string,\n): AuditEvent {\n const eventType =\n STATE_TO_EVENT_TYPE[newState as keyof typeof STATE_TO_EVENT_TYPE] ??\n AuditEventTypeEnum.TaskProgress;\n\n const severity =\n newState === 'failed'\n ? AuditSeverityEnum.Error\n : newState === 'cancelled'\n ? AuditSeverityEnum.Warning\n : AuditSeverityEnum.Info;\n\n return createAuditEvent({\n id: input.id,\n event_type: eventType,\n severity,\n actor: agentActor(input.actor_agent_id, input.actor_platform, input.actor_name),\n target: taskTarget(input.task_id),\n trace_id: input.trace_id,\n workspace_id: input.workspace_id,\n thread_id: input.thread_id,\n task_id: input.task_id,\n parent_event_id: input.parent_event_id,\n duration_ms: input.duration_ms,\n metadata: input.metadata,\n tags: input.tags,\n now: input.now,\n });\n}\n"],"mappings":"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","names":[]}
|