0xkobold 0.1.0 → 0.3.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 +48 -32
- package/README.md +426 -157
- package/dist/package.json +5 -2
- package/dist/src/agent/bootstrap-loader.js +138 -0
- package/dist/src/agent/bootstrap-loader.js.map +1 -0
- package/dist/src/agent/context-pruning.js +279 -0
- package/dist/src/agent/context-pruning.js.map +1 -0
- package/dist/src/agent/dynamic-personality.js +211 -0
- package/dist/src/agent/dynamic-personality.js.map +1 -0
- package/dist/src/agent/embedded-runner.js +79 -0
- package/dist/src/agent/embedded-runner.js.map +1 -0
- package/dist/src/agent/index.js +16 -0
- package/dist/src/agent/index.js.map +1 -0
- package/dist/src/agent/system-prompt.js +84 -0
- package/dist/src/agent/system-prompt.js.map +1 -0
- package/dist/src/agent/task-router.js +194 -0
- package/dist/src/agent/task-router.js.map +1 -0
- package/dist/src/agent/tools/index.js +2 -0
- package/dist/src/agent/tools/index.js.map +1 -0
- package/dist/src/agent/tools/spawn-agent.js +200 -0
- package/dist/src/agent/tools/spawn-agent.js.map +1 -0
- package/dist/src/agent/types/definitions.js +317 -0
- package/dist/src/agent/types/definitions.js.map +1 -0
- package/dist/src/agent/types/index.js +2 -0
- package/dist/src/agent/types/index.js.map +1 -0
- package/dist/src/agent/user-profile.js +300 -0
- package/dist/src/agent/user-profile.js.map +1 -0
- package/dist/src/agents/task-router.js +194 -0
- package/dist/src/agents/task-router.js.map +1 -0
- package/dist/src/agents/tools/index.js +2 -0
- package/dist/src/agents/tools/index.js.map +1 -0
- package/dist/src/agents/tools/spawn-agent.js +200 -0
- package/dist/src/agents/tools/spawn-agent.js.map +1 -0
- package/dist/src/agents/types/definitions.js +317 -0
- package/dist/src/agents/types/definitions.js.map +1 -0
- package/dist/src/agents/types/index.js +2 -0
- package/dist/src/agents/types/index.js.map +1 -0
- package/dist/src/auth/device-auth.js +202 -0
- package/dist/src/auth/device-auth.js.map +1 -0
- package/dist/src/auth/index.js +3 -0
- package/dist/src/auth/index.js.map +1 -0
- package/dist/src/channels/index.js +8 -0
- package/dist/src/channels/index.js.map +1 -0
- package/dist/src/channels/slack/webhook.js +128 -0
- package/dist/src/channels/slack/webhook.js.map +1 -0
- package/dist/src/channels/telegram/bot.js +223 -0
- package/dist/src/channels/telegram/bot.js.map +1 -0
- package/dist/src/channels/whatsapp/integration.js +325 -0
- package/dist/src/channels/whatsapp/integration.js.map +1 -0
- package/dist/src/cli/commands/check.js +69 -0
- package/dist/src/cli/commands/check.js.map +1 -0
- package/dist/src/cli/commands/embedded.js +36 -0
- package/dist/src/cli/commands/embedded.js.map +1 -0
- package/dist/src/cli/commands/gateway.js +127 -166
- package/dist/src/cli/commands/gateway.js.map +1 -1
- package/dist/src/cli/commands/migrate.js +24 -0
- package/dist/src/cli/commands/migrate.js.map +1 -0
- package/dist/src/cli/commands/tailscale.js +81 -0
- package/dist/src/cli/commands/tailscale.js.map +1 -0
- package/dist/src/cli/commands/telegram.js +111 -0
- package/dist/src/cli/commands/telegram.js.map +1 -0
- package/dist/src/cli/commands/tui.js +40 -22
- package/dist/src/cli/commands/tui.js.map +1 -1
- package/dist/src/cli/commands/whatsapp.js +116 -0
- package/dist/src/cli/commands/whatsapp.js.map +1 -0
- package/dist/src/cli/program-fixed.js +1 -0
- package/dist/src/cli/program-fixed.js.map +1 -0
- package/dist/src/cli/program.js +30 -29
- package/dist/src/cli/program.js.map +1 -1
- package/dist/src/config/index.js +2 -9
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/manager.js +222 -0
- package/dist/src/config/manager.js.map +1 -0
- package/dist/src/documents/index.js +3 -0
- package/dist/src/documents/index.js.map +1 -0
- package/dist/src/documents/pdf.js +168 -0
- package/dist/src/documents/pdf.js.map +1 -0
- package/dist/src/extensions/core/agent-lifecycle-extension.js +323 -0
- package/dist/src/extensions/core/agent-lifecycle-extension.js.map +1 -0
- package/dist/src/extensions/core/agent-orchestrator-extension.js +642 -0
- package/dist/src/extensions/core/agent-orchestrator-extension.js.map +1 -0
- package/dist/src/extensions/core/agent-workspace-extension.js +174 -0
- package/dist/src/extensions/core/agent-workspace-extension.js.map +1 -0
- package/dist/src/extensions/core/autonomous-executor-extension.js +145 -0
- package/dist/src/extensions/core/autonomous-executor-extension.js.map +1 -0
- package/dist/src/extensions/core/autonomous-subagent-extension.js +333 -0
- package/dist/src/extensions/core/autonomous-subagent-extension.js.map +1 -0
- package/dist/src/extensions/core/deprecated/agent-lifecycle-extension.js +323 -0
- package/dist/src/extensions/core/deprecated/agent-lifecycle-extension.js.map +1 -0
- package/dist/src/extensions/core/deprecated/autonomous-subagent-extension.js +333 -0
- package/dist/src/extensions/core/deprecated/autonomous-subagent-extension.js.map +1 -0
- package/dist/src/extensions/core/deprecated/subagent-extension.js +647 -0
- package/dist/src/extensions/core/deprecated/subagent-extension.js.map +1 -0
- package/dist/src/extensions/core/mode-manager-extension.js +11 -0
- package/dist/src/extensions/core/mode-manager-extension.js.map +1 -1
- package/dist/src/extensions/core/persona-loader-extension.js +61 -129
- package/dist/src/extensions/core/persona-loader-extension.js.map +1 -1
- package/dist/src/extensions/core/websearch-enhanced-extension.js +705 -0
- package/dist/src/extensions/core/websearch-enhanced-extension.js.map +1 -0
- package/dist/src/extensions/core/websearch-v2-extension.js +303 -0
- package/dist/src/extensions/core/websearch-v2-extension.js.map +1 -0
- package/dist/src/gateway/client.js +318 -0
- package/dist/src/gateway/client.js.map +1 -0
- package/dist/src/gateway/discord-bot.js +185 -0
- package/dist/src/gateway/discord-bot.js.map +1 -0
- package/dist/src/gateway/index.js +10 -350
- package/dist/src/gateway/index.js.map +1 -1
- package/dist/src/gateway/server.js +325 -0
- package/dist/src/gateway/server.js.map +1 -0
- package/dist/src/gateway/websocket-server.js +142 -0
- package/dist/src/gateway/websocket-server.js.map +1 -0
- package/dist/src/heartbeat/checkin.js +185 -0
- package/dist/src/heartbeat/checkin.js.map +1 -0
- package/dist/src/heartbeat/index.js +5 -0
- package/dist/src/heartbeat/index.js.map +1 -0
- package/dist/src/heartbeat/notifications.js +216 -0
- package/dist/src/heartbeat/notifications.js.map +1 -0
- package/dist/src/heartbeat/scheduler.js +284 -0
- package/dist/src/heartbeat/scheduler.js.map +1 -0
- package/dist/src/index.js +21 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/infra/index.js +3 -0
- package/dist/src/infra/index.js.map +1 -0
- package/dist/src/infra/tailscale.js +163 -0
- package/dist/src/infra/tailscale.js.map +1 -0
- package/dist/src/media/audio.js +130 -0
- package/dist/src/media/audio.js.map +1 -0
- package/dist/src/media/index.js +4 -0
- package/dist/src/media/index.js.map +1 -0
- package/dist/src/media/vision.js +131 -0
- package/dist/src/media/vision.js.map +1 -0
- package/dist/src/migration/openclaw.js +498 -0
- package/dist/src/migration/openclaw.js.map +1 -0
- package/dist/src/mode/auto-detector.js +211 -0
- package/dist/src/mode/auto-detector.js.map +1 -0
- package/dist/src/mode/index.js +3 -0
- package/dist/src/mode/index.js.map +1 -0
- package/dist/src/mode/natural-switcher.js +123 -0
- package/dist/src/mode/natural-switcher.js.map +1 -0
- package/dist/src/sandbox/docker-runner.js +228 -0
- package/dist/src/sandbox/docker-runner.js.map +1 -0
- package/dist/src/sandbox/index.js +3 -0
- package/dist/src/sandbox/index.js.map +1 -0
- package/dist/src/skills/builtin/api-worker.js +88 -0
- package/dist/src/skills/builtin/api-worker.js.map +1 -0
- package/dist/src/skills/builtin/duplicate-detector.js +469 -0
- package/dist/src/skills/builtin/duplicate-detector.js.map +1 -0
- package/dist/src/skills/builtin/nextjs-worker.js +55 -0
- package/dist/src/skills/builtin/nextjs-worker.js.map +1 -0
- package/dist/src/skills/builtin/real-workers.js +166 -0
- package/dist/src/skills/builtin/real-workers.js.map +1 -0
- package/dist/src/skills/builtin/sql-worker.js +61 -0
- package/dist/src/skills/builtin/sql-worker.js.map +1 -0
- package/dist/src/skills/builtin/test-worker.js +79 -0
- package/dist/src/skills/builtin/test-worker.js.map +1 -0
- package/dist/src/skills/builtin/web-research.js +77 -0
- package/dist/src/skills/builtin/web-research.js.map +1 -0
- package/dist/src/skills/framework.js +250 -0
- package/dist/src/skills/framework.js.map +1 -0
- package/dist/src/skills/index.js +12 -10
- package/dist/src/skills/index.js.map +1 -1
- package/dist/src/streaming/block-streamer.js +172 -0
- package/dist/src/streaming/block-streamer.js.map +1 -0
- package/dist/src/streaming/index.js +2 -0
- package/dist/src/streaming/index.js.map +1 -0
- package/dist/src/workspace/index.js +2 -0
- package/dist/src/workspace/index.js.map +1 -0
- package/dist/src/workspace/manager.js +181 -0
- package/dist/src/workspace/manager.js.map +1 -0
- package/package.json +5 -2
package/dist/src/skills/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export {
|
|
7
|
-
//
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
1
|
+
// Skills Framework (Phase 4)
|
|
2
|
+
export { getSkillRegistry, resetSkillRegistry, installSkill, getSkillMarketplace } from "./framework.js";
|
|
3
|
+
// Real Worker Skills (Phase 3.3 - NOW ACTUAL IMPLEMENTATIONS)
|
|
4
|
+
export { nextjsWorkerSkill, sqlWorkerSkill, apiWorkerSkill, testWorkerSkill, webResearchSkill, } from "./builtin/real-workers.js";
|
|
5
|
+
// Duplicate Detection Skill (v0.3.0)
|
|
6
|
+
export { DuplicateDetector, getDuplicateDetector } from "./builtin/duplicate-detector.js";
|
|
7
|
+
// Backwards compatibility - mock skills now redirect to real workers
|
|
8
|
+
export { nextjsWorkerSkill as nextjsWorkerMock } from "./builtin/nextjs-worker.js";
|
|
9
|
+
export { sqlWorkerSkill as sqlWorkerMock } from "./builtin/sql-worker.js";
|
|
10
|
+
export { apiWorkerSkill as apiWorkerMock } from "./builtin/api-worker.js";
|
|
11
|
+
export { testWorkerSkill as testWorkerMock } from "./builtin/test-worker.js";
|
|
12
|
+
export { webResearchSkill as webResearchMock } from "./builtin/web-research.js";
|
|
11
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/skills/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/skills/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EAKpB,MAAM,gBAAgB,CAAC;AAExB,8DAA8D;AAC9D,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAEnC,qCAAqC;AACrC,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAE1F,qEAAqE;AACrE,OAAO,EAAE,iBAAiB,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnF,OAAO,EAAE,cAAc,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,cAAc,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,eAAe,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,gBAAgB,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Block Streaming - v0.2.0
|
|
3
|
+
*
|
|
4
|
+
* Response streaming with block chunking and human-like pacing.
|
|
5
|
+
* Part of Phase 5.1: Response Streaming
|
|
6
|
+
*/
|
|
7
|
+
import { EventEmitter } from "events";
|
|
8
|
+
class BlockStreamer extends EventEmitter {
|
|
9
|
+
config;
|
|
10
|
+
buffer = "";
|
|
11
|
+
blocks = [];
|
|
12
|
+
streaming = false;
|
|
13
|
+
constructor(config = {}) {
|
|
14
|
+
super();
|
|
15
|
+
this.config = {
|
|
16
|
+
minDelayMs: 50,
|
|
17
|
+
maxDelayMs: 300,
|
|
18
|
+
blockSeparator: "\n\n",
|
|
19
|
+
enablePacing: true,
|
|
20
|
+
chunkSize: 100,
|
|
21
|
+
...config,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Feed content to stream
|
|
26
|
+
*/
|
|
27
|
+
feed(content) {
|
|
28
|
+
this.buffer += content;
|
|
29
|
+
this.processBuffer();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Process buffer into blocks
|
|
33
|
+
*/
|
|
34
|
+
processBuffer() {
|
|
35
|
+
// Split by separator
|
|
36
|
+
const parts = this.buffer.split(this.config.blockSeparator);
|
|
37
|
+
// Keep last part in buffer (may be incomplete)
|
|
38
|
+
this.buffer = parts.pop() || "";
|
|
39
|
+
// Process complete blocks
|
|
40
|
+
for (const part of parts) {
|
|
41
|
+
if (part.trim()) {
|
|
42
|
+
const block = this.parseBlock(part);
|
|
43
|
+
this.blocks.push(block);
|
|
44
|
+
this.emit("block", block);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Parse raw text into typed block
|
|
50
|
+
*/
|
|
51
|
+
parseBlock(text) {
|
|
52
|
+
// Detect code blocks
|
|
53
|
+
if (text.startsWith("```")) {
|
|
54
|
+
return {
|
|
55
|
+
type: "code",
|
|
56
|
+
content: text,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
// Detect tool calls
|
|
60
|
+
if (text.includes("< tool") || text.includes("<tool")) {
|
|
61
|
+
return {
|
|
62
|
+
type: "tool",
|
|
63
|
+
content: text,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// Detect thinking blocks
|
|
67
|
+
if (text.includes("<thinking>") || text.includes("< thinking >")) {
|
|
68
|
+
return {
|
|
69
|
+
type: "thinking",
|
|
70
|
+
content: text,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// Detect final blocks
|
|
74
|
+
if (text.includes("<final>") || text.includes("< final >")) {
|
|
75
|
+
return {
|
|
76
|
+
type: "final",
|
|
77
|
+
content: text,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
type: "text",
|
|
82
|
+
content: text,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Start streaming with pacing
|
|
87
|
+
*/
|
|
88
|
+
async start() {
|
|
89
|
+
if (this.streaming)
|
|
90
|
+
return;
|
|
91
|
+
this.streaming = true;
|
|
92
|
+
this.emit("start");
|
|
93
|
+
// Process any remaining buffer
|
|
94
|
+
if (this.buffer.trim()) {
|
|
95
|
+
const block = this.parseBlock(this.buffer);
|
|
96
|
+
this.blocks.push(block);
|
|
97
|
+
this.emit("block", block);
|
|
98
|
+
this.buffer = "";
|
|
99
|
+
}
|
|
100
|
+
// Stream blocks with pacing
|
|
101
|
+
if (this.config.enablePacing) {
|
|
102
|
+
for (const block of this.blocks) {
|
|
103
|
+
await this.streamBlock(block);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
this.emit("end");
|
|
107
|
+
this.streaming = false;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Stream a single block with human-like delays
|
|
111
|
+
*/
|
|
112
|
+
async streamBlock(block) {
|
|
113
|
+
const chars = block.content.length;
|
|
114
|
+
const estimatedReadTime = chars * 20; // 20ms per char
|
|
115
|
+
const delay = Math.min(this.config.maxDelayMs, Math.max(this.config.minDelayMs, estimatedReadTime));
|
|
116
|
+
// Emit with delay for natural pacing
|
|
117
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
118
|
+
this.emit("ready", block);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Flush remaining content
|
|
122
|
+
*/
|
|
123
|
+
flush() {
|
|
124
|
+
this.processBuffer();
|
|
125
|
+
if (this.buffer.trim()) {
|
|
126
|
+
const block = this.parseBlock(this.buffer);
|
|
127
|
+
this.blocks.push(block);
|
|
128
|
+
this.buffer = "";
|
|
129
|
+
}
|
|
130
|
+
return [...this.blocks];
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get all blocks
|
|
134
|
+
*/
|
|
135
|
+
getBlocks() {
|
|
136
|
+
return [...this.blocks];
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Clear streamer
|
|
140
|
+
*/
|
|
141
|
+
clear() {
|
|
142
|
+
this.buffer = "";
|
|
143
|
+
this.blocks = [];
|
|
144
|
+
this.streaming = false;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Create streamer
|
|
149
|
+
*/
|
|
150
|
+
export function createStreamer(config) {
|
|
151
|
+
return new BlockStreamer(config);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Chunk text into manageable pieces
|
|
155
|
+
*/
|
|
156
|
+
export function chunkText(text, chunkSize) {
|
|
157
|
+
const chunks = [];
|
|
158
|
+
for (let i = 0; i < text.length; i += chunkSize) {
|
|
159
|
+
chunks.push(text.slice(i, i + chunkSize));
|
|
160
|
+
}
|
|
161
|
+
return chunks;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Calculate human-like reading delay
|
|
165
|
+
*/
|
|
166
|
+
export function calculateDelay(text, wpm = 200) {
|
|
167
|
+
const words = text.split(/\\s+/).length;
|
|
168
|
+
const minutes = words / wpm;
|
|
169
|
+
return Math.max(500, minutes * 60 * 1000); // At least 500ms
|
|
170
|
+
}
|
|
171
|
+
export default createStreamer;
|
|
172
|
+
//# sourceMappingURL=block-streamer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-streamer.js","sourceRoot":"","sources":["../../../src/streaming/block-streamer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/streaming/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAiC,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/workspace/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,EAA4D,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Agent Workspace Manager - v0.2.0
|
|
3
|
+
*
|
|
4
|
+
* Per-project agent isolation and persistence.
|
|
5
|
+
* Part of Phase 5.2: Multi-Agent Workspaces
|
|
6
|
+
*/
|
|
7
|
+
import * as path from "path";
|
|
8
|
+
import * as fs from "node:fs/promises";
|
|
9
|
+
import { existsSync } from "node:fs";
|
|
10
|
+
const WORKSPACES_FILE = path.join(process.env.HOME || "~", ".0xkobold", "workspaces.json");
|
|
11
|
+
class WorkspaceManager {
|
|
12
|
+
workspaces = new Map();
|
|
13
|
+
loaded = false;
|
|
14
|
+
/**
|
|
15
|
+
* Load workspaces from disk
|
|
16
|
+
*/
|
|
17
|
+
async load() {
|
|
18
|
+
if (this.loaded)
|
|
19
|
+
return;
|
|
20
|
+
try {
|
|
21
|
+
if (existsSync(WORKSPACES_FILE)) {
|
|
22
|
+
const data = await fs.readFile(WORKSPACES_FILE, "utf-8");
|
|
23
|
+
const workspaces = JSON.parse(data);
|
|
24
|
+
for (const ws of workspaces) {
|
|
25
|
+
this.workspaces.set(ws.id, ws);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.warn("[Workspace] Failed to load workspaces:", error);
|
|
31
|
+
}
|
|
32
|
+
this.loaded = true;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Save workspaces to disk
|
|
36
|
+
*/
|
|
37
|
+
async save() {
|
|
38
|
+
const data = JSON.stringify(Array.from(this.workspaces.values()), null, 2);
|
|
39
|
+
await fs.mkdir(path.dirname(WORKSPACES_FILE), { recursive: true });
|
|
40
|
+
await fs.writeFile(WORKSPACES_FILE, data, "utf-8");
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create new workspace
|
|
44
|
+
*/
|
|
45
|
+
async create(name, workspacePath, config = {}) {
|
|
46
|
+
await this.load();
|
|
47
|
+
const id = `ws-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
|
|
48
|
+
const workspace = {
|
|
49
|
+
id,
|
|
50
|
+
name,
|
|
51
|
+
path: workspacePath,
|
|
52
|
+
agents: [],
|
|
53
|
+
createdAt: new Date().toISOString(),
|
|
54
|
+
lastActive: new Date().toISOString(),
|
|
55
|
+
config: {
|
|
56
|
+
autoStart: false,
|
|
57
|
+
shareContext: true,
|
|
58
|
+
maxAgents: 5,
|
|
59
|
+
activation: {
|
|
60
|
+
manual: true,
|
|
61
|
+
},
|
|
62
|
+
...config,
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
this.workspaces.set(id, workspace);
|
|
66
|
+
await this.save();
|
|
67
|
+
console.log(`[Workspace] Created: ${name} at ${workspacePath}`);
|
|
68
|
+
return workspace;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get workspace by ID
|
|
72
|
+
*/
|
|
73
|
+
get(id) {
|
|
74
|
+
return this.workspaces.get(id);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get workspace by path
|
|
78
|
+
*/
|
|
79
|
+
getByPath(workspacePath) {
|
|
80
|
+
return Array.from(this.workspaces.values()).find((ws) => ws.path === workspacePath);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* List all workspaces
|
|
84
|
+
*/
|
|
85
|
+
list() {
|
|
86
|
+
return Array.from(this.workspaces.values());
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Delete workspace
|
|
90
|
+
*/
|
|
91
|
+
async delete(id) {
|
|
92
|
+
const result = this.workspaces.delete(id);
|
|
93
|
+
if (result) {
|
|
94
|
+
await this.save();
|
|
95
|
+
}
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Spawn agent in workspace
|
|
100
|
+
*/
|
|
101
|
+
async spawnAgent(workspaceId, agentType, taskId) {
|
|
102
|
+
const ws = this.get(workspaceId);
|
|
103
|
+
if (!ws)
|
|
104
|
+
return null;
|
|
105
|
+
if (ws.agents.length >= ws.config.maxAgents) {
|
|
106
|
+
console.warn(`[Workspace] Max agents reached for ${ws.name}`);
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
const agent = {
|
|
110
|
+
id: `agent-${Date.now()}`,
|
|
111
|
+
type: agentType,
|
|
112
|
+
name: `${agentType}-${ws.agents.length + 1}`,
|
|
113
|
+
status: "idle",
|
|
114
|
+
taskId,
|
|
115
|
+
};
|
|
116
|
+
ws.agents.push(agent);
|
|
117
|
+
ws.lastActive = new Date().toISOString();
|
|
118
|
+
await this.save();
|
|
119
|
+
console.log(`[Workspace] Spawned ${agentType} in ${ws.name}`);
|
|
120
|
+
return agent;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Kill agent in workspace
|
|
124
|
+
*/
|
|
125
|
+
async killAgent(workspaceId, agentId) {
|
|
126
|
+
const ws = this.get(workspaceId);
|
|
127
|
+
if (!ws)
|
|
128
|
+
return false;
|
|
129
|
+
const index = ws.agents.findIndex((a) => a.id === agentId);
|
|
130
|
+
if (index >= 0) {
|
|
131
|
+
ws.agents.splice(index, 1);
|
|
132
|
+
ws.lastActive = new Date().toISOString();
|
|
133
|
+
await this.save();
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Share context between agents
|
|
140
|
+
*/
|
|
141
|
+
shareContext(workspaceId, context) {
|
|
142
|
+
const ws = this.get(workspaceId);
|
|
143
|
+
if (!ws || !ws.config.shareContext)
|
|
144
|
+
return;
|
|
145
|
+
// Store shared context (implementation would persist to file/memory)
|
|
146
|
+
console.log(`[Workspace] Context shared in ${ws.name}:`, Object.keys(context));
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get active agent count
|
|
150
|
+
*/
|
|
151
|
+
getAgentCount(workspaceId) {
|
|
152
|
+
const ws = this.get(workspaceId);
|
|
153
|
+
return ws ? ws.agents.length : 0;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
// Singleton
|
|
157
|
+
let manager = null;
|
|
158
|
+
export function getWorkspaceManager() {
|
|
159
|
+
if (!manager) {
|
|
160
|
+
manager = new WorkspaceManager();
|
|
161
|
+
}
|
|
162
|
+
return manager;
|
|
163
|
+
}
|
|
164
|
+
export function resetWorkspaceManager() {
|
|
165
|
+
manager = null;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get or create workspace for current directory
|
|
169
|
+
*/
|
|
170
|
+
export async function getCurrentWorkspace() {
|
|
171
|
+
const cwd = process.cwd();
|
|
172
|
+
const wm = getWorkspaceManager();
|
|
173
|
+
await wm.load();
|
|
174
|
+
const ws = wm.getByPath(cwd);
|
|
175
|
+
if (ws)
|
|
176
|
+
return ws;
|
|
177
|
+
// Create new workspace
|
|
178
|
+
return wm.create(path.basename(cwd), cwd);
|
|
179
|
+
}
|
|
180
|
+
export default getWorkspaceManager;
|
|
181
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/workspace/manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "0xkobold",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Your digital familiar - a personal AI assistant that learns and evolves",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "Your digital familiar - a personal AI assistant that learns and evolves (v0.3.0 - Multi-Channel, Security, Media Support)",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
7
7
|
"type": "module",
|
|
@@ -38,12 +38,15 @@
|
|
|
38
38
|
"@mariozechner/pi-agent-core": "0.57.1",
|
|
39
39
|
"@mariozechner/pi-coding-agent": "0.57.1",
|
|
40
40
|
"@mariozechner/pi-tui": "0.57.1",
|
|
41
|
+
"@whiskeysockets/baileys": "^7.0.0-rc.9",
|
|
41
42
|
"ajv": "^8.18.0",
|
|
42
43
|
"blessed": "^0.1.81",
|
|
43
44
|
"commander": "^11.1.0",
|
|
44
45
|
"discord.js": "^14.25.1",
|
|
45
46
|
"glob": "^10.5.0",
|
|
46
47
|
"json5": "^2.2.3",
|
|
48
|
+
"node-telegram-bot-api": "^0.67.0",
|
|
49
|
+
"playwright": "^1.58.2",
|
|
47
50
|
"react": "^19.2.4",
|
|
48
51
|
"sharp": "^0.33.5",
|
|
49
52
|
"zod": "^3.25.76"
|