0xkobold 0.7.2 → 0.8.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 (252) hide show
  1. package/HEARTBEAT.md +239 -0
  2. package/IDENTITY.md +12 -0
  3. package/README.md +138 -4
  4. package/SOUL.md +21 -0
  5. package/dist/package.json +10 -5
  6. package/dist/src/agent/bootstrap-loader.js +295 -66
  7. package/dist/src/agent/bootstrap-loader.js.map +1 -1
  8. package/dist/src/agent/context-pruning.js +10 -5
  9. package/dist/src/agent/context-pruning.js.map +1 -1
  10. package/dist/src/agent/embedded-runner.js +29 -15
  11. package/dist/src/agent/embedded-runner.js.map +1 -1
  12. package/dist/src/agent/index.js +5 -2
  13. package/dist/src/agent/index.js.map +1 -1
  14. package/dist/src/agent/system-prompt.js +167 -20
  15. package/dist/src/agent/system-prompt.js.map +1 -1
  16. package/dist/src/agent/tools/spawn-agent.js +72 -5
  17. package/dist/src/agent/tools/spawn-agent.js.map +1 -1
  18. package/dist/src/channels/slack/webhook.js +2 -2
  19. package/dist/src/channels/slack/webhook.js.map +1 -1
  20. package/dist/src/channels/telegram/bot.js +4 -4
  21. package/dist/src/channels/telegram/bot.js.map +1 -1
  22. package/dist/src/channels/whatsapp/integration.js +4 -4
  23. package/dist/src/channels/whatsapp/integration.js.map +1 -1
  24. package/dist/src/cli/commands/gateway.js +9 -10
  25. package/dist/src/cli/commands/gateway.js.map +1 -1
  26. package/dist/src/cli/commands/init.js +90 -0
  27. package/dist/src/cli/commands/init.js.map +1 -1
  28. package/dist/src/cli/commands/setup.js +53 -0
  29. package/dist/src/cli/commands/setup.js.map +1 -1
  30. package/dist/src/cli/index.js +0 -0
  31. package/dist/src/config/unified-config.js +5 -0
  32. package/dist/src/config/unified-config.js.map +1 -1
  33. package/dist/src/cron/index.js +2 -0
  34. package/dist/src/cron/index.js.map +1 -1
  35. package/dist/src/cron/nl-parser.js +522 -0
  36. package/dist/src/cron/nl-parser.js.map +1 -0
  37. package/dist/src/cron/runner.js +6 -31
  38. package/dist/src/cron/runner.js.map +1 -1
  39. package/dist/src/event-bus/index.js.map +1 -1
  40. package/dist/src/extensions/core/agent-orchestrator-extension.js +200 -148
  41. package/dist/src/extensions/core/agent-orchestrator-extension.js.map +1 -1
  42. package/dist/src/extensions/core/diagnostics-extension.js +93 -56
  43. package/dist/src/extensions/core/diagnostics-extension.js.map +1 -1
  44. package/dist/src/extensions/core/draconic-safety-extension.js +256 -3
  45. package/dist/src/extensions/core/draconic-safety-extension.js.map +1 -1
  46. package/dist/src/extensions/core/heartbeat-extension.js +416 -150
  47. package/dist/src/extensions/core/heartbeat-extension.js.map +1 -1
  48. package/dist/src/extensions/core/{generative-agents-extension.js → learning-extension.js} +90 -128
  49. package/dist/src/extensions/core/learning-extension.js.map +1 -0
  50. package/dist/src/extensions/core/perennial-memory-extension.js +884 -87
  51. package/dist/src/extensions/core/perennial-memory-extension.js.map +1 -1
  52. package/dist/src/extensions/core/routed-ollama-extension.js +345 -0
  53. package/dist/src/extensions/core/routed-ollama-extension.js.map +1 -0
  54. package/dist/src/extensions/core/task-manager-extension.js +25 -2
  55. package/dist/src/extensions/core/task-manager-extension.js.map +1 -1
  56. package/dist/src/extensions/core/websearch-enhanced-extension.js +81 -23
  57. package/dist/src/extensions/core/websearch-enhanced-extension.js.map +1 -1
  58. package/dist/src/extensions/core/workspace-footer-extension.js +40 -63
  59. package/dist/src/extensions/core/workspace-footer-extension.js.map +1 -1
  60. package/dist/src/extensions/loader.js +5 -1
  61. package/dist/src/extensions/loader.js.map +1 -1
  62. package/dist/src/gateway/gateway-server.js +74 -3
  63. package/dist/src/gateway/gateway-server.js.map +1 -1
  64. package/dist/src/gateway/index.js +2 -2
  65. package/dist/src/gateway/index.js.map +1 -1
  66. package/dist/src/gateway/methods/agent.js +1 -1
  67. package/dist/src/gateway/methods/agent.js.map +1 -1
  68. package/dist/src/gateway/methods/index.js +4 -0
  69. package/dist/src/gateway/methods/index.js.map +1 -1
  70. package/dist/src/gateway/methods/node.js +261 -0
  71. package/dist/src/gateway/methods/node.js.map +1 -0
  72. package/dist/src/gateway/queue-modes.js +356 -0
  73. package/dist/src/gateway/queue-modes.js.map +1 -0
  74. package/dist/src/index.js +47 -6
  75. package/dist/src/index.js.map +1 -1
  76. package/dist/src/llm/community-analytics.js +569 -0
  77. package/dist/src/llm/community-analytics.js.map +1 -0
  78. package/dist/src/llm/index.js +28 -4
  79. package/dist/src/llm/index.js.map +1 -1
  80. package/dist/src/llm/model-discovery.js +335 -0
  81. package/dist/src/llm/model-discovery.js.map +1 -0
  82. package/dist/src/llm/model-popularity.js +566 -0
  83. package/dist/src/llm/model-popularity.js.map +1 -0
  84. package/dist/src/llm/model-scoring-db.js +553 -0
  85. package/dist/src/llm/model-scoring-db.js.map +1 -0
  86. package/dist/src/llm/multi-provider.js +258 -0
  87. package/dist/src/llm/multi-provider.js.map +1 -0
  88. package/dist/src/llm/ollama.js +133 -187
  89. package/dist/src/llm/ollama.js.map +1 -1
  90. package/dist/src/llm/router-commands.js +773 -0
  91. package/dist/src/llm/router-commands.js.map +1 -0
  92. package/dist/src/llm/router-core.js +600 -0
  93. package/dist/src/llm/router-core.js.map +1 -0
  94. package/dist/src/memory/checkpoint-manager.js +278 -0
  95. package/dist/src/memory/checkpoint-manager.js.map +1 -0
  96. package/dist/src/memory/conflict-detector.js +279 -0
  97. package/dist/src/memory/conflict-detector.js.map +1 -0
  98. package/dist/src/memory/context-graph.js +360 -0
  99. package/dist/src/memory/context-graph.js.map +1 -0
  100. package/dist/src/memory/dialectic/benchmark-cli.js +200 -0
  101. package/dist/src/memory/dialectic/benchmark-cli.js.map +1 -0
  102. package/dist/src/memory/dialectic/debug-reasoning.js +37 -0
  103. package/dist/src/memory/dialectic/debug-reasoning.js.map +1 -0
  104. package/dist/src/memory/dialectic/index.js +135 -0
  105. package/dist/src/memory/dialectic/index.js.map +1 -0
  106. package/dist/src/memory/dialectic/nudges.js +380 -0
  107. package/dist/src/memory/dialectic/nudges.js.map +1 -0
  108. package/dist/src/memory/dialectic/reasoning-engine.js +607 -0
  109. package/dist/src/memory/dialectic/reasoning-engine.js.map +1 -0
  110. package/dist/src/memory/dialectic/reasoning.js +390 -0
  111. package/dist/src/memory/dialectic/reasoning.js.map +1 -0
  112. package/dist/src/memory/dialectic/skill-creation.js +481 -0
  113. package/dist/src/memory/dialectic/skill-creation.js.map +1 -0
  114. package/dist/src/memory/dialectic/store.js +663 -0
  115. package/dist/src/memory/dialectic/store.js.map +1 -0
  116. package/dist/src/memory/dialectic/types.js +11 -0
  117. package/dist/src/memory/dialectic/types.js.map +1 -0
  118. package/dist/src/memory/index.js +24 -2
  119. package/dist/src/memory/index.js.map +1 -1
  120. package/dist/src/memory/memory-decay.js +350 -0
  121. package/dist/src/memory/memory-decay.js.map +1 -0
  122. package/dist/src/memory/memory-integration.js +5 -5
  123. package/dist/src/memory/memory-integration.js.map +1 -1
  124. package/dist/src/memory/migrate-memory-stream.js +97 -0
  125. package/dist/src/memory/migrate-memory-stream.js.map +1 -0
  126. package/dist/src/memory/session-memory-bridge.js +49 -5
  127. package/dist/src/memory/session-memory-bridge.js.map +1 -1
  128. package/dist/src/memory/session-store.js +123 -0
  129. package/dist/src/memory/session-store.js.map +1 -1
  130. package/dist/src/memory/smart-write-rules.js +164 -0
  131. package/dist/src/memory/smart-write-rules.js.map +1 -0
  132. package/dist/src/memory/tiered-memory.js +436 -0
  133. package/dist/src/memory/tiered-memory.js.map +1 -0
  134. package/dist/src/memory/types.js +6 -0
  135. package/dist/src/memory/types.js.map +1 -0
  136. package/dist/src/memory/verify-migration.js +99 -0
  137. package/dist/src/memory/verify-migration.js.map +1 -0
  138. package/dist/src/pi-config.js +11 -9
  139. package/dist/src/pi-config.js.map +1 -1
  140. package/dist/src/skills/conditional-skills.js +464 -0
  141. package/dist/src/skills/conditional-skills.js.map +1 -0
  142. package/dist/src/skills/index.js +5 -0
  143. package/dist/src/skills/index.js.map +1 -1
  144. package/dist/src/skills/loader.js +56 -0
  145. package/dist/src/skills/loader.js.map +1 -1
  146. package/dist/src/skills/skill-manage.js +417 -0
  147. package/dist/src/skills/skill-manage.js.map +1 -0
  148. package/dist/src/tui/commands/orchestration-commands.js +62 -0
  149. package/dist/src/tui/commands/orchestration-commands.js.map +1 -1
  150. package/package.json +10 -5
  151. package/skills/model-router-test.ts +65 -0
  152. package/dist/src/extensions/core/auto-security-scan-extension.js +0 -41
  153. package/dist/src/extensions/core/auto-security-scan-extension.js.map +0 -1
  154. package/dist/src/extensions/core/cloudflare-browser-extension.js +0 -389
  155. package/dist/src/extensions/core/cloudflare-browser-extension.js.map +0 -1
  156. package/dist/src/extensions/core/compaction-safeguard.js +0 -223
  157. package/dist/src/extensions/core/compaction-safeguard.js.map +0 -1
  158. package/dist/src/extensions/core/generative-agents-extension.js.map +0 -1
  159. package/dist/src/extensions/core/obsidian-bridge-extension.js +0 -488
  160. package/dist/src/extensions/core/obsidian-bridge-extension.js.map +0 -1
  161. package/dist/src/llm/router.js +0 -145
  162. package/dist/src/llm/router.js.map +0 -1
  163. package/skills/kobold-scan-skill/node_modules/.package-lock.json +0 -172
  164. package/skills/kobold-scan-skill/node_modules/ansi-styles/index.d.ts +0 -345
  165. package/skills/kobold-scan-skill/node_modules/ansi-styles/index.js +0 -163
  166. package/skills/kobold-scan-skill/node_modules/ansi-styles/license +0 -9
  167. package/skills/kobold-scan-skill/node_modules/ansi-styles/package.json +0 -56
  168. package/skills/kobold-scan-skill/node_modules/ansi-styles/readme.md +0 -152
  169. package/skills/kobold-scan-skill/node_modules/balanced-match/.github/FUNDING.yml +0 -2
  170. package/skills/kobold-scan-skill/node_modules/balanced-match/LICENSE.md +0 -21
  171. package/skills/kobold-scan-skill/node_modules/balanced-match/README.md +0 -97
  172. package/skills/kobold-scan-skill/node_modules/balanced-match/index.js +0 -62
  173. package/skills/kobold-scan-skill/node_modules/balanced-match/package.json +0 -48
  174. package/skills/kobold-scan-skill/node_modules/brace-expansion/.github/FUNDING.yml +0 -2
  175. package/skills/kobold-scan-skill/node_modules/brace-expansion/LICENSE +0 -21
  176. package/skills/kobold-scan-skill/node_modules/brace-expansion/README.md +0 -135
  177. package/skills/kobold-scan-skill/node_modules/brace-expansion/index.js +0 -203
  178. package/skills/kobold-scan-skill/node_modules/brace-expansion/package.json +0 -49
  179. package/skills/kobold-scan-skill/node_modules/chalk/index.d.ts +0 -415
  180. package/skills/kobold-scan-skill/node_modules/chalk/license +0 -9
  181. package/skills/kobold-scan-skill/node_modules/chalk/package.json +0 -68
  182. package/skills/kobold-scan-skill/node_modules/chalk/readme.md +0 -341
  183. package/skills/kobold-scan-skill/node_modules/chalk/source/index.js +0 -229
  184. package/skills/kobold-scan-skill/node_modules/chalk/source/templates.js +0 -134
  185. package/skills/kobold-scan-skill/node_modules/chalk/source/util.js +0 -39
  186. package/skills/kobold-scan-skill/node_modules/color-convert/CHANGELOG.md +0 -54
  187. package/skills/kobold-scan-skill/node_modules/color-convert/LICENSE +0 -21
  188. package/skills/kobold-scan-skill/node_modules/color-convert/README.md +0 -68
  189. package/skills/kobold-scan-skill/node_modules/color-convert/conversions.js +0 -839
  190. package/skills/kobold-scan-skill/node_modules/color-convert/index.js +0 -81
  191. package/skills/kobold-scan-skill/node_modules/color-convert/package.json +0 -48
  192. package/skills/kobold-scan-skill/node_modules/color-convert/route.js +0 -97
  193. package/skills/kobold-scan-skill/node_modules/color-name/LICENSE +0 -8
  194. package/skills/kobold-scan-skill/node_modules/color-name/README.md +0 -11
  195. package/skills/kobold-scan-skill/node_modules/color-name/index.js +0 -152
  196. package/skills/kobold-scan-skill/node_modules/color-name/package.json +0 -28
  197. package/skills/kobold-scan-skill/node_modules/commander/LICENSE +0 -22
  198. package/skills/kobold-scan-skill/node_modules/commander/Readme.md +0 -1129
  199. package/skills/kobold-scan-skill/node_modules/commander/esm.mjs +0 -16
  200. package/skills/kobold-scan-skill/node_modules/commander/index.js +0 -27
  201. package/skills/kobold-scan-skill/node_modules/commander/lib/argument.js +0 -147
  202. package/skills/kobold-scan-skill/node_modules/commander/lib/command.js +0 -2179
  203. package/skills/kobold-scan-skill/node_modules/commander/lib/error.js +0 -45
  204. package/skills/kobold-scan-skill/node_modules/commander/lib/help.js +0 -461
  205. package/skills/kobold-scan-skill/node_modules/commander/lib/option.js +0 -326
  206. package/skills/kobold-scan-skill/node_modules/commander/lib/suggestSimilar.js +0 -100
  207. package/skills/kobold-scan-skill/node_modules/commander/package-support.json +0 -16
  208. package/skills/kobold-scan-skill/node_modules/commander/package.json +0 -80
  209. package/skills/kobold-scan-skill/node_modules/commander/typings/index.d.ts +0 -891
  210. package/skills/kobold-scan-skill/node_modules/fs.realpath/LICENSE +0 -43
  211. package/skills/kobold-scan-skill/node_modules/fs.realpath/README.md +0 -33
  212. package/skills/kobold-scan-skill/node_modules/fs.realpath/index.js +0 -66
  213. package/skills/kobold-scan-skill/node_modules/fs.realpath/old.js +0 -303
  214. package/skills/kobold-scan-skill/node_modules/fs.realpath/package.json +0 -26
  215. package/skills/kobold-scan-skill/node_modules/glob/LICENSE +0 -15
  216. package/skills/kobold-scan-skill/node_modules/glob/README.md +0 -399
  217. package/skills/kobold-scan-skill/node_modules/glob/common.js +0 -244
  218. package/skills/kobold-scan-skill/node_modules/glob/glob.js +0 -790
  219. package/skills/kobold-scan-skill/node_modules/glob/package.json +0 -55
  220. package/skills/kobold-scan-skill/node_modules/glob/sync.js +0 -486
  221. package/skills/kobold-scan-skill/node_modules/has-flag/index.d.ts +0 -39
  222. package/skills/kobold-scan-skill/node_modules/has-flag/index.js +0 -8
  223. package/skills/kobold-scan-skill/node_modules/has-flag/license +0 -9
  224. package/skills/kobold-scan-skill/node_modules/has-flag/package.json +0 -46
  225. package/skills/kobold-scan-skill/node_modules/has-flag/readme.md +0 -89
  226. package/skills/kobold-scan-skill/node_modules/inflight/LICENSE +0 -15
  227. package/skills/kobold-scan-skill/node_modules/inflight/README.md +0 -37
  228. package/skills/kobold-scan-skill/node_modules/inflight/inflight.js +0 -54
  229. package/skills/kobold-scan-skill/node_modules/inflight/package.json +0 -29
  230. package/skills/kobold-scan-skill/node_modules/inherits/LICENSE +0 -16
  231. package/skills/kobold-scan-skill/node_modules/inherits/README.md +0 -42
  232. package/skills/kobold-scan-skill/node_modules/inherits/inherits.js +0 -9
  233. package/skills/kobold-scan-skill/node_modules/inherits/inherits_browser.js +0 -27
  234. package/skills/kobold-scan-skill/node_modules/inherits/package.json +0 -29
  235. package/skills/kobold-scan-skill/node_modules/minimatch/LICENSE +0 -15
  236. package/skills/kobold-scan-skill/node_modules/minimatch/README.md +0 -259
  237. package/skills/kobold-scan-skill/node_modules/minimatch/lib/path.js +0 -4
  238. package/skills/kobold-scan-skill/node_modules/minimatch/minimatch.js +0 -944
  239. package/skills/kobold-scan-skill/node_modules/minimatch/package.json +0 -35
  240. package/skills/kobold-scan-skill/node_modules/once/LICENSE +0 -15
  241. package/skills/kobold-scan-skill/node_modules/once/README.md +0 -79
  242. package/skills/kobold-scan-skill/node_modules/once/once.js +0 -42
  243. package/skills/kobold-scan-skill/node_modules/once/package.json +0 -33
  244. package/skills/kobold-scan-skill/node_modules/supports-color/browser.js +0 -5
  245. package/skills/kobold-scan-skill/node_modules/supports-color/index.js +0 -135
  246. package/skills/kobold-scan-skill/node_modules/supports-color/license +0 -9
  247. package/skills/kobold-scan-skill/node_modules/supports-color/package.json +0 -53
  248. package/skills/kobold-scan-skill/node_modules/supports-color/readme.md +0 -76
  249. package/skills/kobold-scan-skill/node_modules/wrappy/LICENSE +0 -15
  250. package/skills/kobold-scan-skill/node_modules/wrappy/README.md +0 -36
  251. package/skills/kobold-scan-skill/node_modules/wrappy/package.json +0 -29
  252. package/skills/kobold-scan-skill/node_modules/wrappy/wrappy.js +0 -33
