xibecode 1.0.2 → 1.0.6

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 (288) hide show
  1. package/dist/commands/chat.d.ts +0 -1
  2. package/dist/commands/chat.d.ts.map +1 -1
  3. package/dist/commands/chat.js +10 -7
  4. package/dist/commands/chat.js.map +1 -1
  5. package/dist/commands/config.d.ts.map +1 -1
  6. package/dist/commands/config.js +5 -3
  7. package/dist/commands/config.js.map +1 -1
  8. package/dist/commands/diagnostics.js +1 -1
  9. package/dist/commands/diagnostics.js.map +1 -1
  10. package/dist/commands/mcp.js +1 -1
  11. package/dist/commands/mcp.js.map +1 -1
  12. package/dist/commands/resume.js +1 -1
  13. package/dist/commands/resume.js.map +1 -1
  14. package/dist/commands/run-pr.d.ts.map +1 -1
  15. package/dist/commands/run-pr.js +13 -10
  16. package/dist/commands/run-pr.js.map +1 -1
  17. package/dist/commands/run.d.ts.map +1 -1
  18. package/dist/commands/run.js +17 -14
  19. package/dist/commands/run.js.map +1 -1
  20. package/dist/commands/skills.d.ts.map +1 -1
  21. package/dist/commands/skills.js +3 -2
  22. package/dist/commands/skills.js.map +1 -1
  23. package/dist/components/AssistantMarkdown.js +1 -1
  24. package/dist/components/AssistantMarkdown.js.map +1 -1
  25. package/dist/index.js +2 -39
  26. package/dist/index.js.map +1 -1
  27. package/dist/ui/claude-style-chat.d.ts.map +1 -1
  28. package/dist/ui/claude-style-chat.js +15 -11
  29. package/dist/ui/claude-style-chat.js.map +1 -1
  30. package/dist/utils/built-in-skills-dir.d.ts +7 -0
  31. package/dist/utils/built-in-skills-dir.d.ts.map +1 -0
  32. package/dist/utils/built-in-skills-dir.js +11 -0
  33. package/dist/utils/built-in-skills-dir.js.map +1 -0
  34. package/dist/utils/config.d.ts +2 -119
  35. package/dist/utils/config.d.ts.map +1 -1
  36. package/dist/utils/config.js +3 -88
  37. package/dist/utils/config.js.map +1 -1
  38. package/package.json +11 -26
  39. package/dist/commands/punycode.d.ts +0 -5
  40. package/dist/commands/punycode.d.ts.map +0 -1
  41. package/dist/commands/punycode.js +0 -48
  42. package/dist/commands/punycode.js.map +0 -1
  43. package/dist/commands/tui.d.ts +0 -9
  44. package/dist/commands/tui.d.ts.map +0 -1
  45. package/dist/commands/tui.js +0 -83
  46. package/dist/commands/tui.js.map +0 -1
  47. package/dist/core/agent-tool-policies.d.ts +0 -5
  48. package/dist/core/agent-tool-policies.d.ts.map +0 -1
  49. package/dist/core/agent-tool-policies.js +0 -18
  50. package/dist/core/agent-tool-policies.js.map +0 -1
  51. package/dist/core/agent.d.ts +0 -181
  52. package/dist/core/agent.d.ts.map +0 -1
  53. package/dist/core/agent.js +0 -1777
  54. package/dist/core/agent.js.map +0 -1
  55. package/dist/core/background-agent.d.ts +0 -23
  56. package/dist/core/background-agent.d.ts.map +0 -1
  57. package/dist/core/background-agent.js +0 -175
  58. package/dist/core/background-agent.js.map +0 -1
  59. package/dist/core/code-graph.d.ts +0 -18
  60. package/dist/core/code-graph.d.ts.map +0 -1
  61. package/dist/core/code-graph.js +0 -105
  62. package/dist/core/code-graph.js.map +0 -1
  63. package/dist/core/conflict-solver.d.ts +0 -26
  64. package/dist/core/conflict-solver.d.ts.map +0 -1
  65. package/dist/core/conflict-solver.js +0 -108
  66. package/dist/core/conflict-solver.js.map +0 -1
  67. package/dist/core/context-compactor.d.ts +0 -10
  68. package/dist/core/context-compactor.d.ts.map +0 -1
  69. package/dist/core/context-compactor.js +0 -158
  70. package/dist/core/context-compactor.js.map +0 -1
  71. package/dist/core/context-pruner.d.ts +0 -19
  72. package/dist/core/context-pruner.d.ts.map +0 -1
  73. package/dist/core/context-pruner.js +0 -103
  74. package/dist/core/context-pruner.js.map +0 -1
  75. package/dist/core/context.d.ts +0 -82
  76. package/dist/core/context.d.ts.map +0 -1
  77. package/dist/core/context.js +0 -273
  78. package/dist/core/context.js.map +0 -1
  79. package/dist/core/conversation-recovery.d.ts +0 -9
  80. package/dist/core/conversation-recovery.d.ts.map +0 -1
  81. package/dist/core/conversation-recovery.js +0 -15
  82. package/dist/core/conversation-recovery.js.map +0 -1
  83. package/dist/core/debug-workflow.d.ts +0 -9
  84. package/dist/core/debug-workflow.d.ts.map +0 -1
  85. package/dist/core/debug-workflow.js +0 -19
  86. package/dist/core/debug-workflow.js.map +0 -1
  87. package/dist/core/docs-scraper.d.ts +0 -40
  88. package/dist/core/docs-scraper.d.ts.map +0 -1
  89. package/dist/core/docs-scraper.js +0 -386
  90. package/dist/core/docs-scraper.js.map +0 -1
  91. package/dist/core/editor.d.ts +0 -87
  92. package/dist/core/editor.d.ts.map +0 -1
  93. package/dist/core/editor.js +0 -377
  94. package/dist/core/editor.js.map +0 -1
  95. package/dist/core/export.d.ts +0 -11
  96. package/dist/core/export.d.ts.map +0 -1
  97. package/dist/core/export.js +0 -54
  98. package/dist/core/export.js.map +0 -1
  99. package/dist/core/history-manager.d.ts +0 -75
  100. package/dist/core/history-manager.d.ts.map +0 -1
  101. package/dist/core/history-manager.js +0 -146
  102. package/dist/core/history-manager.js.map +0 -1
  103. package/dist/core/marketplace-client.d.ts +0 -52
  104. package/dist/core/marketplace-client.d.ts.map +0 -1
  105. package/dist/core/marketplace-client.js +0 -71
  106. package/dist/core/marketplace-client.js.map +0 -1
  107. package/dist/core/mcp/mcp-config.d.ts +0 -10
  108. package/dist/core/mcp/mcp-config.d.ts.map +0 -1
  109. package/dist/core/mcp/mcp-config.js +0 -70
  110. package/dist/core/mcp/mcp-config.js.map +0 -1
  111. package/dist/core/mcp/mcp-policy.d.ts +0 -17
  112. package/dist/core/mcp/mcp-policy.d.ts.map +0 -1
  113. package/dist/core/mcp/mcp-policy.js +0 -56
  114. package/dist/core/mcp/mcp-policy.js.map +0 -1
  115. package/dist/core/mcp/oauth-flow.d.ts +0 -30
  116. package/dist/core/mcp/oauth-flow.d.ts.map +0 -1
  117. package/dist/core/mcp/oauth-flow.js +0 -230
  118. package/dist/core/mcp/oauth-flow.js.map +0 -1
  119. package/dist/core/mcp/oauth-store.d.ts +0 -13
  120. package/dist/core/mcp/oauth-store.d.ts.map +0 -1
  121. package/dist/core/mcp/oauth-store.js +0 -68
  122. package/dist/core/mcp/oauth-store.js.map +0 -1
  123. package/dist/core/mcp/resolve-mcp-servers.d.ts +0 -16
  124. package/dist/core/mcp/resolve-mcp-servers.d.ts.map +0 -1
  125. package/dist/core/mcp/resolve-mcp-servers.js +0 -83
  126. package/dist/core/mcp/resolve-mcp-servers.js.map +0 -1
  127. package/dist/core/mcp-client.d.ts +0 -99
  128. package/dist/core/mcp-client.d.ts.map +0 -1
  129. package/dist/core/mcp-client.js +0 -315
  130. package/dist/core/mcp-client.js.map +0 -1
  131. package/dist/core/memory-promotions.d.ts +0 -15
  132. package/dist/core/memory-promotions.d.ts.map +0 -1
  133. package/dist/core/memory-promotions.js +0 -38
  134. package/dist/core/memory-promotions.js.map +0 -1
  135. package/dist/core/memory.d.ts +0 -32
  136. package/dist/core/memory.d.ts.map +0 -1
  137. package/dist/core/memory.js +0 -121
  138. package/dist/core/memory.js.map +0 -1
  139. package/dist/core/modes.d.ts +0 -432
  140. package/dist/core/modes.d.ts.map +0 -1
  141. package/dist/core/modes.js +0 -1088
  142. package/dist/core/modes.js.map +0 -1
  143. package/dist/core/pattern-miner.d.ts +0 -43
  144. package/dist/core/pattern-miner.d.ts.map +0 -1
  145. package/dist/core/pattern-miner.js +0 -123
  146. package/dist/core/pattern-miner.js.map +0 -1
  147. package/dist/core/permission-store.d.ts +0 -15
  148. package/dist/core/permission-store.d.ts.map +0 -1
  149. package/dist/core/permission-store.js +0 -30
  150. package/dist/core/permission-store.js.map +0 -1
  151. package/dist/core/permissions.d.ts +0 -33
  152. package/dist/core/permissions.d.ts.map +0 -1
  153. package/dist/core/permissions.js +0 -141
  154. package/dist/core/permissions.js.map +0 -1
  155. package/dist/core/plan-artifacts.d.ts +0 -10
  156. package/dist/core/plan-artifacts.d.ts.map +0 -1
  157. package/dist/core/plan-artifacts.js +0 -60
  158. package/dist/core/plan-artifacts.js.map +0 -1
  159. package/dist/core/plan-session.d.ts +0 -25
  160. package/dist/core/plan-session.d.ts.map +0 -1
  161. package/dist/core/plan-session.js +0 -99
  162. package/dist/core/plan-session.js.map +0 -1
  163. package/dist/core/planMode.d.ts +0 -51
  164. package/dist/core/planMode.d.ts.map +0 -1
  165. package/dist/core/planMode.js +0 -245
  166. package/dist/core/planMode.js.map +0 -1
  167. package/dist/core/plugins.d.ts +0 -96
  168. package/dist/core/plugins.d.ts.map +0 -1
  169. package/dist/core/plugins.js +0 -202
  170. package/dist/core/plugins.js.map +0 -1
  171. package/dist/core/session-bridge.d.ts +0 -128
  172. package/dist/core/session-bridge.d.ts.map +0 -1
  173. package/dist/core/session-bridge.js +0 -328
  174. package/dist/core/session-bridge.js.map +0 -1
  175. package/dist/core/session-manager.d.ts +0 -80
  176. package/dist/core/session-manager.d.ts.map +0 -1
  177. package/dist/core/session-manager.js +0 -166
  178. package/dist/core/session-manager.js.map +0 -1
  179. package/dist/core/session-memory.d.ts +0 -45
  180. package/dist/core/session-memory.d.ts.map +0 -1
  181. package/dist/core/session-memory.js +0 -103
  182. package/dist/core/session-memory.js.map +0 -1
  183. package/dist/core/skill-selection.d.ts +0 -36
  184. package/dist/core/skill-selection.d.ts.map +0 -1
  185. package/dist/core/skill-selection.js +0 -172
  186. package/dist/core/skill-selection.js.map +0 -1
  187. package/dist/core/skills-sh-client.d.ts +0 -19
  188. package/dist/core/skills-sh-client.d.ts.map +0 -1
  189. package/dist/core/skills-sh-client.js +0 -75
  190. package/dist/core/skills-sh-client.js.map +0 -1
  191. package/dist/core/skills.d.ts +0 -97
  192. package/dist/core/skills.d.ts.map +0 -1
  193. package/dist/core/skills.js +0 -339
  194. package/dist/core/skills.js.map +0 -1
  195. package/dist/core/swarm.d.ts +0 -34
  196. package/dist/core/swarm.d.ts.map +0 -1
  197. package/dist/core/swarm.js +0 -111
  198. package/dist/core/swarm.js.map +0 -1
  199. package/dist/core/task-status.d.ts +0 -13
  200. package/dist/core/task-status.d.ts.map +0 -1
  201. package/dist/core/task-status.js +0 -17
  202. package/dist/core/task-status.js.map +0 -1
  203. package/dist/core/tool-orchestrator.d.ts +0 -30
  204. package/dist/core/tool-orchestrator.d.ts.map +0 -1
  205. package/dist/core/tool-orchestrator.js +0 -89
  206. package/dist/core/tool-orchestrator.js.map +0 -1
  207. package/dist/core/tools.d.ts +0 -462
  208. package/dist/core/tools.d.ts.map +0 -1
  209. package/dist/core/tools.js +0 -2916
  210. package/dist/core/tools.js.map +0 -1
  211. package/dist/core/transcript-cleanup.d.ts +0 -8
  212. package/dist/core/transcript-cleanup.d.ts.map +0 -1
  213. package/dist/core/transcript-cleanup.js +0 -52
  214. package/dist/core/transcript-cleanup.js.map +0 -1
  215. package/dist/core/visual-feedback.d.ts +0 -20
  216. package/dist/core/visual-feedback.d.ts.map +0 -1
  217. package/dist/core/visual-feedback.js +0 -117
  218. package/dist/core/visual-feedback.js.map +0 -1
  219. package/dist/tools/browser.d.ts +0 -120
  220. package/dist/tools/browser.d.ts.map +0 -1
  221. package/dist/tools/browser.js +0 -439
  222. package/dist/tools/browser.js.map +0 -1
  223. package/dist/tools/test-generator.d.ts +0 -157
  224. package/dist/tools/test-generator.d.ts.map +0 -1
  225. package/dist/tools/test-generator.js +0 -893
  226. package/dist/tools/test-generator.js.map +0 -1
  227. package/dist/tui/InkApp.d.ts +0 -21
  228. package/dist/tui/InkApp.d.ts.map +0 -1
  229. package/dist/tui/InkApp.js +0 -146
  230. package/dist/tui/InkApp.js.map +0 -1
  231. package/dist/tui/MarkdownMessage.d.ts +0 -16
  232. package/dist/tui/MarkdownMessage.d.ts.map +0 -1
  233. package/dist/tui/MarkdownMessage.js +0 -63
  234. package/dist/tui/MarkdownMessage.js.map +0 -1
  235. package/dist/tui/blessed-chat.d.ts +0 -9
  236. package/dist/tui/blessed-chat.d.ts.map +0 -1
  237. package/dist/tui/blessed-chat.js +0 -887
  238. package/dist/tui/blessed-chat.js.map +0 -1
  239. package/dist/tui/markdown-to-blessed.d.ts +0 -6
  240. package/dist/tui/markdown-to-blessed.d.ts.map +0 -1
  241. package/dist/tui/markdown-to-blessed.js +0 -26
  242. package/dist/tui/markdown-to-blessed.js.map +0 -1
  243. package/dist/ui/ink/App.d.ts +0 -25
  244. package/dist/ui/ink/App.d.ts.map +0 -1
  245. package/dist/ui/ink/App.js +0 -372
  246. package/dist/ui/ink/App.js.map +0 -1
  247. package/dist/utils/at-references.d.ts +0 -14
  248. package/dist/utils/at-references.d.ts.map +0 -1
  249. package/dist/utils/at-references.js +0 -47
  250. package/dist/utils/at-references.js.map +0 -1
  251. package/dist/utils/auto-memory.d.ts +0 -24
  252. package/dist/utils/auto-memory.d.ts.map +0 -1
  253. package/dist/utils/auto-memory.js +0 -153
  254. package/dist/utils/auto-memory.js.map +0 -1
  255. package/dist/utils/git.d.ts +0 -89
  256. package/dist/utils/git.d.ts.map +0 -1
  257. package/dist/utils/git.js +0 -444
  258. package/dist/utils/git.js.map +0 -1
  259. package/dist/utils/mcp-servers-file.d.ts +0 -46
  260. package/dist/utils/mcp-servers-file.d.ts.map +0 -1
  261. package/dist/utils/mcp-servers-file.js +0 -212
  262. package/dist/utils/mcp-servers-file.js.map +0 -1
  263. package/dist/utils/safety.d.ts +0 -60
  264. package/dist/utils/safety.d.ts.map +0 -1
  265. package/dist/utils/safety.js +0 -254
  266. package/dist/utils/safety.js.map +0 -1
  267. package/dist/utils/smithery.d.ts +0 -25
  268. package/dist/utils/smithery.d.ts.map +0 -1
  269. package/dist/utils/smithery.js +0 -50
  270. package/dist/utils/smithery.js.map +0 -1
  271. package/dist/utils/testRunner.d.ts +0 -44
  272. package/dist/utils/testRunner.d.ts.map +0 -1
  273. package/dist/utils/testRunner.js +0 -270
  274. package/dist/utils/testRunner.js.map +0 -1
  275. package/dist/webui/server.d.ts +0 -99
  276. package/dist/webui/server.d.ts.map +0 -1
  277. package/dist/webui/server.js +0 -2619
  278. package/dist/webui/server.js.map +0 -1
  279. package/webui-dist/assets/index-CSla6Lzy.css +0 -32
  280. package/webui-dist/assets/index-G_Z4gzPy.js +0 -457
  281. package/webui-dist/assets/index-G_Z4gzPy.js.map +0 -1
  282. package/webui-dist/assets/xterm-Da5jL1MD.js +0 -10
  283. package/webui-dist/assets/xterm-Da5jL1MD.js.map +0 -1
  284. package/webui-dist/assets/xterm-addon-fit-CMeqLIvm.js +0 -2
  285. package/webui-dist/assets/xterm-addon-fit-CMeqLIvm.js.map +0 -1
  286. package/webui-dist/assets/xterm-addon-web-links-D6m8jNVE.js +0 -2
  287. package/webui-dist/assets/xterm-addon-web-links-D6m8jNVE.js.map +0 -1
  288. package/webui-dist/index.html +0 -15
