0xkobold 0.2.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.
Files changed (60) hide show
  1. package/HEARTBEAT.md +40 -58
  2. package/README.md +387 -337
  3. package/dist/package.json +4 -2
  4. package/dist/src/auth/device-auth.js +202 -0
  5. package/dist/src/auth/device-auth.js.map +1 -0
  6. package/dist/src/auth/index.js +3 -0
  7. package/dist/src/auth/index.js.map +1 -0
  8. package/dist/src/channels/index.js +8 -0
  9. package/dist/src/channels/index.js.map +1 -0
  10. package/dist/src/channels/slack/webhook.js +128 -0
  11. package/dist/src/channels/slack/webhook.js.map +1 -0
  12. package/dist/src/channels/telegram/bot.js +223 -0
  13. package/dist/src/channels/telegram/bot.js.map +1 -0
  14. package/dist/src/channels/whatsapp/integration.js +325 -0
  15. package/dist/src/channels/whatsapp/integration.js.map +1 -0
  16. package/dist/src/cli/commands/check.js +69 -0
  17. package/dist/src/cli/commands/check.js.map +1 -0
  18. package/dist/src/cli/commands/migrate.js +24 -0
  19. package/dist/src/cli/commands/migrate.js.map +1 -0
  20. package/dist/src/cli/commands/tailscale.js +81 -0
  21. package/dist/src/cli/commands/tailscale.js.map +1 -0
  22. package/dist/src/cli/commands/telegram.js +111 -0
  23. package/dist/src/cli/commands/telegram.js.map +1 -0
  24. package/dist/src/cli/commands/tui.js +40 -22
  25. package/dist/src/cli/commands/tui.js.map +1 -1
  26. package/dist/src/cli/commands/whatsapp.js +116 -0
  27. package/dist/src/cli/commands/whatsapp.js.map +1 -0
  28. package/dist/src/cli/program.js +20 -0
  29. package/dist/src/cli/program.js.map +1 -1
  30. package/dist/src/config/index.js +2 -9
  31. package/dist/src/config/index.js.map +1 -1
  32. package/dist/src/config/manager.js +222 -0
  33. package/dist/src/config/manager.js.map +1 -0
  34. package/dist/src/documents/index.js +3 -0
  35. package/dist/src/documents/index.js.map +1 -0
  36. package/dist/src/documents/pdf.js +168 -0
  37. package/dist/src/documents/pdf.js.map +1 -0
  38. package/dist/src/gateway/client.js +318 -0
  39. package/dist/src/gateway/client.js.map +1 -0
  40. package/dist/src/infra/index.js +3 -0
  41. package/dist/src/infra/index.js.map +1 -0
  42. package/dist/src/infra/tailscale.js +163 -0
  43. package/dist/src/infra/tailscale.js.map +1 -0
  44. package/dist/src/media/audio.js +130 -0
  45. package/dist/src/media/audio.js.map +1 -0
  46. package/dist/src/media/index.js +4 -0
  47. package/dist/src/media/index.js.map +1 -0
  48. package/dist/src/media/vision.js +131 -0
  49. package/dist/src/media/vision.js.map +1 -0
  50. package/dist/src/migration/openclaw.js +498 -0
  51. package/dist/src/migration/openclaw.js.map +1 -0
  52. package/dist/src/sandbox/docker-runner.js +228 -0
  53. package/dist/src/sandbox/docker-runner.js.map +1 -0
  54. package/dist/src/sandbox/index.js +3 -0
  55. package/dist/src/sandbox/index.js.map +1 -0
  56. package/dist/src/skills/builtin/duplicate-detector.js +469 -0
  57. package/dist/src/skills/builtin/duplicate-detector.js.map +1 -0
  58. package/dist/src/skills/index.js +2 -0
  59. package/dist/src/skills/index.js.map +1 -1
  60. package/package.json +4 -2
@@ -10,6 +10,8 @@ export const tuiCommand = new Command()
10
10
  .description("Start the 0xKobold Terminal UI (interactive mode)")
11
11
  .option("-e, --extensions <paths...>", "Additional extension paths to load")
12
12
  .option("-l, --local", "Use current directory as workspace (default: global ~/.0xkobold)")
