dory-to-dory-watcher 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -70,6 +70,28 @@ dory-to-dory MCP의 d2d_get_connection_status를 실행해서 연결 상태를
70
70
 
71
71
  Windows에서는 device pairing, MCP 설정과 터미널의 foreground `dory-watcher run`을 지원합니다. 로그인 백그라운드 서비스 등록은 아직 지원하지 않습니다.
72
72
 
73
+ ## 업데이트
74
+
75
+ 같은 Node 설치와 npm 전역 prefix를 유지하는 일반적인 Watcher 업데이트는 다음 순서로 진행합니다. 두 번째 명령은 새 설치 경로를 확인하고 서비스 정의를 안전하게 교체한 뒤 실행 중인 Watcher를 새 버전으로 재시작합니다.
76
+
77
+ ```sh
78
+ npm install --global dory-to-dory-watcher@latest
79
+ dory-watcher service install --replace
80
+ dory-watcher status
81
+ ```
82
+
83
+ `service install --replace`는 교체 전에 `doctor`를 실행합니다. Codex와 Gemini의 진단 과정에서는 짧은 모델 호출로 소량의 사용량 또는 API 요금이 발생할 수 있습니다. 자동 업데이트는 아직 제공하지 않습니다.
84
+
85
+ Node 실행 파일 경로나 npm 전역 prefix가 바뀌었다면 `dory-watcher setup`을 다시 실행하세요. 백그라운드 서비스뿐 아니라 setup이 관리하는 Agent의 MCP 등록도 새 경로로 갱신됩니다.
86
+
87
+ 업데이트 후에는 사용 중인 Agent 앱을 재시작하거나 MCP 연결을 다시 로드하고, 다음 요청으로 연결을 확인하세요. 이미 실행 중이던 MCP 프로세스는 앱이 다시 로드해야 새 Watcher에 포함된 호환 버전으로 바뀝니다.
88
+
89
+ ```text
90
+ dory-to-dory MCP의 d2d_get_connection_status를 실행해서 연결 상태를 확인해줘.
91
+ ```
92
+
93
+ 터미널에서 `dory-watcher run`으로 직접 실행하는 경우에는 실행 중인 프로세스를 `Ctrl-C`로 종료하고 npm 업데이트 후 다시 실행하세요. foreground 프로세스는 패키지 설치만으로 자동 재시작되지 않습니다.
94
+
73
95
  ### 고급 setup 옵션
74
96
 
75
97
  ```sh
@@ -118,7 +140,7 @@ dory-watcher run
118
140
  }
119
141
  ```
120
142
 
121
- Agent 설정 형식은 제품마다 다르지만 command와 args의 의미는 같습니다. `setup`이 최초 등록을 처리하므로 사용자가 MCP 버전을 직접 입력할 필요는 없습니다. 다만 Watcher와 MCP의 자동 업데이트 및 릴리스 간 자동 버전 동기화는 아직 제공하지 않으며, 각 릴리스의 실제 의존성 버전을 따릅니다.
143
+ Agent 설정 형식은 제품마다 다르지만 command와 args의 의미는 같습니다. `setup`이 최초 등록을 처리하므로 사용자가 MCP 버전을 직접 입력할 필요는 없습니다. 자동 업데이트는 제공하지 않습니다. 다만 Watcher를 수동으로 업데이트하면 해당 Watcher 릴리스가 정확히 고정한 호환 MCP 의존성도 함께 설치되므로, setup이 관리하는 MCP 등록은 별도로 버전을 변경할 필요가 없습니다.
122
144
 
123
145
  API key를 서비스 설정과 명령행에 반복해서 넣지 않도록 credential 파일 사용을 권장합니다.
124
146
 
package/dist/cli.js CHANGED
File without changes
package/dist/service.d.ts CHANGED
@@ -19,16 +19,28 @@ export interface ServiceInstallDependencies {
19
19
  serviceFile?: string;
20
20
  logDirectory?: string;
21
21
  uid?: number;
22
+ sleep?: (milliseconds: number) => Promise<void>;
23
+ macTransitionPollMs?: number;
24
+ macTransitionTimeoutMs?: number;
25
+ }
26
+ export interface ServiceControlDependencies {
27
+ platform?: NodeJS.Platform;
28
+ runner?: typeof runCommand;
29
+ serviceFile?: string;
30
+ uid?: number;
31
+ sleep?: (milliseconds: number) => Promise<void>;
32
+ macTransitionPollMs?: number;
33
+ macTransitionTimeoutMs?: number;
22
34
  }
