@agentlensai/core 0.2.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.
Files changed (62) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/constants.test.d.ts +2 -0
  3. package/dist/__tests__/constants.test.d.ts.map +1 -0
  4. package/dist/__tests__/constants.test.js +17 -0
  5. package/dist/__tests__/constants.test.js.map +1 -0
  6. package/dist/__tests__/events.test.d.ts +2 -0
  7. package/dist/__tests__/events.test.d.ts.map +1 -0
  8. package/dist/__tests__/events.test.js +295 -0
  9. package/dist/__tests__/events.test.js.map +1 -0
  10. package/dist/__tests__/hash.test.d.ts +2 -0
  11. package/dist/__tests__/hash.test.d.ts.map +1 -0
  12. package/dist/__tests__/hash.test.js +316 -0
  13. package/dist/__tests__/hash.test.js.map +1 -0
  14. package/dist/__tests__/index.test.d.ts +2 -0
  15. package/dist/__tests__/index.test.d.ts.map +1 -0
  16. package/dist/__tests__/index.test.js +35 -0
  17. package/dist/__tests__/index.test.js.map +1 -0
  18. package/dist/__tests__/schemas.test.d.ts +2 -0
  19. package/dist/__tests__/schemas.test.d.ts.map +1 -0
  20. package/dist/__tests__/schemas.test.js +420 -0
  21. package/dist/__tests__/schemas.test.js.map +1 -0
  22. package/dist/__tests__/session-query-types.test.d.ts +2 -0
  23. package/dist/__tests__/session-query-types.test.d.ts.map +1 -0
  24. package/dist/__tests__/session-query-types.test.js +230 -0
  25. package/dist/__tests__/session-query-types.test.js.map +1 -0
  26. package/dist/__tests__/types.test.d.ts +2 -0
  27. package/dist/__tests__/types.test.d.ts.map +1 -0
  28. package/dist/__tests__/types.test.js +236 -0
  29. package/dist/__tests__/types.test.js.map +1 -0
  30. package/dist/alert-schemas.d.ts +99 -0
  31. package/dist/alert-schemas.d.ts.map +1 -0
  32. package/dist/alert-schemas.js +51 -0
  33. package/dist/alert-schemas.js.map +1 -0
  34. package/dist/constants.d.ts +12 -0
  35. package/dist/constants.d.ts.map +1 -0
  36. package/dist/constants.js +12 -0
  37. package/dist/constants.js.map +1 -0
  38. package/dist/events.d.ts +41 -0
  39. package/dist/events.d.ts.map +1 -0
  40. package/dist/events.js +73 -0
  41. package/dist/events.js.map +1 -0
  42. package/dist/hash.d.ts +61 -0
  43. package/dist/hash.d.ts.map +1 -0
  44. package/dist/hash.js +81 -0
  45. package/dist/hash.js.map +1 -0
  46. package/dist/index.d.ts +11 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +18 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/schemas.d.ts +301 -0
  51. package/dist/schemas.d.ts.map +1 -0
  52. package/dist/schemas.js +171 -0
  53. package/dist/schemas.js.map +1 -0
  54. package/dist/storage.d.ts +121 -0
  55. package/dist/storage.d.ts.map +1 -0
  56. package/dist/storage.js +9 -0
  57. package/dist/storage.js.map +1 -0
  58. package/dist/types.d.ts +239 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +37 -0
  61. package/dist/types.js.map +1 -0
  62. package/package.json +50 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Amit Paz
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=constants.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/constants.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { DEFAULT_PAGE_SIZE, MAX_PAGE_SIZE, MAX_PAYLOAD_SIZE, DEFAULT_RETENTION_DAYS, } from '../constants.js';
3
+ describe('Story 2.5: Constants', () => {
4
+ it('should export DEFAULT_PAGE_SIZE as 50', () => {
5
+ expect(DEFAULT_PAGE_SIZE).toBe(50);
6
+ });
7
+ it('should export MAX_PAGE_SIZE as 500', () => {
8
+ expect(MAX_PAGE_SIZE).toBe(500);
9
+ });
10
+ it('should export MAX_PAYLOAD_SIZE as 10240 (10KB)', () => {
11
+ expect(MAX_PAYLOAD_SIZE).toBe(10240);
12
+ });
13
+ it('should export DEFAULT_RETENTION_DAYS as 90', () => {
14
+ expect(DEFAULT_RETENTION_DAYS).toBe(90);
15
+ });
16
+ });
17
+ //# sourceMappingURL=constants.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.test.js","sourceRoot":"","sources":["../../src/__tests__/constants.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=events.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/events.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,295 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { createEvent, truncatePayload } from '../events.js';
3
+ import { computeEventHash } from '../hash.js';
4
+ import { MAX_PAYLOAD_SIZE } from '../constants.js';
5
+ describe('Story 2.5: Event Creation Helpers', () => {
6
+ describe('createEvent()', () => {
7
+ it('should generate a ULID id', () => {
8
+ const event = createEvent({
9
+ sessionId: 'sess_1',
10
+ agentId: 'agent_1',
11
+ eventType: 'tool_call',
12
+ payload: {
13
+ toolName: 'search',
14
+ arguments: {},
15
+ callId: 'c1',
16
+ },
17
+ });
18
+ // ULID is 26 chars, uppercase alphanumeric
19
+ expect(event.id).toMatch(/^[0-9A-Z]{26}$/);
20
+ });
21
+ it('should generate an ISO timestamp', () => {
22
+ const event = createEvent({
23
+ sessionId: 'sess_1',
24
+ agentId: 'agent_1',
25
+ eventType: 'custom',
26
+ payload: { type: 'test', data: {} },
27
+ });
28
+ // Should be valid ISO 8601
29
+ const parsed = new Date(event.timestamp);
30
+ expect(parsed.toISOString()).toBe(event.timestamp);
31
+ });
32
+ it('should default severity to info', () => {
33
+ const event = createEvent({
34
+ sessionId: 'sess_1',
35
+ agentId: 'agent_1',
36
+ eventType: 'custom',
37
+ payload: { type: 'test', data: {} },
38
+ });
39
+ expect(event.severity).toBe('info');
40
+ });
41
+ it('should accept custom severity', () => {
42
+ const event = createEvent({
43
+ sessionId: 'sess_1',
44
+ agentId: 'agent_1',
45
+ eventType: 'tool_error',
46
+ severity: 'error',
47
+ payload: {
48
+ callId: 'c1',
49
+ toolName: 'search',
50
+ error: 'Network error',
51
+ durationMs: 5000,
52
+ },
53
+ });
54
+ expect(event.severity).toBe('error');
55
+ });
56
+ it('should compute a valid hash', () => {
57
+ const event = createEvent({
58
+ sessionId: 'sess_1',
59
+ agentId: 'agent_1',
60
+ eventType: 'custom',
61
+ payload: { type: 'test', data: {} },
62
+ });
63
+ expect(event.hash).toMatch(/^[0-9a-f]{64}$/);
64
+ // Verify hash is correct (includes severity + metadata)
65
+ const expectedHash = computeEventHash({
66
+ id: event.id,
67
+ timestamp: event.timestamp,
68
+ sessionId: event.sessionId,
69
+ agentId: event.agentId,
70
+ eventType: event.eventType,
71
+ severity: event.severity,
72
+ payload: event.payload,
73
+ metadata: event.metadata,
74
+ prevHash: event.prevHash,
75
+ });
76
+ expect(event.hash).toBe(expectedHash);
77
+ });
78
+ it('should set prevHash to null when not provided', () => {
79
+ const event = createEvent({
80
+ sessionId: 'sess_1',
81
+ agentId: 'agent_1',
82
+ eventType: 'custom',
83
+ payload: { type: 'test', data: {} },
84
+ });
85
+ expect(event.prevHash).toBeNull();
86
+ });
87
+ it('should accept prevHash for chaining', () => {
88
+ const event = createEvent({
89
+ sessionId: 'sess_1',
90
+ agentId: 'agent_1',
91
+ eventType: 'custom',
92
+ payload: { type: 'test', data: {} },
93
+ prevHash: 'abc123def456',
94
+ });
95
+ expect(event.prevHash).toBe('abc123def456');
96
+ });
97
+ it('should default metadata to empty object', () => {
98
+ const event = createEvent({
99
+ sessionId: 'sess_1',
100
+ agentId: 'agent_1',
101
+ eventType: 'custom',
102
+ payload: { type: 'test', data: {} },
103
+ });
104
+ expect(event.metadata).toEqual({});
105
+ });
106
+ it('should accept custom metadata', () => {
107
+ const event = createEvent({
108
+ sessionId: 'sess_1',
109
+ agentId: 'agent_1',
110
+ eventType: 'custom',
111
+ payload: { type: 'test', data: {} },
112
+ metadata: { source: 'mcp', version: '1.0' },
113
+ });
114
+ expect(event.metadata).toEqual({ source: 'mcp', version: '1.0' });
115
+ });
116
+ it('should use provided timestamp', () => {
117
+ const ts = '2026-02-07T10:00:00.000Z';
118
+ const event = createEvent({
119
+ sessionId: 'sess_1',
120
+ agentId: 'agent_1',
121
+ eventType: 'custom',
122
+ payload: { type: 'test', data: {} },
123
+ timestamp: ts,
124
+ });
125
+ expect(event.timestamp).toBe(ts);
126
+ });
127
+ it('should return a full AgentLensEvent with all required fields', () => {
128
+ const event = createEvent({
129
+ sessionId: 'sess_abc',
130
+ agentId: 'agent_main',
131
+ eventType: 'tool_call',
132
+ payload: {
133
+ toolName: 'web_search',
134
+ arguments: { query: 'test' },
135
+ callId: 'call_1',
136
+ },
137
+ });
138
+ expect(event).toHaveProperty('id');
139
+ expect(event).toHaveProperty('timestamp');
140
+ expect(event).toHaveProperty('sessionId', 'sess_abc');
141
+ expect(event).toHaveProperty('agentId', 'agent_main');
142
+ expect(event).toHaveProperty('eventType', 'tool_call');
143
+ expect(event).toHaveProperty('severity', 'info');
144
+ expect(event).toHaveProperty('payload');
145
+ expect(event).toHaveProperty('metadata');
146
+ expect(event).toHaveProperty('prevHash', null);
147
+ expect(event).toHaveProperty('hash');
148
+ });
149
+ it('should create chainable events', () => {
150
+ const event1 = createEvent({
151
+ sessionId: 'sess_1',
152
+ agentId: 'agent_1',
153
+ eventType: 'session_started',
154
+ payload: { agentName: 'Test Agent' },
155
+ });
156
+ const event2 = createEvent({
157
+ sessionId: 'sess_1',
158
+ agentId: 'agent_1',
159
+ eventType: 'tool_call',
160
+ payload: { toolName: 'search', arguments: {}, callId: 'c1' },
161
+ prevHash: event1.hash,
162
+ });
163
+ expect(event2.prevHash).toBe(event1.hash);
164
+ });
165
+ });
166
+ describe('truncatePayload()', () => {
167
+ it('should return payload unchanged when under size limit', () => {
168
+ const payload = {
169
+ type: 'test',
170
+ data: { key: 'value' },
171
+ };
172
+ const result = truncatePayload(payload);
173
+ expect(result).toEqual(payload);
174
+ });
175
+ it('should truncate payload over 10KB with _truncated indicator', () => {
176
+ // Create a payload larger than 10KB
177
+ const largeData = {};
178
+ for (let i = 0; i < 500; i++) {
179
+ largeData[`key_${i}`] = 'x'.repeat(50);
180
+ }
181
+ const payload = {
182
+ type: 'large_event',
183
+ data: largeData,
184
+ };
185
+ const serialized = JSON.stringify(payload);
186
+ expect(serialized.length).toBeGreaterThan(MAX_PAYLOAD_SIZE);
187
+ const result = truncatePayload(payload);
188
+ expect(result.data._truncated).toBe(true);
189
+ expect(result.data.originalSize).toBe(serialized.length);
190
+ expect(result.data.maxSize).toBe(MAX_PAYLOAD_SIZE);
191
+ expect(typeof result.data.preview).toBe('string');
192
+ });
193
+ it('should keep payload exactly at size limit', () => {
194
+ // Build a payload that's exactly at the limit
195
+ const targetSize = MAX_PAYLOAD_SIZE;
196
+ // Base: {"type":"test","data":{"content":"..."}}
197
+ const baseLen = Buffer.byteLength(JSON.stringify({ type: 'test', data: { content: '' } }), 'utf8');
198
+ const padding = 'a'.repeat(targetSize - baseLen);
199
+ const payload = {
200
+ type: 'test',
201
+ data: { content: padding },
202
+ };
203
+ const serialized = JSON.stringify(payload);
204
+ expect(Buffer.byteLength(serialized, 'utf8')).toBeLessThanOrEqual(MAX_PAYLOAD_SIZE);
205
+ const result = truncatePayload(payload);
206
+ expect(result).toEqual(payload);
207
+ });
208
+ it('should truncate multi-byte content that exceeds byte budget', () => {
209
+ // Each emoji is 4 bytes in UTF-8 but only 2 code units in JS string length.
210
+ // Each CJK character is 3 bytes in UTF-8 but 1 code unit.
211
+ // Build a payload that is under .length limit but over byte limit.
212
+ const emojiChar = '🔥'; // 4 bytes UTF-8, 2 code units
213
+ // Fill close to 10KB with emoji
214
+ const count = Math.ceil(MAX_PAYLOAD_SIZE / 4) + 100;
215
+ const bigEmoji = emojiChar.repeat(count);
216
+ const payload = {
217
+ type: 'emoji_test',
218
+ data: { content: bigEmoji },
219
+ };
220
+ const serialized = JSON.stringify(payload);
221
+ // Verify it would pass the old .length check but fail byte check
222
+ // (emoji in JSON are escaped to \uD83D\uDD25, so actually 12 chars per emoji in JSON)
223
+ // Either way, the byte length should exceed the budget
224
+ expect(Buffer.byteLength(serialized, 'utf8')).toBeGreaterThan(MAX_PAYLOAD_SIZE);
225
+ const result = truncatePayload(payload);
226
+ expect(result.data._truncated).toBe(true);
227
+ expect(result.data.originalSize).toBe(Buffer.byteLength(serialized, 'utf8'));
228
+ });
229
+ it('should correctly measure CJK characters by byte length', () => {
230
+ // CJK chars are 3 bytes each in UTF-8
231
+ const cjk = '中'.repeat(4000); // 12000 bytes > 10240
232
+ const payload = {
233
+ type: 'cjk_test',
234
+ data: { content: cjk },
235
+ };
236
+ const serialized = JSON.stringify(payload);
237
+ expect(Buffer.byteLength(serialized, 'utf8')).toBeGreaterThan(MAX_PAYLOAD_SIZE);
238
+ const result = truncatePayload(payload);
239
+ expect(result.data._truncated).toBe(true);
240
+ });
241
+ });
242
+ describe('hash coverage with severity and metadata', () => {
243
+ it('should produce different hashes for different severity values', () => {
244
+ const hash1 = computeEventHash({
245
+ id: 'SAME_ID',
246
+ timestamp: '2026-02-07T10:00:00.000Z',
247
+ sessionId: 'sess_1',
248
+ agentId: 'agent_1',
249
+ eventType: 'custom',
250
+ severity: 'info',
251
+ payload: { type: 'test', data: {} },
252
+ metadata: {},
253
+ prevHash: null,
254
+ });
255
+ const hash2 = computeEventHash({
256
+ id: 'SAME_ID',
257
+ timestamp: '2026-02-07T10:00:00.000Z',
258
+ sessionId: 'sess_1',
259
+ agentId: 'agent_1',
260
+ eventType: 'custom',
261
+ severity: 'error',
262
+ payload: { type: 'test', data: {} },
263
+ metadata: {},
264
+ prevHash: null,
265
+ });
266
+ expect(hash1).not.toBe(hash2);
267
+ });
268
+ it('should produce different hashes for different metadata values', () => {
269
+ const hash1 = computeEventHash({
270
+ id: 'SAME_ID',
271
+ timestamp: '2026-02-07T10:00:00.000Z',
272
+ sessionId: 'sess_1',
273
+ agentId: 'agent_1',
274
+ eventType: 'custom',
275
+ severity: 'info',
276
+ payload: { type: 'test', data: {} },
277
+ metadata: {},
278
+ prevHash: null,
279
+ });
280
+ const hash2 = computeEventHash({
281
+ id: 'SAME_ID',
282
+ timestamp: '2026-02-07T10:00:00.000Z',
283
+ sessionId: 'sess_1',
284
+ agentId: 'agent_1',
285
+ eventType: 'custom',
286
+ severity: 'info',
287
+ payload: { type: 'test', data: {} },
288
+ metadata: { source: 'mcp' },
289
+ prevHash: null,
290
+ });
291
+ expect(hash1).not.toBe(hash2);
292
+ });
293
+ });
294
+ });
295
+ //# sourceMappingURL=events.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.test.js","sourceRoot":"","sources":["../../src/__tests__/events.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=hash.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/hash.test.ts"],"names":[],"mappings":""}