13
+ .option("-r, --remote <url>", "Connect to remote gateway instead of local (e.g., wss://vps.example.com:7777)")
14
+ .option("--token <token>", "Authentication token for remote gateway")
13
15
  .action(async (options) => {
14
16
  // The main TUI entry point is src/index.ts (relative to package root)
15
17
  const packageRoot = resolve(__dirname, "../../..");
@@ -17,9 +19,23 @@ export const tuiCommand = new Command()
17
19
  // Determine working directory: global workspace by default, or current dir with --local
18
20
  const globalWorkspace = resolve(homedir(), ".0xkobold");
19
21
  const cwd = options.local ? process.cwd() : globalWorkspace;
20
- // Write context file ONLY when using --local mode
21
- // This prevents regular runs from showing wrong directory
22
- if (options.local) {
22
+ // Remote gateway mode
23
+ if (options.remote) {
24
+ console.log(`🌐 Remote Gateway Mode: ${options.remote}`);
25
+ console.log(`📁 Local Working Directory: ${cwd}`);
26
+ console.log(`🧠 AI Processing: Remote (VPS)\n`);
27
+ }
28
+ else {
29
+ console.log(`🐉 Starting 0xKobold TUI (${options.local ? "local" : "global"} workspace)...`);
30
+ if (options.local) {
31
+ console.log(`📁 Working in: ${cwd}\n`);
32
+ }
33
+ else {
34
+ console.log(`📁 Global workspace: ${cwd}\n`);
35
+ }
36
+ }
37
+ // Write context file for local mode tracking
38
+ if (options.local || options.remote) {
23
39
  const contextFile = resolve(globalWorkspace, ".active-context");
24
40
  try {
25
41
  if (!existsSync(globalWorkspace)) {
@@ -27,23 +43,26 @@ export const tuiCommand = new Command()
27
43
  }
28
44
  writeFileSync(contextFile, JSON.stringify({
29
45
  workingDir: cwd,
30
- isLocal: true,
46
+ isLocal: options.local || !!options.remote,
47
+ remoteGateway: options.remote || null,
31
48
  timestamp: Date.now(),
32
49
  }, null, 2));
33
- // Broadcast to gateway if available
34
- try {
35
- await fetch("http://127.0.0.1:18789/event", {
36
- method: "POST",
37
- headers: { "Content-Type": "application/json" },
38
- body: JSON.stringify({
39
- type: "tui.context_changed",
40
- workingDir: cwd,
41
- isLocal: true,
42
- }),
43
- });
44
- }
45
- catch {
46
- // Gateway not running, ignore
50
+ // Broadcast to local gateway if available (only in non-remote mode)
51
+ if (!options.remote) {
52
+ try {
53
+ await fetch("http://127.0.0.1:18789/event", {
54
+ method: "POST",
55
+ headers: { "Content-Type": "application/json" },
56
+ body: JSON.stringify({
57
+ type: "tui.context_changed",
58
+ workingDir: cwd,
59
+ isLocal: true,
60
+ }),
61
+ });
62
+ }
63
+ catch {
64
+ // Gateway not running, ignore
65
+ }
47
66
  }
48
67
  }
49
68
  catch {
@@ -63,7 +82,6 @@ export const tuiCommand = new Command()
63
82
  }
64
83
  }
65
84
  try {
66
- console.log(`🐉 Starting 0xKobold TUI (${options.local ? "local" : "global"} workspace)...\n`);
67
85
  const args = [tuiEntryPoint];
68
86
  // Add any custom extensions if provided
69
87
  if (options.extensions) {
@@ -79,12 +97,12 @@ export const tuiCommand = new Command()
79
97
  env: {
80
98
  ...process.env,
81
99
  // Set working directory for file operations (tools, etc.)
82
- // Config stays in default pi location (~/.pi/agent/)
83
100
  KOBOLD_WORKING_DIR: cwd,
84
101
  // Session identification
85
102
  KOBOLD_SESSION_TYPE: "tui",
86
- // Resume behavior - each TUI gets new session by default
87
- // Can override with KOBOLD_RESUME_SESSION env var
103
+ // Remote gateway configuration
104
+ KOBOLD_REMOTE_GATEWAY: options.remote || "",
105
+ KOBOLD_REMOTE_TOKEN: options.token || "",
88
106
  },
89
107
  });
90
108
  child.on("exit", (code) => {
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../../src/cli/commands/tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../../src/cli/commands/tui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * WhatsApp CLI Command - v0.3.0
3
+ *
4
+ * Manage WhatsApp bot integration.
5
+ */
6
+ import { Command } from "commander";
7
+ import { getWhatsAppIntegration, resetWhatsAppIntegration, } from "../../channels/index.js";
8
+ export function createWhatsAppCommand() {
9
+ const cmd = new Command("whatsapp")
10
+ .description("Manage WhatsApp integration")
11
+ .option("--session <path>", "Session storage path", "~/.0xkobold/whatsapp-session");
12
+ // Start WhatsApp
13
+ cmd
14
+ .command("start")
15
+ .description("Start WhatsApp connection")
16
+ .action(async (options) => {
17
+ console.log("📱 Starting WhatsApp connection...");
18
+ console.log("⚠️ Make sure to scan the QR code with your WhatsApp app\n");
19
+ try {
20
+ const whatsapp = getWhatsAppIntegration({
21
+ sessionPath: options.session,
22
+ });
23
+ // Listen for events
24
+ whatsapp.on("qr", (qr) => {
25
+ console.log("\n📱 QR CODE:");
26
+ console.log(qr);
27
+ console.log("\n👉 Scan this with WhatsApp > Settings > Linked Devices\n");
28
+ });
29
+ whatsapp.on("connected", (info) => {
30
+ console.log("✅ WhatsApp connected!");
31
+ console.log("User:", info);
32
+ console.log("\nYou can now receive messages.");
33
+ });
34
+ whatsapp.on("message", (msg) => {
35
+ const message = msg;
36
+ console.log(`📩 ${message.isGroup ? "Group" : "DM"} from ${message.from}: ${message.body.slice(0, 50)}...`);
37
+ });
38
+ whatsapp.on("disconnected", (info) => {
39
+ if (info.shouldReconnect) {
40
+ console.log("⚠️ Disconnected. Will reconnect...");
41
+ }
42
+ else {
43
+ console.log("❌ Logged out. Run '0xkobold whatsapp start' again.");
44
+ process.exit(0);
45
+ }
46
+ });
47
+ await whatsapp.start();
48
+ console.log("\n🔄 WhatsApp bot running...");
49
+ console.log("Press Ctrl+C to stop\n");
50
+ // Keep alive
51
+ process.on("SIGINT", async () => {
52
+ console.log("\n🛑 Stopping WhatsApp...");
53
+ await resetWhatsAppIntegration();
54
+ console.log("✅ WhatsApp stopped");
55
+ process.exit(0);
56
+ });
57
+ }
58
+ catch (error) {
59
+ console.error("❌ Failed to start WhatsApp:", error);
60
+ process.exit(1);
61
+ }
62
+ });
63
+ // Stop WhatsApp
64
+ cmd
65
+ .command("stop")
66
+ .description("Stop WhatsApp connection")
67
+ .action(async () => {
68
+ console.log("🛑 Stopping WhatsApp...");
69
+ await resetWhatsAppIntegration();
70
+ console.log("✅ WhatsApp stopped");
71
+ });
72
+ // Status
73
+ cmd
74
+ .command("status")
75
+ .description("Check WhatsApp status")
76
+ .action(() => {
77
+ const whatsapp = getWhatsAppIntegration();
78
+ const status = whatsapp.getStatus();
79
+ if (status.connected) {
80
+ console.log("🟢 WhatsApp: Connected");
81
+ console.log(` User: ${status.user || "Unknown"}`);
82
+ }
83
+ else if (status.qr) {
84
+ console.log("🟡 WhatsApp: Waiting for QR scan");
85
+ console.log(" Run: 0xkobold whatsapp start");
86
+ }
87
+ else {
88
+ console.log("🔴 WhatsApp: Not running");
89
+ console.log(" Run: 0xkobold whatsapp start");
90
+ }
91
+ });
92
+ // Send message (test)
93
+ cmd
94
+ .command("send")
95
+ .description("Send a test message")
96
+ .argument("<number>", "Phone number (e.g., 1234567890)")
97
+ .argument("<message>", "Message to send")
98
+ .action(async (number, message) => {
99
+ try {
100
+ const whatsapp = getWhatsAppIntegration();
101
+ if (!whatsapp.getStatus().connected) {
102
+ console.error("❌ WhatsApp not connected. Run: 0xkobold whatsapp start");
103
+ return;
104
+ }
105
+ console.log(`📤 Sending to ${number}...`);
106
+ await whatsapp.sendText(number, message);
107
+ console.log("✅ Message sent");
108
+ }
109
+ catch (error) {
110
+ console.error("❌ Failed to send:", error);
111
+ process.exit(1);
112
+ }
113
+ });
114
+ return cmd;
115
+ }
116
+ //# sourceMappingURL=whatsapp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp.js","sourceRoot":"","sources":["../../../../src/cli/commands/whatsapp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,UAAU,qBAAqB;IACnC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;SAChC,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,8BAA8B,CAAC,CAAC;IAEtF,iBAAiB;IACjB,GAAG;SACA,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QAE1E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,sBAAsB,CAAC;gBACtC,WAAW,EAAE,OAAO,CAAC,OAAO;aAC7B,CAAC,CAAC;YAEH,oBAAoB;YACpB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAU,EAAE,EAAE;gBAC/B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,IAAa,EAAE,EAAE;gBACzC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAY,EAAE,EAAE;gBACtC,MAAM,OAAO,GAAG,GAIf,CAAC;gBACF,OAAO,CAAC,GAAG,CACT,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAC/F,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,IAAkC,EAAE,EAAE;gBACjE,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;oBAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;YAEvB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YAEtC,aAAa;YACb,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;gBAC9B,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACzC,MAAM,wBAAwB,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,gBAAgB;IAChB,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,wBAAwB,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEL,SAAS;IACT,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uBAAuB,CAAC;SACpC,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,CAAC;QAEpC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,sBAAsB;IACtB,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,qBAAqB,CAAC;SAClC,QAAQ,CAAC,UAAU,EAAE,iCAAiC,CAAC;SACvD,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;SACxC,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,sBAAsB,EAAE,CAAC;YAE1C,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,KAAK,CAAC,CAAC;YAC1C,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -19,6 +19,16 @@ import { registerHeartbeatCli } from "./extensions/heartbeat.js";
19
19
  import { registerEnvCli } from "./extensions/env.js";
20
20
  // v0.2.0: Gateway command
21
21
  import { createGatewayCommand } from "./commands/gateway.js";
22
+ // v0.3.0: WhatsApp
23
+ import { createWhatsAppCommand } from "./commands/whatsapp.js";
24
+ // v0.3.0: Telegram
25
+ import { createTelegramCommand } from "./commands/telegram.js";
26
+ // v0.3.0: Migration
27
+ import { migrateCommand } from "./commands/migrate.js";
28
+ // v0.3.0: Duplicate check
29
+ import { checkCommand } from "./commands/check.js";
30
+ // v0.3.0: Tailscale
31
+ import { createTailscaleCommand } from "./commands/tailscale.js";
22
32
  // v0.2.0: Embedded mode
23
33
  import { createEmbeddedCommand } from "./commands/embedded.js";
24
34
  export function createCli() {
@@ -36,6 +46,16 @@ export function createCli() {
36
46
  program.addCommand(setupCommand);
37
47
  // v0.2.0: Gateway server
38
48
  program.addCommand(createGatewayCommand());
49
+ // v0.3.0: WhatsApp integration
50
+ program.addCommand(createWhatsAppCommand());
51
+ // v0.3.0: Telegram integration
52
+ program.addCommand(createTelegramCommand());
53
+ // v0.3.0: Tailscale VPN
54
+ program.addCommand(createTailscaleCommand());
55
+ // v0.3.0: Migration from OpenClaw
56
+ program.addCommand(migrateCommand);
57
+ // v0.3.0: Duplicate detection
58
+ program.addCommand(checkCommand);
39
59
  program.addCommand(createEmbeddedCommand());
40
60
  // Extension CLIs
41
61
  registerDiscordCli(program);
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/cli/program.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;AAErE,gBAAgB;AAChB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,kBAAkB;AAClB,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,8BAA8B;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,0BAA0B;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,wBAAwB;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;SACpC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;SAC3B,WAAW,CAAC,4CAA4C,CAAC;SACzD,kBAAkB,CAAC,oCAAoC,CAAC,CAAC;IAE5D,wBAAwB;IACxB,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAExC,oBAAoB;IACpB,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAEjC,yBAAyB;IACzB,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAE5C,iBAAiB;IACjB,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,cAAc,CAAC,OAAO,CAAC,CAAC;IAExB,oBAAoB;IACpB,OAAO;SACJ,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACnC,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../../src/cli/program.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,3 @@
1
- /**
2
- * Config module for Kobold
3
- *
4
- * Similar to koclaw/openclaw's config module
5
- * Provides types, paths, and loader for kobold.json
6
- */
7
- export * from "./types.js";
8
- export * from "./paths.js";
9
- export { loadConfig, loadConfigFromFile, getConfig, getConfigSnapshot, clearConfigCache, writeConfig, getConfigValue, setConfigValue, parseConfigJson, } from "./loader.js";
1
+ // Config Module - v0.3.0
2
+ export { ConfigManager, getConfigManager, resetConfigManager, DEFAULT_CONFIG, } from "./manager.js";
10
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,GAChB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GAEf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Configuration Manager - v0.3.0
3
+ *
4
+ * Centralized config management with validation.
5
+ */
6
+ import * as fs from "node:fs/promises";
7
+ import * as path from "node:path";
8
+ const DEFAULT_CONFIG = {
9
+ version: "0.3.0",
10
+ persona: {
11
+ name: "0xKobold",
12
+ emoji: "🐉",
13
+ description: "Your personal AI assistant",
14
+ },
15
+ heartbeat: {
16
+ enabled: true,
17
+ morning: "09:00",
18
+ evening: "18:00",
19
+ idleMinutes: 30,
20
+ },
21
+ gateway: {
22
+ enabled: true,
23
+ port: 7777,
24
+ host: "localhost",
25
+ cors: ["http://localhost:3000"],
26
+ remote: {
27
+ enabled: false,
28
+ url: undefined,
29
+ token: undefined,
30
+ password: undefined,
31
+ autoReconnect: true,
32
+ reconnectDelay: 1000,
33
+ },
34
+ },
35
+ channels: {
36
+ discord: { enabled: false },
37
+ whatsapp: { enabled: false, sessionPath: "~/.0xkobold/whatsapp-session" },
38
+ telegram: { enabled: false, mode: "polling" },
39
+ slack: { enabled: false },
40
+ },
41
+ security: {
42
+ deviceAuth: true,
43
+ dockerSandbox: true,
44
+ tokenExpiryHours: 168,
45
+ },
46
+ media: {
47
+ vision: { enabled: false, provider: "claude" },
48
+ audio: { enabled: false, provider: "openai" },
49
+ pdf: { enabled: true, maxPages: 100 },
50
+ },
51
+ llm: {
52
+ provider: "claude",
53
+ model: "claude-3-sonnet-20240229",
54
+ maxTokens: 4000,
55
+ temperature: 0.7,
56
+ },
57
+ };
58
+ class ConfigManager {
59
+ config;
60
+ configPath;
61
+ constructor(configPath = path.join(process.env.HOME || "~", ".0xkobold", "config.json")) {
62
+ this.configPath = configPath;
63
+ this.config = { ...DEFAULT_CONFIG };
64
+ }
65
+ /**
66
+ * Load configuration from file
67
+ */
68
+ async load() {
69
+ try {
70
+ const content = await fs.readFile(this.configPath, "utf-8");
71
+ const loaded = JSON.parse(content);
72
+ this.config = this.mergeConfig(DEFAULT_CONFIG, loaded);
73
+ return this.config;
74
+ }
75
+ catch {
76
+ // No config file yet, use defaults
77
+ return this.config;
78
+ }
79
+ }
80
+ /**
81
+ * Save configuration to file
82
+ */
83
+ async save() {
84
+ await fs.mkdir(path.dirname(this.configPath), { recursive: true });
85
+ await fs.writeFile(this.configPath, JSON.stringify(this.config, null, 2), "utf-8");
86
+ }
87
+ /**
88
+ * Get config value
89
+ */
90
+ get(key) {
91
+ return this.config[key];
92
+ }
93
+ /**
94
+ * Set config value
95
+ */
96
+ set(key, value) {
97
+ this.config[key] = value;
98
+ }
99
+ /**
100
+ * Get nested config
101
+ */
102
+ getNested(path) {
103
+ return path.split(".").reduce((obj, key) => obj?.[key], this.config);
104
+ }
105
+ /**
106
+ * Set nested config
107
+ */
108
+ setNested(path, value) {
109
+ const keys = path.split(".");
110
+ const lastKey = keys.pop();
111
+ const target = keys.reduce((obj, key) => {
112
+ if (!obj[key])
113
+ obj[key] = {};
114
+ return obj[key];
115
+ }, this.config);
116
+ target[lastKey] = value;
117
+ }
118
+ /**
119
+ * Validate configuration
120
+ */
121
+ validate() {
122
+ const errors = [];
123
+ // Check required fields
124
+ if (!this.config.version)
125
+ errors.push("version is required");
126
+ if (!this.config.persona.name)
127
+ errors.push("persona.name is required");
128
+ // Check LLM config
129
+ if (!this.config.llm.model)
130
+ errors.push("llm.model is required");
131
+ if (this.config.llm.temperature < 0 || this.config.llm.temperature > 2) {
132
+ errors.push("llm.temperature must be between 0 and 2");
133
+ }
134
+ // Check port range
135
+ if (this.config.gateway.port < 1 || this.config.gateway.port > 65535) {
136
+ errors.push("gateway.port must be between 1 and 65535");
137
+ }
138
+ return { valid: errors.length === 0, errors };
139
+ }
140
+ /**
141
+ * Get full config
142
+ */
143
+ getConfig() {
144
+ return { ...this.config };
145
+ }
146
+ /**
147
+ * Reset to defaults
148
+ */
149
+ reset() {
150
+ this.config = { ...DEFAULT_CONFIG };
151
+ }
152
+ /**
153
+ * Merge configs (deep merge)
154
+ */
155
+ mergeConfig(defaults, loaded) {
156
+ const result = { ...defaults };
157
+ for (const key in loaded) {
158
+ if (loaded[key] !== null && typeof loaded[key] === "object" && !Array.isArray(loaded[key])) {
159
+ result[key] = this.mergeConfig(defaults[key] || {}, loaded[key]);
160
+ }
161
+ else {
162
+ result[key] = loaded[key];
163
+ }
164
+ }
165
+ return result;
166
+ }
167
+ /**
168
+ * Export as environment variables
169
+ */
170
+ async exportToEnv() {
171
+ const lines = [];
172
+ if (this.config.channels.telegram?.token) {
173
+ lines.push(`TELEGRAM_BOT_TOKEN=${this.config.channels.telegram.token}`);
174
+ }
175
+ if (this.config.channels.discord?.token) {
176
+ lines.push(`DISCORD_BOT_TOKEN=${this.config.channels.discord.token}`);
177
+ }
178
+ if (this.config.channels.slack?.webhookUrl) {
179
+ lines.push(`SLACK_WEBHOOK_URL=${this.config.channels.slack.webhookUrl}`);
180
+ }
181
+ if (this.config.llm.apiKey) {
182
+ lines.push(`LLM_API_KEY=${this.config.llm.apiKey}`);
183
+ }
184
+ return lines.join("\n");
185
+ }
186
+ /**
187
+ * Import from environment
188
+ */
189
+ importFromEnv() {
190
+ if (process.env.TELEGRAM_BOT_TOKEN) {
191
+ this.config.channels.telegram ??= { enabled: true, mode: "polling" };
192
+ this.config.channels.telegram.token = process.env.TELEGRAM_BOT_TOKEN;
193
+ this.config.channels.telegram.enabled = true;
194
+ }
195
+ if (process.env.DISCORD_BOT_TOKEN) {
196
+ this.config.channels.discord ??= { enabled: true };
197
+ this.config.channels.discord.token = process.env.DISCORD_BOT_TOKEN;
198
+ this.config.channels.discord.enabled = true;
199
+ }
200
+ if (process.env.ANTHROPIC_API_KEY) {
201
+ this.config.llm.apiKey = process.env.ANTHROPIC_API_KEY;
202
+ }
203
+ if (process.env.OPENAI_API_KEY) {
204
+ this.config.media.audio ??= { enabled: false, provider: "openai" };
205
+ this.config.media.audio.apiKey = process.env.OPENAI_API_KEY;
206
+ }
207
+ }
208
+ }
209
+ // Singleton
210
+ let instance = null;
211
+ export function getConfigManager(configPath) {
212
+ if (!instance) {
213
+ instance = new ConfigManager(configPath);
214
+ }
215
+ return instance;
216
+ }
217
+ export function resetConfigManager() {
218
+ instance = null;
219
+ }
220
+ export { ConfigManager, DEFAULT_CONFIG };
221
+ export default ConfigManager;
222
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/config/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ // Documents Module - v0.3.0
2
+ export { PDFExtractor, extractPDF, extractPDFText, } from "./pdf.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/documents/index.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EACL,YAAY,EACZ,UAAU,EACV,cAAc,GAGf,MAAM,UAAU,CAAC"}