@knowledgine/cli 0.1.0 → 0.2.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.
Files changed (87) hide show
  1. package/dist/commands/capture.d.ts +10 -0
  2. package/dist/commands/capture.d.ts.map +1 -0
  3. package/dist/commands/capture.js +132 -0
  4. package/dist/commands/capture.js.map +1 -0
  5. package/dist/commands/demo.d.ts +6 -0
  6. package/dist/commands/demo.d.ts.map +1 -0
  7. package/dist/commands/demo.js +44 -0
  8. package/dist/commands/demo.js.map +1 -0
  9. package/dist/commands/feedback.d.ts +18 -0
  10. package/dist/commands/feedback.d.ts.map +1 -0
  11. package/dist/commands/feedback.js +79 -0
  12. package/dist/commands/feedback.js.map +1 -0
  13. package/dist/commands/ingest.d.ts +8 -0
  14. package/dist/commands/ingest.d.ts.map +1 -0
  15. package/dist/commands/ingest.js +98 -0
  16. package/dist/commands/ingest.js.map +1 -0
  17. package/dist/commands/init.d.ts +2 -0
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +294 -37
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/plugins.d.ts +6 -0
  22. package/dist/commands/plugins.d.ts.map +1 -0
  23. package/dist/commands/plugins.js +40 -0
  24. package/dist/commands/plugins.js.map +1 -0
  25. package/dist/commands/search.d.ts +16 -0
  26. package/dist/commands/search.d.ts.map +1 -0
  27. package/dist/commands/search.js +117 -0
  28. package/dist/commands/search.js.map +1 -0
  29. package/dist/commands/setup.d.ts +14 -0
  30. package/dist/commands/setup.d.ts.map +1 -0
  31. package/dist/commands/setup.js +167 -0
  32. package/dist/commands/setup.js.map +1 -0
  33. package/dist/commands/start.d.ts +1 -0
  34. package/dist/commands/start.d.ts.map +1 -1
  35. package/dist/commands/start.js +82 -15
  36. package/dist/commands/start.js.map +1 -1
  37. package/dist/commands/status.d.ts +5 -0
  38. package/dist/commands/status.d.ts.map +1 -0
  39. package/dist/commands/status.js +121 -0
  40. package/dist/commands/status.js.map +1 -0
  41. package/dist/commands/tool.d.ts +29 -0
  42. package/dist/commands/tool.d.ts.map +1 -0
  43. package/dist/commands/tool.js +247 -0
  44. package/dist/commands/tool.js.map +1 -0
  45. package/dist/commands/upgrade.d.ts +6 -0
  46. package/dist/commands/upgrade.d.ts.map +1 -0
  47. package/dist/commands/upgrade.js +91 -0
  48. package/dist/commands/upgrade.js.map +1 -0
  49. package/dist/index.js +144 -2
  50. package/dist/index.js.map +1 -1
  51. package/dist/lib/demo-manager.d.ts +16 -0
  52. package/dist/lib/demo-manager.d.ts.map +1 -0
  53. package/dist/lib/demo-manager.js +37 -0
  54. package/dist/lib/demo-manager.js.map +1 -0
  55. package/dist/lib/formatter.d.ts +7 -0
  56. package/dist/lib/formatter.d.ts.map +1 -0
  57. package/dist/lib/formatter.js +91 -0
  58. package/dist/lib/formatter.js.map +1 -0
  59. package/dist/lib/indexer.d.ts +4 -1
  60. package/dist/lib/indexer.d.ts.map +1 -1
  61. package/dist/lib/indexer.js +2 -1
  62. package/dist/lib/indexer.js.map +1 -1
  63. package/dist/lib/ingest-watcher.d.ts +20 -0
  64. package/dist/lib/ingest-watcher.d.ts.map +1 -0
  65. package/dist/lib/ingest-watcher.js +44 -0
  66. package/dist/lib/ingest-watcher.js.map +1 -0
  67. package/dist/lib/plugin-loader.d.ts +5 -0
  68. package/dist/lib/plugin-loader.d.ts.map +1 -0
  69. package/dist/lib/plugin-loader.js +27 -0
  70. package/dist/lib/plugin-loader.js.map +1 -0
  71. package/dist/lib/progress.d.ts +57 -0
  72. package/dist/lib/progress.d.ts.map +1 -0
  73. package/dist/lib/progress.js +191 -0
  74. package/dist/lib/progress.js.map +1 -0
  75. package/dist/lib/url-validator.d.ts +2 -0
  76. package/dist/lib/url-validator.d.ts.map +1 -0
  77. package/dist/lib/url-validator.js +17 -0
  78. package/dist/lib/url-validator.js.map +1 -0
  79. package/fixtures/demo/notes/api-design-decisions.md +79 -0
  80. package/fixtures/demo/notes/auth-debugging.md +52 -0
  81. package/fixtures/demo/notes/ci-cd-pipeline.md +90 -0
  82. package/fixtures/demo/notes/code-review-notes.md +71 -0
  83. package/fixtures/demo/notes/database-optimization.md +73 -0
  84. package/fixtures/demo/notes/docker-troubleshooting.md +74 -0
  85. package/fixtures/demo/notes/react-performance.md +66 -0
  86. package/fixtures/demo/notes/typescript-migration.md +80 -0
  87. package/package.json +6 -4
