@agent-native/core 0.23.0 → 0.24.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.
Files changed (58) hide show
  1. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  2. package/dist/agent/engine/builder-engine.js +5 -6
  3. package/dist/agent/engine/builder-engine.js.map +1 -1
  4. package/dist/agent/run-manager.d.ts +9 -2
  5. package/dist/agent/run-manager.d.ts.map +1 -1
  6. package/dist/agent/run-manager.js +9 -2
  7. package/dist/agent/run-manager.js.map +1 -1
  8. package/dist/cli/workspace-dev.d.ts.map +1 -1
  9. package/dist/cli/workspace-dev.js +101 -9
  10. package/dist/cli/workspace-dev.js.map +1 -1
  11. package/dist/client/AssistantChat.d.ts +4 -0
  12. package/dist/client/AssistantChat.d.ts.map +1 -1
  13. package/dist/client/AssistantChat.js +51 -15
  14. package/dist/client/AssistantChat.js.map +1 -1
  15. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  16. package/dist/client/MultiTabAssistantChat.js +2 -1
  17. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  18. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  19. package/dist/client/agent-chat-adapter.js +70 -10
  20. package/dist/client/agent-chat-adapter.js.map +1 -1
  21. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  22. package/dist/client/extensions/ExtensionViewer.js +157 -2
  23. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  24. package/dist/client/sse-event-processor.d.ts +6 -0
  25. package/dist/client/sse-event-processor.d.ts.map +1 -1
  26. package/dist/client/sse-event-processor.js +9 -2
  27. package/dist/client/sse-event-processor.js.map +1 -1
  28. package/dist/client/use-chat-threads.d.ts +3 -0
  29. package/dist/client/use-chat-threads.d.ts.map +1 -1
  30. package/dist/client/use-chat-threads.js +23 -4
  31. package/dist/client/use-chat-threads.js.map +1 -1
  32. package/dist/client/use-chat-threads.spec.js +59 -0
  33. package/dist/client/use-chat-threads.spec.js.map +1 -1
  34. package/dist/extensions/actions.d.ts.map +1 -1
  35. package/dist/extensions/actions.js +112 -2
  36. package/dist/extensions/actions.js.map +1 -1
  37. package/dist/extensions/routes.d.ts.map +1 -1
  38. package/dist/extensions/routes.js +37 -2
  39. package/dist/extensions/routes.js.map +1 -1
  40. package/dist/extensions/schema.d.ts +275 -0
  41. package/dist/extensions/schema.d.ts.map +1 -1
  42. package/dist/extensions/schema.js +53 -1
  43. package/dist/extensions/schema.js.map +1 -1
  44. package/dist/extensions/store.d.ts +40 -0
  45. package/dist/extensions/store.d.ts.map +1 -1
  46. package/dist/extensions/store.js +367 -3
  47. package/dist/extensions/store.js.map +1 -1
  48. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  49. package/dist/server/agent-chat-plugin.js +4 -0
  50. package/dist/server/agent-chat-plugin.js.map +1 -1
  51. package/dist/server/auth.d.ts.map +1 -1
  52. package/dist/server/auth.js +6 -2
  53. package/dist/server/auth.js.map +1 -1
  54. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  55. package/dist/server/core-routes-plugin.js +9 -13
  56. package/dist/server/core-routes-plugin.js.map +1 -1
  57. package/docs/content/extensions.md +5 -0
  58. package/package.json +1 -1
@@ -5,6 +5,7 @@ import { type AgentDynamicSuggestionsOption } from "./dynamic-suggestions.js";
5
5
  import type { ReasoningEffort } from "../shared/reasoning-effort.js";
6
6
  import type { ChatThreadScope, ChatThreadSnapshot } from "./use-chat-threads.js";
7
7
  import type { AgentComposerLayoutVariant } from "./composer/types.js";
8
+ export type AgentRecoveryAction = "continue" | "retry";
8
9
  export declare function displayableUserMessageText(text: string): string;
9
10
  export declare function isAssistantUiStaleIndexError(error: unknown): boolean;
