@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,41 @@
1
+ import { resolve } from "path";
2
+ import { mkdirSync } from "fs";
3
+ import { defineConfig, resolveDefaultPath, createDatabase, Migrator, ALL_MIGRATIONS } from "@knowledgine/core";
4
+ import { CursorStore } from "@knowledgine/ingest";
5
+ import { createDefaultRegistry } from "../lib/plugin-loader.js";
6
+ import { createTable } from "../lib/ui/index.js";
7
+ export async function pluginsListCommand() {
8
+ const registry = createDefaultRegistry();
9
+ const plugins = registry.list();
10
+ const rows = plugins.map((plugin) => {
11
+ const { id, name, version, priority } = plugin.manifest;
12
+ return [id, name, version, String(priority)];
13
+ });
14
+ console.error(createTable({ head: ["ID", "Name", "Version", "Priority"], rows }));
15
+ }
16
+ export async function pluginsStatusCommand(options) {
17
+ const rootPath = resolveDefaultPath(options.path);
18
+ const knowledgineDir = resolve(rootPath, ".knowledgine");
19
+ mkdirSync(knowledgineDir, { recursive: true });
20
+ const config = defineConfig({ rootPath });
21
+ const db = createDatabase(config.dbPath, { enableVec: true });
22
+ new Migrator(db, ALL_MIGRATIONS).migrate();
23
+ const cursorStore = new CursorStore(db);
24
+ const cursors = cursorStore.listCursors();
25
+ const cursorMap = new Map(cursors.map((c) => [c.pluginId, c]));
26
+ const registry = createDefaultRegistry();
27
+ const plugins = registry.list();
28
+ const rows = plugins.map((plugin) => {
29
+ const cursor = cursorMap.get(plugin.manifest.id);
30
+ const lastIngest = cursor
31
+ ? cursor.lastIngestAt.toISOString().replace("T", " ").slice(0, 19)
32
+ : "never";
33
+ const checkpoint = cursor
34
+ ? cursor.checkpoint.slice(0, 20) + (cursor.checkpoint.length > 20 ? "..." : "")
35
+ : "-";
36
+ return [plugin.manifest.id, lastIngest, checkpoint];
37
+ });
38
+ console.error(createTable({ head: ["Plugin", "Last Ingest", "Checkpoint"], rows }));
39
+ db.close();
40
+ }
41
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface SearchCommandOptions {
2
+ demo?: boolean;
3
+ mode?: string;
4
+ limit?: number;
5
+ format?: string;
6
+ related?: string;
7
+ relatedFile?: string;
8
+ path?: string;
9
+ }
10
+ export declare function searchCommand(query: string, options: SearchCommandOptions): Promise<void>;
11
+ /** @deprecated Use searchCommand with format option instead */
12
+ export declare function formatSearchResults(query: string, results: Array<{
13
+ note: unknown;
14
+ score: number;
15
+ }>): void;
16
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+G/F;AAwBD,+DAA+D;AAC/D,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/C,IAAI,CAiBN"}
@@ -0,0 +1,140 @@
1
+ import { resolve } from "path";
2
+ import { existsSync } from "fs";
3
+ import { loadConfig, resolveDefaultPath, createDatabase, loadSqliteVecExtension, Migrator, KnowledgeRepository, GraphRepository, KnowledgeService, ALL_MIGRATIONS, OnnxEmbeddingProvider, ModelManager, DEFAULT_MODEL_NAME, } from "@knowledgine/core";
4
+ import { getDemoNotesPath } from "./demo.js";
5
+ import { formatSearchResults as formatToolSearchResults, formatRelatedNotes, } from "../lib/formatter.js";
6
+ import { colors, symbols } from "../lib/ui/index.js";
7
+ export async function searchCommand(query, options) {
8
+ const rootPath = options.demo ? getDemoNotesPath() : resolveDefaultPath(options.path);
9
+ const knowledgineDir = resolve(rootPath, ".knowledgine");
10
+ if (!existsSync(knowledgineDir)) {
11
+ console.error(options.demo
12
+ ? 'Demo not initialized. Run "knowledgine init --demo" first.'
13
+ : 'Not initialized. Run "knowledgine init --path <dir>" first.');
14
+ process.exitCode = 1;
15
+ return;
16
+ }
17
+ const config = loadConfig(rootPath);
18
+ const db = createDatabase(config.dbPath);
19
+ try {
20
+ if (config.embedding?.enabled) {
21
+ await loadSqliteVecExtension(db);
22
+ }
23
+ new Migrator(db, ALL_MIGRATIONS).migrate();
24
+ const repository = new KnowledgeRepository(db);
25
+ const graphRepository = new GraphRepository(db);
26
+ const mode = options.mode ?? "keyword";
27
+ const limit = options.limit ?? 20;
28
+ const format = options.format ?? "plain";
29
+ // --related / --related-file: findRelated モード
30
+ if (options.related || options.relatedFile) {
31
+ const service = new KnowledgeService({ repository, rootPath, graphRepository });
32
+ const noteId = options.related ? parseInt(options.related, 10) : undefined;
33
+ if (options.related && (isNaN(noteId) || noteId < 1)) {
34
+ console.error("Error: --related must be a positive integer (note ID)");
35
+ process.exitCode = 1;
36
+ return;
37
+ }
38
+ try {
39
+ const result = await service.findRelated({
40
+ noteId,
41
+ filePath: options.relatedFile,
42
+ limit,
43
+ });
44
+ if (format === "json") {
45
+ console.log(JSON.stringify({ ok: true, command: "search", result }));
46
+ }
47
+ else {
48
+ console.error(formatRelatedNotes(result, format === "table" ? "table" : "plain"));
49
+ }
50
+ }
51
+ catch (error) {
52
+ console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
53
+ process.exitCode = 1;
54
+ }
55
+ return;
56
+ }
57
+ // Initialize embedding provider if semantic is enabled and requested
58
+ let embeddingProvider;
59
+ if (mode !== "keyword" && config.embedding?.enabled) {
60
+ const modelManager = new ModelManager();
61
+ if (modelManager.isModelAvailable()) {
62
+ embeddingProvider = new OnnxEmbeddingProvider(DEFAULT_MODEL_NAME, modelManager);
63
+ }
64
+ }
65
+ // 通常の検索モード
66
+ const service = new KnowledgeService({
67
+ repository,
68
+ rootPath,
69
+ graphRepository,
70
+ embeddingProvider,
71
+ });
72
+ const result = await service.search({ query, limit, mode });
73
+ const warnings = result.results.flatMap((r) => r.matchReason.filter((m) => m.startsWith("Warning:")));
74
+ if (warnings.length > 0) {
75
+ console.error(`\n${symbols.warning} ${colors.warning(warnings[0])}\n`);
76
+ }
77
+ // セマンティック検索が要求されたが利用不可の場合の警告
78
+ if (mode !== "keyword" && (!config.embedding?.enabled || !embeddingProvider)) {
79
+ console.error(`${symbols.warning} ${colors.warning("Semantic search is not configured. Falling back to FTS5.")}`);
80
+ console.error(`${symbols.arrow} ${colors.hint("Run 'knowledgine upgrade --semantic' to enable semantic search.")}`);
81
+ console.error("");
82
+ }
83
+ if (format === "json") {
84
+ console.log(JSON.stringify({ ok: true, command: "search", result }));
85
+ }
86
+ else if (format === "table") {
87
+ if (result.results.length === 0) {
88
+ console.error(`${symbols.info} ${colors.hint(`No results for "${query}".`)}`);
89
+ }
90
+ else {
91
+ console.error(formatToolSearchResults(result.results, "table"));
92
+ }
93
+ }
94
+ else {
95
+ // plain (default) - 後方互換の出力形式
96
+ formatLegacySearchResults(query, result.results);
97
+ }
98
+ }
99
+ catch (error) {
100
+ console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
101
+ process.exitCode = 1;
102
+ }
103
+ finally {
104
+ db.close();
105
+ }
106
+ }
107
+ /** 後方互換のためのレガシー出力形式 */
108
+ function formatLegacySearchResults(query, results) {
109
+ if (results.length === 0) {
110
+ console.error(`${symbols.info} ${colors.hint(`No results for "${query}".`)}`);
111
+ return;
112
+ }
113
+ console.error(colors.bold(`Results for "${query}" (${results.length} matches):`));
114
+ console.error("");
115
+ for (let i = 0; i < results.length; i++) {
116
+ const r = results[i];
117
+ const score = r.score.toFixed(2);
118
+ console.error(` ${i + 1}. [${score}] ${r.filePath}`);
119
+ console.error(` ${r.title}`);
120
+ console.error("");
121
+ }
122
+ }
123
+ /** @deprecated Use searchCommand with format option instead */
124
+ export function formatSearchResults(query, results) {
125
+ if (results.length === 0) {
126
+ console.error(`${symbols.info} ${colors.hint(`No results for "${query}".`)}`);
127
+ return;
128
+ }
129
+ console.error(colors.bold(`Results for "${query}" (${results.length} matches):`));
130
+ console.error("");
131
+ for (let i = 0; i < results.length; i++) {
132
+ const r = results[i];
133
+ const score = r.score.toFixed(2);
134
+ const note = r.note;
135
+ console.error(` ${i + 1}. [${score}] ${note.file_path}`);
136
+ console.error(` ${note.title}`);
137
+ console.error("");
138
+ }
139
+ }
140
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ export interface SetupOptions {
2
+ target?: string;
3
+ path?: string;
4
+ dryRun?: boolean;
5
+ write?: boolean;
6
+ }
7
+ export declare const TARGETS: readonly [{
8
+ readonly value: "claude-desktop";
9
+ readonly label: "Claude Desktop";
10
+ readonly description: "Anthropic's desktop app";
11
+ }, {
12
+ readonly value: "cursor";
13
+ readonly label: "Cursor";
14
+ readonly description: "AI-first code editor";
15
+ }, {
16
+ readonly value: "claude-code";
17
+ readonly label: "Claude Code";
18
+ readonly description: "CLI agent for developers";
19
+ }, {
20
+ readonly value: "windsurf";
21
+ readonly label: "Windsurf";
22
+ readonly description: "Codeium's AI IDE";
23
+ }, {
24
+ readonly value: "vscode";
25
+ readonly label: "VS Code";
26
+ readonly description: "GitHub Copilot MCP";
27
+ }, {
28
+ readonly value: "zed";
29
+ readonly label: "Zed";
30
+ readonly description: "High-performance editor";
31
+ }, {
32
+ readonly value: "codex";
33
+ readonly label: "Codex CLI";
34
+ readonly description: "OpenAI's coding agent";
35
+ }, {
36
+ readonly value: "github-copilot";
37
+ readonly label: "GitHub Copilot CLI";
38
+ readonly description: "AI pair programmer CLI";
39
+ }, {
40
+ readonly value: "gemini";
41
+ readonly label: "Gemini CLI";
42
+ readonly description: "Google's AI coding agent";
43
+ }, {
44
+ readonly value: "antigravity";
45
+ readonly label: "Antigravity";
46
+ readonly description: "Google's AI development platform";
47
+ }];
48
+ export declare function getConfigPath(target: string): string;
49
+ export declare function getTargetLabel(target: string): string;
50
+ export declare const PROJECT_CONFIG_SUPPORT: Record<string, (projectRoot: string) => string>;
51
+ export interface SetupIO {
52
+ input?: NodeJS.ReadableStream;
53
+ output?: NodeJS.WritableStream;
54
+ isTTY: boolean;
55
+ }
56
+ export declare function setupCommand(options: SetupOptions, ioOrCommand?: SetupIO | unknown): Promise<void>;
57
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAWD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWV,CAAC;AAOX,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA+CpD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGrD;AAgHD,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAMlF,CAAC;AAiHF,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqFxG"}
@@ -0,0 +1,331 @@
1
+ import { resolve, join } from "path";
2
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, copyFileSync } from "fs";
3
+ import { homedir } from "os";
4
+ import { resolveDefaultPath } from "@knowledgine/core";
5
+ import { createBox, colors, symbols } from "../lib/ui/index.js";
6
+ import * as p from "@clack/prompts";
7
+ import * as TOML from "smol-toml";
8
+ export const TARGETS = [
9
+ { value: "claude-desktop", label: "Claude Desktop", description: "Anthropic's desktop app" },
10
+ { value: "cursor", label: "Cursor", description: "AI-first code editor" },
11
+ { value: "claude-code", label: "Claude Code", description: "CLI agent for developers" },
12
+ { value: "windsurf", label: "Windsurf", description: "Codeium's AI IDE" },
13
+ { value: "vscode", label: "VS Code", description: "GitHub Copilot MCP" },
14
+ { value: "zed", label: "Zed", description: "High-performance editor" },
15
+ { value: "codex", label: "Codex CLI", description: "OpenAI's coding agent" },
16
+ { value: "github-copilot", label: "GitHub Copilot CLI", description: "AI pair programmer CLI" },
17
+ { value: "gemini", label: "Gemini CLI", description: "Google's AI coding agent" },
18
+ { value: "antigravity", label: "Antigravity", description: "Google's AI development platform" },
19
+ ];
20
+ // Zed uses "context_servers" key instead of "mcpServers"
21
+ const ZED_MCP_KEY = "context_servers";
22
+ export function getConfigPath(target) {
23
+ const home = homedir();
24
+ const appdata = process.env["APPDATA"] ?? join(home, "AppData", "Roaming");
25
+ switch (target) {
26
+ case "claude-desktop":
27
+ switch (process.platform) {
28
+ case "darwin":
29
+ return join(home, "Library", "Application Support", "Claude", "claude_desktop_config.json");
30
+ case "win32":
31
+ return join(appdata, "Claude", "claude_desktop_config.json");
32
+ default:
33
+ return join(home, ".config", "claude", "claude_desktop_config.json");
34
+ }
35
+ case "cursor":
36
+ return join(home, ".cursor", "mcp.json");
37
+ case "claude-code":
38
+ return join(home, ".claude.json");
39
+ case "windsurf":
40
+ if (process.platform === "win32") {
41
+ return join(appdata, "Codeium", "Windsurf", "mcp_config.json");
42
+ }
43
+ return join(home, ".codeium", "windsurf", "mcp_config.json");
44
+ case "vscode":
45
+ switch (process.platform) {
46
+ case "darwin":
47
+ return join(home, "Library", "Application Support", "Code", "User", "settings.json");
48
+ case "win32":
49
+ return join(appdata, "Code", "User", "settings.json");
50
+ default:
51
+ return join(home, ".config", "Code", "User", "settings.json");
52
+ }
53
+ case "zed":
54
+ return join(home, ".config", "zed", "settings.json");
55
+ case "codex":
56
+ return join(home, ".codex", "config.toml");
57
+ case "github-copilot":
58
+ return join(home, ".copilot", "mcp-config.json");
59
+ case "gemini":
60
+ return join(home, ".gemini", "settings.json");
61
+ case "antigravity":
62
+ return join(home, ".gemini", "antigravity", "mcp_config.json");
63
+ default:
64
+ throw new Error(`Unknown target: ${target}. Supported: ${TARGETS.map((t) => t.value).join(", ")}`);
65
+ }
66
+ }
67
+ export function getTargetLabel(target) {
68
+ const found = TARGETS.find((t) => t.value === target);
69
+ return found ? found.label : target;
70
+ }
71
+ function buildMcpConfig(rootPath) {
72
+ return {
73
+ command: "npx",
74
+ args: ["-y", "@knowledgine/cli", "start", "--path", rootPath],
75
+ };
76
+ }
77
+ function isTomlConfig(configPath) {
78
+ return configPath.endsWith(".toml");
79
+ }
80
+ /** Get the MCP servers key name for a given target */
81
+ function getMcpKey(target) {
82
+ if (target === "zed")
83
+ return ZED_MCP_KEY;
84
+ return "mcpServers";
85
+ }
86
+ function readExistingConfig(configPath, target) {
87
+ if (!existsSync(configPath)) {
88
+ return {};
89
+ }
90
+ const raw = readFileSync(configPath, "utf-8").trim();
91
+ if (!raw) {
92
+ return {};
93
+ }
94
+ try {
95
+ if (isTomlConfig(configPath)) {
96
+ const parsed = TOML.parse(raw);
97
+ return {
98
+ mcpServers: (parsed["mcp_servers"] ?? {}),
99
+ };
100
+ }
101
+ const parsed = JSON.parse(raw);
102
+ const mcpKey = getMcpKey(target ?? "");
103
+ // For tools that embed MCP in a larger settings file (Zed, VS Code)
104
+ if (parsed[mcpKey]) {
105
+ return { mcpServers: parsed[mcpKey] };
106
+ }
107
+ return parsed;
108
+ }
109
+ catch {
110
+ const format = isTomlConfig(configPath) ? "TOML" : "JSON";
111
+ throw new Error(`Failed to parse existing config: ${configPath}\n` +
112
+ `The file contains invalid ${format}. Fix it manually or remove it before running setup.`);
113
+ }
114
+ }
115
+ function mergeConfig(existing, rootPath) {
116
+ const serverConfig = buildMcpConfig(rootPath);
117
+ return {
118
+ ...existing,
119
+ mcpServers: {
120
+ ...(existing.mcpServers ?? {}),
121
+ knowledgine: serverConfig,
122
+ },
123
+ };
124
+ }
125
+ function writeConfig(configPath, config, target) {
126
+ const configDir = resolve(configPath, "..");
127
+ if (!existsSync(configDir)) {
128
+ mkdirSync(configDir, { recursive: true });
129
+ }
130
+ if (existsSync(configPath)) {
131
+ copyFileSync(configPath, configPath + ".bak");
132
+ }
133
+ if (isTomlConfig(configPath)) {
134
+ // TOML: read existing, merge mcp_servers, write back
135
+ let existing = {};
136
+ if (existsSync(configPath)) {
137
+ try {
138
+ existing = TOML.parse(readFileSync(configPath, "utf-8"));
139
+ }
140
+ catch { /* start fresh */ }
141
+ }
142
+ existing["mcp_servers"] = {
143
+ ...(existing["mcp_servers"] ?? {}),
144
+ knowledgine: config.mcpServers?.["knowledgine"] ?? buildMcpConfig(""),
145
+ };
146
+ writeFileSync(configPath, TOML.stringify(existing) + "\n", "utf-8");
147
+ }
148
+ else {
149
+ const mcpKey = getMcpKey(target ?? "");
150
+ const isEmbeddedSettings = mcpKey !== "mcpServers" || target === "vscode" || target === "gemini";
151
+ if (isEmbeddedSettings) {
152
+ // Zed/VS Code: merge into existing settings.json
153
+ let existing = {};
154
+ if (existsSync(configPath)) {
155
+ try {
156
+ existing = JSON.parse(readFileSync(configPath, "utf-8"));
157
+ }
158
+ catch { /* start fresh */ }
159
+ }
160
+ existing[mcpKey] = {
161
+ ...(existing[mcpKey] ?? {}),
162
+ knowledgine: config.mcpServers?.["knowledgine"] ?? buildMcpConfig(""),
163
+ };
164
+ writeFileSync(configPath, JSON.stringify(existing, null, 2) + "\n", "utf-8");
165
+ }
166
+ else {
167
+ writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n", "utf-8");
168
+ }
169
+ }
170
+ }
171
+ function isTTY() {
172
+ // Check both stdin and stdout for interactive prompt support
173
+ return Boolean(process.stdin.isTTY) && Boolean(process.stdout.isTTY);
174
+ }
175
+ // Tools that support project-level config (in project root directory)
176
+ export const PROJECT_CONFIG_SUPPORT = {
177
+ cursor: (root) => join(root, ".cursor", "mcp.json"),
178
+ "claude-code": (root) => join(root, ".mcp.json"),
179
+ vscode: (root) => join(root, ".vscode", "mcp.json"),
180
+ windsurf: (root) => join(root, ".windsurf", "mcp_config.json"),
181
+ gemini: (root) => join(root, ".gemini", "settings.json"),
182
+ };
183
+ function getConfigPathForScope(target, scope, projectRoot) {
184
+ if (scope === "project") {
185
+ const projectFn = PROJECT_CONFIG_SUPPORT[target];
186
+ if (projectFn)
187
+ return projectFn(projectRoot);
188
+ }
189
+ return getConfigPath(target);
190
+ }
191
+ async function interactiveSetup(rootPath) {
192
+ p.intro(colors.bold("knowledgine Setup"));
193
+ // Step 1: Select tools
194
+ const selectedTargets = await p.multiselect({
195
+ message: "Which AI tools do you use? (space to select, enter to confirm)",
196
+ options: TARGETS.map((t) => ({
197
+ value: t.value,
198
+ label: t.label,
199
+ hint: t.description,
200
+ })),
201
+ required: true,
202
+ });
203
+ if (p.isCancel(selectedTargets)) {
204
+ p.cancel("Setup cancelled.");
205
+ return;
206
+ }
207
+ const targets = selectedTargets;
208
+ // Step 2: Select scope (only if any selected tool supports project-level config)
209
+ const hasProjectSupport = targets.some((t) => t in PROJECT_CONFIG_SUPPORT);
210
+ let scope = "global";
211
+ if (hasProjectSupport) {
212
+ const scopeResult = await p.select({
213
+ message: "Where should the config be installed?",
214
+ options: [
215
+ {
216
+ value: "global",
217
+ label: "Global",
218
+ hint: `User-level config (~/) — works everywhere`,
219
+ },
220
+ {
221
+ value: "project",
222
+ label: "Project",
223
+ hint: `Project-level config (./) — scoped to this workspace`,
224
+ },
225
+ ],
226
+ });
227
+ if (p.isCancel(scopeResult)) {
228
+ p.cancel("Setup cancelled.");
229
+ return;
230
+ }
231
+ scope = scopeResult;
232
+ }
233
+ // Step 3: Configure each tool
234
+ const s = p.spinner();
235
+ const results = [];
236
+ for (const target of targets) {
237
+ const targetLabel = getTargetLabel(target);
238
+ const useProject = scope === "project" && target in PROJECT_CONFIG_SUPPORT;
239
+ const actualScope = useProject ? "project" : "global";
240
+ s.start(`Configuring ${targetLabel} (${actualScope})...`);
241
+ try {
242
+ const configPath = getConfigPathForScope(target, scope, rootPath);
243
+ const existingConfig = readExistingConfig(configPath, target);
244
+ const mergedConfig = mergeConfig(existingConfig, rootPath);
245
+ writeConfig(configPath, mergedConfig, target);
246
+ s.stop(`${symbols.success} ${colors.success(targetLabel)} configured (${actualScope})`);
247
+ const note = !useProject && scope === "project" ? "project config not supported, used global" : undefined;
248
+ results.push({ target, status: "ok", configPath, note });
249
+ }
250
+ catch (error) {
251
+ const msg = error instanceof Error ? error.message : String(error);
252
+ s.stop(`${symbols.error} ${colors.error(targetLabel)} failed`);
253
+ results.push({ target, status: "fail", configPath: "", error: msg });
254
+ }
255
+ }
256
+ // Summary
257
+ const ok = results.filter((r) => r.status === "ok");
258
+ const fail = results.filter((r) => r.status === "fail");
259
+ if (ok.length > 0) {
260
+ const lines = ok.map((r) => {
261
+ const extra = r.note ? ` ${colors.dim(`(${r.note})`)}` : "";
262
+ return `${symbols.success} ${getTargetLabel(r.target)} ${colors.dim(r.configPath)}${extra}`;
263
+ });
264
+ p.note(lines.join("\n"), "Configured");
265
+ }
266
+ if (fail.length > 0) {
267
+ const lines = fail.map((r) => `${symbols.error} ${getTargetLabel(r.target)} ${colors.dim(r.error ?? "")}`);
268
+ p.note(lines.join("\n"), "Failed");
269
+ }
270
+ p.outro(`${colors.success("Setup complete!")} Restart your AI tools to activate knowledgine.`);
271
+ }
272
+ export async function setupCommand(options, ioOrCommand) {
273
+ // Commander.js passes (options, Command) — detect and ignore the Command object
274
+ const io = ioOrCommand && typeof ioOrCommand.isTTY === "boolean"
275
+ ? ioOrCommand
276
+ : undefined;
277
+ const rootPath = resolveDefaultPath(options.path);
278
+ const knowledgineDir = resolve(rootPath, ".knowledgine");
279
+ if (!existsSync(knowledgineDir)) {
280
+ console.error(`${symbols.error} Not initialized. Run 'knowledgine init --path ${rootPath}' first.`);
281
+ process.exitCode = 1;
282
+ return;
283
+ }
284
+ // Interactive mode when no --target specified
285
+ if (!options.target) {
286
+ const tty = io ? io.isTTY : isTTY();
287
+ if (!tty) {
288
+ console.error("Error: --target is required in non-interactive mode.");
289
+ console.error(` Supported targets: ${TARGETS.map((t) => t.value).join(", ")}`);
290
+ process.exitCode = 1;
291
+ return;
292
+ }
293
+ await interactiveSetup(rootPath);
294
+ return;
295
+ }
296
+ const target = options.target;
297
+ const configPath = getConfigPath(target);
298
+ const targetLabel = getTargetLabel(target);
299
+ const shouldWrite = options.write === true;
300
+ let existingConfig;
301
+ try {
302
+ existingConfig = readExistingConfig(configPath, target);
303
+ }
304
+ catch (error) {
305
+ console.error(error instanceof Error ? error.message : String(error));
306
+ process.exitCode = 1;
307
+ return;
308
+ }
309
+ const knowledgineConfig = buildMcpConfig(rootPath);
310
+ const otherServerCount = Object.keys(existingConfig.mcpServers ?? {}).filter((k) => k !== "knowledgine").length;
311
+ const jsonContent = JSON.stringify({ mcpServers: { knowledgine: knowledgineConfig } }, null, 2);
312
+ const preserveNote = otherServerCount > 0
313
+ ? `\n${colors.hint(`(${otherServerCount} other MCP server(s) will be preserved)`)}`
314
+ : "";
315
+ const boxContent = `${colors.hint(`Config: ${configPath}`)}${preserveNote}\n\n${jsonContent}`;
316
+ console.error("\n" + createBox(boxContent, { title: `MCP Configuration for ${targetLabel}`, type: "info" }));
317
+ if (!shouldWrite) {
318
+ console.error(`${symbols.arrow} ${colors.hint(`To apply: Run with --write flag, then restart ${targetLabel}.`)}`);
319
+ console.error(`${symbols.arrow} ${colors.hint(`knowledgine setup --target ${target} --path ${rootPath} --write`)}`);
320
+ console.error("");
321
+ console.error(`${symbols.arrow} ${colors.hint("Run 'knowledgine status' to verify your setup.")}`);
322
+ return;
323
+ }
324
+ const mergedConfig = mergeConfig(existingConfig, rootPath);
325
+ writeConfig(configPath, mergedConfig, target);
326
+ console.error(`${symbols.success} ${colors.success(`Config written: ${configPath}`)}`);
327
+ console.error("");
328
+ console.error(`${symbols.arrow} ${colors.hint(`Restart ${targetLabel} to activate knowledgine.`)}`);
329
+ console.error(`${symbols.arrow} ${colors.hint("Run 'knowledgine status' to verify your setup.")}`);
330
+ }
331
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export interface StartOptions {
2
2
  path?: string;
3
+ ingest?: boolean;
3
4
  }
4
5
  export declare function startCommand(options: StartOptions): Promise<void>;
5
6
  //# sourceMappingURL=start.d.ts.map