@knowledgine/cli 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/commands/capture.d.ts +10 -0
  2. package/dist/commands/capture.d.ts.map +1 -0
  3. package/dist/commands/capture.js +132 -0
  4. package/dist/commands/capture.js.map +1 -0
  5. package/dist/commands/demo.d.ts +6 -0
  6. package/dist/commands/demo.d.ts.map +1 -0
  7. package/dist/commands/demo.js +44 -0
  8. package/dist/commands/demo.js.map +1 -0
  9. package/dist/commands/feedback.d.ts +18 -0
  10. package/dist/commands/feedback.d.ts.map +1 -0
  11. package/dist/commands/feedback.js +79 -0
  12. package/dist/commands/feedback.js.map +1 -0
  13. package/dist/commands/ingest.d.ts +8 -0
  14. package/dist/commands/ingest.d.ts.map +1 -0
  15. package/dist/commands/ingest.js +98 -0
  16. package/dist/commands/ingest.js.map +1 -0
  17. package/dist/commands/init.d.ts +2 -0
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +294 -37
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/plugins.d.ts +6 -0
  22. package/dist/commands/plugins.d.ts.map +1 -0
  23. package/dist/commands/plugins.js +40 -0
  24. package/dist/commands/plugins.js.map +1 -0
  25. package/dist/commands/search.d.ts +16 -0
  26. package/dist/commands/search.d.ts.map +1 -0
  27. package/dist/commands/search.js +117 -0
  28. package/dist/commands/search.js.map +1 -0
  29. package/dist/commands/setup.d.ts +14 -0
  30. package/dist/commands/setup.d.ts.map +1 -0
  31. package/dist/commands/setup.js +167 -0
  32. package/dist/commands/setup.js.map +1 -0
  33. package/dist/commands/start.d.ts +1 -0
  34. package/dist/commands/start.d.ts.map +1 -1
  35. package/dist/commands/start.js +82 -15
  36. package/dist/commands/start.js.map +1 -1
  37. package/dist/commands/status.d.ts +5 -0
  38. package/dist/commands/status.d.ts.map +1 -0
  39. package/dist/commands/status.js +121 -0
  40. package/dist/commands/status.js.map +1 -0
  41. package/dist/commands/tool.d.ts +29 -0
  42. package/dist/commands/tool.d.ts.map +1 -0
  43. package/dist/commands/tool.js +247 -0
  44. package/dist/commands/tool.js.map +1 -0
  45. package/dist/commands/upgrade.d.ts +6 -0
  46. package/dist/commands/upgrade.d.ts.map +1 -0
  47. package/dist/commands/upgrade.js +91 -0
  48. package/dist/commands/upgrade.js.map +1 -0
  49. package/dist/index.js +144 -2
  50. package/dist/index.js.map +1 -1
  51. package/dist/lib/demo-manager.d.ts +16 -0
  52. package/dist/lib/demo-manager.d.ts.map +1 -0
  53. package/dist/lib/demo-manager.js +37 -0
  54. package/dist/lib/demo-manager.js.map +1 -0
  55. package/dist/lib/formatter.d.ts +7 -0
  56. package/dist/lib/formatter.d.ts.map +1 -0
  57. package/dist/lib/formatter.js +91 -0
  58. package/dist/lib/formatter.js.map +1 -0
  59. package/dist/lib/indexer.d.ts +4 -1
  60. package/dist/lib/indexer.d.ts.map +1 -1
  61. package/dist/lib/indexer.js +2 -1
  62. package/dist/lib/indexer.js.map +1 -1
  63. package/dist/lib/ingest-watcher.d.ts +20 -0
  64. package/dist/lib/ingest-watcher.d.ts.map +1 -0
  65. package/dist/lib/ingest-watcher.js +44 -0
  66. package/dist/lib/ingest-watcher.js.map +1 -0
  67. package/dist/lib/plugin-loader.d.ts +5 -0
  68. package/dist/lib/plugin-loader.d.ts.map +1 -0
  69. package/dist/lib/plugin-loader.js +27 -0
  70. package/dist/lib/plugin-loader.js.map +1 -0
  71. package/dist/lib/progress.d.ts +57 -0
  72. package/dist/lib/progress.d.ts.map +1 -0
  73. package/dist/lib/progress.js +191 -0
  74. package/dist/lib/progress.js.map +1 -0
  75. package/dist/lib/url-validator.d.ts +2 -0
  76. package/dist/lib/url-validator.d.ts.map +1 -0
  77. package/dist/lib/url-validator.js +17 -0
  78. package/dist/lib/url-validator.js.map +1 -0
  79. package/fixtures/demo/notes/api-design-decisions.md +79 -0
  80. package/fixtures/demo/notes/auth-debugging.md +52 -0
  81. package/fixtures/demo/notes/ci-cd-pipeline.md +90 -0
  82. package/fixtures/demo/notes/code-review-notes.md +71 -0
  83. package/fixtures/demo/notes/database-optimization.md +73 -0
  84. package/fixtures/demo/notes/docker-troubleshooting.md +74 -0
  85. package/fixtures/demo/notes/react-performance.md +66 -0
  86. package/fixtures/demo/notes/typescript-migration.md +80 -0
  87. package/package.json +6 -4
