@backendkit-labs/curator-codex-agent 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 (79) hide show
  1. package/AGENT.md +187 -0
  2. package/README.md +475 -0
  3. package/dist/analyzer.d.ts +44 -0
  4. package/dist/analyzer.d.ts.map +1 -0
  5. package/dist/analyzer.js +381 -0
  6. package/dist/analyzer.js.map +1 -0
  7. package/dist/api/config.d.ts +57 -0
  8. package/dist/api/config.d.ts.map +1 -0
  9. package/dist/api/config.js +183 -0
  10. package/dist/api/config.js.map +1 -0
  11. package/dist/api/http-server.d.ts +24 -0
  12. package/dist/api/http-server.d.ts.map +1 -0
  13. package/dist/api/http-server.js +108 -0
  14. package/dist/api/http-server.js.map +1 -0
  15. package/dist/api/routes.d.ts +8 -0
  16. package/dist/api/routes.d.ts.map +1 -0
  17. package/dist/api/routes.js +382 -0
  18. package/dist/api/routes.js.map +1 -0
  19. package/dist/api/security.d.ts +107 -0
  20. package/dist/api/security.d.ts.map +1 -0
  21. package/dist/api/security.js +200 -0
  22. package/dist/api/security.js.map +1 -0
  23. package/dist/checksum.d.ts +56 -0
  24. package/dist/checksum.d.ts.map +1 -0
  25. package/dist/checksum.js +186 -0
  26. package/dist/checksum.js.map +1 -0
  27. package/dist/documentation-curator.d.ts +18 -0
  28. package/dist/documentation-curator.d.ts.map +1 -0
  29. package/dist/documentation-curator.js +231 -0
  30. package/dist/documentation-curator.js.map +1 -0
  31. package/dist/http-server-main.d.ts +28 -0
  32. package/dist/http-server-main.d.ts.map +1 -0
  33. package/dist/http-server-main.js +69 -0
  34. package/dist/http-server-main.js.map +1 -0
  35. package/dist/index.d.ts +16 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +23 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/knowledge/engine.d.ts +90 -0
  40. package/dist/knowledge/engine.d.ts.map +1 -0
  41. package/dist/knowledge/engine.js +181 -0
  42. package/dist/knowledge/engine.js.map +1 -0
  43. package/dist/knowledge/rag-provider.d.ts +87 -0
  44. package/dist/knowledge/rag-provider.d.ts.map +1 -0
  45. package/dist/knowledge/rag-provider.js +189 -0
  46. package/dist/knowledge/rag-provider.js.map +1 -0
  47. package/dist/knowledge/synthesis.d.ts +27 -0
  48. package/dist/knowledge/synthesis.d.ts.map +1 -0
  49. package/dist/knowledge/synthesis.js +142 -0
  50. package/dist/knowledge/synthesis.js.map +1 -0
  51. package/dist/providers/anthropic-adapter.d.ts +14 -0
  52. package/dist/providers/anthropic-adapter.d.ts.map +1 -0
  53. package/dist/providers/anthropic-adapter.js +29 -0
  54. package/dist/providers/anthropic-adapter.js.map +1 -0
  55. package/dist/providers/index.d.ts +14 -0
  56. package/dist/providers/index.d.ts.map +1 -0
  57. package/dist/providers/index.js +29 -0
  58. package/dist/providers/index.js.map +1 -0
  59. package/dist/providers/openai-adapter.d.ts +16 -0
  60. package/dist/providers/openai-adapter.d.ts.map +1 -0
  61. package/dist/providers/openai-adapter.js +37 -0
  62. package/dist/providers/openai-adapter.js.map +1 -0
  63. package/dist/providers/types.d.ts +4 -0
  64. package/dist/providers/types.d.ts.map +1 -0
  65. package/dist/providers/types.js +3 -0
  66. package/dist/providers/types.js.map +1 -0
  67. package/dist/server.d.ts +33 -0
  68. package/dist/server.d.ts.map +1 -0
  69. package/dist/server.js +640 -0
  70. package/dist/server.js.map +1 -0
  71. package/dist/types.d.ts +41 -0
  72. package/dist/types.d.ts.map +1 -0
  73. package/dist/types.js +4 -0
  74. package/dist/types.js.map +1 -0
  75. package/dist/watcher.d.ts +26 -0
  76. package/dist/watcher.d.ts.map +1 -0
  77. package/dist/watcher.js +168 -0
  78. package/dist/watcher.js.map +1 -0
  79. package/package.json +58 -0
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ /**
3
+ * Knowledge Engine
4
+ * Orchestrates RAG search, synthesis, and vault indexing
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.KnowledgeEngine = void 0;
8
+ const rag_provider_js_1 = require("./rag-provider.js");
9
+ const synthesis_js_1 = require("./synthesis.js");
10
+ class KnowledgeEngine {
11
+ rag;
12
+ synthesizer;
13
+ isInitialized = false;
14
+ constructor(provider, vaultPath) {
15
+ this.rag = new rag_provider_js_1.CuratorRagProvider(vaultPath);
16
+ this.synthesizer = new synthesis_js_1.KnowledgeSynthesizer(provider, vaultPath);
17
+ }
18
+ /**
19
+ * Initialize the knowledge engine
20
+ */
21
+ async initialize() {
22
+ try {
23
+ await this.rag.indexVault();
24
+ this.isInitialized = true;
25
+ }
26
+ catch (err) {
27
+ console.error('Knowledge engine initialization failed:', err);
28
+ throw err;
29
+ }
30
+ }
31
+ /**
32
+ * Search the vault
33
+ */
34
+ async search(query, opts = {}) {
35
+ const start = Date.now();
36
+ if (!this.isInitialized) {
37
+ await this.initialize();
38
+ }
39
+ try {
40
+ const results = await this.rag.search(query, { topK: opts.topK || 5 });
41
+ let synthesized = undefined;
42
+ if (opts.autoSynthesize !== false && results.length > 0) {
43
+ const synthesis = await this.synthesizer.synthesize(query, results);
44
+ if (synthesis) {
45
+ const saved = await this.synthesizer.saveNote(synthesis);
46
+ if (saved) {
47
+ synthesized = {
48
+ title: synthesis.title,
49
+ content: synthesis.content.slice(0, 500), // Preview
50
+ basedOn: synthesis.basedOn,
51
+ };
52
+ }
53
+ }
54
+ }
55
+ return {
56
+ query,
57
+ results,
58
+ synthesized,
59
+ totalResults: results.length,
60
+ durationMs: Date.now() - start,
61
+ };
62
+ }
63
+ catch (err) {
64
+ console.error('Search failed:', err);
65
+ throw err;
66
+ }
67
+ }
68
+ /**
69
+ * Reload and reindex the vault
70
+ */
71
+ async reload() {
72
+ const start = Date.now();
73
+ try {
74
+ const result = await this.rag.reload();
75
+ this.isInitialized = true;
76
+ return {
77
+ indexed: result.indexed,
78
+ updated: result.updated,
79
+ durationMs: Date.now() - start,
80
+ };
81
+ }
82
+ catch (err) {
83
+ console.error('Reload failed:', err);
84
+ throw err;
85
+ }
86
+ }
87
+ /**
88
+ * Get engine statistics
89
+ */
90
+ async getStats() {
91
+ return {
92
+ initialized: this.isInitialized,
93
+ vaultStats: await this.rag.getStats(),
94
+ };
95
+ }
96
+ /**
97
+ * Create MCP tools for knowledge operations
98
+ */
99
+ createTools() {
100
+ return [
101
+ {
102
+ name: 'knowledge_search',
103
+ description: 'Search the vault using semantic search (RAG). Returns relevant notes and optionally generates a synthetic summary note.',
104
+ inputSchema: {
105
+ type: 'object',
106
+ properties: {
107
+ query: {
108
+ type: 'string',
109
+ description: 'Search query (natural language, e.g., "How to handle errors?")',
110
+ },
111
+ topK: {
112
+ type: 'number',
113
+ description: 'Number of results to return (default: 5)',
114
+ },
115
+ autoSynthesize: {
116
+ type: 'boolean',
117
+ description: 'Automatically generate a synthesis note (default: true)',
118
+ },
119
+ },
120
+ required: ['query'],
121
+ },
122
+ handler: async (args) => {
123
+ try {
124
+ const response = await this.search(args.query, {
125
+ topK: args.topK,
126
+ autoSynthesize: args.autoSynthesize !== false,
127
+ });
128
+ return JSON.stringify(response);
129
+ }
130
+ catch (err) {
131
+ return JSON.stringify({
132
+ error: err.message,
133
+ });
134
+ }
135
+ },
136
+ },
137
+ {
138
+ name: 'knowledge_reload',
139
+ description: 'Reload and reindex the vault. Call this after external changes to the vault.',
140
+ inputSchema: {
141
+ type: 'object',
142
+ properties: {},
143
+ required: [],
144
+ },
145
+ handler: async () => {
146
+ try {
147
+ const response = await this.reload();
148
+ return JSON.stringify(response);
149
+ }
150
+ catch (err) {
151
+ return JSON.stringify({
152
+ error: err.message,
153
+ });
154
+ }
155
+ },
156
+ },
157
+ {
158
+ name: 'knowledge_stats',
159
+ description: 'Get knowledge engine statistics.',
160
+ inputSchema: {
161
+ type: 'object',
162
+ properties: {},
163
+ required: [],
164
+ },
165
+ handler: async () => {
166
+ try {
167
+ const stats = await this.getStats();
168
+ return JSON.stringify(stats);
169
+ }
170
+ catch (err) {
171
+ return JSON.stringify({
172
+ error: err.message,
173
+ });
174
+ }
175
+ },
176
+ },
177
+ ];
178
+ }
179
+ }
180
+ exports.KnowledgeEngine = KnowledgeEngine;
181
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/knowledge/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * RAG Provider for Curator-Codex
3
+ * Wraps ObsidianRAGProvider with semantic search capabilities
4
+ */
5
+ export interface RagSearchResult {
6
+ title: string;
7
+ content: string;
8
+ relevance: number;
9
+ sourcePath: string;
10
+ sourceRef?: string;
11
+ }
12
+ export interface RagSearchOptions {
13
+ topK?: number;
14
+ minScore?: number;
15
+ }
16
+ export declare class CuratorRagProvider {
17
+ private rag;
18
+ private vaultPath;
19
+ private isIndexed;
20
+ constructor(vaultPath: string);
21
+ private getIndexPath;
22
+ /**
23
+ * Index the vault (loads all notes and creates embeddings)
24
+ */
25
+ indexVault(): Promise<{
26
+ indexed: number;
27
+ updated: number;
28
+ }>;
29
+ /**
30
+ * Search the vault with semantic search
31
+ */
32
+ search(query: string, opts?: RagSearchOptions): Promise<RagSearchResult[]>;
33
+ /**
34
+ * Reload/reindex the vault
35
+ */
36
+ reload(): Promise<{
37
+ indexed: number;
38
+ updated: number;
39
+ }>;
40
+ /**
41
+ * Get vault statistics
42
+ */
43
+ getStats(): Promise<{
44
+ indexed: boolean;
45
+ vaultPath: string;
46
+ indexPath: string;
47
+ }>;
48
+ /**
49
+ * Create MCP tool for search
50
+ */
51
+ createSearchTool(): {
52
+ name: string;
53
+ description: string;
54
+ inputSchema: {
55
+ type: string;
56
+ properties: {
57
+ query: {
58
+ type: string;
59
+ description: string;
60
+ };
61
+ topK: {
62
+ type: string;
63
+ description: string;
64
+ };
65
+ };
66
+ required: string[];
67
+ };
68
+ handler: (args: {
69
+ query: string;
70
+ topK?: number;
71
+ }) => Promise<string>;
72
+ };
73
+ /**
74
+ * Create MCP tool for reload
75
+ */
76
+ createReloadTool(): {
77
+ name: string;
78
+ description: string;
79
+ inputSchema: {
80
+ type: string;
81
+ properties: {};
82
+ required: never[];
83
+ };
84
+ handler: () => Promise<string>;
85
+ };
86
+ }
87
+ //# sourceMappingURL=rag-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag-provider.d.ts","sourceRoot":"","sources":["../../src/knowledge/rag-provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAkB;gBAEvB,SAAS,EAAE,MAAM;IAW7B,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAWjE;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA4BpF;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAK7D;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACrB,CAAC;IAQF;;OAEG;IACH,gBAAgB;;;;;;;;;;;;;;;;;wBAkBc;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE;;IAiB9D;;OAEG;IACH,gBAAgB;;;;;;;;;;CAyBnB"}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ /**
3
+ * RAG Provider for Curator-Codex
4
+ * Wraps ObsidianRAGProvider with semantic search capabilities
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.CuratorRagProvider = void 0;
41
+ const agent_enterprise_1 = require("@backendkit-labs/agent-enterprise");
42
+ const path = __importStar(require("node:path"));
43
+ class CuratorRagProvider {
44
+ rag;
45
+ vaultPath;
46
+ isIndexed = false;
47
+ constructor(vaultPath) {
48
+ this.vaultPath = vaultPath;
49
+ this.rag = new agent_enterprise_1.ObsidianRAGProvider({
50
+ vaultPath,
51
+ indexPath: this.getIndexPath(),
52
+ embedder: new agent_enterprise_1.SimpleEmbedder(),
53
+ topK: 5,
54
+ minScore: 0.1,
55
+ });
56
+ }
57
+ getIndexPath() {
58
+ const homeDir = process.env.HOME || process.env.USERPROFILE || '/tmp';
59
+ return path.join(homeDir, '.curator-codex', 'rag', `${path.basename(this.vaultPath)}.json`);
60
+ }
61
+ /**
62
+ * Index the vault (loads all notes and creates embeddings)
63
+ */
64
+ async indexVault() {
65
+ try {
66
+ const result = await this.rag.index({ verbose: false });
67
+ this.isIndexed = true;
68
+ return result;
69
+ }
70
+ catch (err) {
71
+ console.error('Failed to index vault:', err);
72
+ throw new Error(`RAG indexing failed: ${err.message}`);
73
+ }
74
+ }
75
+ /**
76
+ * Search the vault with semantic search
77
+ */
78
+ async search(query, opts = {}) {
79
+ if (!this.isIndexed) {
80
+ await this.indexVault();
81
+ }
82
+ try {
83
+ const results = await this.rag.search(query, {
84
+ topK: opts.topK || 5,
85
+ minScore: opts.minScore || 0.1,
86
+ });
87
+ if (!Array.isArray(results)) {
88
+ return [];
89
+ }
90
+ return results.map((r) => ({
91
+ title: r.title || 'Untitled',
92
+ content: r.content || r.text || '',
93
+ relevance: r.score || r.relevance || 0,
94
+ sourcePath: r.path || r.source || '',
95
+ sourceRef: r.sourceRef || undefined,
96
+ }));
97
+ }
98
+ catch (err) {
99
+ console.error('Search failed:', err);
100
+ throw new Error(`RAG search failed: ${err.message}`);
101
+ }
102
+ }
103
+ /**
104
+ * Reload/reindex the vault
105
+ */
106
+ async reload() {
107
+ this.isIndexed = false;
108
+ return await this.indexVault();
109
+ }
110
+ /**
111
+ * Get vault statistics
112
+ */
113
+ async getStats() {
114
+ return {
115
+ indexed: this.isIndexed,
116
+ vaultPath: this.vaultPath,
117
+ indexPath: this.getIndexPath(),
118
+ };
119
+ }
120
+ /**
121
+ * Create MCP tool for search
122
+ */
123
+ createSearchTool() {
124
+ return {
125
+ name: 'knowledge_search',
126
+ description: 'Search the vault using semantic search (RAG). Returns relevant notes based on your query.',
127
+ inputSchema: {
128
+ type: 'object',
129
+ properties: {
130
+ query: {
131
+ type: 'string',
132
+ description: 'Search query (natural language)',
133
+ },
134
+ topK: {
135
+ type: 'number',
136
+ description: 'Number of results to return (default: 5)',
137
+ },
138
+ },
139
+ required: ['query'],
140
+ },
141
+ handler: async (args) => {
142
+ try {
143
+ const results = await this.search(args.query, { topK: args.topK });
144
+ return JSON.stringify({
145
+ query: args.query,
146
+ results,
147
+ count: results.length,
148
+ });
149
+ }
150
+ catch (err) {
151
+ return JSON.stringify({
152
+ error: err.message,
153
+ });
154
+ }
155
+ },
156
+ };
157
+ }
158
+ /**
159
+ * Create MCP tool for reload
160
+ */
161
+ createReloadTool() {
162
+ return {
163
+ name: 'knowledge_reload',
164
+ description: 'Reload and reindex the vault. Call this after external changes to the vault.',
165
+ inputSchema: {
166
+ type: 'object',
167
+ properties: {},
168
+ required: [],
169
+ },
170
+ handler: async () => {
171
+ try {
172
+ const result = await this.reload();
173
+ return JSON.stringify({
174
+ success: true,
175
+ indexed: result.indexed,
176
+ updated: result.updated,
177
+ });
178
+ }
179
+ catch (err) {
180
+ return JSON.stringify({
181
+ error: err.message,
182
+ });
183
+ }
184
+ },
185
+ };
186
+ }
187
+ }
188
+ exports.CuratorRagProvider = CuratorRagProvider;
189
+ //# sourceMappingURL=rag-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag-provider.js","sourceRoot":"","sources":["../../src/knowledge/rag-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Knowledge Synthesis Engine
3
+ * Generates synthetic notes from search results and base notes
4
+ */
5
+ import type { CuratorLLMProvider } from '../providers/types.js';
6
+ import type { RagSearchResult } from './rag-provider.js';
7
+ export interface SynthesizedNote {
8
+ title: string;
9
+ content: string;
10
+ basedOn: string[];
11
+ synthesisVersion: number;
12
+ generatedAt: string;
13
+ }
14
+ export declare class KnowledgeSynthesizer {
15
+ private provider;
16
+ private vaultPath;
17
+ constructor(provider: CuratorLLMProvider, vaultPath: string);
18
+ /**
19
+ * Generate a synthetic note from search results
20
+ */
21
+ synthesize(query: string, searchResults: RagSearchResult[]): Promise<SynthesizedNote | null>;
22
+ /**
23
+ * Save synthesized note to vault
24
+ */
25
+ saveNote(note: SynthesizedNote, domainFolder?: string): Promise<string | null>;
26
+ }
27
+ //# sourceMappingURL=synthesis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesis.d.ts","sourceRoot":"","sources":["../../src/knowledge/synthesis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACvB;AAmBD,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,SAAS,CAAS;gBAEd,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM;IAK3D;;OAEG;IACG,UAAU,CACZ,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,eAAe,EAAE,GACjC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAqClC;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,YAAY,GAAE,MAAoB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CA+CpG"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ /**
3
+ * Knowledge Synthesis Engine
4
+ * Generates synthetic notes from search results and base notes
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.KnowledgeSynthesizer = void 0;
41
+ const fs = __importStar(require("node:fs/promises"));
42
+ const path = __importStar(require("node:path"));
43
+ const SYNTHESIS_PROMPT = `You are a knowledge synthesis expert.
44
+
45
+ Given a search query and relevant documents from a vault, generate a comprehensive synthetic note that:
46
+ 1. Directly answers the query
47
+ 2. Integrates insights from multiple documents
48
+ 3. Adds clarifying context and practical examples
49
+ 4. Is self-contained (reader doesn't need originals)
50
+ 5. Uses markdown with ## headings
51
+
52
+ Query: {query}
53
+
54
+ Relevant Documents:
55
+ {documents}
56
+
57
+ Generate a markdown note that synthesizes these documents into a helpful guide.
58
+ Return ONLY the markdown content, no frontmatter.`;
59
+ class KnowledgeSynthesizer {
60
+ provider;
61
+ vaultPath;
62
+ constructor(provider, vaultPath) {
63
+ this.provider = provider;
64
+ this.vaultPath = vaultPath;
65
+ }
66
+ /**
67
+ * Generate a synthetic note from search results
68
+ */
69
+ async synthesize(query, searchResults) {
70
+ if (searchResults.length === 0) {
71
+ return null;
72
+ }
73
+ // Build prompt
74
+ const documentsText = searchResults
75
+ .map((r, i) => `## Document ${i + 1}: ${r.title}\n\n${r.content.slice(0, 1000)}`)
76
+ .join('\n\n---\n\n');
77
+ const prompt = SYNTHESIS_PROMPT.replace('{query}', query).replace('{documents}', documentsText);
78
+ try {
79
+ const synthesizedContent = await this.provider.complete('You are a knowledge synthesis expert. Generate high-quality markdown notes.', prompt);
80
+ return {
81
+ title: `${query} — Synthesis`,
82
+ content: synthesizedContent,
83
+ basedOn: searchResults.map(r => r.title),
84
+ synthesisVersion: 1,
85
+ generatedAt: new Date().toISOString(),
86
+ };
87
+ }
88
+ catch (err) {
89
+ console.error('Synthesis failed:', err);
90
+ return null;
91
+ }
92
+ }
93
+ /**
94
+ * Save synthesized note to vault
95
+ */
96
+ async saveNote(note, domainFolder = 'synthesis') {
97
+ try {
98
+ const dir = path.join(this.vaultPath, domainFolder);
99
+ await fs.mkdir(dir, { recursive: true });
100
+ // Create filename from title
101
+ const slug = note.title
102
+ .toLowerCase()
103
+ .replace(/[^a-z0-9]+/g, '-')
104
+ .slice(0, 60);
105
+ const date = new Date().toISOString().slice(0, 10);
106
+ const filename = `${date}-${slug}-v${note.synthesisVersion}.md`;
107
+ const filePath = path.join(dir, filename);
108
+ // Check if exists
109
+ try {
110
+ await fs.access(filePath);
111
+ return null; // Already exists
112
+ }
113
+ catch {
114
+ // Doesn't exist, proceed
115
+ }
116
+ // Build frontmatter
117
+ const frontmatter = [
118
+ '---',
119
+ `title: "${note.title.replace(/"/g, '\\"')}"`,
120
+ 'area: synthesis',
121
+ 'tipo: synthesis',
122
+ `generated_by: knowledge-agent`,
123
+ `synthesis_version: ${note.synthesisVersion}`,
124
+ `based_on: [${note.basedOn.map(b => `"${b}"`).join(', ')}]`,
125
+ `date: ${new Date().toISOString().slice(0, 10)}`,
126
+ 'author: "agent/codex"',
127
+ `tags: ["synthesis", "generated"]`,
128
+ '---',
129
+ '',
130
+ note.content,
131
+ ].join('\n');
132
+ await fs.writeFile(filePath, frontmatter, 'utf-8');
133
+ return filePath;
134
+ }
135
+ catch (err) {
136
+ console.error('Failed to save note:', err);
137
+ return null;
138
+ }
139
+ }
140
+ }
141
+ exports.KnowledgeSynthesizer = KnowledgeSynthesizer;
142
+ //# sourceMappingURL=synthesis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesis.js","sourceRoot":"","sources":["../../src/knowledge/synthesis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { CuratorLLMProvider } from './types.js';
2
+ export interface AnthropicAdapterOptions {
3
+ apiKey: string;
4
+ model?: string;
5
+ maxTokens?: number;
6
+ }
7
+ export declare class AnthropicAdapter implements CuratorLLMProvider {
8
+ private readonly client;
9
+ private readonly model;
10
+ private readonly maxTokens;
11
+ constructor(opts: AnthropicAdapterOptions);
12
+ complete(systemPrompt: string, userMessage: string): Promise<string>;
13
+ }
14
+ //# sourceMappingURL=anthropic-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-adapter.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,gBAAiB,YAAW,kBAAkB;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,IAAI,EAAE,uBAAuB;IAMnC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAU7E"}