@agentteams/runner 0.0.84-dev.206 → 0.0.84-dev.208
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/dist/api-client.d.ts +2 -2
- package/dist/api-client.js +66 -66
- package/dist/api-client.js.map +1 -1
- package/dist/api-client.test.js +63 -54
- package/dist/api-client.test.js.map +1 -1
- package/dist/autostart.js +81 -81
- package/dist/autostart.js.map +1 -1
- package/dist/autostart.test.js +35 -35
- package/dist/autostart.test.js.map +1 -1
- package/dist/commands/cleanup.js +4 -4
- package/dist/commands/init.js +14 -14
- package/dist/commands/restart.js +3 -3
- package/dist/commands/start.js +10 -10
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.js +7 -7
- package/dist/commands/stop.js +7 -7
- package/dist/commands/uninstall.js +6 -6
- package/dist/commands/update.d.ts +4 -4
- package/dist/commands/update.js +20 -22
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/update.test.js +38 -42
- package/dist/commands/update.test.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +12 -12
- package/dist/config.test.js +61 -61
- package/dist/config.test.js.map +1 -1
- package/dist/daemon-control.d.ts +5 -5
- package/dist/daemon-control.js +21 -22
- package/dist/daemon-control.js.map +1 -1
- package/dist/daemon-control.test.js +29 -29
- package/dist/executable.d.ts +3 -3
- package/dist/executable.js +46 -49
- package/dist/executable.js.map +1 -1
- package/dist/executable.test.js +62 -62
- package/dist/executable.test.js.map +1 -1
- package/dist/handlers/trigger-handler.d.ts +6 -6
- package/dist/handlers/trigger-handler.js +118 -124
- package/dist/handlers/trigger-handler.js.map +1 -1
- package/dist/handlers/trigger-handler.test.js +373 -365
- package/dist/handlers/trigger-handler.test.js.map +1 -1
- package/dist/index.js +25 -25
- package/dist/logger.js +1 -1
- package/dist/pid.js +6 -6
- package/dist/poller.d.ts +7 -7
- package/dist/poller.js +54 -53
- package/dist/poller.js.map +1 -1
- package/dist/poller.test.js +209 -181
- package/dist/poller.test.js.map +1 -1
- package/dist/runners/amp.d.ts +1 -1
- package/dist/runners/amp.js +74 -81
- package/dist/runners/amp.js.map +1 -1
- package/dist/runners/antigravity.d.ts +3 -3
- package/dist/runners/antigravity.js +116 -127
- package/dist/runners/antigravity.js.map +1 -1
- package/dist/runners/antigravity.replay.test.js +25 -25
- package/dist/runners/antigravity.replay.test.js.map +1 -1
- package/dist/runners/antigravity.test.js +98 -98
- package/dist/runners/antigravity.test.js.map +1 -1
- package/dist/runners/claude-code.d.ts +1 -1
- package/dist/runners/claude-code.js +85 -84
- package/dist/runners/claude-code.js.map +1 -1
- package/dist/runners/claude-code.test.js +37 -40
- package/dist/runners/claude-code.test.js.map +1 -1
- package/dist/runners/codex.d.ts +1 -1
- package/dist/runners/codex.js +87 -96
- package/dist/runners/codex.js.map +1 -1
- package/dist/runners/codex.test.js +68 -68
- package/dist/runners/codex.test.js.map +1 -1
- package/dist/runners/index.d.ts +1 -1
- package/dist/runners/index.js +10 -10
- package/dist/runners/index.test.js +16 -16
- package/dist/runners/log-reporter.d.ts +2 -2
- package/dist/runners/log-reporter.js +10 -10
- package/dist/runners/log-reporter.test.js +70 -70
- package/dist/runners/log-reporter.test.js.map +1 -1
- package/dist/runners/opencode.d.ts +1 -1
- package/dist/runners/opencode.js +68 -75
- package/dist/runners/opencode.js.map +1 -1
- package/dist/runners/process-control.d.ts +1 -1
- package/dist/runners/process-control.js +13 -11
- package/dist/runners/process-control.js.map +1 -1
- package/dist/runners/stream-json-parser.d.ts +1 -1
- package/dist/runners/stream-json-parser.js +70 -67
- package/dist/runners/stream-json-parser.js.map +1 -1
- package/dist/runners/stream-json-parser.replay.test.js +17 -17
- package/dist/runners/stream-json-parser.replay.test.js.map +1 -1
- package/dist/runners/stream-json-parser.test.js +76 -78
- package/dist/runners/stream-json-parser.test.js.map +1 -1
- package/dist/types.d.ts +4 -4
- package/dist/utils/auth-path-store.js +7 -7
- package/dist/utils/auth-path-store.test.js +24 -29
- package/dist/utils/auth-path-store.test.js.map +1 -1
- package/dist/utils/auto-update.d.ts +4 -4
- package/dist/utils/auto-update.js +30 -28
- package/dist/utils/auto-update.js.map +1 -1
- package/dist/utils/auto-update.test.js +30 -30
- package/dist/utils/convention-evaluator.d.ts +1 -1
- package/dist/utils/convention-evaluator.js +22 -21
- package/dist/utils/convention-evaluator.js.map +1 -1
- package/dist/utils/convention-evaluator.test.js +120 -110
- package/dist/utils/convention-evaluator.test.js.map +1 -1
- package/dist/utils/convention-sync.d.ts +3 -3
- package/dist/utils/convention-sync.js +10 -10
- package/dist/utils/convention-sync.test.js +39 -25
- package/dist/utils/convention-sync.test.js.map +1 -1
- package/dist/utils/git-worktree.js +20 -18
- package/dist/utils/git-worktree.js.map +1 -1
- package/dist/utils/git-worktree.test.js +98 -98
- package/dist/utils/git-worktree.test.js.map +1 -1
- package/dist/utils/origin-issue-safeguard.js +35 -30
- package/dist/utils/origin-issue-safeguard.js.map +1 -1
- package/dist/utils/power-save-blocker.d.ts +4 -4
- package/dist/utils/power-save-blocker.js +33 -33
- package/dist/utils/power-save-blocker.test.js +37 -37
- package/dist/utils/power-save-blocker.test.js.map +1 -1
- package/dist/utils/runner-cleanup.d.ts +3 -3
- package/dist/utils/runner-cleanup.js +13 -13
- package/dist/utils/runner-cleanup.test.js +35 -35
- package/dist/utils/runner-history.js +3 -3
- package/dist/utils/runner-history.test.js +17 -17
- package/package.json +4 -1
- package/readme.md +10 -10
package/dist/commands/init.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { DaemonApiClient } from
|
|
2
|
-
import { logger } from
|
|
3
|
-
import { resolveApiUrlForInit, writeDaemonConfigFile } from
|
|
4
|
-
import { registerAutostart } from
|
|
1
|
+
import { DaemonApiClient } from '../api-client.js';
|
|
2
|
+
import { logger } from '../logger.js';
|
|
3
|
+
import { resolveApiUrlForInit, writeDaemonConfigFile } from '../config.js';
|
|
4
|
+
import { registerAutostart } from '../autostart.js';
|
|
5
5
|
const parseInitArgs = (argv) => {
|
|
6
6
|
const options = { noAutostart: false };
|
|
7
7
|
for (let i = 0; i < argv.length; i += 1) {
|
|
8
8
|
const arg = argv[i];
|
|
9
|
-
if (arg ===
|
|
9
|
+
if (arg === '--token') {
|
|
10
10
|
options.token = argv[i + 1];
|
|
11
11
|
i += 1;
|
|
12
12
|
continue;
|
|
13
13
|
}
|
|
14
|
-
if (arg ===
|
|
14
|
+
if (arg === '--api-url') {
|
|
15
15
|
options.apiUrl = argv[i + 1];
|
|
16
16
|
i += 1;
|
|
17
17
|
continue;
|
|
18
18
|
}
|
|
19
|
-
if (arg ===
|
|
19
|
+
if (arg === '--no-autostart') {
|
|
20
20
|
options.noAutostart = true;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -25,7 +25,7 @@ const parseInitArgs = (argv) => {
|
|
|
25
25
|
export const runInitCommand = async (argv) => {
|
|
26
26
|
const options = parseInitArgs(argv);
|
|
27
27
|
if (!options.token || options.token.trim().length === 0) {
|
|
28
|
-
throw new Error(
|
|
28
|
+
throw new Error('Missing token. Usage: agentrunner init --token <token> [--api-url <url>] [--no-autostart]');
|
|
29
29
|
}
|
|
30
30
|
const apiUrl = await resolveApiUrlForInit(options.apiUrl);
|
|
31
31
|
const daemonToken = options.token.trim();
|
|
@@ -33,25 +33,25 @@ export const runInitCommand = async (argv) => {
|
|
|
33
33
|
const daemon = await client.validateDaemonToken();
|
|
34
34
|
const configPath = await writeDaemonConfigFile({
|
|
35
35
|
daemonToken,
|
|
36
|
-
apiUrl
|
|
36
|
+
apiUrl,
|
|
37
37
|
});
|
|
38
|
-
logger.info(
|
|
38
|
+
logger.info('Daemon init completed', {
|
|
39
39
|
daemonId: daemon.id,
|
|
40
40
|
memberId: daemon.memberId,
|
|
41
41
|
osType: daemon.osType,
|
|
42
|
-
configPath
|
|
42
|
+
configPath,
|
|
43
43
|
});
|
|
44
44
|
if (!options.noAutostart) {
|
|
45
45
|
const result = await registerAutostart({ token: daemonToken, apiUrl });
|
|
46
46
|
if (result.registered) {
|
|
47
|
-
logger.info(
|
|
47
|
+
logger.info('Autostart registered', {
|
|
48
48
|
platform: result.platform,
|
|
49
|
-
servicePath: result.servicePath
|
|
49
|
+
servicePath: result.servicePath,
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
else {
|
|
54
|
-
logger.info(
|
|
54
|
+
logger.info('Autostart skipped (--no-autostart)');
|
|
55
55
|
}
|
|
56
56
|
};
|
|
57
57
|
//# sourceMappingURL=init.js.map
|
package/dist/commands/restart.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { restartDaemon } from
|
|
2
|
-
import { logger } from
|
|
1
|
+
import { restartDaemon } from '../daemon-control.js';
|
|
2
|
+
import { logger } from '../logger.js';
|
|
3
3
|
export const runRestartCommand = async () => {
|
|
4
4
|
await restartDaemon();
|
|
5
|
-
logger.info(
|
|
5
|
+
logger.info('AgentRunner restart completed');
|
|
6
6
|
};
|
|
7
7
|
//# sourceMappingURL=restart.js.map
|
package/dist/commands/start.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { resolveRuntimeConfig } from
|
|
2
|
-
import { startPolling } from
|
|
3
|
-
import { DaemonApiClient } from
|
|
4
|
-
import { createTriggerHandler } from
|
|
5
|
-
import { writePidFile, removePidFile } from
|
|
6
|
-
import { logger } from
|
|
1
|
+
import { resolveRuntimeConfig } from '../config.js';
|
|
2
|
+
import { startPolling } from '../poller.js';
|
|
3
|
+
import { DaemonApiClient } from '../api-client.js';
|
|
4
|
+
import { createTriggerHandler } from '../handlers/trigger-handler.js';
|
|
5
|
+
import { writePidFile, removePidFile } from '../pid.js';
|
|
6
|
+
import { logger } from '../logger.js';
|
|
7
7
|
/**
|
|
8
8
|
* Default CODEX_SANDBOX_LEVEL to "off" when not explicitly set.
|
|
9
9
|
* Auto-start services (launchd/systemd/Startup) inject CODEX_SANDBOX_LEVEL=off
|
|
@@ -12,7 +12,7 @@ import { logger } from "../logger.js";
|
|
|
12
12
|
*/
|
|
13
13
|
const ensureCodexSandboxDefault = () => {
|
|
14
14
|
if (!process.env.CODEX_SANDBOX_LEVEL) {
|
|
15
|
-
process.env.CODEX_SANDBOX_LEVEL =
|
|
15
|
+
process.env.CODEX_SANDBOX_LEVEL = 'off';
|
|
16
16
|
logger.info("CODEX_SANDBOX_LEVEL not set; defaulting to 'off' to match auto-start behavior");
|
|
17
17
|
}
|
|
18
18
|
};
|
|
@@ -22,9 +22,9 @@ export const runStartCommand = async () => {
|
|
|
22
22
|
const cleanup = async () => {
|
|
23
23
|
await removePidFile();
|
|
24
24
|
};
|
|
25
|
-
process.on(
|
|
26
|
-
process.on(
|
|
27
|
-
process.on(
|
|
25
|
+
process.on('SIGINT', () => void cleanup());
|
|
26
|
+
process.on('SIGTERM', () => void cleanup());
|
|
27
|
+
process.on('exit', () => {
|
|
28
28
|
// Synchronous best-effort — PID file may already be removed by signal handler.
|
|
29
29
|
});
|
|
30
30
|
const config = await resolveRuntimeConfig();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,yBAAyB,GAAG,GAAS,EAAE;IAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;IACvD,yBAAyB,EAAE,CAAC;IAC5B,MAAM,YAAY,EAAE,CAAC;IAErB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACtB,+EAA+E;IACjF,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAEtE,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC,oBAAoB,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,yBAAyB,GAAG,GAAS,EAAE;IAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;IACvD,yBAAyB,EAAE,CAAC;IAC5B,MAAM,YAAY,EAAE,CAAC;IAErB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACtB,+EAA+E;IACjF,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IAEtE,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC,oBAAoB,EAAE,EAAE,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;AACvH,CAAC,CAAC"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { logger } from
|
|
2
|
-
import { getDaemonStatus } from
|
|
3
|
-
import { getAutostartStatus } from
|
|
1
|
+
import { logger } from '../logger.js';
|
|
2
|
+
import { getDaemonStatus } from '../pid.js';
|
|
3
|
+
import { getAutostartStatus } from '../autostart.js';
|
|
4
4
|
export const runStatusCommand = async () => {
|
|
5
5
|
const daemonStatus = await getDaemonStatus();
|
|
6
6
|
const autostartStatus = getAutostartStatus();
|
|
7
7
|
if (daemonStatus.running) {
|
|
8
|
-
logger.info(
|
|
8
|
+
logger.info('Daemon is running', { pid: daemonStatus.pid });
|
|
9
9
|
}
|
|
10
10
|
else {
|
|
11
|
-
logger.info(
|
|
11
|
+
logger.info('Daemon is not running');
|
|
12
12
|
}
|
|
13
13
|
if (autostartStatus.registered) {
|
|
14
|
-
logger.info(
|
|
14
|
+
logger.info('Autostart is enabled', { platform: autostartStatus.platform });
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
|
-
logger.info(
|
|
17
|
+
logger.info('Autostart is not registered', { platform: autostartStatus.platform });
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
20
|
//# sourceMappingURL=status.js.map
|
package/dist/commands/stop.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { logger } from
|
|
2
|
-
import { getDaemonStatus, removePidFile } from
|
|
1
|
+
import { logger } from '../logger.js';
|
|
2
|
+
import { getDaemonStatus, removePidFile } from '../pid.js';
|
|
3
3
|
export const runStopCommand = async () => {
|
|
4
4
|
const { running, pid } = await getDaemonStatus();
|
|
5
5
|
if (!running || pid === null) {
|
|
6
|
-
logger.info(
|
|
6
|
+
logger.info('Daemon is not running');
|
|
7
7
|
return;
|
|
8
8
|
}
|
|
9
9
|
try {
|
|
10
|
-
process.kill(pid,
|
|
11
|
-
logger.info(
|
|
10
|
+
process.kill(pid, 'SIGTERM');
|
|
11
|
+
logger.info('Sent SIGTERM to daemon', { pid });
|
|
12
12
|
}
|
|
13
13
|
catch (error) {
|
|
14
|
-
logger.error(
|
|
14
|
+
logger.error('Failed to stop daemon', {
|
|
15
15
|
pid,
|
|
16
|
-
error: error instanceof Error ? error.message : String(error)
|
|
16
|
+
error: error instanceof Error ? error.message : String(error),
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
await removePidFile();
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { logger } from
|
|
2
|
-
import { getDaemonStatus, removePidFile } from
|
|
3
|
-
import { unregisterAutostart } from
|
|
1
|
+
import { logger } from '../logger.js';
|
|
2
|
+
import { getDaemonStatus, removePidFile } from '../pid.js';
|
|
3
|
+
import { unregisterAutostart } from '../autostart.js';
|
|
4
4
|
export const runUninstallCommand = async () => {
|
|
5
5
|
// 1. Stop running daemon if any.
|
|
6
6
|
const { running, pid } = await getDaemonStatus();
|
|
7
7
|
if (running && pid !== null) {
|
|
8
8
|
try {
|
|
9
|
-
process.kill(pid,
|
|
10
|
-
logger.info(
|
|
9
|
+
process.kill(pid, 'SIGTERM');
|
|
10
|
+
logger.info('Stopped running daemon', { pid });
|
|
11
11
|
}
|
|
12
12
|
catch {
|
|
13
13
|
// Process may have exited between check and kill.
|
|
@@ -16,6 +16,6 @@ export const runUninstallCommand = async () => {
|
|
|
16
16
|
}
|
|
17
17
|
// 2. Unregister autostart service.
|
|
18
18
|
await unregisterAutostart();
|
|
19
|
-
logger.info(
|
|
19
|
+
logger.info('Uninstall completed. Daemon service removed and autostart unregistered.');
|
|
20
20
|
};
|
|
21
21
|
//# sourceMappingURL=uninstall.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { restartDaemon } from
|
|
2
|
-
import { runExecutableSync } from
|
|
3
|
-
import { logger } from
|
|
1
|
+
import { restartDaemon } from '../daemon-control.js';
|
|
2
|
+
import { runExecutableSync } from '../executable.js';
|
|
3
|
+
import { logger } from '../logger.js';
|
|
4
4
|
type UpdateDeps = {
|
|
5
5
|
runExecutableSync?: typeof runExecutableSync;
|
|
6
6
|
restartDaemon?: typeof restartDaemon;
|
|
7
|
-
logger?: Pick<typeof logger,
|
|
7
|
+
logger?: Pick<typeof logger, 'info' | 'warn'>;
|
|
8
8
|
};
|
|
9
9
|
export declare const runUpdateCommand: (deps?: UpdateDeps) => Promise<void>;
|
|
10
10
|
export {};
|
package/dist/commands/update.js
CHANGED
|
@@ -1,29 +1,27 @@
|
|
|
1
|
-
import { createRequire } from
|
|
2
|
-
import { restartDaemon } from
|
|
3
|
-
import { runExecutableSync } from
|
|
4
|
-
import { logger } from
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { restartDaemon } from '../daemon-control.js';
|
|
3
|
+
import { runExecutableSync } from '../executable.js';
|
|
4
|
+
import { logger } from '../logger.js';
|
|
5
5
|
const require = createRequire(import.meta.url);
|
|
6
|
-
const packageJson = require(
|
|
7
|
-
const packageName =
|
|
8
|
-
const getCurrentVersion = () => packageJson.version ??
|
|
6
|
+
const packageJson = require('../../package.json');
|
|
7
|
+
const packageName = '@agentteams/runner';
|
|
8
|
+
const getCurrentVersion = () => packageJson.version ?? '0.0.0';
|
|
9
9
|
const readLatestVersion = (deps) => {
|
|
10
10
|
try {
|
|
11
|
-
const latestVersion = deps.runExecutableSync(
|
|
11
|
+
const latestVersion = deps.runExecutableSync('npm', ['view', packageName, 'version']).trim();
|
|
12
12
|
return latestVersion.length > 0 ? latestVersion : null;
|
|
13
13
|
}
|
|
14
14
|
catch (error) {
|
|
15
|
-
deps.logger.warn(
|
|
16
|
-
error: error instanceof Error ? error.message : String(error)
|
|
15
|
+
deps.logger.warn('Failed to resolve latest AgentRunner version before update', {
|
|
16
|
+
error: error instanceof Error ? error.message : String(error),
|
|
17
17
|
});
|
|
18
18
|
return null;
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
21
|
const normalizeInstallError = (error) => {
|
|
22
22
|
const message = error instanceof Error ? error.message : String(error);
|
|
23
|
-
if (message.includes(
|
|
24
|
-
|
|
25
|
-
|| message.toLowerCase().includes("permission denied")) {
|
|
26
|
-
return new Error("Global npm install requires elevated permissions. Configure a user-level npm prefix or rerun the update with appropriate permissions.");
|
|
23
|
+
if (message.includes('EACCES') || message.includes('EPERM') || message.toLowerCase().includes('permission denied')) {
|
|
24
|
+
return new Error('Global npm install requires elevated permissions. Configure a user-level npm prefix or rerun the update with appropriate permissions.');
|
|
27
25
|
}
|
|
28
26
|
return new Error(`Failed to install the latest AgentRunner package: ${message}`);
|
|
29
27
|
};
|
|
@@ -34,25 +32,25 @@ export const runUpdateCommand = async (deps = {}) => {
|
|
|
34
32
|
const currentVersion = getCurrentVersion();
|
|
35
33
|
const latestVersion = readLatestVersion({
|
|
36
34
|
runExecutableSync: resolvedRunExecutableSync,
|
|
37
|
-
logger: resolvedLogger
|
|
35
|
+
logger: resolvedLogger,
|
|
38
36
|
});
|
|
39
|
-
resolvedLogger.info(
|
|
37
|
+
resolvedLogger.info('Updating AgentRunner package', {
|
|
40
38
|
currentVersion,
|
|
41
|
-
targetVersion: latestVersion ??
|
|
39
|
+
targetVersion: latestVersion ?? 'latest',
|
|
42
40
|
});
|
|
43
41
|
try {
|
|
44
|
-
resolvedRunExecutableSync(
|
|
42
|
+
resolvedRunExecutableSync('npm', ['install', '-g', `${packageName}@latest`]);
|
|
45
43
|
}
|
|
46
44
|
catch (error) {
|
|
47
45
|
throw normalizeInstallError(error);
|
|
48
46
|
}
|
|
49
|
-
resolvedLogger.info(
|
|
50
|
-
version: latestVersion ??
|
|
47
|
+
resolvedLogger.info('Package update completed', {
|
|
48
|
+
version: latestVersion ?? 'latest',
|
|
51
49
|
});
|
|
52
50
|
await resolvedRestartDaemon();
|
|
53
|
-
resolvedLogger.info(
|
|
51
|
+
resolvedLogger.info('AgentRunner update completed', {
|
|
54
52
|
currentVersion,
|
|
55
|
-
targetVersion: latestVersion ??
|
|
53
|
+
targetVersion: latestVersion ?? 'latest',
|
|
56
54
|
});
|
|
57
55
|
};
|
|
58
56
|
//# sourceMappingURL=update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAyB,CAAC;AAE1E,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAQzC,MAAM,iBAAiB,GAAG,GAAW,EAAE,CAAC,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;AAEvE,MAAM,iBAAiB,GAAG,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import assert from
|
|
2
|
-
import test from
|
|
3
|
-
import { runUpdateCommand } from
|
|
4
|
-
test(
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { runUpdateCommand } from './update.js';
|
|
4
|
+
test('runUpdateCommand installs latest package and restarts daemon', async () => {
|
|
5
5
|
const commandCalls = [];
|
|
6
6
|
const logs = [];
|
|
7
7
|
let restarted = false;
|
|
8
8
|
await runUpdateCommand({
|
|
9
9
|
runExecutableSync: (name, args) => {
|
|
10
10
|
commandCalls.push({ name, args });
|
|
11
|
-
if (args[0] ===
|
|
12
|
-
return
|
|
11
|
+
if (args[0] === 'view') {
|
|
12
|
+
return '0.0.13\n';
|
|
13
13
|
}
|
|
14
|
-
return
|
|
14
|
+
return '';
|
|
15
15
|
},
|
|
16
16
|
restartDaemon: async () => {
|
|
17
17
|
restarted = true;
|
|
@@ -20,85 +20,81 @@ test("runUpdateCommand installs latest package and restarts daemon", async () =>
|
|
|
20
20
|
info: (message) => {
|
|
21
21
|
logs.push(message);
|
|
22
22
|
},
|
|
23
|
-
warn: () => undefined
|
|
24
|
-
}
|
|
23
|
+
warn: () => undefined,
|
|
24
|
+
},
|
|
25
25
|
});
|
|
26
26
|
assert.deepEqual(commandCalls, [
|
|
27
27
|
{
|
|
28
|
-
name:
|
|
29
|
-
args: [
|
|
28
|
+
name: 'npm',
|
|
29
|
+
args: ['view', '@agentteams/runner', 'version'],
|
|
30
30
|
},
|
|
31
31
|
{
|
|
32
|
-
name:
|
|
33
|
-
args: [
|
|
34
|
-
}
|
|
32
|
+
name: 'npm',
|
|
33
|
+
args: ['install', '-g', '@agentteams/runner@latest'],
|
|
34
|
+
},
|
|
35
35
|
]);
|
|
36
36
|
assert.equal(restarted, true);
|
|
37
|
-
assert.deepEqual(logs, [
|
|
38
|
-
"Updating AgentRunner package",
|
|
39
|
-
"Package update completed",
|
|
40
|
-
"AgentRunner update completed"
|
|
41
|
-
]);
|
|
37
|
+
assert.deepEqual(logs, ['Updating AgentRunner package', 'Package update completed', 'AgentRunner update completed']);
|
|
42
38
|
});
|
|
43
|
-
test(
|
|
39
|
+
test('runUpdateCommand continues update when latest version lookup fails', async () => {
|
|
44
40
|
const commandCalls = [];
|
|
45
41
|
const warnings = [];
|
|
46
42
|
await runUpdateCommand({
|
|
47
43
|
runExecutableSync: (name, args) => {
|
|
48
44
|
commandCalls.push({ name, args });
|
|
49
|
-
if (args[0] ===
|
|
50
|
-
throw new Error(
|
|
45
|
+
if (args[0] === 'view') {
|
|
46
|
+
throw new Error('network unavailable');
|
|
51
47
|
}
|
|
52
|
-
return
|
|
48
|
+
return '';
|
|
53
49
|
},
|
|
54
50
|
restartDaemon: async () => undefined,
|
|
55
51
|
logger: {
|
|
56
52
|
info: () => undefined,
|
|
57
53
|
warn: (message) => {
|
|
58
54
|
warnings.push(message);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
55
|
+
},
|
|
56
|
+
},
|
|
61
57
|
});
|
|
62
58
|
assert.equal(warnings.length, 1);
|
|
63
59
|
assert.deepEqual(commandCalls, [
|
|
64
60
|
{
|
|
65
|
-
name:
|
|
66
|
-
args: [
|
|
61
|
+
name: 'npm',
|
|
62
|
+
args: ['view', '@agentteams/runner', 'version'],
|
|
67
63
|
},
|
|
68
64
|
{
|
|
69
|
-
name:
|
|
70
|
-
args: [
|
|
71
|
-
}
|
|
65
|
+
name: 'npm',
|
|
66
|
+
args: ['install', '-g', '@agentteams/runner@latest'],
|
|
67
|
+
},
|
|
72
68
|
]);
|
|
73
69
|
});
|
|
74
|
-
test(
|
|
70
|
+
test('runUpdateCommand surfaces a friendly message when global npm install needs permissions', async () => {
|
|
75
71
|
await assert.rejects(() => runUpdateCommand({
|
|
76
72
|
runExecutableSync: (_name, args) => {
|
|
77
|
-
if (args[0] ===
|
|
78
|
-
return
|
|
73
|
+
if (args[0] === 'view') {
|
|
74
|
+
return '0.0.13\n';
|
|
79
75
|
}
|
|
80
|
-
throw new Error(
|
|
76
|
+
throw new Error('npm ERR! code EACCES');
|
|
81
77
|
},
|
|
82
78
|
restartDaemon: async () => undefined,
|
|
83
79
|
logger: {
|
|
84
80
|
info: () => undefined,
|
|
85
|
-
warn: () => undefined
|
|
86
|
-
}
|
|
81
|
+
warn: () => undefined,
|
|
82
|
+
},
|
|
87
83
|
}), /Global npm install requires elevated permissions/u);
|
|
88
84
|
});
|
|
89
|
-
test(
|
|
85
|
+
test('runUpdateCommand surfaces install failures with command context', async () => {
|
|
90
86
|
await assert.rejects(() => runUpdateCommand({
|
|
91
87
|
runExecutableSync: (_name, args) => {
|
|
92
|
-
if (args[0] ===
|
|
93
|
-
return
|
|
88
|
+
if (args[0] === 'view') {
|
|
89
|
+
return '0.0.13\n';
|
|
94
90
|
}
|
|
95
|
-
throw new Error(
|
|
91
|
+
throw new Error('registry unavailable');
|
|
96
92
|
},
|
|
97
93
|
restartDaemon: async () => undefined,
|
|
98
94
|
logger: {
|
|
99
95
|
info: () => undefined,
|
|
100
|
-
warn: () => undefined
|
|
101
|
-
}
|
|
96
|
+
warn: () => undefined,
|
|
97
|
+
},
|
|
102
98
|
}), /Failed to install the latest AgentRunner package: registry unavailable/u);
|
|
103
99
|
});
|
|
104
100
|
//# sourceMappingURL=update.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.test.js","sourceRoot":"","sources":["../../src/commands/update.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,IAAI,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;IAC9E,MAAM,YAAY,GAA4C,EAAE,CAAC;IACjE,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,gBAAgB,CAAC;QACrB,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;YAChC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBACvB,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,aAAa,EAAE,KAAK,IAAI,EAAE;YACxB,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,MAAM,EAAE;YACN,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;gBAChB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC;YACD,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;SACtB;KACF,CAAC,CAAC;IAEH,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE;QAC7B;YACE,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,CAAC;SAChD;QACD;YACE,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,2BAA2B,CAAC;SACrD;KACF,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC9B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"update.test.js","sourceRoot":"","sources":["../../src/commands/update.test.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DaemonConfigFile, RuntimeConfig } from
|
|
1
|
+
import type { DaemonConfigFile, RuntimeConfig } from './types.js';
|
|
2
2
|
export declare const getDaemonConfigPath: () => string;
|
|
3
3
|
export declare const readDaemonConfigFile: () => Promise<DaemonConfigFile | null>;
|
|
4
4
|
export declare const writeDaemonConfigFile: (config: DaemonConfigFile) => Promise<string>;
|
package/dist/config.js
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { chmodSync, promises as fs } from
|
|
2
|
-
import { homedir } from
|
|
3
|
-
import { dirname, join } from
|
|
1
|
+
import { chmodSync, promises as fs } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
4
|
const DEFAULT_POLLING_INTERVAL_MS = 30_000;
|
|
5
5
|
const DEFAULT_TIMEOUT_MS = 24 * 60 * 60 * 1000;
|
|
6
6
|
const DEFAULT_IDLE_TIMEOUT_MS = 600_000;
|
|
7
|
-
const DEFAULT_RUNNER_CMD =
|
|
8
|
-
const DEFAULT_API_URL =
|
|
7
|
+
const DEFAULT_RUNNER_CMD = 'opencode';
|
|
8
|
+
const DEFAULT_API_URL = 'https://api.agentteams.run';
|
|
9
9
|
const parseBoolean = (rawValue, fallback) => {
|
|
10
10
|
if (rawValue === undefined) {
|
|
11
11
|
return fallback;
|
|
12
12
|
}
|
|
13
13
|
const normalized = rawValue.trim().toLowerCase();
|
|
14
|
-
if ([
|
|
14
|
+
if (['false', '0', 'no', 'off'].includes(normalized)) {
|
|
15
15
|
return false;
|
|
16
16
|
}
|
|
17
|
-
if ([
|
|
17
|
+
if (['true', '1', 'yes', 'on'].includes(normalized)) {
|
|
18
18
|
return true;
|
|
19
19
|
}
|
|
20
20
|
return fallback;
|
|
21
21
|
};
|
|
22
22
|
export const getDaemonConfigPath = () => {
|
|
23
|
-
return join(homedir(),
|
|
23
|
+
return join(homedir(), '.agentteams', 'daemon.json');
|
|
24
24
|
};
|
|
25
25
|
const parsePositiveInteger = (rawValue, fallback) => {
|
|
26
26
|
if (!rawValue) {
|
|
@@ -35,14 +35,14 @@ const parsePositiveInteger = (rawValue, fallback) => {
|
|
|
35
35
|
export const readDaemonConfigFile = async () => {
|
|
36
36
|
const path = getDaemonConfigPath();
|
|
37
37
|
try {
|
|
38
|
-
const content = await fs.readFile(path,
|
|
38
|
+
const content = await fs.readFile(path, 'utf8');
|
|
39
39
|
const parsed = JSON.parse(content);
|
|
40
40
|
if (!parsed.daemonToken || !parsed.apiUrl) {
|
|
41
41
|
return null;
|
|
42
42
|
}
|
|
43
43
|
return {
|
|
44
44
|
daemonToken: parsed.daemonToken,
|
|
45
|
-
apiUrl: parsed.apiUrl
|
|
45
|
+
apiUrl: parsed.apiUrl,
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
catch {
|
|
@@ -52,7 +52,7 @@ export const readDaemonConfigFile = async () => {
|
|
|
52
52
|
export const writeDaemonConfigFile = async (config) => {
|
|
53
53
|
const path = getDaemonConfigPath();
|
|
54
54
|
await fs.mkdir(dirname(path), { recursive: true });
|
|
55
|
-
await fs.writeFile(path, JSON.stringify(config, null, 2),
|
|
55
|
+
await fs.writeFile(path, JSON.stringify(config, null, 2), 'utf8');
|
|
56
56
|
chmodSync(path, 0o600);
|
|
57
57
|
return path;
|
|
58
58
|
};
|
|
@@ -71,7 +71,7 @@ export const resolveRuntimeConfig = async () => {
|
|
|
71
71
|
idleTimeoutMs: parsePositiveInteger(process.env.IDLE_TIMEOUT_MS, DEFAULT_IDLE_TIMEOUT_MS),
|
|
72
72
|
runnerCmd: process.env.RUNNER_CMD?.trim() || DEFAULT_RUNNER_CMD,
|
|
73
73
|
// macOS에서는 기본 활성. 비 macOS는 유틸 레벨에서 no-op으로 처리된다.
|
|
74
|
-
preventSleepWhileBusy: parseBoolean(process.env.DAEMON_PREVENT_SLEEP, true)
|
|
74
|
+
preventSleepWhileBusy: parseBoolean(process.env.DAEMON_PREVENT_SLEEP, true),
|
|
75
75
|
};
|
|
76
76
|
};
|
|
77
77
|
export const resolveApiUrlForInit = async (apiUrlArg) => {
|