@agent-native/core 0.98.4 → 0.98.6
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/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +28 -0
- package/corpus/core/docs/content/durable-background-runs.mdx +37 -0
- package/corpus/core/docs/content/external-agents.mdx +62 -7
- package/corpus/core/docs/content/locales/ar-SA/external-agents.mdx +38 -7
- package/corpus/core/docs/content/locales/ar-SA/tracking.mdx +2 -0
- package/corpus/core/docs/content/locales/de-DE/external-agents.mdx +39 -7
- package/corpus/core/docs/content/locales/de-DE/tracking.mdx +2 -0
- package/corpus/core/docs/content/locales/es-ES/external-agents.mdx +39 -7
- package/corpus/core/docs/content/locales/es-ES/tracking.mdx +2 -0
- package/corpus/core/docs/content/locales/fr-FR/external-agents.mdx +39 -7
- package/corpus/core/docs/content/locales/fr-FR/tracking.mdx +4 -2
- package/corpus/core/docs/content/locales/hi-IN/external-agents.mdx +38 -7
- package/corpus/core/docs/content/locales/hi-IN/tracking.mdx +2 -0
- package/corpus/core/docs/content/locales/ja-JP/external-agents.mdx +38 -7
- package/corpus/core/docs/content/locales/ja-JP/tracking.mdx +2 -0
- package/corpus/core/docs/content/locales/ko-KR/external-agents.mdx +38 -7
- package/corpus/core/docs/content/locales/ko-KR/tracking.mdx +2 -0
- package/corpus/core/docs/content/locales/pt-BR/external-agents.mdx +39 -7
- package/corpus/core/docs/content/locales/pt-BR/tracking.mdx +2 -0
- package/corpus/core/docs/content/locales/zh-CN/external-agents.mdx +37 -7
- package/corpus/core/docs/content/locales/zh-CN/tracking.mdx +2 -0
- package/corpus/core/docs/content/locales/zh-TW/durable-background-runs.mdx +14 -0
- package/corpus/core/docs/content/locales/zh-TW/external-agents.mdx +37 -7
- package/corpus/core/docs/content/locales/zh-TW/tracking.mdx +2 -0
- package/corpus/core/docs/content/tracking.mdx +2 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/handlers.ts +95 -21
- package/corpus/core/src/a2a/task-store.ts +65 -3
- package/corpus/core/src/agent/durable-background.ts +16 -16
- package/corpus/core/src/agent/engine/ai-sdk-engine.ts +25 -8
- package/corpus/core/src/agent/engine/anthropic-engine.ts +17 -3
- package/corpus/core/src/agent/engine/output-tokens.ts +6 -6
- package/corpus/core/src/agent/production-agent.ts +200 -27
- package/corpus/core/src/agent/run-manager.ts +81 -1
- package/corpus/core/src/agent/run-store.ts +301 -41
- package/corpus/core/src/client/AgentPanel.tsx +6 -2
- package/corpus/core/src/client/AssistantChat.tsx +364 -69
- package/corpus/core/src/client/agent-chat-adapter.ts +169 -1
- package/corpus/core/src/client/chat/message-components.tsx +3 -0
- package/corpus/core/src/client/chat/tool-call-display.tsx +20 -36
- package/corpus/core/src/client/conversation/use-near-bottom-autoscroll.ts +7 -0
- package/corpus/core/src/client/extensions/AgentNativeExtensionFrame.tsx +2 -0
- package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +2 -0
- package/corpus/core/src/client/extensions/ExtensionEditor.tsx +9 -2
- package/corpus/core/src/client/extensions/ExtensionViewer.tsx +2 -0
- package/corpus/core/src/client/extensions/InlineExtensionFrame.tsx +2 -0
- package/corpus/core/src/client/extensions/portable-extension.ts +2 -0
- package/corpus/core/src/client/session-replay.ts +361 -29
- package/corpus/core/src/client/sse-event-processor.ts +43 -1
- package/corpus/core/src/demo/actions/toggle-demo-mode.ts +1 -1
- package/corpus/core/src/demo/config.ts +6 -6
- package/corpus/core/src/demo/fetch-interceptor.ts +13 -4
- package/corpus/core/src/demo/redact.ts +13 -149
- package/corpus/core/src/extensions/html-shell.ts +3 -0
- package/corpus/core/src/extensions/session-replay-iframe.ts +131 -0
- package/corpus/core/src/integrations/adapters/slack.ts +123 -13
- package/corpus/core/src/integrations/identity-links-store.ts +210 -0
- package/corpus/core/src/integrations/identity.ts +132 -0
- package/corpus/core/src/integrations/index.ts +6 -0
- package/corpus/core/src/integrations/plugin.ts +58 -1
- package/corpus/core/src/integrations/types.ts +7 -0
- package/corpus/core/src/mcp/build-server.ts +127 -22
- package/corpus/core/src/mcp/external-agent-policy.ts +18 -0
- package/corpus/core/src/mcp/index.ts +1 -0
- package/corpus/core/src/scripts/agent-engines/list-agent-engines.ts +1 -20
- package/corpus/core/src/server/agent-chat/plugin-options.ts +12 -1
- package/corpus/core/src/server/agent-chat/script-entries.ts +20 -3
- package/corpus/core/src/server/agent-chat-plugin.ts +3 -0
- package/corpus/core/src/session-replay-iframe-protocol.ts +58 -0
- package/corpus/core/src/shared/reasoning-effort.ts +35 -0
- package/corpus/core/src/styles/agent-conversation.css +26 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +34 -5
- package/corpus/core/src/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -15
- package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +30 -21
- package/corpus/templates/analytics/AGENTS.md +27 -0
- package/corpus/templates/analytics/actions/create-session-replay-agent-link.ts +0 -1
- package/corpus/templates/analytics/actions/get-error-issue.ts +1 -0
- package/corpus/templates/analytics/actions/get-session-replay-summary.ts +1 -0
- package/corpus/templates/analytics/actions/get-session-replay-timeline.ts +40 -0
- package/corpus/templates/analytics/actions/list-error-issues.ts +13 -0
- package/corpus/templates/analytics/actions/list-session-recordings.ts +1 -0
- package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +4 -0
- package/corpus/templates/analytics/app/global.css +2 -2
- package/corpus/templates/analytics/app/hooks/use-dashboard-chat-context.ts +41 -4
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +52 -203
- package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +69 -16
- package/corpus/templates/analytics/changelog/2026-07-12-analytics-chat-retries-before-showing-a-generic-no-data-mess.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-12-analytics-sessions-search-no-longer-loses-fast-keystrokes-an.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-12-chart-selection-respects-chat-state.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-12-connected-external-agents-can-now-look-up-sessions-error-iss.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-12-demo-mode-anonymizes-error-reporting-emails.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-12-session-identities-stay-visible-when-demo-mode-is-off.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-12-session-replays-show-iframe-content.md +6 -0
- package/corpus/templates/analytics/netlify.toml +0 -3
- package/corpus/templates/analytics/server/lib/analytics-connector-catalog.ts +14 -0
- package/corpus/templates/analytics/server/lib/error-capture.ts +101 -2
- package/corpus/templates/analytics/server/lib/real-data-actions.ts +24 -0
- package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +49 -17
- package/corpus/templates/analytics/server/lib/session-replay.ts +18 -16
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +43 -6
- package/corpus/templates/analytics/server/plugins/db.ts +15 -0
- package/corpus/templates/assets/app/global.css +1 -1
- package/corpus/templates/brain/app/global.css +2 -2
- package/corpus/templates/brain/changelog/2026-07-12-fix-long-response-progress.md +6 -0
- package/corpus/templates/forms/app/components/CloudUpgrade.tsx +1 -1
- package/corpus/templates/forms/app/components/ThemeToggle.tsx +22 -6
- package/corpus/templates/forms/app/components/builder/FieldPropertiesPanel.tsx +5 -5
- package/corpus/templates/forms/app/components/builder/FieldRenderer.tsx +3 -3
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +16 -16
- package/corpus/templates/forms/app/global.css +164 -13
- package/corpus/templates/forms/app/pages/AskPage.tsx +35 -13
- package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +143 -67
- package/corpus/templates/forms/app/pages/FormFillPage.tsx +44 -11
- package/corpus/templates/forms/app/pages/FormsListPage.tsx +42 -24
- package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +28 -15
- package/corpus/templates/forms/app/pages/ResponsesPage.tsx +46 -20
- package/corpus/templates/forms/app/routes/_app.settings.tsx +1 -1
- package/corpus/templates/forms/changelog/2026-07-12-ask-forms-suggestions-now-sit-beneath-the-composer-for-a-tig.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-12-builder-response-tables-now-fill-the-view-without-a-redundan.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-12-form-builder-surfaces-are-calmer-fields-stay-stable-on-hover.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-12-response-tables-now-fill-the-available-pane-with-a-flexible-.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-12-smoother-more-tactile-controls-throughout-animated-icon-and-.md +6 -0
- package/corpus/templates/mail/AGENTS.md +3 -1
- package/corpus/templates/mail/app/components/email/EmailThread.tsx +21 -13
- package/corpus/templates/mail/app/components/email/email-iframe-document.ts +18 -0
- package/corpus/templates/mail/server/lib/mail-integrations.ts +3 -0
- package/dist/a2a/handlers.d.ts.map +1 -1
- package/dist/a2a/handlers.js +84 -15
- package/dist/a2a/handlers.js.map +1 -1
- package/dist/a2a/task-store.d.ts +20 -1
- package/dist/a2a/task-store.d.ts.map +1 -1
- package/dist/a2a/task-store.js +57 -4
- package/dist/a2a/task-store.js.map +1 -1
- package/dist/agent/durable-background.d.ts +10 -10
- package/dist/agent/durable-background.d.ts.map +1 -1
- package/dist/agent/durable-background.js +16 -16
- package/dist/agent/durable-background.js.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +19 -8
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/anthropic-engine.js +11 -3
- package/dist/agent/engine/anthropic-engine.js.map +1 -1
- package/dist/agent/engine/output-tokens.js +6 -6
- package/dist/agent/engine/output-tokens.js.map +1 -1
- package/dist/agent/production-agent.d.ts +52 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +154 -26
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts +9 -0
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +71 -1
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts +9 -0
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +243 -48
- package/dist/agent/run-store.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +6 -2
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +21 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +298 -67
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +146 -1
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +2 -1
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts +3 -1
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +13 -37
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.d.ts +1 -0
- package/dist/client/conversation/use-near-bottom-autoscroll.d.ts.map +1 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.js +6 -0
- package/dist/client/conversation/use-near-bottom-autoscroll.js.map +1 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.d.ts.map +1 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.js +2 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.js.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.js +2 -1
- package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
- package/dist/client/extensions/ExtensionEditor.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionEditor.js +5 -2
- package/dist/client/extensions/ExtensionEditor.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +2 -1
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/extensions/InlineExtensionFrame.d.ts.map +1 -1
- package/dist/client/extensions/InlineExtensionFrame.js +2 -1
- package/dist/client/extensions/InlineExtensionFrame.js.map +1 -1
- package/dist/client/extensions/portable-extension.d.ts.map +1 -1
- package/dist/client/extensions/portable-extension.js +2 -0
- package/dist/client/extensions/portable-extension.js.map +1 -1
- package/dist/client/session-replay.d.ts.map +1 -1
- package/dist/client/session-replay.js +308 -29
- package/dist/client/session-replay.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts +5 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +37 -1
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/demo/actions/toggle-demo-mode.js +1 -1
- package/dist/demo/actions/toggle-demo-mode.js.map +1 -1
- package/dist/demo/config.js +6 -6
- package/dist/demo/config.js.map +1 -1
- package/dist/demo/fetch-interceptor.d.ts.map +1 -1
- package/dist/demo/fetch-interceptor.js +13 -4
- package/dist/demo/fetch-interceptor.js.map +1 -1
- package/dist/demo/redact.d.ts +7 -7
- package/dist/demo/redact.d.ts.map +1 -1
- package/dist/demo/redact.js +8 -145
- package/dist/demo/redact.js.map +1 -1
- package/dist/extensions/html-shell.d.ts.map +1 -1
- package/dist/extensions/html-shell.js +2 -0
- package/dist/extensions/html-shell.js.map +1 -1
- package/dist/extensions/session-replay-iframe.d.ts +10 -0
- package/dist/extensions/session-replay-iframe.d.ts.map +1 -0
- package/dist/extensions/session-replay-iframe.js +121 -0
- package/dist/extensions/session-replay-iframe.js.map +1 -0
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/integrations/adapters/slack.d.ts.map +1 -1
- package/dist/integrations/adapters/slack.js +98 -13
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/identity-links-store.d.ts +23 -0
- package/dist/integrations/identity-links-store.d.ts.map +1 -0
- package/dist/integrations/identity-links-store.js +158 -0
- package/dist/integrations/identity-links-store.js.map +1 -0
- package/dist/integrations/identity.d.ts +11 -0
- package/dist/integrations/identity.d.ts.map +1 -0
- package/dist/integrations/identity.js +100 -0
- package/dist/integrations/identity.js.map +1 -0
- package/dist/integrations/index.d.ts +2 -0
- package/dist/integrations/index.d.ts.map +1 -1
- package/dist/integrations/index.js +2 -0
- package/dist/integrations/index.js.map +1 -1
- package/dist/integrations/plugin.d.ts.map +1 -1
- package/dist/integrations/plugin.js +43 -1
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/integrations/types.d.ts +6 -0
- package/dist/integrations/types.d.ts.map +1 -1
- package/dist/integrations/types.js.map +1 -1
- package/dist/mcp/build-server.d.ts +9 -2
- package/dist/mcp/build-server.d.ts.map +1 -1
- package/dist/mcp/build-server.js +97 -20
- package/dist/mcp/build-server.js.map +1 -1
- package/dist/mcp/external-agent-policy.d.ts +19 -0
- package/dist/mcp/external-agent-policy.d.ts.map +1 -0
- package/dist/mcp/external-agent-policy.js +2 -0
- package/dist/mcp/external-agent-policy.js.map +1 -0
- package/dist/mcp/index.d.ts +1 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
- package/dist/scripts/agent-engines/list-agent-engines.js +1 -19
- package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
- package/dist/server/agent-chat/plugin-options.d.ts +11 -1
- package/dist/server/agent-chat/plugin-options.d.ts.map +1 -1
- package/dist/server/agent-chat/plugin-options.js.map +1 -1
- package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
- package/dist/server/agent-chat/script-entries.js +16 -2
- package/dist/server/agent-chat/script-entries.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +3 -0
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/session-replay-iframe-protocol.d.ts +36 -0
- package/dist/session-replay-iframe-protocol.d.ts.map +1 -0
- package/dist/session-replay-iframe-protocol.js +24 -0
- package/dist/session-replay-iframe-protocol.js.map +1 -0
- package/dist/shared/reasoning-effort.d.ts +11 -0
- package/dist/shared/reasoning-effort.d.ts.map +1 -1
- package/dist/shared/reasoning-effort.js +36 -0
- package/dist/shared/reasoning-effort.js.map +1 -1
- package/dist/styles/agent-conversation.css +26 -0
- package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +34 -5
- package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -15
- package/docs/content/durable-background-runs.mdx +37 -0
- package/docs/content/external-agents.mdx +62 -7
- package/docs/content/locales/ar-SA/external-agents.mdx +38 -7
- package/docs/content/locales/ar-SA/tracking.mdx +2 -0
- package/docs/content/locales/de-DE/external-agents.mdx +39 -7
- package/docs/content/locales/de-DE/tracking.mdx +2 -0
- package/docs/content/locales/es-ES/external-agents.mdx +39 -7
- package/docs/content/locales/es-ES/tracking.mdx +2 -0
- package/docs/content/locales/fr-FR/external-agents.mdx +39 -7
- package/docs/content/locales/fr-FR/tracking.mdx +4 -2
- package/docs/content/locales/hi-IN/external-agents.mdx +38 -7
- package/docs/content/locales/hi-IN/tracking.mdx +2 -0
- package/docs/content/locales/ja-JP/external-agents.mdx +38 -7
- package/docs/content/locales/ja-JP/tracking.mdx +2 -0
- package/docs/content/locales/ko-KR/external-agents.mdx +38 -7
- package/docs/content/locales/ko-KR/tracking.mdx +2 -0
- package/docs/content/locales/pt-BR/external-agents.mdx +39 -7
- package/docs/content/locales/pt-BR/tracking.mdx +2 -0
- package/docs/content/locales/zh-CN/external-agents.mdx +37 -7
- package/docs/content/locales/zh-CN/tracking.mdx +2 -0
- package/docs/content/locales/zh-TW/durable-background-runs.mdx +14 -0
- package/docs/content/locales/zh-TW/external-agents.mdx +37 -7
- package/docs/content/locales/zh-TW/tracking.mdx +2 -0
- package/docs/content/tracking.mdx +2 -0
- package/package.json +2 -2
- package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +34 -5
- package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -15
- package/corpus/core/src/observability/hosted-model-experiment.ts +0 -118
- package/dist/observability/hosted-model-experiment.d.ts +0 -39
- package/dist/observability/hosted-model-experiment.d.ts.map +0 -1
- package/dist/observability/hosted-model-experiment.js +0 -90
- package/dist/observability/hosted-model-experiment.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-chat-adapter.d.ts","sourceRoot":"","sources":["../../src/client/agent-chat-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,qBAAqB,CAAC;AAWhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAmBrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,MAAM,oBAAoB;AAC9B;;;;GAIG;AACD,KAAK;AACP,0EAA0E;GACxE,WAAW;AACb,wEAAwE;GACtE,SAAS,CAAC;AAwId,eAAO,MAAM,iCAAiC,SAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-chat-adapter.d.ts","sourceRoot":"","sources":["../../src/client/agent-chat-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,qBAAqB,CAAC;AAWhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAmBrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,MAAM,oBAAoB;AAC9B;;;;GAIG;AACD,KAAK;AACP,0EAA0E;GACxE,WAAW;AACb,wEAAwE;GACtE,SAAS,CAAC;AAwId,eAAO,MAAM,iCAAiC,SAAU,CAAC;AAmrCzD;;;;GAIG;AACH;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC3C,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC5C,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,eAAe,GAAG,SAAS,CAAA;KAAE,CAAC;IACrD,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAC;IAC3D,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAyED,wBAAgB,sBAAsB,CACpC,OAAO,CAAC,EAAE,6BAA6B,GACtC,gBAAgB,CA+pElB"}
|
|
@@ -118,6 +118,15 @@ const BACKGROUND_FOLLOW_POLL_INTERVAL_MS = 1_000;
|
|
|
118
118
|
// agent-chat-plugin.ts) instead, and keep this comment's inequality chain
|
|
119
119
|
// accurate if any of the four numbers change.
|
|
120
120
|
export const BACKGROUND_FOLLOW_IDLE_TIMEOUT_MS = 150_000;
|
|
121
|
+
// A re-observed terminal run whose outcome would be an ERROR (never a
|
|
122
|
+
// genuine "done" success) gets a short extra grace window before the follow
|
|
123
|
+
// loop surfaces it: the server's dead-run recovery can reap a lost
|
|
124
|
+
// background run and insert a claimable successor a beat after the client
|
|
125
|
+
// first sees the stale terminal row. Deliberately much shorter than
|
|
126
|
+
// BACKGROUND_FOLLOW_IDLE_TIMEOUT_MS — this exists to absorb that narrow
|
|
127
|
+
// insert-latency race, not to mask a genuinely lost run behind a long hang
|
|
128
|
+
// before the user sees an error.
|
|
129
|
+
const BACKGROUND_TERMINAL_ERROR_GRACE_POLLS = 5;
|
|
121
130
|
/**
|
|
122
131
|
* User-facing copy for the server's background terminal reasons
|
|
123
132
|
* (`agent_runs.terminal_reason`, surfaced by /runs/active). These runs died in
|
|
@@ -135,6 +144,46 @@ const BACKGROUND_TERMINAL_REASON_MESSAGES = {
|
|
|
135
144
|
missing_credentials: LLM_MISSING_CREDENTIALS_MESSAGE,
|
|
136
145
|
turn_continuation_budget_exhausted: "This request needed more automatic continuations than allowed and was stopped. Try breaking it into smaller steps.",
|
|
137
146
|
};
|
|
147
|
+
/**
|
|
148
|
+
* `agent_runs.terminal_reason` values that mark a CHUNK boundary, not the end
|
|
149
|
+
* of the turn — `markBackgroundContinuationChunkTerminal` (production-agent.ts)
|
|
150
|
+
* writes status "completed" with one of these bare reasons whenever a
|
|
151
|
+
* background chunk ends at a continuation boundary (mirrors
|
|
152
|
+
* `AgentLoopContinuationReason` there). A run in this state is expected to be
|
|
153
|
+
* replaced by a server-chained successor row; it must never be read as "the
|
|
154
|
+
* turn is done" just because its own row says `status: "completed"`.
|
|
155
|
+
*/
|
|
156
|
+
const BACKGROUND_CONTINUATION_TERMINAL_REASONS = new Set([
|
|
157
|
+
"run_timeout",
|
|
158
|
+
"loop_limit",
|
|
159
|
+
"max_tokens",
|
|
160
|
+
"stream_ended",
|
|
161
|
+
"gateway_timeout",
|
|
162
|
+
"network_interrupted",
|
|
163
|
+
"no_progress",
|
|
164
|
+
]);
|
|
165
|
+
/**
|
|
166
|
+
* True when the given `/runs/active` snapshot, if surfaced as a background
|
|
167
|
+
* terminal outcome right now, would render as an error rather than a
|
|
168
|
+
* successful completion. Mirrors `emitBackgroundTerminalOutcome`'s own
|
|
169
|
+
* mappedMessage/hasErrorTerminalReason/status branching (kept in sync with
|
|
170
|
+
* it) so callers can decide whether an error-surfacing grace window applies
|
|
171
|
+
* BEFORE actually emitting anything.
|
|
172
|
+
*/
|
|
173
|
+
function isBackgroundTerminalErrorOutcome(lastKnown) {
|
|
174
|
+
const status = typeof lastKnown?.status === "string" ? lastKnown.status : "";
|
|
175
|
+
const rawTerminalReason = typeof lastKnown?.terminalReason === "string"
|
|
176
|
+
? lastKnown.terminalReason
|
|
177
|
+
: "";
|
|
178
|
+
const hasErrorTerminalReason = rawTerminalReason.startsWith("error:");
|
|
179
|
+
const terminalReason = rawTerminalReason.replace(/^error:/, "");
|
|
180
|
+
const mappedMessage = terminalReason
|
|
181
|
+
? BACKGROUND_TERMINAL_REASON_MESSAGES[terminalReason]
|
|
182
|
+
: undefined;
|
|
183
|
+
if (mappedMessage || hasErrorTerminalReason)
|
|
184
|
+
return true;
|
|
185
|
+
return status !== "completed";
|
|
186
|
+
}
|
|
138
187
|
function normalizeMentions(text) {
|
|
139
188
|
return text.replace(/@\[([^\]|]+)\|[^\]]+\]/g, "@$1");
|
|
140
189
|
}
|
|
@@ -1918,6 +1967,44 @@ export function createAgentChatAdapter(options) {
|
|
|
1918
1967
|
}
|
|
1919
1968
|
};
|
|
1920
1969
|
dispatchResumingUiEvent();
|
|
1970
|
+
// Before surfacing a background terminal ERROR (never called for a
|
|
1971
|
+
// genuine "done" success — see call site), give the server's
|
|
1972
|
+
// reap-and-recover path a short extra window to insert a claimable
|
|
1973
|
+
// successor row for this turn. Returns as soon as `/runs/active`
|
|
1974
|
+
// reports a DIFFERENT runId than the stale one, so the caller can
|
|
1975
|
+
// hand back to the main loop and follow it seamlessly instead of
|
|
1976
|
+
// erroring out from under it.
|
|
1977
|
+
const awaitBackgroundErrorRecoverySuccessor = async (staleRunId) => {
|
|
1978
|
+
for (let attempt = 0; attempt < BACKGROUND_TERMINAL_ERROR_GRACE_POLLS; attempt++) {
|
|
1979
|
+
if (abortSignal.aborted)
|
|
1980
|
+
return "aborted";
|
|
1981
|
+
dispatchResumingUiEvent();
|
|
1982
|
+
await delay(BACKGROUND_FOLLOW_POLL_INTERVAL_MS, abortSignal);
|
|
1983
|
+
if (abortSignal.aborted)
|
|
1984
|
+
return "aborted";
|
|
1985
|
+
let recheck = null;
|
|
1986
|
+
try {
|
|
1987
|
+
const activeRes = await fetch(`${apiUrl}/runs/active?threadId=${encodeURIComponent(threadId)}`, { signal: abortSignal });
|
|
1988
|
+
if (activeRes.ok) {
|
|
1989
|
+
recheck = await activeRes.json().catch(() => null);
|
|
1990
|
+
}
|
|
1991
|
+
}
|
|
1992
|
+
catch (pollErr) {
|
|
1993
|
+
if (pollErr instanceof Error && pollErr.name === "AbortError") {
|
|
1994
|
+
return "aborted";
|
|
1995
|
+
}
|
|
1996
|
+
// Transient poll failure — this attempt counts as "no
|
|
1997
|
+
// successor yet", not a hard failure of the grace window.
|
|
1998
|
+
}
|
|
1999
|
+
const recheckRunId = recheck?.active === true && recheck.runId
|
|
2000
|
+
? String(recheck.runId)
|
|
2001
|
+
: null;
|
|
2002
|
+
if (recheckRunId && recheckRunId !== staleRunId) {
|
|
2003
|
+
return "successor";
|
|
2004
|
+
}
|
|
2005
|
+
}
|
|
2006
|
+
return "timeout";
|
|
2007
|
+
};
|
|
1921
2008
|
let idleSince = null;
|
|
1922
2009
|
let lastSeenActive = null;
|
|
1923
2010
|
// Terminal runs already replayed once. A recoverable terminal error
|
|
@@ -1925,7 +2012,10 @@ export function createAgentChatAdapter(options) {
|
|
|
1925
2012
|
// which used to re-drive a POST in foreground mode. In follow mode
|
|
1926
2013
|
// the server owns recovery, so a SECOND visit to the same terminal
|
|
1927
2014
|
// run means the turn is over — surface the outcome instead of
|
|
1928
|
-
// re-replaying it every poll for the whole reconnect window.
|
|
2015
|
+
// re-replaying it every poll for the whole reconnect window. (A
|
|
2016
|
+
// CONTINUATION-class terminal_reason is the one exception: see the
|
|
2017
|
+
// isContinuationChunkBoundary check below, which keeps polling
|
|
2018
|
+
// instead of surfacing anything.)
|
|
1929
2019
|
const replayedTerminalRunIds = new Set();
|
|
1930
2020
|
while (true) {
|
|
1931
2021
|
if (abortSignal.aborted) {
|
|
@@ -1975,6 +2065,54 @@ export function createAgentChatAdapter(options) {
|
|
|
1975
2065
|
return "client_continue";
|
|
1976
2066
|
}
|
|
1977
2067
|
}
|
|
2068
|
+
const rawTerminalReason = typeof active?.terminalReason === "string"
|
|
2069
|
+
? active.terminalReason
|
|
2070
|
+
: "";
|
|
2071
|
+
const bareTerminalReason = rawTerminalReason.replace(/^error:/, "");
|
|
2072
|
+
// A re-observed "completed" row with a CONTINUATION-class
|
|
2073
|
+
// reason (run_timeout/no_progress/loop_limit/…) is a MID-TURN
|
|
2074
|
+
// chunk boundary, not the end of the turn — a warm instance
|
|
2075
|
+
// can keep serving this stale row for a beat before the
|
|
2076
|
+
// pre-inserted successor becomes visible. Emitting a terminal
|
|
2077
|
+
// outcome here is exactly the bug this branch exists to
|
|
2078
|
+
// avoid: it would flip the message to "done" while the
|
|
2079
|
+
// successor's content is still coming. Keep polling on the
|
|
2080
|
+
// shared idle budget instead; a truly stuck handoff still
|
|
2081
|
+
// fails loud (never a silent stop) once it expires.
|
|
2082
|
+
const isContinuationChunkBoundary = activeStatus === "completed" &&
|
|
2083
|
+
!rawTerminalReason.startsWith("error:") &&
|
|
2084
|
+
!BACKGROUND_TERMINAL_REASON_MESSAGES[bareTerminalReason] &&
|
|
2085
|
+
BACKGROUND_CONTINUATION_TERMINAL_REASONS.has(bareTerminalReason);
|
|
2086
|
+
if (isContinuationChunkBoundary) {
|
|
2087
|
+
if (idleSince === null)
|
|
2088
|
+
idleSince = Date.now();
|
|
2089
|
+
if (Date.now() - idleSince >=
|
|
2090
|
+
BACKGROUND_FOLLOW_IDLE_TIMEOUT_MS) {
|
|
2091
|
+
yield* emitBackgroundTerminalError({
|
|
2092
|
+
message: "The agent's background run stopped between chunks and no continuation appeared. You can retry from the preserved chat context.",
|
|
2093
|
+
errorCode: "background_run_lost",
|
|
2094
|
+
details: `terminal_reason: ${rawTerminalReason}`,
|
|
2095
|
+
});
|
|
2096
|
+
return "completed";
|
|
2097
|
+
}
|
|
2098
|
+
dispatchResumingUiEvent();
|
|
2099
|
+
await delay(BACKGROUND_FOLLOW_POLL_INTERVAL_MS, abortSignal);
|
|
2100
|
+
continue;
|
|
2101
|
+
}
|
|
2102
|
+
if (isBackgroundTerminalErrorOutcome(active)) {
|
|
2103
|
+
const graceOutcome = await awaitBackgroundErrorRecoverySuccessor(activeRunId);
|
|
2104
|
+
if (graceOutcome === "aborted") {
|
|
2105
|
+
clearActiveRun();
|
|
2106
|
+
return "completed";
|
|
2107
|
+
}
|
|
2108
|
+
if (graceOutcome === "successor") {
|
|
2109
|
+
// A successor claimed the turn while we waited — hand
|
|
2110
|
+
// back to the top of the loop so it attaches and follows
|
|
2111
|
+
// it exactly like any other newly-discovered run instead
|
|
2112
|
+
// of duplicating that bookkeeping here.
|
|
2113
|
+
continue;
|
|
2114
|
+
}
|
|
2115
|
+
}
|
|
1978
2116
|
yield* emitBackgroundTerminalOutcome(active);
|
|
1979
2117
|
return "completed";
|
|
1980
2118
|
}
|
|
@@ -2031,6 +2169,13 @@ export function createAgentChatAdapter(options) {
|
|
|
2031
2169
|
dispatchResumingUiEvent();
|
|
2032
2170
|
}
|
|
2033
2171
|
else {
|
|
2172
|
+
// No active run visible for this turn yet (the gap between a
|
|
2173
|
+
// chunk ending and the successor becoming pollable). Refresh
|
|
2174
|
+
// the "Resuming…" bridge on every tick here too — not just
|
|
2175
|
+
// when an active run IS visible — so the client's own
|
|
2176
|
+
// isAutoResuming window can't lapse into a false-idle UI while
|
|
2177
|
+
// this loop is still confidently waiting out its own budget.
|
|
2178
|
+
dispatchResumingUiEvent();
|
|
2034
2179
|
if (idleSince === null)
|
|
2035
2180
|
idleSince = Date.now();
|
|
2036
2181
|
if (Date.now() - idleSince >= BACKGROUND_FOLLOW_IDLE_TIMEOUT_MS) {
|