@agentteams/runner 0.0.85 → 0.0.86

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 (123) hide show
  1. package/dist/api-client.d.ts +2 -2
  2. package/dist/api-client.js +66 -66
  3. package/dist/api-client.js.map +1 -1
  4. package/dist/api-client.test.js +63 -54
  5. package/dist/api-client.test.js.map +1 -1
  6. package/dist/autostart.js +81 -81
  7. package/dist/autostart.js.map +1 -1
  8. package/dist/autostart.test.js +35 -35
  9. package/dist/autostart.test.js.map +1 -1
  10. package/dist/commands/cleanup.js +4 -4
  11. package/dist/commands/init.js +14 -14
  12. package/dist/commands/restart.js +3 -3
  13. package/dist/commands/start.js +10 -10
  14. package/dist/commands/start.js.map +1 -1
  15. package/dist/commands/status.js +7 -7
  16. package/dist/commands/stop.js +7 -7
  17. package/dist/commands/uninstall.js +6 -6
  18. package/dist/commands/update.d.ts +4 -4
  19. package/dist/commands/update.js +20 -22
  20. package/dist/commands/update.js.map +1 -1
  21. package/dist/commands/update.test.js +38 -42
  22. package/dist/commands/update.test.js.map +1 -1
  23. package/dist/config.d.ts +1 -1
  24. package/dist/config.js +12 -12
  25. package/dist/config.test.js +61 -61
  26. package/dist/config.test.js.map +1 -1
  27. package/dist/daemon-control.d.ts +5 -5
  28. package/dist/daemon-control.js +21 -22
  29. package/dist/daemon-control.js.map +1 -1
  30. package/dist/daemon-control.test.js +29 -29
  31. package/dist/executable.d.ts +3 -3
  32. package/dist/executable.js +46 -49
  33. package/dist/executable.js.map +1 -1
  34. package/dist/executable.test.js +62 -62
  35. package/dist/executable.test.js.map +1 -1
  36. package/dist/handlers/trigger-handler.d.ts +6 -6
  37. package/dist/handlers/trigger-handler.js +118 -124
  38. package/dist/handlers/trigger-handler.js.map +1 -1
  39. package/dist/handlers/trigger-handler.test.js +373 -365
  40. package/dist/handlers/trigger-handler.test.js.map +1 -1
  41. package/dist/index.js +25 -25
  42. package/dist/logger.js +1 -1
  43. package/dist/pid.js +6 -6
  44. package/dist/poller.d.ts +7 -7
  45. package/dist/poller.js +55 -54
  46. package/dist/poller.js.map +1 -1
  47. package/dist/poller.test.js +264 -180
  48. package/dist/poller.test.js.map +1 -1
  49. package/dist/runners/amp.d.ts +1 -1
  50. package/dist/runners/amp.js +74 -81
  51. package/dist/runners/amp.js.map +1 -1
  52. package/dist/runners/antigravity.d.ts +3 -3
  53. package/dist/runners/antigravity.js +116 -127
  54. package/dist/runners/antigravity.js.map +1 -1
  55. package/dist/runners/antigravity.replay.test.js +25 -25
  56. package/dist/runners/antigravity.replay.test.js.map +1 -1
  57. package/dist/runners/antigravity.test.js +98 -98
  58. package/dist/runners/antigravity.test.js.map +1 -1
  59. package/dist/runners/claude-code.d.ts +1 -1
  60. package/dist/runners/claude-code.js +85 -84
  61. package/dist/runners/claude-code.js.map +1 -1
  62. package/dist/runners/claude-code.test.js +37 -40
  63. package/dist/runners/claude-code.test.js.map +1 -1
  64. package/dist/runners/codex.d.ts +1 -1
  65. package/dist/runners/codex.js +87 -96
  66. package/dist/runners/codex.js.map +1 -1
  67. package/dist/runners/codex.test.js +68 -68
  68. package/dist/runners/codex.test.js.map +1 -1
  69. package/dist/runners/index.d.ts +1 -1
  70. package/dist/runners/index.js +10 -10
  71. package/dist/runners/index.test.js +16 -16
  72. package/dist/runners/log-reporter.d.ts +2 -2
  73. package/dist/runners/log-reporter.js +10 -10
  74. package/dist/runners/log-reporter.test.js +70 -70
  75. package/dist/runners/log-reporter.test.js.map +1 -1
  76. package/dist/runners/opencode.d.ts +1 -1
  77. package/dist/runners/opencode.js +68 -75
  78. package/dist/runners/opencode.js.map +1 -1
  79. package/dist/runners/process-control.d.ts +1 -1
  80. package/dist/runners/process-control.js +13 -11
  81. package/dist/runners/process-control.js.map +1 -1
  82. package/dist/runners/stream-json-parser.d.ts +1 -1
  83. package/dist/runners/stream-json-parser.js +70 -67
  84. package/dist/runners/stream-json-parser.js.map +1 -1
  85. package/dist/runners/stream-json-parser.replay.test.js +17 -17
  86. package/dist/runners/stream-json-parser.replay.test.js.map +1 -1
  87. package/dist/runners/stream-json-parser.test.js +76 -78
  88. package/dist/runners/stream-json-parser.test.js.map +1 -1
  89. package/dist/types.d.ts +4 -4
  90. package/dist/utils/auth-path-store.js +7 -7
  91. package/dist/utils/auth-path-store.test.js +24 -29
  92. package/dist/utils/auth-path-store.test.js.map +1 -1
  93. package/dist/utils/auto-update.d.ts +4 -4
  94. package/dist/utils/auto-update.js +30 -28
  95. package/dist/utils/auto-update.js.map +1 -1
  96. package/dist/utils/auto-update.test.js +30 -30
  97. package/dist/utils/convention-evaluator.d.ts +1 -1
  98. package/dist/utils/convention-evaluator.js +22 -21
  99. package/dist/utils/convention-evaluator.js.map +1 -1
  100. package/dist/utils/convention-evaluator.test.js +120 -110
  101. package/dist/utils/convention-evaluator.test.js.map +1 -1
  102. package/dist/utils/convention-sync.d.ts +3 -3
  103. package/dist/utils/convention-sync.js +86 -18
  104. package/dist/utils/convention-sync.js.map +1 -1
  105. package/dist/utils/convention-sync.test.js +122 -30
  106. package/dist/utils/convention-sync.test.js.map +1 -1
  107. package/dist/utils/git-worktree.js +20 -18
  108. package/dist/utils/git-worktree.js.map +1 -1
  109. package/dist/utils/git-worktree.test.js +98 -98
  110. package/dist/utils/git-worktree.test.js.map +1 -1
  111. package/dist/utils/origin-issue-safeguard.js +35 -30
  112. package/dist/utils/origin-issue-safeguard.js.map +1 -1
  113. package/dist/utils/power-save-blocker.d.ts +4 -4
  114. package/dist/utils/power-save-blocker.js +33 -33
  115. package/dist/utils/power-save-blocker.test.js +37 -37
  116. package/dist/utils/power-save-blocker.test.js.map +1 -1
  117. package/dist/utils/runner-cleanup.d.ts +3 -3
  118. package/dist/utils/runner-cleanup.js +13 -13
  119. package/dist/utils/runner-cleanup.test.js +35 -35
  120. package/dist/utils/runner-history.js +3 -3
  121. package/dist/utils/runner-history.test.js +17 -17
  122. package/package.json +4 -1
  123. package/readme.md +10 -10
