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,436 @@
1
+ /**
2
+ * Tiered Memory Architecture
3
+ *
4
+ * Three-layer hierarchy from Rohit's article:
5
+ * - Layer 1: Resources (raw transcripts)
6
+ * - Layer 2: Items (atomic facts)
7
+ * - Layer 3: Categories (evolving summaries)
8
+ */
9
+ import { eventBus } from "../event-bus";
10
+ const DEFAULT_CONFIG = {
11
+ extractionModel: "llama3.2",
12
+ extractionPrompt: `Extract discrete atomic facts from the following text.
13
+ Focus on: user preferences, project details, decisions, errors/learned lessons.
14
+
15
+ Text: {{content}}
16
+
17
+ Return JSON array of items:
18
+ [{
19
+ "content": "atomic fact",
20
+ "category": "preference|fact|decision|task|error|learning"
21
+ }]`,
22
+ evolutionModel: "llama3.2",
23
+ evolutionPrompt: `You are a Memory Synchronization Specialist.
24
+
25
+ ## Current Category Summary
26
+ {{existing_summary}}
27
+
28
+ ## New Items to Integrate
29
+ {{new_items}}
30
+
31
+ ## Task
32
+ 1. Update existing with new information
33
+ 2. Overwrite if contradiction found
34
+ 3. Keep style: concise, scannable
35
+ 4. Output ONLY the updated summary
36
+
37
+ Return the updated category summary.`,
38
+ categoryCondenseThreshold: 20,
39
+ maxCategorySize: 5000,
40
+ maxItemsInContext: 5,
41
+ maxCategoriesInContext: 3,
42
+ };
43
+ export class TieredMemory {
44
+ db;
45
+ config;
46
+ ollamaUrl;
47
+ constructor(db, ollamaUrl, config) {
48
+ this.db = db;
49
+ this.ollamaUrl = ollamaUrl;
50
+ this.config = { ...DEFAULT_CONFIG, ...config };
51
+ }
52
+ /**
53
+ * Initialize tiered tables if they don't exist
54
+ */
55
+ async initSchema() {
56
+ // Resources (Layer 1) - raw transcripts
57
+ this.db.run(`
58
+ CREATE TABLE IF NOT EXISTS memory_resources (
59
+ id TEXT PRIMARY KEY,
60
+ session_id TEXT NOT NULL,
61
+ raw_content TEXT NOT NULL,
62
+ timestamp TEXT NOT NULL,
63
+ processed BOOLEAN DEFAULT FALSE,
64
+ extracted_items INTEGER DEFAULT 0,
65
+ FOREIGN KEY (session_id) REFERENCES sessions(session_id)
66
+ )
67
+ `);
68
+ // Items (Layer 2) - atomic facts
69
+ this.db.run(`
70
+ CREATE TABLE IF NOT EXISTS memory_items (
71
+ id TEXT PRIMARY KEY,
72
+ resource_id TEXT NOT NULL,
73
+ content TEXT NOT NULL,
74
+ category TEXT,
75
+ extracted_at TEXT NOT NULL,
76
+ category_id TEXT,
77
+ archived BOOLEAN DEFAULT FALSE,
78
+ FOREIGN KEY (resource_id) REFERENCES memory_resources(id),
79
+ FOREIGN KEY (category_id) REFERENCES memory_categories(id)
80
+ )
81
+ `);
82
+ // Migration: Add archived column if it doesn't exist (for existing databases)
83
+ try {
84
+ this.db.run(`ALTER TABLE memory_items ADD COLUMN archived BOOLEAN DEFAULT FALSE`);
85
+ }
86
+ catch (e) {
87
+ // Column already exists, ignore error
88
+ }
89
+ // Categories (Layer 3) - evolving summaries
90
+ this.db.run(`
91
+ CREATE TABLE IF NOT EXISTS memory_categories (
92
+ id TEXT PRIMARY KEY,
93
+ name TEXT UNIQUE NOT NULL,
94
+ summary TEXT NOT NULL,
95
+ item_count INTEGER DEFAULT 0,
96
+ last_updated TEXT NOT NULL,
97
+ auto_condensed BOOLEAN DEFAULT FALSE,
98
+ project TEXT
99
+ )
100
+ `);
101
+ // Decay tracking
102
+ this.db.run(`
103
+ CREATE TABLE IF NOT EXISTS memory_decay_log (
104
+ id TEXT PRIMARY KEY,
105
+ memory_id TEXT NOT NULL,
106
+ memory_type TEXT NOT NULL, -- resource, item, category
107
+ action TEXT NOT NULL, -- condense, archive, delete
108
+ reason TEXT,
109
+ timestamp TEXT NOT NULL
110
+ )
111
+ `);
112
+ // Indexes
113
+ this.db.run(`CREATE INDEX IF NOT EXISTS idx_resources_session ON memory_resources(session_id)`);
114
+ this.db.run(`CREATE INDEX IF NOT EXISTS idx_items_category ON memory_items(category_id)`);
115
+ // Check if archived column exists before creating index
116
+ const tableInfo = this.db.query(`PRAGMA table_info(memory_items)`).all();
117
+ const hasArchivedColumn = tableInfo.some(col => col.name === 'archived');
118
+ if (hasArchivedColumn) {
119
+ this.db.run(`CREATE INDEX IF NOT EXISTS idx_items_archived ON memory_items(archived)`);
120
+ }
121
+ console.log("[TieredMemory] Schema initialized");
122
+ }
123
+ /**
124
+ * WRITE PATH: Ingest raw content
125
+ */
126
+ async ingestResource(content, sessionId) {
127
+ const id = `res_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
128
+ const timestamp = new Date().toISOString();
129
+ this.db.query(`
130
+ INSERT INTO memory_resources (id, session_id, raw_content, timestamp, processed)
131
+ VALUES (?, ?, ?, ?, ?)
132
+ `).run(id, sessionId, content, timestamp, false);
133
+ // Emit event for async processing
134
+ eventBus.emit("memory.resource_ingested", {
135
+ resourceId: id,
136
+ sessionId,
137
+ timestamp,
138
+ });
139
+ return {
140
+ id,
141
+ sessionId,
142
+ rawContent: content,
143
+ timestamp,
144
+ processed: false,
145
+ extractedItems: [],
146
+ };
147
+ }
148
+ /**
149
+ * WRITE PATH: Extract atomic items from resource
150
+ */
151
+ async extractItems(resourceId) {
152
+ const resource = this.db.query(`SELECT * FROM memory_resources WHERE id = ?`).get(resourceId);
153
+ if (!resource) {
154
+ throw new Error(`Resource ${resourceId} not found`);
155
+ }
156
+ // Call Ollama to extract facts
157
+ const prompt = this.config.extractionPrompt.replace("{{content}}", resource.rawContent);
158
+ let items = [];
159
+ try {
160
+ const response = await fetch(`${this.ollamaUrl}/api/generate`, {
161
+ method: "POST",
162
+ headers: { "Content-Type": "application/json" },
163
+ body: JSON.stringify({
164
+ model: this.config.extractionModel,
165
+ prompt,
166
+ stream: false,
167
+ format: "json",
168
+ }),
169
+ });
170
+ if (response.ok) {
171
+ const data = await response.json();
172
+ const parsed = JSON.parse(data.response);
173
+ // Handle both array and object formats from LLM
174
+ const itemsArray = Array.isArray(parsed) ? parsed : (parsed.items || []);
175
+ if (!Array.isArray(itemsArray) || itemsArray.length === 0) {
176
+ console.log("[TieredMemory] No items extracted from response");
177
+ return [];
178
+ }
179
+ items = itemsArray.map((item, idx) => ({
180
+ id: `item_${Date.now()}_${idx}`,
181
+ resourceId: resourceId,
182
+ content: item.content,
183
+ category: item.category,
184
+ extractedAt: new Date().toISOString(),
185
+ }));
186
+ // Store items
187
+ for (const item of items) {
188
+ this.db.query(`
189
+ INSERT INTO memory_items (id, resource_id, content, category, extracted_at)
190
+ VALUES (?, ?, ?, ?, ?)
191
+ `).run(item.id, item.resourceId, item.content, item.category, item.extractedAt);
192
+ }
193
+ // Update resource
194
+ this.db.query(`
195
+ UPDATE memory_resources SET processed = TRUE, extracted_items = ? WHERE id = ?
196
+ `).run(items.length, resourceId);
197
+ }
198
+ }
199
+ catch (err) {
200
+ console.error("[TieredMemory] Extraction failed:", err);
201
+ }
202
+ return items;
203
+ }
204
+ /**
205
+ * WRITE PATH: Organize items into categories
206
+ */
207
+ async organizeIntoCategories(items) {
208
+ const categories = new Map();
209
+ // Group by explicit category or auto-classify
210
+ const byCategory = new Map();
211
+ for (const item of items) {
212
+ const catName = item.category || "general";
213
+ if (!byCategory.has(catName)) {
214
+ byCategory.set(catName, []);
215
+ }
216
+ byCategory.get(catName).push(item);
217
+ }
218
+ // Process each category
219
+ for (const [catName, catItems] of byCategory) {
220
+ // Get or create category
221
+ let category = this.getCategoryByName(catName);
222
+ if (!category) {
223
+ category = await this.createCategory(catName);
224
+ }
225
+ // Evolve summary
226
+ await this.evolveCategory(category, catItems);
227
+ categories.set(catName, category);
228
+ }
229
+ return categories;
230
+ }
231
+ /**
232
+ * WRITE PATH: Evolve category summary with new items
233
+ */
234
+ async evolveCategory(category, items) {
235
+ const itemsText = items.map(i => `- ${i.content}`).join("\n");
236
+ const prompt = this.config.evolutionPrompt
237
+ .replace("{{existing_summary}}", category.summary)
238
+ .replace("{{new_items}}", itemsText);
239
+ try {
240
+ const response = await fetch(`${this.ollamaUrl}/api/generate`, {
241
+ method: "POST",
242
+ headers: { "Content-Type": "application/json" },
243
+ body: JSON.stringify({
244
+ model: this.config.evolutionModel,
245
+ prompt,
246
+ stream: false,
247
+ }),
248
+ });
249
+ if (response.ok) {
250
+ const data = await response.json();
251
+ const updatedSummary = data.response.trim();
252
+ // Update category
253
+ this.db.query(`
254
+ UPDATE memory_categories
255
+ SET summary = ?, item_count = item_count + ?, last_updated = ?
256
+ WHERE id = ?
257
+ `).run(updatedSummary, items.length, new Date().toISOString(), category.id);
258
+ // Update items with category_id
259
+ for (const item of items) {
260
+ this.db.query(`UPDATE memory_items SET category_id = ? WHERE id = ?`)
261
+ .run(category.id, item.id);
262
+ }
263
+ }
264
+ }
265
+ catch (err) {
266
+ console.error("[TieredMemory] Evolution failed:", err);
267
+ }
268
+ }
269
+ /**
270
+ * READ PATH: Tiered retrieval with sufficiency check
271
+ */
272
+ async tieredRetrieve(query, sessionId, maxTokens = 2000) {
273
+ const results = {
274
+ categories: [],
275
+ details: [],
276
+ items: undefined,
277
+ };
278
+ // Stage 1: Load category summaries
279
+ const categories = this.getCategorySummaries();
280
+ // Use LLM to select relevant categories
281
+ const relevantCats = await this.selectRelevantCategories(query, categories);
282
+ results.categories = relevantCats.map(c => c.summary);
283
+ // Stage 2: Sufficiency check
284
+ const isSufficient = await this.isSufficient(query, relevantCats.map(c => c.summary));
285
+ if (isSufficient) {
286
+ results.details = ["Sufficient info from category summaries"];
287
+ return results;
288
+ }
289
+ // Stage 3: Drill down to items
290
+ const items = this.getCategoryItems(relevantCats.map(c => c.id), maxTokens);
291
+ results.items = items;
292
+ results.details = [`Retrieved ${items.length} specific items`];
293
+ return results;
294
+ }
295
+ /**
296
+ * Helper: Get category by name
297
+ */
298
+ getCategoryByName(name) {
299
+ const row = this.db.query(`SELECT * FROM memory_categories WHERE name = ?`).get(name);
300
+ if (!row)
301
+ return undefined;
302
+ return {
303
+ id: row.id,
304
+ name: row.name,
305
+ summary: row.summary,
306
+ itemCount: row.item_count,
307
+ lastUpdated: row.last_updated,
308
+ autoCondensed: row.auto_condensed,
309
+ };
310
+ }
311
+ /**
312
+ * Helper: Create new category
313
+ */
314
+ async createCategory(name) {
315
+ const id = `cat_${Date.now()}_${Math.random().toString(36).slice(2, 6)}`;
316
+ const now = new Date().toISOString();
317
+ const initialSummary = `## ${name}\n\nInitial category. No items yet.`;
318
+ this.db.query(`
319
+ INSERT INTO memory_categories (id, name, summary, last_updated)
320
+ VALUES (?, ?, ?, ?)
321
+ `).run(id, name, initialSummary, now);
322
+ return {
323
+ id,
324
+ name,
325
+ summary: initialSummary,
326
+ itemCount: 0,
327
+ lastUpdated: now,
328
+ autoCondensed: false,
329
+ };
330
+ }
331
+ /**
332
+ * Helper: Get all category summaries
333
+ */
334
+ getCategorySummaries() {
335
+ const rows = this.db.query(`SELECT * FROM memory_categories`).all();
336
+ return rows.map(r => ({
337
+ id: r.id,
338
+ name: r.name,
339
+ summary: r.summary,
340
+ itemCount: r.item_count,
341
+ lastUpdated: r.last_updated,
342
+ autoCondensed: r.auto_condensed,
343
+ }));
344
+ }
345
+ /**
346
+ * Helper: Select relevant categories using LLM
347
+ */
348
+ async selectRelevantCategories(query, categories) {
349
+ if (categories.length === 0)
350
+ return [];
351
+ const catList = categories.map(c => `- ${c.name}: ${c.summary.slice(0, 100)}`).join("\n");
352
+ const prompt = `Query: ${query}\n\nCategories:\n${catList}\n\nReturn JSON array of category names relevant to the query.`;
353
+ try {
354
+ const response = await fetch(`${this.ollamaUrl}/api/generate`, {
355
+ method: "POST",
356
+ headers: { "Content-Type": "application/json" },
357
+ body: JSON.stringify({
358
+ model: this.config.extractionModel,
359
+ prompt,
360
+ stream: false,
361
+ format: "json",
362
+ }),
363
+ });
364
+ if (response.ok) {
365
+ const data = await response.json();
366
+ const selectedNames = JSON.parse(data.response);
367
+ return categories.filter(c => selectedNames.includes(c.name));
368
+ }
369
+ }
370
+ catch (err) {
371
+ console.error("[TieredMemory] Category selection failed:", err);
372
+ }
373
+ return categories.slice(0, this.config.maxCategoriesInContext);
374
+ }
375
+ /**
376
+ * Helper: Sufficiency check
377
+ */
378
+ async isSufficient(query, summaries) {
379
+ if (summaries.length === 0)
380
+ return false;
381
+ const combined = summaries.join("\n\n");
382
+ const prompt = `Query: ${query}\n\nContext:\n${combined}\n\nCan you answer the query with this context? Reply YES or NO only.`;
383
+ try {
384
+ const response = await fetch(`${this.ollamaUrl}/api/generate`, {
385
+ method: "POST",
386
+ headers: { "Content-Type": "application/json" },
387
+ body: JSON.stringify({
388
+ model: this.config.extractionModel,
389
+ prompt,
390
+ stream: false,
391
+ }),
392
+ });
393
+ if (response.ok) {
394
+ const data = await response.json();
395
+ return data.response.toUpperCase().includes("YES");
396
+ }
397
+ }
398
+ catch (err) {
399
+ console.error("[TieredMemory] Sufficiency check failed:", err);
400
+ }
401
+ return false;
402
+ }
403
+ /**
404
+ * Helper: Get items from categories
405
+ */
406
+ getCategoryItems(categoryIds, maxTokens) {
407
+ const items = [];
408
+ let tokenCount = 0;
409
+ for (const catId of categoryIds) {
410
+ const rows = this.db.query(`
411
+ SELECT * FROM memory_items
412
+ WHERE category_id = ? AND archived = FALSE
413
+ ORDER BY extracted_at DESC
414
+ LIMIT ?
415
+ `).all(catId, this.config.maxItemsInContext);
416
+ for (const row of rows) {
417
+ const estimatedTokens = row.content.length / 4; // Rough estimate
418
+ if (tokenCount + estimatedTokens > maxTokens) {
419
+ break;
420
+ }
421
+ items.push({
422
+ id: row.id,
423
+ resourceId: row.resource_id,
424
+ content: row.content,
425
+ category: row.category,
426
+ extractedAt: row.extracted_at,
427
+ categoryId: row.category_id,
428
+ });
429
+ tokenCount += estimatedTokens;
430
+ }
431
+ }
432
+ return items;
433
+ }
434
+ }
435
+ export { DEFAULT_CONFIG };
436
+ //# sourceMappingURL=tiered-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiered-memory.js","sourceRoot":"","sources":["../../../src/memory/tiered-memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Memory Types
3
+ * Shared types for memory architecture
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/memory/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Verify Migration: memory_stream β†’ session_events
3
+ *
4
+ * Compares data integrity after migration.
5
+ *
6
+ * Usage:
7
+ * bun run src/memory/verify-migration.ts
8
+ */
9
+ import { Database } from "bun:sqlite";
10
+ import { homedir } from "node:os";
11
+ import { join } from "node:path";
12
+ const LEARNING_DB = join(homedir(), ".0xkobold", "generative", "agents.db");
13
+ const SESSIONS_DB = join(homedir(), ".0xkobold", "sessions.db");
14
+ function verifyMigration() {
15
+ console.log("πŸ” Verifying migration integrity...\n");
16
+ try {
17
+ const learningDb = new Database(LEARNING_DB, { readonly: true });
18
+ const sessionsDb = new Database(SESSIONS_DB, { readonly: true });
19
+ // Count source
20
+ const sourceCount = learningDb.query(`
21
+ SELECT COUNT(*) as count FROM memory_stream
22
+ `).get();
23
+ // Count destination
24
+ const destCount = sessionsDb.query(`
25
+ SELECT COUNT(*) as count FROM session_events
26
+ `).get();
27
+ console.log("πŸ“Š Counts:");
28
+ console.log(` memory_stream: ${sourceCount?.count ?? 0}`);
29
+ console.log(` session_events: ${destCount.count}`);
30
+ // Check types distribution
31
+ const typesSource = learningDb.query(`
32
+ SELECT type, COUNT(*) as count
33
+ FROM memory_stream
34
+ GROUP BY type
35
+ `).all();
36
+ const typesDest = sessionsDb.query(`
37
+ SELECT type, COUNT(*) as count
38
+ FROM session_events
39
+ GROUP BY type
40
+ `).all();
41
+ console.log("\nπŸ“‹ Type distribution:");
42
+ console.log(" Source (memory_stream):");
43
+ for (const t of typesSource) {
44
+ console.log(` ${t.type}: ${t.count}`);
45
+ }
46
+ console.log(" Destination (session_events):");
47
+ for (const t of typesDest) {
48
+ console.log(` ${t.type}: ${t.count}`);
49
+ }
50
+ // Check importance range
51
+ const importanceSource = learningDb.query(`
52
+ SELECT MIN(importance) as min, MAX(importance) as max, AVG(importance) as avg
53
+ FROM memory_stream
54
+ `).get();
55
+ const importanceDest = sessionsDb.query(`
56
+ SELECT MIN(importance) as min, MAX(importance) as max, AVG(importance) as avg
57
+ FROM session_events
58
+ `).get();
59
+ console.log("\nπŸ“Š Importance range:");
60
+ console.log(` Source: ${importanceSource.min} - ${importanceSource.max} (avg: ${importanceSource.avg?.toFixed(2) ?? 'N/A'})`);
61
+ console.log(` Destination: ${importanceDest.min} - ${importanceDest.max} (avg: ${importanceDest.avg?.toFixed(2) ?? 'N/A'})`);
62
+ // Sample comparison
63
+ const sampleSource = learningDb.query(`
64
+ SELECT id, content, type, importance FROM memory_stream LIMIT 3
65
+ `).all();
66
+ console.log("\nπŸ”Ž Sample comparison:");
67
+ for (const src of sampleSource) {
68
+ const dest = sessionsDb.query(`
69
+ SELECT content, type, importance FROM session_events WHERE id = ?
70
+ `).get(src.id);
71
+ if (dest) {
72
+ const match = dest.content === src.content &&
73
+ dest.type === src.type &&
74
+ dest.importance === src.importance;
75
+ console.log(` ${src.id}: ${match ? 'βœ…' : '❌'} ${src.type} - "${src.content.slice(0, 30)}..."`);
76
+ }
77
+ else {
78
+ console.log(` ${src.id}: ❌ NOT FOUND in session_events`);
79
+ }
80
+ }
81
+ // Final verdict
82
+ const diff = Math.abs((sourceCount?.count ?? 0) - destCount.count);
83
+ if (diff === 0) {
84
+ console.log("\nβœ… Migration verified: counts match");
85
+ }
86
+ else {
87
+ console.log(`\n⚠️ Migration note: ${diff} entries difference`);
88
+ console.log(" This may be expected (entries without session_id)");
89
+ }
90
+ learningDb.close();
91
+ sessionsDb.close();
92
+ }
93
+ catch (error) {
94
+ console.error("❌ Verification failed:", error);
95
+ process.exit(1);
96
+ }
97
+ }
98
+ verifyMigration();
99
+ //# sourceMappingURL=verify-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-migration.js","sourceRoot":"","sources":["../../../src/memory/verify-migration.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export const config = {
14
14
  './src/config/unified-config.ts', // UNIFIED: Config system (no-op, just types)
