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
package/dist/utils/git.js DELETED
@@ -1,444 +0,0 @@
1
- import { exec } from 'child_process';
2
- import { promisify } from 'util';
3
- const execAsync = promisify(exec);
4
- export class GitUtils {
5
- workingDir;
6
- constructor(workingDir = process.cwd()) {
7
- this.workingDir = workingDir;
8
- }
9
- /**
10
- * Check if the current directory is inside a git repository
11
- */
12
- async isGitRepository() {
13
- try {
14
- const { stdout } = await execAsync('git rev-parse --git-dir', {
15
- cwd: this.workingDir,
16
- timeout: 5000,
17
- });
18
- return stdout.trim().length > 0;
19
- }
20
- catch {
21
- return false;
22
- }
23
- }
24
- /**
25
- * Get current git status with detailed information
26
- */
27
- async getStatus() {
28
- const isRepo = await this.isGitRepository();
29
- if (!isRepo) {
30
- return { isGitRepo: false };
31
- }
32
- try {
33
- // Get branch name
34
- const branchResult = await execAsync('git branch --show-current', {
35
- cwd: this.workingDir,
36
- timeout: 5000,
37
- });
38
- const branch = branchResult.stdout.trim();
39
- // Get status porcelain for parsing
40
- const statusResult = await execAsync('git status --porcelain', {
41
- cwd: this.workingDir,
42
- timeout: 5000,
43
- });
44
- const staged = [];
45
- const unstaged = [];
46
- const untracked = [];
47
- const lines = statusResult.stdout.trim().split('\n').filter(l => l);
48
- for (const line of lines) {
49
- const status = line.substring(0, 2);
50
- const file = line.substring(3);
51
- if (status[0] !== ' ' && status[0] !== '?') {
52
- staged.push(file);
53
- }
54
- if (status[1] !== ' ' && status[1] !== '?') {
55
- unstaged.push(file);
56
- }
57
- if (status === '??') {
58
- untracked.push(file);
59
- }
60
- }
61
- const isClean = lines.length === 0;
62
- // Get ahead/behind info
63
- let ahead = 0;
64
- let behind = 0;
65
- try {
66
- const revListResult = await execAsync('git rev-list --left-right --count HEAD...@{upstream}', {
67
- cwd: this.workingDir,
68
- timeout: 5000,
69
- });
70
- const [aheadStr, behindStr] = revListResult.stdout.trim().split('\t');
71
- ahead = parseInt(aheadStr, 10) || 0;
72
- behind = parseInt(behindStr, 10) || 0;
73
- }
74
- catch {
75
- // No upstream or other error, ignore
76
- }
77
- return {
78
- isGitRepo: true,
79
- branch,
80
- isClean,
81
- staged,
82
- unstaged,
83
- untracked,
84
- ahead,
85
- behind,
86
- };
87
- }
88
- catch (error) {
89
- return {
90
- isGitRepo: true,
91
- branch: undefined,
92
- };
93
- }
94
- }
95
- /**
96
- * Get list of changed files (staged + unstaged)
97
- */
98
- async getChangedFiles() {
99
- const status = await this.getStatus();
100
- if (!status.isGitRepo)
101
- return [];
102
- const changed = new Set();
103
- status.staged?.forEach(f => changed.add(f));
104
- status.unstaged?.forEach(f => changed.add(f));
105
- return Array.from(changed);
106
- }
107
- /**
108
- * Get diff summary with line count statistics
109
- */
110
- async getDiffSummary(target = 'HEAD') {
111
- const isRepo = await this.isGitRepository();
112
- if (!isRepo) {
113
- return { files: [], totalInsertions: 0, totalDeletions: 0, totalFiles: 0 };
114
- }
115
- try {
116
- const { stdout } = await execAsync(`git diff --numstat ${target}`, {
117
- cwd: this.workingDir,
118
- timeout: 10000,
119
- });
120
- const files = [];
121
- let totalInsertions = 0;
122
- let totalDeletions = 0;
123
- const lines = stdout.trim().split('\n').filter(l => l);
124
- for (const line of lines) {
125
- const [insertions, deletions, filepath] = line.split('\t');
126
- const ins = parseInt(insertions, 10) || 0;
127
- const del = parseInt(deletions, 10) || 0;
128
- files.push({
129
- path: filepath,
130
- insertions: ins,
131
- deletions: del,
132
- changes: ins + del,
133
- });
134
- totalInsertions += ins;
135
- totalDeletions += del;
136
- }
137
- return {
138
- files,
139
- totalInsertions,
140
- totalDeletions,
141
- totalFiles: files.length,
142
- };
143
- }
144
- catch (error) {
145
- return { files: [], totalInsertions: 0, totalDeletions: 0, totalFiles: 0 };
146
- }
147
- }
148
- /**
149
- * Get unified diff for a file or entire repo
150
- */
151
- async getUnifiedDiff(filePath, target = 'HEAD') {
152
- const isRepo = await this.isGitRepository();
153
- if (!isRepo)
154
- return '';
155
- try {
156
- const command = filePath
157
- ? `git diff ${target} -- ${filePath}`
158
- : `git diff ${target}`;
159
- const { stdout } = await execAsync(command, {
160
- cwd: this.workingDir,
161
- timeout: 10000,
162
- maxBuffer: 1024 * 1024 * 10,
163
- });
164
- return stdout;
165
- }
166
- catch (error) {
167
- return '';
168
- }
169
- }
170
- /**
171
- * Create a git checkpoint (stash or commit)
172
- */
173
- async createCheckpoint(message, strategy = 'stash') {
174
- const isRepo = await this.isGitRepository();
175
- if (!isRepo) {
176
- return { success: false, error: 'Not a git repository' };
177
- }
178
- try {
179
- const timestamp = new Date();
180
- const fullMessage = `xibecode checkpoint: ${message}`;
181
- if (strategy === 'stash') {
182
- // Create a stash with keep-index to preserve staged files
183
- const { stdout } = await execAsync(`git stash push -u -m "${fullMessage}"`, {
184
- cwd: this.workingDir,
185
- timeout: 30000,
186
- });
187
- // Check if stash was created (git stash says "No local changes" if nothing to stash)
188
- if (stdout.includes('No local changes')) {
189
- return { success: false, error: 'No changes to checkpoint' };
190
- }
191
- // Get the stash id
192
- const stashList = await execAsync('git stash list', {
193
- cwd: this.workingDir,
194
- timeout: 5000,
195
- });
196
- const stashId = stashList.stdout.split('\n')[0]?.split(':')[0] || 'stash@{0}';
197
- return {
198
- success: true,
199
- checkpoint: {
200
- type: 'stash',
201
- id: stashId,
202
- message: fullMessage,
203
- timestamp,
204
- },
205
- };
206
- }
207
- else {
208
- // Create a commit with --no-verify to skip hooks
209
- // First add all changes
210
- await execAsync('git add -A', {
211
- cwd: this.workingDir,
212
- timeout: 10000,
213
- });
214
- const { stdout } = await execAsync(`git commit --no-verify -m "${fullMessage}"`, {
215
- cwd: this.workingDir,
216
- timeout: 30000,
217
- });
218
- // Get the commit hash
219
- const hashResult = await execAsync('git rev-parse HEAD', {
220
- cwd: this.workingDir,
221
- timeout: 5000,
222
- });
223
- const commitHash = hashResult.stdout.trim();
224
- return {
225
- success: true,
226
- checkpoint: {
227
- type: 'commit',
228
- id: commitHash,
229
- message: fullMessage,
230
- timestamp,
231
- },
232
- };
233
- }
234
- }
235
- catch (error) {
236
- return { success: false, error: error.message };
237
- }
238
- }
239
- /**
240
- * Revert to a git checkpoint
241
- */
242
- async revertToCheckpoint(checkpoint, confirm = false) {
243
- if (!confirm) {
244
- return { success: false, error: 'Revert requires explicit confirmation. Set confirm: true' };
245
- }
246
- const isRepo = await this.isGitRepository();
247
- if (!isRepo) {
248
- return { success: false, error: 'Not a git repository' };
249
- }
250
- try {
251
- if (checkpoint.type === 'stash') {
252
- // Apply the stash
253
- await execAsync(`git stash apply ${checkpoint.id}`, {
254
- cwd: this.workingDir,
255
- timeout: 30000,
256
- });
257
- return { success: true };
258
- }
259
- else {
260
- // Reset to commit (soft reset to preserve changes as uncommitted)
261
- await execAsync(`git reset --soft ${checkpoint.id}`, {
262
- cwd: this.workingDir,
263
- timeout: 10000,
264
- });
265
- return { success: true };
266
- }
267
- }
268
- catch (error) {
269
- return { success: false, error: error.message };
270
- }
271
- }
272
- /**
273
- * List recent checkpoints created by XibeCode
274
- */
275
- async listCheckpoints(limit = 10) {
276
- const isRepo = await this.isGitRepository();
277
- if (!isRepo)
278
- return [];
279
- const checkpoints = [];
280
- try {
281
- // Get stashes
282
- const { stdout: stashList } = await execAsync('git stash list', {
283
- cwd: this.workingDir,
284
- timeout: 5000,
285
- });
286
- const stashLines = stashList.trim().split('\n').filter(l => l);
287
- for (const line of stashLines) {
288
- if (line.includes('xibecode checkpoint')) {
289
- const match = line.match(/^(stash@\{(\d+)\}): (.+): (.+)$/);
290
- if (match) {
291
- const [, id, , , message] = match;
292
- checkpoints.push({
293
- type: 'stash',
294
- id,
295
- message,
296
- timestamp: new Date(), // Git stash doesn't expose timestamp easily
297
- });
298
- }
299
- }
300
- }
301
- // Get commits
302
- const { stdout: commitList } = await execAsync(`git log -${limit} --pretty=format:"%H|%s|%cd" --date=iso`, {
303
- cwd: this.workingDir,
304
- timeout: 5000,
305
- });
306
- const commitLines = commitList.trim().split('\n').filter(l => l);
307
- for (const line of commitLines) {
308
- const [hash, message, dateStr] = line.split('|');
309
- if (message.includes('xibecode checkpoint')) {
310
- checkpoints.push({
311
- type: 'commit',
312
- id: hash,
313
- message,
314
- timestamp: new Date(dateStr),
315
- });
316
- }
317
- }
318
- }
319
- catch {
320
- // Ignore errors
321
- }
322
- return checkpoints.slice(0, limit);
323
- }
324
- /**
325
- * Get files changed compared to a specific branch or commit
326
- */
327
- async getChangedFilesSince(target) {
328
- const isRepo = await this.isGitRepository();
329
- if (!isRepo)
330
- return [];
331
- try {
332
- const { stdout } = await execAsync(`git diff --name-only ${target}`, {
333
- cwd: this.workingDir,
334
- timeout: 10000,
335
- });
336
- return stdout.trim().split('\n').filter(l => l);
337
- }
338
- catch {
339
- return [];
340
- }
341
- }
342
- /**
343
- * Commit staged changes with optional AI attribution trailer
344
- */
345
- async commit(message, agentName) {
346
- try {
347
- // Escape double quotes for shell safety
348
- const escapedMessage = message.replace(/"/g, '\\"');
349
- let command = `git commit -m "${escapedMessage}"`;
350
- if (agentName) {
351
- // Add trailer
352
- command += ` --trailer "X-AI-Agent: ${agentName.replace(/"/g, '\\"')}"`;
353
- }
354
- await execAsync(command, { cwd: this.workingDir });
355
- const hashResult = await execAsync('git rev-parse HEAD', { cwd: this.workingDir });
356
- return { success: true, hash: hashResult.stdout.trim() };
357
- }
358
- catch (error) {
359
- return { success: false, error: error.message };
360
- }
361
- }
362
- /**
363
- * Get blame with AI attribution
364
- * Returns a map of line number -> { author, agent, commit }
365
- * simpler string output for now
366
- */
367
- async getBlame(filePath) {
368
- try {
369
- // Use --porcelain for easy parsing (not line-porcelain, standard porcelain is enough for hash+line)
370
- // Actually standard porcelain is weird. --line-porcelain gives full commit info per line.
371
- // Let's stick to --line-porcelain but ignore the commit info since it lacks trailers.
372
- // Or just git blame -l -s (hash only)? No we need line numbers.
373
- // Let's use --porcelain which is:
374
- // hash orig_line final_line group_lines
375
- // author ...
376
- // HEADER fields...
377
- // TAB content
378
- const { stdout } = await execAsync(`git blame --line-porcelain "${filePath}"`, {
379
- cwd: this.workingDir,
380
- maxBuffer: 1024 * 1024 * 50 // 50MB buffer
381
- });
382
- const lines = stdout.split('\n');
383
- const blkLines = [];
384
- const uniqueHashes = new Set();
385
- let currentHash = '';
386
- let currentLineNum = 0;
387
- let currentAuthor = '';
388
- for (let i = 0; i < lines.length; i++) {
389
- const line = lines[i];
390
- if (/^[0-9a-f]{40} \d+ \d+/.test(line)) {
391
- const parts = line.split(' ');
392
- currentHash = parts[0];
393
- currentLineNum = parseInt(parts[2], 10);
394
- uniqueHashes.add(currentHash);
395
- }
396
- else if (line.startsWith('author ')) {
397
- currentAuthor = line.substring(7);
398
- }
399
- else if (line.startsWith('\t')) {
400
- blkLines.push({
401
- hash: currentHash,
402
- lineNum: currentLineNum,
403
- code: line.substring(1),
404
- author: currentAuthor
405
- });
406
- }
407
- }
408
- // Fetch trailers for all hashes
409
- const hashes = Array.from(uniqueHashes);
410
- const agentMap = new Map();
411
- if (hashes.length > 0) {
412
- // Limit to reasonable batch size if needed, but git log can handle many args
413
- // Format: Hash %x09 AgentName
414
- // %(trailers:key=X-AI-Agent,valueonly=true)
415
- const cmd = `git log --no-walk --format="%H%x09%(trailers:key=X-AI-Agent,valueonly=true)" ${hashes.join(' ')}`;
416
- try {
417
- const { stdout: logOut } = await execAsync(cmd, { cwd: this.workingDir });
418
- const logLines = logOut.split('\n');
419
- for (const logLine of logLines) {
420
- const [hash, agent] = logLine.split('\t');
421
- if (hash && agent && agent.trim()) {
422
- agentMap.set(hash, agent.trim());
423
- }
424
- }
425
- }
426
- catch (e) {
427
- // If git log fails (e.g. too many args), we just don't show agents
428
- console.error('Failed to fetch trailers:', e);
429
- }
430
- }
431
- let output = '';
432
- for (const item of blkLines) {
433
- const agent = agentMap.get(item.hash);
434
- const authorLabel = agent ? `🤖 ${agent}` : item.author;
435
- output += `${item.lineNum.toString().padEnd(4)} ${item.hash.substring(0, 7)} (${authorLabel}) ${item.code}\n`;
436
- }
437
- return output;
438
- }
439
- catch (error) {
440
- return `Error running blame: ${error.message}`;
441
- }
442
- }
443
- }
444
- //# sourceMappingURL=git.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- import { MCPServersConfig, MCPServerConfigLegacy } from './config.js';
2
- export interface MCPServersFile {
3
- mcpServers: MCPServersConfig;
4
- }
5
- export interface MCPServersFileLegacy {
6
- servers: MCPServerConfigLegacy[];
7
- }
8
- /**
9
- * Manages MCP servers configuration file
10
- */
11
- export declare class MCPServersFileManager {
12
- private filePath;
13
- constructor();
14
- /**
15
- * Get the path to the MCP servers config file
16
- */
17
- getFilePath(): string;
18
- /**
19
- * Check if the file exists
20
- */
21
- fileExists(): Promise<boolean>;
22
- /**
23
- * Load MCP servers from file
24
- * Supports both new object-based format and legacy array-based format
25
- * Automatically migrates legacy format to new format
26
- */
27
- loadMCPServers(): Promise<MCPServersConfig>;
28
- /**
29
- * Save MCP servers to file
30
- * Uses new object-based format
31
- */
32
- saveMCPServers(servers: MCPServersConfig): Promise<void>;
33
- /**
34
- * Create default config file with examples
35
- */
36
- createDefaultFile(): Promise<void>;
37
- /**
38
- * Validate the file format
39
- * Supports both new object-based and legacy array-based formats
40
- */
41
- validateFile(): Promise<{
42
- valid: boolean;
43
- errors: string[];
44
- }>;
45
- }
46
- //# sourceMappingURL=mcp-servers-file.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp-servers-file.d.ts","sourceRoot":"","sources":["../../src/utils/mcp-servers-file.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEvF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAGD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAS;;IAOzB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IASpC;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;IA+DjD;;;OAGG;IACG,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9D;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAexC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAqFpE"}