@knowledgine/cli 0.4.1 → 0.5.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/dist/commands/ingest.d.ts +6 -0
- package/dist/commands/ingest.d.ts.map +1 -1
- package/dist/commands/ingest.js +64 -7
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +133 -33
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +16 -9
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +27 -3
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/start.d.ts +1 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +100 -66
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +15 -15
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +22 -15
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/entity-extractor.d.ts.map +1 -1
- package/dist/lib/entity-extractor.js +2 -3
- package/dist/lib/entity-extractor.js.map +1 -1
- package/package.json +4 -4
package/dist/commands/serve.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Command } from "commander";
|
|
|
2
2
|
import { existsSync } from "fs";
|
|
3
3
|
import { resolve } from "path";
|
|
4
4
|
import { serve } from "@hono/node-server";
|
|
5
|
-
import { loadConfig, resolveDefaultPath, createDatabase, Migrator, ALL_MIGRATIONS, KnowledgeRepository, GraphRepository, KnowledgeService, VERSION, } from "@knowledgine/core";
|
|
5
|
+
import { loadConfig, resolveDefaultPath, createDatabase, loadSqliteVecExtension, Migrator, ALL_MIGRATIONS, KnowledgeRepository, GraphRepository, KnowledgeService, OnnxEmbeddingProvider, ModelManager, DEFAULT_MODEL_NAME, VERSION, checkSemanticReadiness, } from "@knowledgine/core";
|
|
6
6
|
import { createRestApp } from "@knowledgine/mcp-server";
|
|
7
7
|
export function registerServeCommand(program) {
|
|
8
8
|
program
|
|
@@ -27,11 +27,31 @@ async function serveAction(options) {
|
|
|
27
27
|
new Migrator(db, ALL_MIGRATIONS).migrate();
|
|
28
28
|
const repository = new KnowledgeRepository(db);
|
|
29
29
|
const graphRepository = new GraphRepository(db);
|
|
30
|
-
|
|
30
|
+
// Auto-detect model for backward compatibility (without mutating config)
|
|
31
|
+
const modelManager = new ModelManager();
|
|
32
|
+
const autoDetected = !config.embedding?.enabled && modelManager.isModelAvailable(config.embedding?.modelName);
|
|
33
|
+
const effectiveConfig = autoDetected
|
|
34
|
+
? { ...config, embedding: { ...config.embedding, enabled: true } }
|
|
35
|
+
: config;
|
|
36
|
+
// Initialize embedding provider based on actual semantic readiness
|
|
37
|
+
const semanticReadiness = checkSemanticReadiness(effectiveConfig, modelManager, repository);
|
|
38
|
+
let embeddingProvider;
|
|
39
|
+
if (semanticReadiness.ready) {
|
|
40
|
+
// Load sqlite-vec when semantic search is effectively enabled (config or auto-detected)
|
|
41
|
+
await loadSqliteVecExtension(db);
|
|
42
|
+
embeddingProvider = new OnnxEmbeddingProvider(DEFAULT_MODEL_NAME, modelManager);
|
|
43
|
+
}
|
|
44
|
+
const service = new KnowledgeService({
|
|
45
|
+
repository,
|
|
46
|
+
rootPath,
|
|
47
|
+
graphRepository,
|
|
48
|
+
embeddingProvider,
|
|
49
|
+
});
|
|
31
50
|
const app = createRestApp(service, VERSION);
|
|
32
51
|
const port = parseInt(options.port ?? "3456", 10);
|
|
33
52
|
const hostname = options.host ?? "127.0.0.1";
|
|
34
53
|
const stats = service.getStats();
|
|
54
|
+
const searchMode = embeddingProvider ? "semantic + FTS5" : "FTS5 only";
|
|
35
55
|
const server = serve({
|
|
36
56
|
fetch: app.fetch,
|
|
37
57
|
port,
|
|
@@ -40,10 +60,14 @@ async function serveAction(options) {
|
|
|
40
60
|
console.error(`knowledgine REST API server running`);
|
|
41
61
|
console.error(` URL: http://${hostname}:${port}`);
|
|
42
62
|
console.error(` Notes: ${stats.totalNotes} indexed`);
|
|
63
|
+
console.error(` Search: ${searchMode}`);
|
|
43
64
|
});
|
|
44
65
|
// Graceful shutdown
|
|
45
|
-
const shutdown = () => {
|
|
66
|
+
const shutdown = async () => {
|
|
46
67
|
console.error("\nShutting down...");
|
|
68
|
+
if (embeddingProvider) {
|
|
69
|
+
await embeddingProvider.close();
|
|
70
|
+
}
|
|
47
71
|
server.close();
|
|
48
72
|
db.close();
|
|
49
73
|
process.exit(0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,OAAO,
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/start.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAwBA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgRvE"}
|
package/dist/commands/start.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
2
|
import { mkdirSync } from "fs";
|
|
3
3
|
import { watch } from "chokidar";
|
|
4
|
-
import { loadConfig, resolveDefaultPath, createDatabase, loadSqliteVecExtension, Migrator, KnowledgeRepository, GraphRepository, FeedbackRepository, FileProcessor, PatternExtractor, ALL_MIGRATIONS, OnnxEmbeddingProvider, ModelManager, DEFAULT_MODEL_NAME, } from "@knowledgine/core";
|
|
4
|
+
import { loadConfig, resolveDefaultPath, createDatabase, loadSqliteVecExtension, Migrator, KnowledgeRepository, GraphRepository, FeedbackRepository, FileProcessor, PatternExtractor, ALL_MIGRATIONS, OnnxEmbeddingProvider, ModelManager, DEFAULT_MODEL_NAME, checkSemanticReadiness, } from "@knowledgine/core";
|
|
5
5
|
import { createKnowledgineMcpServer, StdioServerTransport } from "@knowledgine/mcp-server";
|
|
6
6
|
import { indexFile } from "../lib/indexer.js";
|
|
7
7
|
import { createBox, colors, symbols } from "../lib/ui/index.js";
|
|
@@ -11,18 +11,16 @@ export async function startCommand(options) {
|
|
|
11
11
|
mkdirSync(resolve(rootPath, ".knowledgine"), { recursive: true });
|
|
12
12
|
// Load config (respects .knowledginerc.json and env vars)
|
|
13
13
|
const config = loadConfig(rootPath);
|
|
14
|
-
// Auto-detect model for backward compatibility
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
console.error(`${symbols.success} ${colors.success("Semantic search enabled (model detected)")}`);
|
|
20
|
-
}
|
|
14
|
+
// Auto-detect model for backward compatibility (without mutating config)
|
|
15
|
+
const modelManager = new ModelManager();
|
|
16
|
+
const autoDetected = !config.embedding.enabled && modelManager.isModelAvailable(config.embedding.modelName);
|
|
17
|
+
if (autoDetected) {
|
|
18
|
+
console.error(`${symbols.success} ${colors.success("Semantic search enabled (model detected)")}`);
|
|
21
19
|
}
|
|
22
20
|
// Initialize database
|
|
23
21
|
const db = createDatabase(config.dbPath);
|
|
24
|
-
// Load sqlite-vec if semantic search is enabled
|
|
25
|
-
if (config.embedding.enabled) {
|
|
22
|
+
// Load sqlite-vec if semantic search is enabled (or auto-detected)
|
|
23
|
+
if (config.embedding.enabled || autoDetected) {
|
|
26
24
|
await loadSqliteVecExtension(db);
|
|
27
25
|
}
|
|
28
26
|
new Migrator(db, ALL_MIGRATIONS).migrate();
|
|
@@ -34,21 +32,35 @@ export async function startCommand(options) {
|
|
|
34
32
|
if (stats.totalNotes === 0) {
|
|
35
33
|
console.error(`${symbols.warning} ${colors.warning("No notes indexed. Run `knowledgine init` first.")}`);
|
|
36
34
|
}
|
|
37
|
-
// Initialize embedding provider
|
|
35
|
+
// Initialize embedding provider based on semantic readiness
|
|
36
|
+
// Use effective config that accounts for auto-detection (without mutating original config)
|
|
37
|
+
const effectiveConfig = autoDetected
|
|
38
|
+
? { ...config, embedding: { ...config.embedding, enabled: true } }
|
|
39
|
+
: config;
|
|
38
40
|
let embeddingProvider;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
const semanticReadiness = checkSemanticReadiness(effectiveConfig, modelManager, repository);
|
|
42
|
+
if (semanticReadiness.ready) {
|
|
43
|
+
embeddingProvider = new OnnxEmbeddingProvider(DEFAULT_MODEL_NAME, modelManager);
|
|
44
|
+
// ONNX セッションをウォームアップして初回 semantic 検索のレイテンシスパイクを防止
|
|
45
|
+
embeddingProvider.embed("warmup").catch(() => {
|
|
46
|
+
// ウォームアップ失敗は無視(MCP 起動を妨げない)
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else if (semanticReadiness.configEnabled) {
|
|
50
|
+
if (!semanticReadiness.modelAvailable) {
|
|
51
|
+
// Config enabled but model not downloaded
|
|
52
|
+
const notesWithoutCount = repository.getNotesWithoutEmbeddingIds().length;
|
|
53
|
+
if (notesWithoutCount > 0) {
|
|
54
|
+
console.error(`${symbols.warning} ${colors.warning(`${notesWithoutCount} notes have no embeddings. ` +
|
|
49
55
|
"Semantic search unavailable. Run 'knowledgine upgrade --semantic' to download the model and generate embeddings.")}`);
|
|
50
56
|
}
|
|
51
57
|
}
|
|
58
|
+
else if (semanticReadiness.embeddingsCount === 0 && semanticReadiness.totalNotes > 0) {
|
|
59
|
+
// Model available but embeddings not yet generated
|
|
60
|
+
const notesWithoutCount = repository.getNotesWithoutEmbeddingIds().length;
|
|
61
|
+
console.error(`${symbols.warning} ${colors.warning(`${notesWithoutCount} notes have no embeddings. ` +
|
|
62
|
+
"Semantic search unavailable. Run 'knowledgine upgrade --semantic' to download the model and generate embeddings.")}`);
|
|
63
|
+
}
|
|
52
64
|
}
|
|
53
65
|
else {
|
|
54
66
|
console.error(`${symbols.info} ${colors.info("Running with FTS5 full-text search only")}`);
|
|
@@ -64,7 +76,7 @@ export async function startCommand(options) {
|
|
|
64
76
|
});
|
|
65
77
|
const transport = new StdioServerTransport();
|
|
66
78
|
await server.connect(transport);
|
|
67
|
-
const searchMode =
|
|
79
|
+
const searchMode = semanticReadiness.ready ? "semantic + FTS5" : "FTS5 full-text search";
|
|
68
80
|
console.error(createBox([
|
|
69
81
|
`${symbols.info} Path: ${rootPath}`,
|
|
70
82
|
`${symbols.info} Notes: ${stats.totalNotes} indexed`,
|
|
@@ -109,53 +121,73 @@ export async function startCommand(options) {
|
|
|
109
121
|
// File watcher for auto-reindexing
|
|
110
122
|
const fileProcessor = new FileProcessor();
|
|
111
123
|
const patternExtractor = new PatternExtractor();
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
let watcher;
|
|
125
|
+
if (options.watch !== false) {
|
|
126
|
+
watcher = watch("**/*.md", {
|
|
127
|
+
cwd: rootPath,
|
|
128
|
+
ignored: [/node_modules/, /\.knowledgine/, /\.git/, /dist/],
|
|
129
|
+
persistent: true,
|
|
130
|
+
ignoreInitial: true,
|
|
131
|
+
});
|
|
132
|
+
watcher.on("error", (err) => {
|
|
133
|
+
const nodeErr = err;
|
|
134
|
+
if (nodeErr.code === "EMFILE" || nodeErr.code === "ENOSPC") {
|
|
135
|
+
console.error(`${symbols.error} ${colors.error("File watcher limit reached. Use --no-watch to disable.")}`);
|
|
136
|
+
console.error(` Or increase the limit: ulimit -n 4096`);
|
|
137
|
+
// Gracefully close the watcher to prevent further EMFILE cascading
|
|
138
|
+
watcher?.close().catch(() => { });
|
|
139
|
+
watcher = undefined;
|
|
140
|
+
console.error(`${symbols.info} ${colors.info("File watcher stopped. MCP server continues without auto-reindexing.")}`);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
console.error(`${symbols.error} ${colors.error(`File watcher error: ${nodeErr.message ?? String(err)}`)}`);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
watcher.on("add", async (filePath) => {
|
|
147
|
+
try {
|
|
148
|
+
const noteId = await indexFile(filePath, rootPath, fileProcessor, patternExtractor, repository, graphRepository);
|
|
149
|
+
if (embeddingProvider) {
|
|
150
|
+
const note = repository.getNoteById(noteId);
|
|
151
|
+
if (note) {
|
|
152
|
+
const embedding = await embeddingProvider.embed(note.content);
|
|
153
|
+
repository.saveEmbedding(noteId, embedding, config.embedding.modelName);
|
|
154
|
+
}
|
|
126
155
|
}
|
|
156
|
+
console.error(`${symbols.arrow} ${colors.info(`Indexed: ${filePath}`)}`);
|
|
127
157
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
repository.saveEmbedding(noteId, embedding, config.embedding.modelName);
|
|
158
|
+
catch (error) {
|
|
159
|
+
console.error(`${symbols.error} ${colors.error(`Error indexing ${filePath}: ${error instanceof Error ? error.message : error}`)}`);
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
watcher.on("change", async (filePath) => {
|
|
163
|
+
try {
|
|
164
|
+
const noteId = await indexFile(filePath, rootPath, fileProcessor, patternExtractor, repository, graphRepository);
|
|
165
|
+
if (embeddingProvider) {
|
|
166
|
+
const note = repository.getNoteById(noteId);
|
|
167
|
+
if (note) {
|
|
168
|
+
const embedding = await embeddingProvider.embed(note.content);
|
|
169
|
+
repository.saveEmbedding(noteId, embedding, config.embedding.modelName);
|
|
170
|
+
}
|
|
142
171
|
}
|
|
172
|
+
console.error(`${symbols.arrow} ${colors.info(`Re-indexed: ${filePath}`)}`);
|
|
143
173
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
174
|
+
catch (error) {
|
|
175
|
+
console.error(`${symbols.error} ${colors.error(`Error re-indexing ${filePath}: ${error instanceof Error ? error.message : error}`)}`);
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
watcher.on("unlink", (filePath) => {
|
|
179
|
+
try {
|
|
180
|
+
repository.deleteNoteByPath(filePath);
|
|
181
|
+
console.error(`${symbols.arrow} ${colors.info(`Removed: ${filePath}`)}`);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
console.error(`${symbols.error} ${colors.error(`Error removing ${filePath}: ${error instanceof Error ? error.message : error}`)}`);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
console.error(`${symbols.info} ${colors.info("File watcher disabled (--no-watch)")}`);
|
|
190
|
+
}
|
|
159
191
|
// Graceful shutdown
|
|
160
192
|
const shutdown = async () => {
|
|
161
193
|
console.error("Shutting down...");
|
|
@@ -168,7 +200,9 @@ export async function startCommand(options) {
|
|
|
168
200
|
if (embeddingProvider) {
|
|
169
201
|
await embeddingProvider.close();
|
|
170
202
|
}
|
|
171
|
-
|
|
203
|
+
if (watcher) {
|
|
204
|
+
await watcher.close();
|
|
205
|
+
}
|
|
172
206
|
db.close();
|
|
173
207
|
process.exit(0);
|
|
174
208
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,QAAQ,EACR,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA2BD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA8IzE"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
2
|
import { existsSync, statSync, readFileSync } from "fs";
|
|
3
|
-
import { loadConfig, resolveDefaultPath, createDatabase, Migrator, KnowledgeRepository, ALL_MIGRATIONS, ModelManager, } from "@knowledgine/core";
|
|
3
|
+
import { loadConfig, resolveDefaultPath, createDatabase, Migrator, KnowledgeRepository, ALL_MIGRATIONS, ModelManager, checkSemanticReadiness, } from "@knowledgine/core";
|
|
4
4
|
import { createBox, colors, symbols } from "../lib/ui/index.js";
|
|
5
5
|
import { getConfigPath, TARGETS, PROJECT_CONFIG_SUPPORT } from "./setup.js";
|
|
6
6
|
import * as TOML from "smol-toml";
|
|
@@ -49,10 +49,12 @@ export async function statusCommand(options) {
|
|
|
49
49
|
}
|
|
50
50
|
const dbStat = statSync(dbPath);
|
|
51
51
|
const sizeStr = formatBytes(dbStat.size);
|
|
52
|
+
const config = loadConfig(rootPath);
|
|
52
53
|
// Open DB and get stats
|
|
53
54
|
let totalNotes = 0;
|
|
54
55
|
let totalPatterns = 0;
|
|
55
|
-
let
|
|
56
|
+
let notesBySource = {};
|
|
57
|
+
let readiness;
|
|
56
58
|
try {
|
|
57
59
|
const db = createDatabase(dbPath);
|
|
58
60
|
new Migrator(db, ALL_MIGRATIONS).migrate();
|
|
@@ -60,7 +62,9 @@ export async function statusCommand(options) {
|
|
|
60
62
|
const stats = repository.getStats();
|
|
61
63
|
totalNotes = stats.totalNotes;
|
|
62
64
|
totalPatterns = stats.totalPatterns;
|
|
63
|
-
|
|
65
|
+
notesBySource = stats.notesBySource;
|
|
66
|
+
const modelManager = new ModelManager();
|
|
67
|
+
readiness = checkSemanticReadiness(config, modelManager, repository);
|
|
64
68
|
db.close();
|
|
65
69
|
}
|
|
66
70
|
catch (error) {
|
|
@@ -68,13 +72,9 @@ export async function statusCommand(options) {
|
|
|
68
72
|
console.error("");
|
|
69
73
|
return;
|
|
70
74
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
const modelAvailable = modelManager.isModelAvailable();
|
|
75
|
-
// Semantic search mode
|
|
76
|
-
const config = loadConfig(rootPath);
|
|
77
|
-
const semanticMode = config.embedding.enabled || modelAvailable;
|
|
75
|
+
// readiness is always set if we reach here (no early return from catch)
|
|
76
|
+
const { modelAvailable, embeddingsCount: embeddingsGenerated } = readiness;
|
|
77
|
+
const semanticMode = readiness.ready;
|
|
78
78
|
// MCP config checks — check all supported targets (global + project level)
|
|
79
79
|
const configuredTools = [];
|
|
80
80
|
for (const t of TARGETS) {
|
|
@@ -100,11 +100,7 @@ export async function statusCommand(options) {
|
|
|
100
100
|
}
|
|
101
101
|
// Overall status
|
|
102
102
|
const isReady = totalNotes > 0;
|
|
103
|
-
const statusLabel =
|
|
104
|
-
? semanticMode
|
|
105
|
-
? "Ready (semantic + FTS5)"
|
|
106
|
-
: "Ready (FTS5 only)"
|
|
107
|
-
: "Not initialized";
|
|
103
|
+
const statusLabel = readiness.label;
|
|
108
104
|
// Build content
|
|
109
105
|
const modelLine = modelAvailable
|
|
110
106
|
? `${symbols.success} all-MiniLM-L6-v2 (available)`
|
|
@@ -123,10 +119,14 @@ export async function statusCommand(options) {
|
|
|
123
119
|
const mcpLine = configuredTools.length > 0
|
|
124
120
|
? `${symbols.success} ${colors.success(configuredTools.join(", "))}`
|
|
125
121
|
: colors.hint("none configured");
|
|
122
|
+
// Build source breakdown lines
|
|
123
|
+
const sourceEntries = Object.entries(notesBySource).sort(([, a], [, b]) => b - a);
|
|
124
|
+
const sourceLines = sourceEntries.map(([source, count]) => ` ${colors.dim(source.padEnd(16))}${count}`);
|
|
126
125
|
const contentParts = [
|
|
127
126
|
`${colors.bold("Database")}`,
|
|
128
127
|
` ${pad("Path:")}${dbPath} (${sizeStr})`,
|
|
129
128
|
` ${pad("Notes:")}${colors.info(String(totalNotes))} indexed`,
|
|
129
|
+
...(sourceEntries.length > 1 ? sourceLines : []),
|
|
130
130
|
` ${pad("Patterns:")}${colors.info(String(totalPatterns))} extracted`,
|
|
131
131
|
` ${pad("Embeddings:")}${colors.info(`${embeddingsGenerated}/${totalNotes}`)} generated`,
|
|
132
132
|
"",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACxD,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,YAAY,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA+K3E"}
|
package/dist/commands/upgrade.js
CHANGED
|
@@ -3,9 +3,6 @@ import { existsSync } from "fs";
|
|
|
3
3
|
import { loadConfig, writeRcConfig, resolveDefaultPath, createDatabase, loadSqliteVecExtension, Migrator, KnowledgeRepository, ALL_MIGRATIONS, OnnxEmbeddingProvider, ModelManager, DEFAULT_MODEL_NAME, downloadModel, } from "@knowledgine/core";
|
|
4
4
|
import { createProgress } from "../lib/progress.js";
|
|
5
5
|
import { colors, symbols, createBox } from "../lib/ui/index.js";
|
|
6
|
-
function sanitizeForLog(value) {
|
|
7
|
-
return value.replace(/[\r\n]+/g, " ");
|
|
8
|
-
}
|
|
9
6
|
export async function upgradeCommand(options) {
|
|
10
7
|
const rootPath = resolveDefaultPath(options.path);
|
|
11
8
|
if (!options.semantic) {
|
|
@@ -87,9 +84,8 @@ export async function upgradeCommand(options) {
|
|
|
87
84
|
});
|
|
88
85
|
console.error(`${symbols.success} ${colors.success("Model download complete.")}`);
|
|
89
86
|
}
|
|
90
|
-
catch
|
|
91
|
-
|
|
92
|
-
console.error(colors.error(`\nModel download failed: ${message}`));
|
|
87
|
+
catch {
|
|
88
|
+
console.error(colors.error("\nModel download failed. Check your network connection and try again."));
|
|
93
89
|
console.error(colors.error("Semantic search upgrade aborted."));
|
|
94
90
|
db.close();
|
|
95
91
|
process.exitCode = 1;
|
|
@@ -101,25 +97,36 @@ export async function upgradeCommand(options) {
|
|
|
101
97
|
}
|
|
102
98
|
// Generate embeddings for notes that don't have them
|
|
103
99
|
const embeddingProvider = new OnnxEmbeddingProvider(DEFAULT_MODEL_NAME, modelManager);
|
|
104
|
-
const
|
|
105
|
-
if (
|
|
100
|
+
const noteIds = repository.getNotesWithoutEmbeddingIds();
|
|
101
|
+
if (noteIds.length > 0) {
|
|
106
102
|
// Warm up the ONNX session (first call is slow due to model loading)
|
|
107
103
|
console.error(colors.info("\nLoading embedding model..."));
|
|
108
104
|
await embeddingProvider.embed("warmup");
|
|
109
105
|
console.error("");
|
|
110
|
-
const
|
|
106
|
+
const BATCH_SIZE = 20;
|
|
107
|
+
const embProgress = createProgress(noteIds.length, "Generating embeddings");
|
|
111
108
|
let generated = 0;
|
|
112
109
|
let failed = 0;
|
|
113
|
-
for (
|
|
110
|
+
for (let i = 0; i < noteIds.length; i += BATCH_SIZE) {
|
|
111
|
+
const batchIds = noteIds.slice(i, i + BATCH_SIZE);
|
|
112
|
+
const noteRows = repository.getNotesByIds(batchIds);
|
|
113
|
+
// getNotesByIds の返り順は不定なので id→note Map で安全にマッピング
|
|
114
|
+
const noteMap = new Map(noteRows.map((n) => [n.id, n]));
|
|
115
|
+
const orderedNotes = batchIds.map((id) => noteMap.get(id)).filter((n) => n != null);
|
|
114
116
|
try {
|
|
115
|
-
const
|
|
116
|
-
repository.
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
const embeddings = await embeddingProvider.embedBatch(orderedNotes.map((n) => n.content));
|
|
118
|
+
const result = repository.saveEmbeddingBatch(orderedNotes.map((n, j) => ({
|
|
119
|
+
noteId: n.id,
|
|
120
|
+
embedding: embeddings[j],
|
|
121
|
+
modelName: config.embedding.modelName,
|
|
122
|
+
})));
|
|
123
|
+
generated += result.saved;
|
|
124
|
+
failed += result.failed;
|
|
119
125
|
}
|
|
120
126
|
catch {
|
|
121
|
-
failed
|
|
127
|
+
failed += orderedNotes.length;
|
|
122
128
|
}
|
|
129
|
+
embProgress.update(generated + failed > noteIds.length ? noteIds.length : generated + failed);
|
|
123
130
|
}
|
|
124
131
|
embProgress.finish();
|
|
125
132
|
console.error(` ${symbols.success} ${colors.success(`Generated: ${generated}`)}, Failed: ${failed}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EACL,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,sBAAsB,EACtB,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAOhE,
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
|