@dotsetlabs/dotclaw 1.1.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 (170) hide show
  1. package/.env.example +54 -0
  2. package/LICENSE +21 -0
  3. package/README.md +111 -0
  4. package/config-examples/groups/global/CLAUDE.md +21 -0
  5. package/config-examples/groups/main/CLAUDE.md +47 -0
  6. package/config-examples/mount-allowlist.json +25 -0
  7. package/config-examples/plugin-http.json +18 -0
  8. package/config-examples/runtime.json +30 -0
  9. package/config-examples/tool-budgets.json +24 -0
  10. package/config-examples/tool-policy.json +51 -0
  11. package/container/.dockerignore +6 -0
  12. package/container/Dockerfile +74 -0
  13. package/container/agent-runner/package-lock.json +92 -0
  14. package/container/agent-runner/package.json +20 -0
  15. package/container/agent-runner/src/agent-config.ts +295 -0
  16. package/container/agent-runner/src/container-protocol.ts +73 -0
  17. package/container/agent-runner/src/daemon.ts +91 -0
  18. package/container/agent-runner/src/index.ts +1428 -0
  19. package/container/agent-runner/src/ipc.ts +321 -0
  20. package/container/agent-runner/src/memory.ts +336 -0
  21. package/container/agent-runner/src/prompt-packs.ts +341 -0
  22. package/container/agent-runner/src/tools.ts +1720 -0
  23. package/container/agent-runner/tsconfig.json +19 -0
  24. package/container/build.sh +23 -0
  25. package/container/skills/agent-browser.md +159 -0
  26. package/dist/admin-commands.d.ts +7 -0
  27. package/dist/admin-commands.d.ts.map +1 -0
  28. package/dist/admin-commands.js +87 -0
  29. package/dist/admin-commands.js.map +1 -0
  30. package/dist/agent-context.d.ts +42 -0
  31. package/dist/agent-context.d.ts.map +1 -0
  32. package/dist/agent-context.js +92 -0
  33. package/dist/agent-context.js.map +1 -0
  34. package/dist/agent-execution.d.ts +68 -0
  35. package/dist/agent-execution.d.ts.map +1 -0
  36. package/dist/agent-execution.js +169 -0
  37. package/dist/agent-execution.js.map +1 -0
  38. package/dist/agent-semaphore.d.ts +2 -0
  39. package/dist/agent-semaphore.d.ts.map +1 -0
  40. package/dist/agent-semaphore.js +52 -0
  41. package/dist/agent-semaphore.js.map +1 -0
  42. package/dist/behavior-config.d.ts +14 -0
  43. package/dist/behavior-config.d.ts.map +1 -0
  44. package/dist/behavior-config.js +52 -0
  45. package/dist/behavior-config.js.map +1 -0
  46. package/dist/cli.d.ts +3 -0
  47. package/dist/cli.d.ts.map +1 -0
  48. package/dist/cli.js +626 -0
  49. package/dist/cli.js.map +1 -0
  50. package/dist/config.d.ts +31 -0
  51. package/dist/config.d.ts.map +1 -0
  52. package/dist/config.js +38 -0
  53. package/dist/config.js.map +1 -0
  54. package/dist/container-protocol.d.ts +72 -0
  55. package/dist/container-protocol.d.ts.map +1 -0
  56. package/dist/container-protocol.js +3 -0
  57. package/dist/container-protocol.js.map +1 -0
  58. package/dist/container-runner.d.ts +59 -0
  59. package/dist/container-runner.d.ts.map +1 -0
  60. package/dist/container-runner.js +813 -0
  61. package/dist/container-runner.js.map +1 -0
  62. package/dist/cost.d.ts +9 -0
  63. package/dist/cost.d.ts.map +1 -0
  64. package/dist/cost.js +11 -0
  65. package/dist/cost.js.map +1 -0
  66. package/dist/dashboard.d.ts +58 -0
  67. package/dist/dashboard.d.ts.map +1 -0
  68. package/dist/dashboard.js +471 -0
  69. package/dist/dashboard.js.map +1 -0
  70. package/dist/db.d.ts +99 -0
  71. package/dist/db.d.ts.map +1 -0
  72. package/dist/db.js +423 -0
  73. package/dist/db.js.map +1 -0
  74. package/dist/error-messages.d.ts +17 -0
  75. package/dist/error-messages.d.ts.map +1 -0
  76. package/dist/error-messages.js +109 -0
  77. package/dist/error-messages.js.map +1 -0
  78. package/dist/index.d.ts +2 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +2072 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/locks.d.ts +2 -0
  83. package/dist/locks.d.ts.map +1 -0
  84. package/dist/locks.js +26 -0
  85. package/dist/locks.js.map +1 -0
  86. package/dist/logger.d.ts +4 -0
  87. package/dist/logger.d.ts.map +1 -0
  88. package/dist/logger.js +15 -0
  89. package/dist/logger.js.map +1 -0
  90. package/dist/maintenance.d.ts +13 -0
  91. package/dist/maintenance.d.ts.map +1 -0
  92. package/dist/maintenance.js +151 -0
  93. package/dist/maintenance.js.map +1 -0
  94. package/dist/memory-embeddings.d.ts +13 -0
  95. package/dist/memory-embeddings.d.ts.map +1 -0
  96. package/dist/memory-embeddings.js +126 -0
  97. package/dist/memory-embeddings.js.map +1 -0
  98. package/dist/memory-recall.d.ts +8 -0
  99. package/dist/memory-recall.d.ts.map +1 -0
  100. package/dist/memory-recall.js +127 -0
  101. package/dist/memory-recall.js.map +1 -0
  102. package/dist/memory-store.d.ts +149 -0
  103. package/dist/memory-store.d.ts.map +1 -0
  104. package/dist/memory-store.js +787 -0
  105. package/dist/memory-store.js.map +1 -0
  106. package/dist/metrics.d.ts +12 -0
  107. package/dist/metrics.d.ts.map +1 -0
  108. package/dist/metrics.js +134 -0
  109. package/dist/metrics.js.map +1 -0
  110. package/dist/model-registry.d.ts +67 -0
  111. package/dist/model-registry.d.ts.map +1 -0
  112. package/dist/model-registry.js +230 -0
  113. package/dist/model-registry.js.map +1 -0
  114. package/dist/mount-security.d.ts +37 -0
  115. package/dist/mount-security.d.ts.map +1 -0
  116. package/dist/mount-security.js +284 -0
  117. package/dist/mount-security.js.map +1 -0
  118. package/dist/paths.d.ts +80 -0
  119. package/dist/paths.d.ts.map +1 -0
  120. package/dist/paths.js +149 -0
  121. package/dist/paths.js.map +1 -0
  122. package/dist/personalization.d.ts +6 -0
  123. package/dist/personalization.d.ts.map +1 -0
  124. package/dist/personalization.js +180 -0
  125. package/dist/personalization.js.map +1 -0
  126. package/dist/progress.d.ts +15 -0
  127. package/dist/progress.d.ts.map +1 -0
  128. package/dist/progress.js +92 -0
  129. package/dist/progress.js.map +1 -0
  130. package/dist/runtime-config.d.ts +227 -0
  131. package/dist/runtime-config.d.ts.map +1 -0
  132. package/dist/runtime-config.js +297 -0
  133. package/dist/runtime-config.js.map +1 -0
  134. package/dist/task-scheduler.d.ts +9 -0
  135. package/dist/task-scheduler.d.ts.map +1 -0
  136. package/dist/task-scheduler.js +195 -0
  137. package/dist/task-scheduler.js.map +1 -0
  138. package/dist/telegram-format.d.ts +3 -0
  139. package/dist/telegram-format.d.ts.map +1 -0
  140. package/dist/telegram-format.js +200 -0
  141. package/dist/telegram-format.js.map +1 -0
  142. package/dist/tool-budgets.d.ts +16 -0
  143. package/dist/tool-budgets.d.ts.map +1 -0
  144. package/dist/tool-budgets.js +83 -0
  145. package/dist/tool-budgets.js.map +1 -0
  146. package/dist/tool-policy.d.ts +18 -0
  147. package/dist/tool-policy.d.ts.map +1 -0
  148. package/dist/tool-policy.js +84 -0
  149. package/dist/tool-policy.js.map +1 -0
  150. package/dist/trace-writer.d.ts +39 -0
  151. package/dist/trace-writer.d.ts.map +1 -0
  152. package/dist/trace-writer.js +27 -0
  153. package/dist/trace-writer.js.map +1 -0
  154. package/dist/types.d.ts +81 -0
  155. package/dist/types.d.ts.map +1 -0
  156. package/dist/types.js +2 -0
  157. package/dist/types.js.map +1 -0
  158. package/dist/utils.d.ts +4 -0
  159. package/dist/utils.d.ts.map +1 -0
  160. package/dist/utils.js +30 -0
  161. package/dist/utils.js.map +1 -0
  162. package/launchd/com.dotclaw.plist +32 -0
  163. package/package.json +89 -0
  164. package/scripts/autotune.js +53 -0
  165. package/scripts/bootstrap.js +348 -0
  166. package/scripts/configure.js +200 -0
  167. package/scripts/doctor.js +164 -0
  168. package/scripts/init.js +209 -0
  169. package/scripts/install.sh +219 -0
  170. package/systemd/dotclaw.service +22 -0