@@ -0,0 +1,91 @@
1
+ export function formatSearchResults(results, format) {
2
+ if (format === "json") {
3
+ return JSON.stringify(results, null, 2);
4
+ }
5
+ if (format === "plain") {
6
+ return results.map((r) => `[${r.score.toFixed(2)}] ${r.filePath} ${r.title}`).join("\n");
7
+ }
8
+ // table
9
+ if (results.length === 0)
10
+ return "";
11
+ const header = `${"Score".padEnd(7)}${"Title".padEnd(40)}FilePath`;
12
+ const sep = "-".repeat(header.length);
13
+ const rows = results.map((r) => `${r.score.toFixed(2).padEnd(7)}${r.title.slice(0, 38).padEnd(40)}${r.filePath}`);
14
+ return [header, sep, ...rows].join("\n");
15
+ }
16
+ export function formatRelatedNotes(result, format) {
17
+ if (format === "json") {
18
+ return JSON.stringify(result, null, 2);
19
+ }
20
+ if (format === "plain") {
21
+ const lines = [`Note ID: ${result.noteId}`];
22
+ for (const n of result.relatedNotes) {
23
+ lines.push(` [${n.score.toFixed(2)}] ${n.filePath} ${n.title}`);
24
+ }
25
+ return lines.join("\n");
26
+ }
27
+ // table
28
+ const lines = [`Related notes for noteId=${result.noteId}:`];
29
+ if (result.relatedNotes.length > 0) {
30
+ const header = ` ${"Score".padEnd(7)}${"Title".padEnd(40)}FilePath`;
31
+ lines.push(header);
32
+ lines.push(" " + "-".repeat(header.length - 2));
33
+ for (const n of result.relatedNotes) {
34
+ lines.push(` ${n.score.toFixed(2).padEnd(7)}${n.title.slice(0, 38).padEnd(40)}${n.filePath}`);
35
+ }
36
+ }
37
+ else {
38
+ lines.push(" (no related notes found)");
39
+ }
40
+ return lines.join("\n");
41
+ }
42
+ export function formatStats(stats, format) {
43
+ if (format === "json") {
44
+ return JSON.stringify(stats, null, 2);
45
+ }
46
+ if (format === "plain") {
47
+ return [
48
+ `Notes: ${stats.totalNotes}`,
49
+ `Patterns: ${stats.totalPatterns}`,
50
+ `Links: ${stats.totalLinks}`,
51
+ `Pairs: ${stats.totalPairs}`,
52
+ `Embeddings: ${stats.embeddingStatus.available ? "enabled" : "disabled"}`,
53
+ ].join("\n");
54
+ }
55
+ // table
56
+ const lines = [
57
+ `${"Metric".padEnd(30)}Value`,
58
+ "-".repeat(50),
59
+ `${"Total Notes".padEnd(30)}${stats.totalNotes}`,
60
+ `${"Total Patterns".padEnd(30)}${stats.totalPatterns}`,
61
+ `${"Total Links".padEnd(30)}${stats.totalLinks}`,
62
+ `${"Total Pairs".padEnd(30)}${stats.totalPairs}`,
63
+ `${"Embeddings Available".padEnd(30)}${stats.embeddingStatus.available}`,
64
+ ];
65
+ if (stats.embeddingStatus.notesWithoutEmbeddings !== null) {
66
+ lines.push(`${"Notes Without Embeddings".padEnd(30)}${stats.embeddingStatus.notesWithoutEmbeddings}`);
67
+ }
68
+ if (stats.graphStats) {
69
+ lines.push(`${"Graph Entities".padEnd(30)}${stats.graphStats.totalEntities}`);
70
+ lines.push(`${"Graph Relations".padEnd(30)}${stats.graphStats.totalRelations}`);
71
+ }
72
+ return lines.join("\n");
73
+ }
74
+ export function formatEntities(result, format) {
75
+ if (format === "json") {
76
+ return JSON.stringify(result, null, 2);
77
+ }
78
+ if (format === "plain") {
79
+ return result.entities
80
+ .map((e) => `[${e.entityType}] ${e.name}${e.description ? " " + e.description : ""}`)
81
+ .join("\n");
82
+ }
83
+ // table
84
+ if (result.entities.length === 0)
85
+ return "";
86
+ const header = `${"ID".padEnd(6)}${"Type".padEnd(15)}${"Name".padEnd(30)}Description`;
87
+ const sep = "-".repeat(header.length);
88
+ const rows = result.entities.map((e) => `${String(e.id).padEnd(6)}${e.entityType.padEnd(15)}${e.name.slice(0, 28).padEnd(30)}${e.description ?? ""}`);
89
+ return [header, sep, ...rows].join("\n");
90
+ }
91
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/lib/formatter.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,8 @@ export interface IndexFileResult {
14
14
  patternCount: number;
15
15
  }
