@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,285 @@
1
+ /**
2
+ * Tests for AgentContext class functionality.
3
+ */
4
+ import { describe, test, expect, beforeEach } from '@jest/globals';
5
+ import { AgentContext } from '../src/context.js';
6
+ import { OCPHeaders } from '../src/headers.js';
7
+ // Fixtures
8
+ let sampleContext;
9
+ let minimalContext;
10
+ let complexContext;
11
+ beforeEach(() => {
12
+ // Sample context
13
+ sampleContext = new AgentContext({
14
+ agent_type: 'test_agent',
15
+ user: 'test_user',
16
+ workspace: 'test_workspace',
17
+ current_file: 'test_file.js',
18
+ });
19
+ sampleContext.updateGoal('test_goal', 'Testing OCP functionality');
20
+ sampleContext.addInteraction('test_action', 'test_endpoint', 'test_result');
21
+ // Minimal context
22
+ minimalContext = new AgentContext({ agent_type: 'minimal_agent' });
23
+ // Complex context
24
+ complexContext = new AgentContext({
25
+ agent_type: 'complex_agent',
26
+ user: 'complex_user',
27
+ workspace: 'complex_workspace',
28
+ current_file: 'complex_file.js',
29
+ });
30
+ // Set a goal first
31
+ complexContext.updateGoal('complex_goal', 'Complex goal summary');
32
+ // Add multiple interactions
33
+ for (let i = 0; i < 5; i++) {
34
+ complexContext.addInteraction(`action_${i}`, `endpoint_${i}`, `result_${i}`, { step: i });
35
+ }
36
+ // Add recent changes
37
+ for (let i = 0; i < 3; i++) {
38
+ complexContext.addRecentChange(`change_${i}`);
39
+ }
40
+ // Add API specs
41
+ complexContext.addApiSpec('github', 'https://api.github.com');
42
+ complexContext.addApiSpec('stripe', 'https://api.stripe.com');
43
+ // Set error context
44
+ complexContext.setErrorContext('Test error message', 'error_file.js');
45
+ });
46
+ describe('Agent Context Creation', () => {
47
+ test('minimal context creation', () => {
48
+ const context = new AgentContext({ agent_type: 'test_agent' });
49
+ expect(context.agent_type).toBe('test_agent');
50
+ expect(context.context_id.startsWith('ocp-')).toBe(true);
51
+ expect(context.context_id.length).toBeGreaterThan(8); // ocp- + at least 8 chars
52
+ expect(typeof context.session).toBe('object');
53
+ expect(Array.isArray(context.history)).toBe(true);
54
+ expect(typeof context.api_specs).toBe('object');
55
+ expect(context.created_at).toBeDefined();
56
+ expect(context.last_updated).toBeDefined();
57
+ });
58
+ test('full context creation', () => {
59
+ const context = new AgentContext({
60
+ agent_type: 'ide_copilot',
61
+ user: 'alice',
62
+ workspace: 'my-project',
63
+ current_file: 'main.js',
64
+ current_goal: 'debug_issue',
65
+ });
66
+ expect(context.agent_type).toBe('ide_copilot');
67
+ expect(context.user).toBe('alice');
68
+ expect(context.workspace).toBe('my-project');
69
+ expect(context.current_file).toBe('main.js');
70
+ expect(context.current_goal).toBe('debug_issue');
71
+ });
72
+ test('session initialization', () => {
73
+ const context = new AgentContext({ agent_type: 'test_agent' });
74
+ expect(context.session.start_time).toBeDefined();
75
+ expect(context.session.interaction_count).toBeDefined();
76
+ expect(context.session.agent_type).toBeDefined();
77
+ expect(context.session.agent_type).toBe('test_agent');
78
+ expect(context.session.interaction_count).toBe(0);
79
+ });
80
+ });
81
+ describe('Agent Context Updates', () => {
82
+ test('update goal', () => {
83
+ const originalCount = minimalContext.session.interaction_count;
84
+ minimalContext.updateGoal('new_goal', 'new summary');
85
+ expect(minimalContext.current_goal).toBe('new_goal');
86
+ expect(minimalContext.context_summary).toBe('new summary');
87
+ expect(minimalContext.session.interaction_count).toBe(originalCount + 1);
88
+ });
89
+ test('add interaction', () => {
90
+ minimalContext.addInteraction('test_action', 'test_endpoint', 'test_result', { key: 'value' });
91
+ expect(minimalContext.history.length).toBe(1);
92
+ const interaction = minimalContext.history[0];
93
+ expect(interaction.action).toBe('test_action');
94
+ expect(interaction.api_endpoint).toBe('test_endpoint');
95
+ expect(interaction.result).toBe('test_result');
96
+ expect(interaction.metadata?.key).toBe('value');
97
+ expect(interaction.timestamp).toBeDefined();
98
+ });
99
+ test('set error context', () => {
100
+ minimalContext.setErrorContext('Test error', 'error_file.js');
101
+ expect(minimalContext.error_context).toBe('Test error');
102
+ expect(minimalContext.current_file).toBe('error_file.js');
103
+ });
104
+ test('add recent change', () => {
105
+ minimalContext.addRecentChange('change 1');
106
+ minimalContext.addRecentChange('change 2');
107
+ expect(minimalContext.recent_changes.length).toBe(2);
108
+ expect(minimalContext.recent_changes).toContain('change 1');
109
+ expect(minimalContext.recent_changes).toContain('change 2');
110
+ });
111
+ test('recent changes limit', () => {
112
+ // Add 15 changes
113
+ for (let i = 0; i < 15; i++) {
114
+ minimalContext.addRecentChange(`change ${i}`);
115
+ }
116
+ // Should only keep last 10
117
+ expect(minimalContext.recent_changes.length).toBe(10);
118
+ expect(minimalContext.recent_changes[0]).toBe('change 5'); // First kept change
119
+ expect(minimalContext.recent_changes[9]).toBe('change 14'); // Last change
120
+ });
121
+ test('add api spec', () => {
122
+ minimalContext.addApiSpec('github', 'https://api.github.com');
123
+ expect(minimalContext.api_specs['github']).toBeDefined();
124
+ expect(minimalContext.api_specs['github']).toBe('https://api.github.com');
125
+ });
126
+ });
127
+ describe('Agent Context Serialization', () => {
128
+ test('to dict', () => {
129
+ const data = sampleContext.toDict();
130
+ expect(typeof data).toBe('object');
131
+ expect(data.context_id).toBe(sampleContext.context_id);
132
+ expect(data.agent_type).toBe(sampleContext.agent_type);
133
+ expect(data.user).toBe(sampleContext.user);
134
+ expect(typeof data.created_at).toBe('string');
135
+ expect(typeof data.last_updated).toBe('string');
136
+ });
137
+ test('from dict', () => {
138
+ const data = sampleContext.toDict();
139
+ const restoredContext = AgentContext.fromDict(data);
140
+ expect(restoredContext.context_id).toBe(sampleContext.context_id);
141
+ expect(restoredContext.agent_type).toBe(sampleContext.agent_type);
142
+ expect(restoredContext.user).toBe(sampleContext.user);
143
+ expect(restoredContext.workspace).toBe(sampleContext.workspace);
144
+ expect(restoredContext.history.length).toBe(sampleContext.history.length);
145
+ });
146
+ test('json roundtrip', () => {
147
+ // Convert to JSON and back
148
+ const jsonData = JSON.stringify(sampleContext.toDict());
149
+ const parsedData = JSON.parse(jsonData);
150
+ const restoredContext = AgentContext.fromDict(parsedData);
151
+ expect(restoredContext.context_id).toBe(sampleContext.context_id);
152
+ expect(restoredContext.current_goal).toBe(sampleContext.current_goal);
153
+ expect(restoredContext.history.length).toBe(sampleContext.history.length);
154
+ });
155
+ });
156
+ describe('Agent Context Utilities', () => {
157
+ test('get conversation summary', () => {
158
+ const summary = complexContext.getConversationSummary();
159
+ expect(typeof summary).toBe('string');
160
+ expect(summary.length).toBeGreaterThan(0);
161
+ expect(summary).toContain('Goal:'); // Should include goal
162
+ expect(summary).toContain('Error:'); // Should include error context
163
+ expect(summary).toContain('Working on:'); // Should include current file
164
+ });
165
+ test('conversation summary minimal', () => {
166
+ const summary = minimalContext.getConversationSummary();
167
+ expect(summary).toBe('New conversation');
168
+ });
169
+ test('clone context', () => {
170
+ const cloned = sampleContext.clone();
171
+ // Should have different ID
172
+ expect(cloned.context_id).not.toBe(sampleContext.context_id);
173
+ expect(cloned.context_id.startsWith('ocp-')).toBe(true);
174
+ // But same data
175
+ expect(cloned.agent_type).toBe(sampleContext.agent_type);
176
+ expect(cloned.user).toBe(sampleContext.user);
177
+ expect(cloned.workspace).toBe(sampleContext.workspace);
178
+ expect(cloned.history.length).toBe(sampleContext.history.length);
179
+ });
180
+ });
181
+ describe('Agent Context Edge Cases', () => {
182
+ test('empty agent type', () => {
183
+ // Should still work, though not recommended
184
+ const context = new AgentContext({ agent_type: '' });
185
+ expect(context.agent_type).toBe('');
186
+ expect(context.context_id.startsWith('ocp-')).toBe(true);
187
+ });
188
+ test('none values', () => {
189
+ const context = new AgentContext({
190
+ agent_type: 'test',
191
+ user: null,
192
+ workspace: null,
193
+ current_file: null,
194
+ });
195
+ expect(context.user).toBeNull();
196
+ expect(context.workspace).toBeNull();
197
+ expect(context.current_file).toBeNull();
198
+ });
199
+ test('unicode handling', () => {
200
+ const context = new AgentContext({
201
+ agent_type: 'test',
202
+ user: '用户', // Chinese characters
203
+ workspace: 'проект', // Cyrillic characters
204
+ current_file: 'файл.js',
205
+ });
206
+ // Should serialize/deserialize properly
207
+ const data = context.toDict();
208
+ const restored = AgentContext.fromDict(data);
209
+ expect(restored.user).toBe('用户');
210
+ expect(restored.workspace).toBe('проект');
211
+ expect(restored.current_file).toBe('файл.js');
212
+ });
213
+ });
214
+ describe('Agent Context Convenience Methods', () => {
215
+ test('to headers', () => {
216
+ const context = new AgentContext({ agent_type: 'test', user: 'alice' });
217
+ const headers = context.toHeaders();
218
+ expect(typeof headers).toBe('object');
219
+ const hasOCPHeader = Object.keys(headers).some((key) => key.startsWith('OCP-'));
220
+ expect(hasOCPHeader).toBe(true);
221
+ // Should be able to parse back using the headers module
222
+ const parsed = OCPHeaders.decodeContext(headers);
223
+ expect(parsed).not.toBeNull();
224
+ expect(parsed.agent_type).toBe('test');
225
+ expect(parsed.user).toBe('alice');
226
+ });
227
+ test('to headers with compression', () => {
228
+ const context = new AgentContext({ agent_type: 'test' });
229
+ const headersCompressed = context.toHeaders(true);
230
+ const headersUncompressed = context.toHeaders(false);
231
+ expect(typeof headersCompressed).toBe('object');
232
+ expect(typeof headersUncompressed).toBe('object');
233
+ // Both should work
234
+ expect(OCPHeaders.decodeContext(headersCompressed)).not.toBeNull();
235
+ expect(OCPHeaders.decodeContext(headersUncompressed)).not.toBeNull();
236
+ });
237
+ test('update from headers success', () => {
238
+ const context = new AgentContext({ agent_type: 'test', current_goal: 'old goal' });
239
+ const originalId = context.context_id;
240
+ // Create new context with different goal
241
+ const newContext = new AgentContext({ agent_type: 'test', current_goal: 'new goal' });
242
+ const newHeaders = newContext.toHeaders();
243
+ // Update should return true and change the goal
244
+ const result = context.updateFromHeaders(newHeaders);
245
+ expect(result).toBe(true);
246
+ expect(context.current_goal).toBe('new goal');
247
+ // Should preserve original context_id
248
+ expect(context.context_id).toBe(originalId);
249
+ });
250
+ test('update from headers no ocp headers', () => {
251
+ const context = new AgentContext({ agent_type: 'test', current_goal: 'original' });
252
+ const headers = { 'content-type': 'application/json' };
253
+ const result = context.updateFromHeaders(headers);
254
+ expect(result).toBe(false);
255
+ expect(context.current_goal).toBe('original'); // Unchanged
256
+ });
257
+ test('update from headers with headers object', () => {
258
+ const context = new AgentContext({ agent_type: 'test' });
259
+ const newContext = new AgentContext({ agent_type: 'test', current_goal: 'updated' });
260
+ // Create headers object (simulating Headers API)
261
+ const headersDict = newContext.toHeaders();
262
+ const headersObj = {
263
+ entries: function* () {
264
+ for (const [key, value] of Object.entries(headersDict)) {
265
+ yield [key, value];
266
+ }
267
+ },
268
+ };
269
+ const result = context.updateFromHeaders(headersObj);
270
+ expect(result).toBe(true);
271
+ expect(context.current_goal).toBe('updated');
272
+ });
273
+ test('update from headers with context summary', () => {
274
+ const context = new AgentContext({ agent_type: 'test' });
275
+ const newContext = new AgentContext({
276
+ agent_type: 'test',
277
+ context_summary: 'Updated summary',
278
+ });
279
+ const newHeaders = newContext.toHeaders();
280
+ const result = context.updateFromHeaders(newHeaders);
281
+ expect(result).toBe(true);
282
+ expect(context.context_summary).toBe('Updated summary');
283
+ });
284
+ });
285
+ //# sourceMappingURL=context.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.test.js","sourceRoot":"","sources":["../../tests/context.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for OCP header encoding and decoding functionality.
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=headers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.test.d.ts","sourceRoot":"","sources":["../../tests/headers.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}