@agent-native/core 0.131.4 → 0.131.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 +3 -3
- package/corpus/core/CHANGELOG.md +69 -0
- package/corpus/core/docs/content/agent-native-toolkit.mdx +13 -6
- package/corpus/core/docs/content/cloneable-saas.mdx +5 -5
- package/corpus/core/docs/content/creating-templates.mdx +9 -0
- package/corpus/core/docs/content/deployment.mdx +14 -10
- package/corpus/core/docs/content/docs-components.mdx +491 -0
- package/corpus/core/docs/content/doctor.mdx +8 -1
- package/corpus/core/docs/content/drop-in-agent.mdx +1 -1
- package/corpus/core/docs/content/extensions.mdx +18 -18
- package/corpus/core/docs/content/faq.mdx +4 -4
- package/corpus/core/docs/content/key-concepts.mdx +30 -21
- package/corpus/core/docs/content/template-brain-developers.mdx +4 -1
- package/corpus/core/docs/content/template-mail-developers.mdx +4 -1
- package/corpus/core/docs/content/what-is-agent-native.mdx +6 -6
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/client.ts +449 -66
- package/corpus/core/src/a2a/correlation.ts +31 -0
- package/corpus/core/src/a2a/types.ts +4 -0
- package/corpus/core/src/action.ts +3 -0
- package/corpus/core/src/agent/engine/registry.ts +45 -5
- package/corpus/core/src/agent/production-agent.ts +151 -18
- package/corpus/core/src/agent/run-loop-with-resume.ts +190 -3
- package/corpus/core/src/agent/run-manager.ts +117 -41
- package/corpus/core/src/agent/thread-debug-history.ts +86 -0
- package/corpus/core/src/agent/types.ts +3 -1
- package/corpus/core/src/cli/create.ts +11 -1
- package/corpus/core/src/cli/templates-meta.ts +2 -2
- package/corpus/core/src/client/agent-chat-adapter.ts +91 -13
- package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +11 -9
- package/corpus/core/src/client/sse-event-processor.ts +17 -3
- package/corpus/core/src/db/client.ts +57 -17
- package/corpus/core/src/integrations/adapters/slack.ts +8 -3
- package/corpus/core/src/localization/default-messages.ts +44 -0
- package/corpus/core/src/observability/traces.ts +78 -5
- package/corpus/core/src/scripts/call-agent.ts +290 -9
- package/corpus/core/src/scripts/describe-workspace-apps.ts +2 -2
- package/corpus/core/src/secrets/crypto.ts +126 -34
- package/corpus/core/src/secrets/storage.ts +61 -25
- package/corpus/core/src/server/agent-capabilities.ts +1 -1
- package/corpus/core/src/server/agent-chat/action-filters-a2a.ts +111 -7
- package/corpus/core/src/server/agent-chat/context-tools.ts +2 -0
- package/corpus/core/src/server/agent-chat/plugin-options.ts +34 -1
- package/corpus/core/src/server/agent-chat/prompt-resources.ts +1 -1
- package/corpus/core/src/server/agent-chat-plugin.ts +91 -59
- package/corpus/core/src/templates/default/.agents/skills/secrets/SKILL.md +14 -7
- package/corpus/core/src/templates/headless/.agents/skills/secrets/SKILL.md +14 -7
- package/corpus/core/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +18 -7
- package/corpus/core/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +15 -14
- package/corpus/core/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +14 -7
- package/corpus/core/src/vite/client.ts +1 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-ops/SKILL.md +5 -4
- package/corpus/templates/analytics/.agents/skills/gong/SKILL.md +6 -4
- package/corpus/templates/analytics/AGENTS.md +6 -4
- package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +4 -3
- package/corpus/templates/analytics/changelog/2026-07-30-scheduled-dashboard-emails-complete-every-panel-without-pool.md +6 -0
- package/corpus/templates/analytics/scripts/emit-netlify-dashboard-report-cron.ts +28 -1
- package/corpus/templates/analytics/server/jobs/dashboard-report.ts +18 -11
- package/corpus/templates/analytics/server/lib/analytics-connector-catalog.ts +4 -4
- package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +9 -5
- package/corpus/templates/analytics/server/lib/dashboard-panel-query.ts +6 -2
- package/corpus/templates/analytics/server/lib/dashboard-panel-source-resolver.ts +11 -4
- package/corpus/templates/analytics/server/lib/dashboard-report-render.ts +49 -31
- package/corpus/templates/analytics/server/lib/first-party-analytics.ts +16 -8
- package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +9 -3
- package/corpus/templates/analytics/server/lib/production-serverless-runtime.ts +11 -0
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +3 -2
- package/corpus/templates/analytics/server/plugins/analytics-alert-jobs.ts +2 -1
- package/corpus/templates/analytics/server/plugins/dashboard-report-jobs.ts +2 -1
- package/corpus/templates/analytics/server/plugins/uptime-monitor-jobs.ts +1 -12
- package/corpus/templates/brain/.agents/skills/brain/RUNBOOK.md +54 -6
- package/corpus/templates/brain/.agents/skills/brain/SKILL.md +20 -9
- package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +33 -1
- package/corpus/templates/brain/AGENTS.md +3 -1
- package/corpus/templates/brain/README.md +4 -1
- package/corpus/templates/brain/actions/_schemas.ts +30 -8
- package/corpus/templates/brain/actions/ask-brain.ts +124 -14
- package/corpus/templates/brain/actions/create-source.ts +18 -2
- package/corpus/templates/brain/actions/enqueue-captures-distillation.ts +8 -123
- package/corpus/templates/brain/actions/enqueue-distillation.ts +6 -127
- package/corpus/templates/brain/actions/import-capture.ts +17 -5
- package/corpus/templates/brain/actions/import-transcript.ts +17 -5
- package/corpus/templates/brain/actions/update-source.ts +25 -5
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/brain/changelog/2026-07-30-blessed-resources-can-feed-cited-company-answers.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-30-the-left-sidebar-no-longer-shows-a-blank-organization-placeh.md +6 -0
- package/corpus/templates/brain/server/lib/brain.ts +49 -19
- package/corpus/templates/brain/server/lib/distillation-queue.ts +147 -0
- package/corpus/templates/brain/server/lib/source-policy.ts +264 -0
- package/corpus/templates/brain/server/plugins/agent-chat.ts +3 -2
- package/corpus/templates/brain/server/routes/api/_agent-native/brain/ingest.post.ts +116 -19
- package/corpus/templates/clips/app/components/meetings/google-oauth-identity-notice.tsx +51 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +4 -0
- package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +3 -1
- package/corpus/templates/clips/changelog/2026-07-30-google-calendar-warning.md +6 -0
- package/corpus/templates/content/.agents/skills/content-product-development/SKILL.md +47 -0
- package/corpus/templates/content/app/components/editor/VisualEditor.tsx +72 -8
- package/corpus/templates/content/changelog/2026-07-30-the-slash-command-hint-now-stays-on-only-the-active-empty-li.md +6 -0
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +506 -11
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +148 -17
- package/corpus/templates/design/app/components/design/canvas-interactions/design-canvas-interactions.ts +357 -0
- package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +7 -466
- package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +15 -311
- package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +19 -997
- package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +8 -1216
- package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +31 -38
- package/corpus/templates/design/package.json +0 -1
- package/corpus/templates/dispatch/AGENTS.md +8 -0
- package/corpus/templates/dispatch/DEVELOPING.md +29 -0
- package/corpus/templates/dispatch/actions/view-screen.ts +34 -2
- package/corpus/templates/dispatch/app/i18n-data.ts +457 -0
- package/corpus/templates/dispatch/changelog/2026-07-30-delegated-dispatch-work-continues-reliably-in-the-background.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-30-find-failed-runs-across-apps.md +6 -0
- package/corpus/templates/dispatch/netlify.toml +3 -0
- package/corpus/templates/slides/.agents/skills/analytics-data-for-decks/SKILL.md +8 -12
- package/corpus/templates/slides/AGENTS.md +4 -4
- package/corpus/templates/slides/actions/duplicate-deck.ts +19 -4
- package/corpus/templates/slides/app/components/deck/DeckCard.tsx +2 -10
- package/corpus/templates/slides/app/components/deck/MermaidRenderer.tsx +12 -1
- package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +30 -13
- package/corpus/templates/slides/app/components/editor/DeckEditorSkeleton.tsx +35 -0
- package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +63 -56
- package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +21 -76
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +1110 -292
- package/corpus/templates/slides/app/components/editor/SlideOverflowWarning.tsx +53 -0
- package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +235 -18
- package/corpus/templates/slides/app/components/editor/SpeakerNotesPanel.tsx +4 -1
- package/corpus/templates/slides/app/components/editor/canvas-interactions/index.ts +11 -0
- package/corpus/templates/slides/app/components/editor/canvas-interactions/slides-canvas-adapter.ts +129 -0
- package/corpus/templates/slides/app/components/editor/selection-overlay-measurement.ts +70 -0
- package/corpus/templates/slides/app/components/editor/slide-object-interactions.ts +519 -65
- package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +36 -426
- package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +19 -458
- package/corpus/templates/slides/app/context/DeckContext.tsx +179 -72
- package/corpus/templates/slides/app/global.css +105 -0
- package/corpus/templates/slides/app/i18n/en-US.ts +8 -0
- package/corpus/templates/slides/app/lib/deck-editor-loading.ts +26 -0
- package/corpus/templates/slides/app/lib/mermaid-blocks.ts +27 -0
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +71 -38
- package/corpus/templates/slides/app/pages/Index.tsx +98 -41
- package/corpus/templates/slides/changelog/2026-07-30-deck-loading-no-longer-flashes-an-unavailable-message.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-duplicating-a-deck-from-the-deck-list-now-opens-the-copy-imm.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-layout-overflow-warning-is-readable-and-dismissible.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-shared-canvas-annotations.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-slide-objects-can-be-moved-as-a-group-copied-and-pasted-with.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-slide-text-editing-and-object-controls-now-match-google-slides.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-style-panel-now-scrolls-with-speaker-notes-open-shows-the-sl.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-30-top-toolbar-controls-now-use-consistent-sizing-with-undo-and.md +6 -0
- package/corpus/templates/slides/netlify.toml +3 -1
- package/corpus/templates/slides/package.json +0 -1
- package/corpus/templates/slides/server/lib/chat-attachments.ts +18 -0
- package/corpus/templates/slides/server/plugins/agent-chat.ts +5 -0
- package/corpus/templates/slides/vite.config.ts +0 -1
- package/corpus/toolkit/CHANGELOG.md +13 -0
- package/corpus/toolkit/README.md +19 -0
- package/corpus/toolkit/agent-native.eject.json +38 -0
- package/corpus/toolkit/package.json +29 -1
- package/corpus/toolkit/src/canvas-annotations/CanvasCommentPins.tsx +861 -0
- package/corpus/toolkit/src/canvas-annotations/DrawOverlay.tsx +1233 -0
- package/corpus/toolkit/src/canvas-annotations/index.ts +15 -0
- package/corpus/toolkit/src/canvas-annotations/types.ts +14 -0
- package/corpus/toolkit/src/canvas-interactions/canvas-interactions.ts +933 -0
- package/corpus/toolkit/src/canvas-interactions/index.ts +67 -0
- package/corpus/toolkit/src/design-tweaks/scrub-input-utils.ts +311 -0
- package/corpus/toolkit/src/design-tweaks/scrub-input.tsx +491 -0
- package/corpus/toolkit/src/design-tweaks/visual-style-controls.tsx +26 -171
- package/corpus/toolkit/src/index.ts +1 -0
- package/dist/a2a/client.d.ts +23 -0
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +309 -44
- package/dist/a2a/client.js.map +1 -1
- package/dist/a2a/correlation.d.ts +1 -0
- package/dist/a2a/correlation.d.ts.map +1 -1
- package/dist/a2a/correlation.js +27 -0
- package/dist/a2a/correlation.js.map +1 -1
- package/dist/a2a/types.d.ts +4 -0
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/a2a/types.js.map +1 -1
- package/dist/action.d.ts +3 -0
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js.map +1 -1
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +34 -7
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/production-agent.d.ts +40 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +113 -15
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-loop-with-resume.d.ts +21 -0
- package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
- package/dist/agent/run-loop-with-resume.js +163 -4
- package/dist/agent/run-loop-with-resume.js.map +1 -1
- package/dist/agent/run-manager.d.ts +16 -9
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +93 -42
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/thread-debug-history.d.ts +10 -0
- package/dist/agent/thread-debug-history.d.ts.map +1 -0
- package/dist/agent/thread-debug-history.js +68 -0
- package/dist/agent/thread-debug-history.js.map +1 -0
- package/dist/agent/types.d.ts +3 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +6 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/templates-meta.js +2 -2
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +76 -13
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.js +1 -1
- package/dist/client/resources/McpIntegrationDialog.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +12 -3
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +48 -17
- package/dist/db/client.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/integrations/adapters/slack.js +7 -3
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/localization/default-messages.d.ts +43 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +43 -0
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/traces.d.ts +3 -1
- package/dist/observability/traces.d.ts.map +1 -1
- package/dist/observability/traces.js +73 -4
- package/dist/observability/traces.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +12 -12
- package/dist/provider-api/actions/provider-api.d.ts +13 -13
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +233 -10
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/scripts/describe-workspace-apps.js +2 -2
- package/dist/scripts/describe-workspace-apps.js.map +1 -1
- package/dist/secrets/crypto.d.ts +31 -21
- package/dist/secrets/crypto.d.ts.map +1 -1
- package/dist/secrets/crypto.js +108 -33
- package/dist/secrets/crypto.js.map +1 -1
- package/dist/secrets/storage.d.ts +3 -5
- package/dist/secrets/storage.d.ts.map +1 -1
- package/dist/secrets/storage.js +40 -25
- package/dist/secrets/storage.js.map +1 -1
- package/dist/server/agent-capabilities.js +1 -1
- package/dist/server/agent-capabilities.js.map +1 -1
- package/dist/server/agent-chat/action-filters-a2a.d.ts +17 -3
- package/dist/server/agent-chat/action-filters-a2a.d.ts.map +1 -1
- package/dist/server/agent-chat/action-filters-a2a.js +92 -3
- package/dist/server/agent-chat/action-filters-a2a.js.map +1 -1
- package/dist/server/agent-chat/context-tools.d.ts.map +1 -1
- package/dist/server/agent-chat/context-tools.js +2 -0
- package/dist/server/agent-chat/context-tools.js.map +1 -1
- package/dist/server/agent-chat/plugin-options.d.ts +23 -0
- package/dist/server/agent-chat/plugin-options.d.ts.map +1 -1
- package/dist/server/agent-chat/plugin-options.js +4 -1
- package/dist/server/agent-chat/plugin-options.js.map +1 -1
- package/dist/server/agent-chat/prompt-resources.js +1 -1
- package/dist/server/agent-chat/prompt-resources.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +2 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +79 -56
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/templates/default/.agents/skills/secrets/SKILL.md +14 -7
- package/dist/templates/headless/.agents/skills/secrets/SKILL.md +14 -7
- package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +18 -7
- package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +15 -14
- package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +14 -7
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +1 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/agent-native-toolkit.mdx +13 -6
- package/docs/content/cloneable-saas.mdx +5 -5
- package/docs/content/creating-templates.mdx +9 -0
- package/docs/content/deployment.mdx +14 -10
- package/docs/content/docs-components.mdx +491 -0
- package/docs/content/doctor.mdx +8 -1
- package/docs/content/drop-in-agent.mdx +1 -1
- package/docs/content/extensions.mdx +18 -18
- package/docs/content/faq.mdx +4 -4
- package/docs/content/key-concepts.mdx +30 -21
- package/docs/content/template-brain-developers.mdx +4 -1
- package/docs/content/template-mail-developers.mdx +4 -1
- package/docs/content/what-is-agent-native.mdx +6 -6
- package/package.json +2 -2
- package/src/a2a/client.ts +449 -66
- package/src/a2a/correlation.ts +31 -0
- package/src/a2a/types.ts +4 -0
- package/src/action.ts +3 -0
- package/src/agent/engine/registry.ts +45 -5
- package/src/agent/production-agent.ts +151 -18
- package/src/agent/run-loop-with-resume.ts +190 -3
- package/src/agent/run-manager.ts +117 -41
- package/src/agent/thread-debug-history.ts +86 -0
- package/src/agent/types.ts +3 -1
- package/src/cli/create.ts +11 -1
- package/src/cli/templates-meta.ts +2 -2
- package/src/client/agent-chat-adapter.ts +91 -13
- package/src/client/resources/McpIntegrationDialog.tsx +11 -9
- package/src/client/sse-event-processor.ts +17 -3
- package/src/db/client.ts +57 -17
- package/src/integrations/adapters/slack.ts +8 -3
- package/src/localization/default-messages.ts +44 -0
- package/src/observability/traces.ts +78 -5
- package/src/scripts/call-agent.ts +290 -9
- package/src/scripts/describe-workspace-apps.ts +2 -2
- package/src/secrets/crypto.ts +126 -34
- package/src/secrets/storage.ts +61 -25
- package/src/server/agent-capabilities.ts +1 -1
- package/src/server/agent-chat/action-filters-a2a.ts +111 -7
- package/src/server/agent-chat/context-tools.ts +2 -0
- package/src/server/agent-chat/plugin-options.ts +34 -1
- package/src/server/agent-chat/prompt-resources.ts +1 -1
- package/src/server/agent-chat-plugin.ts +91 -59
- package/src/templates/default/.agents/skills/secrets/SKILL.md +14 -7
- package/src/templates/headless/.agents/skills/secrets/SKILL.md +14 -7
- package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +18 -7
- package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +15 -14
- package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +14 -7
- package/src/vite/client.ts +1 -0
|
@@ -64,15 +64,6 @@ export const BACKGROUND_SOFT_TIMEOUT_CEILING_MS = 13 * 60_000; // 780_000
|
|
|
64
64
|
* off to a chained background continuation.
|
|
65
65
|
*/
|
|
66
66
|
export const DEFAULT_BACKGROUND_RUN_SOFT_TIMEOUT_MS = BACKGROUND_SOFT_TIMEOUT_CEILING_MS;
|
|
67
|
-
/**
|
|
68
|
-
* Default no-progress window for a run executing inside a proven durable
|
|
69
|
-
* background function. Keep this below the 13-minute soft timeout so a truly
|
|
70
|
-
* wedged background turn can still checkpoint, persist, and continue before
|
|
71
|
-
* the function budget expires, but far above the foreground 150s window so
|
|
72
|
-
* large Design/Plan/Assets generations are not chopped up while the model is
|
|
73
|
-
* legitimately planning a big tool payload.
|
|
74
|
-
*/
|
|
75
|
-
export const DEFAULT_BACKGROUND_NO_PROGRESS_TIMEOUT_MS = BACKGROUND_SOFT_TIMEOUT_CEILING_MS - 60_000;
|
|
76
67
|
/**
|
|
77
68
|
* AUTHORITATIVE no-progress backstop for a run, enforced by the run manager
|
|
78
69
|
* itself (timer-driven, independent of any layer below).
|
|
@@ -101,6 +92,15 @@ export const DEFAULT_BACKGROUND_NO_PROGRESS_TIMEOUT_MS = BACKGROUND_SOFT_TIMEOUT
|
|
|
101
92
|
* runs); local dev stays unbounded.
|
|
102
93
|
*/
|
|
103
94
|
export const RUN_NO_PROGRESS_HARD_TIMEOUT_MS = 150_000;
|
|
95
|
+
/**
|
|
96
|
+
* Default no-progress window for a run executing inside a proven durable
|
|
97
|
+
* background function. A background worker that is heartbeating but has no
|
|
98
|
+
* real progress and no tool/A2A work in flight is still wedged; letting that
|
|
99
|
+
* state outlive the client's follow budget only turns a recoverable stall into
|
|
100
|
+
* a terminal timeout. In-flight work suspends this backstop, so use the same
|
|
101
|
+
* server-owned 150s bound as the long foreground regime.
|
|
102
|
+
*/
|
|
103
|
+
export const DEFAULT_BACKGROUND_NO_PROGRESS_TIMEOUT_MS = RUN_NO_PROGRESS_HARD_TIMEOUT_MS;
|
|
104
104
|
/**
|
|
105
105
|
* Fraction of the soft timeout a foreground no-progress backstop may consume.
|
|
106
106
|
* The hosted foreground path rides a synchronous serverless function whose
|
|
@@ -196,12 +196,23 @@ export const SQL_SUBSCRIPTION_IDLE_POLL_MS = 500;
|
|
|
196
196
|
export const SQL_SUBSCRIPTION_ACTIVE_GRACE_MS = 2_000;
|
|
197
197
|
/** Keep terminal/status probes at the historical cadence to bound DB work. */
|
|
198
198
|
export const SQL_SUBSCRIPTION_STATUS_POLL_MS = 500;
|
|
199
|
+
/** Initial retry delay after a transient cross-isolate SQL polling failure. */
|
|
200
|
+
export const SQL_SUBSCRIPTION_RETRY_BASE_MS = 250;
|
|
201
|
+
/** Bound consecutive SQL polling failures so a dead subscription fails loud. */
|
|
202
|
+
export const SQL_SUBSCRIPTION_MAX_CONSECUTIVE_FAILURES = 4;
|
|
203
|
+
/** Cap retry delay even if the failure bound changes independently. */
|
|
204
|
+
export const SQL_SUBSCRIPTION_RETRY_MAX_MS = 2_000;
|
|
199
205
|
export function resolveSqlSubscriptionPollMs(now, activePollUntil) {
|
|
200
206
|
return now < activePollUntil
|
|
201
207
|
? SQL_SUBSCRIPTION_ACTIVE_POLL_MS
|
|
202
208
|
: SQL_SUBSCRIPTION_IDLE_POLL_MS;
|
|
203
209
|
}
|
|
210
|
+
export function resolveSqlSubscriptionRetryMs(consecutiveFailures) {
|
|
211
|
+
const retryIndex = Math.max(0, Math.floor(consecutiveFailures) - 1);
|
|
212
|
+
return Math.min(SQL_SUBSCRIPTION_RETRY_MAX_MS, SQL_SUBSCRIPTION_RETRY_BASE_MS * 2 ** retryIndex);
|
|
213
|
+
}
|
|
204
214
|
const PROVIDER_RATE_LIMITED_ERROR_CODE = "provider_rate_limited";
|
|
215
|
+
const PROVIDER_NETWORK_ERROR_CODE = "provider_network_error";
|
|
205
216
|
function isPreparingActionActivityEvent(event) {
|
|
206
217
|
if (event.type !== "activity")
|
|
207
218
|
return false;
|
|
@@ -218,11 +229,21 @@ function getRunErrorMessage(err) {
|
|
|
218
229
|
}
|
|
219
230
|
return "Unknown error";
|
|
220
231
|
}
|
|
221
|
-
function
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
232
|
+
function isProviderConnectionErrorMessage(message) {
|
|
233
|
+
const normalized = message.trim().toLowerCase();
|
|
234
|
+
return (normalized === "connection error." ||
|
|
235
|
+
normalized.includes("cannot connect to api:"));
|
|
236
|
+
}
|
|
237
|
+
function getRunErrorCode(err) {
|
|
238
|
+
if (err instanceof EngineError) {
|
|
239
|
+
if (err.errorCode)
|
|
240
|
+
return err.errorCode;
|
|
241
|
+
if (err.statusCode === 429)
|
|
242
|
+
return PROVIDER_RATE_LIMITED_ERROR_CODE;
|
|
243
|
+
}
|
|
244
|
+
if (err instanceof Error && isProviderConnectionErrorMessage(err.message)) {
|
|
245
|
+
return PROVIDER_NETWORK_ERROR_CODE;
|
|
246
|
+
}
|
|
226
247
|
return undefined;
|
|
227
248
|
}
|
|
228
249
|
function getEngineRunErrorDetails(err) {
|
|
@@ -231,22 +252,25 @@ function getEngineRunErrorDetails(err) {
|
|
|
231
252
|
return undefined;
|
|
232
253
|
}
|
|
233
254
|
function shouldCaptureRunError(err) {
|
|
234
|
-
|
|
235
|
-
return true;
|
|
236
|
-
const errorCode = getEngineRunErrorCode(err);
|
|
255
|
+
const errorCode = getRunErrorCode(err);
|
|
237
256
|
if (isLlmCredentialError(err, errorCode))
|
|
238
257
|
return false;
|
|
239
|
-
if (err
|
|
258
|
+
if (err instanceof EngineError &&
|
|
259
|
+
(err.statusCode === 401 || err.statusCode === 403)) {
|
|
240
260
|
return false;
|
|
261
|
+
}
|
|
262
|
+
if (!(err instanceof Error))
|
|
263
|
+
return true;
|
|
241
264
|
if (/^40[13] status code\b/i.test(err.message))
|
|
242
265
|
return false;
|
|
243
|
-
if (err.message
|
|
266
|
+
if (isProviderConnectionErrorMessage(err.message))
|
|
244
267
|
return false;
|
|
245
268
|
if (!errorCode)
|
|
246
269
|
return true;
|
|
247
270
|
const normalizedCode = errorCode.toLowerCase();
|
|
248
271
|
return (!normalizedCode.startsWith("credits-limit") &&
|
|
249
272
|
normalizedCode !== "builder_gateway_network_error" &&
|
|
273
|
+
normalizedCode !== PROVIDER_NETWORK_ERROR_CODE &&
|
|
250
274
|
normalizedCode !== "provider_rate_limited" &&
|
|
251
275
|
normalizedCode !== "rate_limit_exceeded");
|
|
252
276
|
}
|
|
@@ -792,7 +816,7 @@ export function startRun(runId, threadId, runFn, onComplete, options) {
|
|
|
792
816
|
: null;
|
|
793
817
|
let pendingTerminalEvent = null;
|
|
794
818
|
const captureRunError = (error, phase) => {
|
|
795
|
-
const errorCode =
|
|
819
|
+
const errorCode = getRunErrorCode(error);
|
|
796
820
|
captureError(error, {
|
|
797
821
|
route: "/_agent-native/agent-chat",
|
|
798
822
|
tags: {
|
|
@@ -899,7 +923,7 @@ export function startRun(runId, threadId, runFn, onComplete, options) {
|
|
|
899
923
|
captureRunError(err, "run");
|
|
900
924
|
}
|
|
901
925
|
const errorMessage = getRunErrorMessage(err);
|
|
902
|
-
const errorCode =
|
|
926
|
+
const errorCode = getRunErrorCode(err);
|
|
903
927
|
const details = err instanceof EngineError ? getEngineRunErrorDetails(err) : undefined;
|
|
904
928
|
send({
|
|
905
929
|
type: "error",
|
|
@@ -1266,6 +1290,7 @@ function subscribeFromSQL(runId, fromSeq) {
|
|
|
1266
1290
|
let lastSeq = fromSeq;
|
|
1267
1291
|
let activePollUntil = 0;
|
|
1268
1292
|
let lastStatusCheckAt = 0;
|
|
1293
|
+
let consecutivePollFailures = 0;
|
|
1269
1294
|
const ping = () => {
|
|
1270
1295
|
try {
|
|
1271
1296
|
controller.enqueue(encoder.encode(`: ping ${Date.now()}\n\n`));
|
|
@@ -1278,6 +1303,45 @@ function subscribeFromSQL(runId, fromSeq) {
|
|
|
1278
1303
|
};
|
|
1279
1304
|
ping();
|
|
1280
1305
|
pingTimer = setInterval(ping, 10_000);
|
|
1306
|
+
const closeStream = () => {
|
|
1307
|
+
cancelled = true;
|
|
1308
|
+
if (pollTimer)
|
|
1309
|
+
clearTimeout(pollTimer);
|
|
1310
|
+
if (pingTimer)
|
|
1311
|
+
clearInterval(pingTimer);
|
|
1312
|
+
try {
|
|
1313
|
+
controller.close();
|
|
1314
|
+
}
|
|
1315
|
+
catch { }
|
|
1316
|
+
};
|
|
1317
|
+
const failSubscription = (error) => {
|
|
1318
|
+
const event = {
|
|
1319
|
+
type: "error",
|
|
1320
|
+
error: "The live agent connection could not load persisted run progress.",
|
|
1321
|
+
errorCode: "run_subscription_poll_failed",
|
|
1322
|
+
details: "The agent may still be running. Reconnect to resume from the last persisted event.",
|
|
1323
|
+
recoverable: true,
|
|
1324
|
+
};
|
|
1325
|
+
captureError(error, {
|
|
1326
|
+
route: "/_agent-native/agent-chat/runs/:id/events",
|
|
1327
|
+
tags: {
|
|
1328
|
+
source: "agent-run-manager",
|
|
1329
|
+
phase: "sql-subscription-poll",
|
|
1330
|
+
consecutiveFailures: String(consecutivePollFailures),
|
|
1331
|
+
},
|
|
1332
|
+
extra: {
|
|
1333
|
+
runId,
|
|
1334
|
+
fromSeq,
|
|
1335
|
+
lastSeq,
|
|
1336
|
+
error: getRunErrorMessage(error),
|
|
1337
|
+
},
|
|
1338
|
+
});
|
|
1339
|
+
try {
|
|
1340
|
+
controller.enqueue(encoder.encode(`data: ${JSON.stringify({ ...event, seq: lastSeq })}\n\n`));
|
|
1341
|
+
}
|
|
1342
|
+
catch { }
|
|
1343
|
+
closeStream();
|
|
1344
|
+
};
|
|
1281
1345
|
const poll = async () => {
|
|
1282
1346
|
if (cancelled)
|
|
1283
1347
|
return;
|
|
@@ -1320,6 +1384,7 @@ function subscribeFromSQL(runId, fromSeq) {
|
|
|
1320
1384
|
const now = Date.now();
|
|
1321
1385
|
if (now - lastStatusCheckAt < SQL_SUBSCRIPTION_STATUS_POLL_MS) {
|
|
1322
1386
|
if (!cancelled) {
|
|
1387
|
+
consecutivePollFailures = 0;
|
|
1323
1388
|
const pollMs = resolveSqlSubscriptionPollMs(now, activePollUntil);
|
|
1324
1389
|
pollTimer = setTimeout(poll, pollMs);
|
|
1325
1390
|
}
|
|
@@ -1443,34 +1508,20 @@ function subscribeFromSQL(runId, fromSeq) {
|
|
|
1443
1508
|
}
|
|
1444
1509
|
// Schedule next poll
|
|
1445
1510
|
if (!cancelled) {
|
|
1511
|
+
consecutivePollFailures = 0;
|
|
1446
1512
|
const pollMs = resolveSqlSubscriptionPollMs(Date.now(), activePollUntil);
|
|
1447
1513
|
pollTimer = setTimeout(poll, pollMs);
|
|
1448
1514
|
}
|
|
1449
1515
|
}
|
|
1450
|
-
catch {
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
controller.close();
|
|
1516
|
+
catch (error) {
|
|
1517
|
+
consecutivePollFailures += 1;
|
|
1518
|
+
if (consecutivePollFailures >= SQL_SUBSCRIPTION_MAX_CONSECUTIVE_FAILURES) {
|
|
1519
|
+
failSubscription(error);
|
|
1520
|
+
return;
|
|
1456
1521
|
}
|
|
1457
|
-
|
|
1522
|
+
pollTimer = setTimeout(poll, resolveSqlSubscriptionRetryMs(consecutivePollFailures));
|
|
1458
1523
|
}
|
|
1459
1524
|
};
|
|
1460
|
-
// Verify run exists before starting poll
|
|
1461
|
-
try {
|
|
1462
|
-
const run = await getRunById(runId);
|
|
1463
|
-
if (!run) {
|
|
1464
|
-
if (pingTimer)
|
|
1465
|
-
clearInterval(pingTimer);
|
|
1466
|
-
controller.close();
|
|
1467
|
-
return;
|
|
1468
|
-
}
|
|
1469
|
-
}
|
|
1470
|
-
catch {
|
|
1471
|
-
controller.close();
|
|
1472
|
-
return;
|
|
1473
|
-
}
|
|
1474
1525
|
await poll();
|
|
1475
1526
|
},
|
|
1476
1527
|
cancel() {
|