10
11
  type AssistantUiStaleIndexErrorBoundaryProps = {
@@ -29,9 +30,12 @@ export declare function AssistantMessageListErrorBoundary({ resetKey, children,
29
30
  resetKey: string;
30
31
  children: React.ReactNode;
31
32
  }): import("react/jsx-runtime").JSX.Element;
33
+ export declare function latestNonRecoveryUserMessageText(messages: readonly unknown[]): string;
32
34
  export interface AssistantChatHandle {
33
35
  /** Programmatically send a message into this chat */
34
36
  sendMessage(text: string, images?: string[]): void;
37
+ /** Programmatically send a recovery prompt without replacing the original request. */
38
+ sendRecoveryMessage(text: string, recoveryAction: AgentRecoveryAction, images?: string[]): void;
35
39
  /** Queue a message to send after the current run finishes */
36
40
  queueMessage(text: string, images?: string[]): void;
37
41
  /** Whether the chat is currently running */
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EAEV,gBAAgB,EAEhB,yBAAyB,EAI1B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AA4C/B,OAAO,KAAK,EACV,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAmuD7B,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpE;AAED,KAAK,uCAAuC,GAAG;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,KAAK,uCAAuC,GAAG;IAC7C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBAAa,kCAAmC,SAAQ,KAAK,CAAC,SAAS,CACrE,uCAAuC,EACvC,uCAAuC,CACxC;IACC,KAAK,EAAE,uCAAuC,CAG5C;IAEF,OAAO,CAAC,UAAU,CAA8C;IAEhE,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,uCAAuC,CAAC;IAMnD,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS;IA0BvD,kBAAkB,CAAC,SAAS,EAAE,uCAAuC;IAarE,oBAAoB;IAMpB,MAAM;CAcP;AAED,wBAAgB,iCAAiC,CAAC,EAChD,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CASA;AAutCD,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACnD,6DAA6D;IAC7D,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpD,4CAA4C;IAC5C,SAAS,IAAI,OAAO,CAAC;IACrB,+BAA+B;IAC/B,aAAa,IAAI,IAAI,CAAC;IACtB,gFAAgF;IAChF,oBAAoB,IAAI,kBAAkB,GAAG,IAAI,CAAC;CACnD;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC1C,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC3C,SAAS,EAAE;QAAE,OAAO,EAAE,eAAe,GAAG,SAAS,CAAA;KAAE,CAAC;IACpD,WAAW,EAAE;QAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QAAE,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAC;IAC1D,OAAO,EAAE,oBAAoB,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wGAAwG;IACxG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACtC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,6BAA6B,CAAC;IACnD;;4EAEwE;IACxE,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,0CAA0C;IAC1C,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,8EAA8E;IAC9E,YAAY,CAAC,EAAE,CACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB,KACE,IAAI,CAAC;IACV,+DAA+D;IAC/D,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,8DAA8D;IAC9D,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,+EAA+E;IAC/E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oDAAoD;IACpD,qBAAqB,CAAC,EAAE,0BAA0B,CAAC;IACnD,2EAA2E;IAC3E,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mFAAmF;IACnF,iBAAiB,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACzC,qFAAqF;IACrF,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACtC,+DAA+D;IAC/D,yBAAyB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC5C,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8EAA8E;IAC9E,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,+FAA+F;IAC/F,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mEAAmE;IACnE,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,wCAAwC;IACxC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;IACpD,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0DAA0D;IAC1D,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,uDAAuD;IACvD,eAAe,CAAC,EAAE,KAAK,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC,CAAC;IACH,uDAAuD;IACvD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,kEAAkE;IAClE,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC;IAC5D,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;IACjD;;;OAGG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,gBAAgB,CAAC;IAC3E;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IACxE,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAEjD,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,QAI9C;AAqCD,OAAO,EACL,iBAAiB,EAElB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAywD7B,eAAO,MAAM,aAAa,gGAuFxB,CAAC"}
1
+ {"version":3,"file":"AssistantChat.d.ts","sourceRoot":"","sources":["../../src/client/AssistantChat.tsx"],"names":[],"mappings":"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"}
@@ -179,7 +179,7 @@ function createAgentImageAttachments(images) {
179
179
  };
180
180
  });
