@ai-support-agent/cli 0.0.35-beta.0 → 0.0.35-beta.10

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 (52) hide show
  1. package/dist/agent-config-sync.d.ts.map +1 -1
  2. package/dist/agent-config-sync.js +6 -1
  3. package/dist/agent-config-sync.js.map +1 -1
  4. package/dist/agent-runner.d.ts +6 -0
  5. package/dist/agent-runner.d.ts.map +1 -1
  6. package/dist/agent-runner.js +25 -5
  7. package/dist/agent-runner.js.map +1 -1
  8. package/dist/agent-transport.d.ts.map +1 -1
  9. package/dist/agent-transport.js +10 -5
  10. package/dist/agent-transport.js.map +1 -1
  11. package/dist/api-client.d.ts +16 -1
  12. package/dist/api-client.d.ts.map +1 -1
  13. package/dist/api-client.js +11 -2
  14. package/dist/api-client.js.map +1 -1
  15. package/dist/browser/browser-local-server.d.ts.map +1 -1
  16. package/dist/browser/browser-local-server.js +1 -0
  17. package/dist/browser/browser-local-server.js.map +1 -1
  18. package/dist/child-process-manager.js +1 -1
  19. package/dist/child-process-manager.js.map +1 -1
  20. package/dist/cli/service/darwin-service.d.ts +33 -1
  21. package/dist/cli/service/darwin-service.d.ts.map +1 -1
  22. package/dist/cli/service/darwin-service.js +421 -45
  23. package/dist/cli/service/darwin-service.js.map +1 -1
  24. package/dist/cli/service/types.d.ts +1 -1
  25. package/dist/cli/service/types.d.ts.map +1 -1
  26. package/dist/cli/service-command.d.ts +1 -1
  27. package/dist/cli/service-command.d.ts.map +1 -1
  28. package/dist/cli/service-command.js +6 -6
  29. package/dist/cli/service-command.js.map +1 -1
  30. package/dist/commands/docker-commands.d.ts.map +1 -1
  31. package/dist/commands/docker-commands.js +12 -0
  32. package/dist/commands/docker-commands.js.map +1 -1
  33. package/dist/constants.d.ts +2 -0
  34. package/dist/constants.d.ts.map +1 -1
  35. package/dist/constants.js +2 -0
  36. package/dist/constants.js.map +1 -1
  37. package/dist/docker/docker-runner.d.ts +5 -5
  38. package/dist/docker/docker-runner.d.ts.map +1 -1
  39. package/dist/docker/docker-runner.js +301 -20
  40. package/dist/docker/docker-runner.js.map +1 -1
  41. package/dist/locales/en.json +5 -0
  42. package/dist/locales/ja.json +5 -0
  43. package/dist/locales/locales/en.json +5 -0
  44. package/dist/locales/locales/ja.json +5 -0
  45. package/dist/project-agent.d.ts.map +1 -1
  46. package/dist/project-agent.js +85 -8
  47. package/dist/project-agent.js.map +1 -1
  48. package/dist/types/project.d.ts +1 -0
  49. package/dist/types/project.d.ts.map +1 -1
  50. package/dist/vscode/vscode-server.js +1 -1
  51. package/dist/vscode/vscode-server.js.map +1 -1
  52. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"darwin-service.d.ts","sourceRoot":"","sources":["../../../src/cli/service/darwin-service.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE5F,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAA;AAgCxC,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAgD5D;AAED,qBAAa,qBAAsB,YAAW,eAAe;IAC3D,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAuCtC,SAAS,IAAI,IAAI;IAcjB,KAAK,IAAI,IAAI;IAiBb,IAAI,IAAI,IAAI;IAiBZ,OAAO,IAAI,IAAI;IAsBf,MAAM,IAAI,aAAa;CAgBxB"}
