indexer-cli 0.2.1
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/README.md +156 -0
- package/bin/indexer-cli.js +97 -0
- package/dist/_temp_test.d.ts +1 -0
- package/dist/_temp_test.js +4 -0
- package/dist/_temp_test.js.map +1 -0
- package/dist/chunking/adaptive.d.ts +15 -0
- package/dist/chunking/adaptive.js +43 -0
- package/dist/chunking/adaptive.js.map +1 -0
- package/dist/chunking/function.d.ts +6 -0
- package/dist/chunking/function.js +96 -0
- package/dist/chunking/function.js.map +1 -0
- package/dist/chunking/index.d.ts +5 -0
- package/dist/chunking/index.js +22 -0
- package/dist/chunking/index.js.map +1 -0
- package/dist/chunking/module.d.ts +6 -0
- package/dist/chunking/module.js +33 -0
- package/dist/chunking/module.js.map +1 -0
- package/dist/chunking/single.d.ts +4 -0
- package/dist/chunking/single.js +19 -0
- package/dist/chunking/single.js.map +1 -0
- package/dist/chunking/types.d.ts +17 -0
- package/dist/chunking/types.js +3 -0
- package/dist/chunking/types.js.map +1 -0
- package/dist/cli/commands/architecture.d.ts +2 -0
- package/dist/cli/commands/architecture.js +162 -0
- package/dist/cli/commands/architecture.js.map +1 -0
- package/dist/cli/commands/context.d.ts +2 -0
- package/dist/cli/commands/context.js +241 -0
- package/dist/cli/commands/context.js.map +1 -0
- package/dist/cli/commands/deps.d.ts +2 -0
- package/dist/cli/commands/deps.js +129 -0
- package/dist/cli/commands/deps.js.map +1 -0
- package/dist/cli/commands/enrich.d.ts +2 -0
- package/dist/cli/commands/ensure-indexed.d.ts +4 -0
- package/dist/cli/commands/ensure-indexed.js +168 -0
- package/dist/cli/commands/ensure-indexed.js.map +1 -0
- package/dist/cli/commands/explain.d.ts +2 -0
- package/dist/cli/commands/explain.js +165 -0
- package/dist/cli/commands/explain.js.map +1 -0
- package/dist/cli/commands/index.d.ts +2 -0
- package/dist/cli/commands/index.js +271 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.js +132 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/search.d.ts +2 -0
- package/dist/cli/commands/search.js +206 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +2 -0
- package/dist/cli/commands/setup.js +425 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/skill-template.d.ts +6 -0
- package/dist/cli/commands/skill-template.js +72 -0
- package/dist/cli/commands/skill-template.js.map +1 -0
- package/dist/cli/commands/structure.d.ts +2 -0
- package/dist/cli/commands/structure.js +243 -0
- package/dist/cli/commands/structure.js.map +1 -0
- package/dist/cli/commands/uninstall.d.ts +2 -0
- package/dist/cli/commands/uninstall.js +138 -0
- package/dist/cli/commands/uninstall.js.map +1 -0
- package/dist/cli/entry.d.ts +1 -0
- package/dist/cli/entry.js +55 -0
- package/dist/cli/entry.js.map +1 -0
- package/dist/cli/help-text.d.ts +2 -0
- package/dist/cli/help-text.js +9 -0
- package/dist/cli/help-text.js.map +1 -0
- package/dist/cli/version.d.ts +1 -0
- package/dist/cli/version.js +9 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/core/config.d.ts +21 -0
- package/dist/core/config.js +77 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/logger.d.ts +19 -0
- package/dist/core/logger.js +116 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/types.d.ts +194 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/update-check.d.ts +1 -0
- package/dist/core/update-check.js +61 -0
- package/dist/core/update-check.js.map +1 -0
- package/dist/embedding/ollama.d.ts +29 -0
- package/dist/embedding/ollama.js +264 -0
- package/dist/embedding/ollama.js.map +1 -0
- package/dist/engine/architecture.d.ts +55 -0
- package/dist/engine/architecture.js +359 -0
- package/dist/engine/architecture.js.map +1 -0
- package/dist/engine/dependency-resolver.d.ts +4 -0
- package/dist/engine/dependency-resolver.js +69 -0
- package/dist/engine/dependency-resolver.js.map +1 -0
- package/dist/engine/git.d.ts +11 -0
- package/dist/engine/git.js +246 -0
- package/dist/engine/git.js.map +1 -0
- package/dist/engine/indexer.d.ts +86 -0
- package/dist/engine/indexer.js +933 -0
- package/dist/engine/indexer.js.map +1 -0
- package/dist/engine/scanner.d.ts +1 -0
- package/dist/engine/scanner.js +42 -0
- package/dist/engine/scanner.js.map +1 -0
- package/dist/engine/searcher.d.ts +26 -0
- package/dist/engine/searcher.js +70 -0
- package/dist/engine/searcher.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/languages/csharp.d.ts +25 -0
- package/dist/languages/csharp.js +311 -0
- package/dist/languages/csharp.js.map +1 -0
- package/dist/languages/gdscript.d.ts +25 -0
- package/dist/languages/gdscript.js +382 -0
- package/dist/languages/gdscript.js.map +1 -0
- package/dist/languages/plugin.d.ts +73 -0
- package/dist/languages/plugin.js +35 -0
- package/dist/languages/plugin.js.map +1 -0
- package/dist/languages/python.d.ts +24 -0
- package/dist/languages/python.js +292 -0
- package/dist/languages/python.js.map +1 -0
- package/dist/languages/ruby.d.ts +25 -0
- package/dist/languages/ruby.js +328 -0
- package/dist/languages/ruby.js.map +1 -0
- package/dist/languages/typescript.d.ts +21 -0
- package/dist/languages/typescript.js +439 -0
- package/dist/languages/typescript.js.map +1 -0
- package/dist/storage/sqlite.d.ts +51 -0
- package/dist/storage/sqlite.js +726 -0
- package/dist/storage/sqlite.js.map +1 -0
- package/dist/storage/vectors.d.ts +39 -0
- package/dist/storage/vectors.js +450 -0
- package/dist/storage/vectors.js.map +1 -0
- package/dist/utils/gitignore.d.ts +4 -0
- package/dist/utils/gitignore.js +85 -0
- package/dist/utils/gitignore.js.map +1 -0
- package/dist/utils/hash.d.ts +1 -0
- package/dist/utils/hash.js +12 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/token-estimator.d.ts +3 -0
- package/dist/utils/token-estimator.js +13 -0
- package/dist/utils/token-estimator.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerSetupCommand = registerSetupCommand;
|
|
7
|
+
const node_child_process_1 = require("node:child_process");
|
|
8
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
9
|
+
const PLATFORM = node_os_1.default.platform();
|
|
10
|
+
const IS_MAC = PLATFORM === "darwin";
|
|
11
|
+
const IS_LINUX = PLATFORM === "linux";
|
|
12
|
+
if (!IS_MAC && !IS_LINUX) {
|
|
13
|
+
console.error(`Unsupported platform: ${PLATFORM}. Only macOS and Linux are supported.`);
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
function run(cmd, opts) {
|
|
17
|
+
const output = (0, node_child_process_1.execSync)(cmd, {
|
|
18
|
+
stdio: opts?.stdio ?? "pipe",
|
|
19
|
+
encoding: "utf8",
|
|
20
|
+
});
|
|
21
|
+
return normalizeCommandOutput(output);
|
|
22
|
+
}
|
|
23
|
+
function normalizeCommandOutput(output) {
|
|
24
|
+
if (typeof output === "string") {
|
|
25
|
+
return output.trim();
|
|
26
|
+
}
|
|
27
|
+
if (Buffer.isBuffer(output)) {
|
|
28
|
+
return output.toString("utf8").trim();
|
|
29
|
+
}
|
|
30
|
+
return "";
|
|
31
|
+
}
|
|
32
|
+
function cmdExists(cmd) {
|
|
33
|
+
try {
|
|
34
|
+
(0, node_child_process_1.execSync)(`command -v ${cmd}`, { stdio: "pipe" });
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function bold(text) {
|
|
42
|
+
return `\x1b[1m${text}\x1b[0m`;
|
|
43
|
+
}
|
|
44
|
+
function green(text) {
|
|
45
|
+
return `\x1b[32m${text}\x1b[0m`;
|
|
46
|
+
}
|
|
47
|
+
function yellow(text) {
|
|
48
|
+
return `\x1b[33m${text}\x1b[0m`;
|
|
49
|
+
}
|
|
50
|
+
function red(text) {
|
|
51
|
+
return `\x1b[31m${text}\x1b[0m`;
|
|
52
|
+
}
|
|
53
|
+
function createSkippedResult(name, detail) {
|
|
54
|
+
return { name, status: "skipped", detail };
|
|
55
|
+
}
|
|
56
|
+
const results = [];
|
|
57
|
+
// ── Node.js ─────────────────────────────────────────────────────────────
|
|
58
|
+
function checkNode() {
|
|
59
|
+
if (!cmdExists("node")) {
|
|
60
|
+
console.log(` ${yellow("⨯")} Node.js not found. Installing...`);
|
|
61
|
+
try {
|
|
62
|
+
if (IS_MAC && cmdExists("brew")) {
|
|
63
|
+
run("brew install node", { stdio: "inherit" });
|
|
64
|
+
}
|
|
65
|
+
else if (IS_LINUX && cmdExists("apt-get")) {
|
|
66
|
+
run("sudo apt-get update -qq", { stdio: "inherit" });
|
|
67
|
+
run("sudo apt-get install -y -qq nodejs", { stdio: "inherit" });
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return {
|
|
71
|
+
name: "Node.js",
|
|
72
|
+
status: "failed",
|
|
73
|
+
detail: "Install manually: https://nodejs.org/en/download",
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
return {
|
|
79
|
+
name: "Node.js",
|
|
80
|
+
status: "failed",
|
|
81
|
+
detail: `Install failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
const version = run("node --version");
|
|
87
|
+
const major = parseInt(version.replace(/^v/, "").split(".")[0], 10);
|
|
88
|
+
if (major >= 18) {
|
|
89
|
+
return { name: "Node.js", status: "ok", detail: version };
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
name: "Node.js",
|
|
93
|
+
status: "failed",
|
|
94
|
+
detail: `${version} found, but 18+ required`,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return {
|
|
99
|
+
name: "Node.js",
|
|
100
|
+
status: "failed",
|
|
101
|
+
detail: "Failed to detect version",
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// ── Git ─────────────────────────────────────────────────────────────────
|
|
106
|
+
function checkGit() {
|
|
107
|
+
if (!cmdExists("git")) {
|
|
108
|
+
console.log(` ${yellow("⨯")} git not found. Installing...`);
|
|
109
|
+
try {
|
|
110
|
+
if (IS_MAC && cmdExists("brew")) {
|
|
111
|
+
run("brew install git", { stdio: "inherit" });
|
|
112
|
+
}
|
|
113
|
+
else if (IS_LINUX && cmdExists("apt-get")) {
|
|
114
|
+
run("sudo apt-get install -y -qq git", { stdio: "inherit" });
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
return {
|
|
118
|
+
name: "Git",
|
|
119
|
+
status: "failed",
|
|
120
|
+
detail: "Install manually: https://git-scm.com",
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (e) {
|
|
125
|
+
return {
|
|
126
|
+
name: "Git",
|
|
127
|
+
status: "failed",
|
|
128
|
+
detail: `Install failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
const version = run("git --version");
|
|
134
|
+
return { name: "Git", status: "ok", detail: version };
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return {
|
|
138
|
+
name: "Git",
|
|
139
|
+
status: "failed",
|
|
140
|
+
detail: "Failed to detect version",
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// ── Build tools ─────────────────────────────────────────────────────────
|
|
145
|
+
function checkBuildTools() {
|
|
146
|
+
if (IS_MAC) {
|
|
147
|
+
try {
|
|
148
|
+
const path = run("xcode-select -p");
|
|
149
|
+
if (path) {
|
|
150
|
+
return { name: "Build tools (Xcode CLT)", status: "ok", detail: path };
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// xcode-select -p throws when CLT not installed
|
|
155
|
+
}
|
|
156
|
+
console.log(` ${yellow("⨯")} Xcode CLT not found. Installing...`);
|
|
157
|
+
try {
|
|
158
|
+
run("xcode-select --install", { stdio: "inherit" });
|
|
159
|
+
return {
|
|
160
|
+
name: "Build tools (Xcode CLT)",
|
|
161
|
+
status: "installed",
|
|
162
|
+
detail: "Follow the prompt to complete installation",
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return {
|
|
167
|
+
name: "Build tools (Xcode CLT)",
|
|
168
|
+
status: "failed",
|
|
169
|
+
detail: "Run manually: xcode-select --install",
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (!(cmdExists("gcc") || cmdExists("cc")) || !cmdExists("make")) {
|
|
174
|
+
console.log(` ${yellow("⨯")} Build tools not found. Installing...`);
|
|
175
|
+
try {
|
|
176
|
+
if (cmdExists("apt-get")) {
|
|
177
|
+
run("sudo apt-get update -qq", { stdio: "inherit" });
|
|
178
|
+
run("sudo apt-get install -y -qq build-essential", {
|
|
179
|
+
stdio: "inherit",
|
|
180
|
+
});
|
|
181
|
+
return { name: "Build tools (gcc/make)", status: "installed" };
|
|
182
|
+
}
|
|
183
|
+
return {
|
|
184
|
+
name: "Build tools (gcc/make)",
|
|
185
|
+
status: "failed",
|
|
186
|
+
detail: "Install build-essential or equivalent manually",
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
catch (e) {
|
|
190
|
+
return {
|
|
191
|
+
name: "Build tools",
|
|
192
|
+
status: "failed",
|
|
193
|
+
detail: `Install failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
const gccVersion = run("gcc --version | head -1");
|
|
199
|
+
return { name: "Build tools (gcc/make)", status: "ok", detail: gccVersion };
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
return { name: "Build tools", status: "ok" };
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// ── Python (needed by node-gyp for native modules) ──────────────────────
|
|
206
|
+
function checkPython() {
|
|
207
|
+
const pythonCmd = cmdExists("python3")
|
|
208
|
+
? "python3"
|
|
209
|
+
: cmdExists("python")
|
|
210
|
+
? "python"
|
|
211
|
+
: null;
|
|
212
|
+
if (pythonCmd) {
|
|
213
|
+
try {
|
|
214
|
+
const version = run(`${pythonCmd} --version`);
|
|
215
|
+
return { name: "Python (for node-gyp)", status: "ok", detail: version };
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
// python exists but --version failed, skip
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
console.log(` ${yellow("⨯")} Python not found. Installing...`);
|
|
222
|
+
try {
|
|
223
|
+
if (IS_MAC && cmdExists("brew")) {
|
|
224
|
+
run("brew install python3", { stdio: "inherit" });
|
|
225
|
+
}
|
|
226
|
+
else if (IS_LINUX && cmdExists("apt-get")) {
|
|
227
|
+
run("sudo apt-get install -y -qq python3", { stdio: "inherit" });
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
return {
|
|
231
|
+
name: "Python (for node-gyp)",
|
|
232
|
+
status: "failed",
|
|
233
|
+
detail: "Install Python 3 manually",
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
return { name: "Python (for node-gyp)", status: "installed" };
|
|
237
|
+
}
|
|
238
|
+
catch (e) {
|
|
239
|
+
return {
|
|
240
|
+
name: "Python (for node-gyp)",
|
|
241
|
+
status: "failed",
|
|
242
|
+
detail: `Install failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// ── Ollama ──────────────────────────────────────────────────────────────
|
|
247
|
+
function checkOllama() {
|
|
248
|
+
if (!cmdExists("ollama")) {
|
|
249
|
+
return {
|
|
250
|
+
name: "Ollama",
|
|
251
|
+
status: "failed",
|
|
252
|
+
detail: "Install Ollama manually from https://ollama.com/download and re-run `indexer-cli setup`.",
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
const version = run("ollama --version");
|
|
257
|
+
return { name: "Ollama", status: "ok", detail: version };
|
|
258
|
+
}
|
|
259
|
+
catch {
|
|
260
|
+
return { name: "Ollama", status: "ok", detail: "installed" };
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
function ensureOllamaRunning() {
|
|
264
|
+
if (!cmdExists("ollama")) {
|
|
265
|
+
return createSkippedResult("Ollama daemon", "Skipped until Ollama is installed manually.");
|
|
266
|
+
}
|
|
267
|
+
try {
|
|
268
|
+
const result = run("ollama ps");
|
|
269
|
+
void result;
|
|
270
|
+
return { name: "Ollama daemon", status: "ok", detail: "running" };
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
// ollama ps throws when daemon not running
|
|
274
|
+
}
|
|
275
|
+
console.log(` Starting Ollama daemon...`);
|
|
276
|
+
try {
|
|
277
|
+
run("ollama serve > /dev/null 2>&1 &");
|
|
278
|
+
let attempts = 0;
|
|
279
|
+
while (attempts < 30) {
|
|
280
|
+
try {
|
|
281
|
+
run("ollama ps");
|
|
282
|
+
return {
|
|
283
|
+
name: "Ollama daemon",
|
|
284
|
+
status: "installed",
|
|
285
|
+
detail: "started",
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
attempts++;
|
|
290
|
+
(0, node_child_process_1.execSync)("sleep 1", { stdio: "pipe" });
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
return {
|
|
294
|
+
name: "Ollama daemon",
|
|
295
|
+
status: "failed",
|
|
296
|
+
detail: "Timed out waiting for Ollama to start. Run `ollama serve` manually.",
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
catch (e) {
|
|
300
|
+
return {
|
|
301
|
+
name: "Ollama daemon",
|
|
302
|
+
status: "failed",
|
|
303
|
+
detail: `Failed to start: ${e instanceof Error ? e.message : String(e)}`,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
// ── jina-8k model ───────────────────────────────────────────────────────
|
|
308
|
+
const BASE_MODEL = "unclemusclez/jina-embeddings-v2-base-code:q5";
|
|
309
|
+
const CUSTOM_MODEL = "jina-8k";
|
|
310
|
+
function checkJinaModel() {
|
|
311
|
+
if (!cmdExists("ollama")) {
|
|
312
|
+
return createSkippedResult(`Model ${CUSTOM_MODEL}`, "Skipped until Ollama is installed manually.");
|
|
313
|
+
}
|
|
314
|
+
try {
|
|
315
|
+
const models = run("ollama list");
|
|
316
|
+
if (models.includes(CUSTOM_MODEL)) {
|
|
317
|
+
return { name: `Model ${CUSTOM_MODEL}`, status: "ok", detail: "pulled" };
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
catch {
|
|
321
|
+
// ollama list failed or model not present
|
|
322
|
+
}
|
|
323
|
+
console.log(` Pulling base model ${BASE_MODEL} (≈119MB)...`);
|
|
324
|
+
try {
|
|
325
|
+
run(`ollama pull ${BASE_MODEL}`, { stdio: "inherit" });
|
|
326
|
+
}
|
|
327
|
+
catch (e) {
|
|
328
|
+
return {
|
|
329
|
+
name: `Model ${CUSTOM_MODEL}`,
|
|
330
|
+
status: "failed",
|
|
331
|
+
detail: `Pull failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
console.log(` Creating ${CUSTOM_MODEL} with num_ctx 8192...`);
|
|
335
|
+
try {
|
|
336
|
+
const tmpdir = run("mktemp -d");
|
|
337
|
+
const modelfile = `${tmpdir}/Modelfile.jina-8k`;
|
|
338
|
+
const content = `FROM ${BASE_MODEL}\nPARAMETER num_ctx 8192\n`;
|
|
339
|
+
(0, node_child_process_1.execSync)(`cat > ${modelfile} << 'MODELEOF'\n${content}MODELEOF`, {
|
|
340
|
+
stdio: "pipe",
|
|
341
|
+
shell: "/bin/bash",
|
|
342
|
+
});
|
|
343
|
+
run(`ollama create ${CUSTOM_MODEL} -f ${modelfile}`, { stdio: "inherit" });
|
|
344
|
+
(0, node_child_process_1.execSync)(`rm -rf ${tmpdir}`, { stdio: "pipe" });
|
|
345
|
+
return { name: `Model ${CUSTOM_MODEL}`, status: "installed" };
|
|
346
|
+
}
|
|
347
|
+
catch (e) {
|
|
348
|
+
return {
|
|
349
|
+
name: `Model ${CUSTOM_MODEL}`,
|
|
350
|
+
status: "failed",
|
|
351
|
+
detail: `Create failed: ${e instanceof Error ? e.message : String(e)}`,
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
function collectOllamaResults(deps) {
|
|
356
|
+
const ollamaResult = deps.checkOllama();
|
|
357
|
+
if (ollamaResult.status === "failed") {
|
|
358
|
+
return [
|
|
359
|
+
ollamaResult,
|
|
360
|
+
createSkippedResult("Ollama daemon", "Skipped until Ollama is installed manually."),
|
|
361
|
+
createSkippedResult(`Model ${CUSTOM_MODEL}`, "Skipped until Ollama is installed manually."),
|
|
362
|
+
];
|
|
363
|
+
}
|
|
364
|
+
const daemonResult = deps.ensureOllamaRunning();
|
|
365
|
+
if (daemonResult.status === "failed") {
|
|
366
|
+
return [
|
|
367
|
+
ollamaResult,
|
|
368
|
+
daemonResult,
|
|
369
|
+
createSkippedResult(`Model ${CUSTOM_MODEL}`, "Skipped until the Ollama daemon is running."),
|
|
370
|
+
];
|
|
371
|
+
}
|
|
372
|
+
return [ollamaResult, daemonResult, deps.checkJinaModel()];
|
|
373
|
+
}
|
|
374
|
+
// ── Summary ─────────────────────────────────────────────────────────────
|
|
375
|
+
function printSummary() {
|
|
376
|
+
console.log("");
|
|
377
|
+
console.log(bold(" Setup Summary"));
|
|
378
|
+
console.log(" ─────────────────────────────────────────");
|
|
379
|
+
let allOk = true;
|
|
380
|
+
for (const r of results) {
|
|
381
|
+
const icon = r.status === "ok"
|
|
382
|
+
? green("✓")
|
|
383
|
+
: r.status === "installed"
|
|
384
|
+
? green("✓")
|
|
385
|
+
: r.status === "skipped"
|
|
386
|
+
? yellow("○")
|
|
387
|
+
: red("✗");
|
|
388
|
+
const suffix = r.detail ? ` (${r.detail})` : "";
|
|
389
|
+
const label = r.status === "installed" ? `${r.name} — installed` : r.name;
|
|
390
|
+
console.log(` ${icon} ${label}${suffix}`);
|
|
391
|
+
if (r.status === "failed")
|
|
392
|
+
allOk = false;
|
|
393
|
+
}
|
|
394
|
+
console.log("");
|
|
395
|
+
if (!allOk) {
|
|
396
|
+
console.log(red(" Some dependencies failed. Resolve the issues above and re-run `indexer-cli setup`."));
|
|
397
|
+
process.exitCode = 1;
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
console.log(green(" All dependencies ready. Run `indexer-cli init` in your project to start."));
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
// ── Main ────────────────────────────────────────────────────────────────
|
|
404
|
+
function registerSetupCommand(program) {
|
|
405
|
+
program
|
|
406
|
+
.command("setup")
|
|
407
|
+
.description("Check system prerequisites and prepare Ollama for indexer-cli")
|
|
408
|
+
.action(() => {
|
|
409
|
+
console.log(bold("\n indexer-cli dependency setup\n"));
|
|
410
|
+
console.log(` Platform: ${node_os_1.default.type()} ${node_os_1.default.release()} (${node_os_1.default.arch()})\n`);
|
|
411
|
+
console.log(bold(" Checking system prerequisites..."));
|
|
412
|
+
results.push(checkNode());
|
|
413
|
+
results.push(checkGit());
|
|
414
|
+
results.push(checkBuildTools());
|
|
415
|
+
results.push(checkPython());
|
|
416
|
+
console.log(bold("\n Checking Ollama & embedding model..."));
|
|
417
|
+
results.push(...collectOllamaResults({
|
|
418
|
+
checkOllama,
|
|
419
|
+
ensureOllamaRunning,
|
|
420
|
+
checkJinaModel,
|
|
421
|
+
}));
|
|
422
|
+
printSummary();
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SKILL.md template for Claude Code integration.
|
|
3
|
+
*
|
|
4
|
+
* Written to `.claude/skills/repo-discovery/SKILL.md` during `indexer-cli init`.
|
|
5
|
+
*/
|
|
6
|
+
export declare const SKILL_MD = "---\nname: repo-discovery\ndescription: Mandatory for repository discovery. Before grep/glob/find, first use indexer-cli whenever the task involves finding implementations, tracing behavior, locating symbols, identifying entry points, inspecting module structure, or understanding an unfamiliar area of this repo.\nallowed-tools: Bash(indexer-cli:*)\n---\n\n# Repository discovery with indexer-cli\n\nUse this skill for discovery tasks inside this repository.\n\n## Required behavior\n\nAlways start with indexer-cli for repository discovery.\nDo not use grep, glob, or find until indexer-cli was insufficient, or you need an exact literal text match after narrowing the area.\n\n## Load this skill when\n\n- You need to find where something is implemented\n- You need to trace a symbol, handler, feature, or behavior\n- You are entering an unfamiliar module or directory\n- You need structure, entry points, or dependency context\n- The task is exploratory and you do not yet know the right file\n\n## Skip this skill when\n\n- The exact file is already known and the task stays inside it\n- You only need an exact literal text match\n- The task is outside this repository\n\n## First command\n\nRun one of these first:\n\n```bash\nindexer-cli search \"<query>\" --json\nindexer-cli search \"<query>\" --json --path-prefix src/<area>\nindexer-cli search \"<query>\" --json --chunk-types impl,types\nindexer-cli structure --json --path-prefix src/<area>\nindexer-cli structure --json --kind class\nindexer-cli architecture --json\nindexer-cli index --status --json\n```\n\n## Reading search results\n\n`indexer-cli search --json` returns ranked code chunks, not whole files.\nEach result includes `filePath`, `startLine`, `endLine`, `score`, `primarySymbol`, and `content`.\n\n- Use `score` to prefer the most relevant chunks first and filter obvious low-relevance noise.\n- Use `primarySymbol` to see which function/class/type the chunk belongs to before opening the file.\n- Treat `content` as supporting context, but rank and filter with `score` + `primarySymbol` instead of raw text alone.\n\n## Reference\n\n### Chunk types (--chunk-types)\n\n`full_file`, `imports`, `preamble`, `declaration`, `module_section`, `impl`, `types`\n\n### Symbol kinds (--kind)\n\n`function`, `class`, `method`, `interface`, `type`, `variable`, `module`, `signal`\n";
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SKILL_MD = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* SKILL.md template for Claude Code integration.
|
|
6
|
+
*
|
|
7
|
+
* Written to `.claude/skills/repo-discovery/SKILL.md` during `indexer-cli init`.
|
|
8
|
+
*/
|
|
9
|
+
exports.SKILL_MD = `\
|
|
10
|
+
---
|
|
11
|
+
name: repo-discovery
|
|
12
|
+
description: Mandatory for repository discovery. Before grep/glob/find, first use indexer-cli whenever the task involves finding implementations, tracing behavior, locating symbols, identifying entry points, inspecting module structure, or understanding an unfamiliar area of this repo.
|
|
13
|
+
allowed-tools: Bash(indexer-cli:*)
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Repository discovery with indexer-cli
|
|
17
|
+
|
|
18
|
+
Use this skill for discovery tasks inside this repository.
|
|
19
|
+
|
|
20
|
+
## Required behavior
|
|
21
|
+
|
|
22
|
+
Always start with indexer-cli for repository discovery.
|
|
23
|
+
Do not use grep, glob, or find until indexer-cli was insufficient, or you need an exact literal text match after narrowing the area.
|
|
24
|
+
|
|
25
|
+
## Load this skill when
|
|
26
|
+
|
|
27
|
+
- You need to find where something is implemented
|
|
28
|
+
- You need to trace a symbol, handler, feature, or behavior
|
|
29
|
+
- You are entering an unfamiliar module or directory
|
|
30
|
+
- You need structure, entry points, or dependency context
|
|
31
|
+
- The task is exploratory and you do not yet know the right file
|
|
32
|
+
|
|
33
|
+
## Skip this skill when
|
|
34
|
+
|
|
35
|
+
- The exact file is already known and the task stays inside it
|
|
36
|
+
- You only need an exact literal text match
|
|
37
|
+
- The task is outside this repository
|
|
38
|
+
|
|
39
|
+
## First command
|
|
40
|
+
|
|
41
|
+
Run one of these first:
|
|
42
|
+
|
|
43
|
+
\`\`\`bash
|
|
44
|
+
indexer-cli search "<query>" --json
|
|
45
|
+
indexer-cli search "<query>" --json --path-prefix src/<area>
|
|
46
|
+
indexer-cli search "<query>" --json --chunk-types impl,types
|
|
47
|
+
indexer-cli structure --json --path-prefix src/<area>
|
|
48
|
+
indexer-cli structure --json --kind class
|
|
49
|
+
indexer-cli architecture --json
|
|
50
|
+
indexer-cli index --status --json
|
|
51
|
+
\`\`\`
|
|
52
|
+
|
|
53
|
+
## Reading search results
|
|
54
|
+
|
|
55
|
+
\`indexer-cli search --json\` returns ranked code chunks, not whole files.
|
|
56
|
+
Each result includes \`filePath\`, \`startLine\`, \`endLine\`, \`score\`, \`primarySymbol\`, and \`content\`.
|
|
57
|
+
|
|
58
|
+
- Use \`score\` to prefer the most relevant chunks first and filter obvious low-relevance noise.
|
|
59
|
+
- Use \`primarySymbol\` to see which function/class/type the chunk belongs to before opening the file.
|
|
60
|
+
- Treat \`content\` as supporting context, but rank and filter with \`score\` + \`primarySymbol\` instead of raw text alone.
|
|
61
|
+
|
|
62
|
+
## Reference
|
|
63
|
+
|
|
64
|
+
### Chunk types (--chunk-types)
|
|
65
|
+
|
|
66
|
+
\`full_file\`, \`imports\`, \`preamble\`, \`declaration\`, \`module_section\`, \`impl\`, \`types\`
|
|
67
|
+
|
|
68
|
+
### Symbol kinds (--kind)
|
|
69
|
+
|
|
70
|
+
\`function\`, \`class\`, \`method\`, \`interface\`, \`type\`, \`variable\`, \`module\`, \`signal\`
|
|
71
|
+
`;
|
|
72
|
+
//# sourceMappingURL=skill-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-template.js","sourceRoot":"","sources":["../../../src/cli/commands/skill-template.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACU,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DvB,CAAC"}
|