@dsh-enhanced/dsh-rsi-cli 0.1.49 → 0.1.54

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 (44) hide show
  1. package/README.md +14 -8
  2. package/lib/diagnose.js +7 -7
  3. package/lib/diagnose.js.map +1 -1
  4. package/lib/home-lifecycle-lock.d.ts +4 -0
  5. package/lib/home-lifecycle-lock.d.ts.map +1 -0
  6. package/lib/home-lifecycle-lock.js +69 -0
  7. package/lib/home-lifecycle-lock.js.map +1 -0
  8. package/lib/index.d.ts +5 -1
  9. package/lib/index.d.ts.map +1 -1
  10. package/lib/index.js +155 -8
  11. package/lib/index.js.map +1 -1
  12. package/lib/install.d.ts.map +1 -1
  13. package/lib/install.js +3 -0
  14. package/lib/install.js.map +1 -1
  15. package/lib/launchd-lock.d.ts +3 -0
  16. package/lib/launchd-lock.d.ts.map +1 -0
  17. package/lib/launchd-lock.js +46 -0
  18. package/lib/launchd-lock.js.map +1 -0
  19. package/lib/launchd-service.d.ts +24 -0
  20. package/lib/launchd-service.d.ts.map +1 -0
  21. package/lib/launchd-service.js +146 -0
  22. package/lib/launchd-service.js.map +1 -0
  23. package/lib/process-guard.d.ts +4 -5
  24. package/lib/process-guard.d.ts.map +1 -1
  25. package/lib/process-guard.js +17 -8
  26. package/lib/process-guard.js.map +1 -1
  27. package/lib/purge.d.ts.map +1 -1
  28. package/lib/purge.js +30 -5
  29. package/lib/purge.js.map +1 -1
  30. package/lib/run.d.ts +2 -1
  31. package/lib/run.d.ts.map +1 -1
  32. package/lib/run.js +8 -10
  33. package/lib/run.js.map +1 -1
  34. package/lib/services.d.ts +10 -3
  35. package/lib/services.d.ts.map +1 -1
  36. package/lib/services.js +126 -42
  37. package/lib/services.js.map +1 -1
  38. package/lib/version.d.ts +1 -1
  39. package/lib/version.js +1 -1
  40. package/lib/weburl.d.ts +1 -1
  41. package/lib/weburl.d.ts.map +1 -1
  42. package/lib/weburl.js +17 -2
  43. package/lib/weburl.js.map +1 -1
  44. package/package.json +1 -1
