agentbox-sdk 0.0.0 → 0.1.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.
@@ -0,0 +1,185 @@
1
+ // src/events/normalized.ts
2
+ function createNormalizedEvent(type, base, extra) {
3
+ return {
4
+ type,
5
+ provider: base.provider,
6
+ runId: base.runId,
7
+ timestamp: base.timestamp ?? (/* @__PURE__ */ new Date()).toISOString(),
8
+ raw: base.raw,
9
+ meta: base.meta,
10
+ ...extra ?? {}
11
+ };
12
+ }
13
+ function normalizeRawAgentEvent(event) {
14
+ const payload = event.payload;
15
+ const common = {
16
+ provider: event.provider,
17
+ runId: event.runId,
18
+ raw: event,
19
+ timestamp: event.timestamp
20
+ };
21
+ if (event.type === "assistant" && Array.isArray(
22
+ payload?.message?.content
23
+ )) {
24
+ const blocks = (payload?.message).content;
25
+ const text = blocks.filter((block) => block.type === "text").map((block) => String(block.text ?? "")).join("");
26
+ return [
27
+ createNormalizedEvent("message.started", common),
28
+ ...text ? [createNormalizedEvent("text.delta", common, { delta: text })] : [],
29
+ createNormalizedEvent("message.completed", common, { text }),
30
+ createNormalizedEvent("run.completed", common, { text })
31
+ ];
32
+ }
33
+ if (event.type.includes("delta")) {
34
+ const delta = String(
35
+ payload?.delta ?? payload?.text ?? payload?.["content"] ?? ""
36
+ );
37
+ const normalizedType = event.type.includes("reasoning") ? "reasoning.delta" : "text.delta";
38
+ return [createNormalizedEvent(normalizedType, common, { delta })];
39
+ }
40
+ if (event.type.includes("tool")) {
41
+ const toolName = String(payload?.toolName ?? payload?.tool_name ?? "tool");
42
+ if (event.type.includes("completed") || event.type.includes("summary")) {
43
+ return [
44
+ createNormalizedEvent("tool.call.completed", common, {
45
+ toolName,
46
+ callId: payload?.callId ?? payload?.tool_use_id,
47
+ output: payload?.output ?? payload?.result
48
+ })
49
+ ];
50
+ }
51
+ return [
52
+ createNormalizedEvent("tool.call.started", common, {
53
+ toolName,
54
+ callId: payload?.callId ?? payload?.tool_use_id,
55
+ input: payload?.input
56
+ })
57
+ ];
58
+ }
59
+ if (event.type === "result") {
60
+ const text = String(payload?.result ?? payload?.text ?? "");
61
+ return [createNormalizedEvent("run.completed", common, { text })];
62
+ }
63
+ if (event.type === "error") {
64
+ return [
65
+ createNormalizedEvent("run.error", common, {
66
+ error: String(
67
+ payload?.message ?? payload?.error ?? "Unknown agent error"
68
+ )
69
+ })
70
+ ];
71
+ }
72
+ return [];
73
+ }
74
+
75
+ // src/events/ai-sdk.ts
76
+ function toAISDKEvent(event) {
77
+ switch (event.type) {
78
+ case "run.started":
79
+ return {
80
+ type: "response-start",
81
+ id: event.runId,
82
+ provider: event.provider
83
+ };
84
+ case "message.injected":
85
+ return {
86
+ type: "message-injected",
87
+ id: event.runId,
88
+ provider: event.provider,
89
+ content: event.content
90
+ };
91
+ case "text.delta":
92
+ return {
93
+ type: "text-delta",
94
+ id: event.runId,
95
+ provider: event.provider,
96
+ textDelta: event.delta
97
+ };
98
+ case "reasoning.delta":
99
+ return {
100
+ type: "reasoning-delta",
101
+ id: event.runId,
102
+ provider: event.provider,
103
+ textDelta: event.delta
104
+ };
105
+ case "tool.call.started":
106
+ return {
107
+ type: "tool-input-start",
108
+ id: event.runId,
109
+ provider: event.provider,
110
+ toolName: event.toolName,
111
+ callId: event.callId
112
+ };
113
+ case "tool.call.delta":
114
+ return {
115
+ type: "tool-input-delta",
116
+ id: event.runId,
117
+ provider: event.provider,
118
+ toolName: event.toolName,
119
+ callId: event.callId,
120
+ inputTextDelta: event.delta
121
+ };
122
+ case "tool.call.completed":
123
+ return {
124
+ type: "tool-output-available",
125
+ id: event.runId,
126
+ provider: event.provider,
127
+ toolName: event.toolName,
128
+ callId: event.callId,
129
+ output: event.output
130
+ };
131
+ case "permission.requested":
132
+ return {
133
+ type: "permission-requested",
134
+ id: event.runId,
135
+ provider: event.provider,
136
+ requestId: event.requestId,
137
+ kind: event.kind,
138
+ title: event.title,
139
+ message: event.message,
140
+ input: event.input,
141
+ canRemember: event.canRemember
142
+ };
143
+ case "permission.resolved":
144
+ return {
145
+ type: "permission-resolved",
146
+ id: event.runId,
147
+ provider: event.provider,
148
+ requestId: event.requestId,
149
+ decision: event.decision,
150
+ remember: event.remember
151
+ };
152
+ case "message.completed":
153
+ case "run.completed":
154
+ return {
155
+ type: "response-finish",
156
+ id: event.runId,
157
+ provider: event.provider,
158
+ text: event.text
159
+ };
160
+ case "run.error":
161
+ return {
162
+ type: "response-error",
163
+ id: event.runId,
164
+ provider: event.provider,
165
+ error: event.error
166
+ };
167
+ default:
168
+ return null;
169
+ }
170
+ }
171
+ async function* toAISDKStream(events) {
172
+ for await (const event of events) {
173
+ const mapped = toAISDKEvent(event);
174
+ if (mapped) {
175
+ yield mapped;
176
+ }
177
+ }
178
+ }
179
+
180
+ export {
181
+ createNormalizedEvent,
182
+ normalizeRawAgentEvent,
183
+ toAISDKEvent,
184
+ toAISDKStream
185
+ };