0xkobold 0.5.2 → 0.6.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 +88 -11
- package/dist/package.json +3 -3
- package/dist/skills/session-resume-skill.js +121 -0
- package/dist/skills/session-resume-skill.js.map +1 -0
- package/dist/src/agent/DraconicRunRegistry.js +0 -9
- package/dist/src/agent/DraconicRunRegistry.js.map +1 -1
- package/dist/src/agent/auth-profiles.js +290 -0
- package/dist/src/agent/auth-profiles.js.map +1 -0
- package/dist/src/agent/embedded-runner.js +115 -29
- package/dist/src/agent/embedded-runner.js.map +1 -1
- package/dist/src/agent/index.js +4 -0
- package/dist/src/agent/index.js.map +1 -1
- package/dist/src/agent/model-fallback.js +173 -0
- package/dist/src/agent/model-fallback.js.map +1 -0
- package/dist/src/agent/tools/spawn-agent.js.map +1 -1
- package/dist/src/cli/commands/gateway.js +4 -8
- package/dist/src/cli/commands/gateway.js.map +1 -1
- package/dist/src/cron/notifications.js +15 -5
- package/dist/src/cron/notifications.js.map +1 -1
- package/dist/src/cron/runner.js +15 -6
- package/dist/src/cron/runner.js.map +1 -1
- package/dist/src/event-bus/index.js.map +1 -1
- package/dist/src/extensions/core/gateway-status-extension.js +54 -0
- package/dist/src/extensions/core/gateway-status-extension.js.map +1 -0
- package/dist/src/gateway/gateway-server.js +383 -0
- package/dist/src/gateway/gateway-server.js.map +1 -0
- package/dist/src/gateway/index.js +15 -8
- package/dist/src/gateway/index.js.map +1 -1
- package/dist/src/gateway/methods/agent.js +348 -0
- package/dist/src/gateway/methods/agent.js.map +1 -0
- package/dist/src/gateway/methods/index.js +30 -0
- package/dist/src/gateway/methods/index.js.map +1 -0
- package/dist/src/gateway/methods/types.js +7 -0
- package/dist/src/gateway/methods/types.js.map +1 -0
- package/dist/src/gateway/persistence/AgentStore.js +6 -0
- package/dist/src/gateway/persistence/AgentStore.js.map +1 -1
- package/dist/src/gateway/protocol/frames.js +43 -0
- package/dist/src/gateway/protocol/frames.js.map +1 -0
- package/dist/src/gateway/protocol/index.js +5 -0
- package/dist/src/gateway/protocol/index.js.map +1 -0
- package/dist/src/gateway/quickstart.js +34 -0
- package/dist/src/gateway/quickstart.js.map +1 -0
- package/dist/src/index.js +33 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/memory/memory-integration.js +204 -0
- package/dist/src/memory/memory-integration.js.map +1 -0
- package/dist/src/memory/session-memory-bridge.js +177 -0
- package/dist/src/memory/session-memory-bridge.js.map +1 -0
- package/dist/src/memory/session-resume.js +265 -0
- package/dist/src/memory/session-resume.js.map +1 -0
- package/dist/src/memory/session-store.js +224 -0
- package/dist/src/memory/session-store.js.map +1 -0
- package/dist/src/skills/framework.js +104 -16
- package/dist/src/skills/framework.js.map +1 -1
- package/dist/src/tui/components/footer.js +106 -0
- package/dist/src/tui/components/footer.js.map +1 -0
- package/dist/src/tui/components/status-bar.js +82 -16
- package/dist/src/tui/components/status-bar.js.map +1 -1
- package/dist/src/tui/gateway-chat-client.js +218 -0
- package/dist/src/tui/gateway-chat-client.js.map +1 -0
- package/dist/src/tui/index.js +1 -0
- package/dist/src/tui/index.js.map +1 -1
- package/package.json +3 -3
- package/skills/session-resume-skill.ts +150 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Resume Skill
|
|
3
|
+
*
|
|
4
|
+
* Allows users to:
|
|
5
|
+
* - /sessions → List recent sessions with suggestions
|
|
6
|
+
* - /sessions search "query" → Search past sessions
|
|
7
|
+
* - /sessions resume <key> → Resume a specific session
|
|
8
|
+
* - Auto-suggests relevant sessions on startup
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { getSessionResumeSystem } from "../src/memory/session-resume";
|
|
12
|
+
|
|
13
|
+
export const sessionResumeSkill = {
|
|
14
|
+
name: "session_resume",
|
|
15
|
+
description: "Search and resume previous sessions",
|
|
16
|
+
risk: "safe",
|
|
17
|
+
|
|
18
|
+
toolDefinition: {
|
|
19
|
+
type: "function" as const,
|
|
20
|
+
function: {
|
|
21
|
+
name: "session_resume",
|
|
22
|
+
description: "Search through previous sessions or resume a specific one",
|
|
23
|
+
parameters: {
|
|
24
|
+
type: "object",
|
|
25
|
+
properties: {
|
|
26
|
+
action: {
|
|
27
|
+
type: "string",
|
|
28
|
+
enum: ["suggest", "search", "resume"],
|
|
29
|
+
description: "What to do: suggest (get recommendations), search (find by query), resume (continue session)"
|
|
30
|
+
},
|
|
31
|
+
query: {
|
|
32
|
+
type: "string",
|
|
33
|
+
description: "Search query for finding sessions (used with search action)"
|
|
34
|
+
},
|
|
35
|
+
sessionKey: {
|
|
36
|
+
type: "string",
|
|
37
|
+
description: "Session key or memory thread ID to resume"
|
|
38
|
+
},
|
|
39
|
+
context: {
|
|
40
|
+
type: "string",
|
|
41
|
+
description: "Current context for relevance matching"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
required: ["action"]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
|
|
49
|
+
async execute(args: {
|
|
50
|
+
action: "suggest" | "search" | "resume";
|
|
51
|
+
query?: string;
|
|
52
|
+
sessionKey?: string;
|
|
53
|
+
context?: string;
|
|
54
|
+
}) {
|
|
55
|
+
const system = getSessionResumeSystem();
|
|
56
|
+
|
|
57
|
+
switch (args.action) {
|
|
58
|
+
case "suggest": {
|
|
59
|
+
const suggestions = await system.getResumeSuggestions(args.context);
|
|
60
|
+
|
|
61
|
+
if (suggestions.length === 0) {
|
|
62
|
+
return {
|
|
63
|
+
success: true,
|
|
64
|
+
message: "No previous sessions found. Starting fresh!",
|
|
65
|
+
sessions: []
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const formatted = suggestions.map((s, i) =>
|
|
70
|
+
`${i + 1}. **${s.sessionKey.slice(0, 8)}** (${s.timeAgo})\n` +
|
|
71
|
+
` Reason: ${s.reason}\n` +
|
|
72
|
+
` Last: "${s.lastMessage.slice(0, 50)}..."\n` +
|
|
73
|
+
` To resume: \`/sessions resume ${s.sessionKey}\``
|
|
74
|
+
).join("\n\n");
|
|
75
|
+
|
|
76
|
+
return {
|
|
77
|
+
success: true,
|
|
78
|
+
message: `💡 ${suggestions.length} session(s) you might want to resume:\n\n${formatted}`,
|
|
79
|
+
sessions: suggestions
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
case "search": {
|
|
84
|
+
if (!args.query) {
|
|
85
|
+
return { success: false, error: "Search requires a 'query' parameter" };
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const results = await system.searchSessions(args.query);
|
|
89
|
+
|
|
90
|
+
if (results.length === 0) {
|
|
91
|
+
return {
|
|
92
|
+
success: true,
|
|
93
|
+
message: `No sessions found matching "${args.query}"`,
|
|
94
|
+
results: []
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const formatted = results.map((r, i) =>
|
|
99
|
+
`${i + 1}. **${r.sessionKey.slice(0, 8)}** (${r.messageCount} msgs, ${Math.round(r.relevanceScore * 100)}% match)\n` +
|
|
100
|
+
` Summary: ${r.summary?.slice(0, 60) || "No summary"}...\n` +
|
|
101
|
+
` Thread: \`${r.memoryThreadId}\``
|
|
102
|
+
).join("\n\n");
|
|
103
|
+
|
|
104
|
+
return {
|
|
105
|
+
success: true,
|
|
106
|
+
message: `🔍 Found ${results.length} session(s) for "${args.query}":\n\n${formatted}`,
|
|
107
|
+
results
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
case "resume": {
|
|
112
|
+
if (!args.sessionKey) {
|
|
113
|
+
return { success: false, error: "Resume requires a 'sessionKey' parameter" };
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const result = await system.resumeSession(args.sessionKey);
|
|
117
|
+
|
|
118
|
+
if (!result.success) {
|
|
119
|
+
return { success: false, error: result.error };
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return {
|
|
123
|
+
success: true,
|
|
124
|
+
message: `🔄 **Resumed session ${result.sessionKey?.slice(0, 8)}**\n\n${result.context || ""}`,
|
|
125
|
+
sessionKey: result.sessionKey,
|
|
126
|
+
context: result.context
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
default:
|
|
131
|
+
return { success: false, error: "Unknown action" };
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
// Auto-suggest on startup
|
|
137
|
+
export async function suggestOnStartup(context?: string) {
|
|
138
|
+
const system = getSessionResumeSystem();
|
|
139
|
+
const suggestions = await system.getResumeSuggestions(context);
|
|
140
|
+
|
|
141
|
+
if (suggestions.length > 0) {
|
|
142
|
+
console.log("\n🧠 [Session Resume] Recent sessions:");
|
|
143
|
+
for (const s of suggestions.slice(0, 3)) {
|
|
144
|
+
console.log(` • ${s.sessionKey.slice(0, 8)} - ${s.reason}`);
|
|
145
|
+
}
|
|
146
|
+
console.log(` Type "/sessions" to see more options\n`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export default sessionResumeSkill;
|