opc-agent 4.2.0 → 4.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 (119) hide show
  1. package/.opc/memory.db +0 -0
  2. package/COMPETITIVE-GAP.md +92 -92
  3. package/CONTRIBUTING.md +36 -36
  4. package/README.md +290 -290
  5. package/README.zh-CN.md +269 -269
  6. package/STUDIO-REWRITE-TASK.md +76 -0
  7. package/dist/channels/telegram.d.ts +5 -0
  8. package/dist/channels/telegram.d.ts.map +1 -1
  9. package/dist/channels/telegram.js +108 -0
  10. package/dist/channels/telegram.js.map +1 -1
  11. package/dist/channels/voice.d.ts +71 -97
  12. package/dist/channels/voice.d.ts.map +1 -1
  13. package/dist/channels/voice.js +369 -347
  14. package/dist/channels/voice.js.map +1 -1
  15. package/dist/channels/web.d.ts.map +1 -1
  16. package/dist/channels/web.js +8 -2
  17. package/dist/channels/web.js.map +1 -1
  18. package/dist/channels/wechat.js +6 -6
  19. package/dist/cli/chat.d.ts +4 -1
  20. package/dist/cli/chat.d.ts.map +1 -1
  21. package/dist/cli/chat.js +680 -73
  22. package/dist/cli/chat.js.map +1 -1
  23. package/dist/cli/setup.js +1 -1
  24. package/dist/cli/setup.js.map +1 -1
  25. package/dist/cli.js +373 -280
  26. package/dist/cli.js.map +1 -1
  27. package/dist/core/a2a-http.d.ts +75 -0
  28. package/dist/core/a2a-http.d.ts.map +1 -0
  29. package/dist/core/a2a-http.js +217 -0
  30. package/dist/core/a2a-http.js.map +1 -0
  31. package/dist/core/a2a.d.ts +2 -0
  32. package/dist/core/a2a.d.ts.map +1 -1
  33. package/dist/core/a2a.js +6 -1
  34. package/dist/core/a2a.js.map +1 -1
  35. package/dist/core/agent.d.ts +1 -0
  36. package/dist/core/agent.d.ts.map +1 -1
  37. package/dist/core/agent.js +3 -0
  38. package/dist/core/agent.js.map +1 -1
  39. package/dist/core/gateway-registry.d.ts +116 -0
  40. package/dist/core/gateway-registry.d.ts.map +1 -0
  41. package/dist/core/gateway-registry.js +280 -0
  42. package/dist/core/gateway-registry.js.map +1 -0
  43. package/dist/core/model-recommender.d.ts +40 -0
  44. package/dist/core/model-recommender.d.ts.map +1 -0
  45. package/dist/core/model-recommender.js +186 -0
  46. package/dist/core/model-recommender.js.map +1 -0
  47. package/dist/core/priority-queue.d.ts +100 -0
  48. package/dist/core/priority-queue.d.ts.map +1 -0
  49. package/dist/core/priority-queue.js +181 -0
  50. package/dist/core/priority-queue.js.map +1 -0
  51. package/dist/core/runtime.d.ts.map +1 -1
  52. package/dist/core/runtime.js +192 -22
  53. package/dist/core/runtime.js.map +1 -1
  54. package/dist/deploy/index.js +56 -56
  55. package/dist/doctor.d.ts +1 -0
  56. package/dist/doctor.d.ts.map +1 -1
  57. package/dist/doctor.js +155 -10
  58. package/dist/doctor.js.map +1 -1
  59. package/dist/index.d.ts +10 -3
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +24 -13
  62. package/dist/index.js.map +1 -1
  63. package/dist/memory/deepbrain.d.ts +1 -1
  64. package/dist/memory/deepbrain.d.ts.map +1 -1
  65. package/dist/memory/deepbrain.js +95 -4
  66. package/dist/memory/deepbrain.js.map +1 -1
  67. package/dist/memory/evolve-engine.d.ts +113 -0
  68. package/dist/memory/evolve-engine.d.ts.map +1 -0
  69. package/dist/memory/evolve-engine.js +549 -0
  70. package/dist/memory/evolve-engine.js.map +1 -0
  71. package/dist/memory/index.d.ts +2 -0
  72. package/dist/memory/index.d.ts.map +1 -1
  73. package/dist/memory/index.js +3 -1
  74. package/dist/memory/index.js.map +1 -1
  75. package/dist/memory/sqlite-store.d.ts +40 -0
  76. package/dist/memory/sqlite-store.d.ts.map +1 -0
  77. package/dist/memory/sqlite-store.js +269 -0
  78. package/dist/memory/sqlite-store.js.map +1 -0
  79. package/dist/memory/user-profiler.d.ts +8 -0
  80. package/dist/memory/user-profiler.d.ts.map +1 -1
  81. package/dist/memory/user-profiler.js +89 -0
  82. package/dist/memory/user-profiler.js.map +1 -1
  83. package/dist/scheduler/cron-engine.d.ts.map +1 -1
  84. package/dist/scheduler/cron-engine.js +3 -36
  85. package/dist/scheduler/cron-engine.js.map +1 -1
  86. package/dist/scheduler/proactive.d.ts +62 -0
  87. package/dist/scheduler/proactive.d.ts.map +1 -0
  88. package/dist/scheduler/proactive.js +185 -0
  89. package/dist/scheduler/proactive.js.map +1 -0
  90. package/dist/skills/auto-learn.d.ts.map +1 -1
  91. package/dist/skills/auto-learn.js +65 -11
  92. package/dist/skills/auto-learn.js.map +1 -1
  93. package/dist/skills/builtin/index.d.ts.map +1 -1
  94. package/dist/skills/builtin/index.js +163 -30
  95. package/dist/skills/builtin/index.js.map +1 -1
  96. package/dist/skills/types.d.ts +1 -1
  97. package/dist/skills/types.d.ts.map +1 -1
  98. package/dist/skills/types.js +1 -0
  99. package/dist/skills/types.js.map +1 -1
  100. package/dist/studio/server.d.ts +1 -0
  101. package/dist/studio/server.d.ts.map +1 -1
  102. package/dist/studio/server.js +148 -17
  103. package/dist/studio/server.js.map +1 -1
  104. package/dist/studio-ui/index.html +867 -2630
  105. package/dist/ui/components.js +105 -105
  106. package/examples/README.md +22 -22
  107. package/examples/basic-agent.ts +90 -90
  108. package/examples/brain-integration.ts +71 -71
  109. package/examples/multi-channel.ts +74 -74
  110. package/install.ps1 +127 -127
  111. package/install.sh +154 -154
  112. package/models.json +164 -164
  113. package/package.json +5 -2
  114. package/scripts/install.ps1 +31 -31
  115. package/scripts/install.sh +40 -40
  116. package/templates/ecommerce-assistant/README.md +45 -45
  117. package/templates/ecommerce-assistant/oad.yaml +47 -47
  118. package/templates/tech-support/README.md +43 -43
  119. package/templates/tech-support/oad.yaml +45 -45