@@ -0,0 +1,360 @@
1
+ /**
2
+ * Context Graph Memory
3
+ *
4
+ * Hybrid: Vector for discovery + Graph for precision
5
+ * Best for: CRM, Research, ERC-8004 agent identity
6
+ *
7
+ * Nodes: Agents, concepts, entities
8
+ * Edges: Relationships (trusts, attests, has_skill, etc.)
9
+ */
10
+ const DEFAULT_GRAPH_CONFIG = {
11
+ vectorSearchK: 10,
12
+ edgeTraversalDepth: 2,
13
+ minEdgeWeight: 0.3,
14
+ maxResults: 20,
15
+ };
16
+ export class ContextGraph {
17
+ db;
18
+ config;
19
+ constructor(db, config) {
20
+ this.db = db;
21
+ this.config = { ...DEFAULT_GRAPH_CONFIG, ...config };
22
+ }
23
+ /**
24
+ * Initialize graph schema
25
+ */
26
+ initSchema() {
27
+ // Nodes
28
+ this.db.run(`
29
+ CREATE TABLE IF NOT EXISTS graph_nodes (
30
+ id TEXT PRIMARY KEY,
31
+ type TEXT NOT NULL,
32
+ label TEXT NOT NULL,
33
+ properties TEXT, -- JSON
34
+ embedding BLOB, -- Serialized float array
35
+ created_at TEXT NOT NULL,
36
+ access_count INTEGER DEFAULT 0
37
+ )
38
+ `);
39
+ // Edges
40
+ this.db.run(`
41
+ CREATE TABLE IF NOT EXISTS graph_edges (
42
+ id TEXT PRIMARY KEY,
43
+ source_id TEXT NOT NULL,
44
+ target_id TEXT NOT NULL,
45
+ relation TEXT NOT NULL,
46
+ properties TEXT, -- JSON
47
+ weight REAL DEFAULT 1.0,
48
+ created_at TEXT NOT NULL,
49
+ last_accessed TEXT,
50
+ FOREIGN KEY (source_id) REFERENCES graph_nodes(id),
51
+ FOREIGN KEY (target_id) REFERENCES graph_nodes(id)
52
+ )
53
+ `);
54
+ // Full-text search for nodes
55
+ this.db.run(`
56
+ CREATE VIRTUAL TABLE IF NOT EXISTS graph_nodes_fts
57
+ USING fts5(id, label, content_rowid=rowid)
58
+ `);
59
+ // Triggers for FTS sync
60
+ this.db.run(`
61
+ CREATE TRIGGER IF NOT EXISTS graph_nodes_insert_fts
62
+ AFTER INSERT ON graph_nodes BEGIN
63
+ INSERT INTO graph_nodes_fts(rowid, label) VALUES (new.rowid, new.label);
64
+ END
65
+ `);
66
+ this.db.run(`
67
+ CREATE TRIGGER IF NOT EXISTS graph_nodes_delete_fts
68
+ AFTER DELETE ON graph_nodes BEGIN
69
+ DELETE FROM graph_nodes_fts WHERE rowid = old.rowid;
70
+ END
71
+ `);
72
+ // Indexes
73
+ this.db.run(`CREATE INDEX IF NOT EXISTS idx_edges_source ON graph_edges(source_id)`);
74
+ this.db.run(`CREATE INDEX IF NOT EXISTS idx_edges_target ON graph_edges(target_id)`);
75
+ this.db.run(`CREATE INDEX IF NOT EXISTS idx_edges_relation ON graph_edges(relation)`);
76
+ this.db.run(`CREATE INDEX IF NOT EXISTS idx_edges_weight ON graph_edges(weight)`);
77
+ console.log("[ContextGraph] Schema initialized");
78
+ }
79
+ /**
80
+ * Add node
81
+ */
82
+ addNode(type, label, properties = {}, embedding) {
83
+ const id = `node_${Date.now()}_${Math.random().toString(36).slice(2, 6)}`;
84
+ this.db.query(`
85
+ INSERT INTO graph_nodes (id, type, label, properties, embedding, created_at)
86
+ VALUES (?, ?, ?, ?, ?, ?)
87
+ `).run(id, type, label, JSON.stringify(properties), embedding ? Buffer.from(new Float32Array(embedding).buffer) : null, new Date().toISOString());
88
+ return id;
89
+ }
90
+ /**
91
+ * Add edge
92
+ */
93
+ addEdge(sourceId, targetId, relation, properties = {}, weight = 1.0) {
94
+ const id = `edge_${Date.now()}_${Math.random().toString(36).slice(2, 6)}`;
95
+ this.db.query(`
96
+ INSERT INTO graph_edges (id, source_id, target_id, relation, properties, weight, created_at, last_accessed)
97
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
98
+ `).run(id, sourceId, targetId, relation, JSON.stringify(properties), weight, new Date().toISOString(), new Date().toISOString());
99
+ return id;
100
+ }
101
+ /**
102
+ * Hybrid search: Vector + Graph traversal
103
+ */
104
+ search(query, queryEmbedding, options = {}) {
105
+ const results = new Map();
106
+ // Stage 1: Vector search (discovery)
107
+ const vectorMatches = this.vectorSearch(queryEmbedding, options.nodeTypes);
108
+ for (const match of vectorMatches) {
109
+ const node = this.getNode(match.nodeId);
110
+ if (node) {
111
+ results.set(match.nodeId, {
112
+ node,
113
+ similarity: match.similarity,
114
+ connectedNodes: [],
115
+ });
116
+ }
117
+ }
118
+ // Stage 2: Text search (backup)
119
+ const textMatches = this.textSearch(query);
120
+ for (const match of textMatches) {
121
+ if (!results.has(match.id)) {
122
+ const node = this.getNode(match.id);
123
+ if (node) {
124
+ results.set(match.id, {
125
+ node,
126
+ similarity: 0.7, // Base score for text match
127
+ connectedNodes: [],
128
+ });
129
+ }
130
+ }
131
+ }
132
+ // Stage 3: Graph traversal (precision)
133
+ const depth = options.depth || this.config.edgeTraversalDepth;
134
+ for (const [nodeId, result] of results) {
135
+ // Traverse edges
136
+ const connected = this.traverseEdges(nodeId, depth, options.relations);
137
+ result.connectedNodes = connected.filter(c => results.has(c.node.id) || // Prioritize nodes already in results
138
+ c.weight >= this.config.minEdgeWeight).slice(0, 5); // Top 5 connections
139
+ // Update access count
140
+ this.db.query(`UPDATE graph_nodes SET access_count = access_count + 1 WHERE id = ?`).run(nodeId);
141
+ }
142
+ // Sort by similarity + connectedness
143
+ const sorted = Array.from(results.values()).sort((a, b) => {
144
+ const connectedBonusA = a.connectedNodes.length * 0.1;
145
+ const connectedBonusB = b.connectedNodes.length * 0.1;
146
+ return (b.similarity + connectedBonusB) - (a.similarity + connectedBonusA);
147
+ });
148
+ return sorted.slice(0, this.config.maxResults);
149
+ }
150
+ /**
151
+ * Get path between two nodes
152
+ */
153
+ getPath(sourceId, targetId, maxDepth = 5) {
154
+ // BFS for shortest path
155
+ const visited = new Set();
156
+ const queue = [];
157
+ const source = this.getNode(sourceId);
158
+ if (!source)
159
+ return null;
160
+ queue.push({ nodeId: sourceId, path: [], weight: 1.0 });
161
+ visited.add(sourceId);
162
+ while (queue.length > 0) {
163
+ const { nodeId, path, weight } = queue.shift();
164
+ if (nodeId === targetId) {
165
+ return { path, totalWeight: weight };
166
+ }
167
+ if (path.length >= maxDepth)
168
+ continue;
169
+ // Get outgoing edges
170
+ const edges = this.db.query(`
171
+ SELECT * FROM graph_edges WHERE source_id = ? ORDER BY weight DESC
172
+ `).all(nodeId);
173
+ for (const edge of edges) {
174
+ if (visited.has(edge.target_id))
175
+ continue;
176
+ visited.add(edge.target_id);
177
+ const target = this.getNode(edge.target_id);
178
+ if (target) {
179
+ queue.push({
180
+ nodeId: edge.target_id,
181
+ path: [...path, { node: target, edge: this.rowToEdge(edge) }],
182
+ weight: weight * (edge.weight || 1.0),
183
+ });
184
+ }
185
+ }
186
+ }
187
+ return null;
188
+ }
189
+ /**
190
+ * ERC-8004: Agent identity and trust
191
+ */
192
+ registerAgentIdentity(agentId, attributes) {
193
+ // Check if exists
194
+ const existing = this.db.query(`SELECT id FROM graph_nodes WHERE properties LIKE ?`).get(`%"agentId":"${agentId}"%`);
195
+ if (existing) {
196
+ // Update
197
+ this.db.query(`UPDATE graph_nodes SET properties = ? WHERE id = ?`).run(JSON.stringify({ agentId, ...attributes }), existing.id);
198
+ return existing.id;
199
+ }
200
+ // Create new
201
+ return this.addNode("agent", `Agent ${agentId.slice(0, 8)}`, {
202
+ agentId,
203
+ ...attributes,
204
+ });
205
+ }
206
+ /**
207
+ * ERC-8004: Trust attestation
208
+ */
209
+ addTrustAttestation(sourceAgentId, targetAgentId, trustLevel, // 0-1
210
+ attestationId) {
211
+ // Find nodes
212
+ const source = this.findAgentNode(sourceAgentId);
213
+ const target = this.findAgentNode(targetAgentId);
214
+ if (!source || !target) {
215
+ throw new Error("Agent nodes not found");
216
+ }
217
+ return this.addEdge(source, target, "TRUSTS", {
218
+ trustLevel,
219
+ attestationId,
220
+ }, trustLevel);
221
+ }
222
+ /**
223
+ * ERC-8004: Skill attestation
224
+ */
225
+ addSkillAttestation(agentId, skillName, level, verifiedBy) {
226
+ // Find or create skill node
227
+ let skillNode = this.db.query(`SELECT id FROM graph_nodes WHERE type = 'skill' AND label = ?`).get(skillName);
228
+ if (!skillNode) {
229
+ skillNode = { id: this.addNode("skill", skillName, { category: "agent_skill" }) };
230
+ }
231
+ // Find agent
232
+ const agentNode = this.findAgentNode(agentId);
233
+ if (!agentNode) {
234
+ throw new Error(`Agent ${agentId} not found`);
235
+ }
236
+ // Add HAS_SKILL edge
237
+ const edgeId = this.addEdge(agentNode, skillNode.id, "HAS_SKILL", {
238
+ level,
239
+ verifiedBy,
240
+ }, level === "expert" ? 1.0 : level === "intermediate" ? 0.7 : 0.4);
241
+ return { nodeId: skillNode.id, edgeId };
242
+ }
243
+ /**
244
+ * Update edge weights based on access patterns
245
+ */
246
+ async reweightEdges() {
247
+ // Increase weight for frequently traversed edges
248
+ const edges = this.db.query(`
249
+ SELECT * FROM graph_edges WHERE last_accessed > datetime('now', '-7 days')
250
+ `).all();
251
+ for (const edge of edges) {
252
+ const newWeight = Math.min(1.0, edge.weight * 1.1); // 10% boost
253
+ this.db.query(`UPDATE graph_edges SET weight = ? WHERE id = ?`).run(newWeight, edge.id);
254
+ }
255
+ // Decay old edges
256
+ const oldEdges = this.db.query(`
257
+ SELECT * FROM graph_edges WHERE last_accessed < datetime('now', '-30 days')
258
+ `).all();
259
+ for (const edge of oldEdges) {
260
+ const newWeight = Math.max(0.1, edge.weight * 0.9); // 10% decay
261
+ this.db.query(`UPDATE graph_edges SET weight = ? WHERE id = ?`).run(newWeight, edge.id);
262
+ }
263
+ }
264
+ // Private helpers
265
+ vectorSearch(embedding, nodeTypes) {
266
+ const results = [];
267
+ // Get all nodes with embeddings (limit for performance)
268
+ const query = nodeTypes
269
+ ? `SELECT id, embedding FROM graph_nodes WHERE type IN (${nodeTypes.map(() => '?').join(',')}) AND embedding IS NOT NULL`
270
+ : `SELECT id, embedding FROM graph_nodes WHERE embedding IS NOT NULL`;
271
+ const params = nodeTypes ? [...nodeTypes] : [];
272
+ const rows = this.db.query(query).all(...params);
273
+ for (const row of rows) {
274
+ const nodeEmbedding = row.embedding
275
+ ? Array.from(new Float32Array(row.embedding.buffer || row.embedding))
276
+ : [];
277
+ const similarity = this.cosineSimilarity(embedding, nodeEmbedding);
278
+ if (similarity > 0.5) { // Threshold
279
+ results.push({ nodeId: row.id, similarity });
280
+ }
281
+ }
282
+ return results.sort((a, b) => b.similarity - a.similarity).slice(0, this.config.vectorSearchK);
283
+ }
284
+ textSearch(query) {
285
+ const rows = this.db.query(`
286
+ SELECT rowid, rank FROM graph_nodes_fts WHERE label MATCH ? LIMIT ?
287
+ `).all(query, this.config.vectorSearchK);
288
+ return rows.map(r => ({ id: r.rowid, score: r.rank }));
289
+ }
290
+ traverseEdges(nodeId, depth, relations) {
291
+ if (depth === 0)
292
+ return [];
293
+ const results = [];
294
+ const query = relations
295
+ ? `SELECT * FROM graph_edges WHERE source_id = ? AND relation IN (${relations.map(() => '?').join(',')})`
296
+ : `SELECT * FROM graph_edges WHERE source_id = ?`;
297
+ const params = relations ? [nodeId, ...relations] : [nodeId];
298
+ const edges = this.db.query(query).all(...params);
299
+ for (const edge of edges) {
300
+ const target = this.getNode(edge.target_id);
301
+ if (target) {
302
+ results.push({ node: target, relation: edge.relation, weight: edge.weight });
303
+ // Recursive traversal
304
+ if (depth > 1) {
305
+ const deeper = this.traverseEdges(edge.target_id, depth - 1, relations);
306
+ results.push(...deeper);
307
+ }
308
+ }
309
+ // Update last_accessed
310
+ this.db.query(`UPDATE graph_edges SET last_accessed = ? WHERE id = ?`)
311
+ .run(new Date().toISOString(), edge.id);
312
+ }
313
+ return results;
314
+ }
315
+ getNode(id) {
316
+ const row = this.db.query(`SELECT * FROM graph_nodes WHERE id = ?`).get(id);
317
+ if (!row)
318
+ return null;
319
+ return {
320
+ id: row.id,
321
+ type: row.type,
322
+ label: row.label,
323
+ properties: JSON.parse(row.properties || '{}'),
324
+ createdAt: row.created_at,
325
+ accessCount: row.access_count,
326
+ };
327
+ }
328
+ findAgentNode(agentId) {
329
+ const row = this.db.query(`
330
+ SELECT id FROM graph_nodes
331
+ WHERE type = 'agent' AND properties LIKE ?
332
+ `).get(`%"agentId":"${agentId}"%`);
333
+ return row?.id || null;
334
+ }
335
+ rowToEdge(row) {
336
+ return {
337
+ id: row.id,
338
+ sourceId: row.source_id,
339
+ targetId: row.target_id,
340
+ relation: row.relation,
341
+ properties: JSON.parse(row.properties || '{}'),
342
+ weight: row.weight,
343
+ createdAt: row.created_at,
344
+ lastAccessed: row.last_accessed,
345
+ };
346
+ }
347
+ cosineSimilarity(a, b) {
348
+ let dotProduct = 0;
349
+ let normA = 0;
350
+ let normB = 0;
351
+ for (let i = 0; i < a.length; i++) {
352
+ dotProduct += a[i] * b[i];
353
+ normA += a[i] * a[i];
354
+ normB += b[i] * b[i];
355
+ }
356
+ return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
357
+ }
358
+ }
359
+ export { DEFAULT_GRAPH_CONFIG };
360
+ //# sourceMappingURL=context-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-graph.js","sourceRoot":"","sources":["../../../src/memory/context-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,200 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * Dialectic Reasoning Benchmark CLI
4
+ *
5
+ * Run reasoning benchmarks to compare strategies and models.
6
+ *
7
+ * Usage:
8
+ * bun run src/memory/dialectic/benchmark-cli.ts
9
+ * bun run src/memory/dialectic/benchmark-cli.ts --strategy chain-of-thought
10
+ * bun run src/memory/dialectic/benchmark-cli.ts --model deepseek-r1:7b
11
+ * bun run src/memory/dialectic/benchmark-cli.ts --full
12
+ */
13
+ import { getDialecticStore, getDialecticReasoningEngine, setReasoningModel } from "./index.js";
14
+ const BENCHMARK_CASES = [
15
+ {
16
+ name: "Simple Preference",
17
+ observations: [
18
+ { content: "I prefer TypeScript over JavaScript", category: "preference" },
19
+ { content: "I use TypeScript for all new projects", category: "behavior" },
20
+ { content: "I think static typing reduces bugs", category: "statement" },
21
+ ],
22
+ expectedPreferences: [{ topic: "programming_language", preference: "TypeScript" }],
23
+ expectedGoals: [],
24
+ expectedContradictions: [],
25
+ },
26
+ {
27
+ name: "Contradictory Preferences",
28
+ observations: [
29
+ { content: "I love Python for data science", category: "preference" },
30
+ { content: "I think Python is too slow for production", category: "statement" },
31
+ { content: "I prefer Go for backend services", category: "preference" },
32
+ { content: "I use Python for all my prototypes", category: "behavior" },
33
+ ],
34
+ expectedPreferences: [
35
+ { topic: "data_science", preference: "Python" },
36
+ { topic: "backend", preference: "Go" },
37
+ ],
38
+ expectedGoals: [],
39
+ expectedContradictions: ["Python"],
40
+ },
41
+ {
42
+ name: "Goal Extraction",
43
+ observations: [
44
+ { content: "I want to build an AI agent", category: "goal" },
45
+ { content: "The agent should learn from conversations", category: "goal" },
46
+ { content: "I'm working on memory systems", category: "behavior" },
47
+ { content: "I value simplicity in architecture", category: "value" },
48
+ ],
49
+ expectedPreferences: [],
50
+ expectedGoals: ["AI agent", "learn", "memory"],
51
+ expectedContradictions: [],
52
+ },
53
+ {
54
+ name: "Complex User Profile",
55
+ observations: [
56
+ { content: "I prefer TypeScript for infrastructure", category: "preference" },
57
+ { content: "I like Python for data science", category: "preference" },
58
+ { content: "I'm building a multi-agent system", category: "goal" },
59
+ { content: "I want the agents to have memory", category: "goal" },
60
+ { content: "I dislike complex frameworks", category: "preference" },
61
+ { content: "I value clean code over clever code", category: "value" },
62
+ { content: "I use SQLite for single-user apps", category: "behavior" },
63
+ { content: "I prefer local over cloud services", category: "preference" },
64
+ ],
65
+ expectedPreferences: [
66
+ { topic: "infrastructure", preference: "TypeScript" },
67
+ { topic: "data_science", preference: "Python" },
68
+ ],
69
+ expectedGoals: ["multi-agent", "memory"],
70
+ expectedContradictions: [],
71
+ },
72
+ {
73
+ name: "Learning from Mistakes",
74
+ observations: [
75
+ { content: "I tried using PostgreSQL for embeddings", category: "behavior" },
76
+ { content: "It was overkill for a single user", category: "statement" },
77
+ { content: "I switched to SQLite with Ollama embeddings", category: "behavior" },
78
+ { content: "The performance is acceptable", category: "success" },
79
+ { content: "I learned that simpler is often better", category: "statement" },
80
+ ],
81
+ expectedPreferences: [{ topic: "database", preference: "SQLite" }],
82
+ expectedGoals: [],
83
+ expectedContradictions: [],
84
+ },
85
+ ];
86
+ const STRATEGIES = [
87
+ "dialectic",
88
+ "chain-of-thought",
89
+ "self-consistency",
90
+ "formal-logic",
91
+ "tree-of-thought",
92
+ ];
93
+ async function runCase(testCase, strategy, model) {
94
+ const store = getDialecticStore();
95
+ const peer = store.createPeer("user", `bench-${Date.now()}`);
96
+ // Add observations
97
+ for (const obs of testCase.observations) {
98
+ store.addObservation(peer.id, obs.content, obs.category, "message", `bench-${Date.now()}`);
99
+ }
100
+ // Run reasoning
101
+ const engine = getDialecticReasoningEngine({ strategy, model });
102
+ const start = Date.now();
103
+ const result = await engine.reason(peer.id);
104
+ const duration = Date.now() - start;
105
+ // Calculate accuracy
106
+ let prefMatches = 0;
107
+ for (const exp of testCase.expectedPreferences) {
108
+ // Check if preference contains the expected value
109
+ if (result.preferences.some(p => p.preference.toLowerCase().includes(exp.preference.toLowerCase()) ||
110
+ exp.preference.toLowerCase().includes(p.preference.toLowerCase().split(" over ")[0])))
111
+ prefMatches++;
112
+ }
113
+ let goalMatches = 0;
114
+ for (const exp of testCase.expectedGoals) {
115
+ if (result.goals.some(g => g.description.toLowerCase().includes(exp.toLowerCase())))
116
+ goalMatches++;
117
+ }
118
+ const totalExpected = testCase.expectedPreferences.length + testCase.expectedGoals.length;
119
+ const totalFound = prefMatches + goalMatches;
120
+ const accuracy = totalExpected > 0 ? totalFound / totalExpected : 0.5;
121
+ // Calculate synthesis quality based on confidence and presence
122
+ const synthesisQuality = result.synthesis
123
+ ? result.synthesis.confidence
124
+ : 0;
125
+ return {
126
+ strategy,
127
+ testCase: testCase.name,
128
+ duration,
129
+ accuracy,
130
+ synthesisQuality,
131
+ preferencesFound: result.preferences.length,
132
+ goalsFound: result.goals.length,
133
+ contradictionsFound: result.contradictions.length,
134
+ };
135
+ }
136
+ // ═════════════════════════════════════════════════════════════════
137
+ // CLI
138
+ // ═════════════════════════════════════════════════════════════════
139
+ async function main() {
140
+ const args = process.argv.slice(2);
141
+ let strategy = "all";
142
+ let model = "glm-5:cloud";
143
+ let full = false;
144
+ for (let i = 0; i < args.length; i++) {
145
+ if (args[i] === "--strategy" && args[i + 1]) {
146
+ strategy = args[i + 1];
147
+ i++;
148
+ }
149
+ else if (args[i] === "--model" && args[i + 1]) {
150
+ model = args[i + 1];
151
+ setReasoningModel(model);
152
+ i++;
153
+ }
154
+ else if (args[i] === "--full") {
155
+ full = true;
156
+ }
157
+ }
158
+ console.log("\n🧠 Dialectic Reasoning Benchmark\n");
159
+ console.log(`Model: ${model}`);
160
+ console.log(`Strategy: ${strategy}`);
161
+ console.log(`Full: ${full}`);
162
+ console.log("=".repeat(60));
163
+ const results = [];
164
+ const strategies = strategy === "all" ? STRATEGIES : [strategy];
165
+ const cases = full ? BENCHMARK_CASES : BENCHMARK_CASES.slice(0, 2);
166
+ for (const testCase of cases) {
167
+ console.log(`\n📊 ${testCase.name}`);
168
+ console.log("-".repeat(40));
169
+ for (const strat of strategies) {
170
+ try {
171
+ console.log(` Running ${strat}...`);
172
+ const result = await runCase(testCase, strat, model);
173
+ results.push(result);
174
+ console.log(` ✓ Duration: ${result.duration}ms`);
175
+ console.log(` ✓ Accuracy: ${(result.accuracy * 100).toFixed(1)}%`);
176
+ console.log(` ✓ Found: ${result.preferencesFound} prefs, ${result.goalsFound} goals, ${result.contradictionsFound} contradictions`);
177
+ }
178
+ catch (e) {
179
+ console.log(` ✗ Error: ${e}`);
180
+ }
181
+ }
182
+ }
183
+ // Summary
184
+ console.log("\n" + "=".repeat(60));
185
+ console.log("SUMMARY\n");
186
+ for (const strat of strategies) {
187
+ const stratResults = results.filter(r => r.strategy === strat);
188
+ if (stratResults.length === 0)
189
+ continue;
190
+ const avgAccuracy = stratResults.reduce((s, r) => s + r.accuracy, 0) / stratResults.length;
191
+ const avgDuration = stratResults.reduce((s, r) => s + r.duration, 0) / stratResults.length;
192
+ console.log(`${strat}:`);
193
+ console.log(` Average Accuracy: ${(avgAccuracy * 100).toFixed(1)}%`);
194
+ console.log(` Average Duration: ${avgDuration.toFixed(0)}ms`);
195
+ console.log(` Cases Run: ${stratResults.length}`);
196
+ }
197
+ console.log("\n✅ Benchmark complete\n");
198
+ }
199
+ main().catch(console.error);
200
+ //# sourceMappingURL=benchmark-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark-cli.js","sourceRoot":"","sources":["../../../../src/memory/dialectic/benchmark-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * Debug dialectic reasoning to see what the model returns
4
+ */
5
+ import { getDialecticStore, getDialecticReasoningEngine } from "./index.js";
6
+ async function main() {
7
+ console.log("\n🔍 Dialectic Reasoning Debug\n");
8
+ const store = getDialecticStore();
9
+ const peer = store.createPeer("user", `debug-${Date.now()}`);
10
+ // Simple test - need at least 3 observations
11
+ store.addObservation(peer.id, "I prefer TypeScript over JavaScript", "preference", "message", "1");
12
+ store.addObservation(peer.id, "I use TypeScript for all new projects", "behavior", "message", "2");
13
+ store.addObservation(peer.id, "I think static typing reduces bugs", "statement", "message", "3");
14
+ console.log("Observations:");
15
+ const obs = store.getObservations(peer.id);
16
+ obs.forEach(o => console.log(` [${o.category}] ${o.content}`));
17
+ console.log("\n🧠 Running dialectic reasoning with glm-5:cloud...\n");
18
+ try {
19
+ const engine = getDialecticReasoningEngine({ strategy: "dialectic", model: "glm-5:cloud" });
20
+ const result = await engine.reason(peer.id);
21
+ console.log("Results:");
22
+ console.log(` Preferences: ${result.preferences.length}`);
23
+ result.preferences.forEach(p => console.log(` - ${p.topic}: ${p.preference} (${(p.confidence * 100).toFixed(0)}%)`));
24
+ console.log(` Goals: ${result.goals.length}`);
25
+ result.goals.forEach(g => console.log(` - ${g.description} [${g.status}]`));
26
+ console.log(` Contradictions: ${result.contradictions.length}`);
27
+ result.contradictions.forEach(c => console.log(` - ${c.observationA} vs ${c.observationB}`));
28
+ console.log(` Synthesis:`);
29
+ console.log(` ${result.synthesis?.content || "None"}`);
30
+ console.log(` Reasoning Path: ${result.reasoningPath.join(" → ")}`);
31
+ }
32
+ catch (e) {
33
+ console.log(`❌ Error: ${e}`);
34
+ }
35
+ }
36
+ main().catch(console.error);
37
+ //# sourceMappingURL=debug-reasoning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-reasoning.js","sourceRoot":"","sources":["../../../../src/memory/dialectic/debug-reasoning.ts"],"names":[],"mappings":"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"}