@agentlensai/mcp 0.11.0 → 0.13.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 (166) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/benchmark.test.d.ts +5 -0
  3. package/dist/__tests__/benchmark.test.js +1 -1
  4. package/dist/__tests__/capabilities.test.d.ts +5 -0
  5. package/dist/__tests__/capabilities.test.d.ts.map +1 -0
  6. package/dist/__tests__/capabilities.test.js +127 -0
  7. package/dist/__tests__/capabilities.test.js.map +1 -0
  8. package/dist/__tests__/context.test.d.ts +5 -0
  9. package/dist/__tests__/context.test.d.ts.map +1 -0
  10. package/dist/__tests__/context.test.js +203 -0
  11. package/dist/__tests__/context.test.js.map +1 -0
  12. package/dist/__tests__/guardrail-middleware.test.d.ts +2 -0
  13. package/dist/__tests__/guardrail-middleware.test.d.ts.map +1 -0
  14. package/dist/__tests__/guardrail-middleware.test.js +107 -0
  15. package/dist/__tests__/guardrail-middleware.test.js.map +1 -0
  16. package/dist/__tests__/health.test.d.ts +5 -0
  17. package/dist/__tests__/health.test.js +1 -1
  18. package/dist/__tests__/llm-call.test.d.ts +2 -0
  19. package/dist/__tests__/llm-call.test.js +1 -1
  20. package/dist/__tests__/optimize.test.d.ts +5 -0
  21. package/dist/__tests__/optimize.test.js +1 -1
  22. package/dist/__tests__/recall.test.d.ts +2 -0
  23. package/dist/__tests__/recall.test.js +4 -4
  24. package/dist/__tests__/recall.test.js.map +1 -1
  25. package/dist/__tests__/reflect.test.d.ts +5 -0
  26. package/dist/__tests__/reflect.test.d.ts.map +1 -0
  27. package/dist/__tests__/reflect.test.js +165 -0
  28. package/dist/__tests__/reflect.test.js.map +1 -0
  29. package/dist/__tests__/replay.test.d.ts +5 -0
  30. package/dist/__tests__/replay.test.d.ts.map +1 -0
  31. package/dist/__tests__/replay.test.js +245 -0
  32. package/dist/__tests__/replay.test.js.map +1 -0
  33. package/dist/capabilities.d.ts +28 -0
  34. package/dist/capabilities.d.ts.map +1 -0
  35. package/dist/capabilities.js +68 -0
  36. package/dist/capabilities.js.map +1 -0
  37. package/dist/guardrail-middleware.d.ts +36 -0
  38. package/dist/guardrail-middleware.d.ts.map +1 -0
  39. package/dist/guardrail-middleware.js +70 -0
  40. package/dist/guardrail-middleware.js.map +1 -0
  41. package/dist/index.d.ts +19 -5
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +42 -8
  44. package/dist/index.js.map +1 -1
  45. package/dist/server.test.d.ts +2 -0
  46. package/dist/server.test.js +12 -5
  47. package/dist/server.test.js.map +1 -1
  48. package/dist/tools/__tests__/agents.test.d.ts +5 -0
  49. package/dist/tools/__tests__/agents.test.d.ts.map +1 -0
  50. package/dist/tools/__tests__/agents.test.js +56 -0
  51. package/dist/tools/__tests__/agents.test.js.map +1 -0
  52. package/dist/tools/__tests__/alerts.test.d.ts +5 -0
  53. package/dist/tools/__tests__/alerts.test.d.ts.map +1 -0
  54. package/dist/tools/__tests__/alerts.test.js +83 -0
  55. package/dist/tools/__tests__/alerts.test.js.map +1 -0
  56. package/dist/tools/__tests__/analytics.test.d.ts +5 -0
  57. package/dist/tools/__tests__/analytics.test.d.ts.map +1 -0
  58. package/dist/tools/__tests__/analytics.test.js +53 -0
  59. package/dist/tools/__tests__/analytics.test.js.map +1 -0
  60. package/dist/tools/__tests__/cost-budgets.test.d.ts +5 -0
  61. package/dist/tools/__tests__/cost-budgets.test.d.ts.map +1 -0
  62. package/dist/tools/__tests__/cost-budgets.test.js +86 -0
  63. package/dist/tools/__tests__/cost-budgets.test.js.map +1 -0
  64. package/dist/tools/__tests__/error-helpers.test.d.ts +5 -0
  65. package/dist/tools/__tests__/error-helpers.test.d.ts.map +1 -0
  66. package/dist/tools/__tests__/error-helpers.test.js +38 -0
  67. package/dist/tools/__tests__/error-helpers.test.js.map +1 -0
  68. package/dist/tools/__tests__/lessons.test.d.ts +5 -0
  69. package/dist/tools/__tests__/lessons.test.d.ts.map +1 -0
  70. package/dist/tools/__tests__/lessons.test.js +64 -0
  71. package/dist/tools/__tests__/lessons.test.js.map +1 -0
  72. package/dist/tools/__tests__/prompts.test.d.ts +5 -0
  73. package/dist/tools/__tests__/prompts.test.d.ts.map +1 -0
  74. package/dist/tools/__tests__/prompts.test.js +112 -0
  75. package/dist/tools/__tests__/prompts.test.js.map +1 -0
  76. package/dist/tools/__tests__/sessions.test.d.ts +5 -0
  77. package/dist/tools/__tests__/sessions.test.d.ts.map +1 -0
  78. package/dist/tools/__tests__/sessions.test.js +62 -0
  79. package/dist/tools/__tests__/sessions.test.js.map +1 -0
  80. package/dist/tools/__tests__/stats.test.d.ts +5 -0
  81. package/dist/tools/__tests__/stats.test.d.ts.map +1 -0
  82. package/dist/tools/__tests__/stats.test.js +41 -0
  83. package/dist/tools/__tests__/stats.test.js.map +1 -0
  84. package/dist/tools/__tests__/trust.test.d.ts +5 -0
  85. package/dist/tools/__tests__/trust.test.d.ts.map +1 -0
  86. package/dist/tools/__tests__/trust.test.js +46 -0
  87. package/dist/tools/__tests__/trust.test.js.map +1 -0
  88. package/dist/tools/agents.d.ts +9 -0
  89. package/dist/tools/agents.d.ts.map +1 -0
  90. package/dist/tools/agents.js +67 -0
  91. package/dist/tools/agents.js.map +1 -0
  92. package/dist/tools/alerts.d.ts +9 -0
  93. package/dist/tools/alerts.d.ts.map +1 -0
  94. package/dist/tools/alerts.js +126 -0
  95. package/dist/tools/alerts.js.map +1 -0
  96. package/dist/tools/analytics.d.ts +9 -0
  97. package/dist/tools/analytics.d.ts.map +1 -0
  98. package/dist/tools/analytics.js +67 -0
  99. package/dist/tools/analytics.js.map +1 -0
  100. package/dist/tools/cost-budgets.d.ts +9 -0
  101. package/dist/tools/cost-budgets.d.ts.map +1 -0
  102. package/dist/tools/cost-budgets.js +144 -0
  103. package/dist/tools/cost-budgets.js.map +1 -0
  104. package/dist/tools/error-helpers.d.ts +14 -0
  105. package/dist/tools/error-helpers.d.ts.map +1 -0
  106. package/dist/tools/error-helpers.js +17 -0
  107. package/dist/tools/error-helpers.js.map +1 -0
  108. package/dist/tools/lessons.d.ts +9 -0
  109. package/dist/tools/lessons.d.ts.map +1 -0
  110. package/dist/tools/lessons.js +107 -0
  111. package/dist/tools/lessons.js.map +1 -0
  112. package/dist/tools/prompts.d.ts +9 -0
  113. package/dist/tools/prompts.d.ts.map +1 -0
  114. package/dist/tools/prompts.js +117 -0
  115. package/dist/tools/prompts.js.map +1 -0
  116. package/dist/tools/recall.js +3 -3
  117. package/dist/tools/recall.js.map +1 -1
  118. package/dist/tools/reflect.js +1 -1
  119. package/dist/tools/reflect.js.map +1 -1
  120. package/dist/tools/sessions.d.ts +9 -0
  121. package/dist/tools/sessions.d.ts.map +1 -0
  122. package/dist/tools/sessions.js +88 -0
  123. package/dist/tools/sessions.js.map +1 -0
  124. package/dist/tools/stats.d.ts +9 -0
  125. package/dist/tools/stats.d.ts.map +1 -0
  126. package/dist/tools/stats.js +43 -0
  127. package/dist/tools/stats.js.map +1 -0
  128. package/dist/tools/trust.d.ts +9 -0
  129. package/dist/tools/trust.d.ts.map +1 -0
  130. package/dist/tools/trust.js +42 -0
  131. package/dist/tools/trust.js.map +1 -0
  132. package/dist/tools.d.ts +11 -2
  133. package/dist/tools.d.ts.map +1 -1
  134. package/dist/tools.js +70 -47
  135. package/dist/tools.js.map +1 -1
  136. package/dist/tools.test.d.ts +2 -0
  137. package/dist/tools.test.js +10 -3
  138. package/dist/tools.test.js.map +1 -1
  139. package/dist/transport.d.ts +59 -0
  140. package/dist/transport.d.ts.map +1 -1
  141. package/dist/transport.js +245 -0
  142. package/dist/transport.js.map +1 -1
  143. package/dist/transport.test.d.ts +2 -0
  144. package/dist/transport.test.d.ts.map +1 -0
  145. package/dist/transport.test.js +170 -0
  146. package/dist/transport.test.js.map +1 -0
  147. package/package.json +10 -10
  148. package/dist/__tests__/learn.test.d.ts.map +0 -1
  149. package/dist/__tests__/learn.test.js +0 -381
  150. package/dist/__tests__/learn.test.js.map +0 -1
  151. package/dist/tools/__tests__/community.test.d.ts +0 -5
  152. package/dist/tools/__tests__/community.test.d.ts.map +0 -1
  153. package/dist/tools/__tests__/community.test.js +0 -172
  154. package/dist/tools/__tests__/community.test.js.map +0 -1
  155. package/dist/tools/__tests__/transport-community.test.d.ts +0 -5
  156. package/dist/tools/__tests__/transport-community.test.d.ts.map +0 -1
  157. package/dist/tools/__tests__/transport-community.test.js +0 -99
  158. package/dist/tools/__tests__/transport-community.test.js.map +0 -1
  159. package/dist/tools/community.d.ts +0 -10
  160. package/dist/tools/community.d.ts.map +0 -1
  161. package/dist/tools/community.js +0 -167
  162. package/dist/tools/community.js.map +0 -1
  163. package/dist/tools/learn.d.ts +0 -10
  164. package/dist/tools/learn.d.ts.map +0 -1
  165. package/dist/tools/learn.js +0 -277
  166. package/dist/tools/learn.js.map +0 -1
