xibecode 1.3.7 → 1.3.11
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/cloud-pull.d.ts +5 -0
- package/dist/commands/cloud-pull.d.ts.map +1 -1
- package/dist/commands/cloud-pull.js +98 -4
- package/dist/commands/cloud-pull.js.map +1 -1
- package/dist/commands/resume.js +1 -0
- package/dist/commands/resume.js.map +1 -1
- package/dist/index.js +36 -16
- package/dist/index.js.map +1 -1
- package/dist/ui/claude-style-chat.d.ts +2 -0
- package/dist/ui/claude-style-chat.d.ts.map +1 -1
- package/dist/ui/claude-style-chat.js +229 -11
- package/dist/ui/claude-style-chat.js.map +1 -1
- package/dist/utils/cloud-sync-feedback.js +1 -1
- package/dist/utils/cloud-sync-feedback.js.map +1 -1
- package/dist/utils/list-files.d.ts +10 -0
- package/dist/utils/list-files.d.ts.map +1 -0
- package/dist/utils/list-files.js +118 -0
- package/dist/utils/list-files.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import * as fs from 'fs/promises';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
function spawnBuffer(cmd, args, cwd) {
|
|
5
|
+
return new Promise((resolve, reject) => {
|
|
6
|
+
const child = spawn(cmd, args, { cwd });
|
|
7
|
+
const chunks = [];
|
|
8
|
+
let stderr = '';
|
|
9
|
+
child.stdout.on('data', (c) => chunks.push(c));
|
|
10
|
+
child.stderr.on('data', (c) => { stderr += c.toString(); });
|
|
11
|
+
child.on('error', reject);
|
|
12
|
+
child.on('close', (code) => {
|
|
13
|
+
if (code !== 0) {
|
|
14
|
+
reject(new Error(`${cmd} ${args.join(' ')} failed (${code}): ${stderr.trim() || 'no stderr'}`));
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
resolve(Buffer.concat(chunks));
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
function decodeNullSeparatedPaths(buf) {
|
|
22
|
+
if (!buf.length)
|
|
23
|
+
return [];
|
|
24
|
+
const raw = buf.toString('utf8');
|
|
25
|
+
const parts = raw.split('\0');
|
|
26
|
+
return parts.filter((p) => p.length > 0);
|
|
27
|
+
}
|
|
28
|
+
async function gitRepoRoot(cwd) {
|
|
29
|
+
try {
|
|
30
|
+
const inside = (await spawnBuffer('git', ['rev-parse', '--is-inside-work-tree'], cwd)).toString('utf8').trim();
|
|
31
|
+
if (inside !== 'true')
|
|
32
|
+
return null;
|
|
33
|
+
const root = (await spawnBuffer('git', ['rev-parse', '--show-toplevel'], cwd)).toString('utf8').trim();
|
|
34
|
+
return root || null;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function gitWorkspacePaths(repoRoot) {
|
|
41
|
+
const tracked = decodeNullSeparatedPaths(await spawnBuffer('git', ['ls-files', '-z'], repoRoot));
|
|
42
|
+
const untracked = decodeNullSeparatedPaths(await spawnBuffer('git', ['ls-files', '-z', '-o', '--exclude-standard'], repoRoot));
|
|
43
|
+
return Array.from(new Set([...tracked, ...untracked])).sort((a, b) => a.localeCompare(b));
|
|
44
|
+
}
|
|
45
|
+
function addDirectoryEntries(paths) {
|
|
46
|
+
const dirs = new Set();
|
|
47
|
+
for (const filePath of paths) {
|
|
48
|
+
let dir = path.posix.dirname(filePath);
|
|
49
|
+
while (dir && dir !== '.') {
|
|
50
|
+
dirs.add(dir);
|
|
51
|
+
dir = path.posix.dirname(dir);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return dirs;
|
|
55
|
+
}
|
|
56
|
+
const BASIC_SKIP = new Set(['node_modules', '.git', '.xibecode', 'dist', 'build', '.next', '.DS_Store', 'coverage']);
|
|
57
|
+
async function walkDir(dirPath, relativeSoFar) {
|
|
58
|
+
const entries = [];
|
|
59
|
+
try {
|
|
60
|
+
const items = await fs.readdir(dirPath, { withFileTypes: true });
|
|
61
|
+
for (const item of items) {
|
|
62
|
+
if (BASIC_SKIP.has(item.name))
|
|
63
|
+
continue;
|
|
64
|
+
const relPath = relativeSoFar ? `${relativeSoFar}/${item.name}` : item.name;
|
|
65
|
+
if (item.isDirectory()) {
|
|
66
|
+
entries.push({ relativePath: relPath, isDirectory: true });
|
|
67
|
+
const sub = await walkDir(path.join(dirPath, item.name), relPath);
|
|
68
|
+
entries.push(...sub);
|
|
69
|
+
}
|
|
70
|
+
else if (item.isFile()) {
|
|
71
|
+
entries.push({ relativePath: relPath, isDirectory: false });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// skip unreadable dirs
|
|
77
|
+
}
|
|
78
|
+
return entries;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* List workspace files and directories, respecting .gitignore when inside a git repo.
|
|
82
|
+
* Paths are relative to `cwd` with POSIX separators.
|
|
83
|
+
*/
|
|
84
|
+
export async function listWorkspaceFiles(cwd) {
|
|
85
|
+
const root = await gitRepoRoot(cwd);
|
|
86
|
+
if (root) {
|
|
87
|
+
const paths = await gitWorkspacePaths(root);
|
|
88
|
+
// Convert paths from repo-root-relative to cwd-relative
|
|
89
|
+
const cwdRelativePaths = paths.map((p) => {
|
|
90
|
+
const abs = path.join(root, p);
|
|
91
|
+
return path.relative(cwd, abs).replace(/\\/g, '/');
|
|
92
|
+
}).filter((p) => !p.startsWith('..')); // skip files outside cwd
|
|
93
|
+
const dirSet = addDirectoryEntries(cwdRelativePaths);
|
|
94
|
+
const entryMap = new Map();
|
|
95
|
+
for (const p of cwdRelativePaths) {
|
|
96
|
+
entryMap.set(p, { relativePath: p, isDirectory: false });
|
|
97
|
+
}
|
|
98
|
+
for (const d of dirSet) {
|
|
99
|
+
if (!entryMap.has(d)) {
|
|
100
|
+
entryMap.set(d, { relativePath: d, isDirectory: true });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return Array.from(entryMap.values()).sort((a, b) => {
|
|
104
|
+
if (a.isDirectory !== b.isDirectory)
|
|
105
|
+
return a.isDirectory ? -1 : 1;
|
|
106
|
+
return a.relativePath.localeCompare(b.relativePath);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
// Fallback: non-git directory walk
|
|
110
|
+
const entries = await walkDir(cwd, '');
|
|
111
|
+
entries.sort((a, b) => {
|
|
112
|
+
if (a.isDirectory !== b.isDirectory)
|
|
113
|
+
return a.isDirectory ? -1 : 1;
|
|
114
|
+
return a.relativePath.localeCompare(b.relativePath);
|
|
115
|
+
});
|
|
116
|
+
return entries;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=list-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-files.js","sourceRoot":"","sources":["../../src/utils/list-files.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xibecode",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.11",
|
|
4
4
|
"description": "AI-powered autonomous coding assistant with AI test generation, multi-model support, and plugin system",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"xibecode-core": "^1.3.
|
|
35
|
+
"xibecode-core": "^1.3.10",
|
|
36
36
|
"@anthropic-ai/sdk": "^0.78.0",
|
|
37
37
|
"chalk": "^4.1.2",
|
|
38
38
|
"commander": "^12.0.0",
|