@@ -1,62 +1,319 @@
1
1
  import { resolve } from "path";
2
- import { mkdirSync } from "fs";
3
- import { defineConfig, createDatabase, Migrator, KnowledgeRepository, GraphRepository, ALL_MIGRATIONS, OnnxEmbeddingProvider, ModelManager, } from "@knowledgine/core";
2
+ import { mkdirSync, statSync } from "fs";
3
+ import { loadConfig, writeRcConfig, createDatabase, loadSqliteVecExtension, Migrator, KnowledgeRepository, GraphRepository, ALL_MIGRATIONS, OnnxEmbeddingProvider, ModelManager, downloadModel, } from "@knowledgine/core";
4
4
  import { indexAll } from "../lib/indexer.js";
5
+ import { createProgress, createStepProgress } from "../lib/progress.js";
6
+ import { copyDemoFixtures } from "../lib/demo-manager.js";
7
+ import { getDemoNotesPath } from "./demo.js";
8
+ /**
9
+ * Maximum number of retry attempts for network operations (e.g., model download).
10
+ */
11
+ const MAX_DOWNLOAD_RETRIES = 3;
12
+ /**
13
+ * Minimum disk space required for FTS5-only initialization.
14
+ * SQLite index is roughly equal to the size of the source files.
15
+ * We require 2x to account for index overhead.
16
+ */
17
+ const DISK_MULTIPLIER_FTS5 = 2;
18
+ /**
19
+ * Extra disk space required for the embedding model (~23 MB).
20
+ */
21
+ const SEMANTIC_MODEL_BYTES = 23 * 1024 * 1024;
22
+ /**
23
+ * Estimate the total size of markdown files under the given root path.
24
+ * Returns 0 if the stat call fails (best-effort check).
25
+ */
26
+ function estimateMarkdownSize(rootPath) {
27
+ try {
28
+ const stat = statSync(rootPath);
29
+ if (!stat.isDirectory())
30
+ return 0;
31
+ // We cannot cheaply total all files without walking; use directory size as
32
+ // a rough upper bound for the check. On most systems statSync on a directory
33
+ // returns a small number (e.g. 128/4096), so we skip this approach and
34
+ // rely on the caller to pass an explicit estimate when available.
35
+ return 0;
36
+ }
37
+ catch {
38
+ return 0;
39
+ }
40
+ }
41
+ /**
42
+ * Check available disk space for the given path.
43
+ * Returns Infinity when the check cannot be performed (non-critical guard).
44
+ */
45
+ async function getFreeDiskBytes(targetPath) {
46
+ try {
47
+ // Use `df` to get available kilobytes, then convert to bytes.
48
+ const { execFile } = await import("child_process");
49
+ const { promisify } = await import("util");
50
+ const execFileAsync = promisify(execFile);
51
+ const { stdout } = await execFileAsync("df", ["-k", "--", targetPath]);
52
+ // df output: Filesystem 1K-blocks Used Available Use% Mounted on
53
+ const lines = stdout.trim().split("\n");
54
+ if (lines.length < 2)
55
+ return Infinity;
56
+ const parts = lines[1].trim().split(/\s+/);
57
+ // "Available" is the 4th column (index 3)
58
+ const availableKb = parseInt(parts[3] ?? "0", 10);
59
+ if (isNaN(availableKb))
60
+ return Infinity;
61
+ return availableKb * 1024;
62
+ }
63
+ catch {
64
+ // df is not available (e.g. Windows) or failed — skip the check
65
+ return Infinity;
66
+ }
67
+ }
68
+ /**
69
+ * Sleep for `ms` milliseconds (used for exponential backoff).
70
+ */
71
+ function sleep(ms) {
72
+ return new Promise((resolve) => setTimeout(resolve, ms));
73
+ }
5
74
  export async function initCommand(options) {
6
- const rootPath = resolve(options.path ?? process.cwd());
7
- // Create .knowledgine directory
75
+ let rootPath;
76
+ if (options.demo) {
77
+ const demoPath = getDemoNotesPath(options.path);
78
+ const count = copyDemoFixtures(demoPath);
79
+ console.error(`Copied ${count} demo notes to ${demoPath}`);
80
+ rootPath = demoPath;
81
+ }
82
+ else {
83
+ rootPath = resolve(options.path ?? process.cwd());
84
+ }
85
+ // Deprecation warning for --skip-embeddings
86
+ if (options.skipEmbeddings) {
87
+ console.error("Warning: --skip-embeddings is deprecated. Embeddings are now opt-in by default.");
88
+ console.error(" Use 'knowledgine init --semantic' to enable semantic search.");
89
+ console.error("");
90
+ }
91
+ // Determine if semantic search should be enabled
92
+ const enableSemantic = options.semantic === true;
93
+ // ---------------------------------------------------------------------------
94
+ // Step 1: Create .knowledgine directory
95
+ // ---------------------------------------------------------------------------
96
+ const totalSteps = enableSemantic ? 5 : 3;
97
+ const stepProgress = createStepProgress(totalSteps, "Initializing knowledgine...");
8
98
  const knowledgineDir = resolve(rootPath, ".knowledgine");
9
- mkdirSync(knowledgineDir, { recursive: true });
10
- // Initialize database (sqlite-vec loaded inside createDatabase)
11
- const config = defineConfig({ rootPath });
12
- const db = createDatabase(config.dbPath, { enableVec: true });
99
+ stepProgress.startStep("Creating .knowledgine directory");
100
+ try {
101
+ mkdirSync(knowledgineDir, { recursive: true });
102
+ stepProgress.completeStep("Creating .knowledgine directory");
103
+ }
104
+ catch (error) {
105
+ const message = error instanceof Error ? error.message : String(error);
106
+ // Check if this is a disk-related error
107
+ if (message.includes("ENOSPC") ||
108
+ message.includes("no space") ||
109
+ message.includes("disk full")) {
110
+ const freeDisk = await getFreeDiskBytes(resolve(rootPath, ".."));
111
+ const estimatedNeeded = estimateMarkdownSize(rootPath) * DISK_MULTIPLIER_FTS5;
112
+ stepProgress.failStep("Creating .knowledgine directory", "Insufficient disk space");
113
+ console.error("");
114
+ console.error("Error: Disk is full. Cannot create the knowledge base.");
115
+ console.error("");
116
+ console.error("Disk space requirements:");
117
+ console.error(` FTS5 text search only: source files x${DISK_MULTIPLIER_FTS5} (index overhead)`);
118
+ if (enableSemantic) {
119
+ console.error(` Semantic search (+--semantic): +${(SEMANTIC_MODEL_BYTES / (1024 * 1024)).toFixed(0)} MB (embedding model) + vector index`);
120
+ }
121
+ if (estimatedNeeded > 0) {
122
+ console.error(` Estimated needed: ~${(estimatedNeeded / (1024 * 1024)).toFixed(1)} MB`);
123
+ }
124
+ if (freeDisk < Infinity) {
125
+ console.error(` Available: ~${(freeDisk / (1024 * 1024)).toFixed(1)} MB`);
126
+ }
127
+ console.error("");
128
+ console.error("Free up disk space and re-run:");
129
+ console.error(` knowledgine init${options.path ? ` --path ${options.path}` : ""}${enableSemantic ? " --semantic" : ""}`);
130
+ process.exit(1);
131
+ }
132
+ stepProgress.failStep("Creating .knowledgine directory", message);
133
+ throw error;
134
+ }
135
+ // ---------------------------------------------------------------------------
136
+ // Step 2: Initialize database
137
+ // ---------------------------------------------------------------------------
138
+ stepProgress.startStep("Initializing database");
139
+ const config = loadConfig(rootPath);
140
+ if (enableSemantic) {
141
+ config.embedding.enabled = true;
142
+ }
143
+ const db = createDatabase(config.dbPath);
144
+ if (enableSemantic) {
145
+ try {
146
+ await loadSqliteVecExtension(db);
147
+ }
148
+ catch (error) {
149
+ const message = error instanceof Error ? error.message : String(error);
150
+ stepProgress.failStep("Initializing database", `sqlite-vec extension unavailable: ${message}`);
151
+ stepProgress.warn("Falling back to FTS5-only mode (no vector search)");
152
+ // Continue without semantic — we degrade gracefully
153
+ config.embedding.enabled = false;
154
+ }
155
+ }
13
156
  new Migrator(db, ALL_MIGRATIONS).migrate();
14
157
  const repository = new KnowledgeRepository(db);
15
158
  const graphRepository = new GraphRepository(db);
16
- // Index all markdown files (with entity extraction)
17
- console.error("Indexing markdown files...");
18
- const summary = await indexAll(rootPath, repository, graphRepository);
19
- // Display summary (stderr to avoid MCP stdout conflicts)
20
- console.error(`Indexing complete:`);
21
- console.error(` Files: ${summary.processedFiles}/${summary.totalFiles}`);
22
- console.error(` Patterns: ${summary.totalPatterns}`);
23
- console.error(` Time: ${summary.elapsedMs}ms`);
159
+ stepProgress.completeStep("Initializing database");
160
+ // ---------------------------------------------------------------------------
161
+ // Step 3: Index markdown files
162
+ // ---------------------------------------------------------------------------
163
+ stepProgress.startStep("Indexing markdown files");
164
+ let indexProgress = null;
165
+ const summary = await indexAll(rootPath, repository, graphRepository, {
166
+ onProgress: (current, total, filePath) => {
167
+ if (!indexProgress) {
168
+ console.error(` Found ${total} markdown files`);
169
+ indexProgress = createProgress(total, " Indexing");
170
+ }
171
+ indexProgress.update(current, filePath);
172
+ },
173
+ });
174
+ if (indexProgress !== null) {
175
+ // Print a newline after the in-place progress bar
176
+ indexProgress.finish();
177
+ }
178
+ if (summary.totalFiles === 0) {
179
+ stepProgress.warn("No markdown files found in the directory.");
180
+ }
24
181
  if (summary.errors.length > 0) {
25
- console.error(` Errors: ${summary.errors.length}`);
182
+ // File read failures are non-fatal: log as warnings and continue
26
183
  for (const err of summary.errors) {
27
- console.error(` - ${err}`);
184
+ stepProgress.warn(`Skipped (read error): ${err}`);
28
185
  }
29
186
  }
30
- // Generate embeddings if not skipped
31
- if (!options.skipEmbeddings) {
187
+ stepProgress.completeStep("Indexing markdown files");
188
+ // ---------------------------------------------------------------------------
189
+ // Step 4 & 5 (semantic only): Download model + generate embeddings
190
+ // ---------------------------------------------------------------------------
191
+ if (enableSemantic && config.embedding.enabled) {
32
192
  const modelManager = new ModelManager();
193
+ // Step 4: Download model if not already available
194
+ if (!modelManager.isModelAvailable()) {
195
+ stepProgress.startStep("Downloading embedding model");
196
+ let lastError = null;
197
+ let downloadSucceeded = false;
198
+ for (let attempt = 1; attempt <= MAX_DOWNLOAD_RETRIES; attempt++) {
199
+ try {
200
+ await downloadModel(modelManager, {
201
+ onProgress: (progress) => {
202
+ if (progress.total) {
203
+ const mb = (progress.downloaded / (1024 * 1024)).toFixed(1);
204
+ const totalMb = (progress.total / (1024 * 1024)).toFixed(1);
205
+ process.stderr.write(`\r ${progress.file}: ${mb}/${totalMb} MB`);
206
+ }
207
+ },
208
+ onFileComplete: (file) => {
209
+ process.stderr.write(`\r [done] ${file} \n`);
210
+ },
211
+ });
212
+ downloadSucceeded = true;
213
+ break;
214
+ }
215
+ catch (error) {
216
+ lastError = error instanceof Error ? error : new Error(String(error));
217
+ const isNetworkError = lastError.message.includes("ENOTFOUND") ||
218
+ lastError.message.includes("ETIMEDOUT") ||
219
+ lastError.message.includes("ECONNRESET") ||
220
+ lastError.message.includes("network") ||
221
+ lastError.message.includes("fetch");
222
+ if (isNetworkError && attempt < MAX_DOWNLOAD_RETRIES) {
223
+ const backoffMs = Math.pow(2, attempt - 1) * 1000; // 1s, 2s, 4s
224
+ stepProgress.warn(`Download attempt ${attempt}/${MAX_DOWNLOAD_RETRIES} failed (${lastError.message}). Retrying in ${backoffMs / 1000}s...`);
225
+ await sleep(backoffMs);
226
+ }
227
+ else {
228
+ break;
229
+ }
230
+ }
231
+ }
232
+ if (!downloadSucceeded) {
233
+ const message = lastError instanceof Error ? lastError.message : "unknown error";
234
+ stepProgress.failStep("Downloading embedding model", message);
235
+ console.error("");
236
+ console.error("Semantic search unavailable. Text search (FTS5) works without embeddings.");
237
+ console.error(`To retry: knowledgine init --path ${rootPath} --semantic`);
238
+ console.error("");
239
+ console.error("Offline alternative: Copy the model files manually to:");
240
+ console.error(` ${modelManager.getModelDir()}`);
241
+ console.error(" Then re-run the init command.");
242
+ // Still print summary for what was indexed
243
+ console.error("");
244
+ console.error("knowledgine initialized (without embeddings).");
245
+ console.error(` Notes: ${summary.processedFiles} indexed`);
246
+ console.error(` Patterns: ${summary.totalPatterns} extracted`);
247
+ console.error(` Embeddings: skipped (model download failed)`);
248
+ console.error("");
249
+ console.error("Next: Run 'knowledgine setup' to connect your AI tool.");
250
+ db.close();
251
+ return;
252
+ }
253
+ stepProgress.completeStep("Downloading embedding model");
254
+ }
255
+ else {
256
+ stepProgress.skipStep("Downloading embedding model", "already available");
257
+ }
258
+ // Step 5: Generate embeddings
259
+ stepProgress.startStep("Generating embeddings");
33
260
  if (modelManager.isModelAvailable()) {
34
- console.error("Generating embeddings...");
35
261
  const embeddingProvider = new OnnxEmbeddingProvider(undefined, modelManager);
36
262
  const notesWithout = repository.getNotesWithoutEmbeddings();
37
- let generated = 0;
38
- let failed = 0;
39
- for (const note of notesWithout) {
40
- try {
41
- const embedding = await embeddingProvider.embed(note.content);
42
- repository.saveEmbedding(note.id, embedding, config.embedding.modelName);
43
- generated++;
44
- if (generated % 10 === 0) {
45
- console.error(` Embeddings: ${generated}/${notesWithout.length}`);
263
+ if (notesWithout.length > 0) {
264
+ const embProgress = createProgress(notesWithout.length, " Embeddings");
265
+ let generated = 0;
266
+ let failed = 0;
267
+ for (const note of notesWithout) {
268
+ try {
269
+ const embedding = await embeddingProvider.embed(note.content);
270
+ repository.saveEmbedding(note.id, embedding, config.embedding.modelName);
271
+ generated++;
272
+ embProgress.update(generated);
273
+ }
274
+ catch {
275
+ failed++;
46
276
  }
47
277
  }
48
- catch {
49
- failed++;
278
+ embProgress.finish();
279
+ if (failed > 0) {
280
+ stepProgress.warn(`${failed} embedding(s) could not be generated`);
50
281
  }
51
282
  }
52
- console.error(` Embeddings: ${generated} generated, ${failed} failed`);
53
- }
54
- else {
55
- console.error("Skipping embeddings: model not found. Run: node scripts/download-model.js");
56
283
  }
284
+ // Write .knowledginerc.json to persist semantic search setting
285
+ writeRcConfig(rootPath, { semantic: true });
286
+ stepProgress.completeStep("Generating embeddings");
287
+ }
288
+ stepProgress.finish();
289
+ // ---------------------------------------------------------------------------
290
+ // Final summary
291
+ // ---------------------------------------------------------------------------
292
+ const notesWithoutEmb = repository.getNotesWithoutEmbeddings().length;
293
+ const embeddingsGenerated = summary.processedFiles - notesWithoutEmb;
294
+ console.error("");
295
+ console.error("knowledgine initialized successfully.");
296
+ console.error(` Notes: ${summary.processedFiles} indexed`);
297
+ console.error(` Patterns: ${summary.totalPatterns} extracted`);
298
+ if (enableSemantic && config.embedding.enabled) {
299
+ console.error(` Embeddings: ${embeddingsGenerated > 0 ? `${embeddingsGenerated} generated` : "none"}`);
300
+ }
301
+ else {
302
+ console.error(" Search: FTS5 full-text search (default)");
303
+ console.error(" Hint: Run 'knowledgine upgrade --semantic' to enable semantic search");
304
+ }
305
+ console.error("");
306
+ if (options.demo) {
307
+ console.error("Demo ready! Try:");
308
+ console.error(' knowledgine search "auth" --demo');
309
+ console.error(' knowledgine search "typescript" --demo');
310
+ console.error(' knowledgine search "docker" --demo');
311
+ console.error("");
312
+ console.error("Clean up when done:");
313
+ console.error(" knowledgine demo --clean");
57
314
  }
58
315
  else {
59
- console.error("Skipping embeddings (--skip-embeddings flag set).");
316
+ console.error("Next: Run 'knowledgine setup' to connect your AI tool.");
60
317
  }
61
318
  db.close();
62
319
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function pluginsListCommand(): Promise<void>;
2
+ export interface PluginsStatusOptions {
3
+ path?: string;
4
+ }
5
+ export declare function pluginsStatusCommand(options: PluginsStatusOptions): Promise<void>;
6
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAWA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAaxD;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
@@ -0,0 +1,40 @@
1
+ import { resolve } from "path";
2
+ import { mkdirSync } from "fs";
3
+ import { defineConfig, createDatabase, Migrator, ALL_MIGRATIONS, } from "@knowledgine/core";
4
+ import { CursorStore } from "@knowledgine/ingest";
5
+ import { createDefaultRegistry } from "../lib/plugin-loader.js";
6
+ export async function pluginsListCommand() {
7
+ const registry = createDefaultRegistry();
8
+ const plugins = registry.list();
9
+ const header = `${"ID".padEnd(20)}${"Name".padEnd(25)}${"Version".padEnd(10)}Priority`;
10
+ console.error(header);
11
+ for (const plugin of plugins) {
12
+ const { id, name, version, priority } = plugin.manifest;
13
+ console.error(`${id.padEnd(20)}${name.padEnd(25)}${version.padEnd(10)}${priority}`);
14
+ }
15
+ }
16
+ export async function pluginsStatusCommand(options) {
17
+ const rootPath = resolve(options.path ?? process.cwd());
18
+ const knowledgineDir = resolve(rootPath, ".knowledgine");
19
+ mkdirSync(knowledgineDir, { recursive: true });
20
+ const config = defineConfig({ rootPath });
21
+ const db = createDatabase(config.dbPath, { enableVec: true });
22
+ new Migrator(db, ALL_MIGRATIONS).migrate();
23
+ const cursorStore = new CursorStore(db);
24
+ const cursors = cursorStore.listCursors();
25
+ const cursorMap = new Map(cursors.map((c) => [c.pluginId, c]));
26
+ const registry = createDefaultRegistry();
27
+ const plugins = registry.list();
28
+ const header = `${"Plugin".padEnd(20)}${"Last Ingest".padEnd(25)}Checkpoint`;
29
+ console.error(header);
30
+ for (const plugin of plugins) {
31
+ const cursor = cursorMap.get(plugin.manifest.id);
32
+ const lastIngest = cursor
33
+ ? cursor.lastIngestAt.toISOString().replace("T", " ").slice(0, 19)
34
+ : "never";
35
+ const checkpoint = cursor ? cursor.checkpoint.slice(0, 20) + (cursor.checkpoint.length > 20 ? "..." : "") : "-";
36
+ console.error(`${plugin.manifest.id.padEnd(20)}${lastIngest.padEnd(25)}${checkpoint}`);
37
+ }
38
+ db.close();
39
+ }
40
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface SearchCommandOptions {
2
+ demo?: boolean;
3
+ mode?: string;
4
+ limit?: number;
5
+ format?: string;
6
+ related?: string;
7
+ relatedFile?: string;
8
+ path?: string;
9
+ }
10
+ export declare function searchCommand(query: string, options: SearchCommandOptions): Promise<void>;
11
+ /** @deprecated Use searchCommand with format option instead */
12
+ export declare function formatSearchResults(query: string, results: Array<{
13
+ note: unknown;
14
+ score: number;
15
+ }>): void;
16
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAgFf;AAwBD,+DAA+D;AAC/D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,IAAI,CAiBN"}
@@ -0,0 +1,117 @@
1
+ import { resolve } from "path";
2
+ import { existsSync } from "fs";
3
+ import { loadConfig, createDatabase, Migrator, KnowledgeRepository, KnowledgeSearcher, GraphRepository, KnowledgeService, ALL_MIGRATIONS, } from "@knowledgine/core";
4
+ import { getDemoNotesPath } from "./demo.js";
5
+ import { formatSearchResults as formatToolSearchResults, formatRelatedNotes, } from "../lib/formatter.js";
6
+ export async function searchCommand(query, options) {
7
+ const rootPath = options.demo
8
+ ? getDemoNotesPath()
9
+ : options.path
10
+ ? resolve(options.path)
11
+ : resolve(process.cwd());
12
+ const knowledgineDir = resolve(rootPath, ".knowledgine");
13
+ if (!existsSync(knowledgineDir)) {
14
+ console.error(options.demo
15
+ ? 'Demo not initialized. Run "knowledgine init --demo" first.'
16
+ : 'Not initialized. Run "knowledgine init --path <dir>" first.');
17
+ process.exitCode = 1;
18
+ return;
19
+ }
20
+ const config = loadConfig(rootPath);
21
+ const db = createDatabase(config.dbPath);
22
+ try {
23
+ new Migrator(db, ALL_MIGRATIONS).migrate();
24
+ const repository = new KnowledgeRepository(db);
25
+ const graphRepository = new GraphRepository(db);
26
+ const mode = options.mode ?? "keyword";
27
+ const limit = options.limit ?? 20;
28
+ const format = options.format ?? "plain";
29
+ // --related / --related-file: findRelated モード
30
+ if (options.related || options.relatedFile) {
31
+ const service = new KnowledgeService({ repository, rootPath, graphRepository });
32
+ const noteId = options.related ? parseInt(options.related, 10) : undefined;
33
+ if (options.related && (isNaN(noteId) || noteId < 1)) {
34
+ console.error("Error: --related must be a positive integer (note ID)");
35
+ process.exitCode = 1;
36
+ return;
37
+ }
38
+ try {
39
+ const result = await service.findRelated({
40
+ noteId,
41
+ filePath: options.relatedFile,
42
+ limit,
43
+ });
44
+ if (format === "json") {
45
+ console.log(JSON.stringify({ ok: true, command: "search", result }));
46
+ }
47
+ else {
48
+ console.error(formatRelatedNotes(result, format === "table" ? "table" : "plain"));
49
+ }
50
+ }
51
+ catch (error) {
52
+ console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
53
+ process.exitCode = 1;
54
+ }
55
+ return;
56
+ }
57
+ // 通常の検索モード
58
+ const service = new KnowledgeService({ repository, rootPath, graphRepository });
59
+ const result = await service.search({ query, limit, mode });
60
+ if (format === "json") {
61
+ console.log(JSON.stringify({ ok: true, command: "search", result }));
62
+ }
63
+ else if (format === "table") {
64
+ if (result.results.length === 0) {
65
+ console.error(`No results for "${query}".`);
66
+ }
67
+ else {
68
+ console.error(formatToolSearchResults(result.results, "table"));
69
+ }
70
+ }
71
+ else {
72
+ // plain (default) - 後方互換の出力形式
73
+ formatLegacySearchResults(query, result.results);
74
+ }
75
+ }
76
+ catch (error) {
77
+ console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
78
+ process.exitCode = 1;
79
+ }
80
+ finally {
81
+ db.close();
82
+ }
83
+ }
84
+ /** 後方互換のためのレガシー出力形式 */
85
+ function formatLegacySearchResults(query, results) {
86
+ if (results.length === 0) {
87
+ console.error(`No results for "${query}".`);
88
+ return;
89
+ }
90
+ console.error(`Results for "${query}" (${results.length} matches):`);
91
+ console.error("");
92
+ for (let i = 0; i < results.length; i++) {
93
+ const r = results[i];
94
+ const score = r.score.toFixed(2);
95
+ console.error(` ${i + 1}. [${score}] ${r.filePath}`);
96
+ console.error(` ${r.title}`);
97
+ console.error("");
98
+ }
99
+ }
100
+ /** @deprecated Use searchCommand with format option instead */
101
+ export function formatSearchResults(query, results) {
102
+ if (results.length === 0) {
103
+ console.error(`No results for "${query}".`);
104
+ return;
105
+ }
106
+ console.error(`Results for "${query}" (${results.length} matches):`);
107
+ console.error("");
108
+ for (let i = 0; i < results.length; i++) {
109
+ const r = results[i];
110
+ const score = r.score.toFixed(2);
111
+ const note = r.note;
112
+ console.error(` ${i + 1}. [${score}] ${note.file_path}`);
113
+ console.error(` ${note.title}`);
114
+ console.error("");
115
+ }
116
+ }
117
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface SetupOptions {
2
+ target?: string;
3
+ path?: string;
4
+ dryRun?: boolean;
5
+ write?: boolean;
6
+ }
7
+ interface SetupIO {
8
+ input: NodeJS.ReadableStream;
9
+ output: NodeJS.WritableStream;
10
+ isTTY: boolean;
11
+ }
12
+ export declare function setupCommand(options: SetupOptions, io?: SetupIO): Promise<void>;
13
+ export {};
14
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAmFD,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC;CAChB;AAsCD,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,EACrB,EAAE,CAAC,EAAE,OAAO,GACX,OAAO,CAAC,IAAI,CAAC,CAyEf"}