@paparats/cli 0.1.0
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/LICENSE +21 -0
- package/README.md +33 -0
- package/bin/paparats +2 -0
- package/dist/abort.d.ts +6 -0
- package/dist/abort.d.ts.map +1 -0
- package/dist/abort.js +13 -0
- package/dist/abort.js.map +1 -0
- package/dist/api-client.d.ts +69 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +188 -0
- package/dist/api-client.js.map +1 -0
- package/dist/commands/doctor.d.ts +10 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +239 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/groups.d.ts +47 -0
- package/dist/commands/groups.d.ts.map +1 -0
- package/dist/commands/groups.js +197 -0
- package/dist/commands/groups.js.map +1 -0
- package/dist/commands/index-cmd.d.ts +75 -0
- package/dist/commands/index-cmd.d.ts.map +1 -0
- package/dist/commands/index-cmd.js +240 -0
- package/dist/commands/index-cmd.js.map +1 -0
- package/dist/commands/init.d.ts +28 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +437 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install.d.ts +41 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +324 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/search.d.ts +53 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +216 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/status.d.ts +69 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +309 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +18 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +95 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/watch.d.ts +31 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +339 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/config.d.ts +46 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +308 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/lsp-installers.d.ts +28 -0
- package/dist/lsp-installers.d.ts.map +1 -0
- package/dist/lsp-installers.js +125 -0
- package/dist/lsp-installers.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
export interface StatsResponse {
|
|
4
|
+
groups: Record<string, number>;
|
|
5
|
+
registeredProjects: Record<string, string[]>;
|
|
6
|
+
usage: {
|
|
7
|
+
searchCount: number;
|
|
8
|
+
totalTokensSaved: number;
|
|
9
|
+
avgTokensSavedPerSearch: number;
|
|
10
|
+
};
|
|
11
|
+
cache?: {
|
|
12
|
+
size: number;
|
|
13
|
+
hitCount: number;
|
|
14
|
+
maxSize: number;
|
|
15
|
+
hitRate: number;
|
|
16
|
+
};
|
|
17
|
+
watcher?: Record<string, {
|
|
18
|
+
eventsProcessed: number;
|
|
19
|
+
}>;
|
|
20
|
+
memory?: {
|
|
21
|
+
heapUsed: number;
|
|
22
|
+
heapTotal: number;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export declare function validateStatsResponse(data: unknown): data is StatsResponse;
|
|
26
|
+
interface GroupsOptions {
|
|
27
|
+
json?: boolean;
|
|
28
|
+
verbose?: boolean;
|
|
29
|
+
quiet?: boolean;
|
|
30
|
+
sort?: string;
|
|
31
|
+
timeout?: number;
|
|
32
|
+
groupName?: string;
|
|
33
|
+
}
|
|
34
|
+
interface StatsClient {
|
|
35
|
+
stats(options?: {
|
|
36
|
+
timeout?: number;
|
|
37
|
+
}): Promise<{
|
|
38
|
+
status: number;
|
|
39
|
+
data: unknown;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
42
|
+
export declare function runGroups(client: StatsClient, opts: GroupsOptions, deps?: {
|
|
43
|
+
spinner?: ReturnType<typeof ora> | null;
|
|
44
|
+
}): Promise<void>;
|
|
45
|
+
export declare const groupsCommand: Command;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=groups.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/commands/groups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAE5C,OAAO,GAAG,MAAM,KAAK,CAAC;AAOtB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7C,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;QACzB,uBAAuB,EAAE,MAAM,CAAC;KACjC,CAAC;IACF,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,aAAa,CAc1E;AAED,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,WAAW;IACnB,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACnF;AAWD,wBAAsB,SAAS,CAC7B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,aAAa,EACnB,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAA;CAAE,GACjD,OAAO,CAAC,IAAI,CAAC,CAgJf;AAED,eAAO,MAAM,aAAa,SA+DvB,CAAC"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { Command, Option } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import ora from 'ora';
|
|
4
|
+
import { ApiClient } from '../api-client.js';
|
|
5
|
+
function formatNumber(n) {
|
|
6
|
+
return n.toLocaleString('en-US');
|
|
7
|
+
}
|
|
8
|
+
export function validateStatsResponse(data) {
|
|
9
|
+
if (!data || typeof data !== 'object')
|
|
10
|
+
return false;
|
|
11
|
+
const d = data;
|
|
12
|
+
return (typeof d.groups === 'object' &&
|
|
13
|
+
d.groups !== null &&
|
|
14
|
+
typeof d.registeredProjects === 'object' &&
|
|
15
|
+
d.registeredProjects !== null &&
|
|
16
|
+
typeof d.usage === 'object' &&
|
|
17
|
+
d.usage !== null &&
|
|
18
|
+
typeof d.usage.searchCount === 'number');
|
|
19
|
+
}
|
|
20
|
+
function outputError(message, json) {
|
|
21
|
+
if (json) {
|
|
22
|
+
console.log(JSON.stringify({ error: message }));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
console.error(chalk.red(message));
|
|
26
|
+
}
|
|
27
|
+
throw new Error('EXIT:1');
|
|
28
|
+
}
|
|
29
|
+
export async function runGroups(client, opts, deps) {
|
|
30
|
+
const spinner = deps?.spinner !== undefined ? deps.spinner : ora('Fetching stats from server...').start();
|
|
31
|
+
try {
|
|
32
|
+
const res = await client.stats({ timeout: opts.timeout ?? 10_000 });
|
|
33
|
+
spinner?.stop();
|
|
34
|
+
if (res.status !== 200) {
|
|
35
|
+
outputError('Failed to fetch stats from server', opts.json ?? false);
|
|
36
|
+
}
|
|
37
|
+
const rawData = res.data;
|
|
38
|
+
if (!validateStatsResponse(rawData)) {
|
|
39
|
+
outputError('Invalid stats response from server', opts.json ?? false);
|
|
40
|
+
}
|
|
41
|
+
const data = rawData;
|
|
42
|
+
if (opts.json) {
|
|
43
|
+
if (opts.groupName) {
|
|
44
|
+
const chunks = data.groups[opts.groupName];
|
|
45
|
+
if (chunks === undefined) {
|
|
46
|
+
outputError(`Group not found: ${opts.groupName}`, opts.json);
|
|
47
|
+
}
|
|
48
|
+
const projects = data.registeredProjects[opts.groupName] ?? [];
|
|
49
|
+
console.log(JSON.stringify({ group: opts.groupName, chunks, projects }, null, 2));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.log(JSON.stringify(data, null, 2));
|
|
53
|
+
}
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
let groupEntries = Object.entries(data.groups);
|
|
57
|
+
if (opts.groupName) {
|
|
58
|
+
const chunks = data.groups[opts.groupName];
|
|
59
|
+
if (chunks === undefined) {
|
|
60
|
+
outputError(`Group not found: ${opts.groupName}`, opts.json ?? false);
|
|
61
|
+
}
|
|
62
|
+
const projects = data.registeredProjects[opts.groupName] ?? [];
|
|
63
|
+
console.log(chalk.bold(`\n${opts.groupName}\n`));
|
|
64
|
+
console.log(` ${chalk.dim('Chunks:')} ${chunks}`);
|
|
65
|
+
console.log(` ${chalk.dim('Projects:')}`);
|
|
66
|
+
for (const p of projects) {
|
|
67
|
+
console.log(` • ${p}`);
|
|
68
|
+
}
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (groupEntries.length === 0) {
|
|
72
|
+
if (!opts.quiet) {
|
|
73
|
+
console.log(chalk.yellow('No groups indexed yet. Run `paparats index` first.'));
|
|
74
|
+
}
|
|
75
|
+
process.exit(0);
|
|
76
|
+
}
|
|
77
|
+
if (opts.sort === 'size') {
|
|
78
|
+
groupEntries = groupEntries.sort((a, b) => b[1] - a[1]);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
groupEntries = groupEntries.sort((a, b) => a[0].localeCompare(b[0]));
|
|
82
|
+
}
|
|
83
|
+
if (opts.quiet) {
|
|
84
|
+
for (const [groupName] of groupEntries) {
|
|
85
|
+
console.log(groupName);
|
|
86
|
+
}
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
console.log(chalk.bold('\nIndexed Groups:\n'));
|
|
90
|
+
for (const [groupName, chunks] of groupEntries) {
|
|
91
|
+
const projects = data.registeredProjects[groupName] ?? [];
|
|
92
|
+
if (opts.verbose) {
|
|
93
|
+
console.log(` ${chalk.bold(groupName)}`);
|
|
94
|
+
console.log(` ${chalk.dim('Chunks:')} ${chunks}`);
|
|
95
|
+
console.log(` ${chalk.dim('Projects:')}`);
|
|
96
|
+
for (const p of projects) {
|
|
97
|
+
console.log(` • ${p}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
console.log(` ${chalk.bold(groupName)} ${chalk.dim(`(${chunks} chunks)`)}`);
|
|
102
|
+
for (const p of projects) {
|
|
103
|
+
console.log(` ${chalk.dim('•')} ${p}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
console.log();
|
|
107
|
+
}
|
|
108
|
+
if (opts.verbose) {
|
|
109
|
+
console.log(chalk.bold('Statistics:\n'));
|
|
110
|
+
if (data.usage.searchCount > 0) {
|
|
111
|
+
console.log(` ${chalk.dim('Searches:')} ${data.usage.searchCount}`);
|
|
112
|
+
console.log(` ${chalk.dim('Tokens saved:')} ~${formatNumber(data.usage.totalTokensSaved)}`);
|
|
113
|
+
console.log(` ${chalk.dim('Avg per search:')} ~${data.usage.avgTokensSavedPerSearch}`);
|
|
114
|
+
}
|
|
115
|
+
if (data.cache) {
|
|
116
|
+
const cache = data.cache;
|
|
117
|
+
const hitRatePercent = (cache.hitRate * 100).toFixed(1);
|
|
118
|
+
console.log(` ${chalk.dim('Cache hit rate:')} ${hitRatePercent}%`);
|
|
119
|
+
}
|
|
120
|
+
if (data.watcher) {
|
|
121
|
+
const totalEvents = Object.values(data.watcher).reduce((sum, w) => sum + (w?.eventsProcessed ?? 0), 0);
|
|
122
|
+
if (totalEvents > 0) {
|
|
123
|
+
console.log(` ${chalk.dim('File changes processed:')} ${totalEvents}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (data.memory) {
|
|
127
|
+
const heapMB = Math.round(data.memory.heapUsed / 1024 / 1024);
|
|
128
|
+
console.log(` ${chalk.dim('Memory usage:')} ${heapMB} MB`);
|
|
129
|
+
}
|
|
130
|
+
console.log();
|
|
131
|
+
}
|
|
132
|
+
else if (data.usage.searchCount > 0) {
|
|
133
|
+
console.log(chalk.dim(`Stats: ${data.usage.searchCount} searches, ~${formatNumber(data.usage.totalTokensSaved)} tokens saved`));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
spinner?.stop();
|
|
138
|
+
const message = err.message;
|
|
139
|
+
if (message.startsWith('EXIT:')) {
|
|
140
|
+
const code = parseInt(message.slice(5), 10);
|
|
141
|
+
process.exit(Number.isNaN(code) ? 1 : code);
|
|
142
|
+
}
|
|
143
|
+
if (opts.json) {
|
|
144
|
+
console.log(JSON.stringify({ error: message }));
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
console.error(chalk.red(message));
|
|
148
|
+
}
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
export const groupsCommand = new Command('groups')
|
|
153
|
+
.description('List all indexed groups and projects')
|
|
154
|
+
.argument('[group]', 'Show details for specific group')
|
|
155
|
+
.option('--server <url>', 'MCP server URL', 'http://localhost:9876')
|
|
156
|
+
.option('--timeout <ms>', 'Request timeout in milliseconds', '10000')
|
|
157
|
+
.option('-v, --verbose', 'Show detailed information')
|
|
158
|
+
.option('-q, --quiet', 'Show only group names')
|
|
159
|
+
.option('--json', 'Output as JSON')
|
|
160
|
+
.addOption(new Option('--sort <field>', 'Sort by field').choices(['name', 'size']).default('name'))
|
|
161
|
+
.action(async (groupName, opts) => {
|
|
162
|
+
if (opts.verbose && opts.quiet) {
|
|
163
|
+
if (opts.json) {
|
|
164
|
+
console.log(JSON.stringify({ error: 'Cannot use --verbose and --quiet together' }));
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
console.error(chalk.red('Cannot use --verbose and --quiet together'));
|
|
168
|
+
}
|
|
169
|
+
process.exit(1);
|
|
170
|
+
}
|
|
171
|
+
let timeout = 10_000;
|
|
172
|
+
if (opts.timeout) {
|
|
173
|
+
const parsed = parseInt(opts.timeout, 10);
|
|
174
|
+
if (Number.isNaN(parsed) || parsed <= 0) {
|
|
175
|
+
const msg = `Invalid timeout: ${opts.timeout}. Must be a positive number.`;
|
|
176
|
+
if (opts.json) {
|
|
177
|
+
console.log(JSON.stringify({ error: msg }));
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
console.error(chalk.red(msg));
|
|
181
|
+
}
|
|
182
|
+
process.exit(1);
|
|
183
|
+
}
|
|
184
|
+
timeout = parsed;
|
|
185
|
+
}
|
|
186
|
+
const client = new ApiClient(opts.server);
|
|
187
|
+
const spinner = opts.json ? null : ora('Fetching stats from server...').start();
|
|
188
|
+
await runGroups(client, {
|
|
189
|
+
json: opts.json,
|
|
190
|
+
verbose: opts.verbose,
|
|
191
|
+
quiet: opts.quiet,
|
|
192
|
+
sort: opts.sort,
|
|
193
|
+
timeout,
|
|
194
|
+
groupName,
|
|
195
|
+
}, { spinner });
|
|
196
|
+
});
|
|
197
|
+
//# sourceMappingURL=groups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/commands/groups.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAoBD,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEpD,MAAM,CAAC,GAAG,IAA8B,CAAC;IAEzC,OAAO,CACL,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAC5B,CAAC,CAAC,MAAM,KAAK,IAAI;QACjB,OAAO,CAAC,CAAC,kBAAkB,KAAK,QAAQ;QACxC,CAAC,CAAC,kBAAkB,KAAK,IAAI;QAC7B,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;QAC3B,CAAC,CAAC,KAAK,KAAK,IAAI;QAChB,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,CACxC,CAAC;AACJ,CAAC;AAeD,SAAS,WAAW,CAAC,OAAe,EAAE,IAAa;IACjD,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,MAAmB,EACnB,IAAmB,EACnB,IAAkD;IAElD,MAAM,OAAO,GACX,IAAI,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;IAE5F,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC;QACpE,OAAO,EAAE,IAAI,EAAE,CAAC;QAEhB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,WAAW,CAAC,mCAAmC,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,WAAW,CAAC,oCAAoC,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,IAAI,GAAG,OAAwB,CAAC;QAEtC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,WAAW,CAAC,oBAAoB,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACpF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,WAAW,CAAC,oBAAoB,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC3C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAClF,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,YAAY,EAAE,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;YACD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAE/C,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAE1D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC7C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC7E,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;YAEzC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAChF,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC;YAC1F,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACzB,MAAM,cAAc,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,cAAc,GAAG,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CACpD,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,eAAe,IAAI,CAAC,CAAC,EAC3C,CAAC,CACF,CAAC;gBACF,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC;YAC9D,CAAC;YAED,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,UAAU,IAAI,CAAC,KAAK,CAAC,WAAW,eAAe,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,eAAe,CACxG,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,CAAC;QAChB,MAAM,OAAO,GAAI,GAAa,CAAC,OAAO,CAAC;QACvC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,sCAAsC,CAAC;KACnD,QAAQ,CAAC,SAAS,EAAE,iCAAiC,CAAC;KACtD,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,uBAAuB,CAAC;KACnE,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,EAAE,OAAO,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;KAC9C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,SAAS,CACR,IAAI,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CACxF;KACA,MAAM,CACL,KAAK,EACH,SAA6B,EAC7B,IAOC,EACD,EAAE;IACF,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,GAAG,MAAM,CAAC;IACrB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,GAAG,GAAG,oBAAoB,IAAI,CAAC,OAAO,8BAA8B,CAAC;YAC3E,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;IAEhF,MAAM,SAAS,CACb,MAAM,EACN;QACE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO;QACP,SAAS;KACV,EACD,EAAE,OAAO,EAAE,CACZ,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
export interface IndexResponse {
|
|
4
|
+
group: string;
|
|
5
|
+
project: string;
|
|
6
|
+
chunks: number;
|
|
7
|
+
skipped?: number;
|
|
8
|
+
errors?: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function validateIndexResponse(data: unknown): data is IndexResponse;
|
|
11
|
+
interface IndexOptions {
|
|
12
|
+
server: string;
|
|
13
|
+
timeout?: number;
|
|
14
|
+
force?: boolean;
|
|
15
|
+
verbose?: boolean;
|
|
16
|
+
dryRun?: boolean;
|
|
17
|
+
json?: boolean;
|
|
18
|
+
}
|
|
19
|
+
interface IndexClient {
|
|
20
|
+
health(options?: {
|
|
21
|
+
timeout?: number;
|
|
22
|
+
}): Promise<{
|
|
23
|
+
status: number;
|
|
24
|
+
}>;
|
|
25
|
+
indexContent(group: string, project: string, files: Array<{
|
|
26
|
+
path: string;
|
|
27
|
+
content: string;
|
|
28
|
+
language?: string;
|
|
29
|
+
}>, options?: {
|
|
30
|
+
config?: {
|
|
31
|
+
chunkSize?: number;
|
|
32
|
+
overlap?: number;
|
|
33
|
+
batchSize?: number;
|
|
34
|
+
concurrency?: number;
|
|
35
|
+
languages?: string[];
|
|
36
|
+
};
|
|
37
|
+
force?: boolean;
|
|
38
|
+
timeout?: number;
|
|
39
|
+
signal?: AbortSignal;
|
|
40
|
+
}): Promise<{
|
|
41
|
+
status: number;
|
|
42
|
+
data: unknown;
|
|
43
|
+
}>;
|
|
44
|
+
}
|
|
45
|
+
interface RunIndexDeps {
|
|
46
|
+
spinner?: ReturnType<typeof ora> | null;
|
|
47
|
+
signal?: AbortSignal;
|
|
48
|
+
collectProjectFiles?: typeof import('../config.js').collectProjectFiles;
|
|
49
|
+
}
|
|
50
|
+
export declare function printDryRun(config: {
|
|
51
|
+
config: {
|
|
52
|
+
group: string;
|
|
53
|
+
language: string | string[];
|
|
54
|
+
indexing?: {
|
|
55
|
+
paths?: string[];
|
|
56
|
+
exclude?: string[];
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
projectDir: string;
|
|
60
|
+
}): void;
|
|
61
|
+
export declare function runIndex(client: IndexClient, projectDir: string, group: string, config: {
|
|
62
|
+
config: {
|
|
63
|
+
group: string;
|
|
64
|
+
language: string | string[];
|
|
65
|
+
indexing?: {
|
|
66
|
+
chunkSize?: number;
|
|
67
|
+
overlap?: number;
|
|
68
|
+
batchSize?: number;
|
|
69
|
+
concurrency?: number;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
}, opts: IndexOptions, deps?: RunIndexDeps): Promise<void>;
|
|
73
|
+
export declare const indexCommand: Command;
|
|
74
|
+
export {};
|
|
75
|
+
//# sourceMappingURL=index-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/index-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { Command } from 'commander';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
import { readConfig, collectProjectFiles, getLanguageFromPath } from '../config.js';
|
|
7
|
+
import { ApiClient } from '../api-client.js';
|
|
8
|
+
const API_INDEX_BATCH_SIZE = 50;
|
|
9
|
+
export function validateIndexResponse(data) {
|
|
10
|
+
if (!data || typeof data !== 'object')
|
|
11
|
+
return false;
|
|
12
|
+
const d = data;
|
|
13
|
+
return (typeof d.group === 'string' && typeof d.project === 'string' && typeof d.chunks === 'number');
|
|
14
|
+
}
|
|
15
|
+
function outputError(message, json) {
|
|
16
|
+
if (json) {
|
|
17
|
+
console.log(JSON.stringify({ error: message }));
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
console.error(chalk.red(message));
|
|
21
|
+
}
|
|
22
|
+
throw new Error('EXIT:1');
|
|
23
|
+
}
|
|
24
|
+
export function printDryRun(config) {
|
|
25
|
+
console.log(chalk.bold('\nDry run mode - no actual indexing\n'));
|
|
26
|
+
console.log(` ${chalk.dim('Group:')} ${config.config.group}`);
|
|
27
|
+
console.log(` ${chalk.dim('Project:')} ${config.projectDir}`);
|
|
28
|
+
const lang = config.config.language;
|
|
29
|
+
console.log(` ${chalk.dim('Language:')} ${Array.isArray(lang) ? lang.join(', ') : lang}`);
|
|
30
|
+
if (config.config.indexing?.paths?.length) {
|
|
31
|
+
console.log(` ${chalk.dim('Paths:')} ${config.config.indexing.paths.join(', ')}`);
|
|
32
|
+
}
|
|
33
|
+
if (config.config.indexing?.exclude?.length) {
|
|
34
|
+
console.log(` ${chalk.dim('Exclude:')} ${config.config.indexing.exclude.join(', ')}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export async function runIndex(client, projectDir, group, config, opts, deps) {
|
|
38
|
+
const projectName = path.basename(projectDir);
|
|
39
|
+
const spinner = deps?.spinner !== undefined ? deps.spinner : ora(`Indexing ${group}/${projectName}...`).start();
|
|
40
|
+
const start = Date.now();
|
|
41
|
+
const languages = Array.isArray(config.config.language)
|
|
42
|
+
? config.config.language
|
|
43
|
+
: [config.config.language];
|
|
44
|
+
const indexConfig = {
|
|
45
|
+
chunkSize: config.config.indexing?.chunkSize,
|
|
46
|
+
overlap: config.config.indexing?.overlap,
|
|
47
|
+
batchSize: config.config.indexing?.batchSize,
|
|
48
|
+
concurrency: config.config.indexing?.concurrency,
|
|
49
|
+
languages,
|
|
50
|
+
};
|
|
51
|
+
const collectFiles = deps?.collectProjectFiles ?? collectProjectFiles;
|
|
52
|
+
const files = await collectFiles(projectDir, config.config);
|
|
53
|
+
const filesWithContent = [];
|
|
54
|
+
for (const filePath of files) {
|
|
55
|
+
try {
|
|
56
|
+
const buffer = await fs.promises.readFile(filePath);
|
|
57
|
+
if (buffer.includes(0))
|
|
58
|
+
continue; // Skip binary
|
|
59
|
+
const content = buffer.toString('utf8');
|
|
60
|
+
if (content.includes('\uFFFD'))
|
|
61
|
+
continue; // Invalid UTF-8
|
|
62
|
+
if (!content.trim())
|
|
63
|
+
continue;
|
|
64
|
+
const relPath = path.relative(projectDir, filePath);
|
|
65
|
+
const projectLangs = Array.isArray(config.config.language)
|
|
66
|
+
? config.config.language
|
|
67
|
+
: [config.config.language];
|
|
68
|
+
const language = getLanguageFromPath(filePath, projectLangs);
|
|
69
|
+
filesWithContent.push({ path: relPath, content, language });
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
spinner?.warn(` Skipped ${path.relative(projectDir, filePath)}: ${err.message}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
let totalChunks = 0;
|
|
76
|
+
let lastBatchData = {};
|
|
77
|
+
try {
|
|
78
|
+
for (let i = 0; i < filesWithContent.length; i += API_INDEX_BATCH_SIZE) {
|
|
79
|
+
const batch = filesWithContent.slice(i, i + API_INDEX_BATCH_SIZE);
|
|
80
|
+
const res = await client.indexContent(group, projectName, batch, {
|
|
81
|
+
config: indexConfig,
|
|
82
|
+
force: opts.force && i === 0,
|
|
83
|
+
timeout: opts.timeout ?? 300_000,
|
|
84
|
+
signal: deps?.signal,
|
|
85
|
+
});
|
|
86
|
+
if (res.status !== 200) {
|
|
87
|
+
const data = res.data;
|
|
88
|
+
spinner?.fail(`Indexing failed: ${data.error ?? 'Unknown error'}`);
|
|
89
|
+
outputError(String(data.error ?? 'Unknown error'), opts.json ?? false);
|
|
90
|
+
}
|
|
91
|
+
const data = res.data;
|
|
92
|
+
lastBatchData = data;
|
|
93
|
+
totalChunks += data.chunks ?? 0;
|
|
94
|
+
if (i + API_INDEX_BATCH_SIZE < filesWithContent.length && spinner) {
|
|
95
|
+
spinner.text = `Indexed ${Math.min(i + API_INDEX_BATCH_SIZE, filesWithContent.length)}/${filesWithContent.length} files...`;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const data = {
|
|
99
|
+
group,
|
|
100
|
+
project: projectName,
|
|
101
|
+
chunks: totalChunks,
|
|
102
|
+
skipped: lastBatchData.skipped,
|
|
103
|
+
errors: lastBatchData.errors,
|
|
104
|
+
};
|
|
105
|
+
if (!validateIndexResponse(data)) {
|
|
106
|
+
spinner?.fail('Invalid response from server');
|
|
107
|
+
outputError('Expected: { group, project, chunks }', opts.json ?? false);
|
|
108
|
+
}
|
|
109
|
+
const elapsed = ((Date.now() - start) / 1000).toFixed(1);
|
|
110
|
+
if (opts.json) {
|
|
111
|
+
const result = {
|
|
112
|
+
group: data.group,
|
|
113
|
+
project: data.project,
|
|
114
|
+
chunks: data.chunks,
|
|
115
|
+
skipped: data.skipped,
|
|
116
|
+
errors: data.errors,
|
|
117
|
+
elapsed: parseFloat(elapsed),
|
|
118
|
+
timestamp: new Date().toISOString(),
|
|
119
|
+
};
|
|
120
|
+
console.log(JSON.stringify(result, null, 2));
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
spinner?.succeed(`Indexed ${chalk.bold(data.project)} in group ${chalk.bold(data.group)}`);
|
|
124
|
+
console.log(chalk.dim(` ${data.chunks} chunks indexed in ${elapsed}s`));
|
|
125
|
+
if (opts.verbose && data.skipped !== undefined && data.skipped > 0) {
|
|
126
|
+
console.log(chalk.dim(` ${data.skipped} files skipped`));
|
|
127
|
+
}
|
|
128
|
+
if (data.errors && data.errors.length > 0) {
|
|
129
|
+
console.log(chalk.yellow(` ${data.errors.length} errors encountered`));
|
|
130
|
+
if (opts.verbose) {
|
|
131
|
+
data.errors.forEach((err) => console.log(chalk.yellow(` - ${err}`)));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
const message = err.message;
|
|
137
|
+
if (message.startsWith('EXIT:')) {
|
|
138
|
+
const code = parseInt(message.slice(5), 10);
|
|
139
|
+
process.exit(Number.isNaN(code) ? 1 : code);
|
|
140
|
+
}
|
|
141
|
+
if (message.includes('aborted') ||
|
|
142
|
+
message.includes('AbortError') ||
|
|
143
|
+
message.includes('Request aborted')) {
|
|
144
|
+
spinner?.fail('Indexing cancelled');
|
|
145
|
+
process.exit(130);
|
|
146
|
+
}
|
|
147
|
+
if (opts.json) {
|
|
148
|
+
console.log(JSON.stringify({ error: message }));
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
spinner?.fail('Indexing failed');
|
|
152
|
+
console.error(chalk.red(message));
|
|
153
|
+
}
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
export const indexCommand = new Command('index')
|
|
158
|
+
.description('Index the current project')
|
|
159
|
+
.option('--server <url>', 'MCP server URL', 'http://localhost:9876')
|
|
160
|
+
.option('--timeout <ms>', 'Request timeout in milliseconds', '300000')
|
|
161
|
+
.option('-f, --force', 'Force reindex (clear existing data)')
|
|
162
|
+
.option('-v, --verbose', 'Show detailed output')
|
|
163
|
+
.option('--dry-run', 'Show what would be indexed without indexing')
|
|
164
|
+
.option('--json', 'Output as JSON')
|
|
165
|
+
.action(async (opts) => {
|
|
166
|
+
let config;
|
|
167
|
+
try {
|
|
168
|
+
config = readConfig();
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
const msg = err.message;
|
|
172
|
+
if (opts.json) {
|
|
173
|
+
console.log(JSON.stringify({ error: msg }));
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
console.error(chalk.red(msg));
|
|
177
|
+
}
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
const { config: projectConfig, projectDir } = config;
|
|
181
|
+
if (opts.dryRun) {
|
|
182
|
+
printDryRun(config);
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
let timeout = 300_000;
|
|
186
|
+
if (opts.timeout) {
|
|
187
|
+
const parsed = parseInt(opts.timeout, 10);
|
|
188
|
+
if (Number.isNaN(parsed) || parsed <= 0) {
|
|
189
|
+
const msg = `Invalid timeout: ${opts.timeout}. Must be a positive number.`;
|
|
190
|
+
if (opts.json) {
|
|
191
|
+
console.log(JSON.stringify({ error: msg }));
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
console.error(chalk.red(msg));
|
|
195
|
+
}
|
|
196
|
+
process.exit(1);
|
|
197
|
+
}
|
|
198
|
+
timeout = parsed;
|
|
199
|
+
}
|
|
200
|
+
const client = new ApiClient(opts.server);
|
|
201
|
+
try {
|
|
202
|
+
await client.health({ timeout: 3000 });
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
const msg = `Cannot connect to server at ${opts.server}\n` +
|
|
206
|
+
'Make sure the server is running with: docker compose up -d';
|
|
207
|
+
if (opts.json) {
|
|
208
|
+
console.log(JSON.stringify({ error: msg }));
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
console.error(chalk.red(msg));
|
|
212
|
+
}
|
|
213
|
+
process.exit(1);
|
|
214
|
+
}
|
|
215
|
+
const controller = new AbortController();
|
|
216
|
+
let spinner = null;
|
|
217
|
+
const sigintHandler = () => {
|
|
218
|
+
spinner?.stop();
|
|
219
|
+
if (!opts.json) {
|
|
220
|
+
console.log(chalk.yellow('\nIndexing cancelled by user'));
|
|
221
|
+
}
|
|
222
|
+
controller.abort();
|
|
223
|
+
process.exit(130);
|
|
224
|
+
};
|
|
225
|
+
process.on('SIGINT', sigintHandler);
|
|
226
|
+
spinner = opts.json ? null : ora(`Indexing ${projectConfig.group}/${projectDir}...`).start();
|
|
227
|
+
try {
|
|
228
|
+
await runIndex(client, projectDir, projectConfig.group, config, {
|
|
229
|
+
server: opts.server,
|
|
230
|
+
timeout,
|
|
231
|
+
force: opts.force,
|
|
232
|
+
verbose: opts.verbose,
|
|
233
|
+
json: opts.json,
|
|
234
|
+
}, { spinner, signal: controller.signal });
|
|
235
|
+
}
|
|
236
|
+
finally {
|
|
237
|
+
process.off('SIGINT', sigintHandler);
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
//# sourceMappingURL=index-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-cmd.js","sourceRoot":"","sources":["../../src/commands/index-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { type SupportedLanguage } from '../config.js';
|
|
3
|
+
import { type LspInstallerDeps } from '../lsp-installers.js';
|
|
4
|
+
export declare function validateGroupName(value: string): true | string;
|
|
5
|
+
export declare function appendToGitignore(gitignorePath: string): void;
|
|
6
|
+
export interface InitOptions {
|
|
7
|
+
force?: boolean;
|
|
8
|
+
group?: string;
|
|
9
|
+
language?: string;
|
|
10
|
+
nonInteractive?: boolean;
|
|
11
|
+
skipCclsp?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface InitDeps {
|
|
14
|
+
promptGroup?: (defaultGroup: string) => Promise<string>;
|
|
15
|
+
promptLanguage?: (detected: SupportedLanguage | null) => Promise<string | string[]>;
|
|
16
|
+
promptAddPaths?: () => Promise<boolean>;
|
|
17
|
+
promptPaths?: (dirs: string[]) => Promise<string[] | undefined>;
|
|
18
|
+
promptAddExclude?: () => Promise<boolean>;
|
|
19
|
+
promptConfigureEmbeddings?: () => Promise<boolean>;
|
|
20
|
+
promptEmbeddingsProvider?: () => Promise<'ollama' | 'openai'>;
|
|
21
|
+
promptEmbeddingsModel?: (provider: string) => Promise<string>;
|
|
22
|
+
promptGitignore?: () => Promise<boolean>;
|
|
23
|
+
promptSetupCclsp?: () => Promise<boolean>;
|
|
24
|
+
lspDeps?: LspInstallerDeps;
|
|
25
|
+
}
|
|
26
|
+
export declare function runInit(projectDir: string, opts: InitOptions, deps?: InitDeps): Promise<void>;
|
|
27
|
+
export declare const initCommand: Command;
|
|
28
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAOL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAgI9B,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAO9D;AAED,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAK7D;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,KAAK,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACpF,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAChE,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,yBAAyB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,wBAAwB,CAAC,EAAE,MAAM,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAC9D,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9D,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,wBAAsB,OAAO,CAC3B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,WAAW,EACjB,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CAoSf;AAED,eAAO,MAAM,WAAW,SAmBpB,CAAC"}
|