@@ -1,99 +0,0 @@
1
- /**
2
- * Tests for community/discovery/delegation transport methods (Story 7.1)
3
- */
4
- import { describe, it, expect, vi, beforeEach } from 'vitest';
5
- import { AgentLensTransport } from '../../transport.js';
6
- describe('AgentLensTransport — Community methods', () => {
7
- let transport;
8
- beforeEach(() => {
9
- transport = new AgentLensTransport({ baseUrl: 'http://localhost:3400', apiKey: 'test-key' });
10
- vi.stubGlobal('fetch', vi.fn());
11
- });
12
- describe('communityShare', () => {
13
- it('should POST to /api/community/share', async () => {
14
- const mockResp = { ok: true, json: () => Promise.resolve({ status: 'shared' }) };
15
- fetch.mockResolvedValue(mockResp);
16
- await transport.communityShare({ lessonId: 'l1', category: 'general' });
17
- expect(fetch).toHaveBeenCalledWith('http://localhost:3400/api/community/share', expect.objectContaining({
18
- method: 'POST',
19
- headers: expect.objectContaining({ Authorization: 'Bearer test-key' }),
20
- }));
21
- });
22
- it('should send body as JSON', async () => {
23
- fetch.mockResolvedValue({ ok: true, json: () => ({}) });
24
- await transport.communityShare({ lessonId: 'l1' });
25
- const body = JSON.parse(fetch.mock.calls[0][1].body);
26
- expect(body.lessonId).toBe('l1');
27
- });
28
- });
29
- describe('communitySearch', () => {
30
- it('should GET /api/community/search with params', async () => {
31
- fetch.mockResolvedValue({ ok: true, json: () => ({ lessons: [] }) });
32
- await transport.communitySearch({ query: 'test', category: 'general' });
33
- const url = fetch.mock.calls[0][0];
34
- expect(url).toContain('/api/community/search');
35
- expect(url).toContain('query=test');
36
- expect(url).toContain('category=general');
37
- });
38
- });
39
- describe('communityRate', () => {
40
- it('should POST to /api/community/rate', async () => {
41
- fetch.mockResolvedValue({ ok: true, json: () => ({}) });
42
- await transport.communityRate({ lessonId: 'l1', delta: 1 });
43
- const call = fetch.mock.calls[0];
44
- expect(call[0]).toBe('http://localhost:3400/api/community/rate');
45
- const body = JSON.parse(call[1].body);
46
- expect(body.delta).toBe(1);
47
- });
48
- });
49
- describe('discover', () => {
50
- it('should GET /api/discovery with params', async () => {
51
- fetch.mockResolvedValue({ ok: true, json: () => ({ results: [] }) });
52
- await transport.discover({ taskType: 'code-review', minTrustScore: '70' });
53
- const url = fetch.mock.calls[0][0];
54
- expect(url).toContain('/api/discovery');
55
- expect(url).toContain('taskType=code-review');
56
- expect(url).toContain('minTrustScore=70');
57
- });
58
- });
59
- describe('delegate', () => {
60
- it('should POST to /api/delegations', async () => {
61
- fetch.mockResolvedValue({ ok: true, json: () => ({}) });
62
- await transport.delegate({ targetAnonymousId: 'anon-1', taskType: 'analysis', input: {} });
63
- const call = fetch.mock.calls[0];
64
- expect(call[0]).toBe('http://localhost:3400/api/delegations');
65
- expect(call[1].method).toBe('POST');
66
- });
67
- it('should include all fields in body', async () => {
68
- fetch.mockResolvedValue({ ok: true, json: () => ({}) });
69
- await transport.delegate({
70
- targetAnonymousId: 'anon-1',
71
- taskType: 'translation',
72
- input: { text: 'hello' },
73
- fallbackEnabled: true,
74
- maxRetries: 3,
75
- timeoutMs: 10000,
76
- });
77
- const body = JSON.parse(fetch.mock.calls[0][1].body);
78
- expect(body.targetAnonymousId).toBe('anon-1');
79
- expect(body.fallbackEnabled).toBe(true);
80
- expect(body.maxRetries).toBe(3);
81
- });
82
- });
83
- describe('auth headers', () => {
84
- it('should include API key in Authorization header', async () => {
85
- fetch.mockResolvedValue({ ok: true, json: () => ({}) });
86
- await transport.communityShare({ lessonId: 'l1' });
87
- const headers = fetch.mock.calls[0][1].headers;
88
- expect(headers.Authorization).toBe('Bearer test-key');
89
- });
90
- it('should not include Authorization when no API key', async () => {
91
- const noKeyTransport = new AgentLensTransport({ baseUrl: 'http://localhost:3400' });
92
- fetch.mockResolvedValue({ ok: true, json: () => ({}) });
93
- await noKeyTransport.communityShare({ lessonId: 'l1' });
94
- const headers = fetch.mock.calls[0][1].headers;
95
- expect(headers.Authorization).toBeUndefined();
96
- });
97
- });
98
- });
99
- //# sourceMappingURL=transport-community.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transport-community.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/transport-community.test.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * agentlens_community MCP Tool (Story 7.1)
3
- *
4
- * Community sharing operations via a single tool with an `action` parameter.
5
- * Actions: share, search, rate
6
- */
7
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
- import type { AgentLensTransport } from '../transport.js';
9
- export declare function registerCommunityTool(server: McpServer, transport: AgentLensTransport): void;
10
- //# sourceMappingURL=community.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"community.d.ts","sourceRoot":"","sources":["../../src/tools/community.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAwD5F"}
@@ -1,167 +0,0 @@
1
- /**
2
- * agentlens_community MCP Tool (Story 7.1)
3
- *
4
- * Community sharing operations via a single tool with an `action` parameter.
5
- * Actions: share, search, rate
6
- */
7
- import { z } from 'zod';
8
- export function registerCommunityTool(server, transport) {
9
- server.tool('agentlens_community', `Interact with the AgentLens community pool — share lessons, search community knowledge, or rate shared lessons.
10
-
11
- **When to use:** To share a useful lesson with the community (share), to find community knowledge on a topic (search), or to rate the quality of a shared lesson (rate).
12
-
13
- **Actions:**
14
- - share: Share a lesson with the community pool
15
- - search: Search the community pool for shared lessons
16
- - rate: Rate a shared lesson (+1 upvote, -1 downvote)
17
-
18
- **Example:** agentlens_community({ action: "search", query: "rate limiting best practices", category: "error-patterns", limit: 5 })`, {
19
- action: z.enum(['share', 'search', 'rate']).describe('Operation to perform: share (share a lesson), search (search community), rate (rate a lesson)'),
20
- // Fields for share
21
- lessonId: z.string().optional().describe('Lesson ID to share or rate (required for share and rate)'),
22
- // Fields for share/search
23
- category: z.string().optional().describe('Category filter (e.g., model-performance, error-patterns, tool-usage, cost-optimization, prompt-engineering, general)'),
24
- // Fields for search
25
- query: z.string().optional().describe('Search query text (required for search)'),
26
- minReputation: z.number().optional().describe('Minimum reputation score filter (for search)'),
27
- limit: z.number().optional().describe('Max results to return (default: 10, max: 50)'),
28
- // Fields for rate
29
- delta: z.number().optional().describe('Rating delta: +1 for upvote, -1 for downvote (required for rate)'),
30
- }, async (args) => {
31
- try {
32
- switch (args.action) {
33
- case 'share':
34
- return await handleShare(transport, args);
35
- case 'search':
36
- return await handleSearch(transport, args);
37
- case 'rate':
38
- return await handleRate(transport, args);
39
- default:
40
- return {
41
- content: [{ type: 'text', text: `Unknown action: ${args.action}` }],
42
- isError: true,
43
- };
44
- }
45
- }
46
- catch (error) {
47
- return {
48
- content: [
49
- {
50
- type: 'text',
51
- text: `Error in agentlens_community: ${error instanceof Error ? error.message : 'Unknown error'}`,
52
- },
53
- ],
54
- isError: true,
55
- };
56
- }
57
- });
58
- }
59
- // ─── Action Handlers ───────────────────────────────────────────────
60
- async function handleShare(transport, args) {
61
- if (!args.lessonId || typeof args.lessonId !== 'string') {
62
- return {
63
- content: [{ type: 'text', text: 'Error: lessonId is required for share action' }],
64
- isError: true,
65
- };
66
- }
67
- const body = { lessonId: args.lessonId };
68
- if (args.category !== undefined)
69
- body.category = args.category;
70
- const response = await transport.communityShare(body);
71
- if (!response.ok) {
72
- const text = await response.text().catch(() => 'Unknown error');
73
- return {
74
- content: [{ type: 'text', text: `Error sharing lesson: ${response.status}: ${text}` }],
75
- isError: true,
76
- };
77
- }
78
- const result = await response.json();
79
- const data = result;
80
- if (data.status === 'shared') {
81
- return {
82
- content: [{ type: 'text', text: `Lesson shared successfully. Anonymous ID: ${data.anonymousLessonId}` }],
83
- };
84
- }
85
- return {
86
- content: [{ type: 'text', text: `Share result: ${data.status}${data.reason ? ` — ${data.reason}` : ''}` }],
87
- };
88
- }
89
- async function handleSearch(transport, args) {
90
- if (!args.query || typeof args.query !== 'string') {
91
- return {
92
- content: [{ type: 'text', text: 'Error: query is required for search action' }],
93
- isError: true,
94
- };
95
- }
96
- const params = { query: args.query };
97
- if (args.category)
98
- params.category = String(args.category);
99
- if (args.minReputation !== undefined)
100
- params.minReputation = String(args.minReputation);
101
- if (args.limit !== undefined)
102
- params.limit = String(args.limit);
103
- const response = await transport.communitySearch(params);
104
- if (!response.ok) {
105
- const text = await response.text().catch(() => 'Unknown error');
106
- return {
107
- content: [{ type: 'text', text: `Error searching community: ${response.status}: ${text}` }],
108
- isError: true,
109
- };
110
- }
111
- const data = await response.json();
112
- if (data.lessons.length === 0) {
113
- return {
114
- content: [{ type: 'text', text: `No community lessons found matching "${args.query}".` }],
115
- };
116
- }
117
- const summaries = data.lessons.map((l) => `[${l.id}] (${l.category}, rep: ${l.reputationScore}) ${l.title}\n ${l.content.slice(0, 120)}${l.content.length > 120 ? '...' : ''}`);
118
- return {
119
- content: [
120
- {
121
- type: 'text',
122
- text: `Found ${data.total} community lesson(s) matching "${args.query}":\n${summaries.join('\n')}`,
123
- },
124
- ],
125
- };
126
- }
127
- async function handleRate(transport, args) {
128
- if (!args.lessonId || typeof args.lessonId !== 'string') {
129
- return {
130
- content: [{ type: 'text', text: 'Error: lessonId is required for rate action' }],
131
- isError: true,
132
- };
133
- }
134
- if (args.delta === undefined || typeof args.delta !== 'number') {
135
- return {
136
- content: [{ type: 'text', text: 'Error: delta is required for rate action (+1 or -1)' }],
137
- isError: true,
138
- };
139
- }
140
- if (args.delta !== 1 && args.delta !== -1) {
141
- return {
142
- content: [{ type: 'text', text: 'Error: delta must be +1 or -1' }],
143
- isError: true,
144
- };
145
- }
146
- const response = await transport.communityRate({
147
- lessonId: args.lessonId,
148
- delta: args.delta,
149
- });
150
- if (!response.ok) {
151
- const text = await response.text().catch(() => 'Unknown error');
152
- return {
153
- content: [{ type: 'text', text: `Error rating lesson: ${response.status}: ${text}` }],
154
- isError: true,
155
- };
156
- }
157
- const data = await response.json();
158
- return {
159
- content: [
160
- {
161
- type: 'text',
162
- text: `Lesson ${args.lessonId} rated (${args.delta > 0 ? '👍' : '👎'}). New reputation: ${data.reputationScore ?? 'unknown'}`,
163
- },
164
- ],
165
- };
166
- }
167
- //# sourceMappingURL=community.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"community.js","sourceRoot":"","sources":["../../src/tools/community.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * agentlens_learn MCP Tool (Story 3.3)
3
- *
4
- * Provides lesson CRUD operations via a single tool with an `action` parameter.
5
- * Actions: save, list, get, update, delete, search
6
- */
7
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
- import type { AgentLensTransport } from '../transport.js';
9
- export declare function registerLearnTool(server: McpServer, transport: AgentLensTransport): void;
10
- //# sourceMappingURL=learn.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"learn.d.ts","sourceRoot":"","sources":["../../src/tools/learn.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAiExF"}
@@ -1,277 +0,0 @@
1
- /**
2
- * agentlens_learn MCP Tool (Story 3.3)
3
- *
4
- * Provides lesson CRUD operations via a single tool with an `action` parameter.
5
- * Actions: save, list, get, update, delete, search
6
- */
7
- import { z } from 'zod';
8
- export function registerLearnTool(server, transport) {
9
- server.tool('agentlens_learn', `Manage agent lessons — save, retrieve, update, delete, or search distilled insights and knowledge.
10
-
11
- **When to use:** After solving a difficult problem (save what worked), after resolving a recurring error (document the fix), to check existing knowledge before attempting a task (search/list), or to update outdated information (update/delete).
12
-
13
- **What it returns:** For save/get/update: the full lesson object. For list/search: a list of matching lessons with titles and previews. For delete: confirmation.
14
-
15
- **Example:** agentlens_learn({ action: "save", title: "Fix for rate limit errors", content: "Add exponential backoff with max 3 retries", category: "debugging", importance: "high" })`, {
16
- action: z.enum(['save', 'list', 'get', 'update', 'delete', 'search']).describe('Operation to perform: save (create new lesson), list (list lessons), get (get by ID), update (update lesson), delete (archive lesson), search (text search)'),
17
- // Fields for save/update
18
- title: z.string().optional().describe('Lesson title (required for save)'),
19
- content: z.string().optional().describe('Lesson content (required for save)'),
20
- category: z.string().optional().describe('Category for the lesson (default: general)'),
21
- importance: z.enum(['low', 'normal', 'high', 'critical']).optional().describe('Importance level (default: normal)'),
22
- agentId: z.string().optional().describe('Agent ID to scope the lesson to'),
23
- context: z.record(z.unknown()).optional().describe('Additional context metadata'),
24
- sourceSessionId: z.string().optional().describe('Session ID where this lesson originated'),
25
- sourceEventId: z.string().optional().describe('Event ID where this lesson originated'),
26
- // Fields for get/update/delete
27
- id: z.string().optional().describe('Lesson ID (required for get, update, delete)'),
28
- // Fields for list/search
29
- search: z.string().optional().describe('Search query text (for search action)'),
30
- limit: z.number().optional().describe('Max results to return (default: 10)'),
31
- offset: z.number().optional().describe('Offset for pagination'),
32
- includeArchived: z.boolean().optional().describe('Include archived lessons in results'),
33
- }, async (args) => {
34
- try {
35
- switch (args.action) {
36
- case 'save':
37
- return await handleSave(transport, args);
38
- case 'list':
39
- return await handleList(transport, args);
40
- case 'get':
41
- return await handleGet(transport, args);
42
- case 'update':
43
- return await handleUpdate(transport, args);
44
- case 'delete':
45
- return await handleDelete(transport, args);
46
- case 'search':
47
- return await handleSearch(transport, args);
48
- default:
49
- return {
50
- content: [{ type: 'text', text: `Unknown action: ${args.action}` }],
51
- isError: true,
52
- };
53
- }
54
- }
55
- catch (error) {
56
- return {
57
- content: [
58
- {
59
- type: 'text',
60
- text: `Error in agentlens_learn: ${error instanceof Error ? error.message : 'Unknown error'}`,
61
- },
62
- ],
63
- isError: true,
64
- };
65
- }
66
- });
67
- }
68
- // ─── Action Handlers ───────────────────────────────────────────────
69
- async function handleSave(transport, args) {
70
- if (!args.title || typeof args.title !== 'string') {
71
- return {
72
- content: [{ type: 'text', text: 'Error: title is required for save action' }],
73
- isError: true,
74
- };
75
- }
76
- if (!args.content || typeof args.content !== 'string') {
77
- return {
78
- content: [{ type: 'text', text: 'Error: content is required for save action' }],
79
- isError: true,
80
- };
81
- }
82
- const body = {
83
- title: args.title,
84
- content: args.content,
85
- };
86
- if (args.category !== undefined)
87
- body.category = args.category;
88
- if (args.importance !== undefined)
89
- body.importance = args.importance;
90
- if (args.agentId !== undefined)
91
- body.agentId = args.agentId;
92
- if (args.context !== undefined)
93
- body.context = args.context;
94
- if (args.sourceSessionId !== undefined)
95
- body.sourceSessionId = args.sourceSessionId;
96
- if (args.sourceEventId !== undefined)
97
- body.sourceEventId = args.sourceEventId;
98
- const response = await transport.createLesson(body);
99
- if (!response.ok) {
100
- const text = await response.text().catch(() => 'Unknown error');
101
- return {
102
- content: [{ type: 'text', text: `Error saving lesson: ${response.status}: ${text}` }],
103
- isError: true,
104
- };
105
- }
106
- const lesson = await response.json();
107
- return {
108
- content: [{ type: 'text', text: JSON.stringify(lesson) }],
109
- };
110
- }
111
- async function handleList(transport, args) {
112
- const params = {};
113
- if (args.category)
114
- params.category = String(args.category);
115
- if (args.agentId)
116
- params.agentId = String(args.agentId);
117
- if (args.importance)
118
- params.importance = String(args.importance);
119
- if (args.limit !== undefined)
120
- params.limit = String(args.limit);
121
- if (args.offset !== undefined)
122
- params.offset = String(args.offset);
123
- if (args.includeArchived)
124
- params.includeArchived = 'true';
125
- const response = await transport.getLessons(params);
126
- if (!response.ok) {
127
- const text = await response.text().catch(() => 'Unknown error');
128
- return {
129
- content: [{ type: 'text', text: `Error listing lessons: ${response.status}: ${text}` }],
130
- isError: true,
131
- };
132
- }
133
- const data = await response.json();
134
- const summaries = data.lessons.map((l) => `[${l.id}] (${l.category}/${l.importance}) ${l.title}`);
135
- return {
136
- content: [
137
- {
138
- type: 'text',
139
- text: data.lessons.length === 0
140
- ? 'No lessons found.'
141
- : `Found ${data.total} lesson(s):\n${summaries.join('\n')}`,
142
- },
143
- ],
144
- };
145
- }
146
- async function handleGet(transport, args) {
147
- if (!args.id || typeof args.id !== 'string') {
148
- return {
149
- content: [{ type: 'text', text: 'Error: id is required for get action' }],
150
- isError: true,
151
- };
152
- }
153
- const response = await transport.getLesson(args.id);
154
- if (!response.ok) {
155
- if (response.status === 404) {
156
- return {
157
- content: [{ type: 'text', text: `Lesson not found: ${args.id}` }],
158
- isError: true,
159
- };
160
- }
161
- const text = await response.text().catch(() => 'Unknown error');
162
- return {
163
- content: [{ type: 'text', text: `Error getting lesson: ${response.status}: ${text}` }],
164
- isError: true,
165
- };
166
- }
167
- const lesson = await response.json();
168
- return {
169
- content: [{ type: 'text', text: JSON.stringify(lesson) }],
170
- };
171
- }
172
- async function handleUpdate(transport, args) {
173
- if (!args.id || typeof args.id !== 'string') {
174
- return {
175
- content: [{ type: 'text', text: 'Error: id is required for update action' }],
176
- isError: true,
177
- };
178
- }
179
- const body = {};
180
- if (args.title !== undefined)
181
- body.title = args.title;
182
- if (args.content !== undefined)
183
- body.content = args.content;
184
- if (args.category !== undefined)
185
- body.category = args.category;
186
- if (args.importance !== undefined)
187
- body.importance = args.importance;
188
- if (args.agentId !== undefined)
189
- body.agentId = args.agentId;
190
- if (args.context !== undefined)
191
- body.context = args.context;
192
- const response = await transport.updateLesson(args.id, body);
193
- if (!response.ok) {
194
- if (response.status === 404) {
195
- return {
196
- content: [{ type: 'text', text: `Lesson not found: ${args.id}` }],
197
- isError: true,
198
- };
199
- }
200
- const text = await response.text().catch(() => 'Unknown error');
201
- return {
202
- content: [{ type: 'text', text: `Error updating lesson: ${response.status}: ${text}` }],
203
- isError: true,
204
- };
205
- }
206
- const lesson = await response.json();
207
- return {
208
- content: [{ type: 'text', text: JSON.stringify(lesson) }],
209
- };
210
- }
211
- async function handleDelete(transport, args) {
212
- if (!args.id || typeof args.id !== 'string') {
213
- return {
214
- content: [{ type: 'text', text: 'Error: id is required for delete action' }],
215
- isError: true,
216
- };
217
- }
218
- const response = await transport.deleteLesson(args.id);
219
- if (!response.ok) {
220
- if (response.status === 404) {
221
- return {
222
- content: [{ type: 'text', text: `Lesson not found: ${args.id}` }],
223
- isError: true,
224
- };
225
- }
226
- const text = await response.text().catch(() => 'Unknown error');
227
- return {
228
- content: [{ type: 'text', text: `Error deleting lesson: ${response.status}: ${text}` }],
229
- isError: true,
230
- };
231
- }
232
- return {
233
- content: [{ type: 'text', text: `Lesson ${args.id} archived successfully.` }],
234
- };
235
- }
236
- async function handleSearch(transport, args) {
237
- if (!args.search || typeof args.search !== 'string') {
238
- return {
239
- content: [{ type: 'text', text: 'Error: search is required for search action' }],
240
- isError: true,
241
- };
242
- }
243
- const params = {
244
- search: args.search,
245
- };
246
- if (args.agentId)
247
- params.agentId = String(args.agentId);
248
- if (args.category)
249
- params.category = String(args.category);
250
- if (args.limit !== undefined)
251
- params.limit = String(args.limit);
252
- if (args.offset !== undefined)
253
- params.offset = String(args.offset);
254
- if (args.includeArchived)
255
- params.includeArchived = 'true';
256
- const response = await transport.getLessons(params);
257
- if (!response.ok) {
258
- const text = await response.text().catch(() => 'Unknown error');
259
- return {
260
- content: [{ type: 'text', text: `Error searching lessons: ${response.status}: ${text}` }],
261
- isError: true,
262
- };
263
- }
264
- const data = await response.json();
265
- const summaries = data.lessons.map((l) => `[${l.id}] (${l.category}/${l.importance}) ${l.title}\n ${l.content.slice(0, 100)}${l.content.length > 100 ? '...' : ''}`);
266
- return {
267
- content: [
268
- {
269
- type: 'text',
270
- text: data.lessons.length === 0
271
- ? `No lessons found matching "${args.search}".`
272
- : `Found ${data.total} lesson(s) matching "${args.search}":\n${summaries.join('\n')}`,
273
- },
274
- ],
275
- };
276
- }
277
- //# sourceMappingURL=learn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"learn.js","sourceRoot":"","sources":["../../src/tools/learn.ts"],"names":[],"mappings":"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"}