181
181
  }
182
- function createUserMessageRunConfig(references, requestMode) {
182
+ function createUserMessageRunConfig(references, requestMode, recoveryAction) {
183
183
  const custom = {};
184
184
  if (references && references.length > 0) {
185
185
  custom.references = references;
@@ -187,7 +187,16 @@ function createUserMessageRunConfig(references, requestMode) {
187
187
  if (requestMode) {
188
188
  custom.requestMode = requestMode;
189
189
  }
190
- return Object.keys(custom).length > 0 ? { runConfig: { custom } } : {};
190
+ const options = {};
191
+ if (Object.keys(custom).length > 0) {
192
+ options.runConfig = { custom };
193
+ }
194
+ if (recoveryAction) {
195
+ options.metadata = {
196
+ custom: { agentNativeRecoveryAction: recoveryAction },
197
+ };
198
+ }
199
+ return options;
191
200
  }
192
201
  function escapeQueuedAttachmentAttribute(value) {
193
202
  return value.replace(/&/g, "&").replace(/"/g, """);
@@ -1570,6 +1579,35 @@ function getMessageText(message) {
1570
1579
  }
1571
1580
  return typeof content === "string" ? content.trim() : "";
1572
1581
  }
1582
+ const RECOVERY_USER_MESSAGE_PREFIXES = [
1583
+ "Continue from where you left off",
1584
+ "Continue from where you stopped",
1585
+ "Retry the previous request from a clean approach",
1586
+ ];
1587
+ function getRecoveryActionMetadata(message) {
1588
+ const meta = message?.metadata;
1589
+ const action = meta?.custom?.agentNativeRecoveryAction;
1590
+ return action === "continue" || action === "retry" ? action : null;
1591
+ }
1592
+ function isRecoveryUserMessage(message) {
1593
+ if (getRecoveryActionMetadata(message))
1594
+ return true;
1595
+ const text = getMessageText(message);
1596
+ return RECOVERY_USER_MESSAGE_PREFIXES.some((prefix) => text.startsWith(prefix));
1597
+ }
1598
+ export function latestNonRecoveryUserMessageText(messages) {
1599
+ for (let i = messages.length - 1; i >= 0; i--) {
1600
+ const message = messages[i];
1601
+ if (message?.role !== "user")
1602
+ continue;
1603
+ if (isRecoveryUserMessage(message))
1604
+ continue;
1605
+ const text = getMessageText(message);
1606
+ if (text)
1607
+ return text;
1608
+ }
1609
+ return "";
1610
+ }
1573
1611
  function RunErrorRecoveryCard({ info, onContinue, onRetry, onFork, onDismiss, }) {
1574
1612
  const [detailsOpen, setDetailsOpen] = useState(false);
1575
1613
  const [copied, setCopied] = useState(false);
@@ -2646,7 +2684,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
2646
2684
  ...(messageAttachments.length > 0
2647
2685
  ? { attachments: messageAttachments }
2648
2686
  : {}),
2649
- ...createUserMessageRunConfig(next.references, next.requestMode),
2687
+ ...createUserMessageRunConfig(next.references, next.requestMode, next.recoveryAction),
2650
2688
  });
2651
2689
  })();
2652
2690
  }, 100);
@@ -2742,7 +2780,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
2742
2780
  threadId,
2743
2781
  threadRuntime,
2744
2782
  ]);
2745
- const addToQueue = useCallback(async (text, images, references, attachments, requestMode, intent = "queued") => {
2783
+ const addToQueue = useCallback(async (text, images, references, attachments, requestMode, intent = "queued", recoveryAction) => {
2746
2784
  materializeFrozenReconnectContent();
2747
2785
  setShowContinue(false);
2748
2786
  setLoopLimitInfo(null);
@@ -2788,6 +2826,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
2788
2826
  attachments: messageAttachments.length > 0 ? messageAttachments : undefined,
2789
2827
  references,
2790
2828
  requestMode: effectiveRequestMode,
2829
+ recoveryAction,
2791
2830
  },
2792
2831
  ]);
2793
2832
  }
