@agent-native/core 0.92.10 → 0.92.11
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 +1 -1
- package/corpus/core/CHANGELOG.md +23 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/production-agent.ts +181 -15
- package/corpus/core/src/agent/run-manager.ts +31 -4
- package/corpus/core/src/agent/run-store.ts +80 -0
- package/corpus/core/src/cli/design-connect.ts +433 -151
- package/corpus/core/src/cli/skills.ts +14 -0
- package/corpus/core/src/client/AssistantChat.tsx +25 -0
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +40 -6
- package/corpus/core/src/client/agent-chat.ts +165 -1
- package/corpus/core/src/client/chat/index.ts +9 -1
- package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +38 -2
- package/corpus/core/src/client/index.ts +5 -0
- package/corpus/core/src/client/rich-markdown-editor/useCollabReconcile.ts +18 -7
- package/corpus/core/src/collab/awareness-store.ts +23 -12
- package/corpus/core/src/collab/client.ts +16 -5
- package/corpus/core/src/collab/index.ts +4 -0
- package/corpus/core/src/collab/recent-edits.ts +65 -2
- package/corpus/core/src/index.browser.ts +1 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +98 -11
- package/corpus/core/src/server/builder-design-systems.ts +30 -4
- package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +1 -1
- package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +12 -6
- package/corpus/templates/clips/AGENTS.md +4 -0
- package/corpus/templates/clips/actions/create-recording.ts +2 -0
- package/corpus/templates/clips/actions/lib/create-recording-schema.ts +5 -3
- package/corpus/templates/clips/actions/request-transcript.ts +102 -33
- package/corpus/templates/clips/app/components/library/library-grid.tsx +1 -0
- package/corpus/templates/clips/app/components/player/share-dialog.tsx +59 -19
- package/corpus/templates/clips/app/components/player/transcript-panel.tsx +48 -4
- package/corpus/templates/clips/app/components/player/video-player.tsx +17 -12
- package/corpus/templates/clips/app/i18n/ar-SA.ts +1 -0
- package/corpus/templates/clips/app/i18n/de-DE.ts +1 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +1 -0
- package/corpus/templates/clips/app/i18n/es-ES.ts +1 -0
- package/corpus/templates/clips/app/i18n/fr-FR.ts +1 -0
- package/corpus/templates/clips/app/i18n/hi-IN.ts +1 -0
- package/corpus/templates/clips/app/i18n/ja-JP.ts +1 -0
- package/corpus/templates/clips/app/i18n/ko-KR.ts +1 -0
- package/corpus/templates/clips/app/i18n/pt-BR.ts +1 -0
- package/corpus/templates/clips/app/i18n/zh-CN.ts +1 -0
- package/corpus/templates/clips/app/i18n/zh-TW.ts +1 -0
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +70 -37
- package/corpus/templates/clips/app/routes/record.tsx +17 -4
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +2 -0
- package/corpus/templates/clips/changelog/2026-07-09-desktop-popover-sits-closer-to-the-menu-bar.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-09-desktop-recording-optimization-progress-stays-visible-until-the-clip-opens.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-09-fixed-large-video-file-uploads-failing-before-their-resumabl.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-09-fixed-new-video-uploads-defaulting-to-private.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-09-long-recordings-now-get-enough-time-to-download-their-media-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-09-meeting-notes-no-longer-lowers-your-microphone-volume-for-ot.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-09-on-mobile-tapping-a-playing-clip-reveals-playback-controls-w.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-09-regenerate-any-clip-transcript-from-its-saved-recording-or-r.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-09-slack-previews-now-show-the-clip-length-alongside-its-descri.md +6 -0
- package/corpus/templates/clips/desktop/src/app.tsx +12 -2
- package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +8 -1
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +8 -5
- package/corpus/templates/clips/desktop/src/lib/transcription-engine.ts +5 -5
- package/corpus/templates/clips/desktop/src/lib/voice-dictation.ts +3 -0
- package/corpus/templates/clips/desktop/src/styles.css +6 -3
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +29 -11
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +1 -1
- package/corpus/templates/clips/desktop/src-tauri/src/system_audio.rs +103 -21
- package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +117 -39
- package/corpus/templates/clips/server/lib/slack-unfurls.ts +20 -1
- package/corpus/templates/clips/server/lib/streaming-upload-mode.ts +10 -4
- package/corpus/templates/clips/shared/recording-core.ts +12 -0
- package/corpus/templates/content/AGENTS.md +7 -6
- package/corpus/templates/content/actions/_document-flush.ts +132 -17
- package/corpus/templates/content/actions/_notion-action-utils.ts +15 -0
- package/corpus/templates/content/actions/create-and-link-notion-page.ts +2 -0
- package/corpus/templates/content/actions/link-notion-page.ts +2 -0
- package/corpus/templates/content/actions/pull-document.ts +5 -7
- package/corpus/templates/content/actions/pull-notion-page.ts +2 -0
- package/corpus/templates/content/actions/push-notion-page.ts +10 -0
- package/corpus/templates/content/actions/resolve-notion-sync-conflict.ts +2 -0
- package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +88 -23
- package/corpus/templates/content/app/components/editor/VisualEditor.tsx +32 -2
- package/corpus/templates/content/app/hooks/use-notion.ts +6 -6
- package/corpus/templates/content/app/i18n/zh-TW.ts +1 -0
- package/corpus/templates/content/app/i18n-data.ts +18 -0
- package/corpus/templates/content/changelog/2026-07-09-notion-conflict-choices-and-version-restores-preserve-docume.md +6 -0
- package/corpus/templates/content/server/lib/notion-sync.ts +80 -64
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +29 -2
- package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +86 -0
- package/corpus/templates/design/.agents/skills/export-handoff/SKILL.md +57 -0
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +11 -0
- package/corpus/templates/design/AGENTS.md +45 -10
- package/corpus/templates/design/actions/add-localhost-screens.ts +66 -13
- package/corpus/templates/design/actions/apply-component-prop-edit.ts +45 -36
- package/corpus/templates/design/actions/apply-motion-edit.ts +25 -31
- package/corpus/templates/design/actions/apply-shader-fill.ts +29 -42
- package/corpus/templates/design/actions/detach-component-instance.ts +337 -0
- package/corpus/templates/design/actions/export-design-as-figma-svg.ts +219 -0
- package/corpus/templates/design/actions/generate-design.ts +79 -12
- package/corpus/templates/design/actions/generate-screens.ts +57 -12
- package/corpus/templates/design/actions/get-figma-styles.ts +115 -0
- package/corpus/templates/design/actions/go-to-main-component.ts +254 -0
- package/corpus/templates/design/actions/grant-localhost-write-consent.ts +4 -3
- package/corpus/templates/design/actions/import-design-source.ts +4 -31
- package/corpus/templates/design/actions/import-figma-clipboard.ts +134 -0
- package/corpus/templates/design/actions/import-figma-frame.ts +95 -0
- package/corpus/templates/design/actions/index-design-system-with-builder.ts +16 -1
- package/corpus/templates/design/actions/list-design-components.ts +104 -0
- package/corpus/templates/design/actions/list-figma-library-assets.ts +1 -24
- package/corpus/templates/design/actions/open-component-source.ts +2 -4
- package/corpus/templates/design/actions/present-design-variants.ts +412 -16
- package/corpus/templates/design/actions/preview-source-edit.ts +14 -1
- package/corpus/templates/design/actions/run-design-audit.ts +25 -3
- package/corpus/templates/design/actions/show-design-questions.ts +10 -0
- package/corpus/templates/design/actions/swap-component-instance.ts +544 -0
- package/corpus/templates/design/actions/take-design-screenshot.ts +45 -60
- package/corpus/templates/design/actions/write-local-file.ts +25 -1
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +152 -0
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +1077 -58
- package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +5 -5
- package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +73 -21
- package/corpus/templates/design/app/components/design/EditPanel.tsx +16 -11
- package/corpus/templates/design/app/components/design/KeyboardShortcutsPanel.tsx +364 -0
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +180 -53
- package/corpus/templates/design/app/components/design/LocalhostWriteConsentDialog.tsx +0 -2
- package/corpus/templates/design/app/components/design/MotionDock.tsx +144 -21
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +1152 -167
- package/corpus/templates/design/app/components/design/QuestionFlow.tsx +27 -5
- package/corpus/templates/design/app/components/design/ReviewPanel.tsx +23 -2
- package/corpus/templates/design/app/components/design/TokensPanel.tsx +63 -49
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +1293 -54
- package/corpus/templates/design/app/components/design/bridge/embedded-wheel.bridge.ts +7 -0
- package/corpus/templates/design/app/components/design/bridge/hit-test.bridge.ts +6 -1
- package/corpus/templates/design/app/components/design/bridge/motion-preview.bridge.ts +23 -6
- package/corpus/templates/design/app/components/design/bridge/sample.bridge.ts +7 -0
- package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbench.tsx +5 -0
- package/corpus/templates/design/app/components/design/code-workbench/editor/MonacoHost.tsx +14 -2
- package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +37 -2
- package/corpus/templates/design/app/components/design/code-workbench/format/format-on-open-guard.ts +25 -0
- package/corpus/templates/design/app/components/design/code-workbench/format/format-on-open.ts +19 -1
- package/corpus/templates/design/app/components/design/code-workbench/model-registry.ts +43 -5
- package/corpus/templates/design/app/components/design/code-workbench/search/SearchView.tsx +27 -2
- package/corpus/templates/design/app/components/design/code-workbench/search/search-engine.ts +10 -1
- package/corpus/templates/design/app/components/design/code-workbench/store.tsx +19 -2
- package/corpus/templates/design/app/components/design/design-canvas/annotation-snapshot.ts +265 -0
- package/corpus/templates/design/app/components/design/design-canvas/annotation-submit.ts +16 -5
- package/corpus/templates/design/app/components/design/design-canvas/coordinate-transforms.ts +16 -2
- package/corpus/templates/design/app/components/design/design-canvas/embedded-frame.ts +7 -2
- package/corpus/templates/design/app/components/design/design-canvas/iframe-events.ts +3 -1
- package/corpus/templates/design/app/components/design/edit-panel/code-inspect-helpers.tsx +78 -8
- package/corpus/templates/design/app/components/design/edit-panel/component-section.tsx +451 -73
- package/corpus/templates/design/app/components/design/edit-panel/document-colors.ts +12 -4
- package/corpus/templates/design/app/components/design/edit-panel/effects-properties.tsx +398 -272
- package/corpus/templates/design/app/components/design/edit-panel/element-classification.ts +41 -7
- package/corpus/templates/design/app/components/design/edit-panel/element-identity.ts +16 -3
- package/corpus/templates/design/app/components/design/edit-panel/field-primitives.tsx +24 -4
- package/corpus/templates/design/app/components/design/edit-panel/fill-gradient-helpers.ts +222 -4
- package/corpus/templates/design/app/components/design/edit-panel/fill-properties.tsx +171 -78
- package/corpus/templates/design/app/components/design/edit-panel/inspector-controls.tsx +45 -5
- package/corpus/templates/design/app/components/design/edit-panel/layout-properties.tsx +299 -28
- package/corpus/templates/design/app/components/design/edit-panel/panel-primitives.tsx +120 -150
- package/corpus/templates/design/app/components/design/edit-panel/position-helpers.ts +53 -1
- package/corpus/templates/design/app/components/design/edit-panel/position-layout-properties.tsx +284 -117
- package/corpus/templates/design/app/components/design/edit-panel/selection-helpers.ts +81 -0
- package/corpus/templates/design/app/components/design/edit-panel/stroke-properties.tsx +19 -14
- package/corpus/templates/design/app/components/design/edit-panel/style-options.ts +7 -0
- package/corpus/templates/design/app/components/design/edit-panel/typography-helpers.ts +155 -0
- package/corpus/templates/design/app/components/design/edit-panel/typography-properties.tsx +268 -46
- package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +350 -31
- package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +13 -4
- package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +233 -23
- package/corpus/templates/design/app/components/design/inspector/GradientEditor.tsx +72 -2
- package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +51 -11
- package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +84 -11
- package/corpus/templates/design/app/components/design/inspector/index.ts +3 -0
- package/corpus/templates/design/app/components/design/keyboard-shortcuts.ts +552 -0
- package/corpus/templates/design/app/components/design/multi-screen/board-surface-html.ts +157 -0
- package/corpus/templates/design/app/components/design/multi-screen/frame-geometry.ts +53 -0
- package/corpus/templates/design/app/components/design/multi-screen/overview-layout.ts +184 -0
- package/corpus/templates/design/app/components/design/multi-screen/primitive-drop-target.ts +403 -26
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +20 -1
- package/corpus/templates/design/app/components/design/types.ts +33 -0
- package/corpus/templates/design/app/components/editor/PromptDialog.tsx +59 -7
- package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +119 -17
- package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +275 -63
- package/corpus/templates/design/app/hooks/use-question-flow.ts +14 -3
- package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +67 -10
- package/corpus/templates/design/app/i18n/zh-TW.ts +91 -1
- package/corpus/templates/design/app/i18n-data.ts +1217 -10
- package/corpus/templates/design/app/i18n-keyboard-shortcuts.ts +577 -0
- package/corpus/templates/design/app/lib/agent-chat.ts +23 -0
- package/corpus/templates/design/app/lib/design-import.ts +24 -0
- package/corpus/templates/design/app/lib/figma-clipboard.ts +157 -0
- package/corpus/templates/design/app/lib/figma-svg-copy.ts +221 -0
- package/corpus/templates/design/app/pages/design-editor/code-layer-state.ts +143 -30
- package/corpus/templates/design/app/pages/design-editor/collab-sync.ts +15 -0
- package/corpus/templates/design/app/pages/design-editor/editor-session.ts +33 -0
- package/corpus/templates/design/app/pages/design-editor/editor-state.ts +38 -0
- package/corpus/templates/design/app/pages/design-editor/overview-annotation-context.ts +157 -0
- package/corpus/templates/design/app/pages/design-editor/overview-camera.ts +62 -6
- package/corpus/templates/design/app/pages/design-editor/pending-edits.ts +245 -0
- package/corpus/templates/design/app/pages/design-editor/react-semantic-handoff.ts +586 -0
- package/corpus/templates/design/app/pages/design-editor/screen-auto-layout.ts +169 -0
- package/corpus/templates/design/app/pages/design-editor/selection-state.ts +201 -1
- package/corpus/templates/design/changelog/2026-07-09-added-underline-strikethrough-and-text-case-uppercase-lowerc.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-annotate-now-draws-across-the-all-screens-canvas-without-swi.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-auto-layout-children-can-now-be-dragged-into-freeform-screen.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-board-shapes-now-stay-visible-and-nest-correctly-across-the-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-component-source-navigation-now-opens-reliably-from-the-insp.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-cross-screen-local-react-layer-moves-now-hand-off-exact-sour.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-cross-screen-moves-undo-and-redo-now-keep-both-screens-stabl.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-detach-a-component-instance-into-plain-editable-eleme.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-dragging-layers-into-auto-layout-now-respects-ignore-auto-la.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-drawing-annotations-sent-to-the-agent-now-include-a-rendered.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-editor-sidebars-now-use-figma-matched-default-widths-for-a-r.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-empty-frames-and-rectangles-now-expose-full-auto-layout-cont.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-export-any-design-screen-as-a-real-vector-svg-for-figma-with.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-grid-auto-layout-now-uses-true-responsive-rows-and-columns-w.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-hidden-and-locked-screens-now-behave-consistently-between-la.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-image-fills-now-preserve-valid-urls-and-layered-fit-settings.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-import-figma-frames-as-pixel-accurate-design-screens-via-a-s.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-inspect-code-now-hides-internal-styling-metadata-and-wraps-l.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-inspector-blur-and-shadow-effects-now-preserve-other-effects.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-jump-to-a-components-other-instances-from-the-inspecto.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-keyboard-shortcuts-are-now-discoverable-in-a-figma-style-bot.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-layer-selection-now-keeps-cmd-or-ctrl-toggles-and-shift-rang.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-layers-dropped-into-auto-layout-now-participate-correctly-in.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-local-live-edit-screens-now-enter-and-leave-full-view-withou.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-local-preview-urls-now-live-in-the-inspector-instead-of-taki.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-local-react-layers-can-now-be-hidden-and-locked-from-layers-.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-local-react-layers-now-keep-exact-source-provenance-and-supp.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-local-react-visual-editing-now-loads-reliably-and-shows-live.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-paste-from-figma-cmd-v-now-imports-exact-editable-nodes-when.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-pressing-escape-after-selecting-a-screen-now-reveals-page-pr.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-right-click-overlapping-or-nested-objects-to-choose-the-exac.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-scale-edge-stretch-and-center-constraints-now-preserve-layer.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-screen-rows-can-now-be-reordered-in-layers-with-matching-can.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-screen-selection-stays-responsive-in-designs-with-hundreds-o.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-shift-a-now-enables-auto-layout-on-a-selected-screen-with-fl.md +6 -0
- package/corpus/templates/design/changelog/2026-07-09-swap-a-component-instance-for-another-from-the-libra.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-drawing-annotations-now-stay-available-to-retry-when-the.md +6 -0
- package/corpus/templates/design/e2e/global-setup.ts +3 -6
- package/corpus/templates/design/e2e/helpers.ts +27 -6
- package/corpus/templates/design/server/lib/design-to-figma-svg.ts +1412 -0
- package/corpus/templates/design/server/lib/figma-clipboard-match.ts +196 -0
- package/corpus/templates/design/server/lib/figma-node-import.ts +311 -0
- package/corpus/templates/design/server/lib/figma-node-to-html.ts +1334 -0
- package/corpus/templates/design/server/lib/figma-paste-fallback.ts +64 -0
- package/corpus/templates/design/server/lib/playwright-runtime.ts +78 -0
- package/corpus/templates/design/server/plugins/db.ts +41 -0
- package/corpus/templates/design/server/source-workspace.ts +64 -0
- package/corpus/templates/design/shared/board-file.ts +13 -2
- package/corpus/templates/design/shared/canvas-math.ts +231 -33
- package/corpus/templates/design/shared/code-layer.ts +122 -8
- package/corpus/templates/design/shared/component-library.ts +161 -0
- package/corpus/templates/design/shared/db-conflict.ts +27 -0
- package/corpus/templates/design/shared/design-source-capabilities.ts +2 -1
- package/corpus/templates/design/shared/figma-url.ts +149 -0
- package/corpus/templates/design/shared/pen-path.ts +16 -7
- package/corpus/templates/design/shared/source-mode.ts +1 -0
- package/corpus/templates/plan/app/components/plan/CanvasArea.tsx +7 -19
- package/corpus/templates/plan/changelog/2026-07-09-canvas-panning-now-keeps-zoom-fixed-even-at-the-edges.md +6 -0
- package/corpus/templates/slides/actions/index-design-system-with-builder.ts +16 -1
- package/corpus/templates/slides/app/context/DeckContext.tsx +311 -70
- package/corpus/templates/slides/changelog/2026-07-09-fixed-the-slide-rail-going-permanently-stale-during-a-long-a.md +6 -0
- package/dist/agent/production-agent.d.ts +79 -6
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +161 -14
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +29 -5
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts +46 -0
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +61 -0
- package/dist/agent/run-store.js.map +1 -1
- package/dist/cli/design-connect.d.ts +6 -0
- package/dist/cli/design-connect.d.ts.map +1 -1
- package/dist/cli/design-connect.js +336 -139
- package/dist/cli/design-connect.js.map +1 -1
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +14 -0
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +2 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +19 -3
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +38 -18
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat.d.ts +60 -0
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js +122 -1
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/chat/index.d.ts +1 -1
- package/dist/client/chat/index.d.ts.map +1 -1
- package/dist/client/chat/index.js +1 -1
- package/dist/client/chat/index.js.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.d.ts +12 -0
- package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.js +36 -2
- package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/useCollabReconcile.js +18 -6
- package/dist/client/rich-markdown-editor/useCollabReconcile.js.map +1 -1
- package/dist/collab/awareness-store.d.ts +5 -0
- package/dist/collab/awareness-store.d.ts.map +1 -1
- package/dist/collab/awareness-store.js +19 -12
- package/dist/collab/awareness-store.js.map +1 -1
- package/dist/collab/client.d.ts.map +1 -1
- package/dist/collab/client.js +13 -5
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/index.d.ts +1 -0
- package/dist/collab/index.d.ts.map +1 -1
- package/dist/collab/index.js +1 -0
- package/dist/collab/index.js.map +1 -1
- package/dist/collab/recent-edits.d.ts +3 -1
- package/dist/collab/recent-edits.d.ts.map +1 -1
- package/dist/collab/recent-edits.js +57 -2
- package/dist/collab/recent-edits.js.map +1 -1
- package/dist/index.browser.d.ts +1 -1
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +1 -1
- package/dist/index.browser.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +87 -10
- 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/builder-design-systems.d.ts +15 -0
- package/dist/server/builder-design-systems.d.ts.map +1 -1
- package/dist/server/builder-design-systems.js +9 -4
- package/dist/server/builder-design-systems.js.map +1 -1
- package/package.json +1 -1
|
@@ -3782,6 +3782,69 @@ export function resolveContinuationDispatchBudget(opts) {
|
|
|
3782
3782
|
backoffCapMs: Infinity,
|
|
3783
3783
|
};
|
|
3784
3784
|
}
|
|
3785
|
+
/**
|
|
3786
|
+
* True when a `fireInternalDispatch` failure is Netlify's Functions platform
|
|
3787
|
+
* loop-protection response (`HTTP 508 Loop Detected`), matched against the
|
|
3788
|
+
* exact message `self-dispatch.ts`'s `dispatchResponseError` constructs
|
|
3789
|
+
* (`Self-dispatch to ${path} returned HTTP ${res.status} ${res.statusText}...`).
|
|
3790
|
+
* Matches on the status code alone (not the reason phrase text) so it is
|
|
3791
|
+
* robust to any wording Netlify's edge puts in `statusText`.
|
|
3792
|
+
*
|
|
3793
|
+
* VERIFIED: production `agent_runs` diagnostics show exactly this failure mode
|
|
3794
|
+
* — 8 successful `chain_dispatch_sent` self-dispatches followed by a 9th/10th
|
|
3795
|
+
* that dies with `HTTP 508 Loop Detected`, terminal reason
|
|
3796
|
+
* `background_continuation_dispatch_failed`. UNVERIFIED (Netlify does not
|
|
3797
|
+
* document the mechanism — checked the Functions overview, Functions API
|
|
3798
|
+
* reference, Background Functions overview, Status Codes reference, and
|
|
3799
|
+
* Request Chain troubleshooting docs, none mention it): the ONLY public
|
|
3800
|
+
* confirmation is a Netlify staff forum reply — "we prevent multiple
|
|
3801
|
+
* executions after one-another as that's a 'loop' ... I believe we enforce
|
|
3802
|
+
* this after 9 or 10 self-invocations"
|
|
3803
|
+
* (https://answers.netlify.com/t/self-invoke-background-function-via-post-requests/146012)
|
|
3804
|
+
* — which also confirms Background Functions do NOT escape the limit (the
|
|
3805
|
+
* reporter's case was already a `-background` function self-invoking). See
|
|
3806
|
+
* `MAX_NESTED_SELF_DISPATCH_DEPTH` for how this classification is used.
|
|
3807
|
+
*/
|
|
3808
|
+
export function isLoopProtectionDispatchError(err) {
|
|
3809
|
+
if (!(err instanceof Error))
|
|
3810
|
+
return false;
|
|
3811
|
+
return /\bHTTP\s*508\b/i.test(err.message);
|
|
3812
|
+
}
|
|
3813
|
+
/**
|
|
3814
|
+
* Conservative safety margin on NESTED self-dispatch chaining — a
|
|
3815
|
+
* continuation dispatched directly from within the live invocation that is
|
|
3816
|
+
* about to finish, as opposed to being picked up later by the
|
|
3817
|
+
* unclaimed-background-run sweep (`agent-chat-plugin.ts`), which fires its
|
|
3818
|
+
* redispatch from an unrelated, timer-driven invocation rather than from
|
|
3819
|
+
* inside the chain's own execution.
|
|
3820
|
+
*
|
|
3821
|
+
* Netlify's loop-protection ceiling is undocumented and platform-reported
|
|
3822
|
+
* only approximately ("I believe... 9 or 10" — see
|
|
3823
|
+
* `isLoopProtectionDispatchError`), so hard-coding that exact number here
|
|
3824
|
+
* would be pinning behavior to a number Netlify itself won't commit to, and
|
|
3825
|
+
* production evidence shows it can trigger by the 9th self-dispatch. Rather
|
|
3826
|
+
* than only reacting after triggering that undocumented limit,
|
|
3827
|
+
* `chainServerDrivenContinuation` proactively hands a chunk to the sweep once
|
|
3828
|
+
* `backgroundContinuationCount` (nested hops since the last chain break)
|
|
3829
|
+
* reaches this value — comfortably below the observed ~9-10 failure point —
|
|
3830
|
+
* instead of attempting another nested dispatch. This is the SAME deferred-
|
|
3831
|
+
* recovery path already used when a dispatch fails outright: the row is left
|
|
3832
|
+
* `status='running', dispatch_mode='background'` for the sweep to redispatch,
|
|
3833
|
+
* never silently dropped.
|
|
3834
|
+
*
|
|
3835
|
+
* The sweep's redispatch marker intentionally omits `continuationCount` (see
|
|
3836
|
+
* the "Unclaimed background-run sweep" in `agent-chat-plugin.ts`), so a
|
|
3837
|
+
* sweep-recovered chunk's own `backgroundContinuationCount` resets to 0 —
|
|
3838
|
+
* this constant therefore bounds each NESTED segment between chain breaks,
|
|
3839
|
+
* not the whole turn. The TRUE ceiling on total turn length is unaffected by
|
|
3840
|
+
* that reset: it is the durable per-turn SQL ledger (`countRunsForTurn`,
|
|
3841
|
+
* checked above in this function) plus `MAX_BACKGROUND_RUN_CONTINUATIONS` —
|
|
3842
|
+
* both counted independently of this in-marker value — so a legitimately
|
|
3843
|
+
* long turn keeps making progress in bounded nested segments, each recovered
|
|
3844
|
+
* by the sweep, until it genuinely exhausts the intentional overall budget
|
|
3845
|
+
* and fails loud with `turn_continuation_budget_exhausted`.
|
|
3846
|
+
*/
|
|
3847
|
+
export const MAX_NESTED_SELF_DISPATCH_DEPTH = 6;
|
|
3785
3848
|
/**
|
|
3786
3849
|
* Server-driven continuation handoff for a chunk that hit its soft-timeout
|
|
3787
3850
|
* boundary still unfinished: mint the next chunk's runId, PRE-INSERT its run
|
|
@@ -3790,12 +3853,26 @@ export function resolveContinuationDispatchBudget(opts) {
|
|
|
3790
3853
|
* `_process-run` self-dispatch carrying ids only (the body is persisted on
|
|
3791
3854
|
* the row as `dispatch_payload`), fully AWAIT the dispatch acknowledgment
|
|
3792
3855
|
* with retries, and mark this chunk terminal only after the handoff landed.
|
|
3793
|
-
* On failure
|
|
3794
|
-
*
|
|
3795
|
-
*
|
|
3796
|
-
* the
|
|
3797
|
-
*
|
|
3798
|
-
*
|
|
3856
|
+
* On failure this chunk always goes terminal loudly (diag stage + terminal
|
|
3857
|
+
* reason recorded — never a silent loss), but the successor row's fate
|
|
3858
|
+
* depends on WHY the dispatch failed:
|
|
3859
|
+
* - the pre-insert itself failed (no successor row exists) — nothing for a
|
|
3860
|
+
* sweep to find, so this is unrecoverable: fail loud immediately with
|
|
3861
|
+
* `background_continuation_dispatch_failed`.
|
|
3862
|
+
* - every dispatch attempt failed but the successor row DOES exist with its
|
|
3863
|
+
* `dispatch_payload` intact — this is RECOVERABLE: the row is left alone
|
|
3864
|
+
* (`status='running', dispatch_mode='background'`) instead of being
|
|
3865
|
+
* errored, so the unclaimed-background-run sweep in `agent-chat-plugin.ts`
|
|
3866
|
+
* can redispatch it once `UNCLAIMED_BACKGROUND_RUN_GRACE_MS` has passed.
|
|
3867
|
+
* This chunk is flipped to errored with the distinct, honest
|
|
3868
|
+
* `background_continuation_dispatch_deferred` reason — the TURN is
|
|
3869
|
+
* deferred, not dead. The sweep still bounds this by
|
|
3870
|
+
* `UNCLAIMED_BACKGROUND_RUN_REDISPATCH_BOUND_MS`: past that it falls back
|
|
3871
|
+
* to the existing loud reap, so a genuinely dead handoff never hangs
|
|
3872
|
+
* silently forever. (For a FOREGROUND self-chain the client additionally
|
|
3873
|
+
* still receives the terminal `auto_continue` event — run-manager emits
|
|
3874
|
+
* it after this callback — so the existing client re-POST path is a
|
|
3875
|
+
* second, faster fallback alongside the sweep.)
|
|
3799
3876
|
*
|
|
3800
3877
|
* `chainViaDurableBackground` selects the dispatch target:
|
|
3801
3878
|
* - true → the durable-background worker chain (unchanged behavior): the
|
|
@@ -3942,7 +4019,18 @@ export async function chainServerDrivenContinuation(opts) {
|
|
|
3942
4019
|
};
|
|
3943
4020
|
let dispatched = false;
|
|
3944
4021
|
let lastDispatchErr;
|
|
3945
|
-
|
|
4022
|
+
// Proactive nested-chain safety margin — see `MAX_NESTED_SELF_DISPATCH_DEPTH`.
|
|
4023
|
+
// Skip the nested dispatch attempt entirely once this segment's hop count
|
|
4024
|
+
// reaches the cap; a nested attempt at this depth is expected to trip
|
|
4025
|
+
// Netlify's loop protection, so there is nothing to gain by trying it and
|
|
4026
|
+
// burning this worker's remaining wall clock on a doomed call. Falls
|
|
4027
|
+
// straight into the same deferred-recovery path below as an exhausted
|
|
4028
|
+
// retry budget.
|
|
4029
|
+
const nestedDepthExceeded = opts.backgroundContinuationCount >= MAX_NESTED_SELF_DISPATCH_DEPTH;
|
|
4030
|
+
if (nestedDepthExceeded) {
|
|
4031
|
+
lastDispatchErr = new Error(`proactive nested-dispatch depth cap reached (backgroundContinuationCount=${opts.backgroundContinuationCount} >= MAX_NESTED_SELF_DISPATCH_DEPTH=${MAX_NESTED_SELF_DISPATCH_DEPTH}) — deferring to the unclaimed-background-run sweep instead of risking Netlify loop protection`);
|
|
4032
|
+
}
|
|
4033
|
+
for (let attempt = 0; !nestedDepthExceeded && attempt < maxDispatchAttempts && !dispatched; attempt++) {
|
|
3946
4034
|
try {
|
|
3947
4035
|
if (attempt > 0) {
|
|
3948
4036
|
// Uncapped budgets (durable-background and true-foreground) keep
|
|
@@ -4003,22 +4091,81 @@ export async function chainServerDrivenContinuation(opts) {
|
|
|
4003
4091
|
}
|
|
4004
4092
|
}
|
|
4005
4093
|
console.error(`[agent-chat] background continuation dispatch attempt ${attempt + 1} failed:`, dispatchErr instanceof Error ? dispatchErr.message : dispatchErr);
|
|
4094
|
+
// Netlify loop protection (see `isLoopProtectionDispatchError`) is a
|
|
4095
|
+
// property of this same live, nested call chain — retrying the exact
|
|
4096
|
+
// same nested self-dispatch within the next few seconds will not
|
|
4097
|
+
// change that, so further attempts are a guaranteed-doomed use of
|
|
4098
|
+
// this worker's remaining wall clock. Stop immediately (instead of
|
|
4099
|
+
// burning the full `maxDispatchAttempts` budget) and fall into the
|
|
4100
|
+
// same deferred-recovery path below, which hands the successor to the
|
|
4101
|
+
// sweep — a genuinely different, non-nested invocation.
|
|
4102
|
+
if (isLoopProtectionDispatchError(dispatchErr)) {
|
|
4103
|
+
break;
|
|
4104
|
+
}
|
|
4006
4105
|
}
|
|
4007
4106
|
}
|
|
4008
4107
|
if (!dispatched) {
|
|
4009
|
-
// The pre-inserted successor row would otherwise sit unclaimed until
|
|
4010
|
-
// the sweep reaps it — error it now so the failure is immediate and
|
|
4011
|
-
// truthful.
|
|
4012
4108
|
if (nextRowInserted) {
|
|
4013
|
-
|
|
4014
|
-
|
|
4109
|
+
// Classify WHY this handoff is being deferred — distinct, greppable
|
|
4110
|
+
// tags so production diagnostics (which is all that is readable from
|
|
4111
|
+
// a background worker) can tell "we proactively avoided Netlify loop
|
|
4112
|
+
// protection", "we hit loop protection and stopped retrying", and "a
|
|
4113
|
+
// generic transient dispatch failure exhausted its retry budget"
|
|
4114
|
+
// apart, instead of lumping every deferred handoff into one bucket.
|
|
4115
|
+
const deferralClassification = nestedDepthExceeded
|
|
4116
|
+
? "proactive_depth_cap"
|
|
4117
|
+
: isLoopProtectionDispatchError(lastDispatchErr)
|
|
4118
|
+
? "netlify_loop_protection"
|
|
4119
|
+
: "dispatch_budget_exhausted";
|
|
4120
|
+
// RECOVERABLE: the successor row already exists in SQL with its
|
|
4121
|
+
// rehydration payload (`dispatch_payload`) intact and is still
|
|
4122
|
+
// `status='running', dispatch_mode='background'` — exactly the state
|
|
4123
|
+
// the unclaimed-background-run sweep (`agent-chat-plugin.ts`) already
|
|
4124
|
+
// scans for. Do NOT error it here: leave it alone so the sweep can
|
|
4125
|
+
// redispatch it once `UNCLAIMED_BACKGROUND_RUN_GRACE_MS` has passed,
|
|
4126
|
+
// bounded by `UNCLAIMED_BACKGROUND_RUN_REDISPATCH_BOUND_MS` before it
|
|
4127
|
+
// falls back to the existing loud reap
|
|
4128
|
+
// (`background_worker_never_started`) — so this is deferred, never a
|
|
4129
|
+
// silent hang. This chunk still goes terminal (its own soft-timeout
|
|
4130
|
+
// budget is genuinely spent), but with an honest reason: the TURN is
|
|
4131
|
+
// not dead, only this handoff attempt was.
|
|
4132
|
+
//
|
|
4133
|
+
// THREE-SITE INVARIANT (keep in lockstep — a future reader must not
|
|
4134
|
+
// "fix" one without the others): this deferral only survives because
|
|
4135
|
+
// the ~1s client poll in `getActiveRunForThreadAsync`
|
|
4136
|
+
// (run-manager.ts) ALSO skips `reapUnclaimedBackgroundRun` while the
|
|
4137
|
+
// successor is within `UNCLAIMED_BACKGROUND_RUN_REDISPATCH_BOUND_MS`
|
|
4138
|
+
// (via `shouldRedispatchUnclaimedBackgroundRun`). Without that guard a
|
|
4139
|
+
// connected client would reap this row at the 25s grace, before the
|
|
4140
|
+
// ~2-min sweep, defeating the deferral. The sweep in agent-chat-plugin
|
|
4141
|
+
// is the recovery actor; run-manager is the guard; this is the
|
|
4142
|
+
// producer.
|
|
4143
|
+
await d
|
|
4144
|
+
.recordRunDiagnostic(nextRunId, RUN_DIAG_STAGE.workerThrew, `chain_dispatch_deferred[${deferralClassification}]: dispatch budget exhausted (${maxDispatchAttempts} attempts) awaiting unclaimed-run sweep redispatch; ${lastDispatchErr instanceof Error
|
|
4145
|
+
? lastDispatchErr.message
|
|
4146
|
+
: String(lastDispatchErr)}`)
|
|
4147
|
+
.catch(() => { });
|
|
4148
|
+
await d
|
|
4149
|
+
.recordRunDiagnostic(runId, RUN_DIAG_STAGE.workerThrew, `chain_dispatch_deferred[${deferralClassification}] nextRunId=${nextRunId} ${lastDispatchErr instanceof Error
|
|
4150
|
+
? lastDispatchErr.message
|
|
4151
|
+
: String(lastDispatchErr)}`)
|
|
4152
|
+
.catch(() => { });
|
|
4153
|
+
console.error(`[agent-chat] background continuation dispatch deferred (${deferralClassification}); leaving the pre-inserted successor for the unclaimed-run sweep to redispatch:`, lastDispatchErr instanceof Error
|
|
4154
|
+
? lastDispatchErr.message
|
|
4155
|
+
: lastDispatchErr);
|
|
4156
|
+
const statusUpdated = await d
|
|
4157
|
+
.updateRunStatusIfRunning(runId, "errored")
|
|
4015
4158
|
.catch(() => false);
|
|
4016
|
-
if (
|
|
4159
|
+
if (statusUpdated) {
|
|
4017
4160
|
await d
|
|
4018
|
-
.setRunTerminalReason(
|
|
4161
|
+
.setRunTerminalReason(runId, "background_continuation_dispatch_deferred")
|
|
4019
4162
|
.catch(() => { });
|
|
4020
4163
|
}
|
|
4164
|
+
return;
|
|
4021
4165
|
}
|
|
4166
|
+
// No successor row exists at all (the pre-insert itself failed) — there
|
|
4167
|
+
// is nothing for the sweep to find and recover, so this really is
|
|
4168
|
+
// fatal. Fail loud immediately via the shared catch block below.
|
|
4022
4169
|
throw lastDispatchErr instanceof Error
|
|
4023
4170
|
? lastDispatchErr
|
|
4024
4171
|
: new Error(String(lastDispatchErr));
|