@@ -1,21 +1,21 @@
1
- import assert from "node:assert/strict";
2
- import { mkdtemp, readFile, rm } from "node:fs/promises";
3
- import { tmpdir } from "node:os";
4
- import { join } from "node:path";
5
- import test from "node:test";
6
- import { getDaemonConfigPath, readDaemonConfigFile, resolveApiUrlForInit, resolveRuntimeConfig, writeDaemonConfigFile } from "./config.js";
1
+ import assert from 'node:assert/strict';
2
+ import { mkdtemp, readFile, rm } from 'node:fs/promises';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import test from 'node:test';
6
+ import { getDaemonConfigPath, readDaemonConfigFile, resolveApiUrlForInit, resolveRuntimeConfig, writeDaemonConfigFile, } from './config.js';
7
7
  const envKeys = [
8
- "HOME",
9
- "USERPROFILE",
10
- "HOMEDRIVE",
11
- "HOMEPATH",
12
- "AGENTTEAMS_DAEMON_TOKEN",
13
- "AGENTTEAMS_API_URL",
14
- "POLLING_INTERVAL_MS",
15
- "IDLE_TIMEOUT_MS",
16
- "TIMEOUT_MS",
17
- "RUNNER_CMD",
18
- "DAEMON_PREVENT_SLEEP"
8
+ 'HOME',
9
+ 'USERPROFILE',
10
+ 'HOMEDRIVE',
11
+ 'HOMEPATH',
12
+ 'AGENTTEAMS_DAEMON_TOKEN',
13
+ 'AGENTTEAMS_API_URL',
14
+ 'POLLING_INTERVAL_MS',
15
+ 'IDLE_TIMEOUT_MS',
16
+ 'TIMEOUT_MS',
17
+ 'RUNNER_CMD',
18
+ 'DAEMON_PREVENT_SLEEP',
19
19
  ];
