@kernel.chat/kbot 1.3.1 → 2.3.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.
Files changed (176) hide show
  1. package/README.md +94 -0
  2. package/dist/agent.d.ts +9 -0
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +576 -119
  5. package/dist/agent.js.map +1 -1
  6. package/dist/auth.d.ts +20 -35
  7. package/dist/auth.d.ts.map +1 -1
  8. package/dist/auth.js +224 -66
  9. package/dist/auth.js.map +1 -1
  10. package/dist/auth.test.d.ts +2 -0
  11. package/dist/auth.test.d.ts.map +1 -0
  12. package/dist/auth.test.js +89 -0
  13. package/dist/auth.test.js.map +1 -0
  14. package/dist/build-targets.d.ts +37 -0
  15. package/dist/build-targets.d.ts.map +1 -0
  16. package/dist/build-targets.js +507 -0
  17. package/dist/build-targets.js.map +1 -0
  18. package/dist/cli.js +1210 -130
  19. package/dist/cli.js.map +1 -1
  20. package/dist/context.d.ts +2 -0
  21. package/dist/context.d.ts.map +1 -1
  22. package/dist/context.js +72 -22
  23. package/dist/context.js.map +1 -1
  24. package/dist/hooks.d.ts +27 -0
  25. package/dist/hooks.d.ts.map +1 -0
  26. package/dist/hooks.js +145 -0
  27. package/dist/hooks.js.map +1 -0
  28. package/dist/ide/acp-server.d.ts +6 -0
  29. package/dist/ide/acp-server.d.ts.map +1 -0
  30. package/dist/ide/acp-server.js +319 -0
  31. package/dist/ide/acp-server.js.map +1 -0
  32. package/dist/ide/bridge.d.ts +128 -0
  33. package/dist/ide/bridge.d.ts.map +1 -0
  34. package/dist/ide/bridge.js +185 -0
  35. package/dist/ide/bridge.js.map +1 -0
  36. package/dist/ide/index.d.ts +5 -0
  37. package/dist/ide/index.d.ts.map +1 -0
  38. package/dist/ide/index.js +11 -0
  39. package/dist/ide/index.js.map +1 -0
  40. package/dist/ide/lsp-bridge.d.ts +27 -0
  41. package/dist/ide/lsp-bridge.d.ts.map +1 -0
  42. package/dist/ide/lsp-bridge.js +267 -0
  43. package/dist/ide/lsp-bridge.js.map +1 -0
  44. package/dist/ide/mcp-server.d.ts +7 -0
  45. package/dist/ide/mcp-server.d.ts.map +1 -0
  46. package/dist/ide/mcp-server.js +451 -0
  47. package/dist/ide/mcp-server.js.map +1 -0
  48. package/dist/learning.d.ts +179 -0
  49. package/dist/learning.d.ts.map +1 -0
  50. package/dist/learning.js +829 -0
  51. package/dist/learning.js.map +1 -0
  52. package/dist/learning.test.d.ts +2 -0
  53. package/dist/learning.test.d.ts.map +1 -0
  54. package/dist/learning.test.js +115 -0
  55. package/dist/learning.test.js.map +1 -0
  56. package/dist/matrix.d.ts +49 -0
  57. package/dist/matrix.d.ts.map +1 -0
  58. package/dist/matrix.js +302 -0
  59. package/dist/matrix.js.map +1 -0
  60. package/dist/memory.d.ts +11 -0
  61. package/dist/memory.d.ts.map +1 -1
  62. package/dist/memory.js +54 -2
  63. package/dist/memory.js.map +1 -1
  64. package/dist/multimodal.d.ts +57 -0
  65. package/dist/multimodal.d.ts.map +1 -0
  66. package/dist/multimodal.js +206 -0
  67. package/dist/multimodal.js.map +1 -0
  68. package/dist/permissions.d.ts +21 -0
  69. package/dist/permissions.d.ts.map +1 -0
  70. package/dist/permissions.js +122 -0
  71. package/dist/permissions.js.map +1 -0
  72. package/dist/planner.d.ts +54 -0
  73. package/dist/planner.d.ts.map +1 -0
  74. package/dist/planner.js +298 -0
  75. package/dist/planner.js.map +1 -0
  76. package/dist/plugins.d.ts +30 -0
  77. package/dist/plugins.d.ts.map +1 -0
  78. package/dist/plugins.js +135 -0
  79. package/dist/plugins.js.map +1 -0
  80. package/dist/sessions.d.ts +38 -0
  81. package/dist/sessions.d.ts.map +1 -0
  82. package/dist/sessions.js +177 -0
  83. package/dist/sessions.js.map +1 -0
  84. package/dist/streaming.d.ts +88 -0
  85. package/dist/streaming.d.ts.map +1 -0
  86. package/dist/streaming.js +317 -0
  87. package/dist/streaming.js.map +1 -0
  88. package/dist/tools/background.d.ts +2 -0
  89. package/dist/tools/background.d.ts.map +1 -0
  90. package/dist/tools/background.js +163 -0
  91. package/dist/tools/background.js.map +1 -0
  92. package/dist/tools/bash.d.ts.map +1 -1
  93. package/dist/tools/bash.js +26 -1
  94. package/dist/tools/bash.js.map +1 -1
  95. package/dist/tools/browser.js +7 -7
  96. package/dist/tools/browser.js.map +1 -1
  97. package/dist/tools/build-matrix.d.ts +2 -0
  98. package/dist/tools/build-matrix.d.ts.map +1 -0
  99. package/dist/tools/build-matrix.js +463 -0
  100. package/dist/tools/build-matrix.js.map +1 -0
  101. package/dist/tools/computer.js +5 -5
  102. package/dist/tools/computer.js.map +1 -1
  103. package/dist/tools/fetch.d.ts +2 -0
  104. package/dist/tools/fetch.d.ts.map +1 -0
  105. package/dist/tools/fetch.js +106 -0
  106. package/dist/tools/fetch.js.map +1 -0
  107. package/dist/tools/files.d.ts.map +1 -1
  108. package/dist/tools/files.js +112 -6
  109. package/dist/tools/files.js.map +1 -1
  110. package/dist/tools/git.js +3 -3
  111. package/dist/tools/git.js.map +1 -1
  112. package/dist/tools/github.d.ts +2 -0
  113. package/dist/tools/github.d.ts.map +1 -0
  114. package/dist/tools/github.js +196 -0
  115. package/dist/tools/github.js.map +1 -0
  116. package/dist/tools/index.d.ts +29 -5
  117. package/dist/tools/index.d.ts.map +1 -1
  118. package/dist/tools/index.js +136 -20
  119. package/dist/tools/index.js.map +1 -1
  120. package/dist/tools/index.test.d.ts +2 -0
  121. package/dist/tools/index.test.d.ts.map +1 -0
  122. package/dist/tools/index.test.js +162 -0
  123. package/dist/tools/index.test.js.map +1 -0
  124. package/dist/tools/matrix.d.ts +2 -0
  125. package/dist/tools/matrix.d.ts.map +1 -0
  126. package/dist/tools/matrix.js +79 -0
  127. package/dist/tools/matrix.js.map +1 -0
  128. package/dist/tools/mcp-client.d.ts +2 -0
  129. package/dist/tools/mcp-client.d.ts.map +1 -0
  130. package/dist/tools/mcp-client.js +295 -0
  131. package/dist/tools/mcp-client.js.map +1 -0
  132. package/dist/tools/notebook.d.ts +2 -0
  133. package/dist/tools/notebook.d.ts.map +1 -0
  134. package/dist/tools/notebook.js +207 -0
  135. package/dist/tools/notebook.js.map +1 -0
  136. package/dist/tools/openclaw.d.ts +2 -0
  137. package/dist/tools/openclaw.d.ts.map +1 -0
  138. package/dist/tools/openclaw.js +187 -0
  139. package/dist/tools/openclaw.js.map +1 -0
  140. package/dist/tools/parallel.d.ts +2 -0
  141. package/dist/tools/parallel.d.ts.map +1 -0
  142. package/dist/tools/parallel.js +60 -0
  143. package/dist/tools/parallel.js.map +1 -0
  144. package/dist/tools/sandbox.d.ts +2 -0
  145. package/dist/tools/sandbox.d.ts.map +1 -0
  146. package/dist/tools/sandbox.js +352 -0
  147. package/dist/tools/sandbox.js.map +1 -0
  148. package/dist/tools/search.d.ts.map +1 -1
  149. package/dist/tools/search.js +135 -28
  150. package/dist/tools/search.js.map +1 -1
  151. package/dist/tools/subagent.d.ts +4 -0
  152. package/dist/tools/subagent.d.ts.map +1 -0
  153. package/dist/tools/subagent.js +260 -0
  154. package/dist/tools/subagent.js.map +1 -0
  155. package/dist/tools/tasks.d.ts +14 -0
  156. package/dist/tools/tasks.d.ts.map +1 -0
  157. package/dist/tools/tasks.js +210 -0
  158. package/dist/tools/tasks.js.map +1 -0
  159. package/dist/tools/worktree.d.ts +2 -0
  160. package/dist/tools/worktree.d.ts.map +1 -0
  161. package/dist/tools/worktree.js +223 -0
  162. package/dist/tools/worktree.js.map +1 -0
  163. package/dist/tui.d.ts +73 -0
  164. package/dist/tui.d.ts.map +1 -0
  165. package/dist/tui.js +257 -0
  166. package/dist/tui.js.map +1 -0
  167. package/dist/ui.d.ts +11 -19
  168. package/dist/ui.d.ts.map +1 -1
  169. package/dist/ui.js +143 -171
  170. package/dist/ui.js.map +1 -1
  171. package/dist/updater.d.ts +3 -0
  172. package/dist/updater.d.ts.map +1 -0
  173. package/dist/updater.js +70 -0
  174. package/dist/updater.js.map +1 -0
  175. package/install.sh +5 -7
  176. package/package.json +9 -5