package/lib/run.js CHANGED
@@ -15,7 +15,8 @@ function escapeRegex(value) {
15
15
  * 进程静止检查:查找仍在运行的受管 profile host。
16
16
  *
17
17
  * 先用 `pgrep -f <pattern>`(只取 PID),pattern 为 `--profile <profile>`;
18
- * 命令行再用 `ps -p <pid> -o command=` 读取(procps/BSD 均支持),
18
+ * 命令行再用 `ps -p <pid> -o command=` 读取(procps/BSD 均支持);
19
+ * ps 无法读取匹配 PID 时按探测失败处理,不将其当作静止。
19
20
  * 因为部分环境 pgrep -l 会打印线程 comm(如 MainThread)而非完整命令行。
20
21
  * dsh-rsi purge 自身命令行也可能带该参数,因此把命令行中含 dsh-rsi / dsh-rsi-cli
21
22
  * (旧包名 @dsh-enhanced/rsi-cli 的全局路径同样包含 rsi-cli)的匹配剔除。
@@ -28,14 +29,18 @@ export function findRunningProfiles(profiles, runner = defaultRunner) {
28
29
  // Linux procps 与 macOS BSD pgrep 都不会把它当成选项(无需依赖 -- 分隔符)。
29
30
  const pattern = `[-]-profile ${escapeRegex(profile)}`;
30
31
  const result = runner('pgrep', ['-f', pattern]);
31
- if (result.status !== 0 && result.status !== 1) {
32
+ if (result.status !== 0 && !(result.status === 1 && result.stdout.trim() === '' && result.stderr.trim() === '')) {
32
33
  return { active: [], error: result.stderr.trim() || `pgrep 退出码 ${result.status}` };
33
34
  }
34
35
  for (const line of result.stdout.split('\n')) {
35
36
  const pid = Number(line.trim());
36
37
  if (!Number.isInteger(pid) || pid <= 0)
37
38
  continue;
38
- const commandLine = readCommandLine(pid, runner);
39
+ const shown = runner('ps', ['-p', String(pid), '-o', 'command=']);
40
+ if (shown.status !== 0 || shown.stdout.trim() === '') {
41
+ return { active: [], error: `无法读取 PID ${pid} 命令行:${shown.stderr.trim() || `ps 退出码 ${shown.status}`}` };
42
+ }
43
+ const commandLine = shown.stdout.trim();
39
44
  if (commandLine.includes('dsh-rsi') || commandLine.includes('rsi-cli') || commandLine.includes('purge.sh'))
40
45
  continue;
41
46
  active.push({ pid, commandLine });
@@ -43,11 +48,4 @@ export function findRunningProfiles(profiles, runner = defaultRunner) {
43
48
  }
44
49
  return { active };
45
50
  }
46
- /** 跨平台读取单个 PID 的完整命令行;读取失败时回退占位文本。 */
47
- function readCommandLine(pid, runner) {
48
- const shown = runner('ps', ['-p', String(pid), '-o', 'command=']);
49
- if (shown.status !== 0)
50
- return `PID ${pid}(命令行不可读)`;
51
- return shown.stdout.trim() || `PID ${pid}`;
52
- }
53
51
  //# sourceMappingURL=run.js.map
package/lib/run.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyB,MAAM,oBAAoB,CAAA;AAUrE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAC5D,MAAM,MAAM,GAA6B,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAA;IACvG,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;KACxC,CAAA;AACH,CAAC,CAAA;AAOD,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,UAAU,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAA;AACzD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA2B,EAC3B,SAAwB,aAAa;IAErC,MAAM,MAAM,GAAqB,EAAE,CAAA;IACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,kDAAkD;QAClD,yDAAyD;QACzD,MAAM,OAAO,GAAG,eAAe,WAAW,CAAC,OAAO,CAAC,EAAE,CAAA;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;QAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,MAAM,CAAC,MAAM,EAAE,EAAE,CAAA;QACpF,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;gBAAE,SAAQ;YAChD,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAChD,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,SAAQ;YACpH,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,CAAA;AACnB,CAAC;AAED,sCAAsC;AACtC,SAAS,eAAe,CAAC,GAAW,EAAE,MAAqB;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;IACjE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,GAAG,UAAU,CAAA;IACnD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,OAAO,GAAG,EAAE,CAAA;AAC5C,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAyB,MAAM,oBAAoB,CAAA;AAUrE,6CAA6C;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAC5D,MAAM,MAAM,GAA6B,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAA;IACvG,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;KACxC,CAAA;AACH,CAAC,CAAA;AAOD,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,KAAK,CAAC,UAAU,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAA;AACzD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAA2B,EAC3B,SAAwB,aAAa;IAErC,MAAM,MAAM,GAAqB,EAAE,CAAA;IACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,kDAAkD;QAClD,yDAAyD;QACzD,MAAM,OAAO,GAAG,eAAe,WAAW,CAAC,OAAO,CAAC,EAAE,CAAA;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;QAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAChH,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,MAAM,CAAC,MAAM,EAAE,EAAE,CAAA;QACpF,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;gBAAE,SAAQ;YAChD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;YACjE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACrD,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,QAAQ,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,UAAU,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,CAAA;YACxG,CAAC;YACD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACvC,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,SAAQ;YACpH,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,CAAA;AACnB,CAAC"}
package/lib/services.d.ts CHANGED
@@ -7,13 +7,20 @@ export interface ServiceStopOutcome {
7
7
  skipped: string[];
8
8
  errors: string[];
9
9
  }
10
+ /** Optional bounded polling control for tests; production waits up to five seconds. */
11
+ export interface ServiceWaitOptions {
12
+ attempts?: number;
13
+ intervalMs?: number;
14
+ }
10
15
  /**
11
16
  * 停用并注销一个 profile 的受管常驻服务。
12
17
  * macOS:launchctl bootout + 删 ~/Library/LaunchAgents/<label>.plist。
13
18
  * Linux:systemctl --user disable --now + reset-failed + 删受管 unit(及同名 .d)+ daemon-reload。
14
19
  * 服务未注册/已停止不报错;任何非预期文件归属问题 fail-closed 只报告不删除。
15
20
  */
16
- export declare function stopManagedService(platform: NodeJS.Platform, home: string, profile: string, runner: CommandRunner, dryRun: boolean): Promise<ServiceStopOutcome>;
21
+ export declare function stopManagedService(platform: NodeJS.Platform, home: string, profile: string, runner: CommandRunner, dryRun: boolean, dshHome?: string, waitOptions?: ServiceWaitOptions): Promise<ServiceStopOutcome>;
22
+ /** Hold every affected GUI label lock until the caller's purge transaction completes. */
23
+ export declare function withMacPurgeServiceLocks<T>(home: string, dshHome: string, profiles: readonly string[], runner: CommandRunner, operation: (stop: (profile: string) => Promise<ServiceStopOutcome>) => Promise<T>): Promise<T>;
17
24
  /** 一次运维动作的结果。exit 供 CLI 决定退出码。 */
18
25
  export interface ServiceActionOutcome {
19
26
  profile: string;
@@ -46,7 +53,7 @@ export interface ManagedServicePresence {
46
53
  * 检查一个 profile 的受管服务定义是否就绪。
47
54
  * 只读文件系统,不执行 systemctl / launchctl。
48
55
  */
49
- export declare function inspectManagedService(platform: NodeJS.Platform, home: string, profile: string): Promise<ManagedServicePresence>;
56
+ export declare function inspectManagedService(platform: NodeJS.Platform, home: string, profile: string, dshHome?: string, runner?: CommandRunner): Promise<ManagedServicePresence>;
50
57
  /**
51
58
  * 对一个已注册的受管服务执行 start / stop / restart。
52
59
  *
@@ -58,7 +65,7 @@ export declare function inspectManagedService(platform: NodeJS.Platform, home: s
58
65
  * 停止后 plist 仍在,所以随后可以再 start,这与 purge 的 bootout+删文件不同。
59
66
  * Linux 直接用 `systemctl --user start|stop|restart`。
60
67
  */
61
- export declare function controlManagedService(platform: NodeJS.Platform, home: string, profile: string, action: ServiceAction, runner?: CommandRunner, dryRun?: boolean): Promise<ServiceActionOutcome>;
68
+ export declare function controlManagedService(platform: NodeJS.Platform, home: string, profile: string, action: ServiceAction, runner?: CommandRunner, dryRun?: boolean, dshHome?: string, waitOptions?: ServiceWaitOptions): Promise<ServiceActionOutcome>;
62
69
  /**
63
70
  * 解析运维命令的目标 profile 集合。
64
71
  * 显式 --profile 优先;否则取 DSH home 下全部 profile。
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
package/lib/services.js CHANGED
@@ -1,6 +1,9 @@
1
1
  import { readFile, rm, stat } from 'node:fs/promises';
2
2
  import { open } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
+ import { setTimeout as delay } from 'node:timers/promises';
5
+ import { inspectLaunchdDefinition, inspectLoadedLaunchd, oldPidExited } from "./launchd-service.js";
6
+ import { withLaunchdProfileLock } from "./launchd-lock.js";
4
7
  import { defaultRunner } from "./run.js";
5
8
  import { launchAgentTargets, listProfiles, profileLogPaths, systemdUnitName, systemdUserDirectory, SYSTEMD_UNIT_PATTERN, } from "./paths.js";
6
9
  /** 受管 unit / plist 的内容指纹(lifecycle-profile.mjs rendererUnitPattern 与 launchd.ts createLaunchAgent)。 */
@@ -18,27 +21,28 @@ async function isManagedUnitFile(path, profile) {
18
21
  && source.includes(`--profile ${profile} `)
19
22
  && source.includes('--no-open');
20
23
  }
21
- /**
22
- * 判定 macOS plist 确为受管 LaunchAgent。
23
- *
24
- * launchd.ts 的 createLaunchAgent 不写入任何注释标记,所以判定依据是它实际渲染
25
- * 的结构:Label 必须是受管前缀加该 profile,且 ProgramArguments 含
26
- * `--profile <profile>` 与 `--no-open` 两项。这与 stopManagedService 对 systemd
27
- * unit 的判定同样严格,避免把同名的用户自建 LaunchAgent 当成受管服务操作。
28
- */
29
- async function isManagedPlistFile(path, profile) {
30
- let source;
31
- try {
32
- source = await readFile(path, 'utf8');
24
+ async function waitForLaunchdTransition(definition, dshHome, previousPid, runner, target, options = {}) {
25
+ const attempts = options.attempts ?? 50;
26
+ const intervalMs = options.intervalMs ?? 100;
27
+ if (!Number.isSafeInteger(attempts) || attempts < 1 || attempts > 100
28
+ || !Number.isSafeInteger(intervalMs) || intervalMs < 0 || intervalMs > 1_000) {
29
+ return { ok: false, error: '无效的 launchd 状态检查参数' };
33
30
  }
34
- catch {
35
- return false;
31
+ for (let attempt = 0; attempt < attempts; attempt++) {
32
+ const state = inspectLoadedLaunchd(definition, dshHome, runner);
33
+ if (state.error)
34
+ return { ok: false, error: state.error };
35
+ const oldExited = previousPid < 2 || oldPidExited(previousPid, runner);
36
+ if (target === 'stopped' && !state.registered && oldExited)
37
+ return { ok: true };
38
+ if (target === 'running' && state.running)
39
+ return { ok: true };
40
+ if (target === 'restarted' && state.running && state.pid !== previousPid && oldExited)
41
+ return { ok: true };
42
+ if (attempt + 1 < attempts)
43
+ await delay(intervalMs);
36
44
  }
37
- const { label } = launchAgentTargets('', profile);
38
- return source.includes(`<string>${label}</string>`)
39
- && source.includes('<string>--profile</string>')
40
- && source.includes(`<string>${profile}</string>`)
41
- && source.includes('<string>--no-open</string>');
45
+ return { ok: false };
42
46
  }
43
47
  /**
44
48
  * 停用并注销一个 profile 的受管常驻服务。
@@ -46,17 +50,57 @@ async function isManagedPlistFile(path, profile) {
46
50
  * Linux:systemctl --user disable --now + reset-failed + 删受管 unit(及同名 .d)+ daemon-reload。
47
51
  * 服务未注册/已停止不报错;任何非预期文件归属问题 fail-closed 只报告不删除。
48
52
  */
49
- export async function stopManagedService(platform, home, profile, runner, dryRun) {
53
+ export async function stopManagedService(platform, home, profile, runner, dryRun, dshHome = join(home, '.dsh'), waitOptions = {}) {
54
+ if (platform === 'darwin' && process.platform === 'darwin' && !dryRun) {
55
+ return withLaunchdProfileLock(profile, () => stopManagedServiceUnlocked(platform, home, profile, runner, dryRun, dshHome, waitOptions));
56
+ }
57
+ return stopManagedServiceUnlocked(platform, home, profile, runner, dryRun, dshHome, waitOptions);
58
+ }
59
+ async function stopManagedServiceUnlocked(platform, home, profile, runner, dryRun, dshHome, waitOptions) {
50
60
  const outcome = { profile, actions: [], skipped: [], errors: [] };
51
61
  if (platform === 'darwin') {
52
62
  const { label, plistPath } = launchAgentTargets(home, profile);
53
63
  const target = `gui/${process.getuid?.() ?? process.env.UID}/${label}`;
54
- outcome.actions.push(`launchctl bootout ${target}(未注册时忽略错误)`);
55
- outcome.actions.push(`删除 ${plistPath}`);
64
+ const checked = await inspectLaunchdDefinition(home, dshHome, profile, runner);
65
+ if (!checked.exists) {
66
+ const query = runner('launchctl', ['print', target]);
67
+ if (query.status === 113 && /Could not find service/iu.test(query.stderr))
68
+ return outcome;
69
+ outcome.errors.push(`${profile}:plist 不存在,但同名已加载服务存在或查询失败,拒绝删除数据`);
70
+ return outcome;
71
+ }
72
+ if (!checked.definition) {
73
+ outcome.skipped.push(`${plistPath}(${checked.error ?? '归属不明'},保留)`);
74
+ outcome.errors.push(`${profile}:${checked.error ?? 'plist 归属不明'},拒绝注销`);
75
+ return outcome;
76
+ }
77
+ const loaded = inspectLoadedLaunchd(checked.definition, dshHome, runner);
78
+ if (loaded.error) {
79
+ outcome.errors.push(`${profile}:${loaded.error}`);
80
+ return outcome;
81
+ }
82
+ if (loaded.registered)
83
+ outcome.actions.push(`launchctl bootout ${target}`);
84
+ outcome.actions.push(`删除受管 plist ${plistPath}`);
56
85
  if (dryRun)
57
86
  return outcome;
58
- // bootout 对未加载 label 返回非零(No such process),属预期。
59
- runner('launchctl', ['bootout', target]);
87
+ if (loaded.registered) {
88
+ const bootout = runner('launchctl', ['bootout', target]);
89
+ if (bootout.status !== 0) {
90
+ outcome.errors.push(`${profile}:bootout 失败:${bootout.stderr.trim() || bootout.status}`);
91
+ return outcome;
92
+ }
93
+ const after = await waitForLaunchdTransition(checked.definition, dshHome, loaded.pid, runner, 'stopped', waitOptions);
94
+ if (!after.ok) {
95
+ outcome.errors.push(`${profile}:${after.error ?? '服务或旧 PID 仍在'},保留 plist 并中止删除`);
96
+ return outcome;
97
+ }
98
+ }
99
+ const latest = await inspectLaunchdDefinition(home, dshHome, profile, runner);
100
+ if (!latest.definition || JSON.stringify(latest.definition) !== JSON.stringify(checked.definition)) {
101
+ outcome.errors.push(`${profile}:plist 在停止期间改变,保留并中止删除`);
102
+ return outcome;
103
+ }
60
104
  await rm(plistPath, { force: true });
61
105
  return outcome;
62
106
  }
@@ -102,6 +146,20 @@ export async function stopManagedService(platform, home, profile, runner, dryRun
102
146
  outcome.actions.push('systemctl --user daemon-reload');
103
147
  return outcome;
104
148
  }
149
+ /** Hold every affected GUI label lock until the caller's purge transaction completes. */
150
+ export async function withMacPurgeServiceLocks(home, dshHome, profiles, runner, operation) {
151
+ const ordered = [...new Set(profiles)].sort();
152
+ const allowed = new Set(ordered);
153
+ const stop = (profile) => {
154
+ if (!allowed.has(profile))
155
+ throw new Error(`未锁定的 launchd profile:${profile}`);
156
+ return stopManagedServiceUnlocked('darwin', home, profile, runner, false, dshHome, {});
157
+ };
158
+ const acquire = (index) => index === ordered.length
159
+ ? operation(stop)
160
+ : withLaunchdProfileLock(ordered[index], () => acquire(index + 1));
161
+ return acquire(0);
162
+ }
105
163
  const ACTION_LABEL = {
106
164
  start: '启动',
107
165
  stop: '停止',
@@ -143,18 +201,11 @@ export async function managedServiceProcessIds(platform, home, profiles, runner
143
201
  * 检查一个 profile 的受管服务定义是否就绪。
144
202
  * 只读文件系统,不执行 systemctl / launchctl。
145
203
  */
146
- export async function inspectManagedService(platform, home, profile) {
204
+ export async function inspectManagedService(platform, home, profile, dshHome = join(home, '.dsh'), runner = defaultRunner) {
147
205
  if (platform === 'darwin') {
148
206
  const { plistPath } = launchAgentTargets(home, profile);
149
- const managed = await isManagedPlistFile(plistPath, profile);
150
- let exists = true;
151
- try {
152
- await stat(plistPath);
153
- }
154
- catch {
155
- exists = false;
156
- }
157
- return { managed, definitionPath: plistPath, foreign: exists && !managed };
207
+ const checked = await inspectLaunchdDefinition(home, dshHome, profile, runner);
208
+ return { managed: !!checked.definition, definitionPath: plistPath, foreign: checked.exists && !checked.definition };
158
209
  }
159
210
  const unit = systemdUnitName(profile);
160
211
  const definitionPath = join(systemdUserDirectory(home), unit);
@@ -179,14 +230,20 @@ export async function inspectManagedService(platform, home, profile) {
179
230
  * 停止后 plist 仍在,所以随后可以再 start,这与 purge 的 bootout+删文件不同。
180
231
  * Linux 直接用 `systemctl --user start|stop|restart`。
181
232
  */
182
- export async function controlManagedService(platform, home, profile, action, runner = defaultRunner, dryRun = false) {
233
+ export async function controlManagedService(platform, home, profile, action, runner = defaultRunner, dryRun = false, dshHome = join(home, '.dsh'), waitOptions = {}) {
234
+ if (platform === 'darwin' && process.platform === 'darwin' && !dryRun) {
235
+ return withLaunchdProfileLock(profile, () => controlManagedServiceUnlocked(platform, home, profile, action, runner, dryRun, dshHome, waitOptions));
236
+ }
237
+ return controlManagedServiceUnlocked(platform, home, profile, action, runner, dryRun, dshHome, waitOptions);
238
+ }
239
+ async function controlManagedServiceUnlocked(platform, home, profile, action, runner, dryRun, dshHome, waitOptions) {
183
240
  const outcome = { profile, actions: [], messages: [], errors: [] };
184
241
  const label = ACTION_LABEL[action];
185
242
  if (platform !== 'darwin' && platform !== 'linux') {
186
243
  outcome.errors.push(`${profile}:当前平台 ${platform} 没有受管常驻服务(仅 macOS launchd 与 Linux systemd --user)`);
187
244
  return outcome;
188
245
  }
189
- const presence = await inspectManagedService(platform, home, profile);
246
+ const presence = await inspectManagedService(platform, home, profile, dshHome, runner);
190
247
  if (!presence.managed) {
191
248
  outcome.errors.push(presence.foreign
192
249
  ? `${profile}:${presence.definitionPath} 存在但不是 dsh-enhanced 受管服务,已拒绝操作(请人工确认该文件归属)`
@@ -199,32 +256,59 @@ export async function controlManagedService(platform, home, profile, action, run
199
256
  }
200
257
  if (platform === 'darwin') {
201
258
  const { label: agentLabel, plistPath } = launchAgentTargets(home, profile);
259
+ const checked = await inspectLaunchdDefinition(home, dshHome, profile, runner);
260
+ if (!checked.definition) {
261
+ outcome.errors.push(`${profile}:plist 归属无法确认`);
262
+ return outcome;
263
+ }
264
+ const loaded = inspectLoadedLaunchd(checked.definition, dshHome, runner);
265
+ if (loaded.error) {
266
+ outcome.errors.push(`${profile}:${loaded.error}`);
267
+ return outcome;
268
+ }
202
269
  const domain = `gui/${process.getuid?.() ?? process.env.UID}`;
203
270
  const target = `${domain}/${agentLabel}`;
204
271
  if (action === 'stop') {
205
- outcome.actions.push(`launchctl bootout ${target}`);
206
- if (!dryRun) {
272
+ if (loaded.registered)
273
+ outcome.actions.push(`launchctl bootout ${target}`);
274
+ if (!dryRun && loaded.registered) {
207
275
  const result = runner('launchctl', ['bootout', target]);
208
- // 未加载时 bootout 返回非零(No such process),对 stop 语义等价于已停止。
209
- if (result.status !== 0 && !/No such process|not find/iu.test(`${result.stderr}${result.stdout}`)) {
276
+ if (result.status !== 0) {
210
277
  outcome.errors.push(`${profile}:${label}失败:${result.stderr.trim() || `launchctl 退出码 ${result.status}`}`);
211
278
  return outcome;
212
279
  }
280
+ const after = await waitForLaunchdTransition(checked.definition, dshHome, loaded.pid, runner, 'stopped', waitOptions);
281
+ if (!after.ok) {
282
+ outcome.errors.push(`${profile}:${after.error ?? '服务或旧 PID 仍在'},停止未确认`);
283
+ return outcome;
284
+ }
213
285
  }
214
286
  outcome.messages.push(actionResult(profile, action, dryRun, `(plist 保留在 ${plistPath},可再次 start)`));
215
287
  return outcome;
216
288
  }
217
289
  // start / restart:plist 可能尚未 bootstrap(曾被 stop),先确保已载入再 kickstart。
218
- outcome.actions.push(`launchctl bootstrap ${domain} ${plistPath}(已载入时忽略错误)`);
290
+ if (!loaded.registered)
291
+ outcome.actions.push(`launchctl bootstrap ${domain} ${plistPath}`);
219
292
  outcome.actions.push(`launchctl kickstart ${action === 'restart' ? '-k ' : ''}${target}`);
220
293
  if (!dryRun) {
221
- runner('launchctl', ['bootstrap', domain, plistPath]);
294
+ if (!loaded.registered) {
295
+ const bootstrap = runner('launchctl', ['bootstrap', domain, plistPath]);
296
+ if (bootstrap.status !== 0) {
297
+ outcome.errors.push(`${profile}:载入失败:${bootstrap.stderr.trim() || bootstrap.status}`);
298
+ return outcome;
299
+ }
300
+ }
222
301
  const kickstartArgs = action === 'restart' ? ['kickstart', '-k', target] : ['kickstart', target];
223
302
  const result = runner('launchctl', kickstartArgs);
224
303
  if (result.status !== 0) {
225
304
  outcome.errors.push(`${profile}:${label}失败:${result.stderr.trim() || `launchctl 退出码 ${result.status}`}`);
226
305
  return outcome;
227
306
  }
307
+ const after = await waitForLaunchdTransition(checked.definition, dshHome, loaded.pid, runner, action === 'restart' && loaded.registered ? 'restarted' : 'running', waitOptions);
308
+ if (!after.ok) {
309
+ outcome.errors.push(`${profile}:${after.error ?? '运行状态或新 PID 未确认'},${label}未确认`);
310
+ return outcome;
311
+ }
228
312
  }
229
313
  outcome.messages.push(actionResult(profile, action, dryRun));
230
314
  return outcome;
@@ -1 +1 @@
1
- {"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "0.1.49";
1
+ export declare const version = "0.1.54";
2
2
  //# sourceMappingURL=version.d.ts.map
package/lib/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const version = '0.1.49';
1
+ export const version = '0.1.54';
2
2
  //# sourceMappingURL=version.js.map
package/lib/weburl.d.ts CHANGED
@@ -29,7 +29,7 @@ export interface ProfileWebUrl {
29
29
  * - macOS launchd:读 `$DSH_HOME/logs/<profile>-host.log` 尾部
30
30
  *
31
31
  * 服务未注册时给出与 start/stop 一致的指引;服务未运行时明确提示先 start。
32
- * 即使服务当前未运行,只要日志里还有历史 URL,也会返回并标注其可能已随重启失效。
32
+ * Linux 保留展示 journal 历史 URL 的诊断行为;macOS 仅在已加载 job 有运行 PID 时读取日志。
33
33
  */
34
34
  export declare function resolveManagedWebUrl(platform: NodeJS.Platform, home: string, dshHome: string, profile: string, runner?: CommandRunner): Promise<ProfileWebUrl>;
35
35
  export declare function formatWebUrlResult(entries: readonly ProfileWebUrl[]): string;
@@ -1 +1 @@
1
- {"version":3,"file":"weburl.d.ts","sourceRoot":"","sources":["../src/weburl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAK7C;;;;GAIG;AAEH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMtE;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAKD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,aAA6B,GACpC,OAAO,CAAC,aAAa,CAAC,CAuDxB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CAW5E"}
1
+ {"version":3,"file":"weburl.d.ts","sourceRoot":"","sources":["../src/weburl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAM7C;;;;GAIG;AAEH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMtE;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB;AAKD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,aAA6B,GACpC,OAAO,CAAC,aAAa,CAAC,CA+DxB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CAW5E"}
package/lib/weburl.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { defaultRunner } from "./run.js";
2
2
  import { inspectManagedService, tailLogFile } from "./services.js";
3
3
  import { profileLogPaths, systemdUnitName, SYSTEMD_UNIT_PATTERN } from "./paths.js";
4
+ import { inspectLaunchdDefinition, inspectLoadedLaunchd } from "./launchd-service.js";
4
5
  /**
5
6
  * Web URL:从运行中受管服务的 journal / host 日志中解析最新一次 `dsh web:` 行,
6
7
  * 返回带 token 的完整授权 URL。绝不关闭或绕过 Web 认证——这里只是把 DSH 已经打印
@@ -30,11 +31,11 @@ const WEB_URL_LOOKBACK_LINES = 400;
30
31
  * - macOS launchd:读 `$DSH_HOME/logs/<profile>-host.log` 尾部
31
32
  *
32
33
  * 服务未注册时给出与 start/stop 一致的指引;服务未运行时明确提示先 start。
33
- * 即使服务当前未运行,只要日志里还有历史 URL,也会返回并标注其可能已随重启失效。
34
+ * Linux 保留展示 journal 历史 URL 的诊断行为;macOS 仅在已加载 job 有运行 PID 时读取日志。
34
35
  */
35
36
  export async function resolveManagedWebUrl(platform, home, dshHome, profile, runner = defaultRunner) {
36
37
  const result = { profile, errors: [] };
37
- const presence = await inspectManagedService(platform, home, profile);
38
+ const presence = await inspectManagedService(platform, home, profile, dshHome, runner);
38
39
  if (!presence.managed) {
39
40
  result.notice = presence.foreign
40
41
  ? `${profile}:${presence.definitionPath} 存在但不是 dsh-enhanced 受管服务,拒绝读取。`
@@ -62,6 +63,20 @@ export async function resolveManagedWebUrl(platform, home, dshHome, profile, run
62
63
  }
63
64
  }
64
65
  else if (platform === 'darwin') {
66
+ const checked = await inspectLaunchdDefinition(home, dshHome, profile, runner);
67
+ if (!checked.definition) {
68
+ result.errors.push(`${profile}:plist 归属无法确认`);
69
+ return result;
70
+ }
71
+ const loaded = inspectLoadedLaunchd(checked.definition, dshHome, runner);
72
+ if (loaded.error) {
73
+ result.errors.push(`${profile}:${loaded.error}`);
74
+ return result;
75
+ }
76
+ if (!loaded.registered || !loaded.running) {
77
+ result.notice = `${profile}:受管服务未运行;先运行 dsh-rsi start --profile ${profile}。`;
78
+ return result;
79
+ }
65
80
  const [stdoutLog] = profileLogPaths(dshHome, profile);
66
81
  if (stdoutLog === undefined) {
67
82
  result.errors.push(`${profile}:无法解析 host 日志路径。`);
package/lib/weburl.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"weburl.js","sourceRoot":"","sources":["../src/weburl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"weburl.js","sourceRoot":"","sources":["../src/weburl.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dsh-enhanced/dsh-rsi-cli",
3
- "version": "0.1.49",
3
+ "version": "0.1.54",
4
4
  "description": "Global dsh-rsi command: status, doctor, web-url, and full purge for DSH enhanced plugin installations.",
5
5
  "license": "MIT",
6
6
  "type": "module",