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,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 @@
|
|
|
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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"}
|
package/dist/src/pi-config.js
CHANGED
|
@@ -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',
|
|
46
|
-
'./
|
|
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/
|
|
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',
|
|
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 (
|
|
58
|
-
'./src/extensions/core/obsidian-bridge-extension.ts',
|
|
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":"AAAA;;;;;GAKG;AAUH,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,6BAA6B;IAC7B,EAAE,EAAE,KAAK;IAET,qDAAqD;IACrD,wEAAwE;IACxE,UAAU,EAAE;QACV,8BAA8B;QAC9B,gCAAgC,EAAqB,6CAA6C;QAClG,2CAA2C,EAAY,4BAA4B;QACnF,sDAAsD,EAAG,kBAAkB;QAC3E,wCAAwC,EAAe,8BAA8B;QAErF,gBAAgB;QAChB,qDAAqD,EAAE,iDAAiD;QACxG,mDAAmD,EAAE,sBAAsB;QAC3E,+CAA+C,EAAM,kBAAkB;QACvE,iDAAiD,EAAI,0BAA0B;QAC/E,8CAA8C,EAAO,oCAAoC;
|
|
1
|
+
{"version":3,"file":"pi-config.js","sourceRoot":"","sources":["../../src/pi-config.ts"],"names":[],"mappings":"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"}
|