@@ -0,0 +1,451 @@
1
+ // K:BOT MCP Server — Model Context Protocol for IDE integration
2
+ //
3
+ // Stdio JSON-RPC server implementing MCP specification.
4
+ // Exposes kbot's tools, agent loop, and resources to any MCP-compatible IDE.
5
+ //
6
+ // Supported IDEs: VS Code, Cursor, Windsurf, Zed, Neovim (via nvim-mcp)
7
+ //
8
+ // Usage:
9
+ // kbot ide mcp
10
+ //
11
+ // VS Code config:
12
+ // { "mcp": { "servers": { "kbot": { "command": "kbot", "args": ["ide", "mcp"] } } } }
13
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
14
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
15
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
16
+ import { initBridge, chat, executeCommand, getStatus, getAgents, getMemory, getSessions, getContext, getFileDiagnostics, remember, setAgent, } from './bridge.js';
17
+ import { formatDiagnostics } from './lsp-bridge.js';
18
+ /**
19
+ * Start the MCP server on stdio.
20
+ * This is the entry point called by `kbot ide mcp`.
21
+ */
22
+ export async function startMcpServer(config = {}) {
23
+ // Initialize bridge (registers tools, gathers context)
24
+ await initBridge(config);
25
+ const server = new Server({
26
+ name: 'kbot',
27
+ version: '2.0.0',
28
+ }, {
29
+ capabilities: {
30
+ tools: {},
31
+ resources: {},
32
+ prompts: {},
33
+ },
34
+ });
35
+ // ── Tool Definitions ──
36
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
37
+ return {
38
+ tools: [
39
+ {
40
+ name: 'kbot_chat',
41
+ description: 'Send a message to K:BOT and get an agent response. Supports 17 specialist agents with automatic routing.',
42
+ inputSchema: {
43
+ type: 'object',
44
+ properties: {
45
+ message: { type: 'string', description: 'The message to send to K:BOT' },
46
+ agent: { type: 'string', description: 'Force a specific agent (kernel, researcher, coder, writer, analyst, etc.). Defaults to auto-routing.' },
47
+ },
48
+ required: ['message'],
49
+ },
50
+ },
51
+ {
52
+ name: 'kbot_edit_file',
53
+ description: 'Edit a file using search/replace. Finds old_string and replaces with new_string.',
54
+ inputSchema: {
55
+ type: 'object',
56
+ properties: {
57
+ path: { type: 'string', description: 'File path to edit' },
58
+ old_string: { type: 'string', description: 'Text to find' },
59
+ new_string: { type: 'string', description: 'Replacement text' },
60
+ },
61
+ required: ['path', 'old_string', 'new_string'],
62
+ },
63
+ },
64
+ {
65
+ name: 'kbot_write_file',
66
+ description: 'Create or overwrite a file with content.',
67
+ inputSchema: {
68
+ type: 'object',
69
+ properties: {
70
+ path: { type: 'string', description: 'File path' },
71
+ content: { type: 'string', description: 'File content' },
72
+ },
73
+ required: ['path', 'content'],
74
+ },
75
+ },
76
+ {
77
+ name: 'kbot_read_file',
78
+ description: 'Read the contents of a file.',
79
+ inputSchema: {
80
+ type: 'object',
81
+ properties: {
82
+ path: { type: 'string', description: 'File path to read' },
83
+ },
84
+ required: ['path'],
85
+ },
86
+ },
87
+ {
88
+ name: 'kbot_bash',
89
+ description: 'Run a shell command and return the output.',
90
+ inputSchema: {
91
+ type: 'object',
92
+ properties: {
93
+ command: { type: 'string', description: 'Shell command to execute' },
94
+ timeout: { type: 'number', description: 'Timeout in milliseconds (default: 30000)' },
95
+ },
96
+ required: ['command'],
97
+ },
98
+ },
99
+ {
100
+ name: 'kbot_search',
101
+ description: 'Search the web for information.',
102
+ inputSchema: {
103
+ type: 'object',
104
+ properties: {
105
+ query: { type: 'string', description: 'Search query' },
106
+ },
107
+ required: ['query'],
108
+ },
109
+ },
110
+ {
111
+ name: 'kbot_github',
112
+ description: 'Search GitHub repositories and code.',
113
+ inputSchema: {
114
+ type: 'object',
115
+ properties: {
116
+ query: { type: 'string', description: 'GitHub search query' },
117
+ type: { type: 'string', description: 'Search type: repositories, code, issues' },
118
+ },
119
+ required: ['query'],
120
+ },
121
+ },
122
+ {
123
+ name: 'kbot_status',
124
+ description: 'Get K:BOT status including agent info, learning stats, and session count.',
125
+ inputSchema: {
126
+ type: 'object',
127
+ properties: {},
128
+ },
129
+ },
130
+ {
131
+ name: 'kbot_agent',
132
+ description: 'Switch the active K:BOT agent or list available agents.',
133
+ inputSchema: {
134
+ type: 'object',
135
+ properties: {
136
+ agent: { type: 'string', description: 'Agent ID to switch to. Omit to list available agents.' },
137
+ },
138
+ },
139
+ },
140
+ {
141
+ name: 'kbot_remember',
142
+ description: 'Teach K:BOT a fact that persists across sessions.',
143
+ inputSchema: {
144
+ type: 'object',
145
+ properties: {
146
+ fact: { type: 'string', description: 'The fact to remember' },
147
+ },
148
+ required: ['fact'],
149
+ },
150
+ },
151
+ {
152
+ name: 'kbot_diagnostics',
153
+ description: 'Get LSP diagnostics (type errors, warnings) for a file.',
154
+ inputSchema: {
155
+ type: 'object',
156
+ properties: {
157
+ path: { type: 'string', description: 'File path to check' },
158
+ },
159
+ required: ['path'],
160
+ },
161
+ },
162
+ {
163
+ name: 'kbot_plan',
164
+ description: 'Generate and execute an autonomous plan for a complex task.',
165
+ inputSchema: {
166
+ type: 'object',
167
+ properties: {
168
+ task: { type: 'string', description: 'The complex task to plan and execute' },
169
+ auto_approve: { type: 'boolean', description: 'Auto-approve (default: false)' },
170
+ },
171
+ required: ['task'],
172
+ },
173
+ },
174
+ {
175
+ name: 'kbot_glob',
176
+ description: 'Find files matching a glob pattern.',
177
+ inputSchema: {
178
+ type: 'object',
179
+ properties: {
180
+ pattern: { type: 'string', description: 'Glob pattern (e.g., "**/*.ts")' },
181
+ path: { type: 'string', description: 'Base directory (default: cwd)' },
182
+ },
183
+ required: ['pattern'],
184
+ },
185
+ },
186
+ {
187
+ name: 'kbot_grep',
188
+ description: 'Search file contents with regex.',
189
+ inputSchema: {
190
+ type: 'object',
191
+ properties: {
192
+ pattern: { type: 'string', description: 'Regex pattern' },
193
+ path: { type: 'string', description: 'File or directory to search' },
194
+ },
195
+ required: ['pattern'],
196
+ },
197
+ },
198
+ ],
199
+ };
200
+ });
201
+ // ── Tool Execution ──
202
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
203
+ const { name, arguments: args } = request.params;
204
+ try {
205
+ switch (name) {
206
+ case 'kbot_chat': {
207
+ const message = args.message;
208
+ const agent = args.agent;
209
+ const response = await chat(message, { agent });
210
+ return {
211
+ content: [
212
+ {
213
+ type: 'text',
214
+ text: response.content,
215
+ },
216
+ ],
217
+ isError: false,
218
+ };
219
+ }
220
+ case 'kbot_edit_file': {
221
+ const result = await executeCommand('edit_file', args);
222
+ return {
223
+ content: [{ type: 'text', text: result.result }],
224
+ isError: result.error,
225
+ };
226
+ }
227
+ case 'kbot_write_file': {
228
+ const result = await executeCommand('write_file', args);
229
+ return {
230
+ content: [{ type: 'text', text: result.result }],
231
+ isError: result.error,
232
+ };
233
+ }
234
+ case 'kbot_read_file': {
235
+ const result = await executeCommand('read_file', args);
236
+ return {
237
+ content: [{ type: 'text', text: result.result }],
238
+ isError: result.error,
239
+ };
240
+ }
241
+ case 'kbot_bash': {
242
+ const result = await executeCommand('bash', args);
243
+ return {
244
+ content: [{ type: 'text', text: result.result }],
245
+ isError: result.error,
246
+ };
247
+ }
248
+ case 'kbot_search': {
249
+ const result = await executeCommand('web_search', args);
250
+ return {
251
+ content: [{ type: 'text', text: result.result }],
252
+ isError: result.error,
253
+ };
254
+ }
255
+ case 'kbot_github': {
256
+ const result = await executeCommand('github_search', args);
257
+ return {
258
+ content: [{ type: 'text', text: result.result }],
259
+ isError: result.error,
260
+ };
261
+ }
262
+ case 'kbot_status': {
263
+ const status = getStatus();
264
+ return {
265
+ content: [{
266
+ type: 'text',
267
+ text: JSON.stringify(status, null, 2),
268
+ }],
269
+ isError: false,
270
+ };
271
+ }
272
+ case 'kbot_agent': {
273
+ const agentId = args.agent;
274
+ if (agentId) {
275
+ setAgent(agentId);
276
+ return {
277
+ content: [{ type: 'text', text: `Agent set to: ${agentId}` }],
278
+ isError: false,
279
+ };
280
+ }
281
+ const agents = getAgents();
282
+ return {
283
+ content: [{
284
+ type: 'text',
285
+ text: agents.map(a => `${a.id}: ${a.name} — ${a.description}`).join('\n'),
286
+ }],
287
+ isError: false,
288
+ };
289
+ }
290
+ case 'kbot_remember': {
291
+ const fact = args.fact;
292
+ remember(fact);
293
+ return {
294
+ content: [{ type: 'text', text: `Learned: "${fact}"` }],
295
+ isError: false,
296
+ };
297
+ }
298
+ case 'kbot_diagnostics': {
299
+ const path = args.path;
300
+ const diags = await getFileDiagnostics(path);
301
+ return {
302
+ content: [{ type: 'text', text: formatDiagnostics(diags) }],
303
+ isError: false,
304
+ };
305
+ }
306
+ case 'kbot_plan': {
307
+ const taskArgs = args;
308
+ const { autonomousExecute, formatPlanSummary } = await import('../planner.js');
309
+ const plan = await autonomousExecute(taskArgs.task, { agent: 'coder' }, {
310
+ autoApprove: taskArgs.auto_approve || false,
311
+ });
312
+ return {
313
+ content: [{ type: 'text', text: formatPlanSummary(plan) }],
314
+ isError: plan.status === 'failed',
315
+ };
316
+ }
317
+ case 'kbot_glob': {
318
+ const result = await executeCommand('glob', args);
319
+ return {
320
+ content: [{ type: 'text', text: result.result }],
321
+ isError: result.error,
322
+ };
323
+ }
324
+ case 'kbot_grep': {
325
+ const result = await executeCommand('grep', args);
326
+ return {
327
+ content: [{ type: 'text', text: result.result }],
328
+ isError: result.error,
329
+ };
330
+ }
331
+ default:
332
+ return {
333
+ content: [{ type: 'text', text: `Unknown tool: ${name}` }],
334
+ isError: true,
335
+ };
336
+ }
337
+ }
338
+ catch (err) {
339
+ return {
340
+ content: [{
341
+ type: 'text',
342
+ text: `Error: ${err instanceof Error ? err.message : String(err)}`,
343
+ }],
344
+ isError: true,
345
+ };
346
+ }
347
+ });
348
+ // ── Resource Definitions ──
349
+ server.setRequestHandler(ListResourcesRequestSchema, async () => {
350
+ return {
351
+ resources: [
352
+ {
353
+ uri: 'kbot://context',
354
+ name: 'Project Context',
355
+ description: 'Current project context including git info, file tree, framework detection',
356
+ mimeType: 'application/json',
357
+ },
358
+ {
359
+ uri: 'kbot://memory',
360
+ name: 'Persistent Memory',
361
+ description: 'K:BOT persistent memory — learned facts, patterns, and user preferences',
362
+ mimeType: 'text/plain',
363
+ },
364
+ {
365
+ uri: 'kbot://agents',
366
+ name: 'Available Agents',
367
+ description: 'List of all available K:BOT specialist agents',
368
+ mimeType: 'application/json',
369
+ },
370
+ {
371
+ uri: 'kbot://sessions',
372
+ name: 'Saved Sessions',
373
+ description: 'List of saved conversation sessions',
374
+ mimeType: 'application/json',
375
+ },
376
+ ],
377
+ };
378
+ });
379
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
380
+ const { uri } = request.params;
381
+ switch (uri) {
382
+ case 'kbot://context':
383
+ return {
384
+ contents: [{
385
+ uri,
386
+ mimeType: 'application/json',
387
+ text: JSON.stringify(getContext(), null, 2),
388
+ }],
389
+ };
390
+ case 'kbot://memory':
391
+ return {
392
+ contents: [{
393
+ uri,
394
+ mimeType: 'text/plain',
395
+ text: getMemory() || '(no memory entries)',
396
+ }],
397
+ };
398
+ case 'kbot://agents':
399
+ return {
400
+ contents: [{
401
+ uri,
402
+ mimeType: 'application/json',
403
+ text: JSON.stringify(getAgents(), null, 2),
404
+ }],
405
+ };
406
+ case 'kbot://sessions':
407
+ return {
408
+ contents: [{
409
+ uri,
410
+ mimeType: 'application/json',
411
+ text: JSON.stringify(getSessions(), null, 2),
412
+ }],
413
+ };
414
+ default:
415
+ throw new Error(`Unknown resource: ${uri}`);
416
+ }
417
+ });
418
+ // ── Prompt Definitions ──
419
+ server.setRequestHandler(ListPromptsRequestSchema, async () => {
420
+ return {
421
+ prompts: [
422
+ { name: 'explain_code', description: 'Explain what code does', arguments: [{ name: 'code', required: true, description: 'Code to explain' }] },
423
+ { name: 'review_code', description: 'Review code for bugs and improvements', arguments: [{ name: 'code', required: true, description: 'Code to review' }] },
424
+ { name: 'fix_error', description: 'Fix a code error', arguments: [{ name: 'error', required: true, description: 'Error message' }, { name: 'code', required: false, description: 'Relevant code' }] },
425
+ { name: 'generate_tests', description: 'Generate tests for code', arguments: [{ name: 'code', required: true, description: 'Code to test' }] },
426
+ { name: 'refactor', description: 'Suggest refactoring improvements', arguments: [{ name: 'code', required: true, description: 'Code to refactor' }] },
427
+ ],
428
+ };
429
+ });
430
+ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
431
+ const { name, arguments: args } = request.params;
432
+ const a = (args || {});
433
+ const promptMap = {
434
+ explain_code: `Explain this code:\n\n\`\`\`\n${a.code}\n\`\`\``,
435
+ review_code: `Review this code for bugs, security issues, and improvements:\n\n\`\`\`\n${a.code}\n\`\`\``,
436
+ fix_error: `Fix this error:\n${a.error}\n${a.code ? `\nCode:\n\`\`\`\n${a.code}\n\`\`\`` : ''}`,
437
+ generate_tests: `Generate tests for this code:\n\n\`\`\`\n${a.code}\n\`\`\``,
438
+ refactor: `Refactor this code:\n\n\`\`\`\n${a.code}\n\`\`\``,
439
+ };
440
+ const text = promptMap[name];
441
+ if (!text)
442
+ throw new Error(`Unknown prompt: ${name}`);
443
+ return { messages: [{ role: 'user', content: { type: 'text', text } }] };
444
+ });
445
+ // ── Start Server ──
446
+ const transport = new StdioServerTransport();
447
+ await server.connect(transport);
448
+ // Log to stderr (stdout is for JSON-RPC)
449
+ process.stderr.write('K:BOT MCP server started\n');
450
+ }
451
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/ide/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ /** Flush all pending writes immediately (call on exit) */
2
+ export declare function flushPendingWrites(): void;
3
+ export interface CachedPattern {
4
+ /** Normalized intent (lowercase, stop-words removed) */
5
+ intent: string;
6
+ /** Keywords extracted from the message */
7
+ keywords: string[];
8
+ /** Tool call sequence that succeeded */
9
+ toolSequence: string[];
10
+ /** How many times this pattern was used */
11
+ hits: number;
12
+ /** Success rate (0-1) */
13
+ successRate: number;
14
+ /** Last used timestamp */
15
+ lastUsed: string;
16
+ /** Average tokens saved vs first attempt */
17
+ avgTokensSaved: number;
18
+ }
19
+ /** Extract keywords from a message */
20
+ export declare function extractKeywords(message: string): string[];
21
+ /** Find a matching cached pattern (similarity > 0.6) */
22
+ export declare function findPattern(message: string): CachedPattern | null;
23
+ /** Record a successful pattern */
24
+ export declare function recordPattern(message: string, toolSequence: string[], tokensSaved?: number): void;
25
+ /** Record a failed pattern */
26
+ export declare function recordPatternFailure(message: string): void;
27
+ export interface CachedSolution {
28
+ /** Question/problem signature */
29
+ question: string;
30
+ /** Keywords for matching */
31
+ keywords: string[];
32
+ /** The solution that worked */
33
+ solution: string;
34
+ /** Confidence (0-1) based on outcome */
35
+ confidence: number;
36
+ /** Times this solution was reused */
37
+ reuses: number;
38
+ /** Created timestamp */
39
+ created: string;
40
+ }
41
+ /** Find relevant cached solutions for a message */
42
+ export declare function findSolutions(message: string, maxResults?: number): CachedSolution[];
43
+ /** Cache a solution from a successful interaction */
44
+ export declare function cacheSolution(question: string, solution: string): void;
45
+ export interface UserProfile {
46
+ /** Preferred response length: 'concise' | 'detailed' | 'auto' */
47
+ responseStyle: 'concise' | 'detailed' | 'auto';
48
+ /** Primary languages/frameworks detected */
49
+ techStack: string[];
50
+ /** Common task types (what user asks for most) */
51
+ taskPatterns: Record<string, number>;
52
+ /** Preferred agents */
53
+ preferredAgents: Record<string, number>;
54
+ /** Total messages sent */
55
+ totalMessages: number;
56
+ /** Total tokens used */
57
+ totalTokens: number;
58
+ /** Total tokens saved by learning */
59
+ tokensSaved: number;
60
+ /** Average tokens per message (tracks efficiency over time) */
61
+ avgTokensPerMessage: number;
62
+ /** Session count */
63
+ sessions: number;
64
+ }
65
+ export declare function getProfile(): UserProfile;
66
+ /** Update profile after each interaction */
67
+ export declare function updateProfile(opts: {
68
+ tokens?: number;
69
+ tokensSaved?: number;
70
+ agent?: string;
71
+ taskType?: string;
72
+ techTerms?: string[];
73
+ }): void;
74
+ export declare function incrementSessions(): number;
75
+ export declare function buildLearningContext(message: string): string;
76
+ export interface LearningStats {
77
+ patternsCount: number;
78
+ solutionsCount: number;
79
+ totalTokensSaved: number;
80
+ avgTokensPerMsg: number;
81
+ totalMessages: number;
82
+ sessions: number;
83
+ efficiency: string;
84
+ }
85
+ export declare function getStats(): LearningStats;
86
+ /** Classify task type from message */
87
+ export declare function classifyTask(message: string): string;
88
+ export interface KnowledgeEntry {
89
+ /** The fact or piece of knowledge */
90
+ fact: string;
91
+ /** Category: preference, fact, rule, context, project */
92
+ category: 'preference' | 'fact' | 'rule' | 'context' | 'project';
93
+ /** Keywords for retrieval */
94
+ keywords: string[];
95
+ /** Source: 'user-taught' | 'extracted' | 'observed' */
96
+ source: 'user-taught' | 'extracted' | 'observed';
97
+ /** Confidence 0-1 */
98
+ confidence: number;
99
+ /** Times referenced */
100
+ references: number;
101
+ /** Created */
102
+ created: string;
103
+ /** Last referenced */
104
+ lastUsed: string;
105
+ }
106
+ /** Store a knowledge entry (user teaches kbot something) */
107
+ export declare function learnFact(fact: string, category?: KnowledgeEntry['category'], source?: KnowledgeEntry['source']): void;
108
+ /** Find relevant knowledge for a message */
109
+ export declare function findKnowledge(message: string, maxResults?: number): KnowledgeEntry[];
110
+ /** Extract knowledge from a conversation exchange — stricter matching to reduce false positives */
111
+ export declare function extractKnowledge(userMessage: string, assistantResponse: string): void;
112
+ export interface Correction {
113
+ /** What the user said (the correction) */
114
+ userMessage: string;
115
+ /** What the assistant said wrong */
116
+ wrongResponse: string;
117
+ /** Extracted rule from the correction */
118
+ rule: string;
119
+ /** Times this correction pattern has occurred */
120
+ occurrences: number;
121
+ /** Created */
122
+ created: string;
123
+ }
124
+ /** Record a user correction */
125
+ export declare function recordCorrection(userMessage: string, wrongResponse: string): void;
126
+ /** Get relevant corrections to avoid repeating mistakes */
127
+ export declare function getRelevantCorrections(message: string, max?: number): Correction[];
128
+ export interface ProjectMemory {
129
+ /** Directory path */
130
+ path: string;
131
+ /** Project name (from package.json, Cargo.toml, etc.) */
132
+ name: string;
133
+ /** Detected stack */
134
+ stack: string[];
135
+ /** Key files the user works with most */
136
+ frequentFiles: Record<string, number>;
137
+ /** Project-specific knowledge entries */
138
+ notes: string[];
139
+ /** Last accessed */
140
+ lastAccessed: string;
141
+ }
142
+ /** Get or create project memory for current directory */
143
+ export declare function getProjectMemory(cwd: string): ProjectMemory | null;
144
+ /** Record project information */
145
+ export declare function updateProjectMemory(cwd: string, data: {
146
+ name?: string;
147
+ stack?: string[];
148
+ file?: string;
149
+ note?: string;
150
+ }): void;
151
+ /** Override the original buildLearningContext with enhanced version */
152
+ export declare function buildFullLearningContext(message: string, cwd?: string): string;
153
+ export declare function learnFromExchange(userMessage: string, assistantResponse: string, toolsUsed: string[], cwd?: string): void;
154
+ interface TrainingLog {
155
+ lastRun: string;
156
+ runsTotal: number;
157
+ entriesPruned: number;
158
+ insightsSynthesized: number;
159
+ patternsOptimized: number;
160
+ }
161
+ /** Run self-training: prune stale knowledge, optimize patterns, synthesize insights */
162
+ export declare function selfTrain(): {
163
+ pruned: number;
164
+ optimized: number;
165
+ synthesized: number;
166
+ summary: string;
167
+ };
168
+ /** Check if self-training should run (auto-trigger every 50 messages) */
169
+ export declare function shouldAutoTrain(): boolean;
170
+ /** Get training log for display */
171
+ export declare function getTrainingLog(): TrainingLog;
172
+ export declare function getExtendedStats(): LearningStats & {
173
+ knowledgeCount: number;
174
+ correctionsCount: number;
175
+ projectsCount: number;
176
+ topKnowledge: string[];
177
+ };
178
+ export {};
179
+ //# sourceMappingURL=learning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../src/learning.ts"],"names":[],"mappings":"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"}