1
+ {"version":3,"file":"darwin-service.d.ts","sourceRoot":"","sources":["../../../src/cli/service/darwin-service.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE5F,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAA;AAgBxC,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAI/E;AAED,sDAAsD;AACtD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAGnF;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,IAAI,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBjF;AA0CD,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAgD5D;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,KAAK,EAAE,MAAM,CAAA;IACb,iBAAiB,EAAE,MAAM,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,MAAM,CAuCT;AAUD,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,MAAM,CAAA;CACzB,GAAG,MAAM,CA6DT;AAED,gDAAgD;AAChD,wBAAgB,oBAAoB,IAAI,MAAM,CAkC7C;AAMD,qBAAa,qBAAsB,YAAW,eAAe;IACrD,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA0FrD,OAAO,CAAC,aAAa;IAuCrB,SAAS,IAAI,IAAI;IA4BjB,KAAK,IAAI,IAAI;IAmCb,IAAI,IAAI,IAAI;IAmCZ,OAAO,IAAI,IAAI;IA6Cf,MAAM,IAAI,aAAa;CA4CxB"}
@@ -34,11 +34,18 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.DarwinServiceStrategy = exports.getNodePath = exports.getCliEntryPoint = void 0;
37
+ exports.getProjectLabel = getProjectLabel;
38
+ exports.getProjectPlistPath = getProjectPlistPath;
39
+ exports.getAllProjectPlists = getAllProjectPlists;
37
40
  exports.generatePlist = generatePlist;
41
+ exports.generateProjectPlist = generateProjectPlist;
42
+ exports.generateWrapperScript = generateWrapperScript;
43
+ exports.generateUpdateScript = generateUpdateScript;
38
44
  const child_process_1 = require("child_process");
39
45
  const fs = __importStar(require("fs"));
40
46
  const os = __importStar(require("os"));
41
47
  const path = __importStar(require("path"));
48
+ const config_manager_1 = require("../../config-manager");
42
49
  const i18n_1 = require("../../i18n");
43
50
  const logger_1 = require("../../logger");
44
51
  const escape_xml_1 = require("./escape-xml");
@@ -52,6 +59,58 @@ function getPlistPath() {
52
59
  function getLogDir() {
53
60
  return path.join(os.homedir(), 'Library', 'Logs', 'ai-support-agent');
54
61
  }
62
+ // ---------------------------------------------------------------------------
63
+ // Per-project plist helpers
64
+ // ---------------------------------------------------------------------------
65
+ /** Returns the LaunchAgent label for a given project */
66
+ function getProjectLabel(tenantCode, projectCode) {
67
+ const safeTenant = tenantCode.toLowerCase().replace(/[^a-z0-9-]/g, '-');
68
+ const safeProject = projectCode.toLowerCase().replace(/[^a-z0-9-]/g, '-');
69
+ return `${SERVICE_LABEL}.${safeTenant}.${safeProject}`;
70
+ }
71
+ /** Returns the plist file path for a given project */
72
+ function getProjectPlistPath(tenantCode, projectCode) {
73
+ const label = getProjectLabel(tenantCode, projectCode);
74
+ return path.join(os.homedir(), 'Library', 'LaunchAgents', `${label}.plist`);
75
+ }
76
+ /** Lists all per-project plist files under ~/Library/LaunchAgents */
77
+ function getAllProjectPlists() {
78
+ const launchAgentsDir = path.join(os.homedir(), 'Library', 'LaunchAgents');
79
+ const prefix = `${SERVICE_LABEL}.`;
80
+ const results = [];
81
+ try {
82
+ const files = fs.readdirSync(launchAgentsDir);
83
+ for (const file of files) {
84
+ if (file.startsWith(prefix) &&
85
+ file.endsWith('.plist') &&
86
+ file !== `${SERVICE_LABEL}.plist`) {
87
+ const label = file.slice(0, -'.plist'.length);
88
+ results.push({ label, plistPath: path.join(launchAgentsDir, file) });
89
+ }
90
+ }
91
+ }
92
+ catch {
93
+ // LaunchAgents dir doesn't exist yet — return empty list
94
+ }
95
+ return results;
96
+ }
97
+ /** Returns the host-side per-project config dir (mirrors what docker-runner uses) */
98
+ function getProjectConfigHostDir(tenantCode, projectCode) {
99
+ const configDir = process.env.AI_SUPPORT_AGENT_CONFIG_DIR
100
+ ? path.resolve(process.env.AI_SUPPORT_AGENT_CONFIG_DIR)
101
+ : path.join(os.homedir(), '.ai-support-agent');
102
+ return path.join(configDir, 'projects', tenantCode, projectCode, '.ai-support-agent');
103
+ }
104
+ /** Returns the services dir where wrapper scripts are stored */
105
+ function getServicesDir() {
106
+ const configDir = process.env.AI_SUPPORT_AGENT_CONFIG_DIR
107
+ ? path.resolve(process.env.AI_SUPPORT_AGENT_CONFIG_DIR)
108
+ : path.join(os.homedir(), '.ai-support-agent');
109
+ return path.join(configDir, 'services');
110
+ }
111
+ // ---------------------------------------------------------------------------
112
+ // plist generation
113
+ // ---------------------------------------------------------------------------
55
114
  const PASSTHROUGH_ENV_VARS = [
56
115
  'CLAUDE_CODE_OAUTH_TOKEN',
57
116
  'ANTHROPIC_API_KEY',
@@ -115,8 +174,222 @@ ${programArgs}
115
174
  </dict>
116
175
  </plist>`;
117
176
  }
177
+ /** Generate a per-project plist that runs a wrapper shell script */
178
+ function generateProjectPlist(opts) {
179
+ return `<?xml version="1.0" encoding="UTF-8"?>
180
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
181
+ "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
182
+ <plist version="1.0">
183
+ <dict>
184
+ <key>Label</key>
185
+ <string>${(0, escape_xml_1.escapeXml)(opts.label)}</string>
186
+
187
+ <key>ProgramArguments</key>
188
+ <array>
189
+ <string>/bin/bash</string>
190
+ <string>${(0, escape_xml_1.escapeXml)(opts.wrapperScriptPath)}</string>
191
+ </array>
192
+
193
+ <key>RunAtLoad</key>
194
+ <true/>
195
+
196
+ <key>KeepAlive</key>
197
+ <dict>
198
+ <key>SuccessfulExit</key>
199
+ <false/>
200
+ </dict>
201
+
202
+ <key>StandardOutPath</key>
203
+ <string>${(0, escape_xml_1.escapeXml)(path.join(opts.logDir, 'agent.out.log'))}</string>
204
+
205
+ <key>StandardErrorPath</key>
206
+ <string>${(0, escape_xml_1.escapeXml)(path.join(opts.logDir, 'agent.err.log'))}</string>
207
+
208
+ <key>EnvironmentVariables</key>
209
+ <dict>
210
+ <key>PATH</key>
211
+ <string>/usr/local/bin:/usr/bin:/bin:/opt/homebrew/bin</string>
212
+ <key>HOME</key>
213
+ <string>${(0, escape_xml_1.escapeXml)(os.homedir())}</string>
214
+ </dict>
215
+ </dict>
216
+ </plist>`;
217
+ }
218
+ /** Convert localhost/127.0.0.1 to host.docker.internal for container use */
219
+ function toContainerApiUrl(apiUrl) {
220
+ return apiUrl.replace(/^(https?:\/\/)(localhost|127\.0\.0\.1)(:\d+)?/, (_, scheme, _host, port) => `${scheme}host.docker.internal${port ?? ''}`);
221
+ }
222
+ /** Generate a bash wrapper script that runs docker for one project */
223
+ function generateWrapperScript(opts) {
224
+ const containerHome = '/home/node';
225
+ const containerConfigDir = `${containerHome}/.ai-support-agent`;
226
+ const homeDir = os.homedir();
227
+ const containerApiUrl = toContainerApiUrl(opts.apiUrl);
228
+ const mountLines = [
229
+ ` -v "${homeDir}/.claude:${containerHome}/.claude:rw" \\`,
230
+ ` -v "${opts.projectConfigHostDir}:${containerConfigDir}:rw" \\`,
231
+ ];
232
+ // Mount .claude.json only if it's a regular file (not a directory)
233
+ mountLines.push(` -v "${homeDir}/.claude.json:${containerHome}/.claude.json:rw" \\`);
234
+ if (opts.projectDir) {
235
+ const containerProjectDir = `/workspace/projects/${opts.projectCode}`;
236
+ mountLines.push(` -v "${opts.projectDir}:${containerProjectDir}:rw" \\`);
237
+ }
238
+ const envLines = [
239
+ ` -e AI_SUPPORT_AGENT_IN_DOCKER=1 \\`,
240
+ ` -e HOME=${containerHome} \\`,
241
+ ` -e AI_SUPPORT_AGENT_CONFIG_DIR=${containerConfigDir} \\`,
242
+ ` -e AI_SUPPORT_AGENT_TOKEN=${opts.token} \\`,
243
+ ` -e AI_SUPPORT_AGENT_API_URL=${containerApiUrl} \\`,
244
+ ];
245
+ if (opts.anthropicApiKey) {
246
+ envLines.push(` -e ANTHROPIC_API_KEY=${opts.anthropicApiKey} \\`);
247
+ }
248
+ if (opts.claudeCodeOauthToken) {
249
+ envLines.push(` -e CLAUDE_CODE_OAUTH_TOKEN=${opts.claudeCodeOauthToken} \\`);
250
+ }
251
+ const containerArgs = [
252
+ 'ai-support-agent', 'start', '--no-docker',
253
+ `--project ${opts.tenantCode}/${opts.projectCode}`,
254
+ ];
255
+ if (opts.verbose)
256
+ containerArgs.push('--verbose');
257
+ return `#!/bin/bash
258
+ set -uo pipefail
259
+
260
+ REBUILD_MARKER="${opts.projectConfigHostDir}/docker-rebuild-needed"
261
+ if [ -f "$REBUILD_MARKER" ]; then
262
+ rm -f "$REBUILD_MARKER"
263
+ ai-support-agent docker-build 2>/dev/null || true
264
+ fi
265
+
266
+ docker run --rm -i \\
267
+ ${mountLines.join('\n')}
268
+ ${envLines.join('\n')}
269
+ ${opts.imageTag} \\
270
+ ${containerArgs.join(' ')}
271
+
272
+ EXIT_CODE=$?
273
+
274
+ if [ "$EXIT_CODE" -eq 42 ]; then
275
+ exec "${opts.updateScriptPath}"
276
+ fi
277
+
278
+ exit "$EXIT_CODE"
279
+ `;
280
+ }
281
+ /** Generate the update-and-restart.sh script */
282
+ function generateUpdateScript() {
283
+ const launchAgentsDir = path.join(os.homedir(), 'Library', 'LaunchAgents');
284
+ const configDir = process.env.AI_SUPPORT_AGENT_CONFIG_DIR
285
+ ? path.resolve(process.env.AI_SUPPORT_AGENT_CONFIG_DIR)
286
+ : path.join(os.homedir(), '.ai-support-agent');
287
+ return `#!/bin/bash
288
+ set -uo pipefail
289
+
290
+ # 1. Unload all per-project LaunchAgent services
291
+ for plist in "${launchAgentsDir}"/com.ai-support-agent.cli.*.plist; do
292
+ [ -f "$plist" ] || continue
293
+ launchctl unload "$plist" 2>/dev/null || true
294
+ done
295
+
296
+ # 2. Install new version if update-version.json exists
297
+ VERSION_FILE="${configDir}/update-version.json"
298
+ if [ -f "$VERSION_FILE" ]; then
299
+ NEW_VERSION=$(node -e "try{console.log(JSON.parse(require('fs').readFileSync('$VERSION_FILE','utf-8')).version||'')}catch(e){console.log('')}" 2>/dev/null || echo "")
300
+ rm -f "$VERSION_FILE"
301
+ if [ -n "$NEW_VERSION" ]; then
302
+ npm install -g "@ai-support-agent/cli@$NEW_VERSION" --quiet 2>/dev/null || true
303
+ ai-support-agent service install 2>/dev/null || true
304
+ fi
305
+ fi
306
+
307
+ # 3. Reload all per-project LaunchAgent services
308
+ for plist in "${launchAgentsDir}"/com.ai-support-agent.cli.*.plist; do
309
+ [ -f "$plist" ] || continue
310
+ launchctl load "$plist" 2>/dev/null || true
311
+ done
312
+
313
+ exit 0
314
+ `;
315
+ }
316
+ // ---------------------------------------------------------------------------
317
+ // DarwinServiceStrategy
318
+ // ---------------------------------------------------------------------------
118
319
  class DarwinServiceStrategy {
119
- install(options) {
320
+ async install(options) {
321
+ // Load project list from config
322
+ const config = (0, config_manager_1.loadConfig)();
323
+ const projects = config ? (0, config_manager_1.getProjectList)(config) : [];
324
+ if (projects.length === 0) {
325
+ // Fallback: legacy single-plist mode (no registered projects with tenantCode)
326
+ this.installLegacy(options);
327
+ return;
328
+ }
329
+ // Per-project mode: generate one plist + wrapper script per project
330
+ const { ensureImage } = await Promise.resolve().then(() => __importStar(require('../../docker/docker-runner')));
331
+ const imageTag = `ai-support-agent:${ensureImage()}`;
332
+ const logDir = getLogDir();
333
+ if (!fs.existsSync(logDir)) {
334
+ fs.mkdirSync(logDir, { recursive: true });
335
+ }
336
+ const launchAgentsDir = path.join(os.homedir(), 'Library', 'LaunchAgents');
337
+ if (!fs.existsSync(launchAgentsDir)) {
338
+ fs.mkdirSync(launchAgentsDir, { recursive: true });
339
+ }
340
+ // Warn about legacy plist if it still exists
341
+ const legacyPlistPath = getPlistPath();
342
+ if (fs.existsSync(legacyPlistPath)) {
343
+ logger_1.logger.warn((0, i18n_1.t)('service.legacyPlistFound', { path: legacyPlistPath }));
344
+ }
345
+ const servicesDir = getServicesDir();
346
+ const updateScriptPath = path.join(process.env.AI_SUPPORT_AGENT_CONFIG_DIR
347
+ ? path.resolve(process.env.AI_SUPPORT_AGENT_CONFIG_DIR)
348
+ : path.join(os.homedir(), '.ai-support-agent'), 'update-and-restart.sh');
349
+ // Generate update-and-restart.sh
350
+ const updateScript = generateUpdateScript();
351
+ fs.writeFileSync(updateScriptPath, updateScript, { mode: 0o700 });
352
+ for (const project of projects) {
353
+ const { tenantCode, projectCode } = project;
354
+ const projectKey = `${tenantCode}-${projectCode.toLowerCase()}`;
355
+ const projectServiceDir = path.join(servicesDir, projectKey);
356
+ if (!fs.existsSync(projectServiceDir)) {
357
+ fs.mkdirSync(projectServiceDir, { recursive: true, mode: 0o700 });
358
+ }
359
+ const projectConfigHostDir = getProjectConfigHostDir(tenantCode, projectCode);
360
+ if (!fs.existsSync(projectConfigHostDir)) {
361
+ fs.mkdirSync(projectConfigHostDir, { recursive: true, mode: 0o700 });
362
+ }
363
+ const wrapperScriptPath = path.join(projectServiceDir, 'run.sh');
364
+ const wrapperScript = generateWrapperScript({
365
+ imageTag,
366
+ tenantCode,
367
+ projectCode,
368
+ projectConfigHostDir,
369
+ projectDir: project.projectDir,
370
+ token: project.token,
371
+ apiUrl: project.apiUrl,
372
+ anthropicApiKey: process.env.ANTHROPIC_API_KEY,
373
+ claudeCodeOauthToken: process.env.CLAUDE_CODE_OAUTH_TOKEN,
374
+ verbose: options.verbose,
375
+ updateScriptPath,
376
+ });
377
+ fs.writeFileSync(wrapperScriptPath, wrapperScript, { mode: 0o700 });
378
+ const label = getProjectLabel(tenantCode, projectCode);
379
+ const plistPath = getProjectPlistPath(tenantCode, projectCode);
380
+ const projectLogDir = path.join(logDir, projectKey);
381
+ if (!fs.existsSync(projectLogDir)) {
382
+ fs.mkdirSync(projectLogDir, { recursive: true });
383
+ }
384
+ const plist = generateProjectPlist({ label, wrapperScriptPath, logDir: projectLogDir });
385
+ fs.writeFileSync(plistPath, plist, 'utf-8');
386
+ logger_1.logger.success((0, i18n_1.t)('service.projectInstalled', { projectCode, path: plistPath }));
387
+ }
388
+ logger_1.logger.info((0, i18n_1.t)('service.loadHintMulti'));
389
+ logger_1.logger.info((0, i18n_1.t)('service.logDir', { path: logDir }));
390
+ logger_1.logger.info((0, i18n_1.t)('service.noLogRotation'));
391
+ }
392
+ installLegacy(options) {
120
393
  const plistPath = getPlistPath();
121
394
  const logDir = getLogDir();
122
395
  const nodePath = (0, node_paths_1.getNodePath)();
@@ -149,81 +422,184 @@ class DarwinServiceStrategy {
149
422
  logger_1.logger.info((0, i18n_1.t)('service.noLogRotation'));
150
423
  }
151
424
  uninstall() {
152
- const plistPath = getPlistPath();
153
- if (!fs.existsSync(plistPath)) {
425
+ let removed = false;
426
+ // Remove all per-project plists
427
+ const projectPlists = getAllProjectPlists();
428
+ for (const { plistPath } of projectPlists) {
429
+ if (fs.existsSync(plistPath)) {
430
+ fs.unlinkSync(plistPath);
431
+ removed = true;
432
+ }
433
+ }
434
+ // Remove legacy plist if present
435
+ const legacyPlistPath = getPlistPath();
436
+ if (fs.existsSync(legacyPlistPath)) {
437
+ logger_1.logger.info((0, i18n_1.t)('service.unloadHint', { label: SERVICE_LABEL }));
438
+ fs.unlinkSync(legacyPlistPath);
439
+ removed = true;
440
+ }
441
+ if (!removed) {
154
442
  logger_1.logger.warn((0, i18n_1.t)('service.notInstalled'));
155
443
  return;
156
444
  }
157
- logger_1.logger.info((0, i18n_1.t)('service.unloadHint', { label: SERVICE_LABEL }));
158
- fs.unlinkSync(plistPath);
159
445
  logger_1.logger.success((0, i18n_1.t)('service.uninstalled'));
160
446
  }
161
447
  start() {
162
- const plistPath = getPlistPath();
163
- if (!fs.existsSync(plistPath)) {
164
- logger_1.logger.error((0, i18n_1.t)('service.notInstalled'));
448
+ const projectPlists = getAllProjectPlists();
449
+ if (projectPlists.length === 0) {
450
+ // Fallback to legacy
451
+ const plistPath = getPlistPath();
452
+ if (!fs.existsSync(plistPath)) {
453
+ logger_1.logger.error((0, i18n_1.t)('service.notInstalled'));
454
+ return;
455
+ }
456
+ try {
457
+ (0, child_process_1.execSync)(`launchctl load ${plistPath}`, { stdio: 'pipe' });
458
+ logger_1.logger.success((0, i18n_1.t)('service.started'));
459
+ }
460
+ catch (error) {
461
+ const message = error instanceof Error ? error.message : String(error);
462
+ logger_1.logger.error((0, i18n_1.t)('service.startFailed', { message }));
463
+ }
165
464
  return;
166
465
  }
167
- try {
168
- (0, child_process_1.execSync)(`launchctl load ${plistPath}`, { stdio: 'pipe' });
169
- logger_1.logger.success((0, i18n_1.t)('service.started'));
466
+ let failed = false;
467
+ for (const { plistPath } of projectPlists) {
468
+ try {
469
+ (0, child_process_1.execSync)(`launchctl load ${plistPath}`, { stdio: 'pipe' });
470
+ }
471
+ catch (error) {
472
+ const message = error instanceof Error ? error.message : String(error);
473
+ logger_1.logger.error((0, i18n_1.t)('service.startFailed', { message }));
474
+ failed = true;
475
+ }
170
476
  }
171
- catch (error) {
172
- const message = error instanceof Error ? error.message : String(error);
173
- logger_1.logger.error((0, i18n_1.t)('service.startFailed', { message }));
477
+ if (!failed) {
478
+ logger_1.logger.success((0, i18n_1.t)('service.started'));
174
479
  }
175
480
  }
176
481
  stop() {
177
- const plistPath = getPlistPath();
178
- if (!fs.existsSync(plistPath)) {
179
- logger_1.logger.error((0, i18n_1.t)('service.notInstalled'));
482
+ const projectPlists = getAllProjectPlists();
483
+ if (projectPlists.length === 0) {
484
+ // Fallback to legacy
485
+ const plistPath = getPlistPath();
486
+ if (!fs.existsSync(plistPath)) {
487
+ logger_1.logger.error((0, i18n_1.t)('service.notInstalled'));
488
+ return;
489
+ }
490
+ try {
491
+ (0, child_process_1.execSync)(`launchctl remove ${SERVICE_LABEL}`, { stdio: 'pipe' });
492
+ logger_1.logger.success((0, i18n_1.t)('service.stopped'));
493
+ }
494
+ catch (error) {
495
+ const message = error instanceof Error ? error.message : String(error);
496
+ logger_1.logger.error((0, i18n_1.t)('service.stopFailed', { message }));
497
+ }
180
498
  return;
181
499
  }
182
- try {
183
- (0, child_process_1.execSync)(`launchctl remove ${SERVICE_LABEL}`, { stdio: 'pipe' });
184
- logger_1.logger.success((0, i18n_1.t)('service.stopped'));
500
+ let failed = false;
501
+ for (const { label } of projectPlists) {
502
+ try {
503
+ (0, child_process_1.execSync)(`launchctl remove ${label}`, { stdio: 'pipe' });
504
+ }
505
+ catch (error) {
506
+ const message = error instanceof Error ? error.message : String(error);
507
+ logger_1.logger.error((0, i18n_1.t)('service.stopFailed', { message }));
508
+ failed = true;
509
+ }
185
510
  }
186
- catch (error) {
187
- const message = error instanceof Error ? error.message : String(error);
188
- logger_1.logger.error((0, i18n_1.t)('service.stopFailed', { message }));
511
+ if (!failed) {
512
+ logger_1.logger.success((0, i18n_1.t)('service.stopped'));
189
513
  }
190
514
  }
191
515
  restart() {
192
- const plistPath = getPlistPath();
193
- if (!fs.existsSync(plistPath)) {
194
- logger_1.logger.error((0, i18n_1.t)('service.notInstalled'));
516
+ const projectPlists = getAllProjectPlists();
517
+ if (projectPlists.length === 0) {
518
+ // Fallback to legacy
519
+ const plistPath = getPlistPath();
520
+ if (!fs.existsSync(plistPath)) {
521
+ logger_1.logger.error((0, i18n_1.t)('service.notInstalled'));
522
+ return;
523
+ }
524
+ try {
525
+ try {
526
+ (0, child_process_1.execSync)(`launchctl remove ${SERVICE_LABEL}`, { stdio: 'pipe' });
527
+ }
528
+ catch {
529
+ // Service may not be loaded — ignore
530
+ }
531
+ (0, child_process_1.execSync)(`launchctl load ${plistPath}`, { stdio: 'pipe' });
532
+ logger_1.logger.success((0, i18n_1.t)('service.restarted'));
533
+ }
534
+ catch (error) {
535
+ const message = error instanceof Error ? error.message : String(error);
536
+ logger_1.logger.error((0, i18n_1.t)('service.restartFailed', { message }));
537
+ }
195
538
  return;
196
539
  }
197
- try {
540
+ let failed = false;
541
+ for (const { label, plistPath } of projectPlists) {
198
542
  try {
199
- (0, child_process_1.execSync)(`launchctl remove ${SERVICE_LABEL}`, { stdio: 'pipe' });
543
+ try {
544
+ (0, child_process_1.execSync)(`launchctl remove ${label}`, { stdio: 'pipe' });
545
+ }
546
+ catch {
547
+ // Service may not be loaded — ignore
548
+ }
549
+ (0, child_process_1.execSync)(`launchctl load ${plistPath}`, { stdio: 'pipe' });
200
550
  }
201
- catch {
202
- // Service may not be loaded ignore
551
+ catch (error) {
552
+ const message = error instanceof Error ? error.message : String(error);
553
+ logger_1.logger.error((0, i18n_1.t)('service.restartFailed', { message }));
554
+ failed = true;
203
555
  }
204
- (0, child_process_1.execSync)(`launchctl load ${plistPath}`, { stdio: 'pipe' });
205
- logger_1.logger.success((0, i18n_1.t)('service.restarted'));
206
556
  }
207
- catch (error) {
208
- const message = error instanceof Error ? error.message : String(error);
209
- logger_1.logger.error((0, i18n_1.t)('service.restartFailed', { message }));
557
+ if (!failed) {
558
+ logger_1.logger.success((0, i18n_1.t)('service.restarted'));
210
559
  }
211
560
  }
212
561
  status() {
213
- const plistPath = getPlistPath();
562
+ const projectPlists = getAllProjectPlists();
214
563
  const logDir = getLogDir();
215
- if (!fs.existsSync(plistPath)) {
216
- return { installed: false, running: false };
564
+ if (projectPlists.length === 0) {
565
+ // Fallback to legacy
566
+ const plistPath = getPlistPath();
567
+ if (!fs.existsSync(plistPath)) {
568
+ return { installed: false, running: false };
569
+ }
570
+ try {
571
+ const output = (0, child_process_1.execSync)(`launchctl list ${SERVICE_LABEL}`, { stdio: 'pipe' }).toString();
572
+ const pidMatch = output.match(/"PID"\s*=\s*(\d+)/);
573
+ const pid = pidMatch ? parseInt(pidMatch[1], 10) : undefined;
574
+ return { installed: true, running: pid !== undefined, pid, logDir };
575
+ }
576
+ catch {
577
+ return { installed: true, running: false, logDir };
578
+ }
217
579
  }
218
- try {
219
- const output = (0, child_process_1.execSync)(`launchctl list ${SERVICE_LABEL}`, { stdio: 'pipe' }).toString();
220
- const pidMatch = output.match(/"PID"\s*=\s*(\d+)/);
221
- const pid = pidMatch ? parseInt(pidMatch[1], 10) : undefined;
222
- return { installed: true, running: pid !== undefined, pid, logDir };
580
+ // Multi-project mode: report overall status
581
+ let anyRunning = false;
582
+ let anyInstalled = false;
583
+ let firstPid;
584
+ for (const { label } of projectPlists) {
585
+ anyInstalled = true;
586
+ try {
587
+ const output = (0, child_process_1.execSync)(`launchctl list ${label}`, { stdio: 'pipe' }).toString();
588
+ const pidMatch = output.match(/"PID"\s*=\s*(\d+)/);
589
+ if (pidMatch) {
590
+ anyRunning = true;
591
+ if (!firstPid)
592
+ firstPid = parseInt(pidMatch[1], 10);
593
+ }
594
+ }
595
+ catch {
596
+ // Not loaded
597
+ }
223
598
  }
224
- catch {
225
- return { installed: true, running: false, logDir };
599
+ if (!anyInstalled) {
600
+ return { installed: false, running: false };
226
601
  }
602
+ return { installed: true, running: anyRunning, pid: firstPid, logDir };
227
603
  }
228
604
  }
229
605
  exports.DarwinServiceStrategy = DarwinServiceStrategy;
@@ -1 +1 @@
1
- {"version":3,"file":"darwin-service.js","sourceRoot":"","sources":["../../../src/cli/service/darwin-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"darwin-service.js","sourceRoot":"","sources":["../../../src/cli/service/darwin-service.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export interface ServiceStatus {
9
9
  logDir?: string;
10
10
  }
11
11
  export interface ServiceStrategy {
12
- install(options: ServiceOptions): void;
12
+ install(options: ServiceOptions): void | Promise<void>;
13
13
  uninstall(): void;
14
14
  start(): void;
15
15
  stop(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/service/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;IACtC,SAAS,IAAI,IAAI,CAAA;IACjB,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;IACZ,OAAO,IAAI,IAAI,CAAA;IACf,MAAM,IAAI,aAAa,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/service/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,SAAS,IAAI,IAAI,CAAA;IACjB,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;IACZ,OAAO,IAAI,IAAI,CAAA;IACf,MAAM,IAAI,aAAa,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB"}
@@ -3,7 +3,7 @@ import { generatePlist } from './service/darwin-service';
3
3
  export declare function installService(options: {
4
4
  verbose?: boolean;
5
5
  docker?: boolean;
6
- }): void;
6
+ }): Promise<void>;
7
7
  export declare function uninstallService(): void;
8
8
  export declare function startService(): void;
9
9
  export declare function stopService(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"service-command.d.ts","sourceRoot":"","sources":["../../src/cli/service-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,EAAyB,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAkB/E,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAOrF;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAOnC;AAED,wBAAgB,WAAW,IAAI,IAAI,CAOlC;AAED,wBAAgB,cAAc,IAAI,IAAI,CAOrC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA6BlE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyE9D;AAGD,OAAO,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"service-command.d.ts","sourceRoot":"","sources":["../../src/cli/service-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,OAAO,EAAyB,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAkB/E,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpG;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAOnC;AAED,wBAAgB,WAAW,IAAI,IAAI,CAOlC;AAED,wBAAgB,cAAc,IAAI,IAAI,CAOrC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA6BlE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyE9D;AAGD,OAAO,EAAE,aAAa,EAAE,CAAA"}