@@ -0,0 +1,549 @@
1
+ "use strict";
2
+ /**
3
+ * KnowledgeEvolveEngine — Two-layer knowledge distillation
4
+ *
5
+ * Layer 1: Agent private refinement (local Ollama, zero cost)
6
+ * Conversations → extract insights → distill → write back to agent memory
7
+ * Key: memory never grows, only gets more refined
8
+ *
9
+ * Layer 2: Workstation shared refinement (AgentKits cloud model, paid)
10
+ * Multiple agents' refined knowledge → cross-agent fusion → shared workstation layer
11
+ * Key: one agent learns, all agents benefit
12
+ *
13
+ * Core principle:
14
+ * - Layer 1 ALWAYS uses local Ollama (zero cost)
15
+ * - Layer 2 uses AgentKits/cloud model (paid, higher quality)
16
+ * - Agent memory = distilled experience, NOT raw conversation history
17
+ */
18
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ var desc = Object.getOwnPropertyDescriptor(m, k);
21
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
22
+ desc = { enumerable: true, get: function() { return m[k]; } };
23
+ }
24
+ Object.defineProperty(o, k2, desc);
25
+ }) : (function(o, m, k, k2) {
26
+ if (k2 === undefined) k2 = k;
27
+ o[k2] = m[k];
28
+ }));
29
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
30
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
31
+ }) : function(o, v) {
32
+ o["default"] = v;
33
+ });
34
+ var __importStar = (this && this.__importStar) || (function () {
35
+ var ownKeys = function(o) {
36
+ ownKeys = Object.getOwnPropertyNames || function (o) {
37
+ var ar = [];
38
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
39
+ return ar;
40
+ };
41
+ return ownKeys(o);
42
+ };
43
+ return function (mod) {
44
+ if (mod && mod.__esModule) return mod;
45
+ var result = {};
46
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
47
+ __setModuleDefault(result, mod);
48
+ return result;
49
+ };
50
+ })();
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ exports.AutoEvolveScheduler = exports.KnowledgeEvolveEngine = void 0;
53
+ const fs = __importStar(require("fs"));
54
+ const path = __importStar(require("path"));
55
+ // Prompts for local LLM — kept short for small models
56
+ const EXTRACT_PROMPT = `Extract key knowledge from this conversation. Output JSON array of insights.
57
+ Each insight: { "title": "short title", "content": "key information", "tags": ["tag1"], "confidence": 0.0-1.0 }
58
+ Only extract reusable knowledge (facts, procedures, preferences), not casual chat.
59
+ If nothing worth saving, return [].
60
+
61
+ Conversation:
62
+ `;
63
+ const DEDUP_PROMPT = `Compare these two knowledge entries. Are they about the same topic?
64
+ If yes, merge them into one better entry. If no, return null.
65
+ Respond JSON only: { "isDuplicate": boolean, "merged": { "title": string, "content": string, "confidence": number } | null }
66
+
67
+ Entry A:
68
+ {A}
69
+
70
+ Entry B:
71
+ {B}
72
+ `;
73
+ const DISTILL_PROMPT = `Distill these workstation-level knowledge entries into a higher-level summary suitable for the {TARGET_TIER} tier.
74
+ Remove agent-specific details, keep universal patterns.
75
+ Output JSON: { "title": string, "content": string, "tags": [string], "confidence": number }
76
+
77
+ Entries:
78
+ {ENTRIES}
79
+ `;
80
+ /** Layer 1: Compact agent memory — distill raw conversations into refined experience */
81
+ const MEMORY_COMPACT_PROMPT = `You are a memory compactor. Given these conversation memories, distill them into a concise, refined summary.
82
+
83
+ Rules:
84
+ - Keep ONLY reusable knowledge: user preferences, facts, procedures, decisions
85
+ - Remove: greetings, small talk, debugging attempts, repeated questions
86
+ - Merge similar topics into single entries
87
+ - Output a markdown document with ## sections, each a distinct knowledge item
88
+ - Be concise: aim for 30% of original length
89
+ - Preserve exact names, numbers, dates, technical details
90
+ - Write in the same language as the input
91
+
92
+ Current memory:
93
+ {MEMORY}
94
+
95
+ Output ONLY the refined markdown, no explanation.`;
96
+ class KnowledgeEvolveEngine {
97
+ config;
98
+ ollamaUrl;
99
+ model;
100
+ knowledgeDir;
101
+ conversationCount = 0;
102
+ timer = null;
103
+ constructor(agentDir, config = {}) {
104
+ this.config = {
105
+ enabled: config.enabled !== false,
106
+ localModel: config.localModel,
107
+ ollamaUrl: config.ollamaUrl || process.env.OLLAMA_BASE_URL || 'http://localhost:11434/v1',
108
+ conversationThreshold: config.conversationThreshold ?? 10,
109
+ intervalMs: config.intervalMs ?? 6 * 60 * 60 * 1000, // 6h
110
+ maxPagesPerTier: config.maxPagesPerTier ?? 100,
111
+ };
112
+ this.ollamaUrl = this.config.ollamaUrl;
113
+ this.model = this.config.localModel || '';
114
+ this.knowledgeDir = path.join(agentDir, '.opc', 'knowledge');
115
+ fs.mkdirSync(this.knowledgeDir, { recursive: true });
116
+ }
117
+ /** Auto-detect best local Ollama model for evolve tasks */
118
+ async detectLocalModel() {
119
+ if (this.model)
120
+ return this.model;
121
+ try {
122
+ const tagsUrl = this.ollamaUrl.replace('/v1', '/api/tags');
123
+ const res = await fetch(tagsUrl);
124
+ if (!res.ok)
125
+ return 'qwen2.5:0.5b';
126
+ const data = await res.json();
127
+ const models = (data.models || []).map((m) => m.name);
128
+ // Prefer larger models for better distillation
129
+ const preferred = ['qwen2.5:32b', 'qwen2.5:14b', 'qwen2.5:7b', 'llama3.1:8b', 'qwen2.5:3b', 'qwen2.5:1.5b', 'qwen2.5:0.5b'];
130
+ for (const p of preferred) {
131
+ if (models.includes(p)) {
132
+ this.model = p;
133
+ return p;
134
+ }
135
+ }
136
+ if (models.length > 0) {
137
+ this.model = models[0];
138
+ return models[0];
139
+ }
140
+ }
141
+ catch { /* Ollama not running */ }
142
+ this.model = 'qwen2.5:0.5b';
143
+ return this.model;
144
+ }
145
+ /** Call local Ollama model */
146
+ async callLocal(prompt, system) {
147
+ const model = await this.detectLocalModel();
148
+ const messages = [];
149
+ if (system)
150
+ messages.push({ role: 'system', content: system });
151
+ messages.push({ role: 'user', content: prompt });
152
+ try {
153
+ const res = await fetch(`${this.ollamaUrl}/chat/completions`, {
154
+ method: 'POST',
155
+ headers: { 'Content-Type': 'application/json' },
156
+ body: JSON.stringify({ model, messages, temperature: 0.3, max_tokens: 1000 }),
157
+ });
158
+ if (!res.ok)
159
+ return '';
160
+ const data = await res.json();
161
+ return data.choices?.[0]?.message?.content || '';
162
+ }
163
+ catch {
164
+ return '';
165
+ }
166
+ }
167
+ /** Extract knowledge from conversation messages */
168
+ async extractFromConversation(messages) {
169
+ if (messages.length < 2)
170
+ return [];
171
+ const conversationText = messages
172
+ .slice(-20) // Last 20 messages max
173
+ .map(m => `${m.role}: ${m.content.substring(0, 200)}`)
174
+ .join('\n');
175
+ const response = await this.callLocal(EXTRACT_PROMPT + conversationText, 'You are a knowledge extraction engine. Output valid JSON arrays only.');
176
+ const pages = [];
177
+ try {
178
+ const match = response.match(/\[[\s\S]*\]/);
179
+ if (!match)
180
+ return [];
181
+ const insights = JSON.parse(match[0]);
182
+ if (!Array.isArray(insights))
183
+ return [];
184
+ for (const insight of insights) {
185
+ if (!insight.title || !insight.content)
186
+ continue;
187
+ if ((insight.confidence || 0) < 0.3)
188
+ continue;
189
+ const slug = this.slugify(insight.title);
190
+ pages.push({
191
+ slug,
192
+ content: `## ${insight.title}\n\n${insight.content}`,
193
+ tier: 'workstation',
194
+ source: 'conversation',
195
+ confidence: insight.confidence || 0.5,
196
+ createdAt: new Date().toISOString(),
197
+ updatedAt: new Date().toISOString(),
198
+ usageCount: 1,
199
+ tags: insight.tags || [],
200
+ });
201
+ }
202
+ }
203
+ catch { /* Parse error, skip */ }
204
+ // Save extracted pages
205
+ for (const page of pages) {
206
+ this.savePage(page);
207
+ }
208
+ return pages;
209
+ }
210
+ /** Deduplicate knowledge pages within a tier */
211
+ async deduplicateInTier(tier) {
212
+ const pages = this.loadPages(tier);
213
+ if (pages.length < 2)
214
+ return 0;
215
+ let deduped = 0;
216
+ const toRemove = new Set();
217
+ for (let i = 0; i < pages.length; i++) {
218
+ if (toRemove.has(pages[i].slug))
219
+ continue;
220
+ for (let j = i + 1; j < pages.length; j++) {
221
+ if (toRemove.has(pages[j].slug))
222
+ continue;
223
+ const prompt = DEDUP_PROMPT
224
+ .replace('{A}', pages[i].content.substring(0, 300))
225
+ .replace('{B}', pages[j].content.substring(0, 300));
226
+ const response = await this.callLocal(prompt, 'Respond in JSON only.');
227
+ try {
228
+ const match = response.match(/\{[\s\S]*\}/);
229
+ if (!match)
230
+ continue;
231
+ const result = JSON.parse(match[0]);
232
+ if (result.isDuplicate && result.merged) {
233
+ // Update A with merged content, mark B for removal
234
+ pages[i].content = `## ${result.merged.title}\n\n${result.merged.content}`;
235
+ pages[i].confidence = Math.max(pages[i].confidence, result.merged.confidence || pages[i].confidence);
236
+ pages[i].usageCount += pages[j].usageCount;
237
+ pages[i].updatedAt = new Date().toISOString();
238
+ toRemove.add(pages[j].slug);
239
+ deduped++;
240
+ }
241
+ }
242
+ catch {
243
+ continue;
244
+ }
245
+ }
246
+ }
247
+ // Save results
248
+ for (const page of pages) {
249
+ if (!toRemove.has(page.slug)) {
250
+ this.savePage(page);
251
+ }
252
+ else {
253
+ this.deletePage(page.slug, tier);
254
+ }
255
+ }
256
+ return deduped;
257
+ }
258
+ /** Promote knowledge upward: workstation → job → industry */
259
+ async promoteKnowledge() {
260
+ let promoted = 0;
261
+ // Workstation → Job: pages with high confidence + usage
262
+ const wsPages = this.loadPages('workstation')
263
+ .filter(p => p.confidence >= 0.7 && p.usageCount >= 3);
264
+ if (wsPages.length >= 3) {
265
+ const entries = wsPages.slice(0, 10).map(p => p.content.substring(0, 200)).join('\n---\n');
266
+ const prompt = DISTILL_PROMPT
267
+ .replace('{TARGET_TIER}', 'job (岗位)')
268
+ .replace('{ENTRIES}', entries);
269
+ const response = await this.callLocal(prompt, 'Output JSON only.');
270
+ try {
271
+ const match = response.match(/\{[\s\S]*\}/);
272
+ if (match) {
273
+ const result = JSON.parse(match[0]);
274
+ if (result.title && result.content) {
275
+ const page = {
276
+ slug: `promoted-${this.slugify(result.title)}`,
277
+ content: `## ${result.title}\n\n${result.content}`,
278
+ tier: 'job',
279
+ source: 'evolve-promotion',
280
+ confidence: result.confidence || 0.8,
281
+ createdAt: new Date().toISOString(),
282
+ updatedAt: new Date().toISOString(),
283
+ usageCount: 0,
284
+ tags: result.tags || ['promoted'],
285
+ };
286
+ this.savePage(page);
287
+ promoted++;
288
+ }
289
+ }
290
+ }
291
+ catch { /* skip */ }
292
+ }
293
+ // Job → Industry: high confidence job pages
294
+ const jobPages = this.loadPages('job')
295
+ .filter(p => p.confidence >= 0.85 && p.usageCount >= 5);
296
+ if (jobPages.length >= 3) {
297
+ const entries = jobPages.slice(0, 10).map(p => p.content.substring(0, 200)).join('\n---\n');
298
+ const prompt = DISTILL_PROMPT
299
+ .replace('{TARGET_TIER}', 'industry (行业)')
300
+ .replace('{ENTRIES}', entries);
301
+ const response = await this.callLocal(prompt, 'Output JSON only.');
302
+ try {
303
+ const match = response.match(/\{[\s\S]*\}/);
304
+ if (match) {
305
+ const result = JSON.parse(match[0]);
306
+ if (result.title && result.content) {
307
+ const page = {
308
+ slug: `industry-${this.slugify(result.title)}`,
309
+ content: `## ${result.title}\n\n${result.content}`,
310
+ tier: 'industry',
311
+ source: 'evolve-promotion',
312
+ confidence: result.confidence || 0.9,
313
+ createdAt: new Date().toISOString(),
314
+ updatedAt: new Date().toISOString(),
315
+ usageCount: 0,
316
+ tags: result.tags || ['promoted'],
317
+ };
318
+ this.savePage(page);
319
+ promoted++;
320
+ }
321
+ }
322
+ }
323
+ catch { /* skip */ }
324
+ }
325
+ return promoted;
326
+ }
327
+ /** Full evolve cycle: extract → dedup → compact memory → promote */
328
+ async evolve(recentMessages) {
329
+ const result = { extracted: 0, deduplicated: 0, promoted: 0, compacted: false, errors: [] };
330
+ if (!this.config.enabled)
331
+ return result;
332
+ try {
333
+ // Step 1: Extract from recent conversation
334
+ if (recentMessages && recentMessages.length > 0) {
335
+ const pages = await this.extractFromConversation(recentMessages);
336
+ result.extracted = pages.length;
337
+ }
338
+ // Step 2: Deduplicate within each tier
339
+ result.deduplicated += await this.deduplicateInTier('workstation');
340
+ result.deduplicated += await this.deduplicateInTier('job');
341
+ // Step 3: Compact agent memory (Layer 1 — write refined experience back)
342
+ result.compacted = await this.compactAgentMemory();
343
+ // Step 4: Promote upward
344
+ result.promoted = await this.promoteKnowledge();
345
+ }
346
+ catch (err) {
347
+ result.errors.push(err.message || String(err));
348
+ }
349
+ // Save evolve log
350
+ this.saveEvolveLog(result);
351
+ return result;
352
+ }
353
+ /**
354
+ * Layer 1: Compact agent memory
355
+ * Read MEMORY.md → distill with local model → write back refined version
356
+ * Result: memory never grows, only gets more concentrated
357
+ */
358
+ async compactAgentMemory() {
359
+ const memoryPath = path.join(path.dirname(this.knowledgeDir), 'MEMORY.md');
360
+ // Also check .opc/MEMORY.md
361
+ const altMemoryPath = path.join(this.knowledgeDir, '..', 'MEMORY.md');
362
+ let targetPath = '';
363
+ let content = '';
364
+ for (const p of [memoryPath, altMemoryPath]) {
365
+ if (fs.existsSync(p)) {
366
+ content = fs.readFileSync(p, 'utf-8');
367
+ targetPath = p;
368
+ break;
369
+ }
370
+ }
371
+ // Also compact conversation memory from SQLite if available
372
+ const memoryJsonPath = path.join(path.dirname(this.knowledgeDir), 'memory.json');
373
+ let conversationMemory = '';
374
+ if (fs.existsSync(memoryJsonPath)) {
375
+ try {
376
+ const data = JSON.parse(fs.readFileSync(memoryJsonPath, 'utf-8'));
377
+ // Extract conversation entries for compaction
378
+ const convEntries = Object.entries(data)
379
+ .filter(([k]) => k.startsWith('conversation:'))
380
+ .map(([, v]) => {
381
+ if (Array.isArray(v)) {
382
+ return v.map((m) => `${m.role}: ${m.content?.substring(0, 100)}`).join('\n');
383
+ }
384
+ return String(v).substring(0, 200);
385
+ });
386
+ if (convEntries.length > 0) {
387
+ conversationMemory = convEntries.join('\n---\n');
388
+ }
389
+ }
390
+ catch { /* ok */ }
391
+ }
392
+ // Need at least some content to compact
393
+ const fullContent = [content, conversationMemory].filter(Boolean).join('\n\n---\n\n');
394
+ if (fullContent.length < 500)
395
+ return false; // Too short to compact
396
+ // Only compact if content is getting large (>2KB)
397
+ if (fullContent.length < 2000)
398
+ return false;
399
+ const prompt = MEMORY_COMPACT_PROMPT.replace('{MEMORY}', fullContent.substring(0, 4000));
400
+ const refined = await this.callLocal(prompt);
401
+ if (!refined || refined.length < 100)
402
+ return false;
403
+ // Safety: don't overwrite if refined is much larger (LLM hallucinated)
404
+ if (refined.length > fullContent.length * 0.8)
405
+ return false;
406
+ // Write back refined memory
407
+ if (targetPath) {
408
+ // Backup original
409
+ const backupPath = targetPath + '.bak';
410
+ fs.copyFileSync(targetPath, backupPath);
411
+ // Write refined
412
+ const header = `<!-- Auto-refined by OPC Evolve Engine at ${new Date().toISOString()} -->\n<!-- Original backed up to ${path.basename(backupPath)} -->\n\n`;
413
+ fs.writeFileSync(targetPath, header + refined);
414
+ }
415
+ // Save compaction stats
416
+ const statsPath = path.join(this.knowledgeDir, 'compaction-log.json');
417
+ let logs = [];
418
+ try {
419
+ logs = JSON.parse(fs.readFileSync(statsPath, 'utf-8'));
420
+ }
421
+ catch { /* ok */ }
422
+ logs.push({
423
+ timestamp: new Date().toISOString(),
424
+ originalSize: fullContent.length,
425
+ refinedSize: refined.length,
426
+ ratio: (refined.length / fullContent.length * 100).toFixed(1) + '%',
427
+ });
428
+ if (logs.length > 50)
429
+ logs = logs.slice(-50);
430
+ fs.writeFileSync(statsPath, JSON.stringify(logs, null, 2));
431
+ return true;
432
+ }
433
+ /** Called after each conversation turn */
434
+ onConversationTurn(messages) {
435
+ this.conversationCount++;
436
+ if (this.conversationCount >= (this.config.conversationThreshold || 10)) {
437
+ this.conversationCount = 0;
438
+ // Background evolve — don't await, fire and forget
439
+ this.evolve(messages).catch(() => { });
440
+ }
441
+ }
442
+ /** Start periodic evolve timer */
443
+ startPeriodicEvolve() {
444
+ if (this.timer)
445
+ return;
446
+ const interval = this.config.intervalMs || 6 * 60 * 60 * 1000;
447
+ this.timer = setInterval(() => {
448
+ this.evolve().catch(() => { });
449
+ }, interval);
450
+ }
451
+ /** Stop periodic evolve */
452
+ stopPeriodicEvolve() {
453
+ if (this.timer) {
454
+ clearInterval(this.timer);
455
+ this.timer = null;
456
+ }
457
+ }
458
+ /** Get stats for all tiers */
459
+ getStats() {
460
+ return {
461
+ workstation: this.loadPages('workstation').length,
462
+ job: this.loadPages('job').length,
463
+ industry: this.loadPages('industry').length,
464
+ lastEvolve: this.getLastEvolveTime(),
465
+ };
466
+ }
467
+ // ─── File I/O ────────────────────────────────────────────
468
+ savePage(page) {
469
+ const tierDir = path.join(this.knowledgeDir, page.tier);
470
+ fs.mkdirSync(tierDir, { recursive: true });
471
+ const filePath = path.join(tierDir, `${page.slug}.json`);
472
+ fs.writeFileSync(filePath, JSON.stringify(page, null, 2));
473
+ }
474
+ loadPages(tier) {
475
+ const tierDir = path.join(this.knowledgeDir, tier);
476
+ if (!fs.existsSync(tierDir))
477
+ return [];
478
+ return fs.readdirSync(tierDir)
479
+ .filter(f => f.endsWith('.json'))
480
+ .map(f => {
481
+ try {
482
+ return JSON.parse(fs.readFileSync(path.join(tierDir, f), 'utf-8'));
483
+ }
484
+ catch {
485
+ return null;
486
+ }
487
+ })
488
+ .filter((p) => p !== null);
489
+ }
490
+ deletePage(slug, tier) {
491
+ const filePath = path.join(this.knowledgeDir, tier, `${slug}.json`);
492
+ try {
493
+ fs.unlinkSync(filePath);
494
+ }
495
+ catch { /* ok */ }
496
+ }
497
+ saveEvolveLog(result) {
498
+ const logPath = path.join(this.knowledgeDir, 'evolve-log.json');
499
+ let logs = [];
500
+ try {
501
+ logs = JSON.parse(fs.readFileSync(logPath, 'utf-8'));
502
+ }
503
+ catch { /* ok */ }
504
+ logs.push({ ...result, timestamp: new Date().toISOString() });
505
+ // Keep last 100 entries
506
+ if (logs.length > 100)
507
+ logs = logs.slice(-100);
508
+ fs.writeFileSync(logPath, JSON.stringify(logs, null, 2));
509
+ }
510
+ getLastEvolveTime() {
511
+ const logPath = path.join(this.knowledgeDir, 'evolve-log.json');
512
+ try {
513
+ const logs = JSON.parse(fs.readFileSync(logPath, 'utf-8'));
514
+ return logs[logs.length - 1]?.timestamp;
515
+ }
516
+ catch {
517
+ return undefined;
518
+ }
519
+ }
520
+ slugify(text) {
521
+ return text
522
+ .toLowerCase()
523
+ .replace(/[^a-z0-9\u4e00-\u9fff]+/g, '-')
524
+ .replace(/^-|-$/g, '')
525
+ .substring(0, 60);
526
+ }
527
+ }
528
+ exports.KnowledgeEvolveEngine = KnowledgeEvolveEngine;
529
+ /**
530
+ * AutoEvolveScheduler — integrates with runtime
531
+ */
532
+ class AutoEvolveScheduler {
533
+ engine;
534
+ constructor(agentDir, config) {
535
+ this.engine = new KnowledgeEvolveEngine(agentDir, config);
536
+ }
537
+ async start() {
538
+ await this.engine.detectLocalModel();
539
+ this.engine.startPeriodicEvolve();
540
+ }
541
+ stop() {
542
+ this.engine.stopPeriodicEvolve();
543
+ }
544
+ getEngine() {
545
+ return this.engine;
546
+ }
547
+ }
548
+ exports.AutoEvolveScheduler = AutoEvolveScheduler;
549
+ //# sourceMappingURL=evolve-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evolve-engine.js","sourceRoot":"","sources":["../../src/memory/evolve-engine.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ export { ContextCompressor } from './context-compressor';
5
5
  export type { CompressorConfig, CompressResult } from './context-compressor';
