@opencontextprotocol/agent 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.
Files changed (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +198 -0
  3. package/dist/src/agent.d.ts +112 -0
  4. package/dist/src/agent.d.ts.map +1 -0
  5. package/dist/src/agent.js +358 -0
  6. package/dist/src/agent.js.map +1 -0
  7. package/dist/src/context.d.ts +108 -0
  8. package/dist/src/context.d.ts.map +1 -0
  9. package/dist/src/context.js +196 -0
  10. package/dist/src/context.js.map +1 -0
  11. package/dist/src/errors.d.ts +40 -0
  12. package/dist/src/errors.d.ts.map +1 -0
  13. package/dist/src/errors.js +63 -0
  14. package/dist/src/errors.js.map +1 -0
  15. package/dist/src/headers.d.ts +63 -0
  16. package/dist/src/headers.d.ts.map +1 -0
  17. package/dist/src/headers.js +238 -0
  18. package/dist/src/headers.js.map +1 -0
  19. package/dist/src/http_client.d.ts +82 -0
  20. package/dist/src/http_client.d.ts.map +1 -0
  21. package/dist/src/http_client.js +181 -0
  22. package/dist/src/http_client.js.map +1 -0
  23. package/dist/src/index.d.ts +25 -0
  24. package/dist/src/index.d.ts.map +1 -0
  25. package/dist/src/index.js +35 -0
  26. package/dist/src/index.js.map +1 -0
  27. package/dist/src/registry.d.ts +52 -0
  28. package/dist/src/registry.d.ts.map +1 -0
  29. package/dist/src/registry.js +164 -0
  30. package/dist/src/registry.js.map +1 -0
  31. package/dist/src/schema_discovery.d.ts +149 -0
  32. package/dist/src/schema_discovery.d.ts.map +1 -0
  33. package/dist/src/schema_discovery.js +707 -0
  34. package/dist/src/schema_discovery.js.map +1 -0
  35. package/dist/src/schemas/ocp-context.json +138 -0
  36. package/dist/src/storage.d.ts +110 -0
  37. package/dist/src/storage.d.ts.map +1 -0
  38. package/dist/src/storage.js +399 -0
  39. package/dist/src/storage.js.map +1 -0
  40. package/dist/src/validation.d.ts +169 -0
  41. package/dist/src/validation.d.ts.map +1 -0
  42. package/dist/src/validation.js +92 -0
  43. package/dist/src/validation.js.map +1 -0
  44. package/dist/tests/agent.test.d.ts +5 -0
  45. package/dist/tests/agent.test.d.ts.map +1 -0
  46. package/dist/tests/agent.test.js +536 -0
  47. package/dist/tests/agent.test.js.map +1 -0
  48. package/dist/tests/context.test.d.ts +5 -0
  49. package/dist/tests/context.test.d.ts.map +1 -0
  50. package/dist/tests/context.test.js +285 -0
  51. package/dist/tests/context.test.js.map +1 -0
  52. package/dist/tests/headers.test.d.ts +5 -0
  53. package/dist/tests/headers.test.d.ts.map +1 -0
  54. package/dist/tests/headers.test.js +356 -0
  55. package/dist/tests/headers.test.js.map +1 -0
  56. package/dist/tests/http_client.test.d.ts +5 -0
  57. package/dist/tests/http_client.test.d.ts.map +1 -0
  58. package/dist/tests/http_client.test.js +373 -0
  59. package/dist/tests/http_client.test.js.map +1 -0
  60. package/dist/tests/registry.test.d.ts +5 -0
  61. package/dist/tests/registry.test.d.ts.map +1 -0
  62. package/dist/tests/registry.test.js +232 -0
  63. package/dist/tests/registry.test.js.map +1 -0
  64. package/dist/tests/schema_discovery.test.d.ts +5 -0
  65. package/dist/tests/schema_discovery.test.d.ts.map +1 -0
  66. package/dist/tests/schema_discovery.test.js +1074 -0
  67. package/dist/tests/schema_discovery.test.js.map +1 -0
  68. package/dist/tests/storage.test.d.ts +5 -0
  69. package/dist/tests/storage.test.d.ts.map +1 -0
  70. package/dist/tests/storage.test.js +414 -0
  71. package/dist/tests/storage.test.js.map +1 -0
  72. package/dist/tests/validation.test.d.ts +5 -0
  73. package/dist/tests/validation.test.d.ts.map +1 -0
  74. package/dist/tests/validation.test.js +254 -0
  75. package/dist/tests/validation.test.js.map +1 -0
  76. package/package.json +51 -0
@@ -0,0 +1,356 @@
1
+ /**
2
+ * Tests for OCP header encoding and decoding functionality.
3
+ */
4
+ import { describe, test, expect, beforeEach } from '@jest/globals';
5
+ import { gunzipSync } from 'zlib';
6
+ import { OCPHeaders, createOCPHeaders, extractContextFromResponse, parseContext, addContextHeaders, OCP_CONTEXT_ID, OCP_SESSION, OCP_AGENT_TYPE, OCP_CURRENT_GOAL, OCP_WORKSPACE, OCP_VERSION, } from '../src/headers.js';
7
+ import { AgentContext } from '../src/context.js';
8
+ // Fixtures
9
+ let sampleContext;
10
+ let minimalContext;
11
+ let complexContext;
12
+ // Mock HTTP response helper
13
+ function mockHttpResponse(options = {}) {
14
+ return {
15
+ status: options.status || 200,
16
+ headers: options.headers || {},
17
+ text: options.text || '',
18
+ json: () => (options.text ? JSON.parse(options.text) : {}),
19
+ };
20
+ }
21
+ beforeEach(() => {
22
+ sampleContext = new AgentContext({
23
+ agent_type: 'test_agent',
24
+ user: 'test_user',
25
+ workspace: 'test_workspace',
26
+ current_file: 'test_file.js',
27
+ });
28
+ sampleContext.updateGoal('test_goal', 'Testing OCP functionality');
29
+ sampleContext.addInteraction('test_action', 'test_endpoint', 'test_result');
30
+ minimalContext = new AgentContext({ agent_type: 'minimal_agent' });
31
+ complexContext = new AgentContext({
32
+ agent_type: 'complex_agent',
33
+ user: 'complex_user',
34
+ workspace: 'complex_workspace',
35
+ current_file: 'complex_file.js',
36
+ });
37
+ complexContext.updateGoal('complex_goal', 'Complex goal summary');
38
+ for (let i = 0; i < 5; i++) {
39
+ complexContext.addInteraction(`action_${i}`, `endpoint_${i}`, `result_${i}`, { step: i });
40
+ }
41
+ for (let i = 0; i < 3; i++) {
42
+ complexContext.addRecentChange(`change_${i}`);
43
+ }
44
+ complexContext.addApiSpec('github', 'https://api.github.com');
45
+ complexContext.addApiSpec('stripe', 'https://api.stripe.com');
46
+ complexContext.setErrorContext('Test error message', 'error_file.js');
47
+ });
48
+ describe('OCP Headers Encoding', () => {
49
+ test('encode minimal context', () => {
50
+ const headers = OCPHeaders.encodeContext(minimalContext);
51
+ expect(headers[OCP_CONTEXT_ID]).toBeDefined();
52
+ expect(headers[OCP_SESSION]).toBeDefined();
53
+ expect(headers[OCP_AGENT_TYPE]).toBeDefined();
54
+ expect(headers[OCP_VERSION]).toBeDefined();
55
+ expect(headers[OCP_CONTEXT_ID]).toBe(minimalContext.context_id);
56
+ expect(headers[OCP_AGENT_TYPE]).toBe(minimalContext.agent_type);
57
+ expect(headers[OCP_VERSION]).toBe('1.0');
58
+ });
59
+ test('encode full context', () => {
60
+ const headers = OCPHeaders.encodeContext(sampleContext);
61
+ // Check all expected headers are present
62
+ const expectedHeaders = [OCP_CONTEXT_ID, OCP_SESSION, OCP_AGENT_TYPE, OCP_VERSION];
63
+ for (const header of expectedHeaders) {
64
+ expect(headers[header]).toBeDefined();
65
+ }
66
+ // Check optional headers
67
+ if (sampleContext.current_goal) {
68
+ expect(headers[OCP_CURRENT_GOAL]).toBeDefined();
69
+ expect(headers[OCP_CURRENT_GOAL]).toBe(sampleContext.current_goal);
70
+ }
71
+ if (sampleContext.workspace) {
72
+ expect(headers[OCP_WORKSPACE]).toBeDefined();
73
+ expect(headers[OCP_WORKSPACE]).toBe(sampleContext.workspace);
74
+ }
75
+ });
76
+ test('encode with compression', () => {
77
+ const headers = OCPHeaders.encodeContext(complexContext, true);
78
+ // Session data should be compressed if large enough
79
+ const sessionData = headers[OCP_SESSION];
80
+ if (sessionData.startsWith('gzip:')) {
81
+ // Verify we can decode the compressed data
82
+ const encodedData = sessionData.slice(5);
83
+ const compressed = Buffer.from(encodedData, 'base64');
84
+ const decompressed = gunzipSync(compressed).toString('utf-8');
85
+ const parsed = JSON.parse(decompressed);
86
+ expect(parsed.context_id).toBe(complexContext.context_id);
87
+ }
88
+ });
89
+ test('encode without compression', () => {
90
+ const headers = OCPHeaders.encodeContext(sampleContext, false);
91
+ // Session data should be base64 encoded but not compressed
92
+ const sessionData = headers[OCP_SESSION];
93
+ expect(sessionData.startsWith('gzip:')).toBe(false);
94
+ // Should be decodable as base64
95
+ const decoded = Buffer.from(sessionData, 'base64').toString('utf-8');
96
+ const parsed = JSON.parse(decoded);
97
+ expect(parsed.context_id).toBe(sampleContext.context_id);
98
+ });
99
+ });
100
+ describe('OCP Headers Decoding', () => {
101
+ test('decode valid headers', () => {
102
+ // Encode then decode
103
+ const headers = OCPHeaders.encodeContext(sampleContext);
104
+ const decodedContext = OCPHeaders.decodeContext(headers);
105
+ expect(decodedContext).not.toBeNull();
106
+ expect(decodedContext.context_id).toBe(sampleContext.context_id);
107
+ expect(decodedContext.agent_type).toBe(sampleContext.agent_type);
108
+ expect(decodedContext.user).toBe(sampleContext.user);
109
+ expect(decodedContext.history.length).toBe(sampleContext.history.length);
110
+ });
111
+ test('decode case insensitive', () => {
112
+ const headers = OCPHeaders.encodeContext(sampleContext);
113
+ // Convert to different cases
114
+ const mixedCaseHeaders = {
115
+ 'ocp-context-id': headers[OCP_CONTEXT_ID],
116
+ 'OCP-SESSION': headers[OCP_SESSION],
117
+ 'Ocp-Agent-Type': headers[OCP_AGENT_TYPE],
118
+ };
119
+ const decodedContext = OCPHeaders.decodeContext(mixedCaseHeaders);
120
+ expect(decodedContext).not.toBeNull();
121
+ expect(decodedContext.context_id).toBe(sampleContext.context_id);
122
+ });
123
+ test('decode compressed headers', () => {
124
+ const headers = OCPHeaders.encodeContext(complexContext, true);
125
+ const decodedContext = OCPHeaders.decodeContext(headers);
126
+ expect(decodedContext).not.toBeNull();
127
+ expect(decodedContext.context_id).toBe(complexContext.context_id);
128
+ expect(decodedContext.history.length).toBe(complexContext.history.length);
129
+ });
130
+ test('decode missing headers', () => {
131
+ // Missing context ID
132
+ let headers = { [OCP_SESSION]: 'dGVzdA==' };
133
+ expect(OCPHeaders.decodeContext(headers)).toBeNull();
134
+ // Missing session
135
+ headers = { [OCP_CONTEXT_ID]: 'ocp-12345678' };
136
+ expect(OCPHeaders.decodeContext(headers)).toBeNull();
137
+ });
138
+ test('decode invalid base64', () => {
139
+ const headers = {
140
+ [OCP_CONTEXT_ID]: 'ocp-12345678',
141
+ [OCP_SESSION]: 'invalid-base64-data',
142
+ };
143
+ expect(OCPHeaders.decodeContext(headers)).toBeNull();
144
+ });
145
+ test('decode invalid json', () => {
146
+ const invalidJson = Buffer.from('invalid json').toString('base64');
147
+ const headers = {
148
+ [OCP_CONTEXT_ID]: 'ocp-12345678',
149
+ [OCP_SESSION]: invalidJson,
150
+ };
151
+ expect(OCPHeaders.decodeContext(headers)).toBeNull();
152
+ });
153
+ });
154
+ describe('OCP Headers Validation', () => {
155
+ test('validate valid headers', () => {
156
+ const headers = OCPHeaders.encodeContext(sampleContext);
157
+ expect(OCPHeaders.validateHeaders(headers)).toBe(true);
158
+ });
159
+ test('validate missing headers', () => {
160
+ // Missing context ID
161
+ let headers = { [OCP_SESSION]: 'dGVzdA==' };
162
+ expect(OCPHeaders.validateHeaders(headers)).toBe(false);
163
+ // Missing session
164
+ headers = { [OCP_CONTEXT_ID]: 'ocp-12345678' };
165
+ expect(OCPHeaders.validateHeaders(headers)).toBe(false);
166
+ });
167
+ test('validate invalid data', () => {
168
+ const headers = {
169
+ [OCP_CONTEXT_ID]: 'ocp-12345678',
170
+ [OCP_SESSION]: 'invalid-data',
171
+ };
172
+ expect(OCPHeaders.validateHeaders(headers)).toBe(false);
173
+ });
174
+ });
175
+ describe('OCP Headers Utilities', () => {
176
+ test('get context summary', () => {
177
+ const headers = OCPHeaders.encodeContext(sampleContext);
178
+ const summary = OCPHeaders.getContextSummary(headers);
179
+ expect(typeof summary).toBe('string');
180
+ expect(summary).toContain(sampleContext.context_id);
181
+ expect(summary).toContain(sampleContext.agent_type);
182
+ });
183
+ test('merge headers', () => {
184
+ const baseHeaders = {
185
+ 'Authorization': 'Bearer token123',
186
+ 'Content-Type': 'application/json',
187
+ };
188
+ const ocpHeaders = {
189
+ [OCP_CONTEXT_ID]: 'ocp-12345678',
190
+ [OCP_AGENT_TYPE]: 'test_agent',
191
+ };
192
+ const merged = OCPHeaders.mergeHeaders(baseHeaders, ocpHeaders);
193
+ // Should contain both sets
194
+ expect(merged['Authorization']).toBeDefined();
195
+ expect(merged['Content-Type']).toBeDefined();
196
+ expect(merged[OCP_CONTEXT_ID]).toBeDefined();
197
+ expect(merged[OCP_AGENT_TYPE]).toBeDefined();
198
+ // Original headers should not be modified
199
+ expect(baseHeaders[OCP_CONTEXT_ID]).toBeUndefined();
200
+ });
201
+ test('strip ocp headers', () => {
202
+ const headers = OCPHeaders.encodeContext(sampleContext);
203
+ headers['Authorization'] = 'Bearer token123';
204
+ headers['Content-Type'] = 'application/json';
205
+ const stripped = OCPHeaders.stripOCPHeaders(headers);
206
+ // OCP headers should be removed
207
+ expect(stripped[OCP_CONTEXT_ID]).toBeUndefined();
208
+ expect(stripped[OCP_SESSION]).toBeUndefined();
209
+ expect(stripped[OCP_AGENT_TYPE]).toBeUndefined();
210
+ // Non-OCP headers should remain
211
+ expect(stripped['Authorization']).toBeDefined();
212
+ expect(stripped['Content-Type']).toBeDefined();
213
+ });
214
+ });
215
+ describe('Convenience Functions', () => {
216
+ test('create ocp headers', () => {
217
+ const headers = createOCPHeaders(sampleContext);
218
+ expect(headers[OCP_CONTEXT_ID]).toBeDefined();
219
+ expect(headers[OCP_CONTEXT_ID]).toBe(sampleContext.context_id);
220
+ });
221
+ test('create ocp headers with base', () => {
222
+ const baseHeaders = { Authorization: 'Bearer token123' };
223
+ const headers = createOCPHeaders(sampleContext, baseHeaders);
224
+ // Should contain both
225
+ expect(headers['Authorization']).toBeDefined();
226
+ expect(headers[OCP_CONTEXT_ID]).toBeDefined();
227
+ });
228
+ test('extract context from response', () => {
229
+ // Create response with OCP headers
230
+ const ocpHeaders = OCPHeaders.encodeContext(sampleContext);
231
+ const response = mockHttpResponse({ headers: ocpHeaders });
232
+ const extractedContext = extractContextFromResponse(response);
233
+ expect(extractedContext).not.toBeNull();
234
+ expect(extractedContext.context_id).toBe(sampleContext.context_id);
235
+ });
236
+ test('extract context no headers', () => {
237
+ const response = mockHttpResponse({ headers: { 'Content-Type': 'application/json' } });
238
+ const extractedContext = extractContextFromResponse(response);
239
+ expect(extractedContext).toBeNull();
240
+ });
241
+ test('extract context no headers attr', () => {
242
+ const response = {};
243
+ const extractedContext = extractContextFromResponse(response);
244
+ expect(extractedContext).toBeNull();
245
+ });
246
+ });
247
+ describe('Header Round Trip', () => {
248
+ test('minimal roundtrip', () => {
249
+ const headers = OCPHeaders.encodeContext(minimalContext);
250
+ const decoded = OCPHeaders.decodeContext(headers);
251
+ expect(decoded.context_id).toBe(minimalContext.context_id);
252
+ expect(decoded.agent_type).toBe(minimalContext.agent_type);
253
+ });
254
+ test('complex roundtrip', () => {
255
+ const headers = OCPHeaders.encodeContext(complexContext);
256
+ const decoded = OCPHeaders.decodeContext(headers);
257
+ // Verify all data preserved
258
+ expect(decoded.context_id).toBe(complexContext.context_id);
259
+ expect(decoded.agent_type).toBe(complexContext.agent_type);
260
+ expect(decoded.user).toBe(complexContext.user);
261
+ expect(decoded.workspace).toBe(complexContext.workspace);
262
+ expect(decoded.current_file).toBe(complexContext.current_file);
263
+ expect(decoded.current_goal).toBe(complexContext.current_goal);
264
+ expect(decoded.error_context).toBe(complexContext.error_context);
265
+ expect(decoded.history.length).toBe(complexContext.history.length);
266
+ expect(decoded.recent_changes.length).toBe(complexContext.recent_changes.length);
267
+ expect(decoded.api_specs).toEqual(complexContext.api_specs);
268
+ });
269
+ test.each([true, false])('roundtrip with compression options: %s', (compress) => {
270
+ const headers = OCPHeaders.encodeContext(sampleContext, compress);
271
+ const decoded = OCPHeaders.decodeContext(headers);
272
+ expect(decoded.context_id).toBe(sampleContext.context_id);
273
+ expect(decoded.current_goal).toBe(sampleContext.current_goal);
274
+ expect(decoded.history.length).toBe(sampleContext.history.length);
275
+ });
276
+ });
277
+ describe('New Convenience Functions', () => {
278
+ test('parse context with dict', () => {
279
+ const headers = sampleContext.toHeaders();
280
+ const parsed = parseContext(headers);
281
+ expect(parsed).not.toBeNull();
282
+ expect(parsed.agent_type).toBe(sampleContext.agent_type);
283
+ expect(parsed.user).toBe(sampleContext.user);
284
+ });
285
+ test('parse context with headers object', () => {
286
+ const headersDict = sampleContext.toHeaders();
287
+ // Mock headers object with items() method
288
+ const headersObj = {
289
+ items: () => Object.entries(headersDict),
290
+ };
291
+ const parsed = parseContext(headersObj);
292
+ expect(parsed).not.toBeNull();
293
+ expect(parsed.agent_type).toBe(sampleContext.agent_type);
294
+ });
295
+ test('parse context no ocp headers', () => {
296
+ const headers = { 'content-type': 'application/json' };
297
+ const parsed = parseContext(headers);
298
+ expect(parsed).toBeNull();
299
+ });
300
+ test('add context headers flask style', () => {
301
+ // Mock Flask response with proper headers object
302
+ const headersMock = {};
303
+ const response = {
304
+ headers: headersMock,
305
+ };
306
+ addContextHeaders(response, sampleContext);
307
+ // Should have added headers
308
+ expect(Object.keys(response.headers).length).toBeGreaterThan(0);
309
+ expect(Object.keys(response.headers).some((key) => key.startsWith('OCP-'))).toBe(true);
310
+ });
311
+ test('add context headers django style', () => {
312
+ // Mock Django response (no headers, uses setHeader)
313
+ const setHeaderCalls = [];
314
+ const response = {
315
+ setHeader: (key, value) => setHeaderCalls.push([key, value]),
316
+ };
317
+ addContextHeaders(response, sampleContext);
318
+ // Should have called setHeader for each OCP header
319
+ expect(setHeaderCalls.length).toBeGreaterThan(0);
320
+ expect(setHeaderCalls.some(([key]) => key.startsWith('OCP-'))).toBe(true);
321
+ });
322
+ test('add context headers fastapi style', () => {
323
+ // Mock FastAPI response with headers object
324
+ const response = {
325
+ headers: {},
326
+ };
327
+ addContextHeaders(response, sampleContext);
328
+ // Should have added headers to the dict
329
+ expect(Object.keys(response.headers).length).toBeGreaterThan(0);
330
+ expect(Object.keys(response.headers).some((key) => key.startsWith('OCP-'))).toBe(true);
331
+ });
332
+ test('add context headers generic dict', () => {
333
+ // Mock response with headers dict
334
+ const response = {
335
+ headers: {},
336
+ };
337
+ addContextHeaders(response, sampleContext);
338
+ expect(Object.keys(response.headers).length).toBeGreaterThan(0);
339
+ expect(Object.keys(response.headers).some((key) => key.startsWith('OCP-'))).toBe(true);
340
+ });
341
+ test('add context headers unsupported type', () => {
342
+ // Mock completely unsupported response that fails all attempts
343
+ const response = {};
344
+ expect(() => addContextHeaders(response, sampleContext)).toThrow(TypeError);
345
+ expect(() => addContextHeaders(response, sampleContext)).toThrow(/Unsupported response type/);
346
+ });
347
+ test('add context headers with compression', () => {
348
+ const response = {
349
+ headers: {},
350
+ };
351
+ addContextHeaders(response, sampleContext, false);
352
+ expect(Object.keys(response.headers).length).toBeGreaterThan(0);
353
+ expect(Object.keys(response.headers).some((key) => key.startsWith('OCP-'))).toBe(true);
354
+ });
355
+ });
356
+ //# sourceMappingURL=headers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.test.js","sourceRoot":"","sources":["../../tests/headers.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for OCP HTTP client functionality.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=http_client.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http_client.test.d.ts","sourceRoot":"","sources":["../../tests/http_client.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}