0xkobold 0.4.3 → 0.5.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/README.md +226 -383
- package/dist/package.json +13 -4
- package/dist/src/agent/DraconicCapabilityRouter.js +556 -0
- package/dist/src/agent/DraconicCapabilityRouter.js.map +1 -0
- package/dist/src/agent/DraconicErrorClassifier.js +606 -0
- package/dist/src/agent/DraconicErrorClassifier.js.map +1 -0
- package/dist/src/agent/DraconicRunRegistry.js +460 -0
- package/dist/src/agent/DraconicRunRegistry.js.map +1 -0
- package/dist/src/agent/DraconicTokenPredictor.js +500 -0
- package/dist/src/agent/DraconicTokenPredictor.js.map +1 -0
- package/dist/src/agent/embedded-runner.js +3 -2
- package/dist/src/agent/embedded-runner.js.map +1 -1
- package/dist/src/cli/commands/doctor.js +199 -0
- package/dist/src/cli/commands/doctor.js.map +1 -0
- package/dist/src/cli/commands/migrate-from-openclaw.js +39 -0
- package/dist/src/cli/commands/migrate-from-openclaw.js.map +1 -0
- package/dist/src/cli/commands/migrate.js +6 -4
- package/dist/src/cli/commands/migrate.js.map +1 -1
- package/dist/src/cli/program.js +3 -1
- package/dist/src/cli/program.js.map +1 -1
- package/dist/src/config/unified-config.js +195 -0
- package/dist/src/config/unified-config.js.map +1 -0
- package/dist/src/cron/notifications.js +1 -1
- package/dist/src/cron/notifications.js.map +1 -1
- package/dist/src/cron/runner.js +9 -3
- package/dist/src/cron/runner.js.map +1 -1
- package/dist/src/event-bus/index.js +3 -1
- package/dist/src/event-bus/index.js.map +1 -1
- package/dist/src/extensions/community/draconic-messenger-wrapper.js +35 -0
- package/dist/src/extensions/community/draconic-messenger-wrapper.js.map +1 -0
- package/dist/src/extensions/community/draconic-subagents-wrapper.js +115 -0
- package/dist/src/extensions/community/draconic-subagents-wrapper.js.map +1 -0
- package/dist/src/extensions/core/compaction-safeguard-v2.js +95 -0
- package/dist/src/extensions/core/compaction-safeguard-v2.js.map +1 -0
- package/dist/src/extensions/core/compaction-safeguard.js +206 -137
- package/dist/src/extensions/core/compaction-safeguard.js.map +1 -1
- package/dist/src/extensions/core/config-extension.js +122 -0
- package/dist/src/extensions/core/config-extension.js.map +1 -0
- package/dist/src/extensions/core/draconic-hoard-extension.js +194 -0
- package/dist/src/extensions/core/draconic-hoard-extension.js.map +1 -0
- package/dist/src/extensions/core/draconic-lair-extension.js +146 -0
- package/dist/src/extensions/core/draconic-lair-extension.js.map +1 -0
- package/dist/src/extensions/core/draconic-safety-extension.js +402 -0
- package/dist/src/extensions/core/draconic-safety-extension.js.map +1 -0
- package/dist/src/extensions/core/ext-manager.js +40 -0
- package/dist/src/extensions/core/ext-manager.js.map +1 -0
- package/dist/src/extensions/core/gateway-extension.js +413 -624
- package/dist/src/extensions/core/gateway-extension.js.map +1 -1
- package/dist/src/extensions/core/generative-agents-extension.js +704 -0
- package/dist/src/extensions/core/generative-agents-extension.js.map +1 -0
- package/dist/src/extensions/core/memory-bootstrap-extension.js +279 -0
- package/dist/src/extensions/core/memory-bootstrap-extension.js.map +1 -0
- package/dist/src/extensions/core/ollama-extension.js +442 -0
- package/dist/src/extensions/core/ollama-extension.js.map +1 -0
- package/dist/src/extensions/core/ollama-router-extension.js +34 -93
- package/dist/src/extensions/core/ollama-router-extension.js.map +1 -1
- package/dist/src/extensions/core/perennial-memory-extension.js +5 -2
- package/dist/src/extensions/core/perennial-memory-extension.js.map +1 -1
- package/dist/src/extensions/core/persona-loader-extension.js +41 -15
- package/dist/src/extensions/core/persona-loader-extension.js.map +1 -1
- package/dist/src/extensions/core/pi-notify-extension.js +6 -0
- package/dist/src/extensions/core/pi-notify-extension.js.map +1 -1
- package/dist/src/extensions/core/session-bridge-extension.js +8 -72
- package/dist/src/extensions/core/session-bridge-extension.js.map +1 -1
- package/dist/src/extensions/core/tui-integration-extension-fixed.js +3 -0
- package/dist/src/extensions/core/tui-integration-extension-fixed.js.map +1 -0
- package/dist/src/extensions/core/tui-integration-extension.js +984 -0
- package/dist/src/extensions/core/tui-integration-extension.js.map +1 -0
- package/dist/src/gateway/persistence/AgentStore.js +399 -0
- package/dist/src/gateway/persistence/AgentStore.js.map +1 -0
- package/dist/src/gateway/persistence/index.js +9 -0
- package/dist/src/gateway/persistence/index.js.map +1 -0
- package/dist/src/hoard/DraconicHoardSystem.js +465 -0
- package/dist/src/hoard/DraconicHoardSystem.js.map +1 -0
- package/dist/src/index.js +7 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/infra/DraconicConnectionPool.js +492 -0
- package/dist/src/infra/DraconicConnectionPool.js.map +1 -0
- package/dist/src/lair/DraconicLairSystem.js +387 -0
- package/dist/src/lair/DraconicLairSystem.js.map +1 -0
- package/dist/src/llm/ollama.js +143 -99
- package/dist/src/llm/ollama.js.map +1 -1
- package/dist/src/migration/openclaw.js +5 -5
- package/dist/src/migration/openclaw.js.map +1 -1
- package/dist/src/pi-config.js +52 -27
- package/dist/src/pi-config.js.map +1 -1
- package/dist/src/sessions/SessionManager.js +416 -0
- package/dist/src/sessions/SessionManager.js.map +1 -0
- package/dist/src/sessions/SessionStore.js +580 -0
- package/dist/src/sessions/SessionStore.js.map +1 -0
- package/dist/src/sessions/UnifiedSessionBridge.js +394 -0
- package/dist/src/sessions/UnifiedSessionBridge.js.map +1 -0
- package/dist/src/sessions/index.js +15 -0
- package/dist/src/sessions/index.js.map +1 -0
- package/dist/src/sessions/migration/index.js +156 -0
- package/dist/src/sessions/migration/index.js.map +1 -0
- package/dist/src/sessions/types.js +8 -0
- package/dist/src/sessions/types.js.map +1 -0
- package/dist/src/skills/framework.js +1 -1
- package/dist/src/skills/framework.js.map +1 -1
- package/dist/src/tui/commands/final-functions.js +39 -0
- package/dist/src/tui/commands/final-functions.js.map +1 -0
- package/dist/src/tui/commands/natural-language-commands.js +231 -0
- package/dist/src/tui/commands/natural-language-commands.js.map +1 -0
- package/dist/src/tui/commands/orchestration-commands.js +340 -0
- package/dist/src/tui/commands/orchestration-commands.js.map +1 -0
- package/dist/src/tui/commands/orchestration-final-section.js +84 -0
- package/dist/src/tui/commands/orchestration-final-section.js.map +1 -0
- package/dist/src/tui/components/agent-tree-overlay.js +210 -0
- package/dist/src/tui/components/agent-tree-overlay.js.map +1 -0
- package/dist/src/tui/components/agent-tree-panel.js +229 -0
- package/dist/src/tui/components/agent-tree-panel.js.map +1 -0
- package/dist/src/tui/components/sidebar.js +82 -0
- package/dist/src/tui/components/sidebar.js.map +1 -0
- package/dist/src/tui/components/status-bar.js +115 -0
- package/dist/src/tui/components/status-bar.js.map +1 -0
- package/dist/src/tui/components/tree-header.js +85 -0
- package/dist/src/tui/components/tree-header.js.map +1 -0
- package/dist/src/tui/draconic-tui.js +291 -0
- package/dist/src/tui/draconic-tui.js.map +1 -0
- package/dist/src/tui/index.js +93 -0
- package/dist/src/tui/index.js.map +1 -0
- package/dist/src/tui/pi-tui-integration.js +260 -0
- package/dist/src/tui/pi-tui-integration.js.map +1 -0
- package/dist/src/utils/nl-patterns.js +145 -0
- package/dist/src/utils/nl-patterns.js.map +1 -0
- package/package.json +13 -4
- package/scripts/migrate-from-openclaw.sh +498 -0
- package/HEARTBEAT.md +0 -121
- package/USAGE.md +0 -191
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction-safeguard.js","sourceRoot":"","sources":["../../../../src/extensions/core/compaction-safeguard.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"compaction-safeguard.js","sourceRoot":"","sources":["../../../../src/extensions/core/compaction-safeguard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Extension
|
|
3
|
+
*
|
|
4
|
+
* Unified configuration management for 0xKobold.
|
|
5
|
+
* All extensions use ~/.0xkobold/0xkobold.json
|
|
6
|
+
* Following OpenClaw convention (openclaw.json)
|
|
7
|
+
*/
|
|
8
|
+
import { config } from "../../config/unified-config.js";
|
|
9
|
+
export default function configExtension(pi) {
|
|
10
|
+
console.log("[Config] Extension loaded");
|
|
11
|
+
// Show config
|
|
12
|
+
pi.registerCommand("config", {
|
|
13
|
+
description: "Show unified configuration",
|
|
14
|
+
handler: async (_args, ctx) => {
|
|
15
|
+
const cfg = config.get();
|
|
16
|
+
const path = config.path();
|
|
17
|
+
const lines = [
|
|
18
|
+
"⚙️ 0xKobold Configuration",
|
|
19
|
+
"───────────────────────────────",
|
|
20
|
+
`File: ${path}`,
|
|
21
|
+
`Version: ${cfg.version}`,
|
|
22
|
+
`Updated: ${new Date(cfg.updatedAt).toLocaleString()}`,
|
|
23
|
+
"",
|
|
24
|
+
"Sections:",
|
|
25
|
+
" • /config-ollama - Ollama settings",
|
|
26
|
+
" • /config-gateway - Gateway settings",
|
|
27
|
+
" • /config-discord - Discord settings",
|
|
28
|
+
"",
|
|
29
|
+
"Commands:",
|
|
30
|
+
" /config-edit - Open config in editor",
|
|
31
|
+
" /config-reset - Reset to defaults",
|
|
32
|
+
];
|
|
33
|
+
ctx.ui?.notify?.(lines.join("\n"), "info");
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
// Show raw config
|
|
37
|
+
pi.registerCommand("config-show", {
|
|
38
|
+
description: "Show raw config file contents",
|
|
39
|
+
handler: async (_args, ctx) => {
|
|
40
|
+
const cfg = config.get();
|
|
41
|
+
const json = JSON.stringify(cfg, null, 2);
|
|
42
|
+
ctx.ui?.notify?.([
|
|
43
|
+
"📄 Config File Contents:",
|
|
44
|
+
"────────────────────────",
|
|
45
|
+
json.slice(0, 1000) + (json.length > 1000 ? "\n..." : ""),
|
|
46
|
+
].join("\n"), "info");
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
// Ollama config
|
|
50
|
+
pi.registerCommand("config-ollama", {
|
|
51
|
+
description: "Show Ollama configuration",
|
|
52
|
+
handler: async (_args, ctx) => {
|
|
53
|
+
const ollama = config.get("ollama") || {};
|
|
54
|
+
ctx.ui?.notify?.([
|
|
55
|
+
"🤖 Ollama Configuration",
|
|
56
|
+
"────────────────────────",
|
|
57
|
+
`Base URL: ${ollama.baseUrl || "http://localhost:11434"}`,
|
|
58
|
+
`Cloud URL: ${ollama.cloudUrl || "https://ollama.com/api"}`,
|
|
59
|
+
`API Key: ${ollama.apiKey ? "••••" + ollama.apiKey.slice(-4) : "Not set"}`,
|
|
60
|
+
`Custom Models: ${ollama.customModels?.length || 0}`,
|
|
61
|
+
"",
|
|
62
|
+
"To change:",
|
|
63
|
+
" Edit ~/.0xkobold/config.json",
|
|
64
|
+
" Or use: /ollama-config",
|
|
65
|
+
].join("\n"), "info");
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
// Gateway config
|
|
69
|
+
pi.registerCommand("config-gateway", {
|
|
70
|
+
description: "Show Gateway configuration",
|
|
71
|
+
handler: async (_args, ctx) => {
|
|
72
|
+
const gateway = config.get("gateway") || {};
|
|
73
|
+
ctx.ui?.notify?.([
|
|
74
|
+
"🌐 Gateway Configuration",
|
|
75
|
+
"────────────────────────",
|
|
76
|
+
`Port: ${gateway.port || 18789}`,
|
|
77
|
+
`Host: ${gateway.host || "127.0.0.1"}`,
|
|
78
|
+
`Auto-start: ${gateway.autoStart ?? true}`,
|
|
79
|
+
`Persist agents: ${gateway.persistAgents ?? true}`,
|
|
80
|
+
"",
|
|
81
|
+
"To change:",
|
|
82
|
+
" Edit ~/.0xkobold/config.json",
|
|
83
|
+
].join("\n"), "info");
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
// Discord config (safe version - no token shown)
|
|
87
|
+
pi.registerCommand("config-discord", {
|
|
88
|
+
description: "Show Discord configuration (safe)",
|
|
89
|
+
handler: async (_args, ctx) => {
|
|
90
|
+
const discord = config.get("discord") || {};
|
|
91
|
+
ctx.ui?.notify?.([
|
|
92
|
+
"💬 Discord Configuration",
|
|
93
|
+
"────────────────────────",
|
|
94
|
+
`Enabled: ${discord.enabled ? "✅ Yes" : "❌ No"}`,
|
|
95
|
+
`Token: ${discord.token ? "✅ Configured" : "❌ Not set"}`,
|
|
96
|
+
`Auto-reply: ${discord.autoReply ?? true}`,
|
|
97
|
+
"",
|
|
98
|
+
"To configure:",
|
|
99
|
+
" Edit ~/.0xkobold/config.json",
|
|
100
|
+
' Add: { "discord": { "token": "YOUR_TOKEN" } }',
|
|
101
|
+
].join("\n"), "info");
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
// Reset config
|
|
105
|
+
pi.registerCommand("config-reset", {
|
|
106
|
+
description: "Reset configuration to defaults",
|
|
107
|
+
handler: async (_args, ctx) => {
|
|
108
|
+
ctx.ui?.notify?.("⚠️ This will reset ALL settings to defaults. Continue?", "warning");
|
|
109
|
+
// Note: In a real implementation, you'd prompt for confirmation
|
|
110
|
+
// For now, just show instructions
|
|
111
|
+
ctx.ui?.notify?.([
|
|
112
|
+
"To reset config:",
|
|
113
|
+
" rm ~/.0xkobold/config.json",
|
|
114
|
+
" /reload",
|
|
115
|
+
"",
|
|
116
|
+
"Or manually edit the file.",
|
|
117
|
+
].join("\n"), "info");
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
console.log("[Config] Commands: /config, /config-show, /config-ollama, /config-gateway, /config-discord");
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=config-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-extension.js","sourceRoot":"","sources":["../../../../src/extensions/core/config-extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 💎 Draconic Hoard Extension
|
|
3
|
+
*
|
|
4
|
+
* Provides /treasure commands for code snippet management
|
|
5
|
+
* Superior code treasure hoarding with semantic search
|
|
6
|
+
*/
|
|
7
|
+
import { Type } from "@sinclair/typebox";
|
|
8
|
+
import { getDraconicHoardSystem, } from "../../hoard/DraconicHoardSystem";
|
|
9
|
+
// 💎 Hoard system singleton
|
|
10
|
+
let hoardSystem;
|
|
11
|
+
export default function register(pi) {
|
|
12
|
+
// Initialize
|
|
13
|
+
hoardSystem = getDraconicHoardSystem();
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// TOOL: hoard_manage
|
|
16
|
+
// ============================================================================
|
|
17
|
+
pi.registerTool({
|
|
18
|
+
name: "hoard_manage",
|
|
19
|
+
label: "💎 Draconic Hoard Management",
|
|
20
|
+
description: "Manage code snippets (treasures) with semantic search",
|
|
21
|
+
parameters: Type.Object({
|
|
22
|
+
operation: Type.String({
|
|
23
|
+
description: "Operation: add, search, suggest, get, share, stats",
|
|
24
|
+
}),
|
|
25
|
+
name: Type.Optional(Type.String({ description: "Treasure name" })),
|
|
26
|
+
description: Type.Optional(Type.String({ description: "Treasure description" })),
|
|
27
|
+
code: Type.Optional(Type.String({ description: "Code snippet" })),
|
|
28
|
+
language: Type.Optional(Type.String({ description: "Programming language" })),
|
|
29
|
+
tags: Type.Optional(Type.Array(Type.String(), { description: "Tags" })),
|
|
30
|
+
query: Type.Optional(Type.String({ description: "Search query" })),
|
|
31
|
+
task: Type.Optional(Type.String({ description: "Task for suggestions" })),
|
|
32
|
+
treasureId: Type.Optional(Type.String({ description: "Treasure ID" })),
|
|
33
|
+
sessionKey: Type.Optional(Type.String({ description: "Session for sharing" })),
|
|
34
|
+
sourceFile: Type.Optional(Type.String({ description: "Source file path" })),
|
|
35
|
+
}),
|
|
36
|
+
async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
|
|
37
|
+
const operation = params.operation;
|
|
38
|
+
switch (operation) {
|
|
39
|
+
case "add": {
|
|
40
|
+
const name = params.name;
|
|
41
|
+
const desc = params.description;
|
|
42
|
+
const code = params.code;
|
|
43
|
+
const language = params.language;
|
|
44
|
+
const tags = params.tags;
|
|
45
|
+
if (!name || !code) {
|
|
46
|
+
return { content: [{ type: "text", text: "❌ name and code required" }], details: { error: "missing_params" } };
|
|
47
|
+
}
|
|
48
|
+
const id = hoardSystem.treasure({
|
|
49
|
+
name,
|
|
50
|
+
description: desc || "",
|
|
51
|
+
code,
|
|
52
|
+
language: language || "text",
|
|
53
|
+
tags,
|
|
54
|
+
sourceFile: params.sourceFile,
|
|
55
|
+
sourceSession: ctx.sessionKey || "unknown",
|
|
56
|
+
createdBy: "user",
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
content: [{ type: "text", text: `💎 Treasure added: ${id.slice(0, 8)}...\nName: ${name}` }],
|
|
60
|
+
details: { id, name },
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
case "search": {
|
|
64
|
+
const query = params.query;
|
|
65
|
+
if (!query) {
|
|
66
|
+
return { content: [{ type: "text", text: "❌ query required" }], details: { error: "missing_query" } };
|
|
67
|
+
}
|
|
68
|
+
const results = hoardSystem.search(query, { limit: 5 });
|
|
69
|
+
if (results.length === 0) {
|
|
70
|
+
return { content: [{ type: "text", text: "🔍 No treasures found" }], details: { results: [] } };
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
content: [{
|
|
74
|
+
type: "text",
|
|
75
|
+
text: `🔍 Found ${results.length} treasures:\n\n${results.map((r, i) => `${i + 1}. ${r.treasure.name} (${r.treasure.language})\n Score: ${r.score.toFixed(2)}\n ${r.treasure.description.slice(0, 60)}...`).join("\n\n")}`,
|
|
76
|
+
}],
|
|
77
|
+
details: { results },
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
case "suggest": {
|
|
81
|
+
const task = params.task;
|
|
82
|
+
if (!task) {
|
|
83
|
+
return { content: [{ type: "text", text: "❌ task required" }], details: { error: "missing_task" } };
|
|
84
|
+
}
|
|
85
|
+
const suggestions = hoardSystem.suggestTreasures(task, { limit: 3 });
|
|
86
|
+
if (suggestions.length === 0) {
|
|
87
|
+
return { content: [{ type: "text", text: "💡 No relevant treasures found" }], details: { suggestions: [] } };
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
content: [{
|
|
91
|
+
type: "text",
|
|
92
|
+
text: `💡 Suggested treasures for task:\n\n${suggestions.map((s, i) => `${i + 1}. ${s.treasure.name} (${s.treasure.language})\n Relevance: ${(s.relevance * 100).toFixed(0)}%\n ${s.reason}`).join("\n\n")}`,
|
|
93
|
+
}],
|
|
94
|
+
details: { suggestions },
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
case "get": {
|
|
98
|
+
const treasureId = params.treasureId;
|
|
99
|
+
if (!treasureId) {
|
|
100
|
+
return { content: [{ type: "text", text: "❌ treasureId required" }], details: { error: "missing_id" } };
|
|
101
|
+
}
|
|
102
|
+
const treasure = hoardSystem.get(treasureId);
|
|
103
|
+
if (!treasure) {
|
|
104
|
+
return { content: [{ type: "text", text: "❌ Treasure not found" }], details: { error: "not_found" } };
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
content: [{
|
|
108
|
+
type: "text",
|
|
109
|
+
text: `💎 ${treasure.name}\nLanguage: ${treasure.language}\nQuality: ${treasure.quality}/10\nUsed: ${treasure.timesUsed} times\nTags: ${treasure.tags.join(", ")}\n\n\`\`\`${treasure.language}\n${treasure.code}\n\`\`\``,
|
|
110
|
+
}],
|
|
111
|
+
details: { treasure },
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
case "share": {
|
|
115
|
+
const treasureId = params.treasureId;
|
|
116
|
+
const sessionKey = params.sessionKey;
|
|
117
|
+
if (!treasureId || !sessionKey) {
|
|
118
|
+
return { content: [{ type: "text", text: "❌ treasureId and sessionKey required" }], details: { error: "missing_params" } };
|
|
119
|
+
}
|
|
120
|
+
const success = hoardSystem.shareTreasure(treasureId, sessionKey);
|
|
121
|
+
return {
|
|
122
|
+
content: [{ type: "text", text: success ? "✅ Treasure shared" : "❌ Failed to share" }],
|
|
123
|
+
details: { success },
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
case "stats": {
|
|
127
|
+
const stats = hoardSystem.getStats();
|
|
128
|
+
return {
|
|
129
|
+
content: [{
|
|
130
|
+
type: "text",
|
|
131
|
+
text: `💎 Hoard Statistics:\n\nTotal treasures: ${stats.totalTreasures}\nTotal usage: ${stats.totalUsage}\nAverage quality: ${stats.averageQuality.toFixed(1)}/10\nShared: ${stats.sharedTreasures}\n\nBy Language:\n${Object.entries(stats.byLanguage).map(([l, c]) => ` ${l}: ${c}`).join("\n")}`,
|
|
132
|
+
}],
|
|
133
|
+
details: stats,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
default:
|
|
137
|
+
return { content: [{ type: "text", text: `❌ Unknown operation: ${operation}` }], details: { error: "unknown_op" } };
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
// ============================================================================
|
|
142
|
+
// COMMANDS
|
|
143
|
+
// ============================================================================
|
|
144
|
+
// /treasure <query>
|
|
145
|
+
pi.registerCommand("treasure", {
|
|
146
|
+
description: "Search treasures: /treasure <query>",
|
|
147
|
+
handler: async (args, ctx) => {
|
|
148
|
+
if (!args.trim()) {
|
|
149
|
+
ctx.ui.notify("❌ Usage: /treasure <search query>", "error");
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const results = hoardSystem.search(args, { limit: 5 });
|
|
153
|
+
if (results.length === 0) {
|
|
154
|
+
ctx.ui.notify("🔍 No treasures found", "info");
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
ctx.ui.notify(`🔍 ${results.length} treasures:\n${results.map(r => `• ${r.treasure.name}`).join("\n")}`, "info");
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
// /treasure-add
|
|
161
|
+
pi.registerCommand("treasure-add", {
|
|
162
|
+
description: "Add treasure (interactive): /treasure-add",
|
|
163
|
+
handler: async (_args, ctx) => {
|
|
164
|
+
ctx.ui.notify("💎 Use hoard_manage tool to add treasures", "info");
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
// /treasure-stats
|
|
168
|
+
pi.registerCommand("treasure-stats", {
|
|
169
|
+
description: "Show hoard statistics",
|
|
170
|
+
handler: async (_args, ctx) => {
|
|
171
|
+
const stats = hoardSystem.getStats();
|
|
172
|
+
ctx.ui.notify(`💎 Hoard: ${stats.totalTreasures} treasures, ${stats.totalUsage} uses`, "info");
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
// /treasure-suggest <task>
|
|
176
|
+
pi.registerCommand("treasure-suggest", {
|
|
177
|
+
description: "Suggest treasures for task: /treasure-suggest <task>",
|
|
178
|
+
handler: async (args, ctx) => {
|
|
179
|
+
if (!args.trim()) {
|
|
180
|
+
ctx.ui.notify("❌ Usage: /treasure-suggest <task description>", "error");
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
const suggestions = hoardSystem.suggestTreasures(args, { limit: 3 });
|
|
184
|
+
if (suggestions.length === 0) {
|
|
185
|
+
ctx.ui.notify("💡 No relevant treasures", "info");
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
ctx.ui.notify(`💡 Suggestions:\n${suggestions.map(s => `• ${s.treasure.name} (${(s.relevance * 100).toFixed(0)}%)`).join("\n")}`, "info");
|
|
189
|
+
},
|
|
190
|
+
});
|
|
191
|
+
console.log("[💎 DraconicHoard] Extension loaded");
|
|
192
|
+
console.log(" Commands: /treasure, /treasure-stats, /treasure-suggest");
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=draconic-hoard-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draconic-hoard-extension.js","sourceRoot":"","sources":["../../../../src/extensions/core/draconic-hoard-extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🏰 Draconic Lair Extension
|
|
3
|
+
*
|
|
4
|
+
* Provides /lair commands for project workspace management
|
|
5
|
+
* Superior to agent-workspace-extension with auto-detection and per-file memory
|
|
6
|
+
*/
|
|
7
|
+
import { Type } from "@sinclair/typebox";
|
|
8
|
+
import * as path from "node:path";
|
|
9
|
+
import { getDraconicLairSystem, } from "../../lair/DraconicLairSystem";
|
|
10
|
+
// 🏰 Lair system singleton
|
|
11
|
+
let lairSystem;
|
|
12
|
+
export default function register(pi) {
|
|
13
|
+
// Initialize
|
|
14
|
+
lairSystem = getDraconicLairSystem();
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// TOOL: lair_manage
|
|
17
|
+
// ============================================================================
|
|
18
|
+
pi.registerTool({
|
|
19
|
+
name: "lair_manage",
|
|
20
|
+
label: "🏰 Draconic Lair Management",
|
|
21
|
+
description: "Manage project workspaces with auto-detection and file tracking",
|
|
22
|
+
parameters: Type.Object({
|
|
23
|
+
operation: Type.String({
|
|
24
|
+
description: "Operation: get, create, list, stats, add_agent, remove_agent, record_file",
|
|
25
|
+
}),
|
|
26
|
+
path: Type.Optional(Type.String({ description: "Project path" })),
|
|
27
|
+
lairId: Type.Optional(Type.String({ description: "Lair ID" })),
|
|
28
|
+
agentId: Type.Optional(Type.String({ description: "Agent ID" })),
|
|
29
|
+
filePath: Type.Optional(Type.String({ description: "File path" })),
|
|
30
|
+
fileOperation: Type.Optional(Type.String({ description: "File operation type" })),
|
|
31
|
+
description: Type.Optional(Type.String({ description: "Operation description" })),
|
|
32
|
+
}),
|
|
33
|
+
async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
|
|
34
|
+
const operation = params.operation;
|
|
35
|
+
switch (operation) {
|
|
36
|
+
case "get": {
|
|
37
|
+
const projectPath = params.path;
|
|
38
|
+
if (!projectPath) {
|
|
39
|
+
return { content: [{ type: "text", text: "❌ path required" }], details: { error: "missing_path" } };
|
|
40
|
+
}
|
|
41
|
+
const lair = lairSystem.getLair(projectPath);
|
|
42
|
+
return {
|
|
43
|
+
content: [{
|
|
44
|
+
type: "text",
|
|
45
|
+
text: `🏰 Lair: ${lair.name}\nID: ${lair.id}\nType: ${lair.type}\nFramework: ${lair.framework}\nLanguage: ${lair.language}\n
|
|
46
|
+
Active Agents: ${lair.activeAgents.size}\nFile Memories: ${lair.fileMemories.size}\n\nSuggested Tools:\n${lair.suggestedTools.map(t => ` • ${t}`).join("\n")}`,
|
|
47
|
+
}],
|
|
48
|
+
details: { lair },
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
case "list": {
|
|
52
|
+
const lairs = lairSystem.listLairs();
|
|
53
|
+
const stats = lairSystem.getStats();
|
|
54
|
+
return {
|
|
55
|
+
content: [{
|
|
56
|
+
type: "text",
|
|
57
|
+
text: `🏰 All Lairs (${stats.totalLairs}):\n\n${lairs.map(l => `• ${l.name} (${l.type}, ${l.framework}) - ${l.activeAgents.size} agents`).join("\n")}`,
|
|
58
|
+
}],
|
|
59
|
+
details: { lairs, stats },
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
case "stats": {
|
|
63
|
+
const stats = lairSystem.getStats();
|
|
64
|
+
return {
|
|
65
|
+
content: [{
|
|
66
|
+
type: "text",
|
|
67
|
+
text: `🏰 Lair Statistics:\n\nTotal: ${stats.totalLairs}\nActive Agents: ${stats.totalAgents}\nFile Memories: ${stats.totalFileMemories}\n\nBy Type:\n${Object.entries(stats.byType).map(([k, v]) => ` ${k}: ${v}`).join("\n")}`,
|
|
68
|
+
}],
|
|
69
|
+
details: stats,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
case "add_agent": {
|
|
73
|
+
const lairId = params.lairId;
|
|
74
|
+
const agentId = params.agentId;
|
|
75
|
+
if (!lairId || !agentId) {
|
|
76
|
+
return { content: [{ type: "text", text: "❌ lairId and agentId required" }], details: { error: "missing_params" } };
|
|
77
|
+
}
|
|
78
|
+
const success = lairSystem.addAgent(lairId, agentId);
|
|
79
|
+
return {
|
|
80
|
+
content: [{ type: "text", text: success ? `✅ Agent ${agentId} added to lair` : `❌ Failed to add agent` }],
|
|
81
|
+
details: { success, lairId, agentId },
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
case "record_file": {
|
|
85
|
+
const lairId = params.lairId;
|
|
86
|
+
const filePath = params.filePath;
|
|
87
|
+
const agentId = params.agentId;
|
|
88
|
+
const fileOp = params.fileOperation;
|
|
89
|
+
const desc = params.description;
|
|
90
|
+
if (!lairId || !filePath || !agentId) {
|
|
91
|
+
return { content: [{ type: "text", text: "❌ missing required params" }], details: { error: "missing_params" } };
|
|
92
|
+
}
|
|
93
|
+
lairSystem.recordFileOperation(lairId, filePath, agentId, fileOp, desc || "");
|
|
94
|
+
return {
|
|
95
|
+
content: [{ type: "text", text: `✅ Recorded ${fileOp} on ${path.basename(filePath)}` }],
|
|
96
|
+
details: { lairId, filePath, agentId, operation: fileOp },
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
default:
|
|
100
|
+
return { content: [{ type: "text", text: `❌ Unknown operation: ${operation}` }], details: { error: "unknown_op" } };
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
// ============================================================================
|
|
105
|
+
// COMMANDS
|
|
106
|
+
// ============================================================================
|
|
107
|
+
// /lair [path]
|
|
108
|
+
pi.registerCommand("lair", {
|
|
109
|
+
description: "Get or create lair: /lair [path]",
|
|
110
|
+
handler: async (args, ctx) => {
|
|
111
|
+
const projectPath = args.trim() || process.cwd();
|
|
112
|
+
const lair = lairSystem.getLair(projectPath);
|
|
113
|
+
ctx.ui.notify(`🏰 Lair: ${lair.name}\nType: ${lair.type}\nFramework: ${lair.framework}\nAgents: ${lair.activeAgents.size}`, "info");
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
// /lairs
|
|
117
|
+
pi.registerCommand("lairs", {
|
|
118
|
+
description: "List all lairs",
|
|
119
|
+
handler: async (_args, ctx) => {
|
|
120
|
+
const lairs = lairSystem.listLairs();
|
|
121
|
+
const stats = lairSystem.getStats();
|
|
122
|
+
ctx.ui.notify(`${stats.totalLairs} lairs:\n${lairs.slice(0, 10).map(l => `• ${l.name}`).join("\n")}`, "info");
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
// /lair-stats
|
|
126
|
+
pi.registerCommand("lair-stats", {
|
|
127
|
+
description: "Show lair statistics",
|
|
128
|
+
handler: async (_args, ctx) => {
|
|
129
|
+
const stats = lairSystem.getStats();
|
|
130
|
+
ctx.ui.notify(`🏰 Lair Stats:\nLairs: ${stats.totalLairs}\nActive Agents: ${stats.totalAgents}\nFile Memories: ${stats.totalFileMemories}`, "info");
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
// /lair-agents <lair-path>
|
|
134
|
+
pi.registerCommand("lair-agents", {
|
|
135
|
+
description: "Show agents in lair: /lair-agents <path>",
|
|
136
|
+
handler: async (args, ctx) => {
|
|
137
|
+
const projectPath = args.trim() || process.cwd();
|
|
138
|
+
const lair = lairSystem.getLair(projectPath);
|
|
139
|
+
const agents = Array.from(lair.activeAgents).join(", ") || "none";
|
|
140
|
+
ctx.ui.notify(`${lair.name} agents:\n${agents}`, "info");
|
|
141
|
+
},
|
|
142
|
+
});
|
|
143
|
+
console.log("[🏰 DraconicLair] Extension loaded");
|
|
144
|
+
console.log(" Commands: /lair, /lairs, /lair-stats, /lair-agents");
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=draconic-lair-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draconic-lair-extension.js","sourceRoot":"","sources":["../../../../src/extensions/core/draconic-lair-extension.ts"],"names":[],"mappings":"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"}
|