xibecode 1.0.3 → 1.0.7

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 (268) hide show
  1. package/dist/commands/chat.d.ts.map +1 -1
  2. package/dist/commands/chat.js +10 -7
  3. package/dist/commands/chat.js.map +1 -1
  4. package/dist/commands/diagnostics.js +1 -1
  5. package/dist/commands/diagnostics.js.map +1 -1
  6. package/dist/commands/mcp.js +1 -1
  7. package/dist/commands/mcp.js.map +1 -1
  8. package/dist/commands/resume.js +1 -1
  9. package/dist/commands/resume.js.map +1 -1
  10. package/dist/commands/run-pr.d.ts.map +1 -1
  11. package/dist/commands/run-pr.js +10 -9
  12. package/dist/commands/run-pr.js.map +1 -1
  13. package/dist/commands/run.d.ts.map +1 -1
  14. package/dist/commands/run.js +14 -13
  15. package/dist/commands/run.js.map +1 -1
  16. package/dist/commands/skills.d.ts.map +1 -1
  17. package/dist/commands/skills.js +3 -2
  18. package/dist/commands/skills.js.map +1 -1
  19. package/dist/components/AssistantMarkdown.js +1 -1
  20. package/dist/components/AssistantMarkdown.js.map +1 -1
  21. package/dist/ui/claude-style-chat.d.ts.map +1 -1
  22. package/dist/ui/claude-style-chat.js +12 -10
  23. package/dist/ui/claude-style-chat.js.map +1 -1
  24. package/dist/utils/built-in-skills-dir.d.ts +7 -0
  25. package/dist/utils/built-in-skills-dir.d.ts.map +1 -0
  26. package/dist/utils/built-in-skills-dir.js +11 -0
  27. package/dist/utils/built-in-skills-dir.js.map +1 -0
  28. package/dist/utils/config.d.ts +2 -119
  29. package/dist/utils/config.d.ts.map +1 -1
  30. package/dist/utils/config.js +3 -88
  31. package/dist/utils/config.js.map +1 -1
  32. package/package.json +11 -17
  33. package/dist/commands/punycode.d.ts +0 -5
  34. package/dist/commands/punycode.d.ts.map +0 -1
  35. package/dist/commands/punycode.js +0 -48
  36. package/dist/commands/punycode.js.map +0 -1
  37. package/dist/commands/tui.d.ts +0 -9
  38. package/dist/commands/tui.d.ts.map +0 -1
  39. package/dist/commands/tui.js +0 -83
  40. package/dist/commands/tui.js.map +0 -1
  41. package/dist/core/agent-tool-policies.d.ts +0 -5
  42. package/dist/core/agent-tool-policies.d.ts.map +0 -1
  43. package/dist/core/agent-tool-policies.js +0 -18
  44. package/dist/core/agent-tool-policies.js.map +0 -1
  45. package/dist/core/agent.d.ts +0 -181
  46. package/dist/core/agent.d.ts.map +0 -1
  47. package/dist/core/agent.js +0 -1777
  48. package/dist/core/agent.js.map +0 -1
  49. package/dist/core/background-agent.d.ts +0 -23
  50. package/dist/core/background-agent.d.ts.map +0 -1
  51. package/dist/core/background-agent.js +0 -175
  52. package/dist/core/background-agent.js.map +0 -1
  53. package/dist/core/code-graph.d.ts +0 -18
  54. package/dist/core/code-graph.d.ts.map +0 -1
  55. package/dist/core/code-graph.js +0 -105
  56. package/dist/core/code-graph.js.map +0 -1
  57. package/dist/core/conflict-solver.d.ts +0 -26
  58. package/dist/core/conflict-solver.d.ts.map +0 -1
  59. package/dist/core/conflict-solver.js +0 -108
  60. package/dist/core/conflict-solver.js.map +0 -1
  61. package/dist/core/context-compactor.d.ts +0 -10
  62. package/dist/core/context-compactor.d.ts.map +0 -1
  63. package/dist/core/context-compactor.js +0 -158
  64. package/dist/core/context-compactor.js.map +0 -1
  65. package/dist/core/context-pruner.d.ts +0 -19
  66. package/dist/core/context-pruner.d.ts.map +0 -1
  67. package/dist/core/context-pruner.js +0 -103
  68. package/dist/core/context-pruner.js.map +0 -1
  69. package/dist/core/context.d.ts +0 -82
  70. package/dist/core/context.d.ts.map +0 -1
  71. package/dist/core/context.js +0 -273
  72. package/dist/core/context.js.map +0 -1
  73. package/dist/core/conversation-recovery.d.ts +0 -9
  74. package/dist/core/conversation-recovery.d.ts.map +0 -1
  75. package/dist/core/conversation-recovery.js +0 -15
  76. package/dist/core/conversation-recovery.js.map +0 -1
  77. package/dist/core/debug-workflow.d.ts +0 -9
  78. package/dist/core/debug-workflow.d.ts.map +0 -1
  79. package/dist/core/debug-workflow.js +0 -19
  80. package/dist/core/debug-workflow.js.map +0 -1
  81. package/dist/core/docs-scraper.d.ts +0 -40
  82. package/dist/core/docs-scraper.d.ts.map +0 -1
  83. package/dist/core/docs-scraper.js +0 -386
  84. package/dist/core/docs-scraper.js.map +0 -1
  85. package/dist/core/editor.d.ts +0 -87
  86. package/dist/core/editor.d.ts.map +0 -1
  87. package/dist/core/editor.js +0 -377
  88. package/dist/core/editor.js.map +0 -1
  89. package/dist/core/export.d.ts +0 -11
  90. package/dist/core/export.d.ts.map +0 -1
  91. package/dist/core/export.js +0 -54
  92. package/dist/core/export.js.map +0 -1
  93. package/dist/core/history-manager.d.ts +0 -75
  94. package/dist/core/history-manager.d.ts.map +0 -1
  95. package/dist/core/history-manager.js +0 -146
  96. package/dist/core/history-manager.js.map +0 -1
  97. package/dist/core/marketplace-client.d.ts +0 -52
  98. package/dist/core/marketplace-client.d.ts.map +0 -1
  99. package/dist/core/marketplace-client.js +0 -71
  100. package/dist/core/marketplace-client.js.map +0 -1
  101. package/dist/core/mcp/mcp-config.d.ts +0 -10
  102. package/dist/core/mcp/mcp-config.d.ts.map +0 -1
  103. package/dist/core/mcp/mcp-config.js +0 -70
  104. package/dist/core/mcp/mcp-config.js.map +0 -1
  105. package/dist/core/mcp/mcp-policy.d.ts +0 -17
  106. package/dist/core/mcp/mcp-policy.d.ts.map +0 -1
  107. package/dist/core/mcp/mcp-policy.js +0 -56
  108. package/dist/core/mcp/mcp-policy.js.map +0 -1
  109. package/dist/core/mcp/oauth-flow.d.ts +0 -30
  110. package/dist/core/mcp/oauth-flow.d.ts.map +0 -1
  111. package/dist/core/mcp/oauth-flow.js +0 -230
  112. package/dist/core/mcp/oauth-flow.js.map +0 -1
  113. package/dist/core/mcp/oauth-store.d.ts +0 -13
  114. package/dist/core/mcp/oauth-store.d.ts.map +0 -1
  115. package/dist/core/mcp/oauth-store.js +0 -68
  116. package/dist/core/mcp/oauth-store.js.map +0 -1
  117. package/dist/core/mcp/resolve-mcp-servers.d.ts +0 -16
  118. package/dist/core/mcp/resolve-mcp-servers.d.ts.map +0 -1
  119. package/dist/core/mcp/resolve-mcp-servers.js +0 -83
  120. package/dist/core/mcp/resolve-mcp-servers.js.map +0 -1
  121. package/dist/core/mcp-client.d.ts +0 -99
  122. package/dist/core/mcp-client.d.ts.map +0 -1
  123. package/dist/core/mcp-client.js +0 -317
  124. package/dist/core/mcp-client.js.map +0 -1
  125. package/dist/core/memory-promotions.d.ts +0 -15
  126. package/dist/core/memory-promotions.d.ts.map +0 -1
  127. package/dist/core/memory-promotions.js +0 -38
  128. package/dist/core/memory-promotions.js.map +0 -1
  129. package/dist/core/memory.d.ts +0 -32
  130. package/dist/core/memory.d.ts.map +0 -1
  131. package/dist/core/memory.js +0 -121
  132. package/dist/core/memory.js.map +0 -1
  133. package/dist/core/modes.d.ts +0 -432
  134. package/dist/core/modes.d.ts.map +0 -1
  135. package/dist/core/modes.js +0 -1094
  136. package/dist/core/modes.js.map +0 -1
  137. package/dist/core/pattern-miner.d.ts +0 -43
  138. package/dist/core/pattern-miner.d.ts.map +0 -1
  139. package/dist/core/pattern-miner.js +0 -123
  140. package/dist/core/pattern-miner.js.map +0 -1
  141. package/dist/core/permission-store.d.ts +0 -15
  142. package/dist/core/permission-store.d.ts.map +0 -1
  143. package/dist/core/permission-store.js +0 -30
  144. package/dist/core/permission-store.js.map +0 -1
  145. package/dist/core/permissions.d.ts +0 -33
  146. package/dist/core/permissions.d.ts.map +0 -1
  147. package/dist/core/permissions.js +0 -141
  148. package/dist/core/permissions.js.map +0 -1
  149. package/dist/core/plan-artifacts.d.ts +0 -10
  150. package/dist/core/plan-artifacts.d.ts.map +0 -1
  151. package/dist/core/plan-artifacts.js +0 -60
  152. package/dist/core/plan-artifacts.js.map +0 -1
  153. package/dist/core/plan-session.d.ts +0 -25
  154. package/dist/core/plan-session.d.ts.map +0 -1
  155. package/dist/core/plan-session.js +0 -99
  156. package/dist/core/plan-session.js.map +0 -1
  157. package/dist/core/planMode.d.ts +0 -51
  158. package/dist/core/planMode.d.ts.map +0 -1
  159. package/dist/core/planMode.js +0 -245
  160. package/dist/core/planMode.js.map +0 -1
  161. package/dist/core/plugins.d.ts +0 -96
  162. package/dist/core/plugins.d.ts.map +0 -1
  163. package/dist/core/plugins.js +0 -204
  164. package/dist/core/plugins.js.map +0 -1
  165. package/dist/core/session-bridge.d.ts +0 -128
  166. package/dist/core/session-bridge.d.ts.map +0 -1
  167. package/dist/core/session-bridge.js +0 -328
  168. package/dist/core/session-bridge.js.map +0 -1
  169. package/dist/core/session-manager.d.ts +0 -80
  170. package/dist/core/session-manager.d.ts.map +0 -1
  171. package/dist/core/session-manager.js +0 -166
  172. package/dist/core/session-manager.js.map +0 -1
  173. package/dist/core/session-memory.d.ts +0 -45
  174. package/dist/core/session-memory.d.ts.map +0 -1
  175. package/dist/core/session-memory.js +0 -103
  176. package/dist/core/session-memory.js.map +0 -1
  177. package/dist/core/skill-selection.d.ts +0 -36
  178. package/dist/core/skill-selection.d.ts.map +0 -1
  179. package/dist/core/skill-selection.js +0 -172
  180. package/dist/core/skill-selection.js.map +0 -1
  181. package/dist/core/skills-sh-client.d.ts +0 -19
  182. package/dist/core/skills-sh-client.d.ts.map +0 -1
  183. package/dist/core/skills-sh-client.js +0 -75
  184. package/dist/core/skills-sh-client.js.map +0 -1
  185. package/dist/core/skills.d.ts +0 -97
  186. package/dist/core/skills.d.ts.map +0 -1
  187. package/dist/core/skills.js +0 -339
  188. package/dist/core/skills.js.map +0 -1
  189. package/dist/core/swarm.d.ts +0 -34
  190. package/dist/core/swarm.d.ts.map +0 -1
  191. package/dist/core/swarm.js +0 -111
  192. package/dist/core/swarm.js.map +0 -1
  193. package/dist/core/task-status.d.ts +0 -13
  194. package/dist/core/task-status.d.ts.map +0 -1
  195. package/dist/core/task-status.js +0 -17
  196. package/dist/core/task-status.js.map +0 -1
  197. package/dist/core/tool-orchestrator.d.ts +0 -30
  198. package/dist/core/tool-orchestrator.d.ts.map +0 -1
  199. package/dist/core/tool-orchestrator.js +0 -89
  200. package/dist/core/tool-orchestrator.js.map +0 -1
  201. package/dist/core/tools.d.ts +0 -462
  202. package/dist/core/tools.d.ts.map +0 -1
  203. package/dist/core/tools.js +0 -2916
  204. package/dist/core/tools.js.map +0 -1
  205. package/dist/core/transcript-cleanup.d.ts +0 -8
  206. package/dist/core/transcript-cleanup.d.ts.map +0 -1
  207. package/dist/core/transcript-cleanup.js +0 -52
  208. package/dist/core/transcript-cleanup.js.map +0 -1
  209. package/dist/core/visual-feedback.d.ts +0 -20
  210. package/dist/core/visual-feedback.d.ts.map +0 -1
  211. package/dist/core/visual-feedback.js +0 -117
  212. package/dist/core/visual-feedback.js.map +0 -1
  213. package/dist/tools/browser.d.ts +0 -120
  214. package/dist/tools/browser.d.ts.map +0 -1
  215. package/dist/tools/browser.js +0 -439
  216. package/dist/tools/browser.js.map +0 -1
  217. package/dist/tools/test-generator.d.ts +0 -157
  218. package/dist/tools/test-generator.d.ts.map +0 -1
  219. package/dist/tools/test-generator.js +0 -893
  220. package/dist/tools/test-generator.js.map +0 -1
  221. package/dist/tui/InkApp.d.ts +0 -21
  222. package/dist/tui/InkApp.d.ts.map +0 -1
  223. package/dist/tui/InkApp.js +0 -146
  224. package/dist/tui/InkApp.js.map +0 -1
  225. package/dist/tui/MarkdownMessage.d.ts +0 -16
  226. package/dist/tui/MarkdownMessage.d.ts.map +0 -1
  227. package/dist/tui/MarkdownMessage.js +0 -63
  228. package/dist/tui/MarkdownMessage.js.map +0 -1
  229. package/dist/tui/blessed-chat.d.ts +0 -9
  230. package/dist/tui/blessed-chat.d.ts.map +0 -1
  231. package/dist/tui/blessed-chat.js +0 -887
  232. package/dist/tui/blessed-chat.js.map +0 -1
  233. package/dist/tui/markdown-to-blessed.d.ts +0 -6
  234. package/dist/tui/markdown-to-blessed.d.ts.map +0 -1
  235. package/dist/tui/markdown-to-blessed.js +0 -26
  236. package/dist/tui/markdown-to-blessed.js.map +0 -1
  237. package/dist/ui/ink/App.d.ts +0 -25
  238. package/dist/ui/ink/App.d.ts.map +0 -1
  239. package/dist/ui/ink/App.js +0 -372
  240. package/dist/ui/ink/App.js.map +0 -1
  241. package/dist/utils/at-references.d.ts +0 -14
  242. package/dist/utils/at-references.d.ts.map +0 -1
  243. package/dist/utils/at-references.js +0 -47
  244. package/dist/utils/at-references.js.map +0 -1
  245. package/dist/utils/auto-memory.d.ts +0 -24
  246. package/dist/utils/auto-memory.d.ts.map +0 -1
  247. package/dist/utils/auto-memory.js +0 -153
  248. package/dist/utils/auto-memory.js.map +0 -1
  249. package/dist/utils/git.d.ts +0 -89
  250. package/dist/utils/git.d.ts.map +0 -1
  251. package/dist/utils/git.js +0 -444
  252. package/dist/utils/git.js.map +0 -1
  253. package/dist/utils/mcp-servers-file.d.ts +0 -46
  254. package/dist/utils/mcp-servers-file.d.ts.map +0 -1
  255. package/dist/utils/mcp-servers-file.js +0 -212
  256. package/dist/utils/mcp-servers-file.js.map +0 -1
  257. package/dist/utils/safety.d.ts +0 -60
  258. package/dist/utils/safety.d.ts.map +0 -1
  259. package/dist/utils/safety.js +0 -254
  260. package/dist/utils/safety.js.map +0 -1
  261. package/dist/utils/smithery.d.ts +0 -25
  262. package/dist/utils/smithery.d.ts.map +0 -1
  263. package/dist/utils/smithery.js +0 -50
  264. package/dist/utils/smithery.js.map +0 -1
  265. package/dist/utils/testRunner.d.ts +0 -44
  266. package/dist/utils/testRunner.d.ts.map +0 -1
  267. package/dist/utils/testRunner.js +0 -270
  268. package/dist/utils/testRunner.js.map +0 -1
