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.
- package/HEARTBEAT.md +239 -0
- package/IDENTITY.md +12 -0
- package/README.md +138 -4
- package/SOUL.md +21 -0
- package/dist/package.json +10 -5
- package/dist/src/agent/bootstrap-loader.js +295 -66
- package/dist/src/agent/bootstrap-loader.js.map +1 -1
- package/dist/src/agent/context-pruning.js +10 -5
- package/dist/src/agent/context-pruning.js.map +1 -1
- package/dist/src/agent/embedded-runner.js +29 -15
- package/dist/src/agent/embedded-runner.js.map +1 -1
- package/dist/src/agent/index.js +5 -2
- package/dist/src/agent/index.js.map +1 -1
- package/dist/src/agent/system-prompt.js +167 -20
- package/dist/src/agent/system-prompt.js.map +1 -1
- package/dist/src/agent/tools/spawn-agent.js +72 -5
- package/dist/src/agent/tools/spawn-agent.js.map +1 -1
- package/dist/src/channels/slack/webhook.js +2 -2
- package/dist/src/channels/slack/webhook.js.map +1 -1
- package/dist/src/channels/telegram/bot.js +4 -4
- package/dist/src/channels/telegram/bot.js.map +1 -1
- package/dist/src/channels/whatsapp/integration.js +4 -4
- package/dist/src/channels/whatsapp/integration.js.map +1 -1
- package/dist/src/cli/commands/gateway.js +9 -10
- package/dist/src/cli/commands/gateway.js.map +1 -1
- package/dist/src/cli/commands/init.js +90 -0
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/setup.js +53 -0
- package/dist/src/cli/commands/setup.js.map +1 -1
- package/dist/src/cli/index.js +0 -0
- package/dist/src/config/unified-config.js +5 -0
- package/dist/src/config/unified-config.js.map +1 -1
- package/dist/src/cron/index.js +2 -0
- package/dist/src/cron/index.js.map +1 -1
- package/dist/src/cron/nl-parser.js +522 -0
- package/dist/src/cron/nl-parser.js.map +1 -0
- package/dist/src/cron/runner.js +6 -31
- package/dist/src/cron/runner.js.map +1 -1
- package/dist/src/event-bus/index.js.map +1 -1
- package/dist/src/extensions/core/agent-orchestrator-extension.js +200 -148
- package/dist/src/extensions/core/agent-orchestrator-extension.js.map +1 -1
- package/dist/src/extensions/core/diagnostics-extension.js +93 -56
- package/dist/src/extensions/core/diagnostics-extension.js.map +1 -1
- package/dist/src/extensions/core/draconic-safety-extension.js +256 -3
- package/dist/src/extensions/core/draconic-safety-extension.js.map +1 -1
- package/dist/src/extensions/core/heartbeat-extension.js +416 -150
- package/dist/src/extensions/core/heartbeat-extension.js.map +1 -1
- package/dist/src/extensions/core/{generative-agents-extension.js → learning-extension.js} +90 -128
- package/dist/src/extensions/core/learning-extension.js.map +1 -0
- package/dist/src/extensions/core/perennial-memory-extension.js +884 -87
- package/dist/src/extensions/core/perennial-memory-extension.js.map +1 -1
- package/dist/src/extensions/core/routed-ollama-extension.js +345 -0
- package/dist/src/extensions/core/routed-ollama-extension.js.map +1 -0
- package/dist/src/extensions/core/task-manager-extension.js +25 -2
- package/dist/src/extensions/core/task-manager-extension.js.map +1 -1
- package/dist/src/extensions/core/websearch-enhanced-extension.js +81 -23
- package/dist/src/extensions/core/websearch-enhanced-extension.js.map +1 -1
- package/dist/src/extensions/core/workspace-footer-extension.js +40 -63
- package/dist/src/extensions/core/workspace-footer-extension.js.map +1 -1
- package/dist/src/extensions/loader.js +5 -1
- package/dist/src/extensions/loader.js.map +1 -1
- package/dist/src/gateway/gateway-server.js +74 -3
- package/dist/src/gateway/gateway-server.js.map +1 -1
- package/dist/src/gateway/index.js +2 -2
- package/dist/src/gateway/index.js.map +1 -1
- package/dist/src/gateway/methods/agent.js +1 -1
- package/dist/src/gateway/methods/agent.js.map +1 -1
- package/dist/src/gateway/methods/index.js +4 -0
- package/dist/src/gateway/methods/index.js.map +1 -1
- package/dist/src/gateway/methods/node.js +261 -0
- package/dist/src/gateway/methods/node.js.map +1 -0
- package/dist/src/gateway/queue-modes.js +356 -0
- package/dist/src/gateway/queue-modes.js.map +1 -0
- package/dist/src/index.js +47 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/llm/community-analytics.js +569 -0
- package/dist/src/llm/community-analytics.js.map +1 -0
- package/dist/src/llm/index.js +28 -4
- package/dist/src/llm/index.js.map +1 -1
- package/dist/src/llm/model-discovery.js +335 -0
- package/dist/src/llm/model-discovery.js.map +1 -0
- package/dist/src/llm/model-popularity.js +566 -0
- package/dist/src/llm/model-popularity.js.map +1 -0
- package/dist/src/llm/model-scoring-db.js +553 -0
- package/dist/src/llm/model-scoring-db.js.map +1 -0
- package/dist/src/llm/multi-provider.js +258 -0
- package/dist/src/llm/multi-provider.js.map +1 -0
- package/dist/src/llm/ollama.js +133 -187
- package/dist/src/llm/ollama.js.map +1 -1
- package/dist/src/llm/router-commands.js +773 -0
- package/dist/src/llm/router-commands.js.map +1 -0
- package/dist/src/llm/router-core.js +600 -0
- package/dist/src/llm/router-core.js.map +1 -0
- package/dist/src/memory/checkpoint-manager.js +278 -0
- package/dist/src/memory/checkpoint-manager.js.map +1 -0
- package/dist/src/memory/conflict-detector.js +279 -0
- package/dist/src/memory/conflict-detector.js.map +1 -0
- package/dist/src/memory/context-graph.js +360 -0
- package/dist/src/memory/context-graph.js.map +1 -0
- package/dist/src/memory/dialectic/benchmark-cli.js +200 -0
- package/dist/src/memory/dialectic/benchmark-cli.js.map +1 -0
- package/dist/src/memory/dialectic/debug-reasoning.js +37 -0
- package/dist/src/memory/dialectic/debug-reasoning.js.map +1 -0
- package/dist/src/memory/dialectic/index.js +135 -0
- package/dist/src/memory/dialectic/index.js.map +1 -0
- package/dist/src/memory/dialectic/nudges.js +380 -0
- package/dist/src/memory/dialectic/nudges.js.map +1 -0
- package/dist/src/memory/dialectic/reasoning-engine.js +607 -0
- package/dist/src/memory/dialectic/reasoning-engine.js.map +1 -0
- package/dist/src/memory/dialectic/reasoning.js +390 -0
- package/dist/src/memory/dialectic/reasoning.js.map +1 -0
- package/dist/src/memory/dialectic/skill-creation.js +481 -0
- package/dist/src/memory/dialectic/skill-creation.js.map +1 -0
- package/dist/src/memory/dialectic/store.js +663 -0
- package/dist/src/memory/dialectic/store.js.map +1 -0
- package/dist/src/memory/dialectic/types.js +11 -0
- package/dist/src/memory/dialectic/types.js.map +1 -0
- package/dist/src/memory/index.js +24 -2
- package/dist/src/memory/index.js.map +1 -1
- package/dist/src/memory/memory-decay.js +350 -0
- package/dist/src/memory/memory-decay.js.map +1 -0
- package/dist/src/memory/memory-integration.js +5 -5
- package/dist/src/memory/memory-integration.js.map +1 -1
- package/dist/src/memory/migrate-memory-stream.js +97 -0
- package/dist/src/memory/migrate-memory-stream.js.map +1 -0
- package/dist/src/memory/session-memory-bridge.js +49 -5
- package/dist/src/memory/session-memory-bridge.js.map +1 -1
- package/dist/src/memory/session-store.js +123 -0
- package/dist/src/memory/session-store.js.map +1 -1
- package/dist/src/memory/smart-write-rules.js +164 -0
- package/dist/src/memory/smart-write-rules.js.map +1 -0
- package/dist/src/memory/tiered-memory.js +436 -0
- package/dist/src/memory/tiered-memory.js.map +1 -0
- package/dist/src/memory/types.js +6 -0
- package/dist/src/memory/types.js.map +1 -0
- package/dist/src/memory/verify-migration.js +99 -0
- package/dist/src/memory/verify-migration.js.map +1 -0
- package/dist/src/pi-config.js +11 -9
- package/dist/src/pi-config.js.map +1 -1
- package/dist/src/skills/conditional-skills.js +464 -0
- package/dist/src/skills/conditional-skills.js.map +1 -0
- package/dist/src/skills/index.js +5 -0
- package/dist/src/skills/index.js.map +1 -1
- package/dist/src/skills/loader.js +56 -0
- package/dist/src/skills/loader.js.map +1 -1
- package/dist/src/skills/skill-manage.js +417 -0
- package/dist/src/skills/skill-manage.js.map +1 -0
- package/dist/src/tui/commands/orchestration-commands.js +62 -0
- package/dist/src/tui/commands/orchestration-commands.js.map +1 -1
- package/package.json +10 -5
- package/skills/model-router-test.ts +65 -0
- package/dist/src/extensions/core/auto-security-scan-extension.js +0 -41
- package/dist/src/extensions/core/auto-security-scan-extension.js.map +0 -1
- package/dist/src/extensions/core/cloudflare-browser-extension.js +0 -389
- package/dist/src/extensions/core/cloudflare-browser-extension.js.map +0 -1
- package/dist/src/extensions/core/compaction-safeguard.js +0 -223
- package/dist/src/extensions/core/compaction-safeguard.js.map +0 -1
- package/dist/src/extensions/core/generative-agents-extension.js.map +0 -1
- package/dist/src/extensions/core/obsidian-bridge-extension.js +0 -488
- package/dist/src/extensions/core/obsidian-bridge-extension.js.map +0 -1
- package/dist/src/llm/router.js +0 -145
- package/dist/src/llm/router.js.map +0 -1
- package/skills/kobold-scan-skill/node_modules/.package-lock.json +0 -172
- package/skills/kobold-scan-skill/node_modules/ansi-styles/index.d.ts +0 -345
- package/skills/kobold-scan-skill/node_modules/ansi-styles/index.js +0 -163
- package/skills/kobold-scan-skill/node_modules/ansi-styles/license +0 -9
- package/skills/kobold-scan-skill/node_modules/ansi-styles/package.json +0 -56
- package/skills/kobold-scan-skill/node_modules/ansi-styles/readme.md +0 -152
- package/skills/kobold-scan-skill/node_modules/balanced-match/.github/FUNDING.yml +0 -2
- package/skills/kobold-scan-skill/node_modules/balanced-match/LICENSE.md +0 -21
- package/skills/kobold-scan-skill/node_modules/balanced-match/README.md +0 -97
- package/skills/kobold-scan-skill/node_modules/balanced-match/index.js +0 -62
- package/skills/kobold-scan-skill/node_modules/balanced-match/package.json +0 -48
- package/skills/kobold-scan-skill/node_modules/brace-expansion/.github/FUNDING.yml +0 -2
- package/skills/kobold-scan-skill/node_modules/brace-expansion/LICENSE +0 -21
- package/skills/kobold-scan-skill/node_modules/brace-expansion/README.md +0 -135
- package/skills/kobold-scan-skill/node_modules/brace-expansion/index.js +0 -203
- package/skills/kobold-scan-skill/node_modules/brace-expansion/package.json +0 -49
- package/skills/kobold-scan-skill/node_modules/chalk/index.d.ts +0 -415
- package/skills/kobold-scan-skill/node_modules/chalk/license +0 -9
- package/skills/kobold-scan-skill/node_modules/chalk/package.json +0 -68
- package/skills/kobold-scan-skill/node_modules/chalk/readme.md +0 -341
- package/skills/kobold-scan-skill/node_modules/chalk/source/index.js +0 -229
- package/skills/kobold-scan-skill/node_modules/chalk/source/templates.js +0 -134
- package/skills/kobold-scan-skill/node_modules/chalk/source/util.js +0 -39
- package/skills/kobold-scan-skill/node_modules/color-convert/CHANGELOG.md +0 -54
- package/skills/kobold-scan-skill/node_modules/color-convert/LICENSE +0 -21
- package/skills/kobold-scan-skill/node_modules/color-convert/README.md +0 -68
- package/skills/kobold-scan-skill/node_modules/color-convert/conversions.js +0 -839
- package/skills/kobold-scan-skill/node_modules/color-convert/index.js +0 -81
- package/skills/kobold-scan-skill/node_modules/color-convert/package.json +0 -48
- package/skills/kobold-scan-skill/node_modules/color-convert/route.js +0 -97
- package/skills/kobold-scan-skill/node_modules/color-name/LICENSE +0 -8
- package/skills/kobold-scan-skill/node_modules/color-name/README.md +0 -11
- package/skills/kobold-scan-skill/node_modules/color-name/index.js +0 -152
- package/skills/kobold-scan-skill/node_modules/color-name/package.json +0 -28
- package/skills/kobold-scan-skill/node_modules/commander/LICENSE +0 -22
- package/skills/kobold-scan-skill/node_modules/commander/Readme.md +0 -1129
- package/skills/kobold-scan-skill/node_modules/commander/esm.mjs +0 -16
- package/skills/kobold-scan-skill/node_modules/commander/index.js +0 -27
- package/skills/kobold-scan-skill/node_modules/commander/lib/argument.js +0 -147
- package/skills/kobold-scan-skill/node_modules/commander/lib/command.js +0 -2179
- package/skills/kobold-scan-skill/node_modules/commander/lib/error.js +0 -45
- package/skills/kobold-scan-skill/node_modules/commander/lib/help.js +0 -461
- package/skills/kobold-scan-skill/node_modules/commander/lib/option.js +0 -326
- package/skills/kobold-scan-skill/node_modules/commander/lib/suggestSimilar.js +0 -100
- package/skills/kobold-scan-skill/node_modules/commander/package-support.json +0 -16
- package/skills/kobold-scan-skill/node_modules/commander/package.json +0 -80
- package/skills/kobold-scan-skill/node_modules/commander/typings/index.d.ts +0 -891
- package/skills/kobold-scan-skill/node_modules/fs.realpath/LICENSE +0 -43
- package/skills/kobold-scan-skill/node_modules/fs.realpath/README.md +0 -33
- package/skills/kobold-scan-skill/node_modules/fs.realpath/index.js +0 -66
- package/skills/kobold-scan-skill/node_modules/fs.realpath/old.js +0 -303
- package/skills/kobold-scan-skill/node_modules/fs.realpath/package.json +0 -26
- package/skills/kobold-scan-skill/node_modules/glob/LICENSE +0 -15
- package/skills/kobold-scan-skill/node_modules/glob/README.md +0 -399
- package/skills/kobold-scan-skill/node_modules/glob/common.js +0 -244
- package/skills/kobold-scan-skill/node_modules/glob/glob.js +0 -790
- package/skills/kobold-scan-skill/node_modules/glob/package.json +0 -55
- package/skills/kobold-scan-skill/node_modules/glob/sync.js +0 -486
- package/skills/kobold-scan-skill/node_modules/has-flag/index.d.ts +0 -39
- package/skills/kobold-scan-skill/node_modules/has-flag/index.js +0 -8
- package/skills/kobold-scan-skill/node_modules/has-flag/license +0 -9
- package/skills/kobold-scan-skill/node_modules/has-flag/package.json +0 -46
- package/skills/kobold-scan-skill/node_modules/has-flag/readme.md +0 -89
- package/skills/kobold-scan-skill/node_modules/inflight/LICENSE +0 -15
- package/skills/kobold-scan-skill/node_modules/inflight/README.md +0 -37
- package/skills/kobold-scan-skill/node_modules/inflight/inflight.js +0 -54
- package/skills/kobold-scan-skill/node_modules/inflight/package.json +0 -29
- package/skills/kobold-scan-skill/node_modules/inherits/LICENSE +0 -16
- package/skills/kobold-scan-skill/node_modules/inherits/README.md +0 -42
- package/skills/kobold-scan-skill/node_modules/inherits/inherits.js +0 -9
- package/skills/kobold-scan-skill/node_modules/inherits/inherits_browser.js +0 -27
- package/skills/kobold-scan-skill/node_modules/inherits/package.json +0 -29
- package/skills/kobold-scan-skill/node_modules/minimatch/LICENSE +0 -15
- package/skills/kobold-scan-skill/node_modules/minimatch/README.md +0 -259
- package/skills/kobold-scan-skill/node_modules/minimatch/lib/path.js +0 -4
- package/skills/kobold-scan-skill/node_modules/minimatch/minimatch.js +0 -944
- package/skills/kobold-scan-skill/node_modules/minimatch/package.json +0 -35
- package/skills/kobold-scan-skill/node_modules/once/LICENSE +0 -15
- package/skills/kobold-scan-skill/node_modules/once/README.md +0 -79
- package/skills/kobold-scan-skill/node_modules/once/once.js +0 -42
- package/skills/kobold-scan-skill/node_modules/once/package.json +0 -33
- package/skills/kobold-scan-skill/node_modules/supports-color/browser.js +0 -5
- package/skills/kobold-scan-skill/node_modules/supports-color/index.js +0 -135
- package/skills/kobold-scan-skill/node_modules/supports-color/license +0 -9
- package/skills/kobold-scan-skill/node_modules/supports-color/package.json +0 -53
- package/skills/kobold-scan-skill/node_modules/supports-color/readme.md +0 -76
- package/skills/kobold-scan-skill/node_modules/wrappy/LICENSE +0 -15
- package/skills/kobold-scan-skill/node_modules/wrappy/README.md +0 -36
- package/skills/kobold-scan-skill/node_modules/wrappy/package.json +0 -29
- 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":";AACA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAE5E,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAEhD,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAE7D,6CAA6C;IAC7C,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,qCAAqC,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IACnG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,uCAAuC,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IACnG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,oCAAoC,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAEjG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAEhE,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IAEtE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,2BAA2B,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE5C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,kBAAkB,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAExH,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE/E,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,YAAY,OAAO,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAEhG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,CAAC,SAAS,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC;QAE1D,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEvE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|