20
20
  const withTempHome = async (run) => {
21
21
  const previousEnv = new Map();
@@ -23,11 +23,11 @@ const withTempHome = async (run) => {
23
23
  previousEnv.set(key, process.env[key]);
24
24
  delete process.env[key];
25
25
  }
26
- const homeDir = await mkdtemp(join(tmpdir(), "daemon-config-test-"));
26
+ const homeDir = await mkdtemp(join(tmpdir(), 'daemon-config-test-'));
27
27
  process.env.HOME = homeDir;
28
28
  process.env.USERPROFILE = homeDir;
29
- process.env.HOMEDRIVE = "";
30
- process.env.HOMEPATH = "";
29
+ process.env.HOMEDRIVE = '';
30
+ process.env.HOMEPATH = '';
31
31
  try {
32
32
  await run(homeDir);
33
33
  }
@@ -44,100 +44,100 @@ const withTempHome = async (run) => {
44
44
  }
45
45
  }
46
46
  };
47
- test("readDaemonConfigFile returns null when config file does not exist", async () => {
47
+ test('readDaemonConfigFile returns null when config file does not exist', async () => {
48
48
  await withTempHome(async () => {
49
49
  const result = await readDaemonConfigFile();
50
50
  assert.equal(result, null);
51
51
  });
52
52
  });
53
- test("writeDaemonConfigFile creates the config directory and file", async () => {
53
+ test('writeDaemonConfigFile creates the config directory and file', async () => {
54
54
  await withTempHome(async () => {
55
55
  const filePath = await writeDaemonConfigFile({
56
- daemonToken: "file-token",
57
- apiUrl: "https://file.example"
56
+ daemonToken: 'file-token',
57
+ apiUrl: 'https://file.example',
58
58
  });
59
59
  assert.equal(filePath, getDaemonConfigPath());
60
- const content = await readFile(filePath, "utf8");
60
+ const content = await readFile(filePath, 'utf8');
61
61
  assert.deepEqual(JSON.parse(content), {
62
- daemonToken: "file-token",
63
- apiUrl: "https://file.example"
62
+ daemonToken: 'file-token',
63
+ apiUrl: 'https://file.example',
64
64
  });
65
65
  });
66
66
  });
67
- test("readDaemonConfigFile returns null for invalid or incomplete JSON", async () => {
67
+ test('readDaemonConfigFile returns null for invalid or incomplete JSON', async () => {
68
68
  await withTempHome(async () => {
69
69
  const filePath = getDaemonConfigPath();
70
70
  await writeDaemonConfigFile({
71
- daemonToken: "file-token",
72
- apiUrl: "https://file.example"
71
+ daemonToken: 'file-token',
72
+ apiUrl: 'https://file.example',
73
73
  });
74
- await readFile(filePath, "utf8");
75
- await import("node:fs/promises").then(({ writeFile }) => writeFile(filePath, "{invalid", "utf8"));
74
+ await readFile(filePath, 'utf8');
75
+ await import('node:fs/promises').then(({ writeFile }) => writeFile(filePath, '{invalid', 'utf8'));
76
76
  assert.equal(await readDaemonConfigFile(), null);
77
- await import("node:fs/promises").then(({ writeFile }) => writeFile(filePath, JSON.stringify({ daemonToken: "only-token" }), "utf8"));
77
+ await import('node:fs/promises').then(({ writeFile }) => writeFile(filePath, JSON.stringify({ daemonToken: 'only-token' }), 'utf8'));
78
78
  assert.equal(await readDaemonConfigFile(), null);
79
79
  });
80
80
  });
81
- test("resolveRuntimeConfig prefers environment variables and applies numeric parsing fallbacks", async () => {
81
+ test('resolveRuntimeConfig prefers environment variables and applies numeric parsing fallbacks', async () => {
82
82
  await withTempHome(async () => {
83
83
  await writeDaemonConfigFile({
84
- daemonToken: "file-token",
85
- apiUrl: "https://file.example"
84
+ daemonToken: 'file-token',
85
+ apiUrl: 'https://file.example',
86
86
  });
87
- process.env.AGENTTEAMS_DAEMON_TOKEN = "env-token";
88
- process.env.AGENTTEAMS_API_URL = "https://env.example";
89
- process.env.POLLING_INTERVAL_MS = "-10";
90
- process.env.TIMEOUT_MS = "1234.7";
91
- process.env.RUNNER_CMD = "codex";
87
+ process.env.AGENTTEAMS_DAEMON_TOKEN = 'env-token';
88
+ process.env.AGENTTEAMS_API_URL = 'https://env.example';
89
+ process.env.POLLING_INTERVAL_MS = '-10';
90
+ process.env.TIMEOUT_MS = '1234.7';
91
+ process.env.RUNNER_CMD = 'codex';
92
92
  const result = await resolveRuntimeConfig();
93
93
  assert.deepEqual(result, {
94
- daemonToken: "env-token",
95
- apiUrl: "https://env.example",
94
+ daemonToken: 'env-token',
95
+ apiUrl: 'https://env.example',
96
96
  pollingIntervalMs: 30_000,
97
97
  timeoutMs: 1234,
98
98
  idleTimeoutMs: 600_000,
99
- runnerCmd: "codex",
100
- preventSleepWhileBusy: true
99
+ runnerCmd: 'codex',
100
+ preventSleepWhileBusy: true,
101
101
  });
102
102
  });
103
103
  });
104
- test("resolveRuntimeConfig disables sleep prevention when DAEMON_PREVENT_SLEEP is falsy", async () => {
104
+ test('resolveRuntimeConfig disables sleep prevention when DAEMON_PREVENT_SLEEP is falsy', async () => {
105
105
  await withTempHome(async () => {
106
- process.env.AGENTTEAMS_DAEMON_TOKEN = "env-token";
107
- process.env.DAEMON_PREVENT_SLEEP = "false";
106
+ process.env.AGENTTEAMS_DAEMON_TOKEN = 'env-token';
107
+ process.env.DAEMON_PREVENT_SLEEP = 'false';
108
108
  const result = await resolveRuntimeConfig();
109
109
  assert.equal(result.preventSleepWhileBusy, false);
110
110
  });
111
111
  });
112
- test("resolveRuntimeConfig uses the 24-hour fail-safe timeout by default", async () => {
112
+ test('resolveRuntimeConfig uses the 24-hour fail-safe timeout by default', async () => {
113
113
  await withTempHome(async () => {
114
114
  await writeDaemonConfigFile({
115
- daemonToken: "file-token",
116
- apiUrl: "https://file.example"
115
+ daemonToken: 'file-token',
116
+ apiUrl: 'https://file.example',
117
117
  });
118
118
  const result = await resolveRuntimeConfig();
119
119
  assert.equal(result.timeoutMs, 86_400_000);
120
120
  assert.equal(result.idleTimeoutMs, 600_000);
121
121
  });
122
122
  });
123
- test("resolveRuntimeConfig throws when daemon token is missing", async () => {
123
+ test('resolveRuntimeConfig throws when daemon token is missing', async () => {
124
124
  await withTempHome(async () => {
125
125
  await assert.rejects(() => resolveRuntimeConfig(), /Daemon token is missing/);
126
126
  });
127
127
  });
128
- test("resolveApiUrlForInit resolves in argument, env, file, default order", async () => {
128
+ test('resolveApiUrlForInit resolves in argument, env, file, default order', async () => {
129
129
  await withTempHome(async () => {
130
- assert.equal(await resolveApiUrlForInit(" https://arg.example "), "https://arg.example");
131
- process.env.AGENTTEAMS_API_URL = "https://env.example";
132
- assert.equal(await resolveApiUrlForInit(), "https://env.example");
130
+ assert.equal(await resolveApiUrlForInit(' https://arg.example '), 'https://arg.example');
131
+ process.env.AGENTTEAMS_API_URL = 'https://env.example';
132
+ assert.equal(await resolveApiUrlForInit(), 'https://env.example');
133
133
  delete process.env.AGENTTEAMS_API_URL;
134
134
  await writeDaemonConfigFile({
135
- daemonToken: "file-token",
136
- apiUrl: "https://file.example"
135
+ daemonToken: 'file-token',
136
+ apiUrl: 'https://file.example',
137
137
  });
138
- assert.equal(await resolveApiUrlForInit(), "https://file.example");
139
- await import("node:fs/promises").then(({ rm }) => rm(getDaemonConfigPath(), { force: true }));
140
- assert.equal(await resolveApiUrlForInit(), "https://api.agentteams.run");
138
+ assert.equal(await resolveApiUrlForInit(), 'https://file.example');
139
+ await import('node:fs/promises').then(({ rm }) => rm(getDaemonConfigPath(), { force: true }));
140
+ assert.equal(await resolveApiUrlForInit(), 'https://api.agentteams.run');
141
141
  });
142
142
  });
143
143
  //# sourceMappingURL=config.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { platform as getPlatform } from "node:os";
2
- import { getAutostartStatus, restartAutostartService } from "./autostart.js";
3
- import { logger } from "./logger.js";
1
+ import { platform as getPlatform } from 'node:os';
2
+ import { getAutostartStatus, restartAutostartService } from './autostart.js';
3
+ import { logger } from './logger.js';
4
4
  type RunningDaemonStatus = {
5
5
  running: boolean;
6
6
  pid: number | null;
@@ -15,14 +15,14 @@ type RestartDeps = {
15
15
  spawnDetachedDaemon?: () => DetachedChildProcess | void;
16
16
  kill?: typeof process.kill;
17
17
  sleep?: (milliseconds: number) => Promise<void>;
18
- logger?: Pick<typeof logger, "info">;
18
+ logger?: Pick<typeof logger, 'info'>;
19
19
  };
20
20
  type ExecuteRestartDeps = {
21
21
  getAutostartStatus?: typeof getAutostartStatus;
22
22
  spawnDetachedDaemon?: () => DetachedChildProcess | void;
23
23
  platform?: typeof getPlatform;
24
24
  processExit?: (code: number) => never;
25
- logger?: Pick<typeof logger, "info">;
25
+ logger?: Pick<typeof logger, 'info'>;
26
26
  };
27
27
  export declare const spawnDetachedDaemon: () => DetachedChildProcess | void;
28
28
  export declare const executeRestartRequest: (deps?: ExecuteRestartDeps) => void;
@@ -1,13 +1,13 @@
1
- import { setTimeout as delay } from "node:timers/promises";
2
- import { platform as getPlatform } from "node:os";
3
- import { getAutostartStatus, launchWindowsHiddenDaemon, restartAutostartService } from "./autostart.js";
4
- import { logger } from "./logger.js";
5
- import { getDaemonStatus } from "./pid.js";
6
- import { spawnExecutable } from "./executable.js";
1
+ import { setTimeout as delay } from 'node:timers/promises';
2
+ import { platform as getPlatform } from 'node:os';
3
+ import { getAutostartStatus, launchWindowsHiddenDaemon, restartAutostartService } from './autostart.js';
4
+ import { logger } from './logger.js';
5
+ import { getDaemonStatus } from './pid.js';
6
+ import { spawnExecutable } from './executable.js';
7
7
  const restartPollIntervalMs = 100;
8
8
  const stopTimeoutMs = 10_000;
9
9
  const waitForDaemonToStop = async (pid, deps) => {
10
- deps.kill(pid, "SIGTERM");
10
+ deps.kill(pid, 'SIGTERM');
11
11
  const deadline = Date.now() + stopTimeoutMs;
12
12
  while (Date.now() < deadline) {
13
13
  await deps.sleep(restartPollIntervalMs);
@@ -23,15 +23,15 @@ export const spawnDetachedDaemon = () => {
23
23
  // which flashes a console window even with `windowsHide: true` because the
24
24
  // `.cmd` shim creates its own console host. Use the hidden VBS launcher
25
25
  // instead so users never see a terminal pop up.
26
- if (getPlatform() === "win32") {
26
+ if (getPlatform() === 'win32') {
27
27
  launchWindowsHiddenDaemon();
28
28
  return;
29
29
  }
30
- const child = spawnExecutable("agentrunner", ["start"], {
30
+ const child = spawnExecutable('agentrunner', ['start'], {
31
31
  detached: true,
32
- stdio: "ignore",
32
+ stdio: 'ignore',
33
33
  env: process.env,
34
- cwd: process.cwd()
34
+ cwd: process.cwd(),
35
35
  });
36
36
  child.unref();
37
37
  return child;
@@ -47,19 +47,18 @@ export const executeRestartRequest = (deps = {}) => {
47
47
  const exitProcess = deps.processExit ?? ((code) => process.exit(code));
48
48
  const resolvedLogger = deps.logger ?? logger;
49
49
  const autostartStatus = resolvedGetAutostartStatus();
50
- const supervisedRespawn = autostartStatus.registered &&
51
- (autostartStatus.platform === "launchd" || autostartStatus.platform === "systemd");
50
+ const supervisedRespawn = autostartStatus.registered && (autostartStatus.platform === 'launchd' || autostartStatus.platform === 'systemd');
52
51
  if (supervisedRespawn) {
53
- resolvedLogger.info("Restart requested — exiting non-zero so the OS supervisor restarts the daemon", {
54
- platform: autostartStatus.platform
52
+ resolvedLogger.info('Restart requested — exiting non-zero so the OS supervisor restarts the daemon', {
53
+ platform: autostartStatus.platform,
55
54
  });
56
55
  exitProcess(1);
57
56
  return;
58
57
  }
59
- resolvedLogger.info("Restart requested — spawning new daemon and exiting", {
58
+ resolvedLogger.info('Restart requested — spawning new daemon and exiting', {
60
59
  platform: autostartStatus.platform,
61
60
  registered: autostartStatus.registered,
62
- osPlatform: resolvedPlatform
61
+ osPlatform: resolvedPlatform,
63
62
  });
64
63
  resolvedSpawnDetachedDaemon();
65
64
  exitProcess(0);
@@ -74,22 +73,22 @@ export const restartDaemon = async (deps = {}) => {
74
73
  const resolvedLogger = deps.logger ?? logger;
75
74
  const daemonStatus = await resolvedGetDaemonStatus();
76
75
  if (daemonStatus.running && daemonStatus.pid !== null) {
77
- resolvedLogger.info("Stopping AgentRunner before restart", { pid: daemonStatus.pid });
76
+ resolvedLogger.info('Stopping AgentRunner before restart', { pid: daemonStatus.pid });
78
77
  await waitForDaemonToStop(daemonStatus.pid, {
79
78
  getDaemonStatus: resolvedGetDaemonStatus,
80
79
  kill: resolvedKill,
81
- sleep: resolvedSleep
80
+ sleep: resolvedSleep,
82
81
  });
83
82
  }
84
83
  const autostartStatus = resolvedGetAutostartStatus();
85
84
  if (autostartStatus.registered) {
86
- resolvedLogger.info("Restarting AgentRunner via registered autostart service", {
87
- platform: autostartStatus.platform
85
+ resolvedLogger.info('Restarting AgentRunner via registered autostart service', {
86
+ platform: autostartStatus.platform,
88
87
  });
89
88
  await resolvedRestartAutostartService();
90
89
  return;
91
90
  }
92
- resolvedLogger.info("Starting AgentRunner in background without autostart registration");
91
+ resolvedLogger.info('Starting AgentRunner in background without autostart registration');
93
92
  resolvedSpawnDetachedDaemon();
94
93
  };
95
94
  //# sourceMappingURL=daemon-control.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-control.js","sourceRoot":"","sources":["../src/daemon-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon-control.js","sourceRoot":"","sources":["../src/daemon-control.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import assert from "node:assert/strict";
2
- import test from "node:test";
3
- import { executeRestartRequest, restartDaemon } from "./daemon-control.js";
4
- test("restartDaemon stops running daemon and restarts via autostart when registered", async () => {
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { executeRestartRequest, restartDaemon } from './daemon-control.js';
4
+ test('restartDaemon stops running daemon and restarts via autostart when registered', async () => {
5
5
  const signals = [];
6
6
  let statusChecks = 0;
7
7
  let restarted = false;
@@ -13,7 +13,7 @@ test("restartDaemon stops running daemon and restarts via autostart when registe
13
13
  }
14
14
  return { running: false, pid: null };
15
15
  },
16
- getAutostartStatus: () => ({ registered: true, platform: "systemd" }),
16
+ getAutostartStatus: () => ({ registered: true, platform: 'systemd' }),
17
17
  restartAutostartService: async () => {
18
18
  restarted = true;
19
19
  },
@@ -22,97 +22,97 @@ test("restartDaemon stops running daemon and restarts via autostart when registe
22
22
  return true;
23
23
  },
24
24
  sleep: async () => undefined,
25
- logger: { info: () => undefined }
25
+ logger: { info: () => undefined },
26
26
  });
27
- assert.deepEqual(signals, [{ pid: 4321, signal: "SIGTERM" }]);
27
+ assert.deepEqual(signals, [{ pid: 4321, signal: 'SIGTERM' }]);
28
28
  assert.equal(restarted, true);
29
29
  });
30
- test("restartDaemon starts detached daemon when autostart is not registered", async () => {
30
+ test('restartDaemon starts detached daemon when autostart is not registered', async () => {
31
31
  let started = false;
32
32
  await restartDaemon({
33
33
  getDaemonStatus: async () => ({ running: false, pid: null }),
34
- getAutostartStatus: () => ({ registered: false, platform: "manual" }),
34
+ getAutostartStatus: () => ({ registered: false, platform: 'manual' }),
35
35
  restartAutostartService: async () => {
36
- throw new Error("should not restart autostart");
36
+ throw new Error('should not restart autostart');
37
37
  },
38
38
  spawnDetachedDaemon: () => {
39
39
  started = true;
40
40
  return {
41
- unref: () => undefined
41
+ unref: () => undefined,
42
42
  };
43
43
  },
44
- logger: { info: () => undefined }
44
+ logger: { info: () => undefined },
45
45
  });
46
46
  assert.equal(started, true);
47
47
  });
48
- test("executeRestartRequest exits non-zero when supervised by launchd", () => {
48
+ test('executeRestartRequest exits non-zero when supervised by launchd', () => {
49
49
  const exitCodes = [];
50
50
  let spawned = false;
51
51
  executeRestartRequest({
52
- getAutostartStatus: () => ({ registered: true, platform: "launchd" }),
52
+ getAutostartStatus: () => ({ registered: true, platform: 'launchd' }),
53
53
  spawnDetachedDaemon: () => {
54
54
  spawned = true;
55
55
  },
56
- platform: () => "darwin",
56
+ platform: () => 'darwin',
57
57
  processExit: ((code) => {
58
58
  exitCodes.push(code);
59
59
  return undefined;
60
60
  }),
61
- logger: { info: () => undefined }
61
+ logger: { info: () => undefined },
62
62
  });
63
63
  assert.deepEqual(exitCodes, [1]);
64
64
  assert.equal(spawned, false);
65
65
  });
66
- test("executeRestartRequest exits non-zero when supervised by systemd", () => {
66
+ test('executeRestartRequest exits non-zero when supervised by systemd', () => {
67
67
  const exitCodes = [];
68
68
  let spawned = false;
69
69
  executeRestartRequest({
70
- getAutostartStatus: () => ({ registered: true, platform: "systemd" }),
70
+ getAutostartStatus: () => ({ registered: true, platform: 'systemd' }),
71
71
  spawnDetachedDaemon: () => {
72
72
  spawned = true;
73
73
  },
74
- platform: () => "linux",
74
+ platform: () => 'linux',
75
75
  processExit: ((code) => {
76
76
  exitCodes.push(code);
77
77
  return undefined;
78
78
  }),
79
- logger: { info: () => undefined }
79
+ logger: { info: () => undefined },
80
80
  });
81
81
  assert.deepEqual(exitCodes, [1]);
82
82
  assert.equal(spawned, false);
83
83
  });
84
- test("executeRestartRequest spawns a hidden Windows daemon even when startup-folder is registered", () => {
84
+ test('executeRestartRequest spawns a hidden Windows daemon even when startup-folder is registered', () => {
85
85
  const exitCodes = [];
86
86
  let spawned = false;
87
87
  executeRestartRequest({
88
- getAutostartStatus: () => ({ registered: true, platform: "startup-folder" }),
88
+ getAutostartStatus: () => ({ registered: true, platform: 'startup-folder' }),
89
89
  spawnDetachedDaemon: () => {
90
90
  spawned = true;
91
91
  },
92
- platform: () => "win32",
92
+ platform: () => 'win32',
93
93
  processExit: ((code) => {
94
94
  exitCodes.push(code);
95
95
  return undefined;
96
96
  }),
97
- logger: { info: () => undefined }
97
+ logger: { info: () => undefined },
98
98
  });
99
- assert.equal(spawned, true, "Windows startup-folder is not a supervisor — must respawn");
99
+ assert.equal(spawned, true, 'Windows startup-folder is not a supervisor — must respawn');
100
100
  assert.deepEqual(exitCodes, [0]);
101
101
  });
102
- test("executeRestartRequest spawns a detached daemon when running manually on macOS", () => {
102
+ test('executeRestartRequest spawns a detached daemon when running manually on macOS', () => {
103
103
  const exitCodes = [];
104
104
  let spawned = false;
105
105
  executeRestartRequest({
106
- getAutostartStatus: () => ({ registered: false, platform: "launchd" }),
106
+ getAutostartStatus: () => ({ registered: false, platform: 'launchd' }),
107
107
  spawnDetachedDaemon: () => {
108
108
  spawned = true;
109
109
  },
110
- platform: () => "darwin",
110
+ platform: () => 'darwin',
111
111
  processExit: ((code) => {
112
112
  exitCodes.push(code);
113
113
  return undefined;
114
114
  }),
115
- logger: { info: () => undefined }
115
+ logger: { info: () => undefined },
116
116
  });
117
117
  assert.equal(spawned, true);
118
118
  assert.deepEqual(exitCodes, [0]);
@@ -1,6 +1,6 @@
1
- import { execFileSync, type ChildProcess, type SpawnOptions } from "node:child_process";
2
- import { existsSync } from "node:fs";
3
- import { platform as getPlatform } from "node:os";
1
+ import { execFileSync, type ChildProcess, type SpawnOptions } from 'node:child_process';
2
+ import { existsSync } from 'node:fs';
3
+ import { platform as getPlatform } from 'node:os';
4
4
  type ExecutableDeps = {
5
5
  env?: NodeJS.ProcessEnv;
6
6
  execFileSync?: typeof execFileSync;