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,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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"}