16
16
  export declare function indexFile(relativePath: string, rootPath: string, fileProcessor: FileProcessor, patternExtractor: PatternExtractor, repository: KnowledgeRepository, graphRepository?: GraphRepository): Promise<number>;
17
- export declare function indexAll(rootPath: string, repository: KnowledgeRepository, graphRepository?: GraphRepository): Promise<IndexSummary>;
17
+ export interface IndexAllOptions {
18
+ onProgress?: (current: number, total: number, filePath: string) => void;
19
+ }
20
+ export declare function indexAll(rootPath: string, repository: KnowledgeRepository, graphRepository?: GraphRepository, options?: IndexAllOptions): Promise<IndexSummary>;
18
21
  //# sourceMappingURL=indexer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/lib/indexer.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EAGnB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAU/E;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAWpF;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,SAAS,CAC7B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,mBAAmB,EAC/B,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,MAAM,CAAC,CA+DjB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,mBAAmB,EAC/B,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,YAAY,CAAC,CA2BvB"}
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/lib/indexer.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EAGnB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAU/E;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,EAAE,CAWpF;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,SAAS,CAC7B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,mBAAmB,EAC/B,eAAe,CAAC,EAAE,eAAe,GAChC,OAAO,CAAC,MAAM,CAAC,CA+DjB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzE;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,mBAAmB,EAC/B,eAAe,CAAC,EAAE,eAAe,EACjC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,YAAY,CAAC,CA4BvB"}
@@ -80,7 +80,7 @@ export async function indexFile(relativePath, rootPath, fileProcessor, patternEx
80
80
  }
81
81
  return noteId;
82
82
  }
