@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.
Files changed (123) hide show
  1. package/dist/commands/capture.d.ts +23 -0
  2. package/dist/commands/capture.d.ts.map +1 -0
  3. package/dist/commands/capture.js +237 -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 +48 -0
  8. package/dist/commands/demo.js.map +1 -0
  9. package/dist/commands/feedback.d.ts +27 -0
  10. package/dist/commands/feedback.d.ts.map +1 -0
  11. package/dist/commands/feedback.js +120 -0
  12. package/dist/commands/feedback.js.map +1 -0
  13. package/dist/commands/ingest.d.ts +9 -0
  14. package/dist/commands/ingest.d.ts.map +1 -0
  15. package/dist/commands/ingest.js +162 -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 +327 -42
  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 +41 -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 +140 -0
  28. package/dist/commands/search.js.map +1 -0
  29. package/dist/commands/setup.d.ts +57 -0
  30. package/dist/commands/setup.d.ts.map +1 -0
  31. package/dist/commands/setup.js +331 -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 +98 -24
  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 +149 -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 +137 -0
  48. package/dist/commands/upgrade.js.map +1 -0
  49. package/dist/index.js +178 -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/entity-extractor.d.ts +15 -0
  56. package/dist/lib/entity-extractor.d.ts.map +1 -0
  57. package/dist/lib/entity-extractor.js +86 -0
  58. package/dist/lib/entity-extractor.js.map +1 -0
  59. package/dist/lib/formatter.d.ts +7 -0
  60. package/dist/lib/formatter.d.ts.map +1 -0
  61. package/dist/lib/formatter.js +94 -0
  62. package/dist/lib/formatter.js.map +1 -0
  63. package/dist/lib/indexer.d.ts +6 -1
  64. package/dist/lib/indexer.d.ts.map +1 -1
  65. package/dist/lib/indexer.js +4 -1
  66. package/dist/lib/indexer.js.map +1 -1
  67. package/dist/lib/ingest-watcher.d.ts +20 -0
  68. package/dist/lib/ingest-watcher.d.ts.map +1 -0
  69. package/dist/lib/ingest-watcher.js +45 -0
  70. package/dist/lib/ingest-watcher.js.map +1 -0
  71. package/dist/lib/plugin-loader.d.ts +5 -0
  72. package/dist/lib/plugin-loader.d.ts.map +1 -0
  73. package/dist/lib/plugin-loader.js +27 -0
  74. package/dist/lib/plugin-loader.js.map +1 -0
  75. package/dist/lib/progress.d.ts +63 -0
  76. package/dist/lib/progress.d.ts.map +1 -0
  77. package/dist/lib/progress.js +228 -0
  78. package/dist/lib/progress.js.map +1 -0
  79. package/dist/lib/ui/box.d.ts +7 -0
  80. package/dist/lib/ui/box.d.ts.map +1 -0
  81. package/dist/lib/ui/box.js +19 -0
  82. package/dist/lib/ui/box.js.map +1 -0
  83. package/dist/lib/ui/error-formatter.d.ts +8 -0
  84. package/dist/lib/ui/error-formatter.d.ts.map +1 -0
  85. package/dist/lib/ui/error-formatter.js +21 -0
  86. package/dist/lib/ui/error-formatter.js.map +1 -0
  87. package/dist/lib/ui/index.d.ts +7 -0
  88. package/dist/lib/ui/index.d.ts.map +1 -0
  89. package/dist/lib/ui/index.js +7 -0
  90. package/dist/lib/ui/index.js.map +1 -0
  91. package/dist/lib/ui/output.d.ts +2 -0
  92. package/dist/lib/ui/output.d.ts.map +1 -0
  93. package/dist/lib/ui/output.js +4 -0
  94. package/dist/lib/ui/output.js.map +1 -0
  95. package/dist/lib/ui/spinner.d.ts +4 -0
  96. package/dist/lib/ui/spinner.d.ts.map +1 -0
  97. package/dist/lib/ui/spinner.js +5 -0
  98. package/dist/lib/ui/spinner.js.map +1 -0
  99. package/dist/lib/ui/table.d.ts +9 -0
  100. package/dist/lib/ui/table.d.ts.map +1 -0
  101. package/dist/lib/ui/table.js +28 -0
  102. package/dist/lib/ui/table.js.map +1 -0
  103. package/dist/lib/ui/theme.d.ts +21 -0
  104. package/dist/lib/ui/theme.d.ts.map +1 -0
  105. package/dist/lib/ui/theme.js +29 -0
  106. package/dist/lib/ui/theme.js.map +1 -0
  107. package/dist/lib/unknown-command-handler.d.ts +14 -0
  108. package/dist/lib/unknown-command-handler.d.ts.map +1 -0
  109. package/dist/lib/unknown-command-handler.js +25 -0
  110. package/dist/lib/unknown-command-handler.js.map +1 -0
  111. package/dist/lib/url-validator.d.ts +2 -0
  112. package/dist/lib/url-validator.d.ts.map +1 -0
  113. package/dist/lib/url-validator.js +21 -0
  114. package/dist/lib/url-validator.js.map +1 -0
  115. package/fixtures/demo/notes/api-design-decisions.md +84 -0
  116. package/fixtures/demo/notes/auth-debugging.md +60 -0
  117. package/fixtures/demo/notes/ci-cd-pipeline.md +97 -0
  118. package/fixtures/demo/notes/code-review-notes.md +78 -0
  119. package/fixtures/demo/notes/database-optimization.md +81 -0
  120. package/fixtures/demo/notes/docker-troubleshooting.md +80 -0
  121. package/fixtures/demo/notes/react-performance.md +67 -0
  122. package/fixtures/demo/notes/typescript-migration.md +89 -0
  123. 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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"}
@@ -1,6 +1,8 @@
1
1
  export interface InitOptions {
2
2
  path?: string;
3
+ semantic?: boolean;
3
4
  skipEmbeddings?: boolean;
5
+ demo?: boolean;
4
6
  }
5
7
  export declare function initCommand(options: InitOptions): Promise<void>;
6
8
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8DrE"}
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"}
@@ -1,63 +1,348 @@
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";
4
- import { indexAll } from "../lib/indexer.js";
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 rootPath = resolve(options.path ?? process.cwd());
7
- // Create .knowledgine directory
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
- 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 });
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
- // 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`);
24
- if (summary.errors.length > 0) {
25
- console.error(` Errors: ${summary.errors.length}`);
26
- for (const err of summary.errors) {
27
- console.error(` - ${err}`);
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
- // Generate embeddings if not skipped
31
- if (!options.skipEmbeddings) {
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 (modelManager.isModelAvailable()) {
34
- console.error("Generating embeddings...");
35
- const embeddingProvider = new OnnxEmbeddingProvider(undefined, modelManager);
36
- const notesWithout = repository.getNotesWithoutEmbeddings();
37
- let generated = 0;
38
- let failed = 0;
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
- 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}`);
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
- failed++;
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
- console.error(` Embeddings: ${generated} generated, ${failed} failed`);
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
- console.error("Skipping embeddings: model not found. Run: node scripts/download-model.js");
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
- console.error("Skipping embeddings (--skip-embeddings flag set).");
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,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":"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"}