package/dist/cli.js ADDED
@@ -0,0 +1,626 @@
1
+ #!/usr/bin/env node
2
+ import fs from 'fs';
3
+ import path from 'path';
4
+ import { spawn, spawnSync, execSync } from 'child_process';
5
+ import readline from 'readline';
6
+ import { DOTCLAW_HOME, PACKAGE_ROOT, GROUPS_DIR, LOGS_DIR, ENV_PATH, REGISTERED_GROUPS_PATH, CONTAINER_BUILD_SCRIPT, SCRIPTS_DIR, ensureDirectoryStructure, } from './paths.js';
7
+ const PLATFORM = process.platform;
8
+ const IS_MACOS = PLATFORM === 'darwin';
9
+ const IS_LINUX = PLATFORM === 'linux';
10
+ const LAUNCHD_PLIST_NAME = 'com.dotclaw.plist';
11
+ const SYSTEMD_SERVICE_NAME = 'dotclaw.service';
12
+ function log(message) {
13
+ console.log(`[dotclaw] ${message}`);
14
+ }
15
+ function error(message) {
16
+ console.error(`[dotclaw] ERROR: ${message}`);
17
+ }
18
+ function warn(message) {
19
+ console.warn(`[dotclaw] WARN: ${message}`);
20
+ }
21
+ function getNodePath() {
22
+ return process.execPath;
23
+ }
24
+ function getUserHome() {
25
+ return process.env.HOME || process.env.USERPROFILE || '/tmp';
26
+ }
27
+ function getLaunchdPlistPath() {
28
+ return path.join(getUserHome(), 'Library', 'LaunchAgents', LAUNCHD_PLIST_NAME);
29
+ }
30
+ function isServiceRunning() {
31
+ if (IS_MACOS) {
32
+ try {
33
+ const result = execSync(`launchctl list | grep com.dotclaw`, { encoding: 'utf-8', stdio: 'pipe' });
34
+ return result.includes('com.dotclaw');
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ else if (IS_LINUX) {
41
+ try {
42
+ const result = execSync(`systemctl is-active ${SYSTEMD_SERVICE_NAME}`, { encoding: 'utf-8', stdio: 'pipe' });
43
+ return result.trim() === 'active';
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ }
49
+ return false;
50
+ }
51
+ function generateLaunchdPlist() {
52
+ const nodePath = getNodePath();
53
+ const home = getUserHome();
54
+ const distIndex = path.join(PACKAGE_ROOT, 'dist', 'index.js');
55
+ return `<?xml version="1.0" encoding="UTF-8"?>
56
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
57
+ <plist version="1.0">
58
+ <dict>
59
+ <key>Label</key>
60
+ <string>com.dotclaw</string>
61
+ <key>ProgramArguments</key>
62
+ <array>
63
+ <string>${nodePath}</string>
64
+ <string>${distIndex}</string>
65
+ </array>
66
+ <key>WorkingDirectory</key>
67
+ <string>${DOTCLAW_HOME}</string>
68
+ <key>RunAtLoad</key>
69
+ <true/>
70
+ <key>KeepAlive</key>
71
+ <true/>
72
+ <key>EnvironmentVariables</key>
73
+ <dict>
74
+ <key>PATH</key>
75
+ <string>${home}/.local/bin:/usr/local/bin:/usr/bin:/bin</string>
76
+ <key>HOME</key>
77
+ <string>${home}</string>
78
+ <key>DOTCLAW_HOME</key>
79
+ <string>${DOTCLAW_HOME}</string>
80
+ </dict>
81
+ <key>StandardOutPath</key>
82
+ <string>${LOGS_DIR}/dotclaw.log</string>
83
+ <key>StandardErrorPath</key>
84
+ <string>${LOGS_DIR}/dotclaw.error.log</string>
85
+ </dict>
86
+ </plist>`;
87
+ }
88
+ function generateSystemdService() {
89
+ const nodePath = getNodePath();
90
+ const distIndex = path.join(PACKAGE_ROOT, 'dist', 'index.js');
91
+ const user = process.env.USER || 'nobody';
92
+ return `[Unit]
93
+ Description=DotClaw Personal Assistant
94
+ After=network.target docker.service
95
+ Wants=docker.service
96
+
97
+ [Service]
98
+ Type=simple
99
+ User=${user}
100
+ Environment=NODE_ENV=production
101
+ Environment=DOTCLAW_HOME=${DOTCLAW_HOME}
102
+ ExecStart=${nodePath} ${distIndex}
103
+ WorkingDirectory=${DOTCLAW_HOME}
104
+ Restart=always
105
+ RestartSec=10
106
+
107
+ [Install]
108
+ WantedBy=multi-user.target
109
+ `;
110
+ }
111
+ async function prompt(question, defaultValue = '') {
112
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
113
+ return new Promise(resolve => {
114
+ const suffix = defaultValue ? ` [${defaultValue}]` : '';
115
+ rl.question(`${question}${suffix}: `, (answer) => {
116
+ rl.close();
117
+ resolve(answer.trim() || defaultValue);
118
+ });
119
+ });
120
+ }
121
+ // Commands
122
+ async function cmdSetup() {
123
+ log('Starting DotClaw setup...');
124
+ log(`Data directory: ${DOTCLAW_HOME}`);
125
+ log(`Package root: ${PACKAGE_ROOT}`);
126
+ // Create directory structure
127
+ log('Creating directory structure...');
128
+ ensureDirectoryStructure();
129
+ // Run init to create config files
130
+ log('Initializing configuration files...');
131
+ const initResult = spawnSync('node', [path.join(SCRIPTS_DIR, 'init.js')], {
132
+ stdio: 'inherit',
133
+ env: { ...process.env, DOTCLAW_HOME }
134
+ });
135
+ if (initResult.status !== 0) {
136
+ error('Init failed');
137
+ process.exit(1);
138
+ }
139
+ // Run configure
140
+ log('Running configuration...');
141
+ const configureResult = spawnSync('node', [path.join(SCRIPTS_DIR, 'configure.js')], {
142
+ stdio: 'inherit',
143
+ env: { ...process.env, DOTCLAW_HOME }
144
+ });
145
+ if (configureResult.status !== 0) {
146
+ error('Configuration failed');
147
+ process.exit(1);
148
+ }
149
+ // Build container
150
+ const buildContainer = await prompt('Build Docker container now? (yes/no)', 'yes');
151
+ if (buildContainer.toLowerCase().startsWith('y')) {
152
+ await cmdBuild();
153
+ }
154
+ // Install service
155
+ const installService = await prompt('Install as system service? (yes/no)', 'yes');
156
+ if (installService.toLowerCase().startsWith('y')) {
157
+ await cmdInstallService();
158
+ }
159
+ log('Setup complete!');
160
+ log('');
161
+ log('Next steps:');
162
+ log(' 1. Register your Telegram chat: dotclaw register');
163
+ log(' 2. Start the service: dotclaw start');
164
+ log(' 3. Check status: dotclaw doctor');
165
+ }
166
+ async function cmdConfigure() {
167
+ log('Running configuration...');
168
+ log(`Data directory: ${DOTCLAW_HOME}`);
169
+ // Ensure directories exist
170
+ ensureDirectoryStructure();
171
+ // Run configure script
172
+ const configureResult = spawnSync('node', [path.join(SCRIPTS_DIR, 'configure.js')], {
173
+ stdio: 'inherit',
174
+ env: { ...process.env, DOTCLAW_HOME }
175
+ });
176
+ if (configureResult.status !== 0) {
177
+ error('Configuration failed');
178
+ process.exit(1);
179
+ }
180
+ log('Configuration updated.');
181
+ if (isServiceRunning()) {
182
+ const restart = await prompt('Restart service to apply changes? (yes/no)', 'yes');
183
+ if (restart.toLowerCase().startsWith('y')) {
184
+ await cmdRestart();
185
+ }
186
+ }
187
+ }
188
+ async function cmdBuild() {
189
+ log('Building Docker container...');
190
+ if (!fs.existsSync(CONTAINER_BUILD_SCRIPT)) {
191
+ error(`Container build script not found: ${CONTAINER_BUILD_SCRIPT}`);
192
+ process.exit(1);
193
+ }
194
+ const dockerResult = spawnSync('bash', [CONTAINER_BUILD_SCRIPT], {
195
+ cwd: path.dirname(CONTAINER_BUILD_SCRIPT),
196
+ stdio: 'inherit'
197
+ });
198
+ if (dockerResult.status !== 0) {
199
+ warn('Container build failed. Make sure Docker is running.');
200
+ process.exit(1);
201
+ }
202
+ else {
203
+ log('Build complete');
204
+ }
205
+ }
206
+ async function cmdStart(foreground = false) {
207
+ const distIndex = path.join(PACKAGE_ROOT, 'dist', 'index.js');
208
+ if (!fs.existsSync(distIndex)) {
209
+ error(`DotClaw not properly installed. Missing: ${distIndex}`);
210
+ process.exit(1);
211
+ }
212
+ if (foreground) {
213
+ log('Starting DotClaw in foreground...');
214
+ const child = spawn('node', [distIndex], {
215
+ cwd: DOTCLAW_HOME,
216
+ stdio: 'inherit',
217
+ env: { ...process.env, NODE_ENV: 'production', DOTCLAW_HOME }
218
+ });
219
+ child.on('exit', code => process.exit(code || 0));
220
+ return;
221
+ }
222
+ if (IS_MACOS) {
223
+ const plistPath = getLaunchdPlistPath();
224
+ if (!fs.existsSync(plistPath)) {
225
+ warn('Service not installed. Installing now...');
226
+ await cmdInstallService();
227
+ }
228
+ if (isServiceRunning()) {
229
+ log('Service is already running');
230
+ return;
231
+ }
232
+ log('Starting service...');
233
+ try {
234
+ execSync(`launchctl load "${plistPath}"`, { stdio: 'inherit' });
235
+ log('Service started');
236
+ }
237
+ catch {
238
+ error('Failed to start service');
239
+ process.exit(1);
240
+ }
241
+ }
242
+ else if (IS_LINUX) {
243
+ if (isServiceRunning()) {
244
+ log('Service is already running');
245
+ return;
246
+ }
247
+ log('Starting service...');
248
+ try {
249
+ execSync(`sudo systemctl start ${SYSTEMD_SERVICE_NAME}`, { stdio: 'inherit' });
250
+ log('Service started');
251
+ }
252
+ catch {
253
+ error('Failed to start service. Try: dotclaw start --foreground');
254
+ process.exit(1);
255
+ }
256
+ }
257
+ else {
258
+ warn(`Unsupported platform: ${PLATFORM}. Running in foreground.`);
259
+ await cmdStart(true);
260
+ }
261
+ }
262
+ async function cmdStop() {
263
+ if (IS_MACOS) {
264
+ const plistPath = getLaunchdPlistPath();
265
+ if (!fs.existsSync(plistPath)) {
266
+ log('Service not installed');
267
+ return;
268
+ }
269
+ if (!isServiceRunning()) {
270
+ log('Service is not running');
271
+ return;
272
+ }
273
+ log('Stopping service...');
274
+ try {
275
+ execSync(`launchctl unload "${plistPath}"`, { stdio: 'inherit' });
276
+ log('Service stopped');
277
+ }
278
+ catch {
279
+ error('Failed to stop service');
280
+ process.exit(1);
281
+ }
282
+ }
283
+ else if (IS_LINUX) {
284
+ if (!isServiceRunning()) {
285
+ log('Service is not running');
286
+ return;
287
+ }
288
+ log('Stopping service...');
289
+ try {
290
+ execSync(`sudo systemctl stop ${SYSTEMD_SERVICE_NAME}`, { stdio: 'inherit' });
291
+ log('Service stopped');
292
+ }
293
+ catch {
294
+ error('Failed to stop service');
295
+ process.exit(1);
296
+ }
297
+ }
298
+ else {
299
+ warn(`Unsupported platform: ${PLATFORM}`);
300
+ }
301
+ }
302
+ async function cmdRestart() {
303
+ await cmdStop();
304
+ await cmdStart();
305
+ }
306
+ async function cmdLogs(follow = false) {
307
+ const logFile = path.join(LOGS_DIR, 'dotclaw.log');
308
+ const errorLogFile = path.join(LOGS_DIR, 'dotclaw.error.log');
309
+ if (!fs.existsSync(logFile) && !fs.existsSync(errorLogFile)) {
310
+ log('No logs found yet');
311
+ log(`Log directory: ${LOGS_DIR}`);
312
+ return;
313
+ }
314
+ if (follow) {
315
+ log('Following logs (Ctrl+C to stop)...');
316
+ const tailArgs = ['-f'];
317
+ if (fs.existsSync(logFile))
318
+ tailArgs.push(logFile);
319
+ if (fs.existsSync(errorLogFile))
320
+ tailArgs.push(errorLogFile);
321
+ const child = spawn('tail', tailArgs, { stdio: 'inherit' });
322
+ child.on('exit', code => process.exit(code || 0));
323
+ }
324
+ else {
325
+ log('Recent logs:');
326
+ console.log('');
327
+ if (fs.existsSync(logFile)) {
328
+ try {
329
+ const content = execSync(`tail -n 50 "${logFile}"`, { encoding: 'utf-8' });
330
+ console.log(content);
331
+ }
332
+ catch {
333
+ // ignore
334
+ }
335
+ }
336
+ if (fs.existsSync(errorLogFile)) {
337
+ const errorContent = fs.readFileSync(errorLogFile, 'utf-8').trim();
338
+ if (errorContent) {
339
+ console.log('\n--- Errors ---');
340
+ try {
341
+ const content = execSync(`tail -n 20 "${errorLogFile}"`, { encoding: 'utf-8' });
342
+ console.log(content);
343
+ }
344
+ catch {
345
+ // ignore
346
+ }
347
+ }
348
+ }
349
+ }
350
+ }
351
+ async function cmdDoctor() {
352
+ log('Running diagnostics...');
353
+ console.log('');
354
+ const doctorResult = spawnSync('node', [path.join(SCRIPTS_DIR, 'doctor.js')], {
355
+ stdio: 'inherit',
356
+ env: { ...process.env, DOTCLAW_HOME }
357
+ });
358
+ console.log('');
359
+ // Additional service status
360
+ if (IS_MACOS) {
361
+ const plistPath = getLaunchdPlistPath();
362
+ console.log(`launchd plist: ${fs.existsSync(plistPath) ? 'installed' : 'not installed'}`);
363
+ console.log(`Service running: ${isServiceRunning() ? 'yes' : 'no'}`);
364
+ }
365
+ else if (IS_LINUX) {
366
+ console.log(`Service running: ${isServiceRunning() ? 'yes' : 'no'}`);
367
+ }
368
+ if (doctorResult.status !== 0) {
369
+ process.exit(doctorResult.status || 1);
370
+ }
371
+ }
372
+ async function cmdInstallService() {
373
+ fs.mkdirSync(LOGS_DIR, { recursive: true });
374
+ if (IS_MACOS) {
375
+ const plistPath = getLaunchdPlistPath();
376
+ const plistDir = path.dirname(plistPath);
377
+ fs.mkdirSync(plistDir, { recursive: true });
378
+ // Unload if already loaded
379
+ if (isServiceRunning()) {
380
+ try {
381
+ execSync(`launchctl unload "${plistPath}"`, { stdio: 'pipe' });
382
+ }
383
+ catch {
384
+ // ignore
385
+ }
386
+ }
387
+ const plistContent = generateLaunchdPlist();
388
+ fs.writeFileSync(plistPath, plistContent);
389
+ log(`Installed launchd service: ${plistPath}`);
390
+ log('Start with: dotclaw start');
391
+ }
392
+ else if (IS_LINUX) {
393
+ const servicePath = `/etc/systemd/system/${SYSTEMD_SERVICE_NAME}`;
394
+ const serviceContent = generateSystemdService();
395
+ log('Installing systemd service (requires sudo)...');
396
+ // Write to temp file first, then move with sudo
397
+ const tempPath = path.join('/tmp', SYSTEMD_SERVICE_NAME);
398
+ fs.writeFileSync(tempPath, serviceContent);
399
+ try {
400
+ execSync(`sudo mv "${tempPath}" "${servicePath}"`, { stdio: 'inherit' });
401
+ execSync('sudo systemctl daemon-reload', { stdio: 'inherit' });
402
+ execSync(`sudo systemctl enable ${SYSTEMD_SERVICE_NAME}`, { stdio: 'inherit' });
403
+ log(`Installed systemd service: ${servicePath}`);
404
+ log('Start with: dotclaw start');
405
+ }
406
+ catch {
407
+ error('Service installation failed');
408
+ process.exit(1);
409
+ }
410
+ }
411
+ else {
412
+ warn(`Unsupported platform: ${PLATFORM}. No service installed.`);
413
+ }
414
+ }
415
+ async function cmdUninstallService() {
416
+ if (IS_MACOS) {
417
+ const plistPath = getLaunchdPlistPath();
418
+ if (isServiceRunning()) {
419
+ log('Stopping service...');
420
+ try {
421
+ execSync(`launchctl unload "${plistPath}"`, { stdio: 'pipe' });
422
+ }
423
+ catch {
424
+ // ignore
425
+ }
426
+ }
427
+ if (fs.existsSync(plistPath)) {
428
+ fs.unlinkSync(plistPath);
429
+ log('Service uninstalled');
430
+ }
431
+ else {
432
+ log('Service was not installed');
433
+ }
434
+ }
435
+ else if (IS_LINUX) {
436
+ log('Removing systemd service...');
437
+ try {
438
+ execSync(`sudo systemctl stop ${SYSTEMD_SERVICE_NAME}`, { stdio: 'pipe' });
439
+ }
440
+ catch {
441
+ // ignore
442
+ }
443
+ try {
444
+ execSync(`sudo systemctl disable ${SYSTEMD_SERVICE_NAME}`, { stdio: 'pipe' });
445
+ }
446
+ catch {
447
+ // ignore
448
+ }
449
+ try {
450
+ execSync(`sudo rm /etc/systemd/system/${SYSTEMD_SERVICE_NAME}`, { stdio: 'pipe' });
451
+ execSync('sudo systemctl daemon-reload', { stdio: 'pipe' });
452
+ log('Service uninstalled');
453
+ }
454
+ catch {
455
+ warn('Could not remove systemd service file');
456
+ }
457
+ }
458
+ else {
459
+ warn(`Unsupported platform: ${PLATFORM}`);
460
+ }
461
+ }
462
+ async function cmdRegister() {
463
+ // Ensure directories exist
464
+ ensureDirectoryStructure();
465
+ let groups = {};
466
+ if (fs.existsSync(REGISTERED_GROUPS_PATH)) {
467
+ try {
468
+ groups = JSON.parse(fs.readFileSync(REGISTERED_GROUPS_PATH, 'utf-8'));
469
+ }
470
+ catch {
471
+ // ignore
472
+ }
473
+ }
474
+ console.log('Register a Telegram chat with DotClaw');
475
+ console.log('');
476
+ console.log('To find your chat ID:');
477
+ console.log(' 1. Add @userinfobot or @get_id_bot to your Telegram chat');
478
+ console.log(' 2. The bot will reply with the chat ID (usually a negative number for groups)');
479
+ console.log('');
480
+ const chatId = await prompt('Telegram chat ID');
481
+ if (!chatId) {
482
+ error('Chat ID is required');
483
+ process.exit(1);
484
+ }
485
+ const name = await prompt('Group name', 'main');
486
+ const folder = await prompt('Folder name (lowercase, hyphens only)', 'main');
487
+ if (!/^[a-z0-9-]+$/.test(folder)) {
488
+ error('Folder name must be lowercase letters, numbers, and hyphens only');
489
+ process.exit(1);
490
+ }
491
+ groups[chatId] = {
492
+ name,
493
+ folder,
494
+ added_at: new Date().toISOString()
495
+ };
496
+ fs.mkdirSync(path.dirname(REGISTERED_GROUPS_PATH), { recursive: true });
497
+ fs.writeFileSync(REGISTERED_GROUPS_PATH, JSON.stringify(groups, null, 2) + '\n');
498
+ // Create group folder
499
+ const groupDir = path.join(GROUPS_DIR, folder);
500
+ fs.mkdirSync(groupDir, { recursive: true });
501
+ log(`Registered chat ${chatId} as "${name}" (folder: ${folder})`);
502
+ if (isServiceRunning()) {
503
+ const restart = await prompt('Restart service to apply changes? (yes/no)', 'yes');
504
+ if (restart.toLowerCase().startsWith('y')) {
505
+ await cmdRestart();
506
+ }
507
+ }
508
+ }
509
+ async function cmdStatus() {
510
+ console.log(`Platform: ${PLATFORM}`);
511
+ console.log(`DOTCLAW_HOME: ${DOTCLAW_HOME}`);
512
+ console.log(`Package root: ${PACKAGE_ROOT}`);
513
+ console.log(`Service running: ${isServiceRunning() ? 'yes' : 'no'}`);
514
+ console.log(`.env: ${fs.existsSync(ENV_PATH) ? 'present' : 'missing'}`);
515
+ if (fs.existsSync(REGISTERED_GROUPS_PATH)) {
516
+ try {
517
+ const groups = JSON.parse(fs.readFileSync(REGISTERED_GROUPS_PATH, 'utf-8'));
518
+ const count = Object.keys(groups).length;
519
+ console.log(`Registered groups: ${count}`);
520
+ }
521
+ catch {
522
+ console.log('Registered groups: error reading file');
523
+ }
524
+ }
525
+ else {
526
+ console.log('Registered groups: none');
527
+ }
528
+ }
529
+ function printHelp() {
530
+ console.log(`
531
+ DotClaw - Personal OpenRouter-based assistant
532
+
533
+ Usage: dotclaw <command> [options]
534
+
535
+ Commands:
536
+ setup Run initial setup (init, configure, build, install service)
537
+ configure Re-run configuration (change API keys, model, etc.)
538
+ start Start the service (or run in foreground with --foreground)
539
+ stop Stop the service
540
+ restart Restart the service
541
+ logs Show recent logs (use --follow to tail)
542
+ doctor Run diagnostics
543
+ build Build Docker container
544
+ register Register a Telegram chat
545
+ status Show current status
546
+ install-service Install as system service
547
+ uninstall-service Remove system service
548
+ help Show this help message
549
+
550
+ Options:
551
+ --foreground, -f Run in foreground (for 'start' command)
552
+ --follow, -f Follow log output (for 'logs' command)
553
+
554
+ Data directory: ${DOTCLAW_HOME}
555
+ Override with DOTCLAW_HOME environment variable.
556
+
557
+ Examples:
558
+ dotclaw setup # First-time setup
559
+ dotclaw configure # Change configuration
560
+ dotclaw start # Start as background service
561
+ dotclaw start --foreground # Run in terminal
562
+ dotclaw logs --follow # Tail logs
563
+ dotclaw doctor # Check configuration
564
+ `);
565
+ }
566
+ async function main() {
567
+ const args = process.argv.slice(2);
568
+ const command = args[0] || 'help';
569
+ const flags = args.slice(1);
570
+ const hasFlag = (short, long) => flags.includes(short) || flags.includes(long);
571
+ try {
572
+ switch (command) {
573
+ case 'setup':
574
+ await cmdSetup();
575
+ break;
576
+ case 'configure':
577
+ await cmdConfigure();
578
+ break;
579
+ case 'build':
580
+ await cmdBuild();
581
+ break;
582
+ case 'start':
583
+ await cmdStart(hasFlag('-f', '--foreground'));
584
+ break;
585
+ case 'stop':
586
+ await cmdStop();
587
+ break;
588
+ case 'restart':
589
+ await cmdRestart();
590
+ break;
591
+ case 'logs':
592
+ await cmdLogs(hasFlag('-f', '--follow'));
593
+ break;
594
+ case 'doctor':
595
+ await cmdDoctor();
596
+ break;
597
+ case 'register':
598
+ await cmdRegister();
599
+ break;
600
+ case 'status':
601
+ await cmdStatus();
602
+ break;
603
+ case 'install-service':
604
+ await cmdInstallService();
605
+ break;
606
+ case 'uninstall-service':
607
+ await cmdUninstallService();
608
+ break;
609
+ case 'help':
610
+ case '--help':
611
+ case '-h':
612
+ printHelp();
613
+ break;
614
+ default:
615
+ error(`Unknown command: ${command}`);
616
+ printHelp();
617
+ process.exit(1);
618
+ }
619
+ }
620
+ catch (err) {
621
+ error(err instanceof Error ? err.message : String(err));
622
+ process.exit(1);
623
+ }
624
+ }
625
+ main();
626
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { CONFIG_DIR, DATA_DIR, GROUPS_DIR, STORE_DIR, LOGS_DIR, MODEL_CONFIG_PATH, MOUNT_ALLOWLIST_PATH, ENV_PATH } from './paths.js';
2
+ export { CONFIG_DIR, DATA_DIR, GROUPS_DIR, STORE_DIR, LOGS_DIR, MOUNT_ALLOWLIST_PATH, ENV_PATH, };
3
+ export declare const RUNTIME_DIR: string;
4
+ export declare const ASSISTANT_NAME: string;
5
+ export declare const SCHEDULER_POLL_INTERVAL: number;
6
+ export declare const MAIN_GROUP_FOLDER = "main";
7
+ export declare const MODEL_CONFIG_PATH_EXPORT: string;
8
+ export { MODEL_CONFIG_PATH };
9
+ export declare const PROMPT_PACKS_DIR: string;
10
+ export declare const TRACE_DIR: string;
11
+ export declare const TRACE_SAMPLE_RATE: number;
12
+ export declare const CONTAINER_IMAGE: string;
13
+ export declare const CONTAINER_TIMEOUT: number;
14
+ export declare const CONTAINER_MAX_OUTPUT_SIZE: number;
15
+ export declare const IPC_POLL_INTERVAL: number;
16
+ export declare const CONTAINER_MODE: "daemon" | "ephemeral";
17
+ export declare const CONTAINER_DAEMON_POLL_MS: number;
18
+ export declare const CONTAINER_PIDS_LIMIT: number;
19
+ export declare const CONTAINER_MEMORY: string;
20
+ export declare const CONTAINER_CPUS: string;
21
+ export declare const CONTAINER_READONLY_ROOT: boolean;
22
+ export declare const CONTAINER_TMPFS_SIZE: string;
23
+ export declare const CONTAINER_RUN_UID: string;
24
+ export declare const CONTAINER_RUN_GID: string;
25
+ export declare const TIMEZONE: string;
26
+ export declare const MAX_CONCURRENT_AGENTS: number;
27
+ export declare const AGENT_QUEUE_TIMEOUT_MS: number;
28
+ export declare const WARM_START_ENABLED: boolean;
29
+ export declare const TRACE_RETENTION_DAYS: number;
30
+ export declare const MAINTENANCE_INTERVAL_MS: number;
31
+ //# sourceMappingURL=config.d.ts.map