83
- export async function indexAll(rootPath, repository, graphRepository) {
83
+ export async function indexAll(rootPath, repository, graphRepository, options) {
84
84
  const start = Date.now();
85
85
  const fileProcessor = new FileProcessor();
86
86
  const patternExtractor = new PatternExtractor();
@@ -91,6 +91,7 @@ export async function indexAll(rootPath, repository, graphRepository) {
91
91
  try {
92
92
  await indexFile(file, rootPath, fileProcessor, patternExtractor, repository, graphRepository);
93
93
  processedFiles++;
94
+ options?.onProgress?.(processedFiles, files.length, file);
94
95
  }
95
96
  catch (error) {
96
97
  errors.push(`${file}: ${error instanceof Error ? error.message : String(error)}`);
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/lib/indexer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/lib/indexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { IngestEngine, IngestSummary, PluginRegistry } from "@knowledgine/ingest";
2
+ export interface IngestWatcherOptions {
3
+ engine: IngestEngine;
4
+ registry: PluginRegistry;
5
+ rootPath: string;
6
+ onComplete?: (summaries: IngestSummary[]) => void;
7
+ onError?: (pluginId: string, error: Error) => void;
8
+ }
9
+ export declare class IngestWatcher {
10
+ private engine;
11
+ private registry;
12
+ private rootPath;
13
+ private onComplete?;
14
+ private onError?;
15
+ private running;
16
+ constructor(options: IngestWatcherOptions);
17
+ runInitialIngest(): Promise<IngestSummary[]>;
18
+ stop(): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=ingest-watcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest-watcher.d.ts","sourceRoot":"","sources":["../../src/lib/ingest-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEvF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IAClD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACpD;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAC,CAAuC;IAC1D,OAAO,CAAC,OAAO,CAAC,CAA2C;IAC3D,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,oBAAoB;IAQnC,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IA8B5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
@@ -0,0 +1,44 @@
1
+ export class IngestWatcher {
2
+ engine;
3
+ registry;
4
+ rootPath;
5
+ onComplete;
6
+ onError;
7
+ running = false;
8
+ constructor(options) {
9
+ this.engine = options.engine;
10
+ this.registry = options.registry;
11
+ this.rootPath = options.rootPath;
12
+ this.onComplete = options.onComplete;
13
+ this.onError = options.onError;
14
+ }
15
+ async runInitialIngest() {
16
+ this.running = true;
17
+ const summaries = [];
18
+ for (const plugin of this.registry.list()) {
19
+ if (!this.running)
20
+ break;
21
+ try {
22
+ const summary = await this.engine.ingest(plugin.manifest.id, this.rootPath);
23
+ summaries.push(summary);
24
+ }
25
+ catch (error) {
26
+ const err = error instanceof Error ? error : new Error(String(error));
27
+ summaries.push({
28
+ pluginId: plugin.manifest.id,
29
+ processed: 0,
30
+ errors: 1,
31
+ elapsedMs: 0,
32
+ });
33
+ this.onError?.(plugin.manifest.id, err);
34
+ }
35
+ }
36
+ this.running = false;
37
+ this.onComplete?.(summaries);
38
+ return summaries;
39
+ }
40
+ async stop() {
41
+ this.running = false;
42
+ }
43
+ }
44
+ //# sourceMappingURL=ingest-watcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest-watcher.js","sourceRoot":"","sources":["../../src/lib/ingest-watcher.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,aAAa;IAChB,MAAM,CAAe;IACrB,QAAQ,CAAiB;IACzB,QAAQ,CAAS;IACjB,UAAU,CAAwC;IAClD,OAAO,CAA4C;IACnD,OAAO,GAAG,KAAK,CAAC;IAExB,YAAY,OAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,MAAM,SAAS,GAAoB,EAAE,CAAC;QAEtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,MAAM;YAEzB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CACtC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAClB,IAAI,CAAC,QAAQ,CACd,CAAC;gBACF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,SAAS,CAAC,IAAI,CAAC;oBACb,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;oBAC5B,SAAS,EAAE,CAAC;oBACZ,MAAM,EAAE,CAAC;oBACT,SAAS,EAAE,CAAC;iBACb,CAAC,CAAC;gBACH,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ import { PluginRegistry } from "@knowledgine/ingest";
2
+ import type { PluginConfig, PluginInitResult } from "@knowledgine/ingest";
3
+ export declare function createDefaultRegistry(): PluginRegistry;
4
+ export declare function initializePlugins(registry: PluginRegistry, config?: PluginConfig): Promise<Map<string, PluginInitResult>>;
5
+ //# sourceMappingURL=plugin-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-loader.d.ts","sourceRoot":"","sources":["../../src/lib/plugin-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAMf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,wBAAgB,qBAAqB,IAAI,cAAc,CAQtD;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAcxC"}
@@ -0,0 +1,27 @@
1
+ import { PluginRegistry, MarkdownPlugin, GitHistoryPlugin, ClaudeSessionsPlugin, GitHubPlugin, ObsidianPlugin, } from "@knowledgine/ingest";
2
+ export function createDefaultRegistry() {
3
+ const registry = new PluginRegistry();
4
+ registry.register(new MarkdownPlugin());
5
+ registry.register(new GitHistoryPlugin());
6
+ registry.register(new ClaudeSessionsPlugin());
7
+ registry.register(new GitHubPlugin());
8
+ registry.register(new ObsidianPlugin());
9
+ return registry;
10
+ }
11
+ export async function initializePlugins(registry, config) {
12
+ const results = new Map();
13
+ for (const plugin of registry.list()) {
14
+ try {
15
+ const result = await plugin.initialize(config);
16
+ results.set(plugin.manifest.id, result);
17
+ }
18
+ catch (error) {
19
+ results.set(plugin.manifest.id, {
20
+ ok: false,
21
+ error: error instanceof Error ? error.message : String(error),
22
+ });
23
+ }
24
+ }
25
+ return results;
26
+ }
27
+ //# sourceMappingURL=plugin-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../src/lib/plugin-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,cAAc,GACf,MAAM,qBAAqB,CAAC;AAG7B,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IACxC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAwB,EACxB,MAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;IACpD,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAC9B,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Progress display utility for CLI operations.
3
+ * TTY: in-place updates with \r
4
+ * Non-TTY: milestone-only output
5
+ * All output goes to stderr to avoid MCP stdout conflicts.
6
+ */
7
+ export interface Progress {
8
+ update(current: number, detail?: string): void;
9
+ finish(): void;
10
+ }
11
+ /**
12
+ * Step-based progress interface for structured multi-step operations.
13
+ * Tracks named steps with status indicators.
14
+ */
15
+ export interface StepProgress {
16
+ /** Mark the named step as started (pending state). */
17
+ startStep(name: string): void;
18
+ /** Mark the named step as successfully completed. */
19
+ completeStep(name: string): void;
20
+ /** Mark the named step as failed with an optional reason. */
21
+ failStep(name: string, reason?: string): void;
22
+ /** Mark the named step as skipped with an optional reason. */
23
+ skipStep(name: string, reason?: string): void;
24
+ /** Print a warning message associated with the current step. */
25
+ warn(message: string): void;
26
+ /** Finalize and print the overall summary. */
27
+ finish(): void;
28
+ }
29
+ export type StepStatus = "pending" | "running" | "done" | "failed" | "skipped";
30
+ export interface Step {
31
+ name: string;
32
+ status: StepStatus;
33
+ reason?: string;
34
+ }
35
+ export declare function formatDuration(ms: number): string;
36
+ export declare function createProgress(total: number, label: string): Progress;
37
+ /**
38
+ * Create a step-based progress tracker for structured multi-step CLI operations.
39
+ *
40
+ * Each step is printed as it starts/completes to give real-time feedback.
41
+ * Designed to be used with init, upgrade, and other multi-phase commands.
42
+ *
43
+ * @param totalSteps - Expected number of steps (used for summary only)
44
+ * @param title - Optional title printed before the first step
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * const steps = createStepProgress(4, "Initializing knowledgine");
49
+ * steps.startStep("Creating directory");
50
+ * steps.completeStep("Creating directory");
51
+ * steps.startStep("Reading configuration");
52
+ * steps.failStep("Reading configuration", "Permission denied");
53
+ * steps.finish();
54
+ * ```
55
+ */
56
+ export declare function createStepProgress(totalSteps: number, title?: string): StepProgress;
57
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,MAAM,IAAI,IAAI,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,sDAAsD;IACtD,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,qDAAqD;IACrD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,gEAAgE;IAChE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,8CAA8C;IAC9C,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/E,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMjD;AAmCD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAoCrE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,CAmGnF"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Progress display utility for CLI operations.
3
+ * TTY: in-place updates with \r
4
+ * Non-TTY: milestone-only output
5
+ * All output goes to stderr to avoid MCP stdout conflicts.
6
+ */
7
+ export function formatDuration(ms) {
8
+ if (ms < 1000)
9
+ return `${ms}ms`;
10
+ if (ms < 60_000)
11
+ return `${(ms / 1000).toFixed(1)}s`;
12
+ const minutes = Math.floor(ms / 60_000);
13
+ const seconds = Math.round((ms % 60_000) / 1000);
14
+ return `${minutes}m ${seconds}s`;
15
+ }
16
+ function useColor() {
17
+ return !process.env["NO_COLOR"];
18
+ }
19
+ function stepIcon(status) {
20
+ if (!useColor()) {
21
+ switch (status) {
22
+ case "done":
23
+ return "[ok]";
24
+ case "failed":
25
+ return "[fail]";
26
+ case "skipped":
27
+ return "[skip]";
28
+ case "running":
29
+ return "[..]";
30
+ default:
31
+ return "[ ]";
32
+ }
33
+ }
34
+ switch (status) {
35
+ case "done":
36
+ return "\u2714"; // ✔
37
+ case "failed":
38
+ return "\u2718"; // ✘
39
+ case "skipped":
40
+ return "\u2212"; // −
41
+ case "running":
42
+ return "\u25ba"; // ►
43
+ default:
44
+ return " ";
45
+ }
46
+ }
47
+ export function createProgress(total, label) {
48
+ const isTTY = process.stderr.isTTY ?? false;
49
+ const startTime = Date.now();
50
+ let lastMilestone = -1;
51
+ function write(text) {
52
+ process.stderr.write(text);
53
+ }
54
+ function update(current, detail) {
55
+ if (isTTY) {
56
+ const detailStr = detail ? ` ${detail}` : "";
57
+ const line = useColor()
58
+ ? `\r[${current}/${total}] ${label}...${detailStr}`
59
+ : `\r[${current}/${total}] ${label}...${detailStr}`;
60
+ write(line);
61
+ }
62
+ else {
63
+ // Non-TTY: output at 0%, 25%, 50%, 75%, 100% milestones
64
+ const pct = total > 0 ? Math.floor((current / total) * 4) : 0;
65
+ if (pct > lastMilestone) {
66
+ lastMilestone = pct;
67
+ write(`[${current}/${total}] ${label}...\n`);
68
+ }
69
+ }
70
+ }
71
+ function finish() {
72
+ const elapsed = formatDuration(Date.now() - startTime);
73
+ if (isTTY) {
74
+ write(`\r[${total}/${total}] ${label} (${elapsed})\n`);
75
+ }
76
+ else {
77
+ write(`${label}: ${total} done (${elapsed})\n`);
78
+ }
79
+ }
80
+ return { update, finish };
81
+ }
82
+ /**
83
+ * Create a step-based progress tracker for structured multi-step CLI operations.
84
+ *
85
+ * Each step is printed as it starts/completes to give real-time feedback.
86
+ * Designed to be used with init, upgrade, and other multi-phase commands.
87
+ *
88
+ * @param totalSteps - Expected number of steps (used for summary only)
89
+ * @param title - Optional title printed before the first step
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * const steps = createStepProgress(4, "Initializing knowledgine");
94
+ * steps.startStep("Creating directory");
95
+ * steps.completeStep("Creating directory");
96
+ * steps.startStep("Reading configuration");
97
+ * steps.failStep("Reading configuration", "Permission denied");
98
+ * steps.finish();
99
+ * ```
100
+ */
101
+ export function createStepProgress(totalSteps, title) {
102
+ const steps = [];
103
+ const startTime = Date.now();
104
+ let warnCount = 0;
105
+ function write(text) {
106
+ process.stderr.write(text);
107
+ }
108
+ function findStep(name) {
109
+ return steps.find((s) => s.name === name);
110
+ }
111
+ function printStepLine(step) {
112
+ const icon = stepIcon(step.status);
113
+ const reasonStr = step.reason ? ` (${step.reason})` : "";
114
+ write(` ${icon} ${step.name}${reasonStr}\n`);
115
+ }
116
+ if (title) {
117
+ write(`\n${title}\n`);
118
+ }
119
+ function startStep(name) {
120
+ let step = findStep(name);
121
+ if (!step) {
122
+ step = { name, status: "running" };
123
+ steps.push(step);
124
+ }
125
+ else {
126
+ step.status = "running";
127
+ step.reason = undefined;
128
+ }
129
+ // Print running indicator so the user sees activity
130
+ const icon = stepIcon("running");
131
+ write(` ${icon} ${name}...\n`);
132
+ }
133
+ function completeStep(name) {
134
+ let step = findStep(name);
135
+ if (!step) {
136
+ step = { name, status: "done" };
137
+ steps.push(step);
138
+ }
139
+ else {
140
+ step.status = "done";
141
+ step.reason = undefined;
142
+ }
143
+ printStepLine(step);
144
+ }
145
+ function failStep(name, reason) {
146
+ let step = findStep(name);
147
+ if (!step) {
148
+ step = { name, status: "failed", reason };
149
+ steps.push(step);
150
+ }
151
+ else {
152
+ step.status = "failed";
153
+ step.reason = reason;
154
+ }
155
+ printStepLine(step);
156
+ }
157
+ function skipStep(name, reason) {
158
+ let step = findStep(name);
159
+ if (!step) {
160
+ step = { name, status: "skipped", reason };
161
+ steps.push(step);
162
+ }
163
+ else {
164
+ step.status = "skipped";
165
+ step.reason = reason;
166
+ }
167
+ printStepLine(step);
168
+ }
169
+ function warn(message) {
170
+ warnCount++;
171
+ write(` ! ${message}\n`);
172
+ }
173
+ function finish() {
174
+ const elapsed = formatDuration(Date.now() - startTime);
175
+ const doneCount = steps.filter((s) => s.status === "done").length;
176
+ const failCount = steps.filter((s) => s.status === "failed").length;
177
+ const skipCount = steps.filter((s) => s.status === "skipped").length;
178
+ write(`\n`);
179
+ if (failCount > 0) {
180
+ write(`Completed with errors (${elapsed}): ${doneCount}/${totalSteps} steps, ${failCount} failed, ${skipCount} skipped\n`);
181
+ }
182
+ else if (warnCount > 0 || skipCount > 0) {
183
+ write(`Completed with warnings (${elapsed}): ${doneCount}/${totalSteps} steps, ${skipCount} skipped\n`);
184
+ }
185
+ else {
186
+ write(`All steps completed (${elapsed})\n`);
187
+ }
188
+ }
189
+ return { startStep, completeStep, failStep, skipStep, warn, finish };
190
+ }
191
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/lib/progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function validateCaptureUrl(url: string): URL;
2
+ //# sourceMappingURL=url-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-validator.d.ts","sourceRoot":"","sources":["../../src/lib/url-validator.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAenD"}
@@ -0,0 +1,17 @@
1
+ export function validateCaptureUrl(url) {
2
+ const parsed = new URL(url);
3
+ if (!["http:", "https:"].includes(parsed.protocol)) {
4
+ throw new Error("Only HTTP/HTTPS URLs are supported");
5
+ }
6
+ const hostname = parsed.hostname.toLowerCase();
7
+ // localhost拒否
8
+ if (hostname === "localhost" || hostname === "127.0.0.1" || hostname === "::1" || hostname === "[::1]" || hostname === "0.0.0.0") {
9
+ throw new Error("Local addresses are not allowed");
10
+ }
11
+ // プライベートIP拒否
12
+ if (/^(10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.|169\.254\.)/.test(hostname)) {
13
+ throw new Error("Private network addresses are not allowed");
14
+ }
15
+ return parsed;
16
+ }
17
+ //# sourceMappingURL=url-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-validator.js","sourceRoot":"","sources":["../../src/lib/url-validator.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC/C,cAAc;IACd,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjI,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,aAAa;IACb,IAAI,4DAA4D,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}