@@ -2798,7 +2837,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
2798
2837
  ...(messageAttachments.length > 0
2799
2838
  ? { attachments: messageAttachments }
2800
2839
  : {}),
2801
- ...createUserMessageRunConfig(references, effectiveRequestMode),
2840
+ ...createUserMessageRunConfig(references, effectiveRequestMode, recoveryAction),
2802
2841
  });
2803
2842
  }
2804
2843
  }, [execMode, isRunning, materializeFrozenReconnectContent, threadRuntime]);
@@ -2807,6 +2846,9 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
2807
2846
  sendMessage(text, images) {
2808
2847
  addToQueue(text, images);
2809
2848
  },
2849
+ sendRecoveryMessage(text, recoveryAction, images) {
2850
+ addToQueue(text, images, undefined, undefined, undefined, "queued", recoveryAction);
2851
+ },
2810
2852
  queueMessage(text, images) {
2811
2853
  addToQueue(text, images);
2812
2854
  },
@@ -2884,13 +2926,7 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
2884
2926
  return null;
2885
2927
  return getRunErrorMetadata(last);
2886
2928
  }, [messages]);
2887
- const lastUserText = useMemo(() => {
2888
- for (let i = messages.length - 1; i >= 0; i--) {
2889
- if (messages[i]?.role === "user")
2890
- return getMessageText(messages[i]);
2891
- }
2892
- return "";
2893
- }, [messages]);
2929
+ const lastUserText = useMemo(() => latestNonRecoveryUserMessageText(messages), [messages]);
2894
2930
  const latestMessage = messages[messages.length - 1];
2895
2931
  const latestMessageRole = latestMessage?.role;
2896
2932
  const latestAssistantWasPlan = latestMessageRole === "assistant" &&
@@ -2967,15 +3003,15 @@ const AssistantChatInner = forwardRef(function AssistantChatInner({ emptyStateTe
2967
3003
  } }) }), missingApiKey && (_jsx(BuilderSetupCard, { onConnected: handleBuilderConnected, bouncePulse: missingKeyBouncePulse })), visibleLoopLimit && !showRunningInUI && (_jsx(LoopLimitContinueCard, { info: visibleLoopLimit, onContinue: () => {
2968
3004
  setShowContinue(false);
2969
3005
  setLoopLimitInfo(null);
2970
- addToQueue("Continue from where you left off.");
3006
+ addToQueue("Continue from where you left off.", undefined, undefined, undefined, undefined, "queued", "continue");
2971
3007
  } })), shouldShowRunError && visibleRunError && (_jsx(RunErrorRecoveryCard, { info: visibleRunError, onContinue: () => {
2972
3008
  setRunErrorInfo(null);
2973
- addToQueue("Continue from where you stopped. Use the partial work above, verify what succeeded, and finish the original request. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. Prefer dedicated app actions over raw database edits when they exist.");
3009
+ addToQueue("Continue from where you stopped. Use the partial work above, verify what succeeded, and finish the original request. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. Prefer dedicated app actions over raw database edits when they exist.", undefined, undefined, undefined, undefined, "queued", "continue");
2974
3010
  }, onRetry: () => {
2975
3011
  setRunErrorInfo(null);
2976
3012
  addToQueue(lastUserText
2977
3013
  ? `Retry the previous request from a clean approach. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. If a provider query failed because of schema, syntax, or type mismatch, diagnose the error and adjust the query first.\n\nOriginal request:\n\n${lastUserText}`
2978
- : "Retry the previous request from a clean approach. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. If a provider query failed because of schema, syntax, or type mismatch, diagnose the error and adjust the query first.");
3014
+ : "Retry the previous request from a clean approach. Do not rerun the exact same failed tool input unless the failure was transient or the user explicitly asked for an exact rerun. If a provider query failed because of schema, syntax, or type mismatch, diagnose the error and adjust the query first.", undefined, undefined, undefined, undefined, "queued", "retry");
2979
3015
  }, onFork: onForkChat, onDismiss: () => {
2980
3016
  if (visibleRunErrorKey) {
2981
3017
  setDismissedRunErrorKey(visibleRunErrorKey);