@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
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { useEffect, useLayoutEffect, useRef } from "react";
|
|
2
2
|
|
|
3
|
+
import { createDesignCanvasInteractionAdapter } from "@/components/design/canvas-interactions/design-canvas-interactions";
|
|
4
|
+
|
|
3
5
|
const useIsomorphicLayoutEffect =
|
|
4
6
|
typeof window === "undefined" ? useEffect : useLayoutEffect;
|
|
5
7
|
|
|
@@ -240,13 +242,6 @@ const SHIFT_TOOL_SHORTCUTS: Record<
|
|
|
240
242
|
l: { tool: "arrow", handler: "onArrowTool" },
|
|
241
243
|
};
|
|
242
244
|
|
|
243
|
-
const ARROW_DIRECTIONS: Record<string, DesignHotkeyDirection> = {
|
|
244
|
-
ArrowUp: "up",
|
|
245
|
-
ArrowRight: "right",
|
|
246
|
-
ArrowDown: "down",
|
|
247
|
-
ArrowLeft: "left",
|
|
248
|
-
};
|
|
249
|
-
|
|
250
245
|
export function isDesignHotkeyEditableTarget(target: EventTarget | null) {
|
|
251
246
|
if (!target || typeof Element === "undefined") return false;
|
|
252
247
|
if (!(target instanceof Element)) return false;
|
|
@@ -396,17 +391,6 @@ export function handleDesignHotkey(
|
|
|
396
391
|
return true;
|
|
397
392
|
};
|
|
398
393
|
|
|
399
|
-
const runNudge = (direction: DesignHotkeyDirection) => {
|
|
400
|
-
if (!props.onNudge) return false;
|
|
401
|
-
prevent();
|
|
402
|
-
props.onNudge({
|
|
403
|
-
...details,
|
|
404
|
-
direction,
|
|
405
|
-
largeStep: event.shiftKey,
|
|
406
|
-
});
|
|
407
|
-
return true;
|
|
408
|
-
};
|
|
409
|
-
|
|
410
394
|
const runAlign = (edge: DesignHotkeyAlignEdge) => {
|
|
411
395
|
if (!props.onAlignSelection) return false;
|
|
412
396
|
prevent();
|
|
@@ -421,6 +405,17 @@ export function handleDesignHotkey(
|
|
|
421
405
|
return true;
|
|
422
406
|
};
|
|
423
407
|
|
|
408
|
+
const designCanvasInteractions = createDesignCanvasInteractionAdapter({
|
|
409
|
+
shortcuts: props,
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
const runSharedCanvasCommand = () => {
|
|
413
|
+
const result = designCanvasInteractions.dispatchKeyboardEvent(event);
|
|
414
|
+
if (!result.handled) return false;
|
|
415
|
+
prevent();
|
|
416
|
+
return true;
|
|
417
|
+
};
|
|
418
|
+
|
|
424
419
|
// Keep shortcut help global, including while an inspector field or code
|
|
425
420
|
// editor owns focus. No other editing shortcut bypasses the editable guard.
|
|
426
421
|
if (isShowKeyboardShortcutsHotkey(event)) {
|
|
@@ -449,8 +444,8 @@ export function handleDesignHotkey(
|
|
|
449
444
|
}
|
|
450
445
|
}
|
|
451
446
|
|
|
452
|
-
if (event.key
|
|
453
|
-
return
|
|
447
|
+
if (event.key.startsWith("Arrow") && !primary && !event.altKey) {
|
|
448
|
+
return runSharedCanvasCommand();
|
|
454
449
|
}
|
|
455
450
|
|
|
456
451
|
if (event.key === "Escape") return run(props.onEscape);
|
|
@@ -487,7 +482,7 @@ export function handleDesignHotkey(
|
|
|
487
482
|
return true;
|
|
488
483
|
}
|
|
489
484
|
if ((event.key === "Delete" || event.key === "Backspace") && !primary) {
|
|
490
|
-
return run(props.onDelete);
|
|
485
|
+
return runSharedCanvasCommand() || run(props.onDelete);
|
|
491
486
|
}
|
|
492
487
|
|
|
493
488
|
// Current Figma: Cmd+Backspace ungroups. Checked after plain Backspace
|
|
@@ -498,7 +493,10 @@ export function handleDesignHotkey(
|
|
|
498
493
|
}
|
|
499
494
|
|
|
500
495
|
if (primary && key === "z") {
|
|
501
|
-
return
|
|
496
|
+
return (
|
|
497
|
+
runSharedCanvasCommand() ||
|
|
498
|
+
(event.shiftKey ? run(props.onRedo) : run(props.onUndo))
|
|
499
|
+
);
|
|
502
500
|
}
|
|
503
501
|
if (primary && key === "y") return run(props.onRedo);
|
|
504
502
|
// Figma Find uses the operating system's primary modifier, rather than
|
|
@@ -514,14 +512,16 @@ export function handleDesignHotkey(
|
|
|
514
512
|
return run(props.onFind);
|
|
515
513
|
}
|
|
516
514
|
if (primary && !event.altKey && !event.shiftKey && key === "a") {
|
|
517
|
-
return run(props.onSelectAll);
|
|
515
|
+
return runSharedCanvasCommand() || run(props.onSelectAll);
|
|
518
516
|
}
|
|
519
517
|
// Figma's Cmd+Shift+X — toggle strikethrough. Must be checked before plain
|
|
520
518
|
// Cmd+X (cut) below, since that check doesn't itself gate on shiftKey.
|
|
521
519
|
if (primary && event.shiftKey && key === "x") {
|
|
522
520
|
return run(props.onToggleStrikethrough);
|
|
523
521
|
}
|
|
524
|
-
if (primary && key === "x")
|
|
522
|
+
if (primary && key === "x") {
|
|
523
|
+
return runSharedCanvasCommand() || run(props.onCut);
|
|
524
|
+
}
|
|
525
525
|
// Figma's Cmd+U — toggle underline. No existing binding claims plain "u".
|
|
526
526
|
if (primary && !event.altKey && !event.shiftKey && key === "u") {
|
|
527
527
|
return run(props.onToggleUnderline);
|
|
@@ -552,14 +552,16 @@ export function handleDesignHotkey(
|
|
|
552
552
|
if (primary && key === "c") {
|
|
553
553
|
if (event.altKey) return run(props.onCopyProps);
|
|
554
554
|
if (event.shiftKey) return run(props.onCopyAsPng);
|
|
555
|
-
return run(props.onCopy);
|
|
555
|
+
return runSharedCanvasCommand() || run(props.onCopy);
|
|
556
556
|
}
|
|
557
557
|
if (primary && key === "v") {
|
|
558
558
|
if (event.altKey) return run(props.onPasteProps);
|
|
559
559
|
if (event.shiftKey) return run(props.onPasteOver);
|
|
560
|
-
return run(props.onPaste);
|
|
560
|
+
return runSharedCanvasCommand() || run(props.onPaste);
|
|
561
|
+
}
|
|
562
|
+
if (primary && key === "d") {
|
|
563
|
+
return runSharedCanvasCommand() || run(props.onDuplicate);
|
|
561
564
|
}
|
|
562
|
-
if (primary && key === "d") return run(props.onDuplicate);
|
|
563
565
|
// Figma's Shift+Cmd+R — "Paste to replace" — must be checked BEFORE plain
|
|
564
566
|
// Cmd+R (rename) so shift wins; onPasteToReplace absent falls through to
|
|
565
567
|
// rename so existing behavior is unaffected until the handler is wired.
|
|
@@ -658,17 +660,8 @@ export function handleDesignHotkey(
|
|
|
658
660
|
// backward (single-step reorder). Alt+Cmd+]/Alt+Cmd+[ are silent aliases
|
|
659
661
|
// of the plain front/back commands (kept for muscle memory / older
|
|
660
662
|
// bindings), NOT of forward/backward.
|
|
661
|
-
if (
|
|
662
|
-
return
|
|
663
|
-
}
|
|
664
|
-
if (primary && key === "[") {
|
|
665
|
-
return event.altKey ? run(props.onSendToBack) : run(props.onSendBackward);
|
|
666
|
-
}
|
|
667
|
-
if (!primary && !event.altKey && !event.shiftKey && key === "]") {
|
|
668
|
-
return run(props.onBringToFront);
|
|
669
|
-
}
|
|
670
|
-
if (!primary && !event.altKey && !event.shiftKey && key === "[") {
|
|
671
|
-
return run(props.onSendToBack);
|
|
663
|
+
if (key === "]" || key === "[" || key === "}" || key === "{") {
|
|
664
|
+
return runSharedCanvasCommand();
|
|
672
665
|
}
|
|
673
666
|
|
|
674
667
|
// Current Figma reserves N / Shift+N for moving to the next / previous
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"@agent-native/core": "workspace:*",
|
|
22
22
|
"@agent-native/creative-context": "workspace:*",
|
|
23
|
-
"@agent-native/pinpoint": "workspace:*",
|
|
24
23
|
"@agent-native/toolkit": "workspace:*",
|
|
25
24
|
"@fontsource-variable/inter": "^5.2.8",
|
|
26
25
|
"@libsql/client": "^0.15.8",
|
|
@@ -54,11 +54,19 @@ ladder.
|
|
|
54
54
|
Hosted production sources appear only when Dispatch has their
|
|
55
55
|
<APP>_DATABASE_URL connection variables (or an equivalent
|
|
56
56
|
AGENT_NATIVE_THREAD_DEBUG_DATABASES configuration).
|
|
57
|
+
- For reliability triage, call `list-agent-run-failures` first, then inspect a
|
|
58
|
+
returned run with `get-agent-thread-debug` using the same source id. Do not
|
|
59
|
+
infer run failure from thread text search. Cross-app results may be partial;
|
|
60
|
+
preserve the returned per-source health instead of treating an unavailable
|
|
61
|
+
source as zero failures.
|
|
57
62
|
|
|
58
63
|
## Application State
|
|
59
64
|
|
|
60
65
|
- `navigation` exposes current Dispatch view, selected integration/resource,
|
|
61
66
|
approval, route, or settings panel.
|
|
67
|
+
- On Thread Debug, `navigation.threadDebugMode`, `sourceId`,
|
|
68
|
+
`inspectSourceId`, `ownerEmail`, `failureStatus`, `range`, `query`, `runId`,
|
|
69
|
+
and `threadId` expose the visible failure or thread filters and selection.
|
|
62
70
|
- `navigate` moves the UI to setup, vault, integrations, resources, routing,
|
|
63
71
|
approval, and operator surfaces.
|
|
64
72
|
|
|
@@ -183,6 +183,35 @@ Real credential values belong only in local `.env` files, deployment configurati
|
|
|
183
183
|
| `DATABASE_URL` | Production yes, local dev no | Persistent SQL connection string (local dev default: `file:./data/app.db`) |
|
|
184
184
|
| `DATABASE_AUTH_TOKEN` | Only when the provider needs it | Auth token for providers such as Turso/libSQL |
|
|
185
185
|
|
|
186
|
+
### Cross-app Thread Debug sources
|
|
187
|
+
|
|
188
|
+
Dispatch can inspect agent runs from other apps without moving their trace data
|
|
189
|
+
out of the app-owned database. Configure these connections only on the
|
|
190
|
+
production Dispatch runtime, and use database credentials that are restricted
|
|
191
|
+
to read-only access.
|
|
192
|
+
|
|
193
|
+
For one source, set an app-prefixed URL such as
|
|
194
|
+
`CLIPS_DATABASE_URL` and, when required, `CLIPS_DATABASE_AUTH_TOKEN`. For
|
|
195
|
+
multiple or explicitly named sources, set `AGENT_NATIVE_THREAD_DEBUG_DATABASES`
|
|
196
|
+
to JSON that refers to separate environment variable names:
|
|
197
|
+
|
|
198
|
+
```json
|
|
199
|
+
[
|
|
200
|
+
{
|
|
201
|
+
"id": "clips",
|
|
202
|
+
"label": "Clips",
|
|
203
|
+
"databaseUrlEnv": "DISPATCH_THREAD_DEBUG_CLIPS_DATABASE_URL",
|
|
204
|
+
"databaseAuthTokenEnv": "DISPATCH_THREAD_DEBUG_CLIPS_DATABASE_AUTH_TOKEN"
|
|
205
|
+
}
|
|
206
|
+
]
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Set the referenced values in the deployment's secret configuration. Never put
|
|
210
|
+
database URLs or tokens in this file, `netlify.toml`, source code, fixtures, or
|
|
211
|
+
logs. Do not grant deploy previews access to production app databases by
|
|
212
|
+
default. Thread Debug reports configured-but-missing or unreadable sources
|
|
213
|
+
separately from sources that returned zero failures.
|
|
214
|
+
|
|
186
215
|
## Extensions (Framework Feature)
|
|
187
216
|
|
|
188
217
|
The framework provides **Extensions** — mini sandboxed Alpine.js apps that run inside iframes. Extensions let users (or the agent) create interactive widgets, dashboards, and utilities without modifying the app's source code. They appear in the sidebar under an "Extensions" section. (Distinct from LLM tools — the function-calling primitives the agent invokes.)
|
|
@@ -18,6 +18,20 @@ function stripUndefined(args: Record<string, unknown>) {
|
|
|
18
18
|
);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
function threadDebugLookbackHours(value: unknown): number {
|
|
22
|
+
if (value === "7d") return 168;
|
|
23
|
+
if (value === "30d") return 720;
|
|
24
|
+
return 24;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function threadDebugFailureStatus(
|
|
28
|
+
value: unknown,
|
|
29
|
+
): "all" | "errored" | "aborted" | "truncated" {
|
|
30
|
+
return value === "errored" || value === "aborted" || value === "truncated"
|
|
31
|
+
? value
|
|
32
|
+
: "all";
|
|
33
|
+
}
|
|
34
|
+
|
|
21
35
|
function optionalTimestamp(source: object, key: string) {
|
|
22
36
|
if (!Object.prototype.hasOwnProperty.call(source, key)) return undefined;
|
|
23
37
|
const value = (source as Record<string, unknown>)[key];
|
|
@@ -186,7 +200,18 @@ export default defineAction({
|
|
|
186
200
|
"list-agent-thread-sources",
|
|
187
201
|
{},
|
|
188
202
|
);
|
|
189
|
-
if (nav.
|
|
203
|
+
if (nav.threadDebugMode !== "threads") {
|
|
204
|
+
screen.agentRunFailures = await runDispatchAction(
|
|
205
|
+
"list-agent-run-failures",
|
|
206
|
+
{
|
|
207
|
+
sourceId: nav.sourceId ?? "all",
|
|
208
|
+
ownerEmail: nav.ownerEmail,
|
|
209
|
+
status: threadDebugFailureStatus(nav.failureStatus),
|
|
210
|
+
lookbackHours: threadDebugLookbackHours(nav.range),
|
|
211
|
+
limit: 10,
|
|
212
|
+
},
|
|
213
|
+
);
|
|
214
|
+
} else if (nav.query) {
|
|
190
215
|
screen.threadDebugResults = await runDispatchAction(
|
|
191
216
|
"search-agent-threads",
|
|
192
217
|
{
|
|
@@ -199,7 +224,10 @@ export default defineAction({
|
|
|
199
224
|
}
|
|
200
225
|
if (nav.threadId || nav.runId) {
|
|
201
226
|
const detail = (await runDispatchAction("get-agent-thread-debug", {
|
|
202
|
-
sourceId:
|
|
227
|
+
sourceId:
|
|
228
|
+
nav.runId && nav.inspectSourceId
|
|
229
|
+
? nav.inspectSourceId
|
|
230
|
+
: nav.sourceId,
|
|
203
231
|
threadId: nav.runId ? undefined : nav.threadId,
|
|
204
232
|
runId: nav.runId,
|
|
205
233
|
ownerEmail: nav.ownerEmail,
|
|
@@ -215,6 +243,10 @@ export default defineAction({
|
|
|
215
243
|
debug: detail.debug,
|
|
216
244
|
debugRuns: detail.debugRuns?.slice(-5) ?? [],
|
|
217
245
|
messages: detail.messages?.slice(-6) ?? [],
|
|
246
|
+
runs:
|
|
247
|
+
detail.runs
|
|
248
|
+
?.slice(0, 5)
|
|
249
|
+
.map(({ events: _events, ...run }: any) => run) ?? [],
|
|
218
250
|
};
|
|
219
251
|
}
|
|
220
252
|
} catch (error) {
|