@agentteams/runner 0.0.84 → 0.0.85-dev.211

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 (124) 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 +172 -134
  38. package/dist/handlers/trigger-handler.js.map +1 -1
  39. package/dist/handlers/trigger-handler.test.js +442 -328
  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 +12 -10
  74. package/dist/runners/log-reporter.js.map +1 -1
  75. package/dist/runners/log-reporter.test.js +70 -70
  76. package/dist/runners/log-reporter.test.js.map +1 -1
  77. package/dist/runners/opencode.d.ts +1 -1
  78. package/dist/runners/opencode.js +68 -75
  79. package/dist/runners/opencode.js.map +1 -1
  80. package/dist/runners/process-control.d.ts +1 -1
  81. package/dist/runners/process-control.js +13 -11
  82. package/dist/runners/process-control.js.map +1 -1
  83. package/dist/runners/stream-json-parser.d.ts +1 -1
  84. package/dist/runners/stream-json-parser.js +70 -67
  85. package/dist/runners/stream-json-parser.js.map +1 -1
  86. package/dist/runners/stream-json-parser.replay.test.js +17 -17
  87. package/dist/runners/stream-json-parser.replay.test.js.map +1 -1
  88. package/dist/runners/stream-json-parser.test.js +76 -78
  89. package/dist/runners/stream-json-parser.test.js.map +1 -1
  90. package/dist/types.d.ts +4 -4
  91. package/dist/utils/auth-path-store.js +7 -7
  92. package/dist/utils/auth-path-store.test.js +24 -29
  93. package/dist/utils/auth-path-store.test.js.map +1 -1
  94. package/dist/utils/auto-update.d.ts +4 -4
  95. package/dist/utils/auto-update.js +30 -28
  96. package/dist/utils/auto-update.js.map +1 -1
  97. package/dist/utils/auto-update.test.js +30 -30
  98. package/dist/utils/convention-evaluator.d.ts +1 -1
  99. package/dist/utils/convention-evaluator.js +22 -21
  100. package/dist/utils/convention-evaluator.js.map +1 -1
  101. package/dist/utils/convention-evaluator.test.js +120 -110
  102. package/dist/utils/convention-evaluator.test.js.map +1 -1
  103. package/dist/utils/convention-sync.d.ts +3 -3
  104. package/dist/utils/convention-sync.js +86 -18
  105. package/dist/utils/convention-sync.js.map +1 -1
  106. package/dist/utils/convention-sync.test.js +126 -30
  107. package/dist/utils/convention-sync.test.js.map +1 -1
  108. package/dist/utils/git-worktree.js +20 -18
  109. package/dist/utils/git-worktree.js.map +1 -1
  110. package/dist/utils/git-worktree.test.js +98 -98
  111. package/dist/utils/git-worktree.test.js.map +1 -1
  112. package/dist/utils/origin-issue-safeguard.js +35 -30
  113. package/dist/utils/origin-issue-safeguard.js.map +1 -1
  114. package/dist/utils/power-save-blocker.d.ts +4 -4
  115. package/dist/utils/power-save-blocker.js +33 -33
  116. package/dist/utils/power-save-blocker.test.js +37 -37
  117. package/dist/utils/power-save-blocker.test.js.map +1 -1
  118. package/dist/utils/runner-cleanup.d.ts +3 -3
  119. package/dist/utils/runner-cleanup.js +13 -13
  120. package/dist/utils/runner-cleanup.test.js +35 -35
  121. package/dist/utils/runner-history.js +3 -3
  122. package/dist/utils/runner-history.test.js +17 -17
  123. package/package.json +9 -2
  124. package/readme.md +10 -10
@@ -1,57 +1,74 @@
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";
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 ?? ((apiClient, triggerId) => (new TriggerLogReporter(apiClient, triggerId)));
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 ?? (async (path, content) => {
20
- await mkdir(dirname(path), { recursive: true });
21
- await writeFile(path, content, "utf8");
22
- });
23
- const fetchAttachmentFile = dependencies.fetchAttachmentFile ?? (async (downloadUrl) => {
24
- const response = await fetch(downloadUrl);
25
- if (!response.ok) {
26
- throw new Error(`Attachment download failed (${response.status})`);
27
- }
28
- return new Uint8Array(await response.arrayBuffer());
29
- });
30
- const removeAttachmentDirectory = dependencies.removeAttachmentDirectory ?? (async (path) => {
31
- await rm(path, { recursive: true, force: true });
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 = "{{AGENTRUNNER_CURRENT_HISTORY_PATH}}";
41
- const parentHistoryPathPlaceholder = "{{AGENTRUNNER_PARENT_HISTORY_PATH}}";
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("NFKD")
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 : "attachment";
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 === "" || (relativePath !== ".." && !relativePath.startsWith(`..${sep}`) && !isAbsolute(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("Cannot deliver attachments because runner workspace path is not configured.");
81
+ throw new Error('Cannot deliver attachments because runner workspace path is not configured.');
65
82
  }
66
- const attachmentDir = join(workspaceRoot, ".agentteams", "runner", "attachments", triggerId);
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, "0")}-${attachment.id.slice(0, 8)}-${sanitizeAttachmentFileName(attachment.originalName)}`;
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
- "## Attached Files",
88
- "The user attached the following files. Read them from these local paths when they are relevant to the request.",
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("\n")}`;
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 ?? "(unavailable: authPath not configured)")
101
- .replaceAll(parentHistoryPathPlaceholder, parentPath ?? "(unavailable: authPath not configured)");
117
+ .replaceAll(currentHistoryPathPlaceholder, currentPath ?? '(unavailable: authPath not configured)')
118
+ .replaceAll(parentHistoryPathPlaceholder, parentPath ?? '(unavailable: authPath not configured)');
102
119
  };