6
6
  export { UserProfiler } from './user-profiler';
7
7
  export type { UserProfile } from './user-profiler';
8
+ export { SQLiteStore } from './sqlite-store';
9
+ export type { SQLiteStoreOptions } from './sqlite-store';
8
10
  export declare class InMemoryStore implements MemoryStore {
9
11
  private store;
10
12
  private conversations;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAChH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,qBAAa,aAAc,YAAW,WAAW;IAC/C,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,aAAa,CAAqC;IAEpD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAItD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAChH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,qBAAa,aAAc,YAAW,WAAW;IAC/C,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,aAAa,CAAqC;IAEpD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAItD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ/C"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InMemoryStore = exports.UserProfiler = exports.ContextCompressor = exports.KnowledgeEvolver = exports.BrainSeedLoader = void 0;
3
+ exports.InMemoryStore = exports.SQLiteStore = exports.UserProfiler = exports.ContextCompressor = exports.KnowledgeEvolver = exports.BrainSeedLoader = void 0;
4
4
  var seed_loader_1 = require("./seed-loader");
5
5
  Object.defineProperty(exports, "BrainSeedLoader", { enumerable: true, get: function () { return seed_loader_1.BrainSeedLoader; } });
6
6
  Object.defineProperty(exports, "KnowledgeEvolver", { enumerable: true, get: function () { return seed_loader_1.KnowledgeEvolver; } });
@@ -8,6 +8,8 @@ var context_compressor_1 = require("./context-compressor");
8
8
  Object.defineProperty(exports, "ContextCompressor", { enumerable: true, get: function () { return context_compressor_1.ContextCompressor; } });
9
9
  var user_profiler_1 = require("./user-profiler");
10
10
  Object.defineProperty(exports, "UserProfiler", { enumerable: true, get: function () { return user_profiler_1.UserProfiler; } });
11
+ var sqlite_store_1 = require("./sqlite-store");
12
+ Object.defineProperty(exports, "SQLiteStore", { enumerable: true, get: function () { return sqlite_store_1.SQLiteStore; } });
11
13
  class InMemoryStore {
12
14
  store = new Map();
13
15
  conversations = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":";;;AAEA,6CAAkE;AAAzD,8GAAA,eAAe,OAAA;AAAE,+GAAA,gBAAgB,OAAA;AAE1C,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAE1B,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAGrB,MAAa,aAAa;IAChB,KAAK,GAAyB,IAAI,GAAG,EAAE,CAAC;IACxC,aAAa,GAA2B,IAAI,GAAG,EAAE,CAAC;IAE1D,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAc;QACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,OAAgB;QAClD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAkB;QAC5B,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;CACF;AA/BD,sCA+BC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":";;;AAEA,6CAAkE;AAAzD,8GAAA,eAAe,OAAA;AAAE,+GAAA,gBAAgB,OAAA;AAE1C,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAE1B,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AAErB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAGpB,MAAa,aAAa;IAChB,KAAK,GAAyB,IAAI,GAAG,EAAE,CAAC;IACxC,aAAa,GAA2B,IAAI,GAAG,EAAE,CAAC;IAE1D,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAc;QACnC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,OAAgB;QAClD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAkB;QAC5B,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;CACF;AA/BD,sCA+BC"}
@@ -0,0 +1,40 @@
1
+ import type { Message, MemoryStore } from '../core/types';
2
+ export interface SQLiteStoreOptions {
3
+ /** Path to the .db file. Defaults to .opc/memory.db */
4
+ dbPath?: string;
5
+ /** Max messages per session before pruning oldest. Default 1000 */
6
+ maxMessagesPerSession?: number;
7
+ }
8
+ export declare class SQLiteStore implements MemoryStore {
9
+ private db;
10
+ private dbPath;
11
+ private maxMessages;
12
+ private kvCache;
13
+ private ready;
14
+ constructor(options?: SQLiteStoreOptions);
15
+ private init;
16
+ private save;
17
+ get(key: string): Promise<unknown>;
18
+ set(key: string, value: unknown): Promise<void>;
19
+ getConversation(sessionId: string): Promise<Message[]>;
20
+ addMessage(sessionId: string, message: Message): Promise<void>;
21
+ clear(sessionId?: string): Promise<void>;
22
+ /**
23
+ * Full-text search across all conversations.
24
+ * Returns matching messages ranked by relevance.
25
+ */
26
+ search(query: string, limit?: number): Promise<Message[]>;
27
+ /**
28
+ * Get conversation stats.
29
+ */
30
+ stats(): Promise<{
31
+ totalMessages: number;
32
+ sessions: number;
33
+ dbSizeKB: number;
34
+ }>;
35
+ /**
36
+ * Close the database (for graceful shutdown).
37
+ */
38
+ close(): Promise<void>;
39
+ }
40
+ //# sourceMappingURL=sqlite-store.d.ts.map