15
15
  './src/extensions/core/config-extension.ts', // UNIFIED: /config commands
16
16
  '../../node_modules/@0xkobold/pi-ollama/dist/index.js', // πŸ¦™ Ollama (npm)
17
+ './src/extensions/core/routed-ollama-extension.ts', // 🧠 Adaptive model routing (wraps Ollama)
17
18
  './src/sessions/UnifiedSessionBridge.ts', // UNIFIED: Session management
18
19
  // Core Features
19
20
  './src/extensions/core/memory-bootstrap-extension.ts', // 🧠 Auto-load memories on startup (CLAWS-style)
@@ -21,7 +22,6 @@ export const config = {
21
22
  './src/extensions/core/onboarding-extension.ts', // First-run setup
22
23
  './src/extensions/core/task-manager-extension.ts', // Task board and workflow
23
24
  './src/extensions/core/heartbeat-extension.ts', // Koclaw-style heartbeat monitoring
24
- './src/extensions/core/compaction-safeguard-v2.ts', // FIXED: Uses session_before_compact event
25
25
  // Multi-Channel
26
26
  './src/extensions/core/multi-channel-extension.ts', // Unified channel management
27
27
  './src/extensions/core/discord-extension.ts', // Discord bot integration
@@ -33,8 +33,7 @@ export const config = {
33
33
  './src/extensions/core/draconic-lair-extension.ts', // Project workspaces
34
34
  './src/extensions/core/draconic-hoard-extension.ts', // Code snippets
35
35
  // Safety Extensions (CONSOLIDATED into draconic-safety)
36
- './src/extensions/core/draconic-safety-extension.ts', // πŸ›‘οΈ Replaces: protected-paths, confirm-destructive, dirty-repo-guard, git-checkpoint
37
- './src/extensions/core/auto-security-scan-extension.ts', // πŸ” Auto-scan files on write for vulnerabilities
36
+ './src/extensions/core/draconic-safety-extension.ts', // πŸ›‘οΈ Replaces: protected-paths, confirm-destructive, dirty-repo-guard, git-checkpoint, auto-security-scan, compaction-safeguard
38
37
  // Developer Tools
39
38
  './src/extensions/core/extension-scaffold-extension.ts', // Scaffold new extensions
40
39
  './src/extensions/core/diagnostics-extension.ts', // Telemetry and health monitoring
@@ -42,20 +41,23 @@ export const config = {
42
41
  './src/extensions/core/mcp-extension.ts', // Model Context Protocol support
43
42
  './node_modules/@aliou/pi-processes/src/index.ts', // Background process management
44
43
  './src/extensions/core/websearch-enhanced-extension.ts', // Ollama web search
45
- './src/extensions/core/cloudflare-browser-extension.ts', // ☁️ Browser Rendering (opt-in)
46
- './src/extensions/core/wallet-extension.ts', // πŸͺ™ CDP Agentic + Ethers.js + ERC-8004
44
+ // './src/extensions/core/cloudflare-browser-extension.ts', // MOVED: Now at npm:@0xkobold/pi-cloudflare-browser
45
+ './node_modules/@0xkobold/pi-cloudflare-browser/dist/index.js', // ☁️ Browser Rendering (published)
46
+ './src/extensions/core/wallet-extension.ts', // πŸͺ™ CDP Agentic + Ethers.js (legacy - published as @0xkobold/pi-wallet)
47
47
  './src/extensions/core/update-extension.ts', // Framework update functionality
48
48
  './src/extensions/core/self-update-extension.ts', // 0xKobold self-update
49
49
  './src/extensions/core/perennial-memory-extension.ts', // Long-term memory
50
- './src/extensions/core/generative-agents-extension.ts', // 🧠 Memory stream, reflection, planning
50
+ './src/extensions/core/learning-extension.ts', // πŸ“š Memory stream, reflection, planning (renamed from generative-agents)
51
51
  // πŸ‰ Community Extensions (PI Ecosystem Wrappers)
52
52
  './src/extensions/community/draconic-subagents-wrapper.ts', // pi-subagents bridge
53
53
  './src/extensions/community/draconic-messenger-wrapper.ts', // pi-messenger bridge
54
- '../../node_modules/pi-web-access/index.ts', // πŸ•ΈοΈ Web search, fetch, research
54
+ // '../../node_modules/pi-web-access/index.ts', // πŸ•ΈοΈ DISABLED: Requires Perplexity/Gemini API key
55
+ // Using websearch-enhanced-extension.ts instead (free DuckDuckGo + SearX fallback)
55
56
  // 🧠 Context Engine Extension (Koclaw-style context management)
56
57
  './src/extensions/core/intelligent-context-extension.ts', // Intelligent context via framework events
57
- // πŸ”— Obsidian Bridge (NEW - Heartbeat-integrated task sync)
58
- './src/extensions/core/obsidian-bridge-extension.ts', // Obsidian vault integration
58
+ // πŸ”— Obsidian Bridge (published)
59
+ // './src/extensions/core/obsidian-bridge-extension.ts', // MOVED: Now at npm:@0xkobold/pi-obsidian-bridge
60
+ './node_modules/@0xkobold/pi-obsidian-bridge/dist/index.js', // πŸ““ Obsidian vault sync
59
61
  // πŸͺ™ Wallet + ERC-8004 (Agent economy - PUBLISHED)
60
62
  'npm:@0xkobold/pi-wallet', // CDP Agentic + Ethers.js + x402
61
63
  'npm:@0xkobold/pi-erc8004', // ERC-8004 identity & reputation
@@ -1 +1 @@
1
- {"version":3,"file":"pi-config.js","sourceRoot":"","sources":["../../src/pi-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pi-config.js","sourceRoot":"","sources":["../../src/pi-config.ts"],"names":[],"mappings":"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"}