103
- const reportHistoryToDatabase = async (triggerId, historyPath) => {
120
+ // 히스토리 파일을 읽어 사용할 마크다운을 돌려준다. 파일이 없거나 비어있으면 null.
121
+ // 읽기 실패와 "내용 없음"만 null로 합치고, 업로드(네트워크/권한)와는 분리한다 —
122
+ // 업로드 실패를 "파일 없음"으로 오인해 stdout 폴백으로 덮어쓰는 손상을 막기 위함.
123
+ const loadHistoryMarkdown = async (historyPath) => {
104
124
  if (!historyPath) {
105
- return false;
125
+ return null;
106
126
  }
107
127
  try {
108
- const content = await readHistoryFile(historyPath, "utf8");
128
+ const content = await readHistoryFile(historyPath, 'utf8');
109
129
  const markdown = stripUtf8Bom(content).trim();
110
- if (markdown.length === 0) {
111
- return false;
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
- await client.updateTriggerHistory(triggerId, markdown.slice(0, maxHistoryLength));
114
- return true;
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
- logger.warn("Failed to load or update runner history", {
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
- return false;
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
- : "- Runner completed successfully but did not write the requested history file.";
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) + "\n- *(truncated)*"
189
+ ? trimmed.slice(0, fallbackOutputMaxLength) + '\n- *(truncated)*'
142
190
  : trimmed;
143
191
  return [
144
- "### Summary",
192
+ '### Summary',
145
193
  summaryLine,
146
- "- Agent output (history file not written):",
147
- "",
194
+ '- Agent output (history file not written):',
195
+ '',
148
196
  truncated,
149
- "",
150
- "### Questions for User",
151
- "None"
152
- ].join("\n");
197
+ '',
198
+ '### Questions for User',
199
+ 'None',
200
+ ].join('\n');
153
201
  };
154
202
  const restoreParentHistoryFromServer = async (parentHistoryPath, parentHistoryMarkdown) => {
155
- const normalizedMarkdown = stripUtf8Bom(parentHistoryMarkdown ?? "").trim();
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("Trigger execution started", {
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("INFO", `Trigger started with runner ${trigger.runnerType}.`);
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("Trigger runtime fetched", {
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("INFO", `Runtime fetched (agentConfigId=${runtime.agentConfigId}).`);
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, "ACTIVE");
198
- activeLogReporter.append("INFO", `Worktree created at ${worktreePath}.`);
199
- logger.info("Worktree created for trigger", {
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("Worktree requested but authPath is not a git repo, falling back to authPath", {
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("WARN", "Worktree requested but authPath is not a git repo. Falling back to authPath.");
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("Failed to create worktree, falling back to authPath", {
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("WARN", `Worktree creation failed: ${err instanceof Error ? err.message : String(err)}. Falling back to authPath.`);
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, "FAILED");
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, ".agentteams", "runner", "attachments", trigger.id);
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("INFO", `Downloaded ${downloadedAttachments.length} attachment(s) for runner access.`);
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("WARN", "Cancellation requested by user. Stopping runner.");
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("Failed to fetch trigger cancel status", {
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 = (trigger.runnerType === "CODEX" || trigger.runnerType === "CLAUDE_CODE")
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("Fast mode requested for unsupported runner; ignoring", {
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("WARN", `Fast mode is not supported for runner ${trigger.runnerType}; ignoring.`);
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("INFO", chunk);
340
+ activeLogReporter.append('INFO', chunk);
295
341
  },
296
342
  onStderrChunk: (chunk) => {
297
- activeLogReporter.append("WARN", chunk);
298
- }
343
+ activeLogReporter.append('WARN', chunk);
344
+ },
299
345
  });
300
346
  clearIntervalFn(cancelInterval);
301
347
  cancelInterval = null;
302
- logger.info("Trigger runner finished", {
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
- ? "CANCELLED"
324
- : runResult.exitCode === 0 ? "DONE" : "FAILED";
325
- const errorMessage = status === "FAILED"
326
- ? (runResult.errorMessage || runResult.lastOutput || `Runner exited with code ${runResult.exitCode}`)
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("Trigger completed", {
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("Trigger handling failed", {
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("ERROR", error instanceof Error ? error.message : String(error));
347
- await reportHistoryToDatabase(trigger.id, currentHistoryPath);
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, "FAILED", sanitizeErrorMessage(rawErrorMsg));
390
+ await client.updateTriggerStatus(trigger.id, 'FAILED', sanitizeErrorMessage(rawErrorMsg));
353
391
  }
354
392
  catch (statusError) {
355
- logger.error("Failed to report trigger as FAILED", {
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("Failed to remove runner attachment directory", {
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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"}