@herdctl/core 1.3.1 → 2.0.1
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/config/__tests__/agent.test.js +12 -12
- package/dist/config/__tests__/agent.test.js.map +1 -1
- package/dist/config/__tests__/loader.test.js +201 -4
- package/dist/config/__tests__/loader.test.js.map +1 -1
- package/dist/config/__tests__/merge.test.js +29 -4
- package/dist/config/__tests__/merge.test.js.map +1 -1
- package/dist/config/__tests__/parser.test.js +13 -13
- package/dist/config/__tests__/parser.test.js.map +1 -1
- package/dist/config/__tests__/schema.test.js +10 -10
- package/dist/config/__tests__/schema.test.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +2 -2
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +71 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/merge.d.ts +4 -1
- package/dist/config/merge.d.ts.map +1 -1
- package/dist/config/merge.js +16 -0
- package/dist/config/merge.js.map +1 -1
- package/dist/config/schema.d.ts +906 -89
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +109 -7
- package/dist/config/schema.js.map +1 -1
- package/dist/fleet-manager/__tests__/coverage.test.js +25 -24
- package/dist/fleet-manager/__tests__/coverage.test.js.map +1 -1
- package/dist/fleet-manager/__tests__/discord-manager.test.js +9 -2
- package/dist/fleet-manager/__tests__/discord-manager.test.js.map +1 -1
- package/dist/fleet-manager/__tests__/integration.test.js +27 -0
- package/dist/fleet-manager/__tests__/integration.test.js.map +1 -1
- package/dist/fleet-manager/__tests__/job-control.test.js +66 -0
- package/dist/fleet-manager/__tests__/job-control.test.js.map +1 -1
- package/dist/fleet-manager/__tests__/status-queries.test.js +12 -11
- package/dist/fleet-manager/__tests__/status-queries.test.js.map +1 -1
- package/dist/fleet-manager/config-reload.js +9 -9
- package/dist/fleet-manager/config-reload.js.map +1 -1
- package/dist/fleet-manager/discord-manager.d.ts.map +1 -1
- package/dist/fleet-manager/discord-manager.js +27 -4
- package/dist/fleet-manager/discord-manager.js.map +1 -1
- package/dist/fleet-manager/fleet-manager.d.ts +11 -0
- package/dist/fleet-manager/fleet-manager.d.ts.map +1 -1
- package/dist/fleet-manager/fleet-manager.js +27 -0
- package/dist/fleet-manager/fleet-manager.js.map +1 -1
- package/dist/fleet-manager/job-control.d.ts +1 -1
- package/dist/fleet-manager/job-control.d.ts.map +1 -1
- package/dist/fleet-manager/job-control.js +36 -14
- package/dist/fleet-manager/job-control.js.map +1 -1
- package/dist/fleet-manager/schedule-executor.d.ts +1 -1
- package/dist/fleet-manager/schedule-executor.d.ts.map +1 -1
- package/dist/fleet-manager/schedule-executor.js +17 -17
- package/dist/fleet-manager/schedule-executor.js.map +1 -1
- package/dist/fleet-manager/status-queries.js +7 -7
- package/dist/fleet-manager/status-queries.js.map +1 -1
- package/dist/fleet-manager/types.d.ts +10 -2
- package/dist/fleet-manager/types.d.ts.map +1 -1
- package/dist/fleet-manager/working-directory-helper.d.ts +29 -0
- package/dist/fleet-manager/working-directory-helper.d.ts.map +1 -0
- package/dist/fleet-manager/working-directory-helper.js +36 -0
- package/dist/fleet-manager/working-directory-helper.js.map +1 -0
- package/dist/hooks/__tests__/discord-runner.test.js +16 -16
- package/dist/hooks/__tests__/discord-runner.test.js.map +1 -1
- package/dist/hooks/runners/discord.d.ts.map +1 -1
- package/dist/hooks/runners/discord.js +15 -12
- package/dist/hooks/runners/discord.js.map +1 -1
- package/dist/runner/__tests__/job-executor.test.js +461 -126
- package/dist/runner/__tests__/job-executor.test.js.map +1 -1
- package/dist/runner/__tests__/message-processor.test.js +12 -35
- package/dist/runner/__tests__/message-processor.test.js.map +1 -1
- package/dist/runner/__tests__/sdk-adapter.test.js +137 -2
- package/dist/runner/__tests__/sdk-adapter.test.js.map +1 -1
- package/dist/runner/index.d.ts +2 -0
- package/dist/runner/index.d.ts.map +1 -1
- package/dist/runner/index.js +1 -0
- package/dist/runner/index.js.map +1 -1
- package/dist/runner/job-executor.d.ts +12 -8
- package/dist/runner/job-executor.d.ts.map +1 -1
- package/dist/runner/job-executor.js +280 -133
- package/dist/runner/job-executor.js.map +1 -1
- package/dist/runner/message-processor.d.ts +5 -2
- package/dist/runner/message-processor.d.ts.map +1 -1
- package/dist/runner/message-processor.js +9 -18
- package/dist/runner/message-processor.js.map +1 -1
- package/dist/runner/runtime/__tests__/cli-session-path.test.d.ts +2 -0
- package/dist/runner/runtime/__tests__/cli-session-path.test.d.ts.map +1 -0
- package/dist/runner/runtime/__tests__/cli-session-path.test.js +150 -0
- package/dist/runner/runtime/__tests__/cli-session-path.test.js.map +1 -0
- package/dist/runner/runtime/__tests__/docker-config.test.d.ts +2 -0
- package/dist/runner/runtime/__tests__/docker-config.test.d.ts.map +1 -0
- package/dist/runner/runtime/__tests__/docker-config.test.js +352 -0
- package/dist/runner/runtime/__tests__/docker-config.test.js.map +1 -0
- package/dist/runner/runtime/__tests__/docker-security.test.d.ts +2 -0
- package/dist/runner/runtime/__tests__/docker-security.test.d.ts.map +1 -0
- package/dist/runner/runtime/__tests__/docker-security.test.js +384 -0
- package/dist/runner/runtime/__tests__/docker-security.test.js.map +1 -0
- package/dist/runner/runtime/__tests__/factory.test.d.ts +2 -0
- package/dist/runner/runtime/__tests__/factory.test.d.ts.map +1 -0
- package/dist/runner/runtime/__tests__/factory.test.js +149 -0
- package/dist/runner/runtime/__tests__/factory.test.js.map +1 -0
- package/dist/runner/runtime/__tests__/integration.test.d.ts +2 -0
- package/dist/runner/runtime/__tests__/integration.test.d.ts.map +1 -0
- package/dist/runner/runtime/__tests__/integration.test.js +274 -0
- package/dist/runner/runtime/__tests__/integration.test.js.map +1 -0
- package/dist/runner/runtime/cli-runtime.d.ts +107 -0
- package/dist/runner/runtime/cli-runtime.d.ts.map +1 -0
- package/dist/runner/runtime/cli-runtime.js +341 -0
- package/dist/runner/runtime/cli-runtime.js.map +1 -0
- package/dist/runner/runtime/cli-session-path.d.ts +108 -0
- package/dist/runner/runtime/cli-session-path.d.ts.map +1 -0
- package/dist/runner/runtime/cli-session-path.js +173 -0
- package/dist/runner/runtime/cli-session-path.js.map +1 -0
- package/dist/runner/runtime/cli-session-watcher.d.ts +55 -0
- package/dist/runner/runtime/cli-session-watcher.d.ts.map +1 -0
- package/dist/runner/runtime/cli-session-watcher.js +187 -0
- package/dist/runner/runtime/cli-session-watcher.js.map +1 -0
- package/dist/runner/runtime/container-manager.d.ts +76 -0
- package/dist/runner/runtime/container-manager.d.ts.map +1 -0
- package/dist/runner/runtime/container-manager.js +229 -0
- package/dist/runner/runtime/container-manager.js.map +1 -0
- package/dist/runner/runtime/container-runner.d.ts +62 -0
- package/dist/runner/runtime/container-runner.d.ts.map +1 -0
- package/dist/runner/runtime/container-runner.js +235 -0
- package/dist/runner/runtime/container-runner.js.map +1 -0
- package/dist/runner/runtime/docker-config.d.ts +100 -0
- package/dist/runner/runtime/docker-config.d.ts.map +1 -0
- package/dist/runner/runtime/docker-config.js +98 -0
- package/dist/runner/runtime/docker-config.js.map +1 -0
- package/dist/runner/runtime/factory.d.ts +63 -0
- package/dist/runner/runtime/factory.d.ts.map +1 -0
- package/dist/runner/runtime/factory.js +68 -0
- package/dist/runner/runtime/factory.js.map +1 -0
- package/dist/runner/runtime/index.d.ts +20 -0
- package/dist/runner/runtime/index.d.ts.map +1 -0
- package/dist/runner/runtime/index.js +21 -0
- package/dist/runner/runtime/index.js.map +1 -0
- package/dist/runner/runtime/interface.d.ts +59 -0
- package/dist/runner/runtime/interface.d.ts.map +1 -0
- package/dist/runner/runtime/interface.js +12 -0
- package/dist/runner/runtime/interface.js.map +1 -0
- package/dist/runner/runtime/sdk-runtime.d.ts +46 -0
- package/dist/runner/runtime/sdk-runtime.d.ts.map +1 -0
- package/dist/runner/runtime/sdk-runtime.js +63 -0
- package/dist/runner/runtime/sdk-runtime.js.map +1 -0
- package/dist/runner/sdk-adapter.d.ts.map +1 -1
- package/dist/runner/sdk-adapter.js +28 -10
- package/dist/runner/sdk-adapter.js.map +1 -1
- package/dist/runner/types.d.ts +11 -1
- package/dist/runner/types.d.ts.map +1 -1
- package/dist/scheduler/__tests__/schedule-runner.test.js +61 -50
- package/dist/scheduler/__tests__/schedule-runner.test.js.map +1 -1
- package/dist/scheduler/schedule-runner.d.ts +1 -4
- package/dist/scheduler/schedule-runner.d.ts.map +1 -1
- package/dist/scheduler/schedule-runner.js +40 -8
- package/dist/scheduler/schedule-runner.js.map +1 -1
- package/dist/state/__tests__/session-schema.test.js +4 -0
- package/dist/state/__tests__/session-schema.test.js.map +1 -1
- package/dist/state/__tests__/session-validation.test.d.ts +2 -0
- package/dist/state/__tests__/session-validation.test.d.ts.map +1 -0
- package/dist/state/__tests__/session-validation.test.js +446 -0
- package/dist/state/__tests__/session-validation.test.js.map +1 -0
- package/dist/state/__tests__/session.test.js +68 -0
- package/dist/state/__tests__/session.test.js.map +1 -1
- package/dist/state/__tests__/working-directory-validation.test.d.ts +5 -0
- package/dist/state/__tests__/working-directory-validation.test.d.ts.map +1 -0
- package/dist/state/__tests__/working-directory-validation.test.js +101 -0
- package/dist/state/__tests__/working-directory-validation.test.js.map +1 -0
- package/dist/state/index.d.ts +2 -0
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +4 -0
- package/dist/state/index.js.map +1 -1
- package/dist/state/schemas/session-info.d.ts +32 -0
- package/dist/state/schemas/session-info.d.ts.map +1 -1
- package/dist/state/schemas/session-info.js +22 -0
- package/dist/state/schemas/session-info.js.map +1 -1
- package/dist/state/session-validation.d.ts +227 -0
- package/dist/state/session-validation.d.ts.map +1 -0
- package/dist/state/session-validation.js +448 -0
- package/dist/state/session-validation.js.map +1 -0
- package/dist/state/session.d.ts +23 -3
- package/dist/state/session.d.ts.map +1 -1
- package/dist/state/session.js +41 -6
- package/dist/state/session.js.map +1 -1
- package/dist/state/working-directory-validation.d.ts +52 -0
- package/dist/state/working-directory-validation.d.ts.map +1 -0
- package/dist/state/working-directory-validation.js +81 -0
- package/dist/state/working-directory-validation.js.map +1 -0
- package/package.json +7 -2
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
import { join } from "node:path";
|
|
10
10
|
import { mkdir, appendFile } from "node:fs/promises";
|
|
11
11
|
import { SDKInitializationError, SDKStreamingError, MalformedResponseError, wrapError, classifyError, buildErrorMessage, } from "./errors.js";
|
|
12
|
-
import { toSDKOptions } from "./sdk-adapter.js";
|
|
13
12
|
import { processSDKMessage, isTerminalMessage, extractSummary, } from "./message-processor.js";
|
|
14
|
-
import { createJob, updateJob, appendJobOutput, getJobOutputPath, updateSessionInfo, getSessionInfo, } from "../state/index.js";
|
|
13
|
+
import { createJob, updateJob, appendJobOutput, getJobOutputPath, updateSessionInfo, getSessionInfo, clearSession, isSessionExpiredError, validateWorkingDirectory, validateRuntimeContext, } from "../state/index.js";
|
|
14
|
+
import { resolveWorkingDirectory } from "../fleet-manager/working-directory-helper.js";
|
|
15
15
|
// =============================================================================
|
|
16
16
|
// Default Logger
|
|
17
17
|
// =============================================================================
|
|
@@ -34,7 +34,8 @@ const defaultLogger = {
|
|
|
34
34
|
*
|
|
35
35
|
* @example
|
|
36
36
|
* ```typescript
|
|
37
|
-
* const
|
|
37
|
+
* const runtime = RuntimeFactory.create(agent);
|
|
38
|
+
* const executor = new JobExecutor(runtime);
|
|
38
39
|
*
|
|
39
40
|
* const result = await executor.execute({
|
|
40
41
|
* agent: resolvedAgent,
|
|
@@ -47,16 +48,16 @@ const defaultLogger = {
|
|
|
47
48
|
* ```
|
|
48
49
|
*/
|
|
49
50
|
export class JobExecutor {
|
|
50
|
-
|
|
51
|
+
runtime;
|
|
51
52
|
logger;
|
|
52
53
|
/**
|
|
53
54
|
* Create a new job executor
|
|
54
55
|
*
|
|
55
|
-
* @param
|
|
56
|
+
* @param runtime - The runtime interface to use for agent execution
|
|
56
57
|
* @param options - Optional configuration
|
|
57
58
|
*/
|
|
58
|
-
constructor(
|
|
59
|
-
this.
|
|
59
|
+
constructor(runtime, options = {}) {
|
|
60
|
+
this.runtime = runtime;
|
|
60
61
|
this.logger = options.logger ?? defaultLogger;
|
|
61
62
|
}
|
|
62
63
|
/**
|
|
@@ -66,11 +67,12 @@ export class JobExecutor {
|
|
|
66
67
|
* @returns Result of the execution including job ID and status
|
|
67
68
|
*/
|
|
68
69
|
async execute(options) {
|
|
69
|
-
const { agent, prompt, stateDir, triggerType, schedule, onMessage, outputToFile } = options;
|
|
70
|
+
const { agent, prompt, stateDir, triggerType, schedule, onMessage, onJobCreated, outputToFile } = options;
|
|
70
71
|
const jobsDir = join(stateDir, "jobs");
|
|
71
72
|
let job;
|
|
72
73
|
let sessionId;
|
|
73
74
|
let summary;
|
|
75
|
+
let lastAssistantContent; // Track last assistant message for fallback summary
|
|
74
76
|
let lastError;
|
|
75
77
|
let errorDetails;
|
|
76
78
|
let messagesReceived = 0;
|
|
@@ -89,6 +91,10 @@ export class JobExecutor {
|
|
|
89
91
|
forked_from: options.fork ? options.forkedFrom : undefined,
|
|
90
92
|
});
|
|
91
93
|
this.logger.info?.(`Created job ${job.id} for agent ${agent.name}`);
|
|
94
|
+
// Notify caller of job ID immediately (before execution starts)
|
|
95
|
+
if (onJobCreated) {
|
|
96
|
+
onJobCreated(job.id);
|
|
97
|
+
}
|
|
92
98
|
}
|
|
93
99
|
catch (error) {
|
|
94
100
|
this.logger.error(`Failed to create job: ${error.message}`);
|
|
@@ -117,145 +123,270 @@ export class JobExecutor {
|
|
|
117
123
|
this.logger.warn(`Failed to update job status to running: ${error.message}`);
|
|
118
124
|
// Continue execution - job was created
|
|
119
125
|
}
|
|
120
|
-
// Step
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
catch (initError) {
|
|
142
|
-
// Wrap initialization errors with context
|
|
143
|
-
throw new SDKInitializationError(buildErrorMessage(initError.message, {
|
|
144
|
-
jobId: job.id,
|
|
145
|
-
agentName: agent.name,
|
|
146
|
-
}), {
|
|
147
|
-
jobId: job.id,
|
|
148
|
-
agentName: agent.name,
|
|
149
|
-
cause: initError,
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
for await (const sdkMessage of messages) {
|
|
153
|
-
messagesReceived++;
|
|
154
|
-
// Process the message safely (handles malformed responses)
|
|
155
|
-
let processed;
|
|
156
|
-
try {
|
|
157
|
-
processed = processSDKMessage(sdkMessage);
|
|
158
|
-
}
|
|
159
|
-
catch (processError) {
|
|
160
|
-
// Log but don't crash on malformed messages
|
|
161
|
-
this.logger.warn(`Malformed SDK message received: ${processError.message}`);
|
|
162
|
-
// Write a warning to job output
|
|
126
|
+
// Step 3.5: Validate session if resuming
|
|
127
|
+
// This prevents unexpected logouts by checking session expiration before attempting resume
|
|
128
|
+
// Pass timeout to getSessionInfo so expired sessions are automatically cleared (consistent with schedule-runner.ts)
|
|
129
|
+
let effectiveResume;
|
|
130
|
+
if (options.resume) {
|
|
131
|
+
const sessionsDir = join(stateDir, "sessions");
|
|
132
|
+
// Default to 24h if not configured - prevents unexpected logouts from expired server-side sessions
|
|
133
|
+
const sessionTimeout = agent.session?.timeout ?? "24h";
|
|
134
|
+
const existingSession = await getSessionInfo(sessionsDir, agent.name, {
|
|
135
|
+
timeout: sessionTimeout,
|
|
136
|
+
logger: this.logger,
|
|
137
|
+
runtime: agent.runtime ?? "sdk", // Pass runtime for correct validation
|
|
138
|
+
});
|
|
139
|
+
if (existingSession?.session_id) {
|
|
140
|
+
// Validate that the working directory hasn't changed since the session was created
|
|
141
|
+
// If it changed, Claude Code will look for the session file in the wrong directory
|
|
142
|
+
const currentWorkingDirectory = resolveWorkingDirectory(agent);
|
|
143
|
+
const wdValidation = validateWorkingDirectory(existingSession, currentWorkingDirectory);
|
|
144
|
+
if (!wdValidation.valid) {
|
|
145
|
+
this.logger.warn(`${wdValidation.message} - clearing stale session ${existingSession.session_id}`);
|
|
163
146
|
try {
|
|
164
|
-
await
|
|
165
|
-
type: "error",
|
|
166
|
-
message: `Malformed SDK message: ${processError.message}`,
|
|
167
|
-
code: "MALFORMED_MESSAGE",
|
|
168
|
-
});
|
|
147
|
+
await clearSession(sessionsDir, agent.name);
|
|
169
148
|
}
|
|
170
|
-
catch {
|
|
171
|
-
|
|
149
|
+
catch (clearError) {
|
|
150
|
+
this.logger.warn(`Failed to clear stale session: ${clearError.message}`);
|
|
172
151
|
}
|
|
173
|
-
// Continue
|
|
174
|
-
|
|
152
|
+
// Continue without resume - working directory changed
|
|
153
|
+
effectiveResume = undefined;
|
|
175
154
|
}
|
|
176
|
-
|
|
155
|
+
else {
|
|
156
|
+
// Validate that the runtime context hasn't changed since the session was created
|
|
157
|
+
// Sessions are tied to specific runtime configurations (SDK vs CLI, Docker vs native)
|
|
158
|
+
const currentRuntimeType = agent.runtime ?? "sdk";
|
|
159
|
+
const currentDockerEnabled = agent.docker?.enabled ?? false;
|
|
160
|
+
const runtimeValidation = validateRuntimeContext(existingSession, currentRuntimeType, currentDockerEnabled);
|
|
161
|
+
if (!runtimeValidation.valid) {
|
|
162
|
+
this.logger.warn(`${runtimeValidation.message} - clearing stale session ${existingSession.session_id}`);
|
|
163
|
+
try {
|
|
164
|
+
await clearSession(sessionsDir, agent.name);
|
|
165
|
+
}
|
|
166
|
+
catch (clearError) {
|
|
167
|
+
this.logger.warn(`Failed to clear stale session: ${clearError.message}`);
|
|
168
|
+
}
|
|
169
|
+
// Continue without resume - runtime context changed
|
|
170
|
+
effectiveResume = undefined;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
// Use the actual session ID from the stored session, not the original options.resume value
|
|
174
|
+
// This ensures we always use the correct session ID stored on disk
|
|
175
|
+
effectiveResume = existingSession.session_id;
|
|
176
|
+
this.logger.info?.(`Found valid session for ${agent.name}: ${effectiveResume}, will attempt to resume`);
|
|
177
|
+
// Update last_used_at NOW to prevent session from expiring during long-running jobs
|
|
178
|
+
// This fixes the authentication bug where sessions could expire mid-execution
|
|
179
|
+
try {
|
|
180
|
+
await updateSessionInfo(sessionsDir, agent.name, {
|
|
181
|
+
session_id: existingSession.session_id,
|
|
182
|
+
job_count: existingSession.job_count,
|
|
183
|
+
mode: existingSession.mode,
|
|
184
|
+
working_directory: currentWorkingDirectory,
|
|
185
|
+
runtime_type: agent.runtime ?? "sdk",
|
|
186
|
+
docker_enabled: agent.docker?.enabled ?? false,
|
|
187
|
+
});
|
|
188
|
+
this.logger.info?.(`Refreshed session timestamp for ${agent.name} before execution`);
|
|
189
|
+
}
|
|
190
|
+
catch (updateError) {
|
|
191
|
+
this.logger.warn(`Failed to refresh session timestamp: ${updateError.message}`);
|
|
192
|
+
// Continue anyway - the session is still valid for now
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
this.logger.info?.(`No valid session for ${agent.name} (expired or not found), starting fresh`);
|
|
199
|
+
// Write info to job output
|
|
177
200
|
try {
|
|
178
|
-
await appendJobOutput(jobsDir, job.id,
|
|
201
|
+
await appendJobOutput(jobsDir, job.id, {
|
|
202
|
+
type: "system",
|
|
203
|
+
content: `No valid session found (expired or missing). Starting fresh session.`,
|
|
204
|
+
});
|
|
179
205
|
}
|
|
180
|
-
catch
|
|
181
|
-
|
|
182
|
-
// Continue processing - don't fail execution due to logging issues
|
|
206
|
+
catch {
|
|
207
|
+
// Ignore output write failures
|
|
183
208
|
}
|
|
184
|
-
//
|
|
185
|
-
|
|
209
|
+
// Don't resume - start fresh (effectiveResume stays undefined)
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// Step 4: Execute agent and stream output
|
|
213
|
+
// Track whether we've already retried after a session expiration
|
|
214
|
+
let retriedAfterSessionExpiry = false;
|
|
215
|
+
const executeWithRetry = async (resumeSessionId) => {
|
|
216
|
+
try {
|
|
217
|
+
let messages;
|
|
218
|
+
// Catch runtime initialization errors
|
|
219
|
+
try {
|
|
220
|
+
messages = this.runtime.execute({
|
|
221
|
+
prompt,
|
|
222
|
+
agent: options.agent,
|
|
223
|
+
resume: resumeSessionId,
|
|
224
|
+
fork: options.fork ? true : undefined,
|
|
225
|
+
abortController: options.abortController,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
catch (initError) {
|
|
229
|
+
// Wrap initialization errors with context
|
|
230
|
+
throw new SDKInitializationError(buildErrorMessage(initError.message, {
|
|
231
|
+
jobId: job.id,
|
|
232
|
+
agentName: agent.name,
|
|
233
|
+
}), {
|
|
234
|
+
jobId: job.id,
|
|
235
|
+
agentName: agent.name,
|
|
236
|
+
cause: initError,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
for await (const sdkMessage of messages) {
|
|
240
|
+
messagesReceived++;
|
|
241
|
+
// Process the message safely (handles malformed responses)
|
|
242
|
+
let processed;
|
|
186
243
|
try {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
244
|
+
processed = processSDKMessage(sdkMessage);
|
|
245
|
+
}
|
|
246
|
+
catch (processError) {
|
|
247
|
+
// Log but don't crash on malformed messages
|
|
248
|
+
this.logger.warn(`Malformed SDK message received: ${processError.message}`);
|
|
249
|
+
// Write a warning to job output
|
|
250
|
+
try {
|
|
251
|
+
await appendJobOutput(jobsDir, job.id, {
|
|
252
|
+
type: "error",
|
|
253
|
+
message: `Malformed SDK message: ${processError.message}`,
|
|
254
|
+
code: "MALFORMED_MESSAGE",
|
|
255
|
+
});
|
|
190
256
|
}
|
|
257
|
+
catch {
|
|
258
|
+
// Ignore output write failures for malformed message warnings
|
|
259
|
+
}
|
|
260
|
+
// Continue processing other messages
|
|
261
|
+
continue;
|
|
191
262
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
263
|
+
// Write to job output immediately (no buffering)
|
|
264
|
+
try {
|
|
265
|
+
await appendJobOutput(jobsDir, job.id, processed.output);
|
|
266
|
+
}
|
|
267
|
+
catch (outputError) {
|
|
268
|
+
this.logger.warn(`Failed to write job output: ${outputError.message}`);
|
|
269
|
+
// Continue processing - don't fail execution due to logging issues
|
|
270
|
+
}
|
|
271
|
+
// Also write to output.log file if outputToFile is enabled
|
|
272
|
+
if (outputLogPath) {
|
|
273
|
+
try {
|
|
274
|
+
const logLine = this.formatOutputLogLine(processed.output);
|
|
275
|
+
if (logLine) {
|
|
276
|
+
await appendFile(outputLogPath, logLine + "\n", "utf-8");
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
catch (fileError) {
|
|
280
|
+
this.logger.warn(`Failed to write to output log file: ${fileError.message}`);
|
|
281
|
+
// Continue processing - file logging is optional
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// Log error messages to console immediately
|
|
285
|
+
if (processed.output.type === "error") {
|
|
286
|
+
this.logger.error(`Job ${job.id} error: ${processed.output.message}`);
|
|
287
|
+
}
|
|
288
|
+
// Extract session ID if present
|
|
289
|
+
if (processed.sessionId) {
|
|
290
|
+
sessionId = processed.sessionId;
|
|
291
|
+
}
|
|
292
|
+
// Track last non-partial assistant message content for fallback summary
|
|
293
|
+
// This ensures we capture the final response even if it's long
|
|
294
|
+
if (processed.output.type === "assistant" && !processed.output.partial && processed.output.content) {
|
|
295
|
+
lastAssistantContent = processed.output.content;
|
|
296
|
+
}
|
|
297
|
+
// Extract explicit summary if present (summary field or result message)
|
|
298
|
+
// Only track explicit summaries here - assistant content is tracked above
|
|
299
|
+
// Guard against null/undefined messages from malformed SDK responses
|
|
300
|
+
if (sdkMessage && (sdkMessage.summary || sdkMessage.type === "result")) {
|
|
301
|
+
const messageSummary = extractSummary(sdkMessage);
|
|
302
|
+
if (messageSummary) {
|
|
303
|
+
summary = messageSummary;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Call user's onMessage callback if provided
|
|
307
|
+
if (onMessage) {
|
|
308
|
+
try {
|
|
309
|
+
await onMessage(sdkMessage);
|
|
310
|
+
}
|
|
311
|
+
catch (callbackError) {
|
|
312
|
+
this.logger.warn(`onMessage callback error: ${callbackError.message}`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
// Check for terminal messages
|
|
316
|
+
if (isTerminalMessage(sdkMessage)) {
|
|
317
|
+
if (sdkMessage.type === "error") {
|
|
318
|
+
const errorMessage = sdkMessage.message ?? "Agent execution failed";
|
|
319
|
+
lastError = new SDKStreamingError(buildErrorMessage(errorMessage, {
|
|
320
|
+
jobId: job.id,
|
|
321
|
+
agentName: agent.name,
|
|
322
|
+
}), {
|
|
323
|
+
jobId: job.id,
|
|
324
|
+
agentName: agent.name,
|
|
325
|
+
code: sdkMessage.code,
|
|
326
|
+
messagesReceived,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
break;
|
|
195
330
|
}
|
|
196
331
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
summary = messageSummary;
|
|
205
|
-
}
|
|
206
|
-
// Call user's onMessage callback if provided
|
|
207
|
-
if (onMessage) {
|
|
332
|
+
}
|
|
333
|
+
catch (error) {
|
|
334
|
+
// Check if this is a session expiration error from the SDK
|
|
335
|
+
// This can happen if the server-side session expired even though local validation passed
|
|
336
|
+
if (isSessionExpiredError(error) && resumeSessionId && !retriedAfterSessionExpiry) {
|
|
337
|
+
this.logger.warn(`Session expired on server for ${agent.name}. Clearing session and retrying with fresh session.`);
|
|
338
|
+
// Clear the expired session
|
|
208
339
|
try {
|
|
209
|
-
|
|
340
|
+
const sessionsDir = join(stateDir, "sessions");
|
|
341
|
+
await clearSession(sessionsDir, agent.name);
|
|
342
|
+
this.logger.info?.(`Cleared expired session for ${agent.name}`);
|
|
210
343
|
}
|
|
211
|
-
catch (
|
|
212
|
-
this.logger.warn(`
|
|
344
|
+
catch (clearError) {
|
|
345
|
+
this.logger.warn(`Failed to clear expired session: ${clearError.message}`);
|
|
213
346
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
lastError = new SDKStreamingError(buildErrorMessage(errorMessage, {
|
|
220
|
-
jobId: job.id,
|
|
221
|
-
agentName: agent.name,
|
|
222
|
-
}), {
|
|
223
|
-
jobId: job.id,
|
|
224
|
-
agentName: agent.name,
|
|
225
|
-
code: sdkMessage.code,
|
|
226
|
-
messagesReceived,
|
|
347
|
+
// Write info to job output about the retry
|
|
348
|
+
try {
|
|
349
|
+
await appendJobOutput(jobsDir, job.id, {
|
|
350
|
+
type: "system",
|
|
351
|
+
content: `Session expired on server. Retrying with fresh session.`,
|
|
227
352
|
});
|
|
228
353
|
}
|
|
229
|
-
|
|
354
|
+
catch {
|
|
355
|
+
// Ignore output write failures
|
|
356
|
+
}
|
|
357
|
+
// Retry with a fresh session (no resume)
|
|
358
|
+
retriedAfterSessionExpiry = true;
|
|
359
|
+
messagesReceived = 0; // Reset for fresh session
|
|
360
|
+
await executeWithRetry(undefined);
|
|
361
|
+
return;
|
|
230
362
|
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
jobId: job.id,
|
|
237
|
-
agentName: agent.name,
|
|
238
|
-
phase: messagesReceived === 0 ? "init" : "streaming",
|
|
239
|
-
});
|
|
240
|
-
// Add messages received count for streaming errors
|
|
241
|
-
if (lastError instanceof SDKStreamingError && messagesReceived > 0) {
|
|
242
|
-
lastError.messagesReceived = messagesReceived;
|
|
243
|
-
}
|
|
244
|
-
// Log the error with context
|
|
245
|
-
this.logger.error(`${lastError.name}: ${lastError.message}`);
|
|
246
|
-
// Write error to job output with full context
|
|
247
|
-
try {
|
|
248
|
-
await appendJobOutput(jobsDir, job.id, {
|
|
249
|
-
type: "error",
|
|
250
|
-
message: lastError.message,
|
|
251
|
-
code: lastError.code ?? lastError.cause?.code,
|
|
252
|
-
stack: lastError.stack,
|
|
363
|
+
// Wrap the error with context if not already a RunnerError
|
|
364
|
+
lastError = wrapError(error, {
|
|
365
|
+
jobId: job.id,
|
|
366
|
+
agentName: agent.name,
|
|
367
|
+
phase: messagesReceived === 0 ? "init" : "streaming",
|
|
253
368
|
});
|
|
369
|
+
// Add messages received count for streaming errors
|
|
370
|
+
if (lastError instanceof SDKStreamingError && messagesReceived > 0) {
|
|
371
|
+
lastError.messagesReceived = messagesReceived;
|
|
372
|
+
}
|
|
373
|
+
// Log the error with context
|
|
374
|
+
this.logger.error(`${lastError.name}: ${lastError.message}`);
|
|
375
|
+
// Write error to job output with full context
|
|
376
|
+
try {
|
|
377
|
+
await appendJobOutput(jobsDir, job.id, {
|
|
378
|
+
type: "error",
|
|
379
|
+
message: lastError.message,
|
|
380
|
+
code: lastError.code ?? lastError.cause?.code,
|
|
381
|
+
stack: lastError.stack,
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
catch (outputError) {
|
|
385
|
+
this.logger.warn(`Failed to write error to job output: ${outputError.message}`);
|
|
386
|
+
}
|
|
254
387
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
}
|
|
258
|
-
}
|
|
388
|
+
};
|
|
389
|
+
await executeWithRetry(effectiveResume);
|
|
259
390
|
// Build error details for programmatic access
|
|
260
391
|
if (lastError) {
|
|
261
392
|
errorDetails = {
|
|
@@ -283,6 +414,14 @@ export class JobExecutor {
|
|
|
283
414
|
errorDetails.recoverable = false;
|
|
284
415
|
}
|
|
285
416
|
}
|
|
417
|
+
// Final summary logic:
|
|
418
|
+
// 1. If an explicit summary was found (from summary field or result message), use it
|
|
419
|
+
// 2. Otherwise, use the last assistant content
|
|
420
|
+
// This ensures we capture the final response, not an early short message
|
|
421
|
+
// Note: Truncation is handled by downstream consumers (e.g., Discord hook truncates to 4096)
|
|
422
|
+
if (!summary && lastAssistantContent) {
|
|
423
|
+
summary = lastAssistantContent;
|
|
424
|
+
}
|
|
286
425
|
// Step 5: Update job with final status
|
|
287
426
|
const success = !lastError;
|
|
288
427
|
const finishedAt = new Date().toISOString();
|
|
@@ -306,11 +445,18 @@ export class JobExecutor {
|
|
|
306
445
|
try {
|
|
307
446
|
const sessionsDir = join(stateDir, "sessions");
|
|
308
447
|
// Get existing session to determine if updating or creating
|
|
309
|
-
const existingSession = await getSessionInfo(sessionsDir, agent.name
|
|
448
|
+
const existingSession = await getSessionInfo(sessionsDir, agent.name, {
|
|
449
|
+
runtime: agent.runtime ?? "sdk",
|
|
450
|
+
});
|
|
451
|
+
// Store the current working directory with the session
|
|
452
|
+
const currentWorkingDirectory = resolveWorkingDirectory(agent);
|
|
310
453
|
await updateSessionInfo(sessionsDir, agent.name, {
|
|
311
454
|
session_id: sessionId,
|
|
312
455
|
job_count: (existingSession?.job_count ?? 0) + 1,
|
|
313
456
|
mode: existingSession?.mode ?? "autonomous",
|
|
457
|
+
working_directory: currentWorkingDirectory,
|
|
458
|
+
runtime_type: agent.runtime ?? "sdk",
|
|
459
|
+
docker_enabled: agent.docker?.enabled ?? false,
|
|
314
460
|
});
|
|
315
461
|
this.logger.info?.(`Persisted session ${sessionId} for agent ${agent.name}`);
|
|
316
462
|
}
|
|
@@ -390,24 +536,25 @@ export class JobExecutor {
|
|
|
390
536
|
* a single execution. For multiple executions, prefer creating a
|
|
391
537
|
* JobExecutor instance directly.
|
|
392
538
|
*
|
|
393
|
-
* @param
|
|
539
|
+
* @param runtime - The runtime interface
|
|
394
540
|
* @param options - Runner options including agent config and prompt
|
|
395
541
|
* @param executorOptions - Optional executor configuration
|
|
396
542
|
* @returns Result of the execution
|
|
397
543
|
*
|
|
398
544
|
* @example
|
|
399
545
|
* ```typescript
|
|
400
|
-
* import {
|
|
546
|
+
* import { RuntimeFactory } from "@herdctl/core";
|
|
401
547
|
*
|
|
402
|
-
* const
|
|
548
|
+
* const runtime = RuntimeFactory.create(agent);
|
|
549
|
+
* const result = await executeJob(runtime, {
|
|
403
550
|
* agent: resolvedAgent,
|
|
404
551
|
* prompt: "Fix the bug",
|
|
405
552
|
* stateDir: "/path/to/.herdctl",
|
|
406
553
|
* });
|
|
407
554
|
* ```
|
|
408
555
|
*/
|
|
409
|
-
export async function executeJob(
|
|
410
|
-
const executor = new JobExecutor(
|
|
556
|
+
export async function executeJob(runtime, options, executorOptions = {}) {
|
|
557
|
+
const executor = new JobExecutor(runtime, executorOptions);
|
|
411
558
|
return executor.execute(options);
|
|
412
559
|
}
|
|
413
560
|
//# sourceMappingURL=job-executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-executor.js","sourceRoot":"","sources":["../../src/runner/job-executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"job-executor.js","sourceRoot":"","sources":["../../src/runner/job-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,9 +38,12 @@ export declare function isTerminalMessage(message: SDKMessage): boolean;
|
|
|
38
38
|
* Extract the final summary from a message if present
|
|
39
39
|
*
|
|
40
40
|
* Looks for summaries in the following order:
|
|
41
|
-
* 1. Explicit `summary` field on the message
|
|
41
|
+
* 1. Explicit `summary` field on the message
|
|
42
42
|
* 2. Result message with `result` field (SDK final result)
|
|
43
|
-
* 3.
|
|
43
|
+
* 3. Non-partial assistant message content
|
|
44
|
+
*
|
|
45
|
+
* Note: No truncation is applied here. Downstream consumers (e.g., Discord hook)
|
|
46
|
+
* are responsible for truncating to their specific limits (e.g., 4096 for Discord).
|
|
44
47
|
*
|
|
45
48
|
* @param message - The SDK message to extract summary from
|
|
46
49
|
* @returns Summary string if present, undefined otherwise
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-processor.d.ts","sourceRoot":"","sources":["../../src/runner/message-processor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAsb/D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,CAwEvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CA6B9D;
|
|
1
|
+
{"version":3,"file":"message-processor.d.ts","sourceRoot":"","sources":["../../src/runner/message-processor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAsb/D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,CAwEvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CA6B9D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CA+BtE"}
|