mirror of
https://github.com/tiennm99/ccs.git
synced 2026-10-11 12:09:03 +00:00
feat(browser): 增加 orchestration 执行策略增强
为 block 与 sequence step 增加最小 continueOnError 语义,并补充 failures 汇总输出。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
1 parent
78f3879e19
commit
101396f728
2 files changed
+316
-2
No files matched your search
@@ -2433,11 +2433,22 @@ function formatOrchestrationSummary(session) {
|
||||
`pageIndex: ${session.pageIndex}`,
|
||||
`blockCount: ${session.blockCount}`,
|
||||
`completedBlocks: ${session.completedBlocks}`,
|
||||
`failedCount: ${session.failedCount || 0}`,
|
||||
`currentBlockIndex: ${session.currentBlockIndex}`,
|
||||
`failedBlockIndex: ${session.failedBlockIndex === null ? 'none' : session.failedBlockIndex}`,
|
||||
`error: ${session.error || 'none'}`,
|
||||
`status: ${session.status}`,
|
||||
];
|
||||
if (Array.isArray(session.failures) && session.failures.length > 0) {
|
||||
session.failures.forEach((failure, index) => {
|
||||
lines.push(`failure[${index}].blockIndex: ${failure.blockIndex}`);
|
||||
lines.push(
|
||||
`failure[${index}].sequenceStepIndex: ${failure.sequenceStepIndex === null ? 'none' : failure.sequenceStepIndex}`
|
||||
);
|
||||
lines.push(`failure[${index}].type: ${failure.type}`);
|
||||
lines.push(`failure[${index}].message: ${failure.message}`);
|
||||
});
|
||||
}
|
||||
if (session.failedSequenceStepIndex !== null && session.failedSequenceStepIndex !== undefined) {
|
||||
lines.push(`failedSequenceStepIndex: ${session.failedSequenceStepIndex}`);
|
||||
}
|
||||
@@ -2656,6 +2667,12 @@ function formatOrchestrationError(error) {
|
||||
return { message };
|
||||
}
|
||||
|
||||
function pushOrchestrationFailure(session, details) {
|
||||
session.failures = session.failures || [];
|
||||
session.failures.push(details);
|
||||
session.failedCount = session.failures.length;
|
||||
}
|
||||
|
||||
function requireOrchestrationBlocks(toolArgs) {
|
||||
const blocks = Array.isArray(toolArgs.blocks) ? toolArgs.blocks : null;
|
||||
if (!blocks || blocks.length === 0) {
|
||||
@@ -5151,7 +5168,17 @@ async function executeSequenceSteps(session, block) {
|
||||
try {
|
||||
await executeOrchestrationBlock(session, step);
|
||||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : String(error);
|
||||
pushOrchestrationFailure(session, {
|
||||
blockIndex: session.currentBlockIndex,
|
||||
sequenceStepIndex: index,
|
||||
type: step.type,
|
||||
message,
|
||||
});
|
||||
session.failedSequenceStepIndex = index;
|
||||
if (step.continueOnError === true) {
|
||||
continue;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
@@ -5162,8 +5189,26 @@ async function executeOrchestrationBlocks(session) {
|
||||
const block = session.blocks[index];
|
||||
session.currentBlockIndex = index;
|
||||
validateOrchestrationBlock(block);
|
||||
await executeOrchestrationBlock(session, block);
|
||||
session.completedBlocks = index + 1;
|
||||
try {
|
||||
await executeOrchestrationBlock(session, block);
|
||||
session.completedBlocks = index + 1;
|
||||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : String(error);
|
||||
if (session.failedSequenceStepIndex === null || session.failedSequenceStepIndex === undefined) {
|
||||
pushOrchestrationFailure(session, {
|
||||
blockIndex: index,
|
||||
sequenceStepIndex: null,
|
||||
type: block.type,
|
||||
message,
|
||||
});
|
||||
}
|
||||
if (block.continueOnError === true) {
|
||||
session.failedSequenceStepIndex = null;
|
||||
session.completedBlocks = index + 1;
|
||||
continue;
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user