23
35
  export declare function macServiceFile(): string;
24
36
  export declare function linuxServiceFile(env?: NodeJS.ProcessEnv): string;
25
37
  export declare function renderMacService(options: ServiceDefinitionOptions): string;
26
38
  export declare function renderLinuxService(options: ServiceDefinitionOptions): string;
27
39
  export declare function installService(options: ServiceDefinitionOptions, replace?: boolean, startNow?: boolean, dependencies?: ServiceInstallDependencies): Promise<boolean>;
28
- export declare function serviceStatus(): Promise<ServiceStatus>;
29
- export declare function startService(): Promise<void>;
30
- export declare function stopService(): Promise<void>;
31
- export declare function restartService(): Promise<void>;
32
- export declare function uninstallService(): Promise<void>;
40
+ export declare function serviceStatus(dependencies?: ServiceControlDependencies): Promise<ServiceStatus>;
41
+ export declare function startService(dependencies?: ServiceControlDependencies): Promise<void>;
42
+ export declare function stopService(dependencies?: ServiceControlDependencies): Promise<void>;
43
+ export declare function restartService(dependencies?: ServiceControlDependencies): Promise<void>;
44
+ export declare function uninstallService(dependencies?: ServiceControlDependencies): Promise<void>;
33
45
  export declare function serviceLogs(): Promise<string>;
