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,607 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dialectic Reasoning Engine - Research-Based Implementation
|
|
3
|
+
*
|
|
4
|
+
* This implements multiple reasoning strategies based on research:
|
|
5
|
+
*
|
|
6
|
+
* 1. Chain-of-Thought (CoT) - Wei et al. 2022
|
|
7
|
+
* - Step-by-step reasoning before conclusion
|
|
8
|
+
* - Effective for complex deductions
|
|
9
|
+
*
|
|
10
|
+
* 2. Self-Consistency - Wang et al. 2022
|
|
11
|
+
* - Sample multiple reasoning paths
|
|
12
|
+
* - Vote on final answer
|
|
13
|
+
* - Reduces hallucination
|
|
14
|
+
*
|
|
15
|
+
* 3. Tree-of-Thoughts (ToT) - Yao et al. 2023
|
|
16
|
+
* - Branch multiple reasoning paths
|
|
17
|
+
* - Evaluate each branch
|
|
18
|
+
* - Backtrack from dead ends
|
|
19
|
+
*
|
|
20
|
+
* 4. Formal Logic - Classic approach
|
|
21
|
+
* - Convert to logical propositions
|
|
22
|
+
* - Apply inference rules
|
|
23
|
+
* - Prove or disprove
|
|
24
|
+
*
|
|
25
|
+
* 5. Dialectic - Hegel's approach
|
|
26
|
+
* - Thesis: Initial claim
|
|
27
|
+
* - Antithesis: Contradiction
|
|
28
|
+
* - Synthesis: Resolution
|
|
29
|
+
*/
|
|
30
|
+
import { getDialecticStore } from "./store";
|
|
31
|
+
const DEFAULT_CONFIG = {
|
|
32
|
+
strategy: "dialectic",
|
|
33
|
+
model: "nemotron-3-super:cloud", // Fastest cloud model (42s, 100% accuracy)
|
|
34
|
+
ollamaUrl: process.env.OLLAMA_URL || "http://localhost:11434",
|
|
35
|
+
samples: 3,
|
|
36
|
+
branchingFactor: 3,
|
|
37
|
+
maxDepth: 4,
|
|
38
|
+
};
|
|
39
|
+
// ═════════════════════════════════════════════════════════════════
|
|
40
|
+
// CHAIN-OF-THOUGHT PROMPTS
|
|
41
|
+
// ═════════════════════════════════════════════════════════════════
|
|
42
|
+
const COT_CONTRADICTION_PROMPT = `Analyze these observations to find contradictions.
|
|
43
|
+
|
|
44
|
+
Observations:
|
|
45
|
+
{{observations}}
|
|
46
|
+
|
|
47
|
+
Think step by step:
|
|
48
|
+
1. First, identify the core claims in each observation
|
|
49
|
+
2. Look for pairs where claims cannot both be true
|
|
50
|
+
3. Consider context that might explain apparent contradictions
|
|
51
|
+
4. For each real contradiction found:
|
|
52
|
+
- State the contradiction clearly
|
|
53
|
+
- Explain why it's a contradiction
|
|
54
|
+
- Suggest how to resolve it (newer_wins, context, refinement, correction, both_true)
|
|
55
|
+
|
|
56
|
+
Return JSON array: [{"observation_a": "...", "observation_b": "...", "reasoning": "...", "resolution": "...", "confidence": 0.0-1.0}]`;
|
|
57
|
+
const COT_PREFERENCE_PROMPT = `Extract preferences from these observations.
|
|
58
|
+
|
|
59
|
+
Observations:
|
|
60
|
+
{{observations}}
|
|
61
|
+
|
|
62
|
+
Think step by step:
|
|
63
|
+
1. Identify statements about what the user likes/dislikes
|
|
64
|
+
2. Note the domain (programming language, architecture, tools, etc.)
|
|
65
|
+
3. Assess confidence based on evidence
|
|
66
|
+
4. Be conservative - only extract preferences clearly supported
|
|
67
|
+
|
|
68
|
+
Return JSON array: [{"topic": "...", "preference": "...", "confidence": 0.0-1.0, "evidence": ["..."]}]`;
|
|
69
|
+
// ═════════════════════════════════════════════════════════════════
|
|
70
|
+
// SELF-CONSISTENCY (MULTIPLE SAMPLES + VOTING)
|
|
71
|
+
// ═════════════════════════════════════════════════════════════════
|
|
72
|
+
const SC_VOTE_PROMPT = `You are analyzing extracted preferences.
|
|
73
|
+
|
|
74
|
+
Extractions from multiple reasoning paths:
|
|
75
|
+
{{extractions}}
|
|
76
|
+
|
|
77
|
+
For each preference topic:
|
|
78
|
+
1. Count how many paths extracted the same preference
|
|
79
|
+
2. Weight by confidence scores
|
|
80
|
+
3. Select the consensus preference(s)
|
|
81
|
+
|
|
82
|
+
Return JSON array of consensus preferences: [{"topic": "...", "preference": "...", "confidence": 0.0-1.0, "votes": N}]`;
|
|
83
|
+
// ═════════════════════════════════════════════════════════════════
|
|
84
|
+
// TREE-OF-THOUGHTS (BRANCHING + EVALUATION)
|
|
85
|
+
// ═════════════════════════════════════════════════════════════════
|
|
86
|
+
const TOT_GENERATE_PROMPT = `Generate {{n}} possible interpretations of these observations.
|
|
87
|
+
|
|
88
|
+
Observations:
|
|
89
|
+
{{observations}}
|
|
90
|
+
|
|
91
|
+
Each interpretation should:
|
|
92
|
+
1. Identify a possible understanding
|
|
93
|
+
2. Note gaps or conflicts
|
|
94
|
+
3. Suggest what to infer
|
|
95
|
+
|
|
96
|
+
Return JSON array: [{"interpretation": "...", "gaps": ["..."], "possible_inferences": ["..."]}]`;
|
|
97
|
+
const TOT_EVALUATE_PROMPT = `Evaluate this interpretation for correctness and completeness.
|
|
98
|
+
|
|
99
|
+
Interpretation: {{interpretation}}
|
|
100
|
+
Original observations: {{observations}}
|
|
101
|
+
|
|
102
|
+
Rate each aspect 1-10:
|
|
103
|
+
- Coherence: Does this interpretation make sense?
|
|
104
|
+
- Evidence: Is it well-supported by observations?
|
|
105
|
+
- Completeness: Does it explain all observations?
|
|
106
|
+
|
|
107
|
+
Return JSON: {"coherence": N, "evidence": N, "completeness": N, "issues": ["..."]}`;
|
|
108
|
+
// ═════════════════════════════════════════════════════════════════
|
|
109
|
+
// FORMAL LOGIC (PROPOSITIONAL REASONING)
|
|
110
|
+
// ═════════════════════════════════════════════════════════════════
|
|
111
|
+
const FORMAL_LOGIC_PROMPT = `Convert these observations to logical propositions and check for contradictions.
|
|
112
|
+
|
|
113
|
+
Observations:
|
|
114
|
+
{{observations}}
|
|
115
|
+
|
|
116
|
+
Step 1: Convert to propositional logic
|
|
117
|
+
- "I prefer TypeScript" → P1: prefers(user, typescript)
|
|
118
|
+
- "I dislike Python for large projects" → P2: ¬prefers(user, python_large_projects)
|
|
119
|
+
|
|
120
|
+
Step 2: Identify potential conflicts
|
|
121
|
+
- P1 ∧ ¬P1 → contradiction
|
|
122
|
+
|
|
123
|
+
Step 3: Apply inference rules
|
|
124
|
+
- Modus ponens: If P→Q and P, then Q
|
|
125
|
+
- Resolution: Find contradictions using resolution rule
|
|
126
|
+
|
|
127
|
+
Return JSON: {"propositions": [...], "conflicts": [...], "inferences": [...]}`;
|
|
128
|
+
// ═════════════════════════════════════════════════════════════════
|
|
129
|
+
// DIALECTIC (THESIS-ANTITHESIS-SYNTHESIS)
|
|
130
|
+
// ═════════════════════════════════════════════════════════════════
|
|
131
|
+
const DIALECTIC_PROMPT = `Perform dialectic reasoning on these observations.
|
|
132
|
+
|
|
133
|
+
Observations:
|
|
134
|
+
{{observations}}
|
|
135
|
+
|
|
136
|
+
THESIS: What is the initial understanding?
|
|
137
|
+
- Identify core beliefs stated
|
|
138
|
+
- Note preferences and goals
|
|
139
|
+
|
|
140
|
+
ANTITHESIS: What contradicts or challenges the thesis?
|
|
141
|
+
- Find conflicting statements
|
|
142
|
+
- Note changes over time
|
|
143
|
+
- Identify edge cases
|
|
144
|
+
|
|
145
|
+
SYNTHESIS: Resolve the contradictions.
|
|
146
|
+
- What remains true in all contexts?
|
|
147
|
+
- What changes based on context?
|
|
148
|
+
- What is the unified understanding?
|
|
149
|
+
|
|
150
|
+
Return JSON: {
|
|
151
|
+
"thesis": {"claims": [...], "preferences": [...], "goals": [...]},
|
|
152
|
+
"antithesis": {"contradictions": [...], "challenges": [...]},
|
|
153
|
+
"synthesis": {"unified": "...", "contextual": [...], "confidence": 0.0-1.0}
|
|
154
|
+
}`;
|
|
155
|
+
// ═════════════════════════════════════════════════════════════════
|
|
156
|
+
// REASONING ENGINE
|
|
157
|
+
// ═════════════════════════════════════════════════════════════════
|
|
158
|
+
export class DialecticReasoningEngine {
|
|
159
|
+
store;
|
|
160
|
+
config;
|
|
161
|
+
constructor(config, store) {
|
|
162
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
163
|
+
this.store = store || getDialecticStore();
|
|
164
|
+
}
|
|
165
|
+
// ─────────────────────────────────────────────────────────────────
|
|
166
|
+
// MAIN REASONING ENTRY POINT
|
|
167
|
+
// ─────────────────────────────────────────────────────────────────
|
|
168
|
+
async reason(peerId) {
|
|
169
|
+
const observations = this.store.getObservations(peerId, 100);
|
|
170
|
+
if (observations.length < 3) {
|
|
171
|
+
return this.emptyResult();
|
|
172
|
+
}
|
|
173
|
+
const reasoningPath = [];
|
|
174
|
+
switch (this.config.strategy) {
|
|
175
|
+
case "chain-of-thought":
|
|
176
|
+
return this.chainOfThoughtReasoning(peerId, observations);
|
|
177
|
+
case "self-consistency":
|
|
178
|
+
return this.selfConsistencyReasoning(peerId, observations);
|
|
179
|
+
case "tree-of-thought":
|
|
180
|
+
return this.treeOfThoughtReasoning(peerId, observations);
|
|
181
|
+
case "formal-logic":
|
|
182
|
+
return this.formalLogicReasoning(peerId, observations);
|
|
183
|
+
case "dialectic":
|
|
184
|
+
default:
|
|
185
|
+
return this.dialecticReasoning(peerId, observations);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// ─────────────────────────────────────────────────────────────────
|
|
189
|
+
// CHAIN-OF-THOUGHT REASONING
|
|
190
|
+
// ─────────────────────────────────────────────────────────────────
|
|
191
|
+
async chainOfThoughtReasoning(peerId, observations) {
|
|
192
|
+
const obsText = observations.map(o => `[${o.category}] ${o.content}`).join("\n");
|
|
193
|
+
// Step-by-step contradiction detection
|
|
194
|
+
const contradictions = await this.cotDetectContradictions(peerId, obsText);
|
|
195
|
+
// Step-by-step preference extraction
|
|
196
|
+
const preferences = await this.cotExtractPreferences(peerId, obsText);
|
|
197
|
+
// Step-by-step goal extraction
|
|
198
|
+
const goals = await this.cotExtractGoals(peerId, obsText);
|
|
199
|
+
// Step-by-step constraint extraction
|
|
200
|
+
const constraints = await this.cotExtractConstraints(peerId, obsText);
|
|
201
|
+
// Step-by-step value extraction
|
|
202
|
+
const values = await this.cotExtractValues(peerId, obsText);
|
|
203
|
+
// Synthesize
|
|
204
|
+
const synthesis = await this.cotSynthesize(peerId, obsText, contradictions);
|
|
205
|
+
return { contradictions, synthesis, preferences, goals, constraints, values, reasoningPath: ["chain-of-thought"] };
|
|
206
|
+
}
|
|
207
|
+
// ─────────────────────────────────────────────────────────────────
|
|
208
|
+
// SELF-CONSISTENCY REASONING
|
|
209
|
+
// ─────────────────────────────────────────────────────────────────
|
|
210
|
+
async selfConsistencyReasoning(peerId, observations) {
|
|
211
|
+
const obsText = observations.map(o => `[${o.category}] ${o.content}`).join("\n");
|
|
212
|
+
// Sample multiple reasoning paths
|
|
213
|
+
const pathPromises = Array(this.config.samples).fill(null).map(() => this.extractSingle(obsText, "preferences"));
|
|
214
|
+
const paths = await Promise.all(pathPromises);
|
|
215
|
+
// Vote on preferences
|
|
216
|
+
const preferences = await this.voteOnPreferences(paths, peerId);
|
|
217
|
+
// Similar for other types
|
|
218
|
+
const [contradictions, goals, constraints, values] = await Promise.all([
|
|
219
|
+
this.cotDetectContradictions(peerId, obsText),
|
|
220
|
+
this.cotExtractGoals(peerId, obsText),
|
|
221
|
+
this.cotExtractConstraints(peerId, obsText),
|
|
222
|
+
this.cotExtractValues(peerId, obsText),
|
|
223
|
+
]);
|
|
224
|
+
const synthesis = await this.cotSynthesize(peerId, obsText, contradictions);
|
|
225
|
+
return {
|
|
226
|
+
contradictions,
|
|
227
|
+
synthesis,
|
|
228
|
+
preferences,
|
|
229
|
+
goals,
|
|
230
|
+
constraints,
|
|
231
|
+
values,
|
|
232
|
+
reasoningPath: [`self-consistency:${this.config.samples}x`]
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
// ─────────────────────────────────────────────────────────────────
|
|
236
|
+
// TREE-OF-THOUGHTS REASONING
|
|
237
|
+
// ─────────────────────────────────────────────────────────────────
|
|
238
|
+
async treeOfThoughtReasoning(peerId, observations) {
|
|
239
|
+
const obsText = observations.map(o => `[${o.category}] ${o.content}`).join("\n");
|
|
240
|
+
// Generate initial branches
|
|
241
|
+
const branches = await this.generateBranches(obsText, this.config.branchingFactor);
|
|
242
|
+
// Evaluate each branch
|
|
243
|
+
const evaluatedBranches = await Promise.all(branches.map(b => this.evaluateBranch(b, obsText)));
|
|
244
|
+
// Sort by score and pick best
|
|
245
|
+
evaluatedBranches.sort((a, b) => b.score - a.score);
|
|
246
|
+
const bestBranch = evaluatedBranches[0];
|
|
247
|
+
// Extract from best branch
|
|
248
|
+
const [contradictions, preferences, goals, constraints, values] = await Promise.all([
|
|
249
|
+
this.cotDetectContradictions(peerId, obsText),
|
|
250
|
+
this.cotExtractPreferences(peerId, obsText),
|
|
251
|
+
this.cotExtractGoals(peerId, obsText),
|
|
252
|
+
this.cotExtractConstraints(peerId, obsText),
|
|
253
|
+
this.cotExtractValues(peerId, obsText),
|
|
254
|
+
]);
|
|
255
|
+
const synthesis = await this.cotSynthesize(peerId, obsText, contradictions);
|
|
256
|
+
return {
|
|
257
|
+
contradictions,
|
|
258
|
+
synthesis,
|
|
259
|
+
preferences,
|
|
260
|
+
goals,
|
|
261
|
+
constraints,
|
|
262
|
+
values,
|
|
263
|
+
reasoningPath: [`tree-of-thought:depth${this.config.maxDepth}`],
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
// ─────────────────────────────────────────────────────────────────
|
|
267
|
+
// FORMAL LOGIC REASONING
|
|
268
|
+
// ─────────────────────────────────────────────────────────────────
|
|
269
|
+
async formalLogicReasoning(peerId, observations) {
|
|
270
|
+
const obsText = observations.map(o => `[${o.category}] ${o.content}`).join("\n");
|
|
271
|
+
// Convert to propositions and apply inference rules
|
|
272
|
+
const result = await this.callLLM(FORMAL_LOGIC_PROMPT.replace("{{observations}}", obsText));
|
|
273
|
+
// Parse results
|
|
274
|
+
const parsed = JSON.parse(result);
|
|
275
|
+
// Convert to our types
|
|
276
|
+
const contradictions = (parsed.conflicts || []).map((c) => this.store.addContradiction(peerId, c.p1, c.p2, "both_true", c.resolution || "", 0.8));
|
|
277
|
+
// Standard extraction for preferences/goals
|
|
278
|
+
const [preferences, goals, constraints, values] = await Promise.all([
|
|
279
|
+
this.cotExtractPreferences(peerId, obsText),
|
|
280
|
+
this.cotExtractGoals(peerId, obsText),
|
|
281
|
+
this.cotExtractConstraints(peerId, obsText),
|
|
282
|
+
this.cotExtractValues(peerId, obsText),
|
|
283
|
+
]);
|
|
284
|
+
const synthesis = await this.cotSynthesize(peerId, obsText, contradictions);
|
|
285
|
+
return {
|
|
286
|
+
contradictions,
|
|
287
|
+
synthesis,
|
|
288
|
+
preferences,
|
|
289
|
+
goals,
|
|
290
|
+
constraints,
|
|
291
|
+
values,
|
|
292
|
+
reasoningPath: ["formal-logic", ...parsed.propositions?.slice(0, 5) || []],
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
// ─────────────────────────────────────────────────────────────────
|
|
296
|
+
// DIALECTIC REASONING (DEFAULT)
|
|
297
|
+
// ─────────────────────────────────────────────────────────────────
|
|
298
|
+
async dialecticReasoning(peerId, observations) {
|
|
299
|
+
const obsText = observations.map(o => `[${o.category}] ${o.content}`).join("\n");
|
|
300
|
+
// Perform dialectic analysis
|
|
301
|
+
const result = await this.callLLM(DIALECTIC_PROMPT.replace("{{observations}}", obsText));
|
|
302
|
+
let dialecticResult;
|
|
303
|
+
try {
|
|
304
|
+
dialecticResult = JSON.parse(result);
|
|
305
|
+
}
|
|
306
|
+
catch (e) {
|
|
307
|
+
// Try harder to parse
|
|
308
|
+
const jsonMatch = result.match(/\{[\s\S]*\}/);
|
|
309
|
+
if (jsonMatch) {
|
|
310
|
+
dialecticResult = JSON.parse(jsonMatch[0]);
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
// Return empty result if parsing fails
|
|
314
|
+
dialecticResult = { thesis: {}, antithesis: {}, synthesis: { unified: "Could not parse LLM response" } };
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
// Extract from the synthesis
|
|
318
|
+
const synthesis = this.store.addSynthesis(peerId, dialecticResult.synthesis?.unified || "No synthesis", observations.slice(0, 20).map(o => o.id), [], dialecticResult.synthesis?.confidence || 0.7);
|
|
319
|
+
// Extract preferences, goals, etc. from thesis/antithesis
|
|
320
|
+
const [preferences, goals, constraints, values, contradictions] = await Promise.all([
|
|
321
|
+
this.extractFromDialectic(dialecticResult.thesis, "preferences", peerId),
|
|
322
|
+
this.cotExtractGoals(peerId, obsText),
|
|
323
|
+
this.cotExtractConstraints(peerId, obsText),
|
|
324
|
+
this.cotExtractValues(peerId, obsText),
|
|
325
|
+
this.extractContradictionsFromDialectic(dialecticResult.antithesis, peerId),
|
|
326
|
+
]);
|
|
327
|
+
return {
|
|
328
|
+
contradictions,
|
|
329
|
+
synthesis,
|
|
330
|
+
preferences,
|
|
331
|
+
goals,
|
|
332
|
+
constraints,
|
|
333
|
+
values,
|
|
334
|
+
reasoningPath: ["dialectic:thesis→antithesis→synthesis"],
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
// ═════════════════════════════════════════════════════════════════
|
|
338
|
+
// HELPER METHODS
|
|
339
|
+
// ═════════════════════════════════════════════════════════════════
|
|
340
|
+
async cotDetectContradictions(peerId, obsText) {
|
|
341
|
+
const prompt = COT_CONTRADICTION_PROMPT.replace("{{observations}}", obsText);
|
|
342
|
+
const result = await this.callLLM(prompt);
|
|
343
|
+
const detected = JSON.parse(result);
|
|
344
|
+
const stored = [];
|
|
345
|
+
for (const c of (Array.isArray(detected) ? detected : detected.contradictions || []).slice(0, 5)) {
|
|
346
|
+
stored.push(this.store.addContradiction(peerId, c.observation_a, c.observation_b, c.resolution || "unknown", c.reasoning || "", c.confidence || 0.5));
|
|
347
|
+
}
|
|
348
|
+
return stored;
|
|
349
|
+
}
|
|
350
|
+
async cotExtractPreferences(peerId, obsText) {
|
|
351
|
+
const prompt = COT_PREFERENCE_PROMPT.replace("{{observations}}", obsText);
|
|
352
|
+
const result = await this.callLLM(prompt);
|
|
353
|
+
const parsed = JSON.parse(result);
|
|
354
|
+
const prefs = Array.isArray(parsed) ? parsed : parsed.preferences || [];
|
|
355
|
+
const stored = [];
|
|
356
|
+
for (const p of prefs.slice(0, 10)) {
|
|
357
|
+
if (p.topic && p.preference && p.confidence >= 0.5) {
|
|
358
|
+
stored.push(this.store.addPreference(peerId, p.topic, p.preference, p.evidence || [], p.confidence));
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
return stored;
|
|
362
|
+
}
|
|
363
|
+
async cotExtractGoals(peerId, obsText) {
|
|
364
|
+
const prompt = `Extract goals from these observations. Think step by step.
|
|
365
|
+
|
|
366
|
+
Observations:
|
|
367
|
+
${obsText}
|
|
368
|
+
|
|
369
|
+
For each goal:
|
|
370
|
+
1. Identify what the user wants to achieve
|
|
371
|
+
2. Assess status (active, completed, abandoned)
|
|
372
|
+
3. Assign priority (high, medium, low)
|
|
373
|
+
4. Note confidence level
|
|
374
|
+
|
|
375
|
+
Return JSON array: [{"description": "...", "status": "active|completed|abandoned", "priority": "high|medium|low", "confidence": 0.0-1.0}]`;
|
|
376
|
+
const result = await this.callLLM(prompt);
|
|
377
|
+
const parsed = JSON.parse(result);
|
|
378
|
+
const goals = Array.isArray(parsed) ? parsed : parsed.goals || [];
|
|
379
|
+
const stored = [];
|
|
380
|
+
for (const g of goals.slice(0, 5)) {
|
|
381
|
+
if (g.description && g.confidence >= 0.5) {
|
|
382
|
+
stored.push(this.store.addGoal(peerId, g.description, g.status || "active", g.priority || "medium", [], g.confidence));
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
return stored;
|
|
386
|
+
}
|
|
387
|
+
async cotExtractConstraints(peerId, obsText) {
|
|
388
|
+
const prompt = `Extract constraints from these observations. Think step by step.
|
|
389
|
+
|
|
390
|
+
Observations:
|
|
391
|
+
${obsText}
|
|
392
|
+
|
|
393
|
+
Constraints are what the user cannot or will not do.
|
|
394
|
+
|
|
395
|
+
For each:
|
|
396
|
+
1. Identify the constraint
|
|
397
|
+
2. Classify as: hard (cannot violate), soft (prefer not to), preference (stated)
|
|
398
|
+
3. Note confidence
|
|
399
|
+
|
|
400
|
+
Return JSON array: [{"description": "...", "type": "hard|soft|preference", "confidence": 0.0-1.0}]`;
|
|
401
|
+
const result = await this.callLLM(prompt);
|
|
402
|
+
const parsed = JSON.parse(result);
|
|
403
|
+
const constraints = Array.isArray(parsed) ? parsed : parsed.constraints || [];
|
|
404
|
+
const stored = [];
|
|
405
|
+
for (const c of constraints.slice(0, 10)) {
|
|
406
|
+
if (c.description && c.confidence >= 0.5) {
|
|
407
|
+
stored.push(this.store.addConstraint(peerId, c.description, c.type || "soft", [], c.confidence));
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
return stored;
|
|
411
|
+
}
|
|
412
|
+
async cotExtractValues(peerId, obsText) {
|
|
413
|
+
const prompt = `Extract intrinsic values from these observations. Think step by step.
|
|
414
|
+
|
|
415
|
+
Observations:
|
|
416
|
+
${obsText}
|
|
417
|
+
|
|
418
|
+
Values are what the user cares about for its own sake, not as a means to an end.
|
|
419
|
+
|
|
420
|
+
For each:
|
|
421
|
+
1. Identify the value
|
|
422
|
+
2. Note the context
|
|
423
|
+
3. Assess confidence
|
|
424
|
+
|
|
425
|
+
Return JSON array: [{"value": "...", "context": "...", "confidence": 0.0-1.0}]`;
|
|
426
|
+
const result = await this.callLLM(prompt);
|
|
427
|
+
const parsed = JSON.parse(result);
|
|
428
|
+
const values = Array.isArray(parsed) ? parsed : parsed.values || [];
|
|
429
|
+
const stored = [];
|
|
430
|
+
for (const v of values.slice(0, 10)) {
|
|
431
|
+
if (v.value && v.confidence >= 0.5) {
|
|
432
|
+
stored.push(this.store.addValue(peerId, v.value, v.context || "", [], v.confidence));
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
return stored;
|
|
436
|
+
}
|
|
437
|
+
async cotSynthesize(peerId, obsText, contradictions) {
|
|
438
|
+
const synthesis = await this.callLLM(`Synthesize a coherent understanding from these observations.
|
|
439
|
+
|
|
440
|
+
Observations:
|
|
441
|
+
${obsText}
|
|
442
|
+
|
|
443
|
+
Contradictions found: ${contradictions.length > 0 ? contradictions.map(c => `${c.observationA} vs ${c.observationB}`).join("; ") : "None"}
|
|
444
|
+
|
|
445
|
+
Create a unified understanding that:
|
|
446
|
+
1. Integrates all observations
|
|
447
|
+
2. Resolves contradictions
|
|
448
|
+
3. Identifies key themes
|
|
449
|
+
|
|
450
|
+
Return JSON: {"content": "...", "confidence": 0.0-1.0, "key_insights": ["..."]}`);
|
|
451
|
+
const parsed = JSON.parse(synthesis);
|
|
452
|
+
return this.store.addSynthesis(peerId, parsed.content, [], contradictions.map(c => c.id), parsed.confidence || 0.7);
|
|
453
|
+
}
|
|
454
|
+
async generateBranches(obsText, n) {
|
|
455
|
+
const result = await this.callLLM(TOT_GENERATE_PROMPT
|
|
456
|
+
.replace("{{n}}", String(n))
|
|
457
|
+
.replace("{{observations}}", obsText));
|
|
458
|
+
const parsed = JSON.parse(result);
|
|
459
|
+
return Array.isArray(parsed) ? parsed.map((p) => p.interpretation) : [];
|
|
460
|
+
}
|
|
461
|
+
async evaluateBranch(branch, obsText) {
|
|
462
|
+
const result = await this.callLLM(TOT_EVALUATE_PROMPT
|
|
463
|
+
.replace("{{interpretation}}", branch)
|
|
464
|
+
.replace("{{observations}}", obsText));
|
|
465
|
+
const parsed = JSON.parse(result);
|
|
466
|
+
const score = (parsed.coherence + parsed.evidence + parsed.completeness) / 3;
|
|
467
|
+
return { branch, score };
|
|
468
|
+
}
|
|
469
|
+
async extractFromBranch(branch, type, peerId) {
|
|
470
|
+
// Extract using the branch as context
|
|
471
|
+
return this.cotExtractPreferences(peerId, branch.branch);
|
|
472
|
+
}
|
|
473
|
+
async extractSingle(obsText, type) {
|
|
474
|
+
return this.cotExtractPreferences("temp", obsText);
|
|
475
|
+
}
|
|
476
|
+
async voteOnPreferences(paths, peerId) {
|
|
477
|
+
// Group by topic and vote
|
|
478
|
+
const topicCounts = new Map();
|
|
479
|
+
for (const pathPrefs of paths) {
|
|
480
|
+
for (const pref of pathPrefs) {
|
|
481
|
+
if (!topicCounts.has(pref.topic)) {
|
|
482
|
+
topicCounts.set(pref.topic, new Map());
|
|
483
|
+
}
|
|
484
|
+
const topicPrefs = topicCounts.get(pref.topic);
|
|
485
|
+
topicPrefs.set(pref.preference, (topicPrefs.get(pref.preference) || 0) + 1);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
const stored = [];
|
|
489
|
+
for (const [topic, prefs] of topicCounts) {
|
|
490
|
+
let maxCount = 0;
|
|
491
|
+
let winner = "";
|
|
492
|
+
for (const [pref, count] of prefs) {
|
|
493
|
+
if (count > maxCount) {
|
|
494
|
+
maxCount = count;
|
|
495
|
+
winner = pref;
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
if (maxCount >= Math.ceil(paths.length / 2)) {
|
|
499
|
+
stored.push(this.store.addPreference(peerId, topic, winner, [], maxCount / paths.length));
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
return stored;
|
|
503
|
+
}
|
|
504
|
+
async extractFromDialectic(dialecticPart, type, peerId) {
|
|
505
|
+
if (!dialecticPart)
|
|
506
|
+
return [];
|
|
507
|
+
// thesis might have { preferences: ["TypeScript over JavaScript"], goals: [...] }
|
|
508
|
+
// or it might have { preferences: [{ topic: "lang", preference: "TS" }] }
|
|
509
|
+
const items = dialecticPart[type] || dialecticPart.preferences || [];
|
|
510
|
+
if (!Array.isArray(items) || items.length === 0)
|
|
511
|
+
return [];
|
|
512
|
+
const stored = [];
|
|
513
|
+
for (const item of items.slice(0, 10)) {
|
|
514
|
+
if (typeof item === 'string') {
|
|
515
|
+
// String format: "TypeScript over JavaScript"
|
|
516
|
+
// Parse it into topic/preference
|
|
517
|
+
const parts = item.split(/ over | vs | versus | more than /i);
|
|
518
|
+
if (parts.length === 2) {
|
|
519
|
+
stored.push(this.store.addPreference(peerId, "general", item, // Use whole string as preference
|
|
520
|
+
[], 0.7));
|
|
521
|
+
}
|
|
522
|
+
else {
|
|
523
|
+
// Just a preference statement
|
|
524
|
+
stored.push(this.store.addPreference(peerId, "general", item, [], 0.6));
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
else if (item.topic && item.preference) {
|
|
528
|
+
// Object format: { topic: "lang", preference: "TS" }
|
|
529
|
+
stored.push(this.store.addPreference(peerId, item.topic, item.preference, [], 0.7));
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
return stored;
|
|
533
|
+
}
|
|
534
|
+
async extractContradictionsFromDialectic(antithesis, peerId) {
|
|
535
|
+
if (!antithesis || !antithesis.contradictions)
|
|
536
|
+
return [];
|
|
537
|
+
const stored = [];
|
|
538
|
+
for (const c of antithesis.contradictions.slice(0, 5)) {
|
|
539
|
+
// Ensure required fields exist
|
|
540
|
+
if (!c.a && !c.observation_a)
|
|
541
|
+
continue;
|
|
542
|
+
if (!c.b && !c.observation_b)
|
|
543
|
+
continue;
|
|
544
|
+
stored.push(this.store.addContradiction(peerId, c.a || c.observation_a || "unknown", c.b || c.observation_b || "unknown", c.resolution || "unknown", c.reason || c.reasoning || "", c.confidence || 0.7));
|
|
545
|
+
}
|
|
546
|
+
return stored;
|
|
547
|
+
}
|
|
548
|
+
emptyResult() {
|
|
549
|
+
return {
|
|
550
|
+
contradictions: [],
|
|
551
|
+
synthesis: null,
|
|
552
|
+
preferences: [],
|
|
553
|
+
goals: [],
|
|
554
|
+
constraints: [],
|
|
555
|
+
values: [],
|
|
556
|
+
reasoningPath: [],
|
|
557
|
+
};
|
|
558
|
+
}
|
|
559
|
+
// ═════════════════════════════════════════════════════════════════
|
|
560
|
+
// LLM CALL
|
|
561
|
+
// ═════════════════════════════════════════════════════════════════
|
|
562
|
+
async callLLM(prompt) {
|
|
563
|
+
const response = await fetch(`${this.config.ollamaUrl}/api/generate`, {
|
|
564
|
+
method: "POST",
|
|
565
|
+
headers: { "Content-Type": "application/json" },
|
|
566
|
+
body: JSON.stringify({
|
|
567
|
+
model: this.config.model,
|
|
568
|
+
prompt,
|
|
569
|
+
stream: false,
|
|
570
|
+
format: "json",
|
|
571
|
+
}),
|
|
572
|
+
});
|
|
573
|
+
if (!response.ok) {
|
|
574
|
+
throw new Error(`LLM error: ${response.status}`);
|
|
575
|
+
}
|
|
576
|
+
const data = await response.json();
|
|
577
|
+
let result = data.response;
|
|
578
|
+
// Handle markdown code blocks - extract JSON from ```json ... ```
|
|
579
|
+
if (result.includes("```")) {
|
|
580
|
+
// Try to extract JSON from code block
|
|
581
|
+
const jsonMatch = result.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
582
|
+
if (jsonMatch && jsonMatch[1]) {
|
|
583
|
+
result = jsonMatch[1].trim();
|
|
584
|
+
}
|
|
585
|
+
else {
|
|
586
|
+
// Remove ``` markers
|
|
587
|
+
result = result.replace(/```json?/g, "").replace(/```/g, "").trim();
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
return result;
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
// ═════════════════════════════════════════════════════════════════
|
|
594
|
+
// SINGLETON
|
|
595
|
+
// ═════════════════════════════════════════════════════════════════
|
|
596
|
+
let engine = null;
|
|
597
|
+
export function getDialecticReasoningEngine(config) {
|
|
598
|
+
if (!engine || config) {
|
|
599
|
+
engine = new DialecticReasoningEngine(config);
|
|
600
|
+
}
|
|
601
|
+
return engine;
|
|
602
|
+
}
|
|
603
|
+
export function setReasoningModel(model) {
|
|
604
|
+
engine = new DialecticReasoningEngine({ model });
|
|
605
|
+
console.log(`[DialecticReasoning] Model set to: ${model}`);
|
|
606
|
+
}
|
|
607
|
+
//# sourceMappingURL=reasoning-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasoning-engine.js","sourceRoot":"","sources":["../../../../src/memory/dialectic/reasoning-engine.ts"],"names":[],"mappings":"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"}
|