fix: improve resume edge cases and shell quoting
- Early exit when all agents already completed instead of running empty workflow - Descriptive error when deliverables missing from disk despite session.json success - Quote $WORKSPACE in shannon CLI to prevent word splitting
This commit is contained in:
@@ -544,8 +544,17 @@ export async function loadResumeState(
|
|||||||
.filter((hash): hash is string => hash != null);
|
.filter((hash): hash is string => hash != null);
|
||||||
|
|
||||||
if (checkpoints.length === 0) {
|
if (checkpoints.length === 0) {
|
||||||
|
const successAgents = Object.entries(agents)
|
||||||
|
.filter(([, data]) => data.status === 'success')
|
||||||
|
.map(([name]) => name);
|
||||||
|
|
||||||
throw ApplicationFailure.nonRetryable(
|
throw ApplicationFailure.nonRetryable(
|
||||||
`No successful agent checkpoints found in workspace ${workspaceName}`,
|
`Cannot resume workspace ${workspaceName}: ` +
|
||||||
|
(successAgents.length > 0
|
||||||
|
? `${successAgents.length} agent(s) show success in session.json (${successAgents.join(', ')}) ` +
|
||||||
|
`but their deliverable files are missing from disk. ` +
|
||||||
|
`Start a fresh run instead.`
|
||||||
|
: `No agents completed successfully. Start a fresh run instead.`),
|
||||||
'NoCheckpointsError'
|
'NoCheckpointsError'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -167,6 +167,15 @@ export async function pentestPipelineWorkflow(
|
|||||||
incompleteAgents
|
incompleteAgents
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Check if all agents are already complete
|
||||||
|
if (resumeState.completedAgents.length === ALL_AGENTS.length) {
|
||||||
|
console.log(`All ${ALL_AGENTS.length} agents already completed. Nothing to resume.`);
|
||||||
|
state.status = 'completed';
|
||||||
|
state.completedAgents = [...resumeState.completedAgents];
|
||||||
|
state.summary = computeSummary(state);
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
// Record resume attempt in session.json
|
// Record resume attempt in session.json
|
||||||
await a.recordResumeAttempt(
|
await a.recordResumeAttempt(
|
||||||
activityInput,
|
activityInput,
|
||||||
|
|||||||
Reference in New Issue
Block a user