34
46
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,kBAAkB,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,UAAU,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA0DD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE7E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAgC1E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CA2B5E;AAoHD,wBAAsB,cAAc,CAClC,OAAO,EAAE,wBAAwB,EACjC,OAAO,UAAQ,EACf,QAAQ,UAAO,EACf,YAAY,GAAE,0BAA+B,GAC5C,OAAO,CAAC,OAAO,CAAC,CAwHlB;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,CA8B5D;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAelD;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAYjD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAGpD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBtD;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAiBnD"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,kBAAkB,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,UAAU,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,UAAU,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AA8DD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE7E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAgC1E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CA2B5E;AA2QD,wBAAsB,cAAc,CAClC,OAAO,EAAE,wBAAwB,EACjC,OAAO,UAAQ,EACf,QAAQ,UAAO,EACf,YAAY,GAAE,0BAA+B,GAC5C,OAAO,CAAC,OAAO,CAAC,CAwJlB;AAED,wBAAsB,aAAa,CACjC,YAAY,GAAE,0BAA+B,GAC5C,OAAO,CAAC,aAAa,CAAC,CA+BxB;AAED,wBAAsB,YAAY,CAAC,YAAY,GAAE,0BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC/F;AAED,wBAAsB,WAAW,CAAC,YAAY,GAAE,0BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB9F;AAED,wBAAsB,cAAc,CAAC,YAAY,GAAE,0BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCjG;AAED,wBAAsB,gBAAgB,CAAC,YAAY,GAAE,0BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnG;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAiBnD"}
package/dist/service.js CHANGED
@@ -2,9 +2,13 @@ import { randomBytes } from "node:crypto";
2
2
  import { chmod, lstat, mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
3
3
  import { homedir } from "node:os";
4
4
  import { delimiter, dirname, isAbsolute, join } from "node:path";
5
+ import { setTimeout as delay } from "node:timers/promises";
5
6
  import { defaultInstallationFile } from "./installation.js";
6
7
  import { runCommand } from "./process.js";
7
8
  const LABEL = "ai.dnotitia.dory-to-dory-watcher";
9
+ const MAC_TRANSITION_POLL_MS = 100;
10
+ const MAC_TRANSITION_TIMEOUT_MS = 5_000;
11
+ const COMMAND_DIAGNOSTIC_LIMIT = 500;
8
12
  function serviceValue(value) {
9
13
  if (/[\u0000-\u001F\u007F]/.test(value)) {
10
14
  throw new Error("Service paths must not contain control characters");
@@ -136,7 +140,7 @@ async function atomicDefinitionWrite(path, contents) {
136
140
  throw error;
137
141
  }
138
142
  }
139
- async function writeDefinition(path, contents, replace) {
143
+ async function prepareDefinitionChange(path, contents, replace) {
140
144
  const existed = await exists(path);
141
145
  let backup;
142
146
  if (existed) {
@@ -148,11 +152,19 @@ async function writeDefinition(path, contents, replace) {
148
152
  backup = `${path}.dory-backup-${new Date().toISOString().replace(/[:.]/g, "-")}-${randomBytes(4).toString("hex")}`;
149
153
  await writeFile(backup, await readFile(path), { mode: 0o600, flag: "wx" });
150
154
  }
151
- await atomicDefinitionWrite(path, contents);
152
155
  return backup === undefined
153
156
  ? { changed: true, existed }
154
157
  : { changed: true, existed, backup };
155
158
  }
159
+ async function applyDefinitionChange(path, contents, change) {
160
+ if (change.changed)
161
+ await atomicDefinitionWrite(path, contents);
162
+ }
163
+ async function writeDefinition(path, contents, replace) {
164
+ const change = await prepareDefinitionChange(path, contents, replace);
165
+ await applyDefinitionChange(path, contents, change);
166
+ return change;
167
+ }
156
168
  async function restoreDefinition(path, change) {
157
169
  if (!change.changed)
158
170
  return;
@@ -168,21 +180,84 @@ async function restoreDefinition(path, change) {
168
180
  async function commandSucceeded(runner, command, args, message) {
169
181
  const result = await runner(command, args);
170
182
  if (result.exitCode !== 0)
171
- throw new Error(message);
183
+ throw commandFailure(command, result, message);
184
+ }
185
+ function sanitizeCommandDiagnostic(output) {
186
+ const sanitized = output
187
+ .replace(/\bd2d_(?:live|test)_[A-Za-z0-9._~+/=-]+/gi, "[redacted]")
188
+ .replace(/\bBearer\s+[A-Za-z0-9._~+/=-]+/gi, "Bearer [redacted]")
189
+ .replace(/[\u0000-\u001F\u007F]+/g, " ")
190
+ .replace(/\s+/g, " ")
191
+ .trim();
192
+ if (sanitized.length <= COMMAND_DIAGNOSTIC_LIMIT)
193
+ return sanitized;
194
+ return `${sanitized.slice(0, COMMAND_DIAGNOSTIC_LIMIT - 3)}...`;
195
+ }
196
+ function commandFailure(command, result, message) {
197
+ const stderr = sanitizeCommandDiagnostic(result.stderr);
198
+ const diagnostic = stderr || sanitizeCommandDiagnostic(result.stdout);
199
+ const timedOut = result.timedOut ? ", timed out" : "";
200
+ return new Error(`${message} (${command} exited with code ${result.exitCode}${timedOut}${diagnostic ? `: ${diagnostic}` : ""})`);
172
201
  }
173
202
  function launchTarget(uid = process.getuid?.() ?? 0) {
174
203
  return `gui/${uid}/${LABEL}`;
175
204
  }
176
205
  async function macServiceState(runner, target) {
177
206
  const result = await runner("launchctl", ["print", target]);
178
- const loaded = result.exitCode === 0;
207
+ if (result.exitCode !== 0) {
208
+ const output = `${result.stderr}\n${result.stdout}`;
209
+ const missing = result.exitCode === 113 || /\bcould not find(?: specified)? service\b/i.test(output);
210
+ if (missing)
211
+ return { loaded: false, running: false };
212
+ throw commandFailure("launchctl", result, "Could not inspect the Watcher LaunchAgent");
213
+ }
179
214
  return {
180
- loaded,
181
- running: loaded && /\bstate\s*=\s*running\b/i.test(result.stdout),
215
+ loaded: true,
216
+ running: /\bstate\s*=\s*running\b/i.test(result.stdout),
182
217
  };
183
218
  }
184
- async function macLoaded() {
185
- return (await macServiceState(runCommand, launchTarget())).loaded;
219
+ function positiveNumber(value, fallback) {
220
+ return value !== undefined && Number.isFinite(value) && value > 0 ? value : fallback;
221
+ }
222
+ function macStateMatches(state, expectation) {
223
+ return state.loaded === expectation.loaded &&
224
+ (expectation.running === undefined || state.running === expectation.running);
225
+ }
226
+ function macExpectationDescription(expectation) {
227
+ if (!expectation.loaded)
228
+ return "unloaded";
229
+ if (expectation.running === true)
230
+ return "running";
231
+ if (expectation.running === false)
232
+ return "loaded but not running";
233
+ return "loaded";
234
+ }
235
+ async function waitForMacServiceState(runner, target, expectation, dependencies) {
236
+ const pollMs = positiveNumber(dependencies.macTransitionPollMs, MAC_TRANSITION_POLL_MS);
237
+ const timeoutMs = positiveNumber(dependencies.macTransitionTimeoutMs, MAC_TRANSITION_TIMEOUT_MS);
238
+ const sleep = dependencies.sleep ?? delay;
239
+ const attempts = Math.max(1, Math.ceil(timeoutMs / pollMs));
240
+ let state = await macServiceState(runner, target);
241
+ for (let attempt = 0; attempt < attempts && !macStateMatches(state, expectation); attempt += 1) {
242
+ await sleep(pollMs);
243
+ state = await macServiceState(runner, target);
244
+ }
245
+ if (!macStateMatches(state, expectation)) {
246
+ throw new Error(`Timed out after ${timeoutMs}ms waiting for the Watcher LaunchAgent to be ${macExpectationDescription(expectation)}`);
247
+ }
248
+ return state;
249
+ }
250
+ async function bootoutMacService(runner, target, dependencies, message) {
251
+ await commandSucceeded(runner, "launchctl", ["bootout", target], message);
252
+ await waitForMacServiceState(runner, target, { loaded: false }, dependencies);
253
+ }
254
+ async function bootstrapMacService(runner, uid, target, path, dependencies, message, requireRunning = true) {
255
+ await commandSucceeded(runner, "launchctl", ["bootstrap", `gui/${uid}`, path], message);
256
+ await waitForMacServiceState(runner, target, requireRunning ? { loaded: true, running: true } : { loaded: true }, dependencies);
257
+ }
258
+ async function kickstartMacService(runner, target, killRunning, dependencies, message) {
259
+ await commandSucceeded(runner, "launchctl", killRunning ? ["kickstart", "-k", target] : ["kickstart", target], message);
260
+ await waitForMacServiceState(runner, target, { loaded: true, running: true }, dependencies);
186
261
  }
187
262
  async function linuxServiceState(runner) {
188
263
  const enabled = await runner("systemctl", ["--user", "is-enabled", "dory-to-dory-watcher.service"]);
@@ -208,46 +283,62 @@ function rollbackFailure(original, failures) {
208
283
  cause: original,
209
284
  });
210
285
  }
286
+ function commandIsUnavailable(error) {
287
+ return Boolean(error &&
288
+ typeof error === "object" &&
289
+ "code" in error &&
290
+ error.code === "ENOENT");
291
+ }
211
292
  export async function installService(options, replace = false, startNow = true, dependencies = {}) {
212
293
  const platform = dependencies.platform ?? process.platform;
213
294
  const runner = dependencies.runner ?? runCommand;
214
295
  if (platform === "darwin") {
215
296
  const path = dependencies.serviceFile ?? macServiceFile();
216
- const target = launchTarget(dependencies.uid);
297
+ const uid = dependencies.uid ?? process.getuid?.() ?? 0;
298
+ const target = launchTarget(uid);
217
299
  const previous = await macServiceState(runner, target);
218
300
  await mkdir(dependencies.logDirectory ?? join(homedir(), "Library", "Logs", "dory-to-dory-watcher"), {
219
301
  recursive: true,
220
302
  mode: 0o700,
221
303
  });
222
- const change = await writeDefinition(path, renderMacService(options), replace);
304
+ const contents = renderMacService(options);
305
+ const change = await prepareDefinitionChange(path, contents, replace);
306
+ if (!change.changed) {
307
+ if (!startNow)
308
+ return false;
309
+ if (previous.loaded) {
310
+ await kickstartMacService(runner, target, true, dependencies, "Could not restart the Watcher LaunchAgent");
311
+ }
312
+ else {
313
+ await bootstrapMacService(runner, uid, target, path, dependencies, "Could not register the Watcher LaunchAgent");
314
+ }
315
+ return false;
316
+ }
317
+ let definitionApplied = false;
223
318
  try {
224
319
  if (previous.loaded) {
225
- await commandSucceeded(runner, "launchctl", ["bootout", target], "Could not unload the existing Watcher service");
320
+ await bootoutMacService(runner, target, dependencies, "Could not unload the existing Watcher service");
226
321
  }
322
+ await applyDefinitionChange(path, contents, change);
323
+ definitionApplied = true;
227
324
  if (startNow) {
228
- await commandSucceeded(runner, "launchctl", ["bootstrap", `gui/${dependencies.uid ?? process.getuid?.() ?? 0}`, path], "Could not register the Watcher LaunchAgent");
229
- await commandSucceeded(runner, "launchctl", ["kickstart", "-k", target], "Could not start the Watcher LaunchAgent");
325
+ await bootstrapMacService(runner, uid, target, path, dependencies, "Could not register the Watcher LaunchAgent");
230
326
  }
231
327
  }
232
328
  catch (error) {
233
329
  const failures = [];
234
330
  await bestEffort(failures, "unload replacement", async () => {
235
331
  if ((await macServiceState(runner, target)).loaded) {
236
- const result = await runner("launchctl", ["bootout", target]);
237
- if (result.exitCode !== 0)
238
- throw new Error("launchctl bootout failed");
332
+ await bootoutMacService(runner, target, dependencies, "launchctl bootout failed");
239
333
  }
240
334
  });
241
- await bestEffort(failures, "restore definition", () => restoreDefinition(path, change));
335
+ if (definitionApplied) {
336
+ await bestEffort(failures, "restore definition", () => restoreDefinition(path, change));
337
+ }
242
338
  if (previous.loaded) {
243
339
  await bestEffort(failures, "restore loaded service", async () => {
244
- await commandSucceeded(runner, "launchctl", ["bootstrap", `gui/${dependencies.uid ?? process.getuid?.() ?? 0}`, path], "launchctl bootstrap failed");
340
+ await bootstrapMacService(runner, uid, target, path, dependencies, "launchctl bootstrap failed", previous.running);
245
341
  });
246
- if (previous.running) {
247
- await bestEffort(failures, "restore running service", async () => {
248
- await commandSucceeded(runner, "launchctl", ["kickstart", "-k", target], "launchctl kickstart failed");
249
- });
250
- }
251
342
  }
252
343
  throw rollbackFailure(error, failures);
253
344
  }
@@ -260,7 +351,7 @@ export async function installService(options, replace = false, startNow = true,
260
351
  try {
261
352
  await commandSucceeded(runner, "systemctl", ["--user", "daemon-reload"], "Could not reload the user service manager");
262
353
  await commandSucceeded(runner, "systemctl", ["--user", "enable", "dory-to-dory-watcher.service"], "Could not enable the Watcher user service");
263
- if (change.changed && previous.active) {
354
+ if (previous.active && (change.changed || replace)) {
264
355
  await commandSucceeded(runner, "systemctl", ["--user", "restart", "dory-to-dory-watcher.service"], "Could not restart the updated Watcher user service");
265
356
  }
266
357
  else if (startNow && !previous.active) {
@@ -293,30 +384,32 @@ export async function installService(options, replace = false, startNow = true,
293
384
  }
294
385
  throw new Error("Background service installation is currently supported on macOS and Linux only");
295
386
  }
296
- export async function serviceStatus() {
297
- if (process.platform === "darwin") {
298
- const installed = await exists(macServiceFile());
299
- let result;
387
+ export async function serviceStatus(dependencies = {}) {
388
+ const platform = dependencies.platform ?? process.platform;
389
+ const runner = dependencies.runner ?? runCommand;
390
+ if (platform === "darwin") {
391
+ const installed = await exists(dependencies.serviceFile ?? macServiceFile());
392
+ let state;
300
393
  try {
301
- result = await runCommand("launchctl", ["print", launchTarget()]);
394
+ state = await macServiceState(runner, launchTarget(dependencies.uid));
302
395
  }
303
- catch {
396
+ catch (error) {
397
+ if (!commandIsUnavailable(error))
398
+ throw error;
304
399
  return { supported: false, installed, running: false, detail: "launchctl is unavailable" };
305
400
  }
306
- const loaded = result.exitCode === 0;
307
- const running = loaded && /\bstate\s*=\s*running\b/i.test(result.stdout);
308
- const detail = running
401
+ const detail = state.running
309
402
  ? "LaunchAgent is running"
310
- : loaded
403
+ : state.loaded
311
404
  ? "LaunchAgent is loaded but not running"
312
405
  : "LaunchAgent is not loaded";
313
- return { supported: true, installed, running, detail };
406
+ return { supported: true, installed, running: state.running, detail };
314
407
  }
315
- if (process.platform === "linux") {
316
- const installed = await exists(linuxServiceFile());
408
+ if (platform === "linux") {
409
+ const installed = await exists(dependencies.serviceFile ?? linuxServiceFile());
317
410
  let result;
318
411
  try {
319
- result = await runCommand("systemctl", ["--user", "is-active", "dory-to-dory-watcher.service"]);
412
+ result = await runner("systemctl", ["--user", "is-active", "dory-to-dory-watcher.service"]);
320
413
  }
321
414
  catch {
322
415
  return { supported: false, installed, running: false, detail: "systemd user services are unavailable" };
@@ -326,50 +419,81 @@ export async function serviceStatus() {
326
419
  }
327
420
  return { supported: false, installed: false, running: false, detail: "Background service installation is not supported on this OS" };
328
421
  }
329
- export async function startService() {
330
- if (process.platform === "darwin") {
331
- const path = macServiceFile();
422
+ export async function startService(dependencies = {}) {
423
+ const platform = dependencies.platform ?? process.platform;
424
+ const runner = dependencies.runner ?? runCommand;
425
+ if (platform === "darwin") {
426
+ const path = dependencies.serviceFile ?? macServiceFile();
332
427
  if (!(await exists(path)))
333
428
  throw new Error("Watcher LaunchAgent is not installed");
334
- if (!(await macLoaded())) {
335
- await commandSucceeded(runCommand, "launchctl", ["bootstrap", `gui/${process.getuid?.() ?? 0}`, path], "Could not load the Watcher LaunchAgent");
429
+ const uid = dependencies.uid ?? process.getuid?.() ?? 0;
430
+ const target = launchTarget(uid);
431
+ const state = await macServiceState(runner, target);
432
+ if (!state.loaded) {
433
+ await bootstrapMacService(runner, uid, target, path, dependencies, "Could not load the Watcher LaunchAgent");
434
+ }
435
+ else if (!state.running) {
436
+ await kickstartMacService(runner, target, false, dependencies, "Could not start the Watcher LaunchAgent");
336
437
  }
337
- await commandSucceeded(runCommand, "launchctl", ["kickstart", "-k", launchTarget()], "Could not start the Watcher LaunchAgent");
338
438
  return;
339
439
  }
340
- if (process.platform === "linux") {
341
- await commandSucceeded(runCommand, "systemctl", ["--user", "start", "dory-to-dory-watcher.service"], "Could not start the Watcher user service");
440
+ if (platform === "linux") {
441
+ await commandSucceeded(runner, "systemctl", ["--user", "start", "dory-to-dory-watcher.service"], "Could not start the Watcher user service");
342
442
  return;
343
443
  }
344
444
  throw new Error("Background service control is currently supported on macOS and Linux only");
345
445
  }
346
- export async function stopService() {
347
- if (process.platform === "darwin") {
348
- if (await macLoaded()) {
349
- await commandSucceeded(runCommand, "launchctl", ["bootout", launchTarget()], "Could not stop the Watcher LaunchAgent");
446
+ export async function stopService(dependencies = {}) {
447
+ const platform = dependencies.platform ?? process.platform;
448
+ const runner = dependencies.runner ?? runCommand;
449
+ if (platform === "darwin") {
450
+ const target = launchTarget(dependencies.uid);
451
+ if ((await macServiceState(runner, target)).loaded) {
452
+ await bootoutMacService(runner, target, dependencies, "Could not stop the Watcher LaunchAgent");
350
453
  }
351
454
  return;
352
455
  }
353
- if (process.platform === "linux") {
354
- await commandSucceeded(runCommand, "systemctl", ["--user", "stop", "dory-to-dory-watcher.service"], "Could not stop the Watcher user service");
456
+ if (platform === "linux") {
457
+ await commandSucceeded(runner, "systemctl", ["--user", "stop", "dory-to-dory-watcher.service"], "Could not stop the Watcher user service");
355
458
  return;
356
459
  }
357
460
  throw new Error("Background service control is currently supported on macOS and Linux only");
358
461
  }
359
- export async function restartService() {
360
- await stopService();
361
- await startService();
462
+ export async function restartService(dependencies = {}) {
463
+ const platform = dependencies.platform ?? process.platform;
464
+ const runner = dependencies.runner ?? runCommand;
465
+ if (platform === "darwin") {
466
+ const path = dependencies.serviceFile ?? macServiceFile();
467
+ if (!(await exists(path)))
468
+ throw new Error("Watcher LaunchAgent is not installed");
469
+ const uid = dependencies.uid ?? process.getuid?.() ?? 0;
470
+ const target = launchTarget(uid);
471
+ if ((await macServiceState(runner, target)).loaded) {
472
+ await kickstartMacService(runner, target, true, dependencies, "Could not restart the Watcher LaunchAgent");
473
+ }
474
+ else {
475
+ await bootstrapMacService(runner, uid, target, path, dependencies, "Could not load the Watcher LaunchAgent");
476
+ }
477
+ return;
478
+ }
479
+ if (platform === "linux") {
480
+ await commandSucceeded(runner, "systemctl", ["--user", "restart", "dory-to-dory-watcher.service"], "Could not restart the Watcher user service");
481
+ return;
482
+ }
483
+ throw new Error("Background service control is currently supported on macOS and Linux only");
362
484
  }
363
- export async function uninstallService() {
364
- if (process.platform === "darwin") {
365
- await stopService();
366
- await rm(macServiceFile(), { force: true });
485
+ export async function uninstallService(dependencies = {}) {
486
+ const platform = dependencies.platform ?? process.platform;
487
+ const runner = dependencies.runner ?? runCommand;
488
+ if (platform === "darwin") {
489
+ await stopService(dependencies);
490
+ await rm(dependencies.serviceFile ?? macServiceFile(), { force: true });
367
491
  return;
368
492
  }
369
- if (process.platform === "linux") {
370
- await commandSucceeded(runCommand, "systemctl", ["--user", "disable", "--now", "dory-to-dory-watcher.service"], "Could not disable the Watcher user service");
371
- await rm(linuxServiceFile(), { force: true });
372
- await commandSucceeded(runCommand, "systemctl", ["--user", "daemon-reload"], "Could not reload the user service manager");
493
+ if (platform === "linux") {
494
+ await commandSucceeded(runner, "systemctl", ["--user", "disable", "--now", "dory-to-dory-watcher.service"], "Could not disable the Watcher user service");
495
+ await rm(dependencies.serviceFile ?? linuxServiceFile(), { force: true });
496
+ await commandSucceeded(runner, "systemctl", ["--user", "daemon-reload"], "Could not reload the user service manager");
373
497
  return;
374
498
  }
375
499
  throw new Error("Background service control is currently supported on macOS and Linux only");
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dory-to-dory-watcher",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "Cross-platform SSE watcher that wakes a configured local Agent CLI for dory-to-dory work",
5
5
  "type": "module",
6
6
  "bin": {
@@ -17,14 +17,6 @@
17
17
  "README.md",
18
18
  "LICENSE"
19
19
  ],
20
- "scripts": {
21
- "build": "node scripts/clean.mjs && tsc -p tsconfig.json",
22
- "check": "npm run build && npm run test",
23
- "clean": "node scripts/clean.mjs",
24
- "dev": "tsx src/cli.ts",
25
- "prepack": "npm run check",
26
- "test": "vitest run"
27
- },
28
20
  "keywords": [
29
21
  "dory-to-dory",
30
22
  "agent",
@@ -35,7 +27,6 @@
35
27
  "gemini"
36
28
  ],
37
29
  "license": "MIT",
38
- "packageManager": "pnpm@11.19.0",
39
30
  "engines": {
40
31
  "node": ">=22"
41
32
  },
@@ -50,5 +41,12 @@
50
41
  "tsx": "^4.20.0",
51
42
  "typescript": "^5.9.0",
52
43
  "vitest": "^3.2.0"
44
+ },
45
+ "scripts": {
46
+ "build": "node scripts/clean.mjs && tsc -p tsconfig.json",
47
+ "check": "npm run build && npm run test",
48
+ "clean": "node scripts/clean.mjs",
49
+ "dev": "tsx src/cli.ts",
50
+ "test": "vitest run"
53
51
  }
54
- }
52
+ }