@@ -1,146 +0,0 @@
1
- /**
2
- * Chat History Manager
3
- *
4
- * Manages persistent chat conversations stored per-project in:
5
- * ~/.xibecode/history/{project-hash}/
6
- *
7
- * Each conversation is stored as a JSON file with full message history.
8
- */
9
- import * as fs from 'fs/promises';
10
- import * as path from 'path';
11
- import * as crypto from 'crypto';
12
- import * as os from 'os';
13
- export class HistoryManager {
14
- workingDir;
15
- baseDir;
16
- projectDir;
17
- constructor(workingDir) {
18
- this.workingDir = workingDir;
19
- this.baseDir = path.join(os.homedir(), '.xibecode', 'history');
20
- this.projectDir = path.join(this.baseDir, this.getProjectHash());
21
- }
22
- /**
23
- * Generate a safe directory name from the project path
24
- */
25
- getProjectHash() {
26
- // Use a short hash of the absolute path + the project name for readability
27
- const absPath = path.resolve(this.workingDir);
28
- const hash = crypto.createHash('sha256').update(absPath).digest('hex').substring(0, 12);
29
- const projectName = path.basename(absPath).replace(/[^a-zA-Z0-9_-]/g, '_');
30
- return `${projectName}_${hash}`;
31
- }
32
- /**
33
- * Ensure the history directory exists
34
- */
35
- async ensureDir() {
36
- await fs.mkdir(this.projectDir, { recursive: true });
37
- }
38
- /**
39
- * Generate a title from the first user message
40
- */
41
- static summarizeTitle(firstMessage) {
42
- // Take the first sentence or first 80 chars
43
- const cleaned = firstMessage.replace(/\n/g, ' ').trim();
44
- const firstSentence = cleaned.match(/^[^.!?]*[.!?]/);
45
- if (firstSentence && firstSentence[0].length <= 80) {
46
- return firstSentence[0].trim();
47
- }
48
- if (cleaned.length <= 80) {
49
- return cleaned;
50
- }
51
- return cleaned.substring(0, 77) + '...';
52
- }
53
- /**
54
- * Save a conversation (create or update)
55
- */
56
- async save(conversation) {
57
- await this.ensureDir();
58
- const filePath = path.join(this.projectDir, `${conversation.id}.json`);
59
- conversation.updated = new Date().toISOString();
60
- await fs.writeFile(filePath, JSON.stringify(conversation, null, 2), 'utf-8');
61
- }
62
- /**
63
- * Load a conversation by ID
64
- */
65
- async load(id) {
66
- try {
67
- const filePath = path.join(this.projectDir, `${id}.json`);
68
- const content = await fs.readFile(filePath, 'utf-8');
69
- return JSON.parse(content);
70
- }
71
- catch {
72
- return null;
73
- }
74
- }
75
- /**
76
- * List all conversations for this project (sorted by updated, newest first)
77
- */
78
- async list() {
79
- await this.ensureDir();
80
- try {
81
- const files = await fs.readdir(this.projectDir);
82
- const summaries = [];
83
- const jsonFiles = files.filter((file) => file.endsWith('.json'));
84
- // Bounded concurrency to speed up reading many session files
85
- const CONCURRENCY_LIMIT = 20;
86
- for (let i = 0; i < jsonFiles.length; i += CONCURRENCY_LIMIT) {
87
- const chunk = jsonFiles.slice(i, i + CONCURRENCY_LIMIT);
88
- await Promise.all(chunk.map(async (file) => {
89
- try {
90
- const filePath = path.join(this.projectDir, file);
91
- const content = await fs.readFile(filePath, 'utf-8');
92
- const conv = JSON.parse(content);
93
- summaries.push({
94
- id: conv.id,
95
- title: conv.title,
96
- created: conv.created,
97
- updated: conv.updated,
98
- messageCount: conv.messages.length,
99
- model: conv.model,
100
- });
101
- }
102
- catch {
103
- // Skip corrupted files
104
- }
105
- }));
106
- }
107
- // Sort by updated time, newest first
108
- summaries.sort((a, b) => new Date(b.updated).getTime() - new Date(a.updated).getTime());
109
- return summaries;
110
- }
111
- catch {
112
- return [];
113
- }
114
- }
115
- /**
116
- * Delete a conversation
117
- */
118
- async delete(id) {
119
- try {
120
- const filePath = path.join(this.projectDir, `${id}.json`);
121
- await fs.unlink(filePath);
122
- return true;
123
- }
124
- catch {
125
- return false;
126
- }
127
- }
128
- /**
129
- * Create a new conversation with a generated ID
130
- */
131
- static createConversation(projectPath, firstMessage, model = '', mode = 'agent') {
132
- const now = new Date().toISOString();
133
- return {
134
- id: `conv_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`,
135
- title: HistoryManager.summarizeTitle(firstMessage),
136
- projectPath,
137
- projectName: path.basename(projectPath),
138
- created: now,
139
- updated: now,
140
- model,
141
- mode,
142
- messages: [],
143
- };
144
- }
145
- }
146
- //# sourceMappingURL=history-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"history-manager.js","sourceRoot":"","sources":["../../src/core/history-manager.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- /**
2
- * Skills Marketplace API Client
3
- * Connects to https://skills.xibeai.in for searching, downloading, and uploading skills.
4
- */
5
- export interface MarketplaceSkillResult {
6
- id: string;
7
- name: string;
8
- description: string;
9
- keywords: string[];
10
- categories: string[];
11
- qualityScore: number;
12
- downloads: number;
13
- downloadUrl: string;
14
- }
15
- export interface MarketplaceSearchResponse {
16
- type: string;
17
- query: string;
18
- results: MarketplaceSkillResult[];
19
- count: number;
20
- }
21
- export interface MarketplaceUploadResponse {
22
- success: boolean;
23
- skillId: string;
24
- skill: {
25
- id: string;
26
- name: string;
27
- description: string;
28
- keywords: string[];
29
- categories: string[];
30
- };
31
- }
32
- export declare class MarketplaceClient {
33
- private baseUrl;
34
- constructor(baseUrl?: string);
35
- /**
36
- * Search the marketplace for skills
37
- */
38
- searchSkills(query?: string, limit?: number): Promise<MarketplaceSearchResponse>;
39
- /**
40
- * Download skill content by ID (returns raw markdown)
41
- */
42
- getSkillContent(id: string): Promise<{
43
- content: string;
44
- name: string;
45
- author: string;
46
- }>;
47
- /**
48
- * Upload a skill to the marketplace
49
- */
50
- uploadSkill(content: string, skillName?: string, authorDescription?: string): Promise<MarketplaceUploadResponse>;
51
- }
52
- //# sourceMappingURL=marketplace-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marketplace-client.d.ts","sourceRoot":"","sources":["../../src/core/marketplace-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,sBAAsB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACH,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,UAAU,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;CACL;AAED,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAA6B;IAIlD;;OAEG;IACG,YAAY,CAAC,KAAK,GAAE,MAAW,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAe9F;;OAEG;IACG,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAmB7F;;OAEG;IACG,WAAW,CACb,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,yBAAyB,CAAC;CA2BxC"}
@@ -1,71 +0,0 @@
1
- /**
2
- * Skills Marketplace API Client
3
- * Connects to https://skills.xibeai.in for searching, downloading, and uploading skills.
4
- */
5
- const MARKETPLACE_BASE_URL = 'https://skills.xibeai.in';
6
- const UPLOAD_AUTHOR = 'Xibecode';
7
- const UPLOAD_EMAIL = 'xibecode@ai.in';
8
- export class MarketplaceClient {
9
- baseUrl;
10
- constructor(baseUrl = MARKETPLACE_BASE_URL) {
11
- this.baseUrl = baseUrl;
12
- }
13
- /**
14
- * Search the marketplace for skills
15
- */
16
- async searchSkills(query = '', limit = 10) {
17
- const url = `${this.baseUrl}/api/mcp/skills/search?q=${encodeURIComponent(query)}&limit=${limit}`;
18
- const response = await fetch(url, {
19
- method: 'GET',
20
- headers: { 'Accept': 'application/json' },
21
- });
22
- if (!response.ok) {
23
- throw new Error(`Marketplace search failed: ${response.status} ${response.statusText}`);
24
- }
25
- return await response.json();
26
- }
27
- /**
28
- * Download skill content by ID (returns raw markdown)
29
- */
30
- async getSkillContent(id) {
31
- const url = `${this.baseUrl}/api/mcp/skills/${id}/content`;
32
- const response = await fetch(url, {
33
- method: 'GET',
34
- headers: { 'Accept': 'text/plain' },
35
- });
36
- if (!response.ok) {
37
- throw new Error(`Failed to download skill: ${response.status} ${response.statusText}`);
38
- }
39
- const content = await response.text();
40
- const name = response.headers.get('X-Skill-Name') || 'unknown';
41
- const author = response.headers.get('X-Skill-Author') || 'unknown';
42
- return { content, name, author };
43
- }
44
- /**
45
- * Upload a skill to the marketplace
46
- */
47
- async uploadSkill(content, skillName, authorDescription) {
48
- const url = `${this.baseUrl}/api/skills/upload`;
49
- const body = {
50
- content,
51
- authorName: UPLOAD_AUTHOR,
52
- authorEmail: UPLOAD_EMAIL,
53
- authorDescription: authorDescription || 'XibeCode AI Coding Assistant',
54
- skillName,
55
- };
56
- const response = await fetch(url, {
57
- method: 'POST',
58
- headers: {
59
- 'Content-Type': 'application/json',
60
- 'Accept': 'application/json',
61
- },
62
- body: JSON.stringify(body),
63
- });
64
- if (!response.ok) {
65
- const errorBody = await response.text();
66
- throw new Error(`Marketplace upload failed (${response.status}): ${errorBody}`);
67
- }
68
- return await response.json();
69
- }
70
- }
71
- //# sourceMappingURL=marketplace-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"marketplace-client.js","sourceRoot":"","sources":["../../src/core/marketplace-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AACxD,MAAM,aAAa,GAAG,UAAU,CAAC;AACjC,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAgCtC,MAAM,OAAO,iBAAiB;IAClB,OAAO,CAAS;IAExB,YAAY,UAAkB,oBAAoB;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,EAAE,QAAgB,EAAE;QACrD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,4BAA4B,kBAAkB,CAAC,KAAK,CAAC,UAAU,KAAK,EAAE,CAAC;QAElG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE;SAC5C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAA+B,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,EAAU;QAC5B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,mBAAmB,EAAE,UAAU,CAAC;QAE3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE;SACtC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3F,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC;QAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,SAAS,CAAC;QAEnE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACb,OAAe,EACf,SAAkB,EAClB,iBAA0B;QAE1B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,oBAAoB,CAAC;QAEhD,MAAM,IAAI,GAAG;YACT,OAAO;YACP,UAAU,EAAE,aAAa;YACzB,WAAW,EAAE,YAAY;YACzB,iBAAiB,EAAE,iBAAiB,IAAI,8BAA8B;YACtE,SAAS;SACZ,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC9B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,kBAAkB;aAC/B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC7B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,MAAM,SAAS,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAA+B,CAAC;IAC9D,CAAC;CACJ"}
@@ -1,10 +0,0 @@
1
- import { MCPServerConfig, MCPServersConfig, MCPServerConfigLegacy } from '../../utils/config.js';
2
- export type McpServersJson = {
3
- mcpServers: Record<string, MCPServerConfig>;
4
- } | {
5
- servers: MCPServerConfigLegacy[];
6
- };
7
- export declare function normalizeMcpServersConfig(raw: unknown, sourceLabel: string): MCPServersConfig;
8
- export declare function readMcpServersFromFile(filePath: string, sourceLabel?: string): Promise<MCPServersConfig>;
9
- export declare function findProjectMcpConfigFiles(startDir: string): Promise<string[]>;
10
- //# sourceMappingURL=mcp-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/mcp-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEjG,MAAM,MAAM,cAAc,GACtB;IAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;CAAE,GAC/C;IAAE,OAAO,EAAE,qBAAqB,EAAE,CAAA;CAAE,CAAC;AAEzC,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAwC7F;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAK9G;AAED,wBAAsB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBnF"}
@@ -1,70 +0,0 @@
1
- import * as fs from 'fs/promises';
2
- import * as path from 'path';
3
- export function normalizeMcpServersConfig(raw, sourceLabel) {
4
- const data = raw;
5
- // New object-based format
6
- if (data && typeof data === 'object' && data.mcpServers && typeof data.mcpServers === 'object' && !Array.isArray(data.mcpServers)) {
7
- const validated = {};
8
- for (const [serverName, serverConfig] of Object.entries(data.mcpServers)) {
9
- const cfg = serverConfig;
10
- if (!cfg?.command || typeof cfg.command !== 'string') {
11
- throw new Error(`[${sourceLabel}] Invalid MCP server "${serverName}": missing required field "command"`);
12
- }
13
- validated[serverName] = {
14
- command: cfg.command,
15
- args: Array.isArray(cfg.args) ? cfg.args.map(String) : undefined,
16
- env: cfg.env && typeof cfg.env === 'object' ? cfg.env : undefined,
17
- };
18
- }
19
- return validated;
20
- }
21
- // Legacy array-based format
22
- if (data && typeof data === 'object' && Array.isArray(data.servers)) {
23
- const migrated = {};
24
- for (const server of data.servers) {
25
- if (!server?.name || !server?.command) {
26
- throw new Error(`[${sourceLabel}] Invalid legacy MCP server entry: missing required fields (name, command)`);
27
- }
28
- if (server.transport && server.transport !== 'stdio') {
29
- throw new Error(`[${sourceLabel}] Invalid legacy MCP server "${server.name}": unsupported transport "${server.transport}"`);
30
- }
31
- migrated[server.name] = {
32
- command: server.command,
33
- args: server.args,
34
- env: server.env,
35
- };
36
- }
37
- return migrated;
38
- }
39
- throw new Error(`[${sourceLabel}] Invalid MCP config: expected {mcpServers:{...}} or legacy {servers:[...]}`);
40
- }
41
- export async function readMcpServersFromFile(filePath, sourceLabel) {
42
- const label = sourceLabel || filePath;
43
- const content = await fs.readFile(filePath, 'utf-8');
44
- const json = JSON.parse(content);
45
- return normalizeMcpServersConfig(json, label);
46
- }
47
- export async function findProjectMcpConfigFiles(startDir) {
48
- // Walk up to filesystem root collecting .mcp.json; return in root -> leaf order.
49
- const files = [];
50
- let current = path.resolve(startDir);
51
- while (true) {
52
- files.push(path.join(current, '.mcp.json'));
53
- const parent = path.dirname(current);
54
- if (parent === current)
55
- break;
56
- current = parent;
57
- }
58
- const existing = [];
59
- for (const fp of files.reverse()) {
60
- try {
61
- await fs.access(fp);
62
- existing.push(fp);
63
- }
64
- catch {
65
- // ignore
66
- }
67
- }
68
- return existing;
69
- }
70
- //# sourceMappingURL=mcp-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../src/core/mcp/mcp-config.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { MCPServersConfig, type MCPServerConfig } from '../../utils/config.js';
2
- export type McpServerMatchPattern = string;
3
- export declare function isAllowedByPolicy(params: {
4
- serverName: string;
5
- serverConfig: MCPServerConfig;
6
- allowed?: McpServerMatchPattern[];
7
- denied?: McpServerMatchPattern[];
8
- allowManagedOnly?: boolean;
9
- isManagedSource?: boolean;
10
- }): boolean;
11
- export declare function filterMcpServersByPolicy(servers: MCPServersConfig, policy: {
12
- allowed?: McpServerMatchPattern[];
13
- denied?: McpServerMatchPattern[];
14
- allowManagedOnly?: boolean;
15
- isManagedSource?: boolean;
16
- }): MCPServersConfig;
17
- //# sourceMappingURL=mcp-policy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-policy.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/mcp-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAc3C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAsBV;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE;IACN,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACA,gBAAgB,CAiBlB"}
@@ -1,56 +0,0 @@
1
- function wildcardToRegExp(pattern) {
2
- const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*');
3
- return new RegExp(`^${escaped}$`, 'i');
4
- }
5
- function matchesPattern(value, pattern) {
6
- if (!pattern)
7
- return false;
8
- if (pattern === value)
9
- return true;
10
- if (pattern.includes('*'))
11
- return wildcardToRegExp(pattern).test(value);
12
- return value.toLowerCase() === pattern.toLowerCase();
13
- }
14
- export function isAllowedByPolicy(params) {
15
- const { serverName, serverConfig, allowed, denied, allowManagedOnly, isManagedSource } = params;
16
- if (allowManagedOnly && !isManagedSource)
17
- return false;
18
- const denyList = denied || [];
19
- for (const pat of denyList) {
20
- if (pat.startsWith('name:') && matchesPattern(serverName, pat.slice('name:'.length)))
21
- return false;
22
- if (pat.startsWith('command:') && matchesPattern(serverConfig.command, pat.slice('command:'.length)))
23
- return false;
24
- if (!pat.includes(':') && matchesPattern(serverName, pat))
25
- return false;
26
- }
27
- const allowList = allowed || [];
28
- if (allowList.length === 0)
29
- return true;
30
- for (const pat of allowList) {
31
- if (pat.startsWith('name:') && matchesPattern(serverName, pat.slice('name:'.length)))
32
- return true;
33
- if (pat.startsWith('command:') && matchesPattern(serverConfig.command, pat.slice('command:'.length)))
34
- return true;
35
- if (!pat.includes(':') && matchesPattern(serverName, pat))
36
- return true;
37
- }
38
- return false;
39
- }
40
- export function filterMcpServersByPolicy(servers, policy) {
41
- const out = {};
42
- for (const [name, cfg] of Object.entries(servers)) {
43
- if (isAllowedByPolicy({
44
- serverName: name,
45
- serverConfig: cfg,
46
- allowed: policy.allowed,
47
- denied: policy.denied,
48
- allowManagedOnly: policy.allowManagedOnly,
49
- isManagedSource: policy.isManagedSource,
50
- })) {
51
- out[name] = cfg;
52
- }
53
- }
54
- return out;
55
- }
56
- //# sourceMappingURL=mcp-policy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-policy.js","sourceRoot":"","sources":["../../../src/core/mcp/mcp-policy.ts"],"names":[],"mappings":"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"}
@@ -1,30 +0,0 @@
1
- import type { MCPServerConfig } from '../../utils/config.js';
2
- export interface OAuthStartResult {
3
- authUrl: string;
4
- redirectUri: string;
5
- state: string;
6
- note: string;
7
- }
8
- export interface OAuthFinishResult {
9
- success: boolean;
10
- message: string;
11
- }
12
- export interface PendingOAuth {
13
- serverName: string;
14
- codeVerifier: string;
15
- state: string;
16
- redirectUri: string;
17
- tokenUrl: string;
18
- clientId: string;
19
- scopes: string[];
20
- }
21
- export declare class McpOAuthFlowManager {
22
- private pending;
23
- getPending(serverName: string): PendingOAuth | null;
24
- start(serverName: string, cfg: MCPServerConfig): Promise<OAuthStartResult>;
25
- finish(serverName: string, callbackUrl: string): Promise<OAuthFinishResult>;
26
- getValidAccessToken(serverName: string, cfg: MCPServerConfig): Promise<string | null>;
27
- private exchangeCode;
28
- private refreshToken;
29
- }
30
- //# sourceMappingURL=oauth-flow.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth-flow.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/oauth-flow.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAwDD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAmC;IAElD,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAI7C,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6F1E,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAc3E,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YAiB7E,YAAY;YAiCZ,YAAY;CAwB3B"}