@herdctl/chat 0.0.1 → 0.2.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/LICENSE +21 -0
- package/dist/__tests__/dm-filter.test.d.ts +5 -0
- package/dist/__tests__/dm-filter.test.d.ts.map +1 -0
- package/dist/__tests__/dm-filter.test.js +136 -0
- package/dist/__tests__/dm-filter.test.js.map +1 -0
- package/dist/__tests__/error-handler.test.d.ts +5 -0
- package/dist/__tests__/error-handler.test.d.ts.map +1 -0
- package/dist/__tests__/error-handler.test.js +235 -0
- package/dist/__tests__/error-handler.test.js.map +1 -0
- package/dist/__tests__/errors.test.d.ts +5 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +140 -0
- package/dist/__tests__/errors.test.js.map +1 -0
- package/dist/__tests__/index.test.d.ts +2 -0
- package/dist/__tests__/index.test.d.ts.map +1 -0
- package/dist/__tests__/index.test.js +25 -0
- package/dist/__tests__/index.test.js.map +1 -0
- package/dist/__tests__/message-extraction.test.d.ts +5 -0
- package/dist/__tests__/message-extraction.test.d.ts.map +1 -0
- package/dist/__tests__/message-extraction.test.js +157 -0
- package/dist/__tests__/message-extraction.test.js.map +1 -0
- package/dist/__tests__/message-splitting.test.d.ts +5 -0
- package/dist/__tests__/message-splitting.test.d.ts.map +1 -0
- package/dist/__tests__/message-splitting.test.js +153 -0
- package/dist/__tests__/message-splitting.test.js.map +1 -0
- package/dist/__tests__/session-manager.test.d.ts +2 -0
- package/dist/__tests__/session-manager.test.d.ts.map +1 -0
- package/dist/__tests__/session-manager.test.js +779 -0
- package/dist/__tests__/session-manager.test.js.map +1 -0
- package/dist/__tests__/status-formatting.test.d.ts +5 -0
- package/dist/__tests__/status-formatting.test.d.ts.map +1 -0
- package/dist/__tests__/status-formatting.test.js +160 -0
- package/dist/__tests__/status-formatting.test.js.map +1 -0
- package/dist/__tests__/streaming-responder.test.d.ts +5 -0
- package/dist/__tests__/streaming-responder.test.d.ts.map +1 -0
- package/dist/__tests__/streaming-responder.test.js +154 -0
- package/dist/__tests__/streaming-responder.test.js.map +1 -0
- package/dist/dm-filter.d.ts +121 -0
- package/dist/dm-filter.d.ts.map +1 -0
- package/dist/dm-filter.js +162 -0
- package/dist/dm-filter.js.map +1 -0
- package/dist/error-handler.d.ts +217 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +313 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/errors.d.ts +118 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +157 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/message-extraction.d.ts +81 -0
- package/dist/message-extraction.d.ts.map +1 -0
- package/dist/message-extraction.js +90 -0
- package/dist/message-extraction.js.map +1 -0
- package/dist/message-splitting.d.ts +133 -0
- package/dist/message-splitting.d.ts.map +1 -0
- package/dist/message-splitting.js +188 -0
- package/dist/message-splitting.js.map +1 -0
- package/dist/session-manager/errors.d.ts +59 -0
- package/dist/session-manager/errors.d.ts.map +1 -0
- package/dist/session-manager/errors.js +71 -0
- package/dist/session-manager/errors.js.map +1 -0
- package/dist/session-manager/index.d.ts +10 -0
- package/dist/session-manager/index.d.ts.map +1 -0
- package/dist/session-manager/index.js +14 -0
- package/dist/session-manager/index.js.map +1 -0
- package/dist/session-manager/session-manager.d.ts +123 -0
- package/dist/session-manager/session-manager.d.ts.map +1 -0
- package/dist/session-manager/session-manager.js +394 -0
- package/dist/session-manager/session-manager.js.map +1 -0
- package/dist/session-manager/types.d.ts +205 -0
- package/dist/session-manager/types.d.ts.map +1 -0
- package/dist/session-manager/types.js +67 -0
- package/dist/session-manager/types.js.map +1 -0
- package/dist/status-formatting.d.ts +147 -0
- package/dist/status-formatting.d.ts.map +1 -0
- package/dist/status-formatting.js +234 -0
- package/dist/status-formatting.js.map +1 -0
- package/dist/streaming-responder.d.ts +130 -0
- package/dist/streaming-responder.d.ts.map +1 -0
- package/dist/streaming-responder.js +178 -0
- package/dist/streaming-responder.js.map +1 -0
- package/dist/types.d.ts +184 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +39 -4
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { ChatSessionManager, ChatSessionStateSchema, ChannelSessionSchema, SessionErrorCode, SessionManagerError, SessionStateReadError, SessionStateWriteError, SessionDirectoryCreateError, isSessionManagerError, createInitialSessionState, createChannelSession, } from "../index.js";
|
|
3
|
+
describe("@herdctl/chat", () => {
|
|
4
|
+
it("exports ChatSessionManager class", () => {
|
|
5
|
+
expect(ChatSessionManager).toBeDefined();
|
|
6
|
+
expect(typeof ChatSessionManager).toBe("function");
|
|
7
|
+
});
|
|
8
|
+
it("exports session schemas", () => {
|
|
9
|
+
expect(ChatSessionStateSchema).toBeDefined();
|
|
10
|
+
expect(ChannelSessionSchema).toBeDefined();
|
|
11
|
+
});
|
|
12
|
+
it("exports session error classes", () => {
|
|
13
|
+
expect(SessionErrorCode).toBeDefined();
|
|
14
|
+
expect(SessionManagerError).toBeDefined();
|
|
15
|
+
expect(SessionStateReadError).toBeDefined();
|
|
16
|
+
expect(SessionStateWriteError).toBeDefined();
|
|
17
|
+
expect(SessionDirectoryCreateError).toBeDefined();
|
|
18
|
+
expect(isSessionManagerError).toBeDefined();
|
|
19
|
+
});
|
|
20
|
+
it("exports factory functions", () => {
|
|
21
|
+
expect(createInitialSessionState).toBeDefined();
|
|
22
|
+
expect(createChannelSession).toBeDefined();
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW,EAAE,CAAC;QACzC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,sBAAsB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,CAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,CAAC,sBAAsB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,CAAC,2BAA2B,CAAC,CAAC,WAAW,EAAE,CAAC;QAClD,MAAM,CAAC,qBAAqB,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,yBAAyB,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-extraction.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/message-extraction.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for message extraction utilities
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from "vitest";
|
|
5
|
+
import { extractMessageContent, isTextContentBlock, hasTextContent, } from "../message-extraction.js";
|
|
6
|
+
describe("message-extraction", () => {
|
|
7
|
+
describe("extractMessageContent", () => {
|
|
8
|
+
it("extracts direct string content", () => {
|
|
9
|
+
const message = {
|
|
10
|
+
type: "assistant",
|
|
11
|
+
content: "Hello world",
|
|
12
|
+
};
|
|
13
|
+
expect(extractMessageContent(message)).toBe("Hello world");
|
|
14
|
+
});
|
|
15
|
+
it("extracts nested string content", () => {
|
|
16
|
+
const message = {
|
|
17
|
+
type: "assistant",
|
|
18
|
+
message: {
|
|
19
|
+
content: "Hello from nested",
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
expect(extractMessageContent(message)).toBe("Hello from nested");
|
|
23
|
+
});
|
|
24
|
+
it("extracts from array of text content blocks", () => {
|
|
25
|
+
const message = {
|
|
26
|
+
type: "assistant",
|
|
27
|
+
message: {
|
|
28
|
+
content: [
|
|
29
|
+
{ type: "text", text: "Hello " },
|
|
30
|
+
{ type: "text", text: "world!" },
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
expect(extractMessageContent(message)).toBe("Hello world!");
|
|
35
|
+
});
|
|
36
|
+
it("ignores non-text content blocks", () => {
|
|
37
|
+
const message = {
|
|
38
|
+
type: "assistant",
|
|
39
|
+
message: {
|
|
40
|
+
content: [
|
|
41
|
+
{ type: "text", text: "Hello" },
|
|
42
|
+
{ type: "tool_use", id: "123", name: "tool" },
|
|
43
|
+
{ type: "text", text: " world" },
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
expect(extractMessageContent(message)).toBe("Hello world");
|
|
48
|
+
});
|
|
49
|
+
it("returns undefined for empty content", () => {
|
|
50
|
+
const message = {
|
|
51
|
+
type: "assistant",
|
|
52
|
+
content: "",
|
|
53
|
+
};
|
|
54
|
+
expect(extractMessageContent(message)).toBeUndefined();
|
|
55
|
+
});
|
|
56
|
+
it("returns undefined for no content", () => {
|
|
57
|
+
const message = {
|
|
58
|
+
type: "assistant",
|
|
59
|
+
};
|
|
60
|
+
expect(extractMessageContent(message)).toBeUndefined();
|
|
61
|
+
});
|
|
62
|
+
it("returns undefined for empty array content", () => {
|
|
63
|
+
const message = {
|
|
64
|
+
type: "assistant",
|
|
65
|
+
message: {
|
|
66
|
+
content: [],
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
expect(extractMessageContent(message)).toBeUndefined();
|
|
70
|
+
});
|
|
71
|
+
it("returns undefined for array with no text blocks", () => {
|
|
72
|
+
const message = {
|
|
73
|
+
type: "assistant",
|
|
74
|
+
message: {
|
|
75
|
+
content: [
|
|
76
|
+
{ type: "tool_use", id: "123", name: "tool" },
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
expect(extractMessageContent(message)).toBeUndefined();
|
|
81
|
+
});
|
|
82
|
+
it("prefers direct content over nested content", () => {
|
|
83
|
+
const message = {
|
|
84
|
+
type: "assistant",
|
|
85
|
+
content: "Direct content",
|
|
86
|
+
message: {
|
|
87
|
+
content: "Nested content",
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
expect(extractMessageContent(message)).toBe("Direct content");
|
|
91
|
+
});
|
|
92
|
+
it("handles null message property", () => {
|
|
93
|
+
const message = {
|
|
94
|
+
type: "assistant",
|
|
95
|
+
message: null,
|
|
96
|
+
};
|
|
97
|
+
expect(extractMessageContent(message)).toBeUndefined();
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe("isTextContentBlock", () => {
|
|
101
|
+
it("returns true for valid text block", () => {
|
|
102
|
+
expect(isTextContentBlock({ type: "text", text: "Hello" })).toBe(true);
|
|
103
|
+
});
|
|
104
|
+
it("returns false for non-text block", () => {
|
|
105
|
+
expect(isTextContentBlock({ type: "tool_use", id: "123" })).toBe(false);
|
|
106
|
+
});
|
|
107
|
+
it("returns false for missing text property", () => {
|
|
108
|
+
expect(isTextContentBlock({ type: "text" })).toBe(false);
|
|
109
|
+
});
|
|
110
|
+
it("returns false for non-string text", () => {
|
|
111
|
+
expect(isTextContentBlock({ type: "text", text: 123 })).toBe(false);
|
|
112
|
+
});
|
|
113
|
+
it("returns false for null", () => {
|
|
114
|
+
expect(isTextContentBlock(null)).toBe(false);
|
|
115
|
+
});
|
|
116
|
+
it("returns false for undefined", () => {
|
|
117
|
+
expect(isTextContentBlock(undefined)).toBe(false);
|
|
118
|
+
});
|
|
119
|
+
it("returns false for primitives", () => {
|
|
120
|
+
expect(isTextContentBlock("string")).toBe(false);
|
|
121
|
+
expect(isTextContentBlock(123)).toBe(false);
|
|
122
|
+
expect(isTextContentBlock(true)).toBe(false);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
describe("hasTextContent", () => {
|
|
126
|
+
it("returns true when message has content", () => {
|
|
127
|
+
const message = {
|
|
128
|
+
type: "assistant",
|
|
129
|
+
content: "Hello",
|
|
130
|
+
};
|
|
131
|
+
expect(hasTextContent(message)).toBe(true);
|
|
132
|
+
});
|
|
133
|
+
it("returns false when message has no content", () => {
|
|
134
|
+
const message = {
|
|
135
|
+
type: "assistant",
|
|
136
|
+
};
|
|
137
|
+
expect(hasTextContent(message)).toBe(false);
|
|
138
|
+
});
|
|
139
|
+
it("returns false for empty string content", () => {
|
|
140
|
+
const message = {
|
|
141
|
+
type: "assistant",
|
|
142
|
+
content: "",
|
|
143
|
+
};
|
|
144
|
+
expect(hasTextContent(message)).toBe(false);
|
|
145
|
+
});
|
|
146
|
+
it("returns true for nested content", () => {
|
|
147
|
+
const message = {
|
|
148
|
+
type: "assistant",
|
|
149
|
+
message: {
|
|
150
|
+
content: "Hello",
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
expect(hasTextContent(message)).toBe(true);
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
//# sourceMappingURL=message-extraction.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-extraction.test.js","sourceRoot":"","sources":["../../src/__tests__/message-extraction.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-splitting.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/message-splitting.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for message splitting utilities
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect } from "vitest";
|
|
5
|
+
import { findSplitPoint, splitMessage, needsSplit, truncateMessage, formatCodeBlock, DEFAULT_SPLIT_POINTS, MIN_CHUNK_SIZE, DEFAULT_MESSAGE_DELAY_MS, } from "../message-splitting.js";
|
|
6
|
+
describe("message-splitting", () => {
|
|
7
|
+
describe("findSplitPoint", () => {
|
|
8
|
+
it("returns text length if text fits", () => {
|
|
9
|
+
const text = "Hello world";
|
|
10
|
+
expect(findSplitPoint(text, 100)).toBe(text.length);
|
|
11
|
+
});
|
|
12
|
+
it("splits at paragraph breaks when available", () => {
|
|
13
|
+
// "First paragraph.\n\n" is 18 chars, maxLength 18 fits exactly
|
|
14
|
+
// We need text > maxLength to trigger a split, and the split point
|
|
15
|
+
// must be > MIN_CHUNK_SIZE (100). Use a larger test case.
|
|
16
|
+
const text = "A".repeat(105) + ".\n\nSecond paragraph that is longer.";
|
|
17
|
+
const splitIndex = findSplitPoint(text, 115);
|
|
18
|
+
// Should split after the paragraph break
|
|
19
|
+
expect(text.slice(0, splitIndex)).toBe("A".repeat(105) + ".\n\n");
|
|
20
|
+
});
|
|
21
|
+
it("splits at newlines when no paragraph break", () => {
|
|
22
|
+
const text = "A".repeat(150) + "\n" + "B".repeat(50);
|
|
23
|
+
const splitIndex = findSplitPoint(text, 160);
|
|
24
|
+
// Should split at the newline
|
|
25
|
+
expect(text.slice(0, splitIndex)).toBe("A".repeat(150) + "\n");
|
|
26
|
+
});
|
|
27
|
+
it("splits at sentence boundaries", () => {
|
|
28
|
+
// Create text where the sentence boundary is past MIN_CHUNK_SIZE
|
|
29
|
+
const text = "A".repeat(110) + ". Second sentence is much longer and exceeds the limit.";
|
|
30
|
+
const splitIndex = findSplitPoint(text, 120);
|
|
31
|
+
expect(text.slice(0, splitIndex)).toBe("A".repeat(110) + ". ");
|
|
32
|
+
});
|
|
33
|
+
it("splits at spaces when no sentence boundary", () => {
|
|
34
|
+
// Create long enough text with no sentence boundaries
|
|
35
|
+
const text = "A".repeat(110) + " Word2 Word3 Word4 Word5 Word6 Word7 Word8";
|
|
36
|
+
const splitIndex = findSplitPoint(text, 120);
|
|
37
|
+
// Should split at a space
|
|
38
|
+
expect(text.charAt(splitIndex - 1)).toBe(" ");
|
|
39
|
+
});
|
|
40
|
+
it("hard splits at maxLength when no good split point", () => {
|
|
41
|
+
const text = "A".repeat(200);
|
|
42
|
+
const splitIndex = findSplitPoint(text, 50);
|
|
43
|
+
expect(splitIndex).toBe(50);
|
|
44
|
+
});
|
|
45
|
+
it("respects MIN_CHUNK_SIZE", () => {
|
|
46
|
+
const text = "A. " + "B".repeat(200);
|
|
47
|
+
const splitIndex = findSplitPoint(text, 200);
|
|
48
|
+
// Should not split at "A. " because it's too short (less than MIN_CHUNK_SIZE)
|
|
49
|
+
expect(splitIndex).toBeGreaterThan(MIN_CHUNK_SIZE);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe("splitMessage", () => {
|
|
53
|
+
it("returns single chunk if content fits", () => {
|
|
54
|
+
const content = "Hello world";
|
|
55
|
+
const result = splitMessage(content, { maxLength: 100 });
|
|
56
|
+
expect(result.chunks).toEqual(["Hello world"]);
|
|
57
|
+
expect(result.wasSplit).toBe(false);
|
|
58
|
+
expect(result.originalLength).toBe(content.length);
|
|
59
|
+
});
|
|
60
|
+
it("splits long content into multiple chunks", () => {
|
|
61
|
+
const content = "A".repeat(150);
|
|
62
|
+
const result = splitMessage(content, { maxLength: 50 });
|
|
63
|
+
expect(result.chunks.length).toBeGreaterThan(1);
|
|
64
|
+
expect(result.wasSplit).toBe(true);
|
|
65
|
+
expect(result.originalLength).toBe(150);
|
|
66
|
+
});
|
|
67
|
+
it("preserves boundaries by default", () => {
|
|
68
|
+
// Use content where the split point is past MIN_CHUNK_SIZE
|
|
69
|
+
const content = "A".repeat(105) + ".\n\nSecond paragraph.";
|
|
70
|
+
const result = splitMessage(content, { maxLength: 115 });
|
|
71
|
+
// Should split after the paragraph break, trimmed
|
|
72
|
+
expect(result.chunks[0]).toBe("A".repeat(105) + ".");
|
|
73
|
+
});
|
|
74
|
+
it("can disable boundary preservation", () => {
|
|
75
|
+
// When preserveBoundaries is false, it should cut exactly at maxLength
|
|
76
|
+
const content = "A".repeat(50);
|
|
77
|
+
const result = splitMessage(content, { maxLength: 25, preserveBoundaries: false });
|
|
78
|
+
expect(result.chunks[0]).toHaveLength(25);
|
|
79
|
+
});
|
|
80
|
+
it("uses custom split points", () => {
|
|
81
|
+
// Need content long enough to exceed MIN_CHUNK_SIZE before the split point
|
|
82
|
+
const content = "A".repeat(105) + "|Part2|Part3";
|
|
83
|
+
const result = splitMessage(content, {
|
|
84
|
+
maxLength: 110,
|
|
85
|
+
splitPoints: ["|"],
|
|
86
|
+
});
|
|
87
|
+
// Should split at the pipe (trimmed, so just the As and pipe)
|
|
88
|
+
expect(result.chunks[0]).toBe("A".repeat(105) + "|");
|
|
89
|
+
});
|
|
90
|
+
it("trims chunks", () => {
|
|
91
|
+
const content = "Hello \n\n World";
|
|
92
|
+
const result = splitMessage(content, { maxLength: 10 });
|
|
93
|
+
for (const chunk of result.chunks) {
|
|
94
|
+
expect(chunk).toBe(chunk.trim());
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe("needsSplit", () => {
|
|
99
|
+
it("returns false when content fits", () => {
|
|
100
|
+
expect(needsSplit("Hello", 100)).toBe(false);
|
|
101
|
+
});
|
|
102
|
+
it("returns true when content exceeds limit", () => {
|
|
103
|
+
expect(needsSplit("Hello", 3)).toBe(true);
|
|
104
|
+
});
|
|
105
|
+
it("returns false when content equals limit", () => {
|
|
106
|
+
expect(needsSplit("Hello", 5)).toBe(false);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
describe("truncateMessage", () => {
|
|
110
|
+
it("returns original if it fits", () => {
|
|
111
|
+
expect(truncateMessage("Hello", 100)).toBe("Hello");
|
|
112
|
+
});
|
|
113
|
+
it("truncates and adds ellipsis", () => {
|
|
114
|
+
expect(truncateMessage("Hello world", 8)).toBe("Hello...");
|
|
115
|
+
});
|
|
116
|
+
it("uses custom ellipsis", () => {
|
|
117
|
+
expect(truncateMessage("Hello world", 9, "…")).toBe("Hello wo…");
|
|
118
|
+
});
|
|
119
|
+
it("handles ellipsis longer than remaining space", () => {
|
|
120
|
+
const result = truncateMessage("Hi", 5, "...");
|
|
121
|
+
expect(result.length).toBeLessThanOrEqual(5);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
describe("formatCodeBlock", () => {
|
|
125
|
+
it("formats code without language", () => {
|
|
126
|
+
expect(formatCodeBlock("const x = 1;")).toBe("```\nconst x = 1;\n```");
|
|
127
|
+
});
|
|
128
|
+
it("formats code with language", () => {
|
|
129
|
+
expect(formatCodeBlock("const x = 1;", "typescript")).toBe("```typescript\nconst x = 1;\n```");
|
|
130
|
+
});
|
|
131
|
+
it("handles empty code", () => {
|
|
132
|
+
expect(formatCodeBlock("")).toBe("```\n\n```");
|
|
133
|
+
});
|
|
134
|
+
it("handles multiline code", () => {
|
|
135
|
+
const code = "line1\nline2\nline3";
|
|
136
|
+
expect(formatCodeBlock(code, "js")).toBe("```js\nline1\nline2\nline3\n```");
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
describe("constants", () => {
|
|
140
|
+
it("exports DEFAULT_SPLIT_POINTS", () => {
|
|
141
|
+
expect(DEFAULT_SPLIT_POINTS).toContain("\n\n");
|
|
142
|
+
expect(DEFAULT_SPLIT_POINTS).toContain("\n");
|
|
143
|
+
expect(DEFAULT_SPLIT_POINTS).toContain(". ");
|
|
144
|
+
});
|
|
145
|
+
it("exports MIN_CHUNK_SIZE", () => {
|
|
146
|
+
expect(MIN_CHUNK_SIZE).toBe(100);
|
|
147
|
+
});
|
|
148
|
+
it("exports DEFAULT_MESSAGE_DELAY_MS", () => {
|
|
149
|
+
expect(DEFAULT_MESSAGE_DELAY_MS).toBe(500);
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
//# sourceMappingURL=message-splitting.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-splitting.test.js","sourceRoot":"","sources":["../../src/__tests__/message-splitting.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,YAAY,EACZ,UAAU,EACV,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,IAAI,GAAG,aAAa,CAAC;YAC3B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,gEAAgE;YAChE,mEAAmE;YACnE,0DAA0D;YAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,uCAAuC,CAAC;YACvE,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7C,yCAAyC;YACzC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7C,8BAA8B;YAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,iEAAiE;YACjE,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,yDAAyD,CAAC;YACzF,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,sDAAsD;YACtD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,4CAA4C,CAAC;YAC5E,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7C,0BAA0B;YAC1B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,IAAI,GAAG,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC7C,8EAA8E;YAC9E,MAAM,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,OAAO,GAAG,aAAa,CAAC;YAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,2DAA2D;YAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,wBAAwB,CAAC;YAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;YACzD,kDAAkD;YAClD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,uEAAuE;YACvE,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;YACnF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;YAClC,2EAA2E;YAC3E,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;YACjD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE;gBACnC,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,CAAC,GAAG,CAAC;aACnB,CAAC,CAAC;YACH,8DAA8D;YAC9D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YACtB,MAAM,OAAO,GAAG,oBAAoB,CAAC;YACrC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YACxD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CACxD,kCAAkC,CACnC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,IAAI,GAAG,qBAAqB,CAAC;YACnC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/session-manager.test.ts"],"names":[],"mappings":""}
|