@@ -1,317 +0,0 @@
1
- import { createRequire } from 'module';
2
- import { Client } from '@modelcontextprotocol/sdk/client/index.js';
3
- import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
4
- const pkg = createRequire(import.meta.url)('../../package.json');
5
- /**
6
- * Manages connections to MCP servers and provides unified access to their capabilities
7
- */
8
- export class MCPClientManager {
9
- clients = new Map();
10
- serverConfigs = new Map();
11
- tools = new Map();
12
- resources = new Map();
13
- prompts = new Map();
14
- serverStates = new Map();
15
- setState(serverName, patch) {
16
- const current = this.serverStates.get(serverName);
17
- this.serverStates.set(serverName, {
18
- name: serverName,
19
- state: current?.state || 'connecting',
20
- ...current,
21
- ...patch,
22
- updatedAt: Date.now(),
23
- });
24
- }
25
- /**
26
- * Connect to an MCP server
27
- */
28
- async connect(serverName, serverConfig) {
29
- const state = this.serverStates.get(serverName);
30
- if (state?.state === 'needs-auth' && state.needsAuthUntil && Date.now() < state.needsAuthUntil) {
31
- throw new Error(`Skipping connection (needs-auth cached until ${new Date(state.needsAuthUntil).toISOString()})`);
32
- }
33
- if (this.clients.has(serverName)) {
34
- throw new Error(`Already connected to MCP server: ${serverName}`);
35
- }
36
- try {
37
- this.setState(serverName, { state: 'connecting', lastError: undefined });
38
- const client = new Client({
39
- name: 'xibecode',
40
- version: pkg.version,
41
- }, {
42
- capabilities: {},
43
- });
44
- if (!serverConfig.command) {
45
- throw new Error(`stdio transport requires 'command' for server ${serverName}`);
46
- }
47
- const transport = new StdioClientTransport({
48
- command: serverConfig.command,
49
- args: serverConfig.args || [],
50
- env: serverConfig.env,
51
- });
52
- await client.connect(transport);
53
- // Store client and config
54
- this.clients.set(serverName, client);
55
- this.serverConfigs.set(serverName, serverConfig);
56
- // Discover and cache capabilities
57
- await this.discoverCapabilities(serverName);
58
- this.setState(serverName, { state: 'connected', lastError: undefined, needsAuthUntil: undefined });
59
- }
60
- catch (error) {
61
- const msg = error instanceof Error ? error.message : String(error);
62
- // Heuristic: treat auth-ish failures as needs-auth so we don't reconnect-loop.
63
- if (/(401|unauthorized|forbidden|needs[- ]auth)/i.test(msg)) {
64
- this.setState(serverName, {
65
- state: 'needs-auth',
66
- lastError: msg,
67
- needsAuthUntil: Date.now() + 15 * 60 * 1000,
68
- });
69
- }
70
- else {
71
- this.setState(serverName, { state: 'error', lastError: msg });
72
- }
73
- throw new Error(`Failed to connect to MCP server ${serverName}: ${msg}`);
74
- }
75
- }
76
- /**
77
- * Connect to all MCP servers with simple retry/backoff.
78
- */
79
- async connectAll(servers, opts) {
80
- const retries = opts?.retries ?? 1;
81
- const backoffMs = opts?.backoffMs ?? 750;
82
- const connected = [];
83
- const skippedNeedsAuth = [];
84
- const failed = [];
85
- for (const [name, cfg] of Object.entries(servers)) {
86
- let attempt = 0;
87
- while (true) {
88
- attempt++;
89
- try {
90
- await this.connect(name, cfg);
91
- connected.push(name);
92
- break;
93
- }
94
- catch (err) {
95
- const msg = err instanceof Error ? err.message : String(err);
96
- const st = this.serverStates.get(name);
97
- if (st?.state === 'needs-auth') {
98
- skippedNeedsAuth.push(name);
99
- break;
100
- }
101
- if (attempt > retries) {
102
- failed.push({ name, error: msg });
103
- break;
104
- }
105
- await new Promise((r) => setTimeout(r, backoffMs * attempt));
106
- }
107
- }
108
- }
109
- return { connected, failed, skippedNeedsAuth };
110
- }
111
- /**
112
- * Disconnect from an MCP server
113
- */
114
- async disconnect(serverName) {
115
- const client = this.clients.get(serverName);
116
- if (!client) {
117
- return;
118
- }
119
- try {
120
- await client.close();
121
- }
122
- catch (error) {
123
- // Log but don't throw - we're disconnecting anyway
124
- console.error(`Error disconnecting from ${serverName}:`, error);
125
- }
126
- this.clients.delete(serverName);
127
- this.serverConfigs.delete(serverName);
128
- this.setState(serverName, { state: 'error', lastError: 'Disconnected' });
129
- // Remove cached capabilities
130
- for (const [key, tool] of this.tools.entries()) {
131
- if (tool.serverName === serverName) {
132
- this.tools.delete(key);
133
- }
134
- }
135
- for (const [key, resource] of this.resources.entries()) {
136
- if (resource.serverName === serverName) {
137
- this.resources.delete(key);
138
- }
139
- }
140
- for (const [key, prompt] of this.prompts.entries()) {
141
- if (prompt.serverName === serverName) {
142
- this.prompts.delete(key);
143
- }
144
- }
145
- }
146
- /**
147
- * Disconnect from all MCP servers
148
- */
149
- async disconnectAll() {
150
- const serverNames = Array.from(this.clients.keys());
151
- await Promise.all(serverNames.map(name => this.disconnect(name)));
152
- }
153
- /**
154
- * Discover and cache capabilities from a connected server
155
- */
156
- async discoverCapabilities(serverName) {
157
- const client = this.clients.get(serverName);
158
- if (!client) {
159
- throw new Error(`Not connected to server: ${serverName}`);
160
- }
161
- try {
162
- // Discover tools
163
- const toolsList = await client.listTools();
164
- if (toolsList.tools) {
165
- for (const tool of toolsList.tools) {
166
- const mcpTool = { ...tool, serverName };
167
- this.tools.set(`${serverName}::${tool.name}`, mcpTool);
168
- }
169
- }
170
- // Discover resources
171
- const resourcesList = await client.listResources();
172
- if (resourcesList.resources) {
173
- for (const resource of resourcesList.resources) {
174
- const mcpResource = { ...resource, serverName };
175
- this.resources.set(`${serverName}::${resource.uri}`, mcpResource);
176
- }
177
- }
178
- // Discover prompts
179
- const promptsList = await client.listPrompts();
180
- if (promptsList.prompts) {
181
- for (const prompt of promptsList.prompts) {
182
- const mcpPrompt = { ...prompt, serverName };
183
- this.prompts.set(`${serverName}::${prompt.name}`, mcpPrompt);
184
- }
185
- }
186
- }
187
- catch (error) {
188
- throw new Error(`Failed to discover capabilities for ${serverName}: ${error instanceof Error ? error.message : String(error)}`);
189
- }
190
- }
191
- /**
192
- * Get all available tools from all connected MCP servers
193
- */
194
- getAvailableTools() {
195
- return Array.from(this.tools.values());
196
- }
197
- /**
198
- * Get all available resources from all connected MCP servers
199
- */
200
- getAvailableResources() {
201
- return Array.from(this.resources.values());
202
- }
203
- /**
204
- * Get all available prompts from all connected MCP servers
205
- */
206
- getAvailablePrompts() {
207
- return Array.from(this.prompts.values());
208
- }
209
- /**
210
- * Execute a tool from an MCP server
211
- */
212
- async executeMCPTool(toolName, args) {
213
- // Parse server name from toolName (format: "serverName::actualToolName")
214
- const parts = toolName.split('::');
215
- if (parts.length !== 2) {
216
- throw new Error(`Invalid MCP tool name format: ${toolName}. Expected format: serverName::toolName`);
217
- }
218
- const [serverName, actualToolName] = parts;
219
- const client = this.clients.get(serverName);
220
- if (!client) {
221
- throw new Error(`Not connected to MCP server: ${serverName}`);
222
- }
223
- const tool = this.tools.get(toolName);
224
- if (!tool) {
225
- throw new Error(`Tool not found: ${toolName}`);
226
- }
227
- try {
228
- const result = await client.callTool({
229
- name: actualToolName,
230
- arguments: args,
231
- });
232
- return result;
233
- }
234
- catch (error) {
235
- throw new Error(`Failed to execute MCP tool ${toolName}: ${error instanceof Error ? error.message : String(error)}`);
236
- }
237
- }
238
- /**
239
- * Read a resource from an MCP server
240
- */
241
- async readResource(resourceUri) {
242
- // Parse server name from resourceUri (format: "serverName::actualUri")
243
- const parts = resourceUri.split('::');
244
- if (parts.length !== 2) {
245
- throw new Error(`Invalid MCP resource URI format: ${resourceUri}. Expected format: serverName::uri`);
246
- }
247
- const [serverName, actualUri] = parts;
248
- const client = this.clients.get(serverName);
249
- if (!client) {
250
- throw new Error(`Not connected to MCP server: ${serverName}`);
251
- }
252
- const resource = this.resources.get(resourceUri);
253
- if (!resource) {
254
- throw new Error(`Resource not found: ${resourceUri}`);
255
- }
256
- try {
257
- const result = await client.readResource({
258
- uri: actualUri,
259
- });
260
- return result;
261
- }
262
- catch (error) {
263
- throw new Error(`Failed to read MCP resource ${resourceUri}: ${error instanceof Error ? error.message : String(error)}`);
264
- }
265
- }
266
- /**
267
- * Get a prompt from an MCP server
268
- */
269
- async getPrompt(promptName, args) {
270
- // Parse server name from promptName (format: "serverName::actualPromptName")
271
- const parts = promptName.split('::');
272
- if (parts.length !== 2) {
273
- throw new Error(`Invalid MCP prompt name format: ${promptName}. Expected format: serverName::promptName`);
274
- }
275
- const [serverName, actualPromptName] = parts;
276
- const client = this.clients.get(serverName);
277
- if (!client) {
278
- throw new Error(`Not connected to MCP server: ${serverName}`);
279
- }
280
- const prompt = this.prompts.get(promptName);
281
- if (!prompt) {
282
- throw new Error(`Prompt not found: ${promptName}`);
283
- }
284
- try {
285
- const result = await client.getPrompt({
286
- name: actualPromptName,
287
- arguments: args,
288
- });
289
- return result;
290
- }
291
- catch (error) {
292
- throw new Error(`Failed to get MCP prompt ${promptName}: ${error instanceof Error ? error.message : String(error)}`);
293
- }
294
- }
295
- /**
296
- * Get list of connected servers
297
- */
298
- getConnectedServers() {
299
- return Array.from(this.clients.keys());
300
- }
301
- getServerStates() {
302
- return Array.from(this.serverStates.values()).sort((a, b) => a.name.localeCompare(b.name));
303
- }
304
- /**
305
- * Check if connected to a specific server
306
- */
307
- isConnected(serverName) {
308
- return this.clients.has(serverName);
309
- }
310
- /**
311
- * Get server configuration
312
- */
313
- getServerConfig(serverName) {
314
- return this.serverConfigs.get(serverName);
315
- }
316
- }
317
- //# sourceMappingURL=mcp-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/core/mcp-client.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- export interface PromotedMemory {
2
- key: string;
3
- value: string;
4
- promotedAt: string;
5
- source: 'session' | 'manual' | 'auto';
6
- }
7
- export declare class MemoryPromotions {
8
- private readonly workingDir;
9
- private readonly filePath;
10
- constructor(workingDir?: string);
11
- promote(key: string, value: string, source?: PromotedMemory['source']): Promise<void>;
12
- list(): Promise<PromotedMemory[]>;
13
- private save;
14
- }
15
- //# sourceMappingURL=memory-promotions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-promotions.d.ts","sourceRoot":"","sources":["../../src/core/memory-promotions.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;CACvC;AAED,qBAAa,gBAAgB;IAGf,OAAO,CAAC,QAAQ,CAAC,UAAU;IAFvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEL,UAAU,GAAE,MAAsB;IAIzD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,cAAc,CAAC,QAAQ,CAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAchG,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YASzB,IAAI;CAInB"}
@@ -1,38 +0,0 @@
1
- import * as fs from 'fs/promises';
2
- import * as path from 'path';
3
- export class MemoryPromotions {
4
- workingDir;
5
- filePath;
6
- constructor(workingDir = process.cwd()) {
7
- this.workingDir = workingDir;
8
- this.filePath = path.join(workingDir, '.xibecode', 'memory-promotions.json');
9
- }
10
- async promote(key, value, source = 'session') {
11
- const entries = await this.list();
12
- const existing = entries.find((entry) => entry.key === key);
13
- const now = new Date().toISOString();
14
- if (existing) {
15
- existing.value = value;
16
- existing.source = source;
17
- existing.promotedAt = now;
18
- }
19
- else {
20
- entries.push({ key, value, source, promotedAt: now });
21
- }
22
- await this.save(entries);
23
- }
24
- async list() {
25
- try {
26
- const raw = await fs.readFile(this.filePath, 'utf8');
27
- return JSON.parse(raw);
28
- }
29
- catch {
30
- return [];
31
- }
32
- }
33
- async save(entries) {
34
- await fs.mkdir(path.dirname(this.filePath), { recursive: true });
35
- await fs.writeFile(this.filePath, JSON.stringify(entries, null, 2), 'utf8');
36
- }
37
- }
38
- //# sourceMappingURL=memory-promotions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory-promotions.js","sourceRoot":"","sources":["../../src/core/memory-promotions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAS7B,MAAM,OAAO,gBAAgB;IAGE;IAFZ,QAAQ,CAAS;IAElC,YAA6B,aAAqB,OAAO,CAAC,GAAG,EAAE;QAAlC,eAAU,GAAV,UAAU,CAAwB;QAC7D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,wBAAwB,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,SAAmC,SAAS;QACpF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;YACvB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,OAAyB;QAC1C,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;CACF"}
@@ -1,32 +0,0 @@
1
- export interface MemoryItem {
2
- id: string;
3
- timestamp: number;
4
- trigger: string;
5
- action: string;
6
- outcome: string;
7
- tags: string[];
8
- embedding?: number[];
9
- }
10
- export interface MemoryStore {
11
- items: MemoryItem[];
12
- lastUpdated: number;
13
- }
14
- export declare class NeuralMemory {
15
- private workingDir;
16
- private memoryFile;
17
- private memory;
18
- private initialized;
19
- private promotions;
20
- constructor(workingDir?: string);
21
- init(): Promise<void>;
22
- addMemory(trigger: string, action: string, outcome: string, tags?: string[]): Promise<void>;
23
- /**
24
- * Retrieve relevant memories based on a query string (context or error message).
25
- * Currently uses keyword matching. Future: Vector search.
26
- */
27
- retrieve(query: string, limit?: number, minScore?: number): Promise<MemoryItem[]>;
28
- getAll(): Promise<MemoryItem[]>;
29
- private persist;
30
- promoteMemory(key: string, value: string): Promise<void>;
31
- }
32
- //# sourceMappingURL=memory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/core/memory.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,YAAY;IAMT,OAAO,CAAC,UAAU;IAL9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAA8C;IAC5D,OAAO,CAAC,WAAW,CAAkB;IACvC,OAAO,CAAC,UAAU,CAAmB;gBAEf,UAAU,GAAE,MAAsB;IAMhD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBrB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrG;;;OAGG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,EAAE,QAAQ,GAAE,MAAU,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAwDvF,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAKvB,OAAO;IAQf,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGjE"}
@@ -1,121 +0,0 @@
1
- import * as fs from 'fs/promises';
2
- import { existsSync } from 'fs';
3
- import * as path from 'path';
4
- import { createHash } from 'crypto';
5
- import { MemoryPromotions } from './memory-promotions.js';
6
- export class NeuralMemory {
7
- workingDir;
8
- memoryFile;
9
- memory = { items: [], lastUpdated: 0 };
10
- initialized = false;
11
- promotions;
12
- constructor(workingDir = process.cwd()) {
13
- this.workingDir = workingDir;
14
- const xibeDir = path.join(workingDir, '.xibecode');
15
- this.memoryFile = path.join(xibeDir, 'memory.json');
16
- this.promotions = new MemoryPromotions(workingDir);
17
- }
18
- async init() {
19
- if (this.initialized)
20
- return;
21
- try {
22
- const xibeDir = path.dirname(this.memoryFile);
23
- if (!existsSync(xibeDir)) {
24
- await fs.mkdir(xibeDir, { recursive: true });
25
- }
26
- if (existsSync(this.memoryFile)) {
27
- const content = await fs.readFile(this.memoryFile, 'utf-8');
28
- this.memory = JSON.parse(content);
29
- }
30
- this.initialized = true;
31
- }
32
- catch (error) {
33
- console.warn('Failed to initialize memory:', error);
34
- // Start with empty memory on failure
35
- this.memory = { items: [], lastUpdated: 0 };
36
- this.initialized = true;
37
- }
38
- }
39
- async addMemory(trigger, action, outcome, tags = []) {
40
- await this.init();
41
- const id = createHash('md5').update(`${trigger}:${action}:${Date.now()}`).digest('hex');
42
- const item = {
43
- id,
44
- timestamp: Date.now(),
45
- trigger,
46
- action,
47
- outcome,
48
- tags
49
- };
50
- this.memory.items.push(item);
51
- this.memory.lastUpdated = Date.now();
52
- await this.persist();
53
- }
54
- /**
55
- * Retrieve relevant memories based on a query string (context or error message).
56
- * Currently uses keyword matching. Future: Vector search.
57
- */
58
- async retrieve(query, limit = 5, minScore = 1) {
59
- await this.init();
60
- const queryLower = query.toLowerCase();
61
- const keywords = queryLower.split(/\s+/).filter(w => w.length > 3);
62
- const scored = this.memory.items.map(item => {
63
- let score = 0;
64
- const content = `${item.trigger} ${item.outcome} ${item.tags.join(' ')}`.toLowerCase();
65
- // Exact phrase match (high weight)
66
- if (content.includes(queryLower))
67
- score += 10;
68
- // Keyword match
69
- for (const word of keywords) {
70
- if (content.includes(word))
71
- score += 1;
72
- }
73
- // Recency boost (decay over 30 days)
74
- const daysOld = (Date.now() - item.timestamp) / (1000 * 60 * 60 * 24);
75
- const recencyScore = Math.max(0, 1 - daysOld / 30);
76
- score += recencyScore * 2;
77
- return { item, score };
78
- });
79
- // Filter zero scores and sort
80
- const results = scored
81
- .filter(r => r.score >= minScore)
82
- .sort((a, b) => b.score - a.score)
83
- .slice(0, limit)
84
- .map(r => r.item);
85
- // Include promoted durable memories as high-priority context hints.
86
- const promoted = await this.promotions.list();
87
- const promotedMatches = promoted
88
- .filter(entry => {
89
- const content = `${entry.key} ${entry.value}`.toLowerCase();
90
- return keywords.some((word) => content.includes(word)) || content.includes(queryLower);
91
- })
92
- .slice(0, Math.max(1, Math.min(3, limit)))
93
- .map((entry) => ({
94
- id: `promoted-${entry.key}`,
95
- timestamp: Date.parse(entry.promotedAt),
96
- trigger: entry.key,
97
- action: 'promoted_memory',
98
- outcome: entry.value,
99
- tags: ['promoted'],
100
- }));
101
- const merged = [...promotedMatches, ...results]
102
- .slice(0, limit);
103
- return merged;
104
- }
105
- async getAll() {
106
- await this.init();
107
- return this.memory.items;
108
- }
109
- async persist() {
110
- try {
111
- await fs.writeFile(this.memoryFile, JSON.stringify(this.memory, null, 2), 'utf-8');
112
- }
113
- catch (error) {
114
- console.error('Failed to save memory:', error);
115
- }
116
- }
117
- async promoteMemory(key, value) {
118
- await this.promotions.promote(key, value, 'manual');
119
- }
120
- }
121
- //# sourceMappingURL=memory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/core/memory.ts"],"names":[],"mappings":"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"}