@knowledgine/cli 0.1.0 → 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/dist/commands/capture.d.ts +23 -0
- package/dist/commands/capture.d.ts.map +1 -0
- package/dist/commands/capture.js +237 -0
- package/dist/commands/capture.js.map +1 -0
- package/dist/commands/demo.d.ts +6 -0
- package/dist/commands/demo.d.ts.map +1 -0
- package/dist/commands/demo.js +48 -0
- package/dist/commands/demo.js.map +1 -0
- package/dist/commands/feedback.d.ts +27 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +120 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/ingest.d.ts +9 -0
- package/dist/commands/ingest.d.ts.map +1 -0
- package/dist/commands/ingest.js +162 -0
- package/dist/commands/ingest.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +327 -42
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plugins.d.ts +6 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +41 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/search.d.ts +16 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +140 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/setup.d.ts +57 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +331 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/start.d.ts +1 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +98 -24
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +149 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/tool.d.ts +29 -0
- package/dist/commands/tool.d.ts.map +1 -0
- package/dist/commands/tool.js +247 -0
- package/dist/commands/tool.js.map +1 -0
- package/dist/commands/upgrade.d.ts +6 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +137 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/index.js +178 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/demo-manager.d.ts +16 -0
- package/dist/lib/demo-manager.d.ts.map +1 -0
- package/dist/lib/demo-manager.js +37 -0
- package/dist/lib/demo-manager.js.map +1 -0
- package/dist/lib/entity-extractor.d.ts +15 -0
- package/dist/lib/entity-extractor.d.ts.map +1 -0
- package/dist/lib/entity-extractor.js +86 -0
- package/dist/lib/entity-extractor.js.map +1 -0
- package/dist/lib/formatter.d.ts +7 -0
- package/dist/lib/formatter.d.ts.map +1 -0
- package/dist/lib/formatter.js +94 -0
- package/dist/lib/formatter.js.map +1 -0
- package/dist/lib/indexer.d.ts +6 -1
- package/dist/lib/indexer.d.ts.map +1 -1
- package/dist/lib/indexer.js +4 -1
- package/dist/lib/indexer.js.map +1 -1
- package/dist/lib/ingest-watcher.d.ts +20 -0
- package/dist/lib/ingest-watcher.d.ts.map +1 -0
- package/dist/lib/ingest-watcher.js +45 -0
- package/dist/lib/ingest-watcher.js.map +1 -0
- package/dist/lib/plugin-loader.d.ts +5 -0
- package/dist/lib/plugin-loader.d.ts.map +1 -0
- package/dist/lib/plugin-loader.js +27 -0
- package/dist/lib/plugin-loader.js.map +1 -0
- package/dist/lib/progress.d.ts +63 -0
- package/dist/lib/progress.d.ts.map +1 -0
- package/dist/lib/progress.js +228 -0
- package/dist/lib/progress.js.map +1 -0
- package/dist/lib/ui/box.d.ts +7 -0
- package/dist/lib/ui/box.d.ts.map +1 -0
- package/dist/lib/ui/box.js +19 -0
- package/dist/lib/ui/box.js.map +1 -0
- package/dist/lib/ui/error-formatter.d.ts +8 -0
- package/dist/lib/ui/error-formatter.d.ts.map +1 -0
- package/dist/lib/ui/error-formatter.js +21 -0
- package/dist/lib/ui/error-formatter.js.map +1 -0
- package/dist/lib/ui/index.d.ts +7 -0
- package/dist/lib/ui/index.d.ts.map +1 -0
- package/dist/lib/ui/index.js +7 -0
- package/dist/lib/ui/index.js.map +1 -0
- package/dist/lib/ui/output.d.ts +2 -0
- package/dist/lib/ui/output.d.ts.map +1 -0
- package/dist/lib/ui/output.js +4 -0
- package/dist/lib/ui/output.js.map +1 -0
- package/dist/lib/ui/spinner.d.ts +4 -0
- package/dist/lib/ui/spinner.d.ts.map +1 -0
- package/dist/lib/ui/spinner.js +5 -0
- package/dist/lib/ui/spinner.js.map +1 -0
- package/dist/lib/ui/table.d.ts +9 -0
- package/dist/lib/ui/table.d.ts.map +1 -0
- package/dist/lib/ui/table.js +28 -0
- package/dist/lib/ui/table.js.map +1 -0
- package/dist/lib/ui/theme.d.ts +21 -0
- package/dist/lib/ui/theme.d.ts.map +1 -0
- package/dist/lib/ui/theme.js +29 -0
- package/dist/lib/ui/theme.js.map +1 -0
- package/dist/lib/unknown-command-handler.d.ts +14 -0
- package/dist/lib/unknown-command-handler.d.ts.map +1 -0
- package/dist/lib/unknown-command-handler.js +25 -0
- package/dist/lib/unknown-command-handler.js.map +1 -0
- package/dist/lib/url-validator.d.ts +2 -0
- package/dist/lib/url-validator.d.ts.map +1 -0
- package/dist/lib/url-validator.js +21 -0
- package/dist/lib/url-validator.js.map +1 -0
- package/fixtures/demo/notes/api-design-decisions.md +84 -0
- package/fixtures/demo/notes/auth-debugging.md +60 -0
- package/fixtures/demo/notes/ci-cd-pipeline.md +97 -0
- package/fixtures/demo/notes/code-review-notes.md +78 -0
- package/fixtures/demo/notes/database-optimization.md +81 -0
- package/fixtures/demo/notes/docker-troubleshooting.md +80 -0
- package/fixtures/demo/notes/react-performance.md +67 -0
- package/fixtures/demo/notes/typescript-migration.md +89 -0
- package/package.json +13 -4
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { resolve, join } from "path";
|
|
2
|
+
import { mkdirSync, statSync } from "fs";
|
|
3
|
+
import { homedir } from "os";
|
|
4
|
+
import { defineConfig, resolveDefaultPath, createDatabase, Migrator, KnowledgeRepository, ALL_MIGRATIONS, } from "@knowledgine/core";
|
|
5
|
+
import { IngestEngine } from "@knowledgine/ingest";
|
|
6
|
+
import { createDefaultRegistry, initializePlugins } from "../lib/plugin-loader.js";
|
|
7
|
+
import { createProgress, formatDuration, createSummaryReport } from "../lib/progress.js";
|
|
8
|
+
import { colors, symbols } from "../lib/ui/index.js";
|
|
9
|
+
export async function ingestCommand(options) {
|
|
10
|
+
// Validate mutually exclusive options
|
|
11
|
+
if (options.source && options.all) {
|
|
12
|
+
console.error(colors.error("Error: --source and --all cannot be used together"));
|
|
13
|
+
process.exitCode = 1;
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (!options.source && !options.all) {
|
|
17
|
+
console.error(colors.error("Error: Specify --source <pluginId> or --all"));
|
|
18
|
+
console.error("Usage: knowledgine ingest --source <id> --path <dir>");
|
|
19
|
+
console.error(" knowledgine ingest --all --path <dir>");
|
|
20
|
+
process.exitCode = 1;
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const rootPath = resolveDefaultPath(options.path);
|
|
24
|
+
// Initialize database (same pattern as init.ts)
|
|
25
|
+
const knowledgineDir = resolve(rootPath, ".knowledgine");
|
|
26
|
+
mkdirSync(knowledgineDir, { recursive: true });
|
|
27
|
+
const config = defineConfig({ rootPath });
|
|
28
|
+
const db = createDatabase(config.dbPath, { enableVec: true });
|
|
29
|
+
new Migrator(db, ALL_MIGRATIONS).migrate();
|
|
30
|
+
const repository = new KnowledgeRepository(db);
|
|
31
|
+
// Setup plugin registry
|
|
32
|
+
const registry = createDefaultRegistry();
|
|
33
|
+
const initResults = await initializePlugins(registry);
|
|
34
|
+
// Check for specific plugin
|
|
35
|
+
if (options.source) {
|
|
36
|
+
if (!registry.has(options.source)) {
|
|
37
|
+
console.error(colors.error(`Error: Plugin "${options.source}" is not registered.`));
|
|
38
|
+
console.error(`Available plugins: ${registry
|
|
39
|
+
.list()
|
|
40
|
+
.map((p) => p.manifest.id)
|
|
41
|
+
.join(", ")}`);
|
|
42
|
+
process.exitCode = 1;
|
|
43
|
+
db.close();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const initResult = initResults.get(options.source);
|
|
47
|
+
if (initResult && !initResult.ok) {
|
|
48
|
+
console.error(colors.error(`Error: Plugin "${options.source}" failed to initialize: ${initResult.error}`));
|
|
49
|
+
process.exitCode = 1;
|
|
50
|
+
db.close();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Determine sourcePath based on plugin type
|
|
55
|
+
let sourcePath = rootPath;
|
|
56
|
+
if (options.source === "github") {
|
|
57
|
+
if (!options.repo) {
|
|
58
|
+
console.error(colors.error("Error: --repo <owner/repo> is required for --source github"));
|
|
59
|
+
console.error("Usage: knowledgine ingest --source github --repo owner/repo --path <dir>");
|
|
60
|
+
process.exitCode = 1;
|
|
61
|
+
db.close();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
sourcePath = `github://${options.repo}`;
|
|
65
|
+
}
|
|
66
|
+
else if (options.source === "claude-sessions") {
|
|
67
|
+
// Map the project root path to the Claude projects directory name
|
|
68
|
+
// e.g. /Users/foo/workspaces/bar → -Users-foo-workspaces-bar
|
|
69
|
+
const projectDirName = rootPath.replace(/\//g, "-");
|
|
70
|
+
const projectSessionDir = join(homedir(), ".claude", "projects", projectDirName);
|
|
71
|
+
// Use project-specific directory if it exists, otherwise scan all
|
|
72
|
+
try {
|
|
73
|
+
const dirStat = statSync(projectSessionDir);
|
|
74
|
+
if (dirStat.isDirectory()) {
|
|
75
|
+
sourcePath = projectSessionDir;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
sourcePath = join(homedir(), ".claude", "projects");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// Project-specific dir doesn't exist — fall back to all projects
|
|
83
|
+
sourcePath = join(homedir(), ".claude", "projects");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Run ingest
|
|
87
|
+
const engine = new IngestEngine(registry, db, repository);
|
|
88
|
+
const startTime = Date.now();
|
|
89
|
+
try {
|
|
90
|
+
if (options.all) {
|
|
91
|
+
const plugins = registry.list();
|
|
92
|
+
const progress = createProgress(plugins.length, "Ingesting");
|
|
93
|
+
let completed = 0;
|
|
94
|
+
let totalProcessed = 0;
|
|
95
|
+
let totalErrors = 0;
|
|
96
|
+
for (const plugin of plugins) {
|
|
97
|
+
const initResult = initResults.get(plugin.manifest.id);
|
|
98
|
+
if (initResult && !initResult.ok) {
|
|
99
|
+
console.error(` ${symbols.info} ${colors.hint(plugin.manifest.id)} skipped (init failed: ${initResult.error})`);
|
|
100
|
+
completed++;
|
|
101
|
+
progress.update(completed, plugin.manifest.id);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
const summary = await engine.ingest(plugin.manifest.id, rootPath, {
|
|
106
|
+
full: options.full,
|
|
107
|
+
});
|
|
108
|
+
completed++;
|
|
109
|
+
totalProcessed += summary.processed;
|
|
110
|
+
totalErrors += summary.errors;
|
|
111
|
+
progress.update(completed, plugin.manifest.id);
|
|
112
|
+
if (summary.errors > 0) {
|
|
113
|
+
console.error(` ${symbols.warning} ${colors.warning(plugin.manifest.id)}: ${summary.processed} events (${summary.errors} errors, ${formatDuration(summary.elapsedMs)})`);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.error(` ${symbols.success} ${colors.success(plugin.manifest.id)}: ${summary.processed} events (${formatDuration(summary.elapsedMs)})`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
completed++;
|
|
121
|
+
totalErrors++;
|
|
122
|
+
progress.update(completed, plugin.manifest.id);
|
|
123
|
+
console.error(` ${symbols.warning} ${colors.warning(plugin.manifest.id)}: failed - ${error instanceof Error ? error.message : String(error)}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
progress.finish();
|
|
127
|
+
const elapsed = formatDuration(Date.now() - startTime);
|
|
128
|
+
const report = createSummaryReport("knowledgine ingest", [
|
|
129
|
+
{ label: "Plugins:", value: `${plugins.length} run` },
|
|
130
|
+
{ label: "Events:", value: `${totalProcessed} processed` },
|
|
131
|
+
{ label: "Errors:", value: totalErrors },
|
|
132
|
+
{ label: "Duration:", value: elapsed },
|
|
133
|
+
]);
|
|
134
|
+
console.error("\n" + report);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
const summary = await engine.ingest(options.source, sourcePath, {
|
|
138
|
+
full: options.full,
|
|
139
|
+
});
|
|
140
|
+
const elapsed = formatDuration(Date.now() - startTime);
|
|
141
|
+
const entries = [
|
|
142
|
+
{ label: "Source:", value: options.source },
|
|
143
|
+
{ label: "Events:", value: `${summary.processed} processed` },
|
|
144
|
+
{ label: "Errors:", value: summary.errors },
|
|
145
|
+
...(summary.deleted > 0
|
|
146
|
+
? [{ label: "Removed:", value: `${summary.deleted} stale notes` }]
|
|
147
|
+
: []),
|
|
148
|
+
{ label: "Duration:", value: elapsed },
|
|
149
|
+
];
|
|
150
|
+
const report = createSummaryReport("knowledgine ingest", entries);
|
|
151
|
+
console.error("\n" + report);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
console.error(colors.error(`Ingest failed: ${error instanceof Error ? error.message : String(error)}`));
|
|
156
|
+
process.exitCode = 1;
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
db.close();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=ingest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/commands/ingest.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAqED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoUrE"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,63 +1,348 @@
|
|
|
1
1
|
import { resolve } from "path";
|
|
2
|
-
import { mkdirSync } from "fs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { mkdirSync, statSync } from "fs";
|
|
3
|
+
import { loadConfig, writeRcConfig, resolveDefaultPath, createDatabase, loadSqliteVecExtension, Migrator, KnowledgeRepository, GraphRepository, ALL_MIGRATIONS, OnnxEmbeddingProvider, ModelManager, DEFAULT_MODEL_NAME, downloadModel, VERSION, } from "@knowledgine/core";
|
|
4
|
+
import { IngestEngine, PluginRegistry, MarkdownPlugin } from "@knowledgine/ingest";
|
|
5
|
+
import { postIngestProcessing } from "../lib/entity-extractor.js";
|
|
6
|
+
import { createProgress, createStepProgress, formatDuration, } from "../lib/progress.js";
|
|
7
|
+
import { copyDemoFixtures } from "../lib/demo-manager.js";
|
|
8
|
+
import { getDemoNotesPath } from "./demo.js";
|
|
9
|
+
import { colors, symbols } from "../lib/ui/index.js";
|
|
10
|
+
import * as p from "@clack/prompts";
|
|
11
|
+
/**
|
|
12
|
+
* Maximum number of retry attempts for network operations (e.g., model download).
|
|
13
|
+
*/
|
|
14
|
+
const MAX_DOWNLOAD_RETRIES = 3;
|
|
15
|
+
/**
|
|
16
|
+
* Minimum disk space required for FTS5-only initialization.
|
|
17
|
+
* SQLite index is roughly equal to the size of the source files.
|
|
18
|
+
* We require 2x to account for index overhead.
|
|
19
|
+
*/
|
|
20
|
+
const DISK_MULTIPLIER_FTS5 = 2;
|
|
21
|
+
/**
|
|
22
|
+
* Extra disk space required for the embedding model (~23 MB).
|
|
23
|
+
*/
|
|
24
|
+
const SEMANTIC_MODEL_BYTES = 23 * 1024 * 1024;
|
|
25
|
+
/**
|
|
26
|
+
* Estimate the total size of markdown files under the given root path.
|
|
27
|
+
* Returns 0 if the stat call fails (best-effort check).
|
|
28
|
+
*/
|
|
29
|
+
function estimateMarkdownSize(rootPath) {
|
|
30
|
+
try {
|
|
31
|
+
const stat = statSync(rootPath);
|
|
32
|
+
if (!stat.isDirectory())
|
|
33
|
+
return 0;
|
|
34
|
+
// We cannot cheaply total all files without walking; use directory size as
|
|
35
|
+
// a rough upper bound for the check. On most systems statSync on a directory
|
|
36
|
+
// returns a small number (e.g. 128/4096), so we skip this approach and
|
|
37
|
+
// rely on the caller to pass an explicit estimate when available.
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return 0;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check available disk space for the given path.
|
|
46
|
+
* Returns Infinity when the check cannot be performed (non-critical guard).
|
|
47
|
+
*/
|
|
48
|
+
async function getFreeDiskBytes(targetPath) {
|
|
49
|
+
try {
|
|
50
|
+
// Use `df` to get available kilobytes, then convert to bytes.
|
|
51
|
+
const { execFile } = await import("child_process");
|
|
52
|
+
const { promisify } = await import("util");
|
|
53
|
+
const execFileAsync = promisify(execFile);
|
|
54
|
+
const { stdout } = await execFileAsync("df", ["-k", "--", targetPath]);
|
|
55
|
+
// df output: Filesystem 1K-blocks Used Available Use% Mounted on
|
|
56
|
+
const lines = stdout.trim().split("\n");
|
|
57
|
+
if (lines.length < 2)
|
|
58
|
+
return Infinity;
|
|
59
|
+
const parts = lines[1].trim().split(/\s+/);
|
|
60
|
+
// "Available" is the 4th column (index 3)
|
|
61
|
+
const availableKb = parseInt(parts[3] ?? "0", 10);
|
|
62
|
+
if (isNaN(availableKb))
|
|
63
|
+
return Infinity;
|
|
64
|
+
return availableKb * 1024;
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// df is not available (e.g. Windows) or failed — skip the check
|
|
68
|
+
return Infinity;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Sleep for `ms` milliseconds (used for exponential backoff).
|
|
73
|
+
*/
|
|
74
|
+
function sleep(ms) {
|
|
75
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
76
|
+
}
|
|
5
77
|
export async function initCommand(options) {
|
|
6
|
-
const
|
|
7
|
-
|
|
78
|
+
const initStartTime = Date.now();
|
|
79
|
+
let rootPath;
|
|
80
|
+
p.intro(`${colors.bold("knowledgine")} ${colors.dim(`v${VERSION}`)}`);
|
|
81
|
+
if (options.demo) {
|
|
82
|
+
const demoPath = getDemoNotesPath(options.path);
|
|
83
|
+
const count = copyDemoFixtures(demoPath);
|
|
84
|
+
console.error(`${symbols.info} ${colors.info(`Copied ${count} demo notes to ${demoPath}`)}`);
|
|
85
|
+
rootPath = demoPath;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
rootPath = resolveDefaultPath(options.path);
|
|
89
|
+
}
|
|
90
|
+
// Deprecation warning for --skip-embeddings
|
|
91
|
+
if (options.skipEmbeddings) {
|
|
92
|
+
console.error(`${symbols.warning} ${colors.warning("--skip-embeddings is deprecated. Embeddings are now opt-in by default.")}`);
|
|
93
|
+
console.error(` ${colors.warning("Use 'knowledgine init --semantic' to enable semantic search.")}`);
|
|
94
|
+
console.error("");
|
|
95
|
+
}
|
|
96
|
+
// Determine if semantic search should be enabled
|
|
97
|
+
const enableSemantic = options.semantic === true;
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
// Step 1: Create .knowledgine directory
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
const totalSteps = enableSemantic ? 5 : 3;
|
|
102
|
+
const stepProgress = createStepProgress(totalSteps, "Initializing knowledgine...");
|
|
8
103
|
const knowledgineDir = resolve(rootPath, ".knowledgine");
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
104
|
+
stepProgress.startStep("Creating .knowledgine directory");
|
|
105
|
+
try {
|
|
106
|
+
mkdirSync(knowledgineDir, { recursive: true });
|
|
107
|
+
stepProgress.completeStep("Creating .knowledgine directory");
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
111
|
+
// Check if this is a disk-related error
|
|
112
|
+
if (message.includes("ENOSPC") ||
|
|
113
|
+
message.includes("no space") ||
|
|
114
|
+
message.includes("disk full")) {
|
|
115
|
+
const freeDisk = await getFreeDiskBytes(resolve(rootPath, ".."));
|
|
116
|
+
const estimatedNeeded = estimateMarkdownSize(rootPath) * DISK_MULTIPLIER_FTS5;
|
|
117
|
+
stepProgress.failStep("Creating .knowledgine directory", "Insufficient disk space");
|
|
118
|
+
console.error("");
|
|
119
|
+
console.error(colors.error("Error: Disk is full. Cannot create the knowledge base."));
|
|
120
|
+
console.error("");
|
|
121
|
+
console.error(`${symbols.warning} ${colors.warning("Disk space requirements:")}`);
|
|
122
|
+
console.error(` FTS5 text search only: source files x${DISK_MULTIPLIER_FTS5} (index overhead)`);
|
|
123
|
+
if (enableSemantic) {
|
|
124
|
+
console.error(` Semantic search (+--semantic): +${(SEMANTIC_MODEL_BYTES / (1024 * 1024)).toFixed(0)} MB (embedding model) + vector index`);
|
|
125
|
+
}
|
|
126
|
+
if (estimatedNeeded > 0) {
|
|
127
|
+
console.error(` Estimated needed: ~${(estimatedNeeded / (1024 * 1024)).toFixed(1)} MB`);
|
|
128
|
+
}
|
|
129
|
+
if (freeDisk < Infinity) {
|
|
130
|
+
console.error(` Available: ~${(freeDisk / (1024 * 1024)).toFixed(1)} MB`);
|
|
131
|
+
}
|
|
132
|
+
console.error("");
|
|
133
|
+
console.error(`${symbols.warning} ${colors.warning("Free up disk space and re-run:")}`);
|
|
134
|
+
console.error(` knowledgine init${options.path ? ` --path ${options.path}` : ""}${enableSemantic ? " --semantic" : ""}`);
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
stepProgress.failStep("Creating .knowledgine directory", message);
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
// Step 2: Initialize database
|
|
142
|
+
// ---------------------------------------------------------------------------
|
|
143
|
+
stepProgress.startStep("Initializing database");
|
|
144
|
+
const config = loadConfig(rootPath);
|
|
145
|
+
if (enableSemantic) {
|
|
146
|
+
config.embedding.enabled = true;
|
|
147
|
+
}
|
|
148
|
+
const db = createDatabase(config.dbPath);
|
|
149
|
+
if (enableSemantic) {
|
|
150
|
+
try {
|
|
151
|
+
await loadSqliteVecExtension(db);
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
155
|
+
stepProgress.failStep("Initializing database", `sqlite-vec extension unavailable: ${message}`);
|
|
156
|
+
stepProgress.warn("Falling back to FTS5-only mode (no vector search)");
|
|
157
|
+
// Continue without semantic — we degrade gracefully
|
|
158
|
+
config.embedding.enabled = false;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
13
161
|
new Migrator(db, ALL_MIGRATIONS).migrate();
|
|
14
162
|
const repository = new KnowledgeRepository(db);
|
|
15
163
|
const graphRepository = new GraphRepository(db);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
164
|
+
stepProgress.completeStep("Initializing database");
|
|
165
|
+
// ---------------------------------------------------------------------------
|
|
166
|
+
// Step 3: Index markdown files via IngestEngine
|
|
167
|
+
// ---------------------------------------------------------------------------
|
|
168
|
+
stepProgress.startStep("Indexing markdown files");
|
|
169
|
+
const registry = new PluginRegistry();
|
|
170
|
+
registry.register(new MarkdownPlugin());
|
|
171
|
+
const mdPlugin = registry.get("markdown");
|
|
172
|
+
if (mdPlugin) {
|
|
173
|
+
await mdPlugin.initialize();
|
|
174
|
+
}
|
|
175
|
+
const engine = new IngestEngine(registry, db, repository);
|
|
176
|
+
const ingestSummary = await engine.ingest("markdown", rootPath, { full: true });
|
|
177
|
+
if (ingestSummary.processed === 0) {
|
|
178
|
+
stepProgress.warn("No markdown files found in the directory.");
|
|
179
|
+
}
|
|
180
|
+
if (ingestSummary.errors > 0) {
|
|
181
|
+
stepProgress.warn(`${ingestSummary.errors} file(s) could not be indexed`);
|
|
29
182
|
}
|
|
30
|
-
|
|
31
|
-
|
|
183
|
+
stepProgress.completeStep("Indexing markdown files");
|
|
184
|
+
// Entity extraction (post-ingest batch)
|
|
185
|
+
const postSummary = await postIngestProcessing(repository, graphRepository);
|
|
186
|
+
// ---------------------------------------------------------------------------
|
|
187
|
+
// Step 4 & 5 (semantic only): Download model + generate embeddings
|
|
188
|
+
// ---------------------------------------------------------------------------
|
|
189
|
+
if (enableSemantic && config.embedding.enabled) {
|
|
32
190
|
const modelManager = new ModelManager();
|
|
33
|
-
if
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
let
|
|
38
|
-
let
|
|
39
|
-
for (const note of notesWithout) {
|
|
191
|
+
// Step 4: Download model if not already available
|
|
192
|
+
if (!modelManager.isModelAvailable()) {
|
|
193
|
+
stepProgress.startStep("Downloading embedding model");
|
|
194
|
+
let lastError = null;
|
|
195
|
+
let downloadSucceeded = false;
|
|
196
|
+
for (let attempt = 1; attempt <= MAX_DOWNLOAD_RETRIES; attempt++) {
|
|
40
197
|
try {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
198
|
+
await downloadModel(modelManager, {
|
|
199
|
+
onProgress: (progress) => {
|
|
200
|
+
if (progress.total) {
|
|
201
|
+
const mb = (progress.downloaded / (1024 * 1024)).toFixed(1);
|
|
202
|
+
const totalMb = (progress.total / (1024 * 1024)).toFixed(1);
|
|
203
|
+
process.stderr.write(`\r ${progress.file}: ${mb}/${totalMb} MB`);
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
onFileComplete: (file) => {
|
|
207
|
+
process.stderr.write(`\r [done] ${file} \n`);
|
|
208
|
+
},
|
|
209
|
+
});
|
|
210
|
+
downloadSucceeded = true;
|
|
211
|
+
break;
|
|
47
212
|
}
|
|
48
|
-
catch {
|
|
49
|
-
|
|
213
|
+
catch (error) {
|
|
214
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
215
|
+
const isNetworkError = lastError.message.includes("ENOTFOUND") ||
|
|
216
|
+
lastError.message.includes("ETIMEDOUT") ||
|
|
217
|
+
lastError.message.includes("ECONNRESET") ||
|
|
218
|
+
lastError.message.includes("network") ||
|
|
219
|
+
lastError.message.includes("fetch");
|
|
220
|
+
if (isNetworkError && attempt < MAX_DOWNLOAD_RETRIES) {
|
|
221
|
+
const backoffMs = Math.pow(2, attempt - 1) * 1000; // 1s, 2s, 4s
|
|
222
|
+
stepProgress.warn(`Download attempt ${attempt}/${MAX_DOWNLOAD_RETRIES} failed (${lastError.message}). Retrying in ${backoffMs / 1000}s...`);
|
|
223
|
+
await sleep(backoffMs);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
50
228
|
}
|
|
51
229
|
}
|
|
52
|
-
|
|
230
|
+
if (!downloadSucceeded) {
|
|
231
|
+
const message = lastError instanceof Error ? lastError.message : "unknown error";
|
|
232
|
+
stepProgress.failStep("Downloading embedding model", message);
|
|
233
|
+
console.error("");
|
|
234
|
+
console.error(colors.error("Semantic search unavailable. Text search (FTS5) works without embeddings."));
|
|
235
|
+
console.error(colors.error(`To retry: knowledgine init --path ${rootPath} --semantic`));
|
|
236
|
+
console.error("");
|
|
237
|
+
console.error(`${symbols.info} ${colors.info("Offline alternative: Copy the model files manually to:")}`);
|
|
238
|
+
console.error(` ${modelManager.getModelDir()}`);
|
|
239
|
+
console.error(" Then re-run the init command.");
|
|
240
|
+
// Still print summary for what was indexed
|
|
241
|
+
console.error("");
|
|
242
|
+
console.error("knowledgine initialized (without embeddings).");
|
|
243
|
+
console.error(` Notes: ${ingestSummary.processed} indexed`);
|
|
244
|
+
console.error(` Patterns: ${postSummary.totalEntities} entities extracted`);
|
|
245
|
+
console.error(` Embeddings: skipped (model download failed)`);
|
|
246
|
+
console.error("");
|
|
247
|
+
console.error(`${symbols.arrow} ${colors.hint("Next: Run 'knowledgine setup' to connect your AI tool.")}`);
|
|
248
|
+
db.close();
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
stepProgress.completeStep("Downloading embedding model");
|
|
53
252
|
}
|
|
54
253
|
else {
|
|
55
|
-
|
|
254
|
+
stepProgress.skipStep("Downloading embedding model", "already available");
|
|
255
|
+
}
|
|
256
|
+
// Step 5: Generate embeddings
|
|
257
|
+
stepProgress.startStep("Generating embeddings");
|
|
258
|
+
if (modelManager.isModelAvailable()) {
|
|
259
|
+
const embeddingProvider = new OnnxEmbeddingProvider(DEFAULT_MODEL_NAME, modelManager);
|
|
260
|
+
const notesWithout = repository.getNotesWithoutEmbeddings();
|
|
261
|
+
if (notesWithout.length > 0) {
|
|
262
|
+
const embProgress = createProgress(notesWithout.length, " Embeddings");
|
|
263
|
+
let generated = 0;
|
|
264
|
+
let failed = 0;
|
|
265
|
+
for (const note of notesWithout) {
|
|
266
|
+
try {
|
|
267
|
+
const embedding = await embeddingProvider.embed(note.content);
|
|
268
|
+
repository.saveEmbedding(note.id, embedding, config.embedding.modelName);
|
|
269
|
+
generated++;
|
|
270
|
+
embProgress.update(generated);
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
failed++;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
embProgress.finish();
|
|
277
|
+
if (failed > 0) {
|
|
278
|
+
stepProgress.warn(`${failed} embedding(s) could not be generated`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
56
281
|
}
|
|
282
|
+
stepProgress.completeStep("Generating embeddings");
|
|
283
|
+
}
|
|
284
|
+
stepProgress.finish();
|
|
285
|
+
// ---------------------------------------------------------------------------
|
|
286
|
+
// Auto-configure defaultPath so users don't need --path every time
|
|
287
|
+
// ---------------------------------------------------------------------------
|
|
288
|
+
const cwd = process.cwd();
|
|
289
|
+
const resolvedRoot = resolve(rootPath);
|
|
290
|
+
// Write defaultPath to cwd's .knowledginerc.json (where resolveDefaultPath reads from)
|
|
291
|
+
// Only if rootPath differs from cwd (otherwise cwd fallback already works)
|
|
292
|
+
if (resolvedRoot !== resolve(cwd)) {
|
|
293
|
+
writeRcConfig(cwd, { defaultPath: resolvedRoot });
|
|
294
|
+
}
|
|
295
|
+
// Also write semantic flag to rootPath's .knowledginerc.json if semantic enabled
|
|
296
|
+
// (this is where loadConfig reads from)
|
|
297
|
+
if (enableSemantic && config.embedding.enabled) {
|
|
298
|
+
writeRcConfig(rootPath, { semantic: true });
|
|
299
|
+
}
|
|
300
|
+
// ---------------------------------------------------------------------------
|
|
301
|
+
// Final summary
|
|
302
|
+
// ---------------------------------------------------------------------------
|
|
303
|
+
const stats = repository.getStats();
|
|
304
|
+
const notesWithoutEmb = repository.getNotesWithoutEmbeddings().length;
|
|
305
|
+
const embeddingsGenerated = stats.totalNotes - notesWithoutEmb;
|
|
306
|
+
const elapsed = formatDuration(Date.now() - initStartTime);
|
|
307
|
+
const summaryEntries = [
|
|
308
|
+
{ label: "Notes:", value: `${stats.totalNotes} indexed` },
|
|
309
|
+
{ label: "Patterns:", value: `${stats.totalPatterns} extracted` },
|
|
310
|
+
{ label: "Entities:", value: `${postSummary.totalEntities} extracted` },
|
|
311
|
+
...(enableSemantic && config.embedding.enabled
|
|
312
|
+
? [
|
|
313
|
+
{
|
|
314
|
+
label: "Embeddings:",
|
|
315
|
+
value: embeddingsGenerated > 0 ? `${embeddingsGenerated} generated` : "none",
|
|
316
|
+
},
|
|
317
|
+
]
|
|
318
|
+
: [
|
|
319
|
+
{ label: "Search:", value: "FTS5 full-text search (default)" },
|
|
320
|
+
{
|
|
321
|
+
label: "Hint:",
|
|
322
|
+
value: "Run 'knowledgine upgrade --semantic' to enable semantic search",
|
|
323
|
+
},
|
|
324
|
+
]),
|
|
325
|
+
{ label: "Duration:", value: elapsed },
|
|
326
|
+
];
|
|
327
|
+
// Summary as clack note for visual consistency
|
|
328
|
+
const summaryLines = summaryEntries.map((e) => `${colors.dim(e.label.padEnd(12))} ${e.value}`);
|
|
329
|
+
p.note(summaryLines.join("\n"), "knowledgine init");
|
|
330
|
+
if (options.demo) {
|
|
331
|
+
p.note([
|
|
332
|
+
`${symbols.arrow} ${colors.info('knowledgine search "auth" --demo')}`,
|
|
333
|
+
`${symbols.arrow} ${colors.info('knowledgine search "typescript" --demo')}`,
|
|
334
|
+
`${symbols.arrow} ${colors.info('knowledgine search "docker" --demo')}`,
|
|
335
|
+
"",
|
|
336
|
+
`${colors.dim('knowledgine demo --clean to remove demo files')}`,
|
|
337
|
+
].join("\n"), "Try these searches");
|
|
57
338
|
}
|
|
58
339
|
else {
|
|
59
|
-
|
|
340
|
+
p.note([
|
|
341
|
+
`${symbols.arrow} ${colors.info("knowledgine setup")} ${colors.dim("Configure your AI tools")}`,
|
|
342
|
+
`${symbols.arrow} ${colors.info('knowledgine search "query"')} ${colors.dim("Search your notes")}`,
|
|
343
|
+
].join("\n"), "Next steps");
|
|
60
344
|
}
|
|
345
|
+
p.outro(`${colors.success("Your knowledge is now searchable!")} ${colors.dim(`(${elapsed})`)}`);
|
|
61
346
|
db.close();
|
|
62
347
|
}
|
|
63
348
|
//# sourceMappingURL=init.js.map
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"AAOA,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAUxD;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BvF"}
|