@agentapplicationprotocol/core 0.4.2 → 0.5.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 @@
1
+ export {};
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const utils_1 = require("./utils");
5
+ (0, vitest_1.describe)("sseEventsToMessages", () => {
6
+ (0, vitest_1.it)("converts text event to assistant message", () => {
7
+ const events = [
8
+ { event: "turn_start" },
9
+ { event: "text", text: "hello" },
10
+ { event: "turn_stop", stopReason: "end_turn" },
11
+ ];
12
+ const [messages, stopReason] = (0, utils_1.sseEventsToMessages)(events);
13
+ (0, vitest_1.expect)(messages).toEqual([{ role: "assistant", content: [{ type: "text", text: "hello" }] }]);
14
+ (0, vitest_1.expect)(stopReason).toBe("end_turn");
15
+ });
16
+ (0, vitest_1.it)("accumulates text_delta into text block", () => {
17
+ const events = [
18
+ { event: "text_delta", delta: "hel" },
19
+ { event: "text_delta", delta: "lo" },
20
+ { event: "turn_stop", stopReason: "end_turn" },
21
+ ];
22
+ const [messages, stopReason] = (0, utils_1.sseEventsToMessages)(events);
23
+ (0, vitest_1.expect)(messages).toEqual([{ role: "assistant", content: [{ type: "text", text: "hello" }] }]);
24
+ (0, vitest_1.expect)(stopReason).toBe("end_turn");
25
+ });
26
+ (0, vitest_1.it)("accumulates thinking_delta into thinking block", () => {
27
+ const events = [
28
+ { event: "thinking_delta", delta: "thin" },
29
+ { event: "thinking_delta", delta: "king" },
30
+ { event: "turn_stop", stopReason: "end_turn" },
31
+ ];
32
+ const [messages, stopReason] = (0, utils_1.sseEventsToMessages)(events);
33
+ (0, vitest_1.expect)(messages).toEqual([
34
+ { role: "assistant", content: [{ type: "thinking", thinking: "thinking" }] },
35
+ ]);
36
+ (0, vitest_1.expect)(stopReason).toBe("end_turn");
37
+ });
38
+ (0, vitest_1.it)("converts thinking event to thinking block", () => {
39
+ const events = [
40
+ { event: "thinking", thinking: "deep thought" },
41
+ { event: "turn_stop", stopReason: "end_turn" },
42
+ ];
43
+ const [messages, stopReason] = (0, utils_1.sseEventsToMessages)(events);
44
+ (0, vitest_1.expect)(messages).toEqual([
45
+ { role: "assistant", content: [{ type: "thinking", thinking: "deep thought" }] },
46
+ ]);
47
+ (0, vitest_1.expect)(stopReason).toBe("end_turn");
48
+ });
49
+ (0, vitest_1.it)("flushes assistant message before tool_result", () => {
50
+ const events = [
51
+ { event: "tool_call", toolCallId: "c1", name: "search", input: { q: "x" } },
52
+ { event: "tool_result", toolCallId: "c1", content: "result" },
53
+ { event: "turn_stop", stopReason: "tool_use" },
54
+ ];
55
+ const [messages, stopReason] = (0, utils_1.sseEventsToMessages)(events);
56
+ (0, vitest_1.expect)(messages).toContainEqual({
57
+ role: "assistant",
58
+ content: [{ type: "tool_use", toolCallId: "c1", name: "search", input: { q: "x" } }],
59
+ });
60
+ (0, vitest_1.expect)(messages).toContainEqual({ role: "tool", toolCallId: "c1", content: "result" });
61
+ (0, vitest_1.expect)(stopReason).toBe("tool_use");
62
+ });
63
+ (0, vitest_1.it)("flushes delta accumulators when non-delta event arrives", () => {
64
+ const events = [
65
+ { event: "text_delta", delta: "hi" },
66
+ { event: "tool_call", toolCallId: "c1", name: "fn", input: {} },
67
+ { event: "turn_stop", stopReason: "end_turn" },
68
+ ];
69
+ const [messages, stopReason] = (0, utils_1.sseEventsToMessages)(events);
70
+ const assistant = messages.find((m) => m.role === "assistant");
71
+ (0, vitest_1.expect)(Array.isArray(assistant?.content) && assistant.content[0]).toEqual({
72
+ type: "text",
73
+ text: "hi",
74
+ });
75
+ (0, vitest_1.expect)(stopReason).toBe("end_turn");
76
+ });
77
+ (0, vitest_1.it)("returns empty array for events with no content", () => {
78
+ const events = [
79
+ { event: "turn_start" },
80
+ { event: "turn_stop", stopReason: "end_turn" },
81
+ ];
82
+ const [messages, stopReason] = (0, utils_1.sseEventsToMessages)(events);
83
+ (0, vitest_1.expect)(messages).toEqual([]);
84
+ (0, vitest_1.expect)(stopReason).toBe("end_turn");
85
+ });
86
+ });
87
+ (0, vitest_1.describe)("sseEventsToMessagesAsync", () => {
88
+ async function* toAsync(events) {
89
+ for (const e of events)
90
+ yield e;
91
+ }
92
+ (0, vitest_1.it)("converts events to messages and stopReason", async () => {
93
+ const events = [
94
+ { event: "text", text: "hello" },
95
+ { event: "turn_stop", stopReason: "end_turn" },
96
+ ];
97
+ const [messages, stopReason] = await (0, utils_1.sseEventsToMessagesAsync)(toAsync(events));
98
+ (0, vitest_1.expect)(messages).toEqual([{ role: "assistant", content: [{ type: "text", text: "hello" }] }]);
99
+ (0, vitest_1.expect)(stopReason).toBe("end_turn");
100
+ });
101
+ (0, vitest_1.it)("returns empty messages for no content", async () => {
102
+ const events = [
103
+ { event: "turn_start" },
104
+ { event: "turn_stop", stopReason: "tool_use" },
105
+ ];
106
+ const [messages, stopReason] = await (0, utils_1.sseEventsToMessagesAsync)(toAsync(events));
107
+ (0, vitest_1.expect)(messages).toEqual([]);
108
+ (0, vitest_1.expect)(stopReason).toBe("tool_use");
109
+ });
110
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentapplicationprotocol/core",
3
- "version": "0.4.2",
3
+ "version": "0.5.0",
4
4
  "description": "Core types and utilities for the Agent Application Protocol",
5
5
  "keywords": [
6
6
  "aap",