forked from EduCraft/curriculum-project-hub
feat(hub): raise agent turns/time limits and notify teachers on failure
Defaults and silo env go to 150 turns / 1800s wall clock. Run completion appends a clear Feishu notice for max-turns, timeout, and other failures (partial answer kept). Startup process-restart kills notify the bound chat. Release v0.0.38.
This commit is contained in:
@@ -129,11 +129,16 @@ export class StreamingAgentCard {
|
||||
|
||||
async finish(
|
||||
fallbackText: string,
|
||||
options: { readonly interrupted?: boolean; readonly footerText?: string | undefined } = {},
|
||||
options: {
|
||||
readonly interrupted?: boolean;
|
||||
readonly footerText?: string | undefined;
|
||||
readonly isError?: boolean;
|
||||
} = {},
|
||||
): Promise<void> {
|
||||
await this.flushChain;
|
||||
this.interrupted = options.interrupted === true;
|
||||
const footerText = options.footerText ?? "";
|
||||
const isError = options.isError === true;
|
||||
const fallbackWithFooter = appendFooter(fallbackText, footerText);
|
||||
try {
|
||||
let answerText =
|
||||
@@ -155,11 +160,10 @@ export class StreamingAgentCard {
|
||||
|
||||
let updated = true;
|
||||
if (answerText.length > 0 || segments.length > 0) {
|
||||
updated = await this.flushCard("complete", answerText, false, segments);
|
||||
updated = await this.flushCard("complete", answerText, isError, segments);
|
||||
} else if (this.currentMessageId !== null) {
|
||||
updated = await this.flushCard("complete", "", false, []);
|
||||
updated = await this.flushCard("complete", "", isError, []);
|
||||
}
|
||||
|
||||
if (!updated) {
|
||||
// Card path failed (e.g. residual content policy). Deliver text + standalone images.
|
||||
updated = await this.deliverPlainFallback(segments, answerText);
|
||||
|
||||
Reference in New Issue
Block a user