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.
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +10 -7
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/diagnostics.js +1 -1
- package/dist/commands/diagnostics.js.map +1 -1
- package/dist/commands/mcp.js +1 -1
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/resume.js +1 -1
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/run-pr.d.ts.map +1 -1
- package/dist/commands/run-pr.js +10 -9
- package/dist/commands/run-pr.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +14 -13
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +3 -2
- package/dist/commands/skills.js.map +1 -1
- package/dist/components/AssistantMarkdown.js +1 -1
- package/dist/components/AssistantMarkdown.js.map +1 -1
- package/dist/ui/claude-style-chat.d.ts.map +1 -1
- package/dist/ui/claude-style-chat.js +12 -10
- package/dist/ui/claude-style-chat.js.map +1 -1
- package/dist/utils/built-in-skills-dir.d.ts +7 -0
- package/dist/utils/built-in-skills-dir.d.ts.map +1 -0
- package/dist/utils/built-in-skills-dir.js +11 -0
- package/dist/utils/built-in-skills-dir.js.map +1 -0
- package/dist/utils/config.d.ts +2 -119
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +3 -88
- package/dist/utils/config.js.map +1 -1
- package/package.json +11 -17
- package/dist/commands/punycode.d.ts +0 -5
- package/dist/commands/punycode.d.ts.map +0 -1
- package/dist/commands/punycode.js +0 -48
- package/dist/commands/punycode.js.map +0 -1
- package/dist/commands/tui.d.ts +0 -9
- package/dist/commands/tui.d.ts.map +0 -1
- package/dist/commands/tui.js +0 -83
- package/dist/commands/tui.js.map +0 -1
- package/dist/core/agent-tool-policies.d.ts +0 -5
- package/dist/core/agent-tool-policies.d.ts.map +0 -1
- package/dist/core/agent-tool-policies.js +0 -18
- package/dist/core/agent-tool-policies.js.map +0 -1
- package/dist/core/agent.d.ts +0 -181
- package/dist/core/agent.d.ts.map +0 -1
- package/dist/core/agent.js +0 -1777
- package/dist/core/agent.js.map +0 -1
- package/dist/core/background-agent.d.ts +0 -23
- package/dist/core/background-agent.d.ts.map +0 -1
- package/dist/core/background-agent.js +0 -175
- package/dist/core/background-agent.js.map +0 -1
- package/dist/core/code-graph.d.ts +0 -18
- package/dist/core/code-graph.d.ts.map +0 -1
- package/dist/core/code-graph.js +0 -105
- package/dist/core/code-graph.js.map +0 -1
- package/dist/core/conflict-solver.d.ts +0 -26
- package/dist/core/conflict-solver.d.ts.map +0 -1
- package/dist/core/conflict-solver.js +0 -108
- package/dist/core/conflict-solver.js.map +0 -1
- package/dist/core/context-compactor.d.ts +0 -10
- package/dist/core/context-compactor.d.ts.map +0 -1
- package/dist/core/context-compactor.js +0 -158
- package/dist/core/context-compactor.js.map +0 -1
- package/dist/core/context-pruner.d.ts +0 -19
- package/dist/core/context-pruner.d.ts.map +0 -1
- package/dist/core/context-pruner.js +0 -103
- package/dist/core/context-pruner.js.map +0 -1
- package/dist/core/context.d.ts +0 -82
- package/dist/core/context.d.ts.map +0 -1
- package/dist/core/context.js +0 -273
- package/dist/core/context.js.map +0 -1
- package/dist/core/conversation-recovery.d.ts +0 -9
- package/dist/core/conversation-recovery.d.ts.map +0 -1
- package/dist/core/conversation-recovery.js +0 -15
- package/dist/core/conversation-recovery.js.map +0 -1
- package/dist/core/debug-workflow.d.ts +0 -9
- package/dist/core/debug-workflow.d.ts.map +0 -1
- package/dist/core/debug-workflow.js +0 -19
- package/dist/core/debug-workflow.js.map +0 -1
- package/dist/core/docs-scraper.d.ts +0 -40
- package/dist/core/docs-scraper.d.ts.map +0 -1
- package/dist/core/docs-scraper.js +0 -386
- package/dist/core/docs-scraper.js.map +0 -1
- package/dist/core/editor.d.ts +0 -87
- package/dist/core/editor.d.ts.map +0 -1
- package/dist/core/editor.js +0 -377
- package/dist/core/editor.js.map +0 -1
- package/dist/core/export.d.ts +0 -11
- package/dist/core/export.d.ts.map +0 -1
- package/dist/core/export.js +0 -54
- package/dist/core/export.js.map +0 -1
- package/dist/core/history-manager.d.ts +0 -75
- package/dist/core/history-manager.d.ts.map +0 -1
- package/dist/core/history-manager.js +0 -146
- package/dist/core/history-manager.js.map +0 -1
- package/dist/core/marketplace-client.d.ts +0 -52
- package/dist/core/marketplace-client.d.ts.map +0 -1
- package/dist/core/marketplace-client.js +0 -71
- package/dist/core/marketplace-client.js.map +0 -1
- package/dist/core/mcp/mcp-config.d.ts +0 -10
- package/dist/core/mcp/mcp-config.d.ts.map +0 -1
- package/dist/core/mcp/mcp-config.js +0 -70
- package/dist/core/mcp/mcp-config.js.map +0 -1
- package/dist/core/mcp/mcp-policy.d.ts +0 -17
- package/dist/core/mcp/mcp-policy.d.ts.map +0 -1
- package/dist/core/mcp/mcp-policy.js +0 -56
- package/dist/core/mcp/mcp-policy.js.map +0 -1
- package/dist/core/mcp/oauth-flow.d.ts +0 -30
- package/dist/core/mcp/oauth-flow.d.ts.map +0 -1
- package/dist/core/mcp/oauth-flow.js +0 -230
- package/dist/core/mcp/oauth-flow.js.map +0 -1
- package/dist/core/mcp/oauth-store.d.ts +0 -13
- package/dist/core/mcp/oauth-store.d.ts.map +0 -1
- package/dist/core/mcp/oauth-store.js +0 -68
- package/dist/core/mcp/oauth-store.js.map +0 -1
- package/dist/core/mcp/resolve-mcp-servers.d.ts +0 -16
- package/dist/core/mcp/resolve-mcp-servers.d.ts.map +0 -1
- package/dist/core/mcp/resolve-mcp-servers.js +0 -83
- package/dist/core/mcp/resolve-mcp-servers.js.map +0 -1
- package/dist/core/mcp-client.d.ts +0 -99
- package/dist/core/mcp-client.d.ts.map +0 -1
- package/dist/core/mcp-client.js +0 -317
- package/dist/core/mcp-client.js.map +0 -1
- package/dist/core/memory-promotions.d.ts +0 -15
- package/dist/core/memory-promotions.d.ts.map +0 -1
- package/dist/core/memory-promotions.js +0 -38
- package/dist/core/memory-promotions.js.map +0 -1
- package/dist/core/memory.d.ts +0 -32
- package/dist/core/memory.d.ts.map +0 -1
- package/dist/core/memory.js +0 -121
- package/dist/core/memory.js.map +0 -1
- package/dist/core/modes.d.ts +0 -432
- package/dist/core/modes.d.ts.map +0 -1
- package/dist/core/modes.js +0 -1094
- package/dist/core/modes.js.map +0 -1
- package/dist/core/pattern-miner.d.ts +0 -43
- package/dist/core/pattern-miner.d.ts.map +0 -1
- package/dist/core/pattern-miner.js +0 -123
- package/dist/core/pattern-miner.js.map +0 -1
- package/dist/core/permission-store.d.ts +0 -15
- package/dist/core/permission-store.d.ts.map +0 -1
- package/dist/core/permission-store.js +0 -30
- package/dist/core/permission-store.js.map +0 -1
- package/dist/core/permissions.d.ts +0 -33
- package/dist/core/permissions.d.ts.map +0 -1
- package/dist/core/permissions.js +0 -141
- package/dist/core/permissions.js.map +0 -1
- package/dist/core/plan-artifacts.d.ts +0 -10
- package/dist/core/plan-artifacts.d.ts.map +0 -1
- package/dist/core/plan-artifacts.js +0 -60
- package/dist/core/plan-artifacts.js.map +0 -1
- package/dist/core/plan-session.d.ts +0 -25
- package/dist/core/plan-session.d.ts.map +0 -1
- package/dist/core/plan-session.js +0 -99
- package/dist/core/plan-session.js.map +0 -1
- package/dist/core/planMode.d.ts +0 -51
- package/dist/core/planMode.d.ts.map +0 -1
- package/dist/core/planMode.js +0 -245
- package/dist/core/planMode.js.map +0 -1
- package/dist/core/plugins.d.ts +0 -96
- package/dist/core/plugins.d.ts.map +0 -1
- package/dist/core/plugins.js +0 -204
- package/dist/core/plugins.js.map +0 -1
- package/dist/core/session-bridge.d.ts +0 -128
- package/dist/core/session-bridge.d.ts.map +0 -1
- package/dist/core/session-bridge.js +0 -328
- package/dist/core/session-bridge.js.map +0 -1
- package/dist/core/session-manager.d.ts +0 -80
- package/dist/core/session-manager.d.ts.map +0 -1
- package/dist/core/session-manager.js +0 -166
- package/dist/core/session-manager.js.map +0 -1
- package/dist/core/session-memory.d.ts +0 -45
- package/dist/core/session-memory.d.ts.map +0 -1
- package/dist/core/session-memory.js +0 -103
- package/dist/core/session-memory.js.map +0 -1
- package/dist/core/skill-selection.d.ts +0 -36
- package/dist/core/skill-selection.d.ts.map +0 -1
- package/dist/core/skill-selection.js +0 -172
- package/dist/core/skill-selection.js.map +0 -1
- package/dist/core/skills-sh-client.d.ts +0 -19
- package/dist/core/skills-sh-client.d.ts.map +0 -1
- package/dist/core/skills-sh-client.js +0 -75
- package/dist/core/skills-sh-client.js.map +0 -1
- package/dist/core/skills.d.ts +0 -97
- package/dist/core/skills.d.ts.map +0 -1
- package/dist/core/skills.js +0 -339
- package/dist/core/skills.js.map +0 -1
- package/dist/core/swarm.d.ts +0 -34
- package/dist/core/swarm.d.ts.map +0 -1
- package/dist/core/swarm.js +0 -111
- package/dist/core/swarm.js.map +0 -1
- package/dist/core/task-status.d.ts +0 -13
- package/dist/core/task-status.d.ts.map +0 -1
- package/dist/core/task-status.js +0 -17
- package/dist/core/task-status.js.map +0 -1
- package/dist/core/tool-orchestrator.d.ts +0 -30
- package/dist/core/tool-orchestrator.d.ts.map +0 -1
- package/dist/core/tool-orchestrator.js +0 -89
- package/dist/core/tool-orchestrator.js.map +0 -1
- package/dist/core/tools.d.ts +0 -462
- package/dist/core/tools.d.ts.map +0 -1
- package/dist/core/tools.js +0 -2916
- package/dist/core/tools.js.map +0 -1
- package/dist/core/transcript-cleanup.d.ts +0 -8
- package/dist/core/transcript-cleanup.d.ts.map +0 -1
- package/dist/core/transcript-cleanup.js +0 -52
- package/dist/core/transcript-cleanup.js.map +0 -1
- package/dist/core/visual-feedback.d.ts +0 -20
- package/dist/core/visual-feedback.d.ts.map +0 -1
- package/dist/core/visual-feedback.js +0 -117
- package/dist/core/visual-feedback.js.map +0 -1
- package/dist/tools/browser.d.ts +0 -120
- package/dist/tools/browser.d.ts.map +0 -1
- package/dist/tools/browser.js +0 -439
- package/dist/tools/browser.js.map +0 -1
- package/dist/tools/test-generator.d.ts +0 -157
- package/dist/tools/test-generator.d.ts.map +0 -1
- package/dist/tools/test-generator.js +0 -893
- package/dist/tools/test-generator.js.map +0 -1
- package/dist/tui/InkApp.d.ts +0 -21
- package/dist/tui/InkApp.d.ts.map +0 -1
- package/dist/tui/InkApp.js +0 -146
- package/dist/tui/InkApp.js.map +0 -1
- package/dist/tui/MarkdownMessage.d.ts +0 -16
- package/dist/tui/MarkdownMessage.d.ts.map +0 -1
- package/dist/tui/MarkdownMessage.js +0 -63
- package/dist/tui/MarkdownMessage.js.map +0 -1
- package/dist/tui/blessed-chat.d.ts +0 -9
- package/dist/tui/blessed-chat.d.ts.map +0 -1
- package/dist/tui/blessed-chat.js +0 -887
- package/dist/tui/blessed-chat.js.map +0 -1
- package/dist/tui/markdown-to-blessed.d.ts +0 -6
- package/dist/tui/markdown-to-blessed.d.ts.map +0 -1
- package/dist/tui/markdown-to-blessed.js +0 -26
- package/dist/tui/markdown-to-blessed.js.map +0 -1
- package/dist/ui/ink/App.d.ts +0 -25
- package/dist/ui/ink/App.d.ts.map +0 -1
- package/dist/ui/ink/App.js +0 -372
- package/dist/ui/ink/App.js.map +0 -1
- package/dist/utils/at-references.d.ts +0 -14
- package/dist/utils/at-references.d.ts.map +0 -1
- package/dist/utils/at-references.js +0 -47
- package/dist/utils/at-references.js.map +0 -1
- package/dist/utils/auto-memory.d.ts +0 -24
- package/dist/utils/auto-memory.d.ts.map +0 -1
- package/dist/utils/auto-memory.js +0 -153
- package/dist/utils/auto-memory.js.map +0 -1
- package/dist/utils/git.d.ts +0 -89
- package/dist/utils/git.d.ts.map +0 -1
- package/dist/utils/git.js +0 -444
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/mcp-servers-file.d.ts +0 -46
- package/dist/utils/mcp-servers-file.d.ts.map +0 -1
- package/dist/utils/mcp-servers-file.js +0 -212
- package/dist/utils/mcp-servers-file.js.map +0 -1
- package/dist/utils/safety.d.ts +0 -60
- package/dist/utils/safety.d.ts.map +0 -1
- package/dist/utils/safety.js +0 -254
- package/dist/utils/safety.js.map +0 -1
- package/dist/utils/smithery.d.ts +0 -25
- package/dist/utils/smithery.d.ts.map +0 -1
- package/dist/utils/smithery.js +0 -50
- package/dist/utils/smithery.js.map +0 -1
- package/dist/utils/testRunner.d.ts +0 -44
- package/dist/utils/testRunner.d.ts.map +0 -1
- package/dist/utils/testRunner.js +0 -270
- 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
|
package/dist/utils/git.js.map
DELETED
|
@@ -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"}
|