@agentteams/runner 0.0.84 → 0.0.85-dev.209
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 +172 -134
- package/dist/handlers/trigger-handler.js.map +1 -1
- package/dist/handlers/trigger-handler.test.js +442 -328
- 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 +12 -10
- package/dist/runners/log-reporter.js.map +1 -1
- 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 +43 -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 +9 -2
- package/readme.md +10 -10
|
@@ -1,57 +1,74 @@
|
|
|
1
|
-
import { createRunnerFactory } from
|
|
2
|
-
import { TriggerLogReporter } from
|
|
3
|
-
import { logger } from
|
|
4
|
-
import { access, mkdir, readFile, rm, writeFile } from
|
|
5
|
-
import { dirname, isAbsolute, join, relative, resolve, sep } from
|
|
6
|
-
import { homedir } from
|
|
7
|
-
import { resolveRunnerHistoryPaths } from
|
|
8
|
-
import { isGitRepo, createWorktree } from
|
|
9
|
-
import { extractResultTextFromStreamJson } from
|
|
10
|
-
import { runOriginIssueSafeguard } from
|
|
1
|
+
import { createRunnerFactory } from '../runners/index.js';
|
|
2
|
+
import { TriggerLogReporter } from '../runners/log-reporter.js';
|
|
3
|
+
import { logger } from '../logger.js';
|
|
4
|
+
import { access, mkdir, readFile, rm, writeFile } from 'node:fs/promises';
|
|
5
|
+
import { dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
6
|
+
import { homedir } from 'node:os';
|
|
7
|
+
import { resolveRunnerHistoryPaths } from '../utils/runner-history.js';
|
|
8
|
+
import { isGitRepo, createWorktree } from '../utils/git-worktree.js';
|
|
9
|
+
import { extractResultTextFromStreamJson } from '../runners/claude-code.js';
|
|
10
|
+
import { runOriginIssueSafeguard } from '../utils/origin-issue-safeguard.js';
|
|
11
11
|
function sanitizeErrorMessage(msg) {
|
|
12
12
|
return msg.replaceAll(homedir(), '~');
|
|
13
13
|
}
|
|
14
14
|
export const createTriggerHandler = (options, dependencies = {}) => {
|
|
15
15
|
const { config, client, onAuthPathDiscovered } = options;
|
|
16
16
|
const createRunner = (dependencies.createRunnerFactory ?? createRunnerFactory)(config.runnerCmd);
|
|
17
|
-
const createLogReporter = dependencies.createLogReporter ??
|
|
17
|
+
const createLogReporter = dependencies.createLogReporter ??
|
|
18
|
+
((apiClient, triggerId) => new TriggerLogReporter(apiClient, triggerId));
|
|
18
19
|
const readHistoryFile = dependencies.readHistoryFile ?? ((path, encoding) => readFile(path, encoding));
|
|
19
|
-
const writeHistoryFile = dependencies.writeHistoryFile ??
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
20
|
+
const writeHistoryFile = dependencies.writeHistoryFile ??
|
|
21
|
+
(async (path, content) => {
|
|
22
|
+
await mkdir(dirname(path), { recursive: true });
|
|
23
|
+
await writeFile(path, content, 'utf8');
|
|
24
|
+
});
|
|
25
|
+
const fetchAttachmentFile = dependencies.fetchAttachmentFile ??
|
|
26
|
+
(async (downloadUrl) => {
|
|
27
|
+
const response = await fetch(downloadUrl);
|
|
28
|
+
if (!response.ok) {
|
|
29
|
+
throw new Error(`Attachment download failed (${response.status})`);
|
|
30
|
+
}
|
|
31
|
+
return new Uint8Array(await response.arrayBuffer());
|
|
32
|
+
});
|
|
33
|
+
const removeAttachmentDirectory = dependencies.removeAttachmentDirectory ??
|
|
34
|
+
(async (path) => {
|
|
35
|
+
await rm(path, { recursive: true, force: true });
|
|
36
|
+
});
|
|
33
37
|
const resolveHistoryPaths = dependencies.resolveRunnerHistoryPaths ?? resolveRunnerHistoryPaths;
|
|
34
38
|
const maxHistoryLength = 200000;
|
|
35
39
|
const fallbackOutputMaxLength = 8000;
|
|
36
40
|
const setIntervalFn = dependencies.setIntervalFn ?? global.setInterval;
|
|
37
41
|
const clearIntervalFn = dependencies.clearIntervalFn ?? global.clearInterval;
|
|
38
42
|
const cancelPollIntervalMs = dependencies.cancelPollIntervalMs ?? 2000;
|
|
39
|
-
const stripUtf8Bom = (content) => content.replace(/^\uFEFF/,
|
|
40
|
-
const currentHistoryPathPlaceholder =
|
|
41
|
-
const parentHistoryPathPlaceholder =
|
|
43
|
+
const stripUtf8Bom = (content) => content.replace(/^\uFEFF/, '');
|
|
44
|
+
const currentHistoryPathPlaceholder = '{{AGENTRUNNER_CURRENT_HISTORY_PATH}}';
|
|
45
|
+
const parentHistoryPathPlaceholder = '{{AGENTRUNNER_PARENT_HISTORY_PATH}}';
|
|
46
|
+
// The web UI surfaces user-facing questions by parsing the `### Questions for User`
|
|
47
|
+
// heading out of the reported history (extractQuestionsForUser). A history file
|
|
48
|
+
// missing the section silently drops questions, so guarantee it at report time.
|
|
49
|
+
const questionsForUserHeadingPattern = /^###\s+Questions for User\s*$/im;
|
|
50
|
+
const questionsForUserFallbackSection = '\n\n### Questions for User\nNone';
|
|
51
|
+
const ensureQuestionsForUserSection = (markdown) => {
|
|
52
|
+
if (questionsForUserHeadingPattern.test(markdown)) {
|
|
53
|
+
return { markdown, normalized: false };
|
|
54
|
+
}
|
|
55
|
+
const truncated = markdown.slice(0, maxHistoryLength - questionsForUserFallbackSection.length);
|
|
56
|
+
return { markdown: `${truncated}${questionsForUserFallbackSection}`, normalized: true };
|
|
57
|
+
};
|
|
42
58
|
const sanitizeAttachmentFileName = (fileName) => {
|
|
43
59
|
const sanitized = fileName
|
|
44
|
-
.normalize(
|
|
45
|
-
.replace(/[^\w.\-]+/g,
|
|
46
|
-
.replace(/-+/g,
|
|
47
|
-
.replace(/^[.\-]+/g,
|
|
48
|
-
.replace(/-$/g,
|
|
60
|
+
.normalize('NFKD')
|
|
61
|
+
.replace(/[^\w.\-]+/g, '-')
|
|
62
|
+
.replace(/-+/g, '-')
|
|
63
|
+
.replace(/^[.\-]+/g, '')
|
|
64
|
+
.replace(/-$/g, '')
|
|
49
65
|
.slice(0, 120);
|
|
50
|
-
return sanitized.length > 0 ? sanitized :
|
|
66
|
+
return sanitized.length > 0 ? sanitized : 'attachment';
|
|
51
67
|
};
|
|
52
68
|
const assertInsideWorkspace = (workspaceRoot, targetPath) => {
|
|
53
69
|
const relativePath = relative(resolve(workspaceRoot), resolve(targetPath));
|
|
54
|
-
if (relativePath ===
|
|
70
|
+
if (relativePath === '' ||
|
|
71
|
+
(relativePath !== '..' && !relativePath.startsWith(`..${sep}`) && !isAbsolute(relativePath))) {
|
|
55
72
|
return;
|
|
56
73
|
}
|
|
57
74
|
throw new Error(`Attachment path escaped runner workspace: ${targetPath}`);
|
|
@@ -61,14 +78,14 @@ export const createTriggerHandler = (options, dependencies = {}) => {
|
|
|
61
78
|
return [];
|
|
62
79
|
}
|
|
63
80
|
if (!workspaceRoot) {
|
|
64
|
-
throw new Error(
|
|
81
|
+
throw new Error('Cannot deliver attachments because runner workspace path is not configured.');
|
|
65
82
|
}
|
|
66
|
-
const attachmentDir = join(workspaceRoot,
|
|
83
|
+
const attachmentDir = join(workspaceRoot, '.agentteams', 'runner', 'attachments', triggerId);
|
|
67
84
|
assertInsideWorkspace(workspaceRoot, attachmentDir);
|
|
68
85
|
await mkdir(attachmentDir, { recursive: true });
|
|
69
86
|
const downloaded = [];
|
|
70
87
|
for (const [index, attachment] of attachments.entries()) {
|
|
71
|
-
const fileName = `${String(index + 1).padStart(2,
|
|
88
|
+
const fileName = `${String(index + 1).padStart(2, '0')}-${attachment.id.slice(0, 8)}-${sanitizeAttachmentFileName(attachment.originalName)}`;
|
|
72
89
|
const localPath = join(attachmentDir, fileName);
|
|
73
90
|
assertInsideWorkspace(workspaceRoot, localPath);
|
|
74
91
|
const bytes = await fetchAttachmentFile(attachment.downloadUrl);
|
|
@@ -84,8 +101,8 @@ export const createTriggerHandler = (options, dependencies = {}) => {
|
|
|
84
101
|
return runnerPrompt;
|
|
85
102
|
}
|
|
86
103
|
const lines = [
|
|
87
|
-
|
|
88
|
-
|
|
104
|
+
'## Attached Files',
|
|
105
|
+
'The user attached the following files. Read them from these local paths when they are relevant to the request.',
|
|
89
106
|
...attachments.flatMap((attachment, index) => [
|
|
90
107
|
`${index + 1}. ${attachment.originalName}`,
|
|
91
108
|
` - MIME type: ${attachment.mimeType}`,
|
|
@@ -93,66 +110,97 @@ export const createTriggerHandler = (options, dependencies = {}) => {
|
|
|
93
110
|
` - Local path: ${attachment.localPath}`,
|
|
94
111
|
]),
|
|
95
112
|
];
|
|
96
|
-
return `${runnerPrompt.trimEnd()}\n\n${lines.join(
|
|
113
|
+
return `${runnerPrompt.trimEnd()}\n\n${lines.join('\n')}`;
|
|
97
114
|
};
|
|
98
115
|
const resolveRunnerPrompt = (runnerPrompt, currentPath, parentPath) => {
|
|
99
116
|
return runnerPrompt
|
|
100
|
-
.replaceAll(currentHistoryPathPlaceholder, currentPath ??
|
|
101
|
-
.replaceAll(parentHistoryPathPlaceholder, parentPath ??
|
|
117
|
+
.replaceAll(currentHistoryPathPlaceholder, currentPath ?? '(unavailable: authPath not configured)')
|
|
118
|
+
.replaceAll(parentHistoryPathPlaceholder, parentPath ?? '(unavailable: authPath not configured)');
|
|
102
119
|
};
|
|
103
|
-
|
|
120
|
+
// 히스토리 파일을 읽어 사용할 마크다운을 돌려준다. 파일이 없거나 비어있으면 null.
|
|
121
|
+
// 읽기 실패와 "내용 없음"만 null로 합치고, 업로드(네트워크/권한)와는 분리한다 —
|
|
122
|
+
// 업로드 실패를 "파일 없음"으로 오인해 stdout 폴백으로 덮어쓰는 손상을 막기 위함.
|
|
123
|
+
const loadHistoryMarkdown = async (historyPath) => {
|
|
104
124
|
if (!historyPath) {
|
|
105
|
-
return
|
|
125
|
+
return null;
|
|
106
126
|
}
|
|
107
127
|
try {
|
|
108
|
-
const content = await readHistoryFile(historyPath,
|
|
128
|
+
const content = await readHistoryFile(historyPath, 'utf8');
|
|
109
129
|
const markdown = stripUtf8Bom(content).trim();
|
|
110
|
-
|
|
111
|
-
|
|
130
|
+
return markdown.length === 0 ? null : markdown;
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
logger.warn('Failed to read runner history file', {
|
|
134
|
+
historyPath,
|
|
135
|
+
error: error instanceof Error ? error.message : String(error),
|
|
136
|
+
});
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
// 히스토리를 서버에 보고한다. 러너가 파일을 썼으면 그 파일을, 없으면(그리고 fallback이
|
|
141
|
+
// 주어지면) stdout 폴백을 생성·저장해 업로드한다. 업로드 실패는 러너 성공을 뒤집지 않고,
|
|
142
|
+
// 로컬 히스토리 파일도 보존한다(경고만 남김).
|
|
143
|
+
const reportHistory = async (triggerId, historyPath, reporter, fallback) => {
|
|
144
|
+
const historyMarkdown = await loadHistoryMarkdown(historyPath);
|
|
145
|
+
let historyForUpload = null;
|
|
146
|
+
if (historyMarkdown !== null) {
|
|
147
|
+
const { markdown, normalized } = ensureQuestionsForUserSection(historyMarkdown.slice(0, maxHistoryLength));
|
|
148
|
+
historyForUpload = markdown;
|
|
149
|
+
if (normalized) {
|
|
150
|
+
// 관측(1단계): 러너가 가이드 위임 후에도 필수 섹션을 누락하는 빈도를 결과 상세 로그 탭에서
|
|
151
|
+
// 확인하기 위한 신호. 잦으면 프롬프트 인라인 강조 복구 또는 서버 집계(2단계)를 검토한다.
|
|
152
|
+
reporter?.append('WARN', "History file was missing the '### Questions for User' section; appended 'None' to preserve the user-question channel.");
|
|
112
153
|
}
|
|
113
|
-
|
|
114
|
-
|
|
154
|
+
}
|
|
155
|
+
else if (fallback && fallback.outputText.trim().length > 0) {
|
|
156
|
+
// 러너가 히스토리 파일을 안 쓴 경우에만 stdout 폴백으로 대체한다.
|
|
157
|
+
const parsedOutput = extractResultTextFromStreamJson(fallback.outputText);
|
|
158
|
+
historyForUpload = buildFallbackHistory(parsedOutput, fallback.errorMessage);
|
|
159
|
+
if (historyPath) {
|
|
160
|
+
await writeHistoryFile(historyPath, historyForUpload);
|
|
161
|
+
}
|
|
162
|
+
reporter?.append('WARN', 'Runner did not write a history file. Captured stdout was stored as fallback history.');
|
|
163
|
+
}
|
|
164
|
+
if (historyForUpload === null) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
await client.updateTriggerHistory(triggerId, historyForUpload);
|
|
115
169
|
}
|
|
116
170
|
catch (error) {
|
|
117
|
-
|
|
171
|
+
// 히스토리 업로드 실패는 러너 성공을 뒤집지 않는다. 로컬 파일을 보존하고 경고만 남긴다.
|
|
172
|
+
logger.warn('Failed to upload runner history; local history file preserved', {
|
|
118
173
|
triggerId,
|
|
119
174
|
historyPath,
|
|
120
|
-
error: error instanceof Error ? error.message : String(error)
|
|
175
|
+
error: error instanceof Error ? error.message : String(error),
|
|
121
176
|
});
|
|
122
|
-
|
|
177
|
+
reporter?.append('WARN', 'Failed to upload runner history to the server. The local history file is preserved.');
|
|
123
178
|
}
|
|
124
179
|
};
|
|
125
180
|
const buildFallbackHistory = (outputText, errorMessage) => {
|
|
126
181
|
const summaryLine = errorMessage
|
|
127
182
|
? `- Runner terminated with error: ${errorMessage}`
|
|
128
|
-
:
|
|
183
|
+
: '- Runner completed successfully but did not write the requested history file.';
|
|
129
184
|
const trimmed = outputText.trim();
|
|
130
185
|
if (trimmed.length === 0) {
|
|
131
|
-
return [
|
|
132
|
-
"### Summary",
|
|
133
|
-
summaryLine,
|
|
134
|
-
"- No stdout captured.",
|
|
135
|
-
"",
|
|
136
|
-
"### Questions for User",
|
|
137
|
-
"None"
|
|
138
|
-
].join("\n");
|
|
186
|
+
return ['### Summary', summaryLine, '- No stdout captured.', '', '### Questions for User', 'None'].join('\n');
|
|
139
187
|
}
|
|
140
188
|
const truncated = trimmed.length > fallbackOutputMaxLength
|
|
141
|
-
? trimmed.slice(0, fallbackOutputMaxLength) +
|
|
189
|
+
? trimmed.slice(0, fallbackOutputMaxLength) + '\n- *(truncated)*'
|
|
142
190
|
: trimmed;
|
|
143
191
|
return [
|
|
144
|
-
|
|
192
|
+
'### Summary',
|
|
145
193
|
summaryLine,
|
|
146
|
-
|
|
147
|
-
|
|
194
|
+
'- Agent output (history file not written):',
|
|
195
|
+
'',
|
|
148
196
|
truncated,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
].join(
|
|
197
|
+
'',
|
|
198
|
+
'### Questions for User',
|
|
199
|
+
'None',
|
|
200
|
+
].join('\n');
|
|
153
201
|
};
|
|
154
202
|
const restoreParentHistoryFromServer = async (parentHistoryPath, parentHistoryMarkdown) => {
|
|
155
|
-
const normalizedMarkdown = stripUtf8Bom(parentHistoryMarkdown ??
|
|
203
|
+
const normalizedMarkdown = stripUtf8Bom(parentHistoryMarkdown ?? '').trim();
|
|
156
204
|
if (!parentHistoryPath || normalizedMarkdown.length === 0) {
|
|
157
205
|
return;
|
|
158
206
|
}
|
|
@@ -167,56 +215,56 @@ export const createTriggerHandler = (options, dependencies = {}) => {
|
|
|
167
215
|
if (trigger.parentTriggerId && /[\/\\]|\.\./.test(trigger.parentTriggerId)) {
|
|
168
216
|
throw new Error('Invalid parentTriggerId: path traversal characters detected');
|
|
169
217
|
}
|
|
170
|
-
logger.info(
|
|
218
|
+
logger.info('Trigger execution started', {
|
|
171
219
|
triggerId: trigger.id,
|
|
172
|
-
runnerType: trigger.runnerType
|
|
220
|
+
runnerType: trigger.runnerType,
|
|
173
221
|
});
|
|
174
222
|
const runtime = await client.fetchTriggerRuntime(trigger.id);
|
|
175
223
|
logReporter = createLogReporter(client, trigger.id);
|
|
176
224
|
const activeLogReporter = logReporter;
|
|
177
225
|
activeLogReporter.start();
|
|
178
|
-
activeLogReporter.append(
|
|
226
|
+
activeLogReporter.append('INFO', `Trigger started with runner ${trigger.runnerType}.`);
|
|
179
227
|
if (runtime.authPath && onAuthPathDiscovered) {
|
|
180
228
|
onAuthPathDiscovered(runtime.authPath);
|
|
181
229
|
}
|
|
182
|
-
logger.info(
|
|
230
|
+
logger.info('Trigger runtime fetched', {
|
|
183
231
|
triggerId: trigger.id,
|
|
184
232
|
agentConfigId: runtime.agentConfigId,
|
|
185
|
-
hasAuthPath: Boolean(runtime.authPath)
|
|
233
|
+
hasAuthPath: Boolean(runtime.authPath),
|
|
186
234
|
});
|
|
187
|
-
activeLogReporter.append(
|
|
235
|
+
activeLogReporter.append('INFO', `Runtime fetched (agentConfigId=${runtime.agentConfigId}).`);
|
|
188
236
|
let effectiveAuthPath = runtime.authPath;
|
|
189
237
|
if (runtime.useWorktree && runtime.authPath) {
|
|
190
238
|
try {
|
|
191
239
|
if (isGitRepo(runtime.authPath)) {
|
|
192
240
|
const worktreePath = createWorktree(runtime.authPath, {
|
|
193
241
|
worktreeId: runtime.worktreeId ?? trigger.id,
|
|
194
|
-
baseBranch: runtime.baseBranch
|
|
242
|
+
baseBranch: runtime.baseBranch,
|
|
195
243
|
});
|
|
196
244
|
effectiveAuthPath = worktreePath;
|
|
197
|
-
await client.reportWorktreeStatus(trigger.id,
|
|
198
|
-
activeLogReporter.append(
|
|
199
|
-
logger.info(
|
|
245
|
+
await client.reportWorktreeStatus(trigger.id, 'ACTIVE');
|
|
246
|
+
activeLogReporter.append('INFO', `Worktree created at ${worktreePath}.`);
|
|
247
|
+
logger.info('Worktree created for trigger', {
|
|
200
248
|
triggerId: trigger.id,
|
|
201
|
-
worktreePath
|
|
249
|
+
worktreePath,
|
|
202
250
|
});
|
|
203
251
|
}
|
|
204
252
|
else {
|
|
205
|
-
logger.warn(
|
|
253
|
+
logger.warn('Worktree requested but authPath is not a git repo, falling back to authPath', {
|
|
206
254
|
triggerId: trigger.id,
|
|
207
|
-
authPath: runtime.authPath
|
|
255
|
+
authPath: runtime.authPath,
|
|
208
256
|
});
|
|
209
|
-
activeLogReporter.append(
|
|
257
|
+
activeLogReporter.append('WARN', 'Worktree requested but authPath is not a git repo. Falling back to authPath.');
|
|
210
258
|
}
|
|
211
259
|
}
|
|
212
260
|
catch (err) {
|
|
213
|
-
logger.warn(
|
|
261
|
+
logger.warn('Failed to create worktree, falling back to authPath', {
|
|
214
262
|
triggerId: trigger.id,
|
|
215
|
-
error: err instanceof Error ? err.message : String(err)
|
|
263
|
+
error: err instanceof Error ? err.message : String(err),
|
|
216
264
|
});
|
|
217
|
-
activeLogReporter.append(
|
|
265
|
+
activeLogReporter.append('WARN', `Worktree creation failed: ${err instanceof Error ? err.message : String(err)}. Falling back to authPath.`);
|
|
218
266
|
try {
|
|
219
|
-
await client.reportWorktreeStatus(trigger.id,
|
|
267
|
+
await client.reportWorktreeStatus(trigger.id, 'FAILED');
|
|
220
268
|
}
|
|
221
269
|
catch {
|
|
222
270
|
// Ignore status report failure
|
|
@@ -227,11 +275,11 @@ export const createTriggerHandler = (options, dependencies = {}) => {
|
|
|
227
275
|
currentHistoryPath = historyPaths.currentHistoryPath;
|
|
228
276
|
await restoreParentHistoryFromServer(historyPaths.parentHistoryPath, runtime.parentHistoryMarkdown);
|
|
229
277
|
if (effectiveAuthPath && runtime.attachments && runtime.attachments.length > 0) {
|
|
230
|
-
attachmentDir = join(effectiveAuthPath,
|
|
278
|
+
attachmentDir = join(effectiveAuthPath, '.agentteams', 'runner', 'attachments', trigger.id);
|
|
231
279
|
}
|
|
232
280
|
const downloadedAttachments = await downloadRuntimeAttachments(runtime.attachments, effectiveAuthPath, trigger.id);
|
|
233
281
|
if (downloadedAttachments.length > 0) {
|
|
234
|
-
activeLogReporter.append(
|
|
282
|
+
activeLogReporter.append('INFO', `Downloaded ${downloadedAttachments.length} attachment(s) for runner access.`);
|
|
235
283
|
}
|
|
236
284
|
const runnerPrompt = appendAttachmentSection(resolveRunnerPrompt(runtime.runnerPrompt, historyPaths.currentHistoryPath, historyPaths.parentHistoryPath), downloadedAttachments);
|
|
237
285
|
const runner = createRunner(trigger.runnerType);
|
|
@@ -247,14 +295,14 @@ export const createTriggerHandler = (options, dependencies = {}) => {
|
|
|
247
295
|
const requested = await client.isTriggerCancelRequested(trigger.id);
|
|
248
296
|
if (requested) {
|
|
249
297
|
cancelRequested = true;
|
|
250
|
-
activeLogReporter.append(
|
|
298
|
+
activeLogReporter.append('WARN', 'Cancellation requested by user. Stopping runner.');
|
|
251
299
|
cancelController.abort();
|
|
252
300
|
}
|
|
253
301
|
}
|
|
254
302
|
catch (error) {
|
|
255
|
-
logger.warn(
|
|
303
|
+
logger.warn('Failed to fetch trigger cancel status', {
|
|
256
304
|
triggerId: trigger.id,
|
|
257
|
-
error: error instanceof Error ? error.message : String(error)
|
|
305
|
+
error: error instanceof Error ? error.message : String(error),
|
|
258
306
|
});
|
|
259
307
|
}
|
|
260
308
|
finally {
|
|
@@ -265,15 +313,13 @@ export const createTriggerHandler = (options, dependencies = {}) => {
|
|
|
265
313
|
cancelInterval = setIntervalFn(() => {
|
|
266
314
|
void checkCancelRequested();
|
|
267
315
|
}, cancelPollIntervalMs);
|
|
268
|
-
const runnerFastMode =
|
|
269
|
-
? trigger.fastMode
|
|
270
|
-
: false;
|
|
316
|
+
const runnerFastMode = trigger.runnerType === 'CODEX' || trigger.runnerType === 'CLAUDE_CODE' ? trigger.fastMode : false;
|
|
271
317
|
if (trigger.fastMode && !runnerFastMode) {
|
|
272
|
-
logger.warn(
|
|
318
|
+
logger.warn('Fast mode requested for unsupported runner; ignoring', {
|
|
273
319
|
triggerId: trigger.id,
|
|
274
|
-
runnerType: trigger.runnerType
|
|
320
|
+
runnerType: trigger.runnerType,
|
|
275
321
|
});
|
|
276
|
-
activeLogReporter.append(
|
|
322
|
+
activeLogReporter.append('WARN', `Fast mode is not supported for runner ${trigger.runnerType}; ignoring.`);
|
|
277
323
|
}
|
|
278
324
|
// 절전 방지는 daemon polling lifecycle(poller)이 daemon-level로 소유하므로 trigger 실행 중에도 유지된다.
|
|
279
325
|
const runResult = await runner.run({
|
|
@@ -291,46 +337,38 @@ export const createTriggerHandler = (options, dependencies = {}) => {
|
|
|
291
337
|
fastMode: runnerFastMode,
|
|
292
338
|
signal: cancelController.signal,
|
|
293
339
|
onStdoutChunk: (chunk) => {
|
|
294
|
-
activeLogReporter.append(
|
|
340
|
+
activeLogReporter.append('INFO', chunk);
|
|
295
341
|
},
|
|
296
342
|
onStderrChunk: (chunk) => {
|
|
297
|
-
activeLogReporter.append(
|
|
298
|
-
}
|
|
343
|
+
activeLogReporter.append('WARN', chunk);
|
|
344
|
+
},
|
|
299
345
|
});
|
|
300
346
|
clearIntervalFn(cancelInterval);
|
|
301
347
|
cancelInterval = null;
|
|
302
|
-
logger.info(
|
|
348
|
+
logger.info('Trigger runner finished', {
|
|
303
349
|
triggerId: trigger.id,
|
|
304
|
-
exitCode: runResult.exitCode
|
|
350
|
+
exitCode: runResult.exitCode,
|
|
351
|
+
});
|
|
352
|
+
logReporter.append('INFO', `Runner finished with exitCode=${runResult.exitCode}.`);
|
|
353
|
+
await reportHistory(trigger.id, currentHistoryPath, logReporter, {
|
|
354
|
+
outputText: runResult.outputText ?? '',
|
|
355
|
+
errorMessage: runResult.exitCode === 0 ? undefined : runResult.errorMessage,
|
|
305
356
|
});
|
|
306
|
-
logReporter.append("INFO", `Runner finished with exitCode=${runResult.exitCode}.`);
|
|
307
|
-
const historyReported = await reportHistoryToDatabase(trigger.id, currentHistoryPath);
|
|
308
|
-
if (!historyReported && runResult.outputText) {
|
|
309
|
-
const parsedOutput = extractResultTextFromStreamJson(runResult.outputText);
|
|
310
|
-
const fallbackHistory = buildFallbackHistory(parsedOutput, runResult.exitCode === 0 ? undefined : runResult.errorMessage);
|
|
311
|
-
if (currentHistoryPath) {
|
|
312
|
-
await writeHistoryFile(currentHistoryPath, fallbackHistory);
|
|
313
|
-
}
|
|
314
|
-
await client.updateTriggerHistory(trigger.id, fallbackHistory);
|
|
315
|
-
logReporter.append("WARN", "Runner did not write a history file. Captured stdout was stored as fallback history.");
|
|
316
|
-
}
|
|
317
357
|
await logReporter.stop();
|
|
318
358
|
// 3차 방어: origin issue 자동 연결 안전장치 (fire-and-forget)
|
|
319
359
|
void runOriginIssueSafeguard(trigger.prompt, currentHistoryPath, effectiveAuthPath).catch(() => {
|
|
320
360
|
// Safeguard failure should never block trigger completion
|
|
321
361
|
});
|
|
322
|
-
const status = runResult.cancelled
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
: status === "CANCELLED"
|
|
328
|
-
? (runResult.errorMessage || "Runner cancelled by user")
|
|
362
|
+
const status = runResult.cancelled ? 'CANCELLED' : runResult.exitCode === 0 ? 'DONE' : 'FAILED';
|
|
363
|
+
const errorMessage = status === 'FAILED'
|
|
364
|
+
? runResult.errorMessage || runResult.lastOutput || `Runner exited with code ${runResult.exitCode}`
|
|
365
|
+
: status === 'CANCELLED'
|
|
366
|
+
? runResult.errorMessage || 'Runner cancelled by user'
|
|
329
367
|
: undefined;
|
|
330
368
|
await client.updateTriggerStatus(trigger.id, status, errorMessage ? sanitizeErrorMessage(errorMessage) : undefined);
|
|
331
|
-
logger.info(
|
|
369
|
+
logger.info('Trigger completed', {
|
|
332
370
|
triggerId: trigger.id,
|
|
333
|
-
status
|
|
371
|
+
status,
|
|
334
372
|
});
|
|
335
373
|
}
|
|
336
374
|
catch (error) {
|
|
@@ -338,23 +376,23 @@ export const createTriggerHandler = (options, dependencies = {}) => {
|
|
|
338
376
|
clearIntervalFn(cancelInterval);
|
|
339
377
|
cancelInterval = null;
|
|
340
378
|
}
|
|
341
|
-
logger.error(
|
|
379
|
+
logger.error('Trigger handling failed', {
|
|
342
380
|
triggerId: trigger.id,
|
|
343
|
-
error: error instanceof Error ? error.message : String(error)
|
|
381
|
+
error: error instanceof Error ? error.message : String(error),
|
|
344
382
|
});
|
|
345
383
|
try {
|
|
346
|
-
logReporter?.append(
|
|
347
|
-
await
|
|
384
|
+
logReporter?.append('ERROR', error instanceof Error ? error.message : String(error));
|
|
385
|
+
await reportHistory(trigger.id, currentHistoryPath, logReporter);
|
|
348
386
|
if (logReporter) {
|
|
349
387
|
await logReporter.stop();
|
|
350
388
|
}
|
|
351
389
|
const rawErrorMsg = error instanceof Error ? error.message : String(error);
|
|
352
|
-
await client.updateTriggerStatus(trigger.id,
|
|
390
|
+
await client.updateTriggerStatus(trigger.id, 'FAILED', sanitizeErrorMessage(rawErrorMsg));
|
|
353
391
|
}
|
|
354
392
|
catch (statusError) {
|
|
355
|
-
logger.error(
|
|
393
|
+
logger.error('Failed to report trigger as FAILED', {
|
|
356
394
|
triggerId: trigger.id,
|
|
357
|
-
error: statusError instanceof Error ? statusError.message : String(statusError)
|
|
395
|
+
error: statusError instanceof Error ? statusError.message : String(statusError),
|
|
358
396
|
});
|
|
359
397
|
}
|
|
360
398
|
}
|
|
@@ -364,10 +402,10 @@ export const createTriggerHandler = (options, dependencies = {}) => {
|
|
|
364
402
|
await removeAttachmentDirectory(attachmentDir);
|
|
365
403
|
}
|
|
366
404
|
catch (cleanupError) {
|
|
367
|
-
logger.warn(
|
|
405
|
+
logger.warn('Failed to remove runner attachment directory', {
|
|
368
406
|
triggerId: trigger.id,
|
|
369
407
|
attachmentDir,
|
|
370
|
-
error: cleanupError instanceof Error ? cleanupError.message : String(cleanupError)
|
|
408
|
+
error: cleanupError instanceof Error ? cleanupError.message : String(cleanupError),
|
|
371
409
|
});
|
|
372
410
|
}
|
|
373
411
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-handler.js","sourceRoot":"","sources":["../../src/handlers/trigger-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trigger-handler.js","sourceRoot":"","sources":["../../src/handlers/trigger-handler.ts"],"names":[],"mappings":"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"}
|