@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.test.js","sourceRoot":"","sources":["../../src/runners/codex.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAEtG,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAE7G,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACrE,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAClF,CAAC;YAAS,CAAC;QACT,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;IAChD,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC1D,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,iBAAiB,CAAC,EAAE;QAC9E,IAAI;QACJ,OAAO;QACP,MAAM;QACN,IAAI;QACJ,iBAAiB;QACjB,IAAI;QACJ,6CAA6C;QAC7C,SAAS;QACT,aAAa;QACb,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+DAA+D,EAAE,GAAG,EAAE;IACzE,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE;QAChF,IAAI;QACJ,OAAO;QACP,MAAM;QACN,IAAI;QACJ,iBAAiB;QACjB,IAAI;QACJ,6CAA6C;QAC7C,IAAI;QACJ,yBAAyB;QACzB,IAAI;QACJ,
|
|
1
|
+
{"version":3,"file":"codex.test.js","sourceRoot":"","sources":["../../src/runners/codex.test.ts"],"names":[],"mappings":"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"}
|
package/dist/runners/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { Runner } from
|
|
1
|
+
import type { Runner } from './types.js';
|
|
2
2
|
export declare const createRunnerFactory: (runnerCmd: string) => (runnerType: string) => Runner;
|
package/dist/runners/index.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { OpenCodeRunner } from
|
|
2
|
-
import { ClaudeCodeRunner } from
|
|
3
|
-
import { CodexRunner } from
|
|
4
|
-
import { AmpCodeRunner } from
|
|
5
|
-
import { AntigravityRunner } from
|
|
1
|
+
import { OpenCodeRunner } from './opencode.js';
|
|
2
|
+
import { ClaudeCodeRunner } from './claude-code.js';
|
|
3
|
+
import { CodexRunner } from './codex.js';
|
|
4
|
+
import { AmpCodeRunner } from './amp.js';
|
|
5
|
+
import { AntigravityRunner } from './antigravity.js';
|
|
6
6
|
export const createRunnerFactory = (runnerCmd) => {
|
|
7
7
|
return (runnerType) => {
|
|
8
8
|
switch (runnerType) {
|
|
9
|
-
case
|
|
9
|
+
case 'OPENCODE':
|
|
10
10
|
return new OpenCodeRunner(runnerCmd);
|
|
11
|
-
case
|
|
11
|
+
case 'CLAUDE_CODE':
|
|
12
12
|
return new ClaudeCodeRunner();
|
|
13
|
-
case
|
|
13
|
+
case 'CODEX':
|
|
14
14
|
return new CodexRunner();
|
|
15
|
-
case
|
|
15
|
+
case 'ANTIGRAVITY':
|
|
16
16
|
return new AntigravityRunner();
|
|
17
|
-
case
|
|
17
|
+
case 'AMP':
|
|
18
18
|
return new AmpCodeRunner();
|
|
19
19
|
// TODO: AIDER
|
|
20
20
|
// TODO: GOOSE
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import assert from
|
|
2
|
-
import test from
|
|
3
|
-
import { ClaudeCodeRunner } from
|
|
4
|
-
import { CodexRunner } from
|
|
5
|
-
import { createRunnerFactory } from
|
|
6
|
-
import { OpenCodeRunner } from
|
|
7
|
-
import { AntigravityRunner } from
|
|
8
|
-
test(
|
|
9
|
-
const createRunner = createRunnerFactory(
|
|
10
|
-
assert.equal(createRunner(
|
|
11
|
-
assert.equal(createRunner(
|
|
12
|
-
assert.equal(createRunner(
|
|
13
|
-
assert.equal(createRunner(
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test from 'node:test';
|
|
3
|
+
import { ClaudeCodeRunner } from './claude-code.js';
|
|
4
|
+
import { CodexRunner } from './codex.js';
|
|
5
|
+
import { createRunnerFactory } from './index.js';
|
|
6
|
+
import { OpenCodeRunner } from './opencode.js';
|
|
7
|
+
import { AntigravityRunner } from './antigravity.js';
|
|
8
|
+
test('createRunnerFactory returns the expected runner implementations', () => {
|
|
9
|
+
const createRunner = createRunnerFactory('custom-opencode');
|
|
10
|
+
assert.equal(createRunner('OPENCODE') instanceof OpenCodeRunner, true);
|
|
11
|
+
assert.equal(createRunner('CLAUDE_CODE') instanceof ClaudeCodeRunner, true);
|
|
12
|
+
assert.equal(createRunner('CODEX') instanceof CodexRunner, true);
|
|
13
|
+
assert.equal(createRunner('ANTIGRAVITY') instanceof AntigravityRunner, true);
|
|
14
14
|
});
|
|
15
|
-
test(
|
|
16
|
-
const createRunner = createRunnerFactory(
|
|
17
|
-
assert.throws(() => createRunner(
|
|
15
|
+
test('createRunnerFactory throws for unsupported runner types', () => {
|
|
16
|
+
const createRunner = createRunnerFactory('custom-opencode');
|
|
17
|
+
assert.throws(() => createRunner('UNKNOWN'), /Unsupported runner type: UNKNOWN/);
|
|
18
18
|
});
|
|
19
19
|
//# sourceMappingURL=index.test.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DaemonApiClient } from
|
|
2
|
-
import type { TriggerLogInput, TriggerLogLevel } from
|
|
1
|
+
import { DaemonApiClient } from '../api-client.js';
|
|
2
|
+
import type { TriggerLogInput, TriggerLogLevel } from '../types.js';
|
|
3
3
|
export declare const mergeLogs: (logs: TriggerLogInput[]) => TriggerLogInput[];
|
|
4
4
|
export declare class TriggerLogReporter {
|
|
5
5
|
private readonly client;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { logger } from
|
|
1
|
+
import { logger } from '../logger.js';
|
|
2
2
|
const MAX_BATCH_SIZE = 50;
|
|
3
3
|
const MAX_BUFFERED_LOGS = 500;
|
|
4
4
|
const MAX_MESSAGE_LENGTH = 2000;
|
|
@@ -10,7 +10,7 @@ const CONTROL_CHAR_PATTERN = /[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g;
|
|
|
10
10
|
const CATEGORY_PREFIX_PATTERN = /^\[([^\]]+)\]/;
|
|
11
11
|
const categoryOf = (message) => {
|
|
12
12
|
const match = message.match(CATEGORY_PREFIX_PATTERN);
|
|
13
|
-
return match ? match[1] :
|
|
13
|
+
return match ? match[1] : '';
|
|
14
14
|
};
|
|
15
15
|
export const mergeLogs = (logs) => {
|
|
16
16
|
if (logs.length === 0) {
|
|
@@ -22,7 +22,7 @@ export const mergeLogs = (logs) => {
|
|
|
22
22
|
for (let i = 1; i < logs.length; i++) {
|
|
23
23
|
const log = logs[i];
|
|
24
24
|
const logCategory = categoryOf(log.message);
|
|
25
|
-
const combined = current.message +
|
|
25
|
+
const combined = current.message + '\n' + log.message;
|
|
26
26
|
const sameCategory = logCategory === currentCategory;
|
|
27
27
|
if (log.level === current.level && sameCategory && combined.length <= MAX_MESSAGE_LENGTH) {
|
|
28
28
|
current.message = combined;
|
|
@@ -37,10 +37,10 @@ export const mergeLogs = (logs) => {
|
|
|
37
37
|
return merged;
|
|
38
38
|
};
|
|
39
39
|
const normalizeMessage = (message) => {
|
|
40
|
-
const withoutAnsi = message.replace(ANSI_ESCAPE_PATTERN,
|
|
41
|
-
const normalizedNewline = withoutAnsi.replace(/\r\n?/g,
|
|
42
|
-
const withoutControlChars = normalizedNewline.replace(CONTROL_CHAR_PATTERN,
|
|
43
|
-
const squashed = withoutControlChars.replace(/\n{3,}/g,
|
|
40
|
+
const withoutAnsi = message.replace(ANSI_ESCAPE_PATTERN, '');
|
|
41
|
+
const normalizedNewline = withoutAnsi.replace(/\r\n?/g, '\n');
|
|
42
|
+
const withoutControlChars = normalizedNewline.replace(CONTROL_CHAR_PATTERN, '');
|
|
43
|
+
const squashed = withoutControlChars.replace(/\n{3,}/g, '\n\n');
|
|
44
44
|
const trimmed = squashed.trim();
|
|
45
45
|
if (trimmed.length <= MAX_MESSAGE_LENGTH) {
|
|
46
46
|
return trimmed;
|
|
@@ -94,7 +94,7 @@ export class TriggerLogReporter {
|
|
|
94
94
|
try {
|
|
95
95
|
if (this.droppedCount > 0) {
|
|
96
96
|
const droppedMessage = `Dropped ${this.droppedCount} log line(s) due to buffer limit (${MAX_BUFFERED_LOGS}).`;
|
|
97
|
-
this.queue.unshift({ level:
|
|
97
|
+
this.queue.unshift({ level: 'WARN', message: droppedMessage });
|
|
98
98
|
this.droppedCount = 0;
|
|
99
99
|
}
|
|
100
100
|
if (opts.drain) {
|
|
@@ -126,11 +126,11 @@ export class TriggerLogReporter {
|
|
|
126
126
|
await this.client.appendTriggerLogs(this.triggerId, payload);
|
|
127
127
|
}
|
|
128
128
|
catch (error) {
|
|
129
|
-
logger.warn(
|
|
129
|
+
logger.warn('Failed to report trigger logs', {
|
|
130
130
|
triggerId: this.triggerId,
|
|
131
131
|
error: error instanceof Error ? error.message : String(error),
|
|
132
132
|
payloadSize: payload.logs?.length ?? 0,
|
|
133
|
-
heartbeat: payload.heartbeat === true
|
|
133
|
+
heartbeat: payload.heartbeat === true,
|
|
134
134
|
});
|
|
135
135
|
}
|
|
136
136
|
}
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import assert from
|
|
2
|
-
import test, { mock } from
|
|
3
|
-
import { logger } from
|
|
4
|
-
import { TriggerLogReporter, mergeLogs } from
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import test, { mock } from 'node:test';
|
|
3
|
+
import { logger } from '../logger.js';
|
|
4
|
+
import { TriggerLogReporter, mergeLogs } from './log-reporter.js';
|
|
5
5
|
test.afterEach(() => {
|
|
6
6
|
mock.restoreAll();
|
|
7
7
|
});
|
|
8
|
-
test(
|
|
8
|
+
test('TriggerLogReporter normalizes log messages and drains them on stop', async () => {
|
|
9
9
|
const payloads = [];
|
|
10
10
|
const client = {
|
|
11
11
|
appendTriggerLogs: async (_triggerId, payload) => {
|
|
12
12
|
payloads.push(payload);
|
|
13
|
-
}
|
|
13
|
+
},
|
|
14
14
|
};
|
|
15
|
-
const reporter = new TriggerLogReporter(client,
|
|
16
|
-
reporter.append(
|
|
17
|
-
reporter.append(
|
|
15
|
+
const reporter = new TriggerLogReporter(client, 'trigger-1');
|
|
16
|
+
reporter.append('INFO', '\u001B[31m hello \r\n\r\n\r\nworld \u0007');
|
|
17
|
+
reporter.append('WARN', ' ');
|
|
18
18
|
await reporter.stop();
|
|
19
19
|
assert.equal(payloads.length, 1);
|
|
20
20
|
assert.deepEqual(payloads[0], {
|
|
21
|
-
logs: [{ level:
|
|
22
|
-
heartbeat: true
|
|
21
|
+
logs: [{ level: 'INFO', message: 'hello \n\nworld' }],
|
|
22
|
+
heartbeat: true,
|
|
23
23
|
});
|
|
24
24
|
});
|
|
25
|
-
test(
|
|
25
|
+
test('TriggerLogReporter prepends a dropped-log warning when the buffer overflows', async () => {
|
|
26
26
|
const payloads = [];
|
|
27
27
|
const client = {
|
|
28
28
|
appendTriggerLogs: async (_triggerId, payload) => {
|
|
29
29
|
payloads.push(payload);
|
|
30
|
-
}
|
|
30
|
+
},
|
|
31
31
|
};
|
|
32
|
-
const reporter = new TriggerLogReporter(client,
|
|
32
|
+
const reporter = new TriggerLogReporter(client, 'trigger-1');
|
|
33
33
|
for (let index = 0; index < 501; index += 1) {
|
|
34
|
-
reporter.append(
|
|
34
|
+
reporter.append('INFO', `line-${index}`);
|
|
35
35
|
}
|
|
36
36
|
await reporter.stop();
|
|
37
37
|
const flattened = payloads.flatMap((payload) => payload.logs ?? []);
|
|
38
|
-
assert.match(flattened[0]?.message ??
|
|
38
|
+
assert.match(flattened[0]?.message ?? '', /Dropped 1 log line/);
|
|
39
39
|
// After merging, 501 individual logs are compressed into fewer records.
|
|
40
40
|
// The dropped warning (WARN) splits from the INFO logs, so we get at least 2 records.
|
|
41
41
|
assert.ok(flattened.length < 501, `Expected merged log count to be less than 501, got ${flattened.length}`);
|
|
42
42
|
assert.ok(flattened.length >= 2, `Expected at least 2 merged records (WARN + INFO), got ${flattened.length}`);
|
|
43
43
|
// Last merged record should contain line-500
|
|
44
|
-
assert.match(flattened.at(-1)?.message ??
|
|
44
|
+
assert.match(flattened.at(-1)?.message ?? '', /line-500/);
|
|
45
45
|
});
|
|
46
|
-
test(
|
|
46
|
+
test('TriggerLogReporter sends heartbeat flushes on interval and start is idempotent', async () => {
|
|
47
47
|
const payloads = [];
|
|
48
48
|
const intervals = [];
|
|
49
49
|
const intervalHandles = [];
|
|
@@ -62,9 +62,9 @@ test("TriggerLogReporter sends heartbeat flushes on interval and start is idempo
|
|
|
62
62
|
const client = {
|
|
63
63
|
appendTriggerLogs: async (_triggerId, payload) => {
|
|
64
64
|
payloads.push(payload);
|
|
65
|
-
}
|
|
65
|
+
},
|
|
66
66
|
};
|
|
67
|
-
const reporter = new TriggerLogReporter(client,
|
|
67
|
+
const reporter = new TriggerLogReporter(client, 'trigger-1', 10);
|
|
68
68
|
reporter.start();
|
|
69
69
|
reporter.start();
|
|
70
70
|
assert.equal(intervals.length, 1);
|
|
@@ -78,99 +78,99 @@ test("TriggerLogReporter sends heartbeat flushes on interval and start is idempo
|
|
|
78
78
|
globalThis.clearInterval = originalClearInterval;
|
|
79
79
|
}
|
|
80
80
|
});
|
|
81
|
-
test(
|
|
81
|
+
test('TriggerLogReporter logs warnings when log delivery fails', async () => {
|
|
82
82
|
const warnings = [];
|
|
83
|
-
mock.method(logger,
|
|
83
|
+
mock.method(logger, 'warn', (message, meta) => {
|
|
84
84
|
warnings.push({ message, meta });
|
|
85
85
|
});
|
|
86
86
|
const client = {
|
|
87
87
|
appendTriggerLogs: async () => {
|
|
88
|
-
throw new Error(
|
|
89
|
-
}
|
|
88
|
+
throw new Error('network down');
|
|
89
|
+
},
|
|
90
90
|
};
|
|
91
|
-
const reporter = new TriggerLogReporter(client,
|
|
92
|
-
reporter.append(
|
|
91
|
+
const reporter = new TriggerLogReporter(client, 'trigger-1');
|
|
92
|
+
reporter.append('ERROR', 'failure');
|
|
93
93
|
await reporter.stop();
|
|
94
94
|
assert.equal(warnings.length, 1);
|
|
95
|
-
assert.match(warnings[0]?.message ??
|
|
95
|
+
assert.match(warnings[0]?.message ?? '', /Failed to report trigger logs/);
|
|
96
96
|
assert.equal(warnings[0]?.meta?.payloadSize, 1);
|
|
97
97
|
});
|
|
98
|
-
test(
|
|
98
|
+
test('mergeLogs merges consecutive same-level logs with newline separator', () => {
|
|
99
99
|
const result = mergeLogs([
|
|
100
|
-
{ level:
|
|
101
|
-
{ level:
|
|
102
|
-
{ level:
|
|
100
|
+
{ level: 'INFO', message: 'line 1' },
|
|
101
|
+
{ level: 'INFO', message: 'line 2' },
|
|
102
|
+
{ level: 'INFO', message: 'line 3' },
|
|
103
103
|
]);
|
|
104
104
|
assert.equal(result.length, 1);
|
|
105
|
-
assert.equal(result[0].level,
|
|
106
|
-
assert.equal(result[0].message,
|
|
105
|
+
assert.equal(result[0].level, 'INFO');
|
|
106
|
+
assert.equal(result[0].message, 'line 1\nline 2\nline 3');
|
|
107
107
|
});
|
|
108
|
-
test(
|
|
108
|
+
test('mergeLogs splits at level boundaries', () => {
|
|
109
109
|
const result = mergeLogs([
|
|
110
|
-
{ level:
|
|
111
|
-
{ level:
|
|
112
|
-
{ level:
|
|
113
|
-
{ level:
|
|
110
|
+
{ level: 'INFO', message: 'info 1' },
|
|
111
|
+
{ level: 'INFO', message: 'info 2' },
|
|
112
|
+
{ level: 'WARN', message: 'warn 1' },
|
|
113
|
+
{ level: 'INFO', message: 'info 3' },
|
|
114
114
|
]);
|
|
115
115
|
assert.equal(result.length, 3);
|
|
116
|
-
assert.deepEqual(result[0], { level:
|
|
117
|
-
assert.deepEqual(result[1], { level:
|
|
118
|
-
assert.deepEqual(result[2], { level:
|
|
116
|
+
assert.deepEqual(result[0], { level: 'INFO', message: 'info 1\ninfo 2' });
|
|
117
|
+
assert.deepEqual(result[1], { level: 'WARN', message: 'warn 1' });
|
|
118
|
+
assert.deepEqual(result[2], { level: 'INFO', message: 'info 3' });
|
|
119
119
|
});
|
|
120
|
-
test(
|
|
121
|
-
const longMessage =
|
|
120
|
+
test('mergeLogs splits when combined message exceeds 2000 chars', () => {
|
|
121
|
+
const longMessage = 'x'.repeat(1500);
|
|
122
122
|
const result = mergeLogs([
|
|
123
|
-
{ level:
|
|
124
|
-
{ level:
|
|
123
|
+
{ level: 'INFO', message: longMessage },
|
|
124
|
+
{ level: 'INFO', message: longMessage },
|
|
125
125
|
]);
|
|
126
126
|
assert.equal(result.length, 2);
|
|
127
127
|
assert.equal(result[0].message, longMessage);
|
|
128
128
|
assert.equal(result[1].message, longMessage);
|
|
129
129
|
});
|
|
130
|
-
test(
|
|
130
|
+
test('mergeLogs returns empty array for empty input', () => {
|
|
131
131
|
assert.deepEqual(mergeLogs([]), []);
|
|
132
132
|
});
|
|
133
|
-
test(
|
|
133
|
+
test('mergeLogs splits at category prefix boundaries', () => {
|
|
134
134
|
const result = mergeLogs([
|
|
135
|
-
{ level:
|
|
136
|
-
{ level:
|
|
137
|
-
{ level:
|
|
138
|
-
{ level:
|
|
135
|
+
{ level: 'INFO', message: '[Tool] Read: web/src/a.ts' },
|
|
136
|
+
{ level: 'INFO', message: '[Tool] Read: web/src/b.ts' },
|
|
137
|
+
{ level: 'INFO', message: 'Now wire the refetch.' },
|
|
138
|
+
{ level: 'INFO', message: '[Tool] Edit: web/src/a.ts' },
|
|
139
139
|
]);
|
|
140
140
|
assert.equal(result.length, 3);
|
|
141
141
|
assert.deepEqual(result[0], {
|
|
142
|
-
level:
|
|
143
|
-
message:
|
|
142
|
+
level: 'INFO',
|
|
143
|
+
message: '[Tool] Read: web/src/a.ts\n[Tool] Read: web/src/b.ts',
|
|
144
144
|
});
|
|
145
|
-
assert.deepEqual(result[1], { level:
|
|
146
|
-
assert.deepEqual(result[2], { level:
|
|
145
|
+
assert.deepEqual(result[1], { level: 'INFO', message: 'Now wire the refetch.' });
|
|
146
|
+
assert.deepEqual(result[2], { level: 'INFO', message: '[Tool] Edit: web/src/a.ts' });
|
|
147
147
|
});
|
|
148
|
-
test(
|
|
148
|
+
test('mergeLogs keeps [Result] separate from plain text even at same level', () => {
|
|
149
149
|
const result = mergeLogs([
|
|
150
|
-
{ level:
|
|
151
|
-
{ level:
|
|
150
|
+
{ level: 'INFO', message: 'Task 1 done' },
|
|
151
|
+
{ level: 'INFO', message: '[Result] Completed in 12s (4 turns)' },
|
|
152
152
|
]);
|
|
153
153
|
assert.equal(result.length, 2);
|
|
154
|
-
assert.equal(result[0].message,
|
|
155
|
-
assert.equal(result[1].message,
|
|
154
|
+
assert.equal(result[0].message, 'Task 1 done');
|
|
155
|
+
assert.equal(result[1].message, '[Result] Completed in 12s (4 turns)');
|
|
156
156
|
});
|
|
157
|
-
test(
|
|
157
|
+
test('TriggerLogReporter merges same-level logs during flush', async () => {
|
|
158
158
|
const payloads = [];
|
|
159
159
|
const client = {
|
|
160
160
|
appendTriggerLogs: async (_triggerId, payload) => {
|
|
161
161
|
payloads.push(payload);
|
|
162
|
-
}
|
|
162
|
+
},
|
|
163
163
|
};
|
|
164
|
-
const reporter = new TriggerLogReporter(client,
|
|
165
|
-
reporter.append(
|
|
166
|
-
reporter.append(
|
|
167
|
-
reporter.append(
|
|
168
|
-
reporter.append(
|
|
164
|
+
const reporter = new TriggerLogReporter(client, 'trigger-1');
|
|
165
|
+
reporter.append('INFO', 'line 1');
|
|
166
|
+
reporter.append('INFO', 'line 2');
|
|
167
|
+
reporter.append('WARN', 'warning');
|
|
168
|
+
reporter.append('INFO', 'line 3');
|
|
169
169
|
await reporter.stop();
|
|
170
170
|
const logs = payloads.flatMap((p) => p.logs ?? []);
|
|
171
171
|
assert.equal(logs.length, 3);
|
|
172
|
-
assert.deepEqual(logs[0], { level:
|
|
173
|
-
assert.deepEqual(logs[1], { level:
|
|
174
|
-
assert.deepEqual(logs[2], { level:
|
|
172
|
+
assert.deepEqual(logs[0], { level: 'INFO', message: 'line 1\nline 2' });
|
|
173
|
+
assert.deepEqual(logs[1], { level: 'WARN', message: 'warning' });
|
|
174
|
+
assert.deepEqual(logs[2], { level: 'INFO', message: 'line 3' });
|
|
175
175
|
});
|
|
176
176
|
//# sourceMappingURL=log-reporter.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-reporter.test.js","sourceRoot":"","sources":["../../src/runners/log-reporter.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"log-reporter.test.js","sourceRoot":"","sources":["../../src/runners/log-reporter.test.ts"],"names":[],"mappings":"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"}
|