@agent-native/core 0.46.0 → 0.48.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/agent-native.js +41 -0
- package/dist/a2a/handlers.js +2 -2
- package/dist/a2a/handlers.js.map +1 -1
- package/dist/a2a/server.js +2 -2
- package/dist/a2a/server.js.map +1 -1
- package/dist/action.d.ts +43 -2
- package/dist/action.d.ts.map +1 -1
- package/dist/action.js.map +1 -1
- package/dist/agent/context-xray/actions/context-evict.d.ts +7 -1
- package/dist/agent/context-xray/actions/context-evict.d.ts.map +1 -1
- package/dist/agent/context-xray/actions/context-manifest-get.d.ts +4 -1
- package/dist/agent/context-xray/actions/context-manifest-get.d.ts.map +1 -1
- package/dist/agent/context-xray/actions/context-pin.d.ts +7 -1
- package/dist/agent/context-xray/actions/context-pin.d.ts.map +1 -1
- package/dist/agent/context-xray/actions/context-report.d.ts +12 -1
- package/dist/agent/context-xray/actions/context-report.d.ts.map +1 -1
- package/dist/agent/context-xray/actions/context-restore.d.ts +7 -1
- package/dist/agent/context-xray/actions/context-restore.d.ts.map +1 -1
- package/dist/agent/context-xray/apply-directives.d.ts.map +1 -1
- package/dist/agent/context-xray/apply-directives.js.map +1 -1
- package/dist/agent/context-xray/schema.d.ts +10 -10
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +26 -3
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts +1 -1
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts +1 -1
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.js +47 -8
- package/dist/agent/engine/builder-engine.js.map +1 -1
- package/dist/agent/engine/builtin.js +1 -1
- package/dist/agent/engine/builtin.js.map +1 -1
- package/dist/agent/engine/output-tokens.d.ts +1 -1
- package/dist/agent/engine/output-tokens.d.ts.map +1 -1
- package/dist/agent/engine/output-tokens.js +6 -2
- package/dist/agent/engine/output-tokens.js.map +1 -1
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +7 -4
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/engine/types.d.ts +19 -0
- package/dist/agent/engine/types.d.ts.map +1 -1
- package/dist/agent/engine/types.js +6 -0
- package/dist/agent/engine/types.js.map +1 -1
- package/dist/agent/model-config.d.ts +22 -14
- package/dist/agent/model-config.d.ts.map +1 -1
- package/dist/agent/model-config.js +113 -8
- package/dist/agent/model-config.js.map +1 -1
- package/dist/agent/production-agent.d.ts +47 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +267 -46
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-loop-with-resume.d.ts.map +1 -1
- package/dist/agent/run-loop-with-resume.js +10 -0
- package/dist/agent/run-loop-with-resume.js.map +1 -1
- package/dist/agent/run-manager.d.ts +1 -0
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +36 -9
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts +47 -4
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +154 -4
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +57 -2
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/agent/types.d.ts +3 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/agent-web/generator.d.ts +3 -3
- package/dist/appearance/actions/change-appearance.d.ts +6 -1
- package/dist/appearance/actions/change-appearance.d.ts.map +1 -1
- package/dist/application-state/handlers.d.ts +2 -2
- package/dist/application-state/handlers.d.ts.map +1 -1
- package/dist/application-state/store.d.ts.map +1 -1
- package/dist/application-state/store.js +17 -0
- package/dist/application-state/store.js.map +1 -1
- package/dist/catalog.json +2 -1
- package/dist/cli/code-agent-commands.d.ts.map +1 -1
- package/dist/cli/code-agent-commands.js +2 -0
- package/dist/cli/code-agent-commands.js.map +1 -1
- package/dist/cli/code-agent-connector.js +7 -13
- package/dist/cli/code-agent-connector.js.map +1 -1
- package/dist/cli/code-agent-executor.d.ts +54 -2
- package/dist/cli/code-agent-executor.d.ts.map +1 -1
- package/dist/cli/code-agent-executor.js +504 -48
- package/dist/cli/code-agent-executor.js.map +1 -1
- package/dist/cli/code-agent-runs.d.ts +13 -0
- package/dist/cli/code-agent-runs.d.ts.map +1 -1
- package/dist/cli/code-agent-runs.js +36 -0
- package/dist/cli/code-agent-runs.js.map +1 -1
- package/dist/cli/code.js +59 -5
- package/dist/cli/code.js.map +1 -1
- package/dist/cli/connect.js +141 -3
- package/dist/cli/connect.js.map +1 -1
- package/dist/cli/index.js +0 -0
- package/dist/cli/pr-visual-recap-workflow.js +1 -1
- package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
- package/dist/cli/recap.js +476 -46
- package/dist/cli/recap.js.map +1 -1
- package/dist/cli/skills.js +331 -179
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +29 -2
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AgentTaskCard.d.ts.map +1 -1
- package/dist/client/AgentTaskCard.js +17 -2
- package/dist/client/AgentTaskCard.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +310 -1732
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/CommandMenu.d.ts +1 -1
- package/dist/client/CommandMenu.d.ts.map +1 -1
- package/dist/client/CommandMenu.js +1 -1
- package/dist/client/CommandMenu.js.map +1 -1
- package/dist/client/HighlightedCodeBlock.d.ts +40 -0
- package/dist/client/HighlightedCodeBlock.d.ts.map +1 -0
- package/dist/client/HighlightedCodeBlock.js +110 -0
- package/dist/client/HighlightedCodeBlock.js.map +1 -0
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +8 -1
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/PoweredByBadge.d.ts +2 -2
- package/dist/client/PoweredByBadge.d.ts.map +1 -1
- package/dist/client/RunStuckBanner.d.ts +1 -1
- package/dist/client/RunStuckBanner.d.ts.map +1 -1
- package/dist/client/StarfieldBackground.d.ts.map +1 -1
- package/dist/client/StarfieldBackground.js +10 -5
- package/dist/client/StarfieldBackground.js.map +1 -1
- package/dist/client/Turnstile.d.ts +1 -1
- package/dist/client/Turnstile.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts +3 -2
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +13 -9
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/app-providers.d.ts +99 -0
- package/dist/client/app-providers.d.ts.map +1 -0
- package/dist/client/app-providers.js +19 -0
- package/dist/client/app-providers.js.map +1 -0
- package/dist/client/assistant-ui-recovery.d.ts +1 -1
- package/dist/client/auth-redirect-url.d.ts +1 -1
- package/dist/client/auth-redirect-url.d.ts.map +1 -1
- package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts +0 -19
- package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -1
- package/dist/client/blocks/library/AnnotatedCodeBlock.js +141 -55
- package/dist/client/blocks/library/AnnotatedCodeBlock.js.map +1 -1
- package/dist/client/blocks/library/DiffBlock.js +1 -1
- package/dist/client/blocks/library/DiffBlock.js.map +1 -1
- package/dist/client/blocks/library/FileTreeBlock.d.ts.map +1 -1
- package/dist/client/blocks/library/FileTreeBlock.js +1 -1
- package/dist/client/blocks/library/FileTreeBlock.js.map +1 -1
- package/dist/client/blocks/library/HighlightedCode.d.ts.map +1 -1
- package/dist/client/blocks/library/HighlightedCode.js +5 -3
- package/dist/client/blocks/library/HighlightedCode.js.map +1 -1
- package/dist/client/blocks/library/annotation-rail.d.ts +5 -4
- package/dist/client/blocks/library/annotation-rail.d.ts.map +1 -1
- package/dist/client/blocks/library/annotation-rail.js +22 -3
- package/dist/client/blocks/library/annotation-rail.js.map +1 -1
- package/dist/client/blocks/library/diagram.js +1 -1
- package/dist/client/blocks/library/diagram.js.map +1 -1
- package/dist/client/blocks/library/diff.config.d.ts +3 -2
- package/dist/client/blocks/library/diff.config.d.ts.map +1 -1
- package/dist/client/blocks/library/diff.config.js +4 -3
- package/dist/client/blocks/library/diff.config.js.map +1 -1
- package/dist/client/blocks/library/question-form.d.ts.map +1 -1
- package/dist/client/blocks/library/question-form.js +2 -1
- package/dist/client/blocks/library/question-form.js.map +1 -1
- package/dist/client/blocks/library/wireframe-kit.d.ts +1 -1
- package/dist/client/blocks/library/wireframe-kit.d.ts.map +1 -1
- package/dist/client/blocks/library/wireframe.js +1 -1
- package/dist/client/blocks/library/wireframe.js.map +1 -1
- package/dist/client/chat/attachment-adapters.d.ts +58 -0
- package/dist/client/chat/attachment-adapters.d.ts.map +1 -0
- package/dist/client/chat/attachment-adapters.js +331 -0
- package/dist/client/chat/attachment-adapters.js.map +1 -0
- package/dist/client/chat/index.d.ts +13 -0
- package/dist/client/chat/index.d.ts.map +1 -0
- package/dist/client/chat/index.js +13 -0
- package/dist/client/chat/index.js.map +1 -0
- package/dist/client/chat/markdown-renderer.d.ts +49 -0
- package/dist/client/chat/markdown-renderer.d.ts.map +1 -0
- package/dist/client/chat/markdown-renderer.js +391 -0
- package/dist/client/chat/markdown-renderer.js.map +1 -0
- package/dist/client/chat/message-components.d.ts +35 -0
- package/dist/client/chat/message-components.d.ts.map +1 -0
- package/dist/client/chat/message-components.js +452 -0
- package/dist/client/chat/message-components.js.map +1 -0
- package/dist/client/chat/repo-helpers.d.ts +41 -0
- package/dist/client/chat/repo-helpers.d.ts.map +1 -0
- package/dist/client/chat/repo-helpers.js +61 -0
- package/dist/client/chat/repo-helpers.js.map +1 -0
- package/dist/client/chat/run-recovery.d.ts +41 -0
- package/dist/client/chat/run-recovery.d.ts.map +1 -0
- package/dist/client/chat/run-recovery.js +348 -0
- package/dist/client/chat/run-recovery.js.map +1 -0
- package/dist/client/chat/tool-call-display.d.ts +34 -0
- package/dist/client/chat/tool-call-display.d.ts.map +1 -0
- package/dist/client/chat/tool-call-display.js +284 -0
- package/dist/client/chat/tool-call-display.js.map +1 -0
- package/dist/client/code-agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/code-agent-chat-adapter.js +20 -0
- package/dist/client/code-agent-chat-adapter.js.map +1 -1
- package/dist/client/collab/index.d.ts +10 -0
- package/dist/client/collab/index.d.ts.map +1 -0
- package/dist/client/collab/index.js +10 -0
- package/dist/client/collab/index.js.map +1 -0
- package/dist/client/components/AgentPresenceChip.d.ts +1 -1
- package/dist/client/components/AgentPresenceChip.d.ts.map +1 -1
- package/dist/client/components/ApiKeySettings.d.ts +1 -1
- package/dist/client/components/ApiKeySettings.d.ts.map +1 -1
- package/dist/client/components/CodeAgentIndicator.d.ts +1 -1
- package/dist/client/components/CodeAgentIndicator.d.ts.map +1 -1
- package/dist/client/components/CodeRequiredDialog.d.ts +1 -1
- package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
- package/dist/client/components/LiveCursorOverlay.d.ts.map +1 -1
- package/dist/client/components/LiveCursorOverlay.js.map +1 -1
- package/dist/client/components/PresenceBar.d.ts +1 -1
- package/dist/client/components/PresenceBar.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.d.ts.map +1 -1
- package/dist/client/composer/PromptComposer.js +6 -26
- package/dist/client/composer/PromptComposer.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +8 -2
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +21 -9
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/VoiceButton.d.ts +2 -2
- package/dist/client/composer/VoiceButton.d.ts.map +1 -1
- package/dist/client/composer/index.d.ts +1 -1
- package/dist/client/composer/index.d.ts.map +1 -1
- package/dist/client/composer/index.js +1 -1
- package/dist/client/composer/index.js.map +1 -1
- package/dist/client/composer/use-skills.d.ts +1 -1
- package/dist/client/context-xray/ContextMeter.d.ts +1 -1
- package/dist/client/context-xray/ContextMeter.d.ts.map +1 -1
- package/dist/client/context-xray/ContextMeter.js +3 -3
- package/dist/client/context-xray/ContextMeter.js.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.d.ts.map +1 -1
- package/dist/client/context-xray/ContextXRayPanel.js +4 -3
- package/dist/client/context-xray/ContextXRayPanel.js.map +1 -1
- package/dist/client/context-xray/format.d.ts +11 -0
- package/dist/client/context-xray/format.d.ts.map +1 -1
- package/dist/client/context-xray/format.js +16 -0
- package/dist/client/context-xray/format.js.map +1 -1
- package/dist/client/conversation/AgentConversation.d.ts.map +1 -1
- package/dist/client/conversation/AgentConversation.js +8 -53
- package/dist/client/conversation/AgentConversation.js.map +1 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.d.ts +1 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.d.ts.map +1 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.js +14 -1
- package/dist/client/conversation/use-near-bottom-autoscroll.js.map +1 -1
- package/dist/client/create-query-client.d.ts +28 -0
- package/dist/client/create-query-client.d.ts.map +1 -0
- package/dist/client/create-query-client.js +78 -0
- package/dist/client/create-query-client.js.map +1 -0
- package/dist/client/db-admin/DevDatabaseLink.d.ts +1 -1
- package/dist/client/db-admin/DevDatabaseLink.d.ts.map +1 -1
- package/dist/client/db-admin/RowSidePanel.d.ts +1 -1
- package/dist/client/db-admin/RowSidePanel.d.ts.map +1 -1
- package/dist/client/db-admin/RowSidePanel.js +2 -2
- package/dist/client/db-admin/RowSidePanel.js.map +1 -1
- package/dist/client/db-admin/TableEditor.d.ts +1 -1
- package/dist/client/db-admin/TableEditor.d.ts.map +1 -1
- package/dist/client/db-admin/TableEditor.js +1 -1
- package/dist/client/db-admin/TableEditor.js.map +1 -1
- package/dist/client/db-admin/cell-format.d.ts +1 -1
- package/dist/client/db-admin/cell-format.d.ts.map +1 -1
- package/dist/client/dev-overlay/DevOverlay.d.ts +1 -1
- package/dist/client/dev-overlay/DevOverlay.d.ts.map +1 -1
- package/dist/client/editor/index.d.ts +2 -0
- package/dist/client/editor/index.d.ts.map +1 -0
- package/dist/client/editor/index.js +2 -0
- package/dist/client/editor/index.js.map +1 -0
- package/dist/client/error-format.d.ts.map +1 -1
- package/dist/client/error-format.js +4 -0
- package/dist/client/error-format.js.map +1 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.d.ts +1 -1
- package/dist/client/extensions/AgentNativeExtensionFrame.d.ts.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.d.ts +1 -1
- package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionSlot.d.ts +1 -1
- package/dist/client/extensions/ExtensionSlot.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewerPage.d.ts +1 -1
- package/dist/client/extensions/ExtensionViewerPage.d.ts.map +1 -1
- package/dist/client/guided-questions.d.ts +6 -6
- package/dist/client/host-bridge.d.ts.map +1 -1
- package/dist/client/host-bridge.js +2 -0
- package/dist/client/host-bridge.js.map +1 -1
- package/dist/client/index.d.ts +7 -6
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +5 -3
- package/dist/client/index.js.map +1 -1
- package/dist/client/onboarding/OnboardingBanner.d.ts +1 -1
- package/dist/client/onboarding/OnboardingBanner.d.ts.map +1 -1
- package/dist/client/onboarding/OnboardingPanel.d.ts +1 -1
- package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
- package/dist/client/onboarding/SetupButton.d.ts +1 -1
- package/dist/client/onboarding/SetupButton.d.ts.map +1 -1
- package/dist/client/org/InvitationBanner.d.ts +1 -1
- package/dist/client/org/InvitationBanner.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts +1 -1
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/RequireActiveOrg.d.ts +1 -1
- package/dist/client/org/RequireActiveOrg.d.ts.map +1 -1
- package/dist/client/org/hooks.d.ts +3 -3
- package/dist/client/org/hooks.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.d.ts +2 -2
- package/dist/client/progress/RunsTray.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.js +34 -9
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
- package/dist/client/resources/ResourceEditor.js +1 -1
- package/dist/client/resources/ResourceEditor.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +2 -0
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/rich-markdown-editor/BubbleToolbar.d.ts +1 -1
- package/dist/client/rich-markdown-editor/BubbleToolbar.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/CodeBlockNode.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/CodeBlockNode.js +2 -1
- package/dist/client/rich-markdown-editor/CodeBlockNode.js.map +1 -1
- package/dist/client/rich-markdown-editor/ImageExtension.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/ImageExtension.js +2 -1
- package/dist/client/rich-markdown-editor/ImageExtension.js.map +1 -1
- package/dist/client/rich-markdown-editor/RegistryBlockNode.d.ts +1 -1
- package/dist/client/rich-markdown-editor/RegistryBlockNode.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/RegistryBlockNode.js +1 -1
- package/dist/client/rich-markdown-editor/RegistryBlockNode.js.map +1 -1
- package/dist/client/rich-markdown-editor/RichMarkdownEditor.d.ts +1 -1
- package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/SharedRichEditor.js +2 -3
- package/dist/client/rich-markdown-editor/SharedRichEditor.js.map +1 -1
- package/dist/client/rich-markdown-editor/SlashCommandMenu.d.ts +1 -1
- package/dist/client/rich-markdown-editor/SlashCommandMenu.d.ts.map +1 -1
- package/dist/client/route-state.d.ts +12 -2
- package/dist/client/route-state.d.ts.map +1 -1
- package/dist/client/route-state.js +1 -1
- package/dist/client/route-state.js.map +1 -1
- package/dist/client/route-warmup.d.ts +1 -1
- package/dist/client/route-warmup.d.ts.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
- package/dist/client/settings/useBuilderStatus.d.ts +2 -2
- package/dist/client/sharing/ShareDialog.d.ts +1 -1
- package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
- package/dist/client/sse-event-processor.d.ts +8 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +33 -10
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/terminal/AgentTerminal.d.ts +1 -1
- package/dist/client/terminal/AgentTerminal.d.ts.map +1 -1
- package/dist/client/terminal/AgentTerminal.js +4 -2
- package/dist/client/terminal/AgentTerminal.js.map +1 -1
- package/dist/client/tool-cells/BashCell.d.ts +25 -0
- package/dist/client/tool-cells/BashCell.d.ts.map +1 -0
- package/dist/client/tool-cells/BashCell.js +49 -0
- package/dist/client/tool-cells/BashCell.js.map +1 -0
- package/dist/client/tool-cells/EditCell.d.ts +24 -0
- package/dist/client/tool-cells/EditCell.d.ts.map +1 -0
- package/dist/client/tool-cells/EditCell.js +126 -0
- package/dist/client/tool-cells/EditCell.js.map +1 -0
- package/dist/client/tool-cells/FilesChangedSummary.d.ts +13 -0
- package/dist/client/tool-cells/FilesChangedSummary.d.ts.map +1 -0
- package/dist/client/tool-cells/FilesChangedSummary.js +98 -0
- package/dist/client/tool-cells/FilesChangedSummary.js.map +1 -0
- package/dist/client/tool-cells/WriteCell.d.ts +17 -0
- package/dist/client/tool-cells/WriteCell.d.ts.map +1 -0
- package/dist/client/tool-cells/WriteCell.js +26 -0
- package/dist/client/tool-cells/WriteCell.js.map +1 -0
- package/dist/client/tool-cells/index.d.ts +8 -0
- package/dist/client/tool-cells/index.d.ts.map +1 -0
- package/dist/client/tool-cells/index.js +5 -0
- package/dist/client/tool-cells/index.js.map +1 -0
- package/dist/client/transcription/BuilderTranscriptionCta.d.ts +1 -1
- package/dist/client/transcription/BuilderTranscriptionCta.d.ts.map +1 -1
- package/dist/client/use-chat-threads.d.ts +1 -1
- package/dist/client/use-chat-threads.d.ts.map +1 -1
- package/dist/client/use-chat-threads.js +11 -8
- package/dist/client/use-chat-threads.js.map +1 -1
- package/dist/client/use-db-sync.d.ts +2 -0
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +329 -302
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/code-agents/transcript-normalizer.d.ts +15 -1
- package/dist/code-agents/transcript-normalizer.d.ts.map +1 -1
- package/dist/code-agents/transcript-normalizer.js +47 -0
- package/dist/code-agents/transcript-normalizer.js.map +1 -1
- package/dist/coding-tools/index.d.ts +75 -0
- package/dist/coding-tools/index.d.ts.map +1 -1
- package/dist/coding-tools/index.js +137 -10
- package/dist/coding-tools/index.js.map +1 -1
- package/dist/coding-tools/run-code.d.ts +40 -0
- package/dist/coding-tools/run-code.d.ts.map +1 -0
- package/dist/coding-tools/run-code.js +511 -0
- package/dist/coding-tools/run-code.js.map +1 -0
- package/dist/collab/client.d.ts.map +1 -1
- package/dist/collab/client.js +15 -9
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/ydoc-manager.d.ts +1 -1
- package/dist/collab/ydoc-manager.d.ts.map +1 -1
- package/dist/collab/ydoc-manager.js +1 -1
- package/dist/collab/ydoc-manager.js.map +1 -1
- package/dist/db/client.d.ts +9 -1
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +204 -48
- package/dist/db/client.js.map +1 -1
- package/dist/db/create-get-db.d.ts +38 -0
- package/dist/db/create-get-db.d.ts.map +1 -1
- package/dist/db/create-get-db.js +204 -4
- package/dist/db/create-get-db.js.map +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +159 -67
- package/dist/db/migrations.js.map +1 -1
- package/dist/demo/actions/toggle-demo-mode.d.ts +6 -1
- package/dist/demo/actions/toggle-demo-mode.d.ts.map +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +80 -39
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/workspace-deploy.js +20 -10
- package/dist/deploy/workspace-deploy.js.map +1 -1
- package/dist/extensions/fetch-tool.d.ts.map +1 -1
- package/dist/extensions/fetch-tool.js +62 -7
- package/dist/extensions/fetch-tool.js.map +1 -1
- package/dist/extensions/schema.d.ts +51 -51
- package/dist/extensions/slots/schema.d.ts +13 -13
- package/dist/extensions/web-search-tool.d.ts +41 -0
- package/dist/extensions/web-search-tool.d.ts.map +1 -0
- package/dist/extensions/web-search-tool.js +200 -0
- package/dist/extensions/web-search-tool.js.map +1 -0
- package/dist/file-upload/actions/upload-image.d.ts +26 -1
- package/dist/file-upload/actions/upload-image.d.ts.map +1 -1
- package/dist/file-upload/index.d.ts +1 -1
- package/dist/file-upload/index.d.ts.map +1 -1
- package/dist/file-upload/index.js +1 -1
- package/dist/file-upload/index.js.map +1 -1
- package/dist/file-upload/pre-upload-attachments.d.ts +37 -0
- package/dist/file-upload/pre-upload-attachments.d.ts.map +1 -1
- package/dist/file-upload/pre-upload-attachments.js +79 -19
- package/dist/file-upload/pre-upload-attachments.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/adapters/slack.js +1 -1
- package/dist/integrations/adapters/slack.js.map +1 -1
- package/dist/integrations/plugin.js +1 -1
- package/dist/integrations/plugin.js.map +1 -1
- package/dist/jobs/scheduler.js +70 -21
- package/dist/jobs/scheduler.js.map +1 -1
- package/dist/mcp/actions/create-org-service-token.d.ts +14 -0
- package/dist/mcp/actions/create-org-service-token.d.ts.map +1 -0
- package/dist/mcp/actions/create-org-service-token.js +74 -0
- package/dist/mcp/actions/create-org-service-token.js.map +1 -0
- package/dist/mcp/actions/list-org-service-tokens.d.ts +17 -0
- package/dist/mcp/actions/list-org-service-tokens.d.ts.map +1 -0
- package/dist/mcp/actions/list-org-service-tokens.js +42 -0
- package/dist/mcp/actions/list-org-service-tokens.js.map +1 -0
- package/dist/mcp/actions/revoke-org-service-token.d.ts +7 -0
- package/dist/mcp/actions/revoke-org-service-token.d.ts.map +1 -0
- package/dist/mcp/actions/revoke-org-service-token.js +28 -0
- package/dist/mcp/actions/revoke-org-service-token.js.map +1 -0
- package/dist/mcp/actions/service-token-access.d.ts +24 -0
- package/dist/mcp/actions/service-token-access.d.ts.map +1 -0
- package/dist/mcp/actions/service-token-access.js +63 -0
- package/dist/mcp/actions/service-token-access.js.map +1 -0
- package/dist/mcp/build-server.d.ts +42 -11
- package/dist/mcp/build-server.d.ts.map +1 -1
- package/dist/mcp/build-server.js +53 -3
- package/dist/mcp/build-server.js.map +1 -1
- package/dist/mcp/connect-route.d.ts +35 -0
- package/dist/mcp/connect-route.d.ts.map +1 -1
- package/dist/mcp/connect-route.js +57 -2
- package/dist/mcp/connect-route.js.map +1 -1
- package/dist/mcp/connect-store.d.ts +43 -0
- package/dist/mcp/connect-store.d.ts.map +1 -1
- package/dist/mcp/connect-store.js +129 -12
- package/dist/mcp/connect-store.js.map +1 -1
- package/dist/mcp/oauth-token.d.ts +10 -0
- package/dist/mcp/oauth-token.d.ts.map +1 -1
- package/dist/mcp/oauth-token.js +2 -0
- package/dist/mcp/oauth-token.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +3 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp-client/routes.js +1 -1
- package/dist/mcp-client/routes.js.map +1 -1
- package/dist/org/context.d.ts +4 -0
- package/dist/org/context.d.ts.map +1 -1
- package/dist/org/context.js +10 -0
- package/dist/org/context.js.map +1 -1
- package/dist/org/handlers.d.ts +11 -7
- package/dist/org/handlers.d.ts.map +1 -1
- package/dist/org/handlers.js +0 -8
- package/dist/org/handlers.js.map +1 -1
- package/dist/org/migrations.d.ts.map +1 -1
- package/dist/org/migrations.js +8 -0
- package/dist/org/migrations.js.map +1 -1
- package/dist/org/schema.d.ts +15 -15
- package/dist/progress/actions.d.ts.map +1 -1
- package/dist/progress/actions.js +13 -5
- package/dist/progress/actions.js.map +1 -1
- package/dist/provider-api/actions/delete-staged-dataset.d.ts +9 -0
- package/dist/provider-api/actions/delete-staged-dataset.d.ts.map +1 -0
- package/dist/provider-api/actions/delete-staged-dataset.js +35 -0
- package/dist/provider-api/actions/delete-staged-dataset.js.map +1 -0
- package/dist/provider-api/actions/list-staged-datasets.d.ts +15 -0
- package/dist/provider-api/actions/list-staged-datasets.d.ts.map +1 -0
- package/dist/provider-api/actions/list-staged-datasets.js +41 -0
- package/dist/provider-api/actions/list-staged-datasets.js.map +1 -0
- package/dist/provider-api/actions/query-staged-dataset.d.ts +29 -0
- package/dist/provider-api/actions/query-staged-dataset.d.ts.map +1 -0
- package/dist/provider-api/actions/query-staged-dataset.js +116 -0
- package/dist/provider-api/actions/query-staged-dataset.js.map +1 -0
- package/dist/provider-api/custom-registry.d.ts +92 -0
- package/dist/provider-api/custom-registry.d.ts.map +1 -0
- package/dist/provider-api/custom-registry.js +289 -0
- package/dist/provider-api/custom-registry.js.map +1 -0
- package/dist/provider-api/index.d.ts +88 -52
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +569 -23
- package/dist/provider-api/index.js.map +1 -1
- package/dist/provider-api/staged-datasets-aggregate.d.ts +46 -0
- package/dist/provider-api/staged-datasets-aggregate.d.ts.map +1 -0
- package/dist/provider-api/staged-datasets-aggregate.js +209 -0
- package/dist/provider-api/staged-datasets-aggregate.js.map +1 -0
- package/dist/provider-api/staged-datasets-store.d.ts +76 -0
- package/dist/provider-api/staged-datasets-store.d.ts.map +1 -0
- package/dist/provider-api/staged-datasets-store.js +319 -0
- package/dist/provider-api/staged-datasets-store.js.map +1 -0
- package/dist/provider-api/staging.d.ts +100 -0
- package/dist/provider-api/staging.d.ts.map +1 -0
- package/dist/provider-api/staging.js +281 -0
- package/dist/provider-api/staging.js.map +1 -0
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +13 -1
- package/dist/resources/handlers.js.map +1 -1
- package/dist/scripts/call-agent.d.ts.map +1 -1
- package/dist/scripts/call-agent.js +1 -2
- package/dist/scripts/call-agent.js.map +1 -1
- package/dist/scripts/resources/migrate-learnings.d.ts +1 -1
- package/dist/scripts/resources/migrate-learnings.d.ts.map +1 -1
- package/dist/scripts/resources/migrate-learnings.js +1 -1
- package/dist/scripts/resources/migrate-learnings.js.map +1 -1
- package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
- package/dist/secrets/register-framework-secrets.js +36 -3
- package/dist/secrets/register-framework-secrets.js.map +1 -1
- package/dist/secrets/schema.d.ts +7 -7
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +14 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/action-routes.d.ts.map +1 -1
- package/dist/server/action-routes.js +3 -2
- package/dist/server/action-routes.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +69 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +369 -179
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-discovery.d.ts.map +1 -1
- package/dist/server/agent-discovery.js +13 -16
- package/dist/server/agent-discovery.js.map +1 -1
- package/dist/server/agent-teams-run-queue.d.ts +31 -8
- package/dist/server/agent-teams-run-queue.d.ts.map +1 -1
- package/dist/server/agent-teams-run-queue.js +61 -18
- package/dist/server/agent-teams-run-queue.js.map +1 -1
- package/dist/server/agent-teams.d.ts +27 -1
- package/dist/server/agent-teams.d.ts.map +1 -1
- package/dist/server/agent-teams.js +214 -14
- package/dist/server/agent-teams.js.map +1 -1
- package/dist/server/app-base-path.d.ts +20 -0
- package/dist/server/app-base-path.d.ts.map +1 -1
- package/dist/server/app-base-path.js +36 -0
- package/dist/server/app-base-path.js.map +1 -1
- package/dist/server/attachment-actions.d.ts +43 -0
- package/dist/server/attachment-actions.d.ts.map +1 -0
- package/dist/server/attachment-actions.js +214 -0
- package/dist/server/attachment-actions.js.map +1 -0
- package/dist/server/auth.js +1 -1
- package/dist/server/auth.js.map +1 -1
- package/dist/server/complete-text.d.ts +56 -0
- package/dist/server/complete-text.d.ts.map +1 -0
- package/dist/server/complete-text.js +147 -0
- package/dist/server/complete-text.js.map +1 -0
- package/dist/server/core-routes-plugin.d.ts +1 -0
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +37 -27
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/cors-origins.d.ts.map +1 -1
- package/dist/server/cors-origins.js +6 -1
- package/dist/server/cors-origins.js.map +1 -1
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +2 -1
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/csrf.d.ts +1 -1
- package/dist/server/csrf.d.ts.map +1 -1
- package/dist/server/email-actions.d.ts +19 -0
- package/dist/server/email-actions.d.ts.map +1 -0
- package/dist/server/email-actions.js +191 -0
- package/dist/server/email-actions.js.map +1 -0
- package/dist/server/embed-route.js +1 -1
- package/dist/server/embed-route.js.map +1 -1
- package/dist/server/embed-session.d.ts.map +1 -1
- package/dist/server/embed-session.js +5 -1
- package/dist/server/embed-session.js.map +1 -1
- package/dist/server/entry-server.d.ts +24 -0
- package/dist/server/entry-server.d.ts.map +1 -0
- package/dist/server/entry-server.js +54 -0
- package/dist/server/entry-server.js.map +1 -0
- package/dist/server/framework-request-handler.d.ts.map +1 -1
- package/dist/server/framework-request-handler.js +2 -10
- package/dist/server/framework-request-handler.js.map +1 -1
- package/dist/server/google-oauth.d.ts.map +1 -1
- package/dist/server/google-oauth.js +2 -9
- package/dist/server/google-oauth.js.map +1 -1
- package/dist/server/google-realtime-session.d.ts.map +1 -1
- package/dist/server/google-realtime-session.js +6 -4
- package/dist/server/google-realtime-session.js.map +1 -1
- package/dist/server/h3-helpers.d.ts +39 -0
- package/dist/server/h3-helpers.d.ts.map +1 -1
- package/dist/server/h3-helpers.js +104 -1
- package/dist/server/h3-helpers.js.map +1 -1
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +1 -8
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/open-route.d.ts.map +1 -1
- package/dist/server/open-route.js +1 -0
- package/dist/server/open-route.js.map +1 -1
- package/dist/server/prompts/framework-core-compact.d.ts +19 -0
- package/dist/server/prompts/framework-core-compact.d.ts.map +1 -0
- package/dist/server/prompts/framework-core-compact.js +69 -0
- package/dist/server/prompts/framework-core-compact.js.map +1 -0
- package/dist/server/prompts/framework-core.d.ts +26 -0
- package/dist/server/prompts/framework-core.d.ts.map +1 -0
- package/dist/server/prompts/framework-core.js +130 -0
- package/dist/server/prompts/framework-core.js.map +1 -0
- package/dist/server/prompts/index.d.ts +9 -0
- package/dist/server/prompts/index.d.ts.map +1 -0
- package/dist/server/prompts/index.js +9 -0
- package/dist/server/prompts/index.js.map +1 -0
- package/dist/server/prompts/model-overlays.d.ts +18 -0
- package/dist/server/prompts/model-overlays.d.ts.map +1 -0
- package/dist/server/prompts/model-overlays.js +46 -0
- package/dist/server/prompts/model-overlays.js.map +1 -0
- package/dist/server/prompts/shared-rules.d.ts +29 -0
- package/dist/server/prompts/shared-rules.d.ts.map +1 -0
- package/dist/server/prompts/shared-rules.js +54 -0
- package/dist/server/prompts/shared-rules.js.map +1 -0
- package/dist/server/security-headers.d.ts +7 -1
- package/dist/server/security-headers.d.ts.map +1 -1
- package/dist/server/security-headers.js +11 -0
- package/dist/server/security-headers.js.map +1 -1
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +135 -46
- package/dist/server/ssr-handler.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts.map +1 -1
- package/dist/server/transcribe-voice.js +7 -4
- package/dist/server/transcribe-voice.js.map +1 -1
- package/dist/settings/store.d.ts.map +1 -1
- package/dist/settings/store.js +9 -0
- package/dist/settings/store.js.map +1 -1
- package/dist/shared/markdown-block-split.d.ts +39 -0
- package/dist/shared/markdown-block-split.d.ts.map +1 -0
- package/dist/shared/markdown-block-split.js +97 -0
- package/dist/shared/markdown-block-split.js.map +1 -0
- package/dist/shared/reasoning-effort.js +13 -1
- package/dist/shared/reasoning-effort.js.map +1 -1
- package/dist/shared/streaming-text-smoothing.d.ts +18 -0
- package/dist/shared/streaming-text-smoothing.d.ts.map +1 -1
- package/dist/shared/streaming-text-smoothing.js +70 -4
- package/dist/shared/streaming-text-smoothing.js.map +1 -1
- package/dist/sharing/actions/list-resource-shares.d.ts +24 -1
- package/dist/sharing/actions/list-resource-shares.d.ts.map +1 -1
- package/dist/sharing/actions/set-resource-visibility.d.ts +8 -1
- package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
- package/dist/sharing/actions/share-resource.d.ts +12 -1
- package/dist/sharing/actions/share-resource.d.ts.map +1 -1
- package/dist/sharing/actions/unshare-resource.d.ts +8 -1
- package/dist/sharing/actions/unshare-resource.d.ts.map +1 -1
- package/dist/sharing/schema.d.ts +10 -10
- package/dist/styles/agent-conversation.css +239 -0
- package/dist/templates/default/.agents/skills/delegate-to-agent/SKILL.md +50 -2
- package/dist/templates/default/AGENTS.md +1 -1
- package/dist/templates/default/DEVELOPING.md +19 -0
- package/dist/templates/default/app/entry.client.tsx +4 -1
- package/dist/templates/default/app/entry.server.tsx +4 -56
- package/dist/templates/default/app/global.css +3 -2
- package/dist/templates/default/app/root.tsx +8 -24
- package/dist/templates/default/app/routes/_index.tsx +0 -13
- package/dist/templates/default/package.json +6 -5
- package/dist/templates/default/tsconfig.json +2 -1
- package/dist/templates/starter-shell-sync.spec.ts +118 -0
- package/dist/templates/ui-primitives-sync.spec.ts +399 -0
- package/dist/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +50 -2
- package/dist/terminal/pty-server.js +1 -1
- package/dist/terminal/pty-server.js.map +1 -1
- package/dist/triggers/dispatcher.js +1 -1
- package/dist/triggers/dispatcher.js.map +1 -1
- package/dist/usage/store.d.ts.map +1 -1
- package/dist/usage/store.js +60 -7
- package/dist/usage/store.js.map +1 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +44 -12
- package/dist/vite/client.js.map +1 -1
- package/dist/workspace-files/index.d.ts +4 -0
- package/dist/workspace-files/index.d.ts.map +1 -0
- package/dist/workspace-files/index.js +4 -0
- package/dist/workspace-files/index.js.map +1 -0
- package/dist/workspace-files/schema.d.ts +195 -0
- package/dist/workspace-files/schema.d.ts.map +1 -0
- package/dist/workspace-files/schema.js +48 -0
- package/dist/workspace-files/schema.js.map +1 -0
- package/dist/workspace-files/store.d.ts +89 -0
- package/dist/workspace-files/store.d.ts.map +1 -0
- package/dist/workspace-files/store.js +298 -0
- package/dist/workspace-files/store.js.map +1 -0
- package/dist/workspace-files/tool.d.ts +15 -0
- package/dist/workspace-files/tool.d.ts.map +1 -0
- package/dist/workspace-files/tool.js +225 -0
- package/dist/workspace-files/tool.js.map +1 -0
- package/docs/content/a2a-protocol.md +18 -12
- package/docs/content/actions.md +42 -10
- package/docs/content/agent-mentions.md +7 -8
- package/docs/content/agent-teams.md +23 -37
- package/docs/content/agent-web-surfaces.md +18 -9
- package/docs/content/authentication.md +6 -17
- package/docs/content/automations.md +43 -15
- package/docs/content/cli-adapters.md +25 -24
- package/docs/content/client.md +66 -17
- package/docs/content/cloneable-saas.md +19 -23
- package/docs/content/code-agents-ui.md +3 -31
- package/docs/content/components.md +308 -0
- package/docs/content/context-awareness.md +4 -0
- package/docs/content/creating-templates.md +4 -2
- package/docs/content/cross-app-sso.md +45 -19
- package/docs/content/database.md +26 -1
- package/docs/content/deployment.md +3 -1
- package/docs/content/dispatch.md +9 -37
- package/docs/content/drop-in-agent.md +123 -2
- package/docs/content/embedding-sdk.md +35 -0
- package/docs/content/extensions.md +2 -2
- package/docs/content/external-agents.md +86 -171
- package/docs/content/faq.md +6 -27
- package/docs/content/frames.md +9 -12
- package/docs/content/getting-started.md +80 -77
- package/docs/content/key-concepts.md +29 -19
- package/docs/content/mcp-apps.md +103 -0
- package/docs/content/mcp-clients.md +2 -2
- package/docs/content/mcp-protocol.md +40 -17
- package/docs/content/messaging.md +11 -4
- package/docs/content/migration-workbench.md +4 -47
- package/docs/content/multi-app-workspace.md +48 -17
- package/docs/content/multi-tenancy.md +1 -1
- package/docs/content/notifications.md +8 -6
- package/docs/content/observability.md +26 -15
- package/docs/content/onboarding.md +7 -1
- package/docs/content/pr-visual-recap.md +203 -23
- package/docs/content/progress.md +5 -5
- package/docs/content/pure-agent-apps.md +3 -1
- package/docs/content/real-time-collaboration.md +106 -0
- package/docs/content/recurring-jobs.md +17 -1
- package/docs/content/security.md +17 -3
- package/docs/content/server.md +39 -3
- package/docs/content/sharing.md +20 -1
- package/docs/content/skills-guide.md +151 -125
- package/docs/content/template-analytics.md +8 -0
- package/docs/content/template-assets.md +2 -0
- package/docs/content/template-brain.md +59 -3
- package/docs/content/template-calendar.md +8 -0
- package/docs/content/template-clips.md +11 -2
- package/docs/content/template-content.md +24 -4
- package/docs/content/template-design.md +19 -17
- package/docs/content/template-dispatch.md +2 -0
- package/docs/content/template-forms.md +28 -1
- package/docs/content/template-mail.md +17 -0
- package/docs/content/template-plan.md +177 -10
- package/docs/content/template-slides.md +51 -12
- package/docs/content/template-videos.md +17 -0
- package/docs/content/tracking.md +17 -13
- package/docs/content/using-your-agent.md +15 -5
- package/docs/content/voice-input.md +1 -1
- package/docs/content/what-is-agent-native.md +5 -6
- package/docs/content/workspace-connections.md +138 -424
- package/docs/content/workspace-management.md +12 -128
- package/docs/content/workspace.md +125 -199
- package/docs/content/writing-agent-instructions.md +17 -1
- package/package.json +26 -6
- package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +50 -2
- package/src/templates/default/AGENTS.md +1 -1
- package/src/templates/default/DEVELOPING.md +19 -0
- package/src/templates/default/app/entry.client.tsx +4 -1
- package/src/templates/default/app/entry.server.tsx +4 -56
- package/src/templates/default/app/global.css +3 -2
- package/src/templates/default/app/root.tsx +8 -24
- package/src/templates/default/app/routes/_index.tsx +0 -13
- package/src/templates/default/package.json +6 -5
- package/src/templates/default/tsconfig.json +2 -1
- package/src/templates/starter-shell-sync.spec.ts +118 -0
- package/src/templates/ui-primitives-sync.spec.ts +399 -0
- package/src/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +50 -2
- package/tsconfig.base.json +2 -10
- package/dist/cli/app-skill.d.ts +0 -157
- package/dist/cli/app-skill.d.ts.map +0 -1
- package/dist/cli/audit-agent-web.d.ts +0 -2
- package/dist/cli/audit-agent-web.d.ts.map +0 -1
- package/dist/cli/code-agent-connector.d.ts +0 -17
- package/dist/cli/code-agent-connector.d.ts.map +0 -1
- package/dist/cli/code.d.ts +0 -66
- package/dist/cli/code.d.ts.map +0 -1
- package/dist/cli/connect.d.ts +0 -140
- package/dist/cli/connect.d.ts.map +0 -1
- package/dist/cli/context-xray-local.d.ts +0 -16
- package/dist/cli/context-xray-local.d.ts.map +0 -1
- package/dist/cli/create-workspace.d.ts +0 -8
- package/dist/cli/create-workspace.d.ts.map +0 -1
- package/dist/cli/index.d.ts +0 -3
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/info.d.ts +0 -2
- package/dist/cli/info.d.ts.map +0 -1
- package/dist/cli/mcp-config-writers.d.ts +0 -82
- package/dist/cli/mcp-config-writers.d.ts.map +0 -1
- package/dist/cli/mcp.d.ts +0 -16
- package/dist/cli/mcp.d.ts.map +0 -1
- package/dist/cli/migrate.d.ts +0 -38
- package/dist/cli/migrate.d.ts.map +0 -1
- package/dist/cli/plan-local.d.ts +0 -43
- package/dist/cli/plan-local.d.ts.map +0 -1
- package/dist/cli/plan-publish-store.d.ts +0 -62
- package/dist/cli/plan-publish-store.d.ts.map +0 -1
- package/dist/cli/pr-visual-recap-workflow.d.ts +0 -11
- package/dist/cli/pr-visual-recap-workflow.d.ts.map +0 -1
- package/dist/cli/recap.d.ts +0 -297
- package/dist/cli/recap.d.ts.map +0 -1
- package/dist/cli/skills.d.ts +0 -162
- package/dist/cli/skills.d.ts.map +0 -1
- package/dist/cli/workspace-dev.d.ts +0 -96
- package/dist/cli/workspace-dev.d.ts.map +0 -1
package/dist/org/schema.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare const organizations: import("drizzle-orm/sqlite-core").SQLiteTabl
|
|
|
19
19
|
identity: undefined;
|
|
20
20
|
generated: undefined;
|
|
21
21
|
}, {}, {
|
|
22
|
-
length: number;
|
|
22
|
+
length: number | undefined;
|
|
23
23
|
}>;
|
|
24
24
|
name: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
25
25
|
name: "name";
|
|
@@ -38,7 +38,7 @@ export declare const organizations: import("drizzle-orm/sqlite-core").SQLiteTabl
|
|
|
38
38
|
identity: undefined;
|
|
39
39
|
generated: undefined;
|
|
40
40
|
}, {}, {
|
|
41
|
-
length: number;
|
|
41
|
+
length: number | undefined;
|
|
42
42
|
}>;
|
|
43
43
|
createdBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
44
44
|
name: "created_by";
|
|
@@ -57,7 +57,7 @@ export declare const organizations: import("drizzle-orm/sqlite-core").SQLiteTabl
|
|
|
57
57
|
identity: undefined;
|
|
58
58
|
generated: undefined;
|
|
59
59
|
}, {}, {
|
|
60
|
-
length: number;
|
|
60
|
+
length: number | undefined;
|
|
61
61
|
}>;
|
|
62
62
|
createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
63
63
|
name: "created_at";
|
|
@@ -93,7 +93,7 @@ export declare const organizations: import("drizzle-orm/sqlite-core").SQLiteTabl
|
|
|
93
93
|
identity: undefined;
|
|
94
94
|
generated: undefined;
|
|
95
95
|
}, {}, {
|
|
96
|
-
length: number;
|
|
96
|
+
length: number | undefined;
|
|
97
97
|
}>;
|
|
98
98
|
a2aSecret: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
99
99
|
name: "a2a_secret";
|
|
@@ -112,7 +112,7 @@ export declare const organizations: import("drizzle-orm/sqlite-core").SQLiteTabl
|
|
|
112
112
|
identity: undefined;
|
|
113
113
|
generated: undefined;
|
|
114
114
|
}, {}, {
|
|
115
|
-
length: number;
|
|
115
|
+
length: number | undefined;
|
|
116
116
|
}>;
|
|
117
117
|
};
|
|
118
118
|
dialect: "sqlite";
|
|
@@ -138,7 +138,7 @@ export declare const orgMembers: import("drizzle-orm/sqlite-core").SQLiteTableWi
|
|
|
138
138
|
identity: undefined;
|
|
139
139
|
generated: undefined;
|
|
140
140
|
}, {}, {
|
|
141
|
-
length: number;
|
|
141
|
+
length: number | undefined;
|
|
142
142
|
}>;
|
|
143
143
|
orgId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
144
144
|
name: "org_id";
|
|
@@ -157,7 +157,7 @@ export declare const orgMembers: import("drizzle-orm/sqlite-core").SQLiteTableWi
|
|
|
157
157
|
identity: undefined;
|
|
158
158
|
generated: undefined;
|
|
159
159
|
}, {}, {
|
|
160
|
-
length: number;
|
|
160
|
+
length: number | undefined;
|
|
161
161
|
}>;
|
|
162
162
|
email: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
163
163
|
name: "email";
|
|
@@ -176,7 +176,7 @@ export declare const orgMembers: import("drizzle-orm/sqlite-core").SQLiteTableWi
|
|
|
176
176
|
identity: undefined;
|
|
177
177
|
generated: undefined;
|
|
178
178
|
}, {}, {
|
|
179
|
-
length: number;
|
|
179
|
+
length: number | undefined;
|
|
180
180
|
}>;
|
|
181
181
|
role: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
182
182
|
name: "role";
|
|
@@ -195,7 +195,7 @@ export declare const orgMembers: import("drizzle-orm/sqlite-core").SQLiteTableWi
|
|
|
195
195
|
identity: undefined;
|
|
196
196
|
generated: undefined;
|
|
197
197
|
}, {}, {
|
|
198
|
-
length: number;
|
|
198
|
+
length: number | undefined;
|
|
199
199
|
}>;
|
|
200
200
|
joinedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
201
201
|
name: "joined_at";
|
|
@@ -238,7 +238,7 @@ export declare const orgInvitations: import("drizzle-orm/sqlite-core").SQLiteTab
|
|
|
238
238
|
identity: undefined;
|
|
239
239
|
generated: undefined;
|
|
240
240
|
}, {}, {
|
|
241
|
-
length: number;
|
|
241
|
+
length: number | undefined;
|
|
242
242
|
}>;
|
|
243
243
|
orgId: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
244
244
|
name: "org_id";
|
|
@@ -257,7 +257,7 @@ export declare const orgInvitations: import("drizzle-orm/sqlite-core").SQLiteTab
|
|
|
257
257
|
identity: undefined;
|
|
258
258
|
generated: undefined;
|
|
259
259
|
}, {}, {
|
|
260
|
-
length: number;
|
|
260
|
+
length: number | undefined;
|
|
261
261
|
}>;
|
|
262
262
|
email: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
263
263
|
name: "email";
|
|
@@ -276,7 +276,7 @@ export declare const orgInvitations: import("drizzle-orm/sqlite-core").SQLiteTab
|
|
|
276
276
|
identity: undefined;
|
|
277
277
|
generated: undefined;
|
|
278
278
|
}, {}, {
|
|
279
|
-
length: number;
|
|
279
|
+
length: number | undefined;
|
|
280
280
|
}>;
|
|
281
281
|
invitedBy: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
282
282
|
name: "invited_by";
|
|
@@ -295,7 +295,7 @@ export declare const orgInvitations: import("drizzle-orm/sqlite-core").SQLiteTab
|
|
|
295
295
|
identity: undefined;
|
|
296
296
|
generated: undefined;
|
|
297
297
|
}, {}, {
|
|
298
|
-
length: number;
|
|
298
|
+
length: number | undefined;
|
|
299
299
|
}>;
|
|
300
300
|
createdAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
301
301
|
name: "created_at";
|
|
@@ -331,7 +331,7 @@ export declare const orgInvitations: import("drizzle-orm/sqlite-core").SQLiteTab
|
|
|
331
331
|
identity: undefined;
|
|
332
332
|
generated: undefined;
|
|
333
333
|
}, {}, {
|
|
334
|
-
length: number;
|
|
334
|
+
length: number | undefined;
|
|
335
335
|
}>;
|
|
336
336
|
role: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
337
337
|
name: "role";
|
|
@@ -350,7 +350,7 @@ export declare const orgInvitations: import("drizzle-orm/sqlite-core").SQLiteTab
|
|
|
350
350
|
identity: undefined;
|
|
351
351
|
generated: undefined;
|
|
352
352
|
}, {}, {
|
|
353
|
-
length: number;
|
|
353
|
+
length: number | undefined;
|
|
354
354
|
}>;
|
|
355
355
|
};
|
|
356
356
|
dialect: "sqlite";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/progress/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAchE,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,MAAM,MAAM,GAC3B,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/progress/actions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAchE,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,MAAM,MAAM,GAC3B,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAuJ7B"}
|
package/dist/progress/actions.js
CHANGED
|
@@ -17,13 +17,21 @@ export function createProgressToolEntries(getCurrentUser) {
|
|
|
17
17
|
return {
|
|
18
18
|
"manage-progress": {
|
|
19
19
|
tool: {
|
|
20
|
-
description: `
|
|
20
|
+
description: `Track multi-step task progress visible to the user in the runs tray.
|
|
21
|
+
|
|
22
|
+
Use for non-trivial work with multiple real steps (not single-action lookups). Do NOT create single-step plans. Skip for trivial tasks that finish in one tool call.
|
|
23
|
+
|
|
24
|
+
**Discipline:**
|
|
25
|
+
- Exactly one task in progress at a time; never batch-complete steps after the fact — update as you go.
|
|
26
|
+
- Always transition pending → in_progress before completing a step.
|
|
27
|
+
- If the task pivots (scope change, unexpected blocker), update the current step to reflect it before continuing.
|
|
28
|
+
- End every run with "complete" (succeeded / failed / cancelled). Never leave a run open indefinitely.
|
|
21
29
|
|
|
22
30
|
Actions:
|
|
23
|
-
• "start" — Begin tracking
|
|
24
|
-
• "update" — Report progress
|
|
25
|
-
• "complete" — Mark
|
|
26
|
-
• "list" — List
|
|
31
|
+
• "start" — Begin tracking. Returns a runId for subsequent calls. Params: title (required, short human description e.g. "Triage 42 emails"), step (optional initial step), metadataJson (optional JSON with link/thread/artifact info).
|
|
32
|
+
• "update" — Report progress. Call after each meaningful milestone. Params: runId (required), percent (optional 0–100 when a bound is known), step (optional current step text). Omitted fields stay unchanged.
|
|
33
|
+
• "complete" — Mark finished. Params: runId (required), status (required: "succeeded" | "failed" | "cancelled"), step (optional final step text). Pair with \`notify\` when the user should be alerted.
|
|
34
|
+
• "list" — List recent runs. Use when the user asks "what is still running" or "what did you do earlier". Params: active (optional boolean, filter to in-progress only), limit (optional number, default 20, max 200).`,
|
|
27
35
|
parameters: {
|
|
28
36
|
type: "object",
|
|
29
37
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/progress/actions.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Framework-level agent tools for the progress primitive. Registered as\n * native tools so every template exposes them. Use from long agent loops\n * to communicate status to the user while work is still in-flight.\n *\n * All operations are consolidated into a single `manage-progress` tool\n * with an `action` discriminator.\n */\n\nimport type { ActionEntry } from \"../agent/production-agent.js\";\nimport {\n startRun,\n updateRunProgress,\n completeRun,\n listRuns,\n} from \"./registry.js\";\n\nfunction parseLimit(value: unknown, fallback = 20): number {\n const n = Number(value ?? fallback);\n if (!Number.isFinite(n) || n <= 0) return fallback;\n return Math.min(Math.floor(n), 200);\n}\n\nexport function createProgressToolEntries(\n getCurrentUser: () => string,\n): Record<string, ActionEntry> {\n return {\n \"manage-progress\": {\n tool: {\n description: `Manage long-running task progress visible to the user. Use this whenever a task will take more than a few seconds so the user can watch status in the runs tray.\n\nActions:\n• \"start\" — Begin tracking a new task. Returns a runId to pass to subsequent calls. Params: title (required), step (optional initial step text), metadataJson (optional JSON string with link/thread/artifact info).\n• \"update\" — Report progress on a running task. Call frequently during long loops. Params: runId (required), percent (optional 0–100), step (optional current step text). Omitted fields stay unchanged.\n• \"complete\" — Mark a task as finished. Params: runId (required), status (required: \"succeeded\" | \"failed\" | \"cancelled\"), step (optional final step text). Pairs well with \\`notify\\` to tell the user the outcome.\n• \"list\" — List the user's recent runs. Use when the user asks \"what is still running\" or \"what did you do earlier\". Params: active (optional boolean, filter to in-progress only), limit (optional number, default 20, max 200).`,\n parameters: {\n type: \"object\" as const,\n properties: {\n action: {\n type: \"string\",\n enum: [\"start\", \"update\", \"complete\", \"list\"],\n description:\n 'The operation to perform: \"start\" a new run, \"update\" progress, \"complete\" a run, or \"list\" recent runs.',\n },\n title: {\n type: \"string\",\n description:\n '[start] Short human-readable title, e.g. \"Triage 128 unread emails\".',\n },\n step: {\n type: \"string\",\n description:\n '[start/update/complete] Step description, e.g. \"Fetching inbox\" or \"Drafting reply 23/100\".',\n },\n metadataJson: {\n type: \"string\",\n description:\n \"[start] Optional JSON metadata: link, thread id, artifact path, etc.\",\n },\n runId: {\n type: \"string\",\n description:\n '[update/complete] The id returned by a \"start\" action.',\n },\n percent: {\n type: \"number\",\n description:\n \"[update] Progress 0–100. Omit if the task has no known upper bound.\",\n },\n status: {\n type: \"string\",\n enum: [\"succeeded\", \"failed\", \"cancelled\"],\n description: \"[complete] Terminal status for the run.\",\n },\n active: {\n type: \"boolean\",\n description:\n \"[list] When true, only return runs still in progress.\",\n },\n limit: {\n type: \"number\",\n description: \"[list] Max rows (default 20, max 200).\",\n },\n },\n required: [\"action\"],\n },\n },\n run: async (args: Record<string, unknown>) => {\n const owner = getCurrentUser();\n const action = String(args.action ?? \"\");\n\n switch (action) {\n case \"start\": {\n const title = args.title ? String(args.title) : \"\";\n if (!title) return \"Error: title is required for the start action.\";\n let metadata: Record<string, unknown> | undefined;\n if (args.metadataJson) {\n try {\n metadata = JSON.parse(String(args.metadataJson));\n } catch {\n return \"Error: metadataJson must be valid JSON.\";\n }\n }\n const run = await startRun({\n owner,\n title,\n step: args.step ? String(args.step) : undefined,\n metadata,\n });\n return `Run started. runId=${run.id}`;\n }\n\n case \"update\": {\n const runId = String(args.runId ?? \"\");\n if (!runId)\n return \"Error: runId is required for the update action.\";\n const percent =\n args.percent == null ? undefined : Number(args.percent);\n const run = await updateRunProgress(runId, owner, {\n percent,\n step: args.step ? String(args.step) : undefined,\n });\n if (!run) return `Error: run ${runId} not found.`;\n return `Run updated (percent=${run.percent ?? \"?\"}, step=${run.step ?? \"\"}).`;\n }\n\n case \"complete\": {\n const runId = String(args.runId ?? \"\");\n const status = String(args.status ?? \"\");\n if (!runId || !status) {\n return \"Error: runId and status are required for the complete action.\";\n }\n if (![\"succeeded\", \"failed\", \"cancelled\"].includes(status)) {\n return 'Error: status must be \"succeeded\", \"failed\", or \"cancelled\".';\n }\n const run = await completeRun(\n runId,\n owner,\n status as \"succeeded\" | \"failed\" | \"cancelled\",\n args.step ? { step: String(args.step) } : undefined,\n );\n if (!run) return `Error: run ${runId} not found.`;\n return `Run ${run.id} completed with status=${run.status}.`;\n }\n\n case \"list\": {\n const rows = await listRuns(owner, {\n activeOnly: args.active === true || args.active === \"true\",\n limit: parseLimit(args.limit),\n });\n if (rows.length === 0) {\n return args.active ? \"No active runs.\" : \"No runs.\";\n }\n return rows\n .map(\n (r) =>\n `[${r.status}] ${r.title}${r.percent != null ? ` · ${r.percent}%` : \"\"}${r.step ? ` — ${r.step}` : \"\"} · ${r.startedAt}`,\n )\n .join(\"\\n\");\n }\n\n default:\n return `Error: unknown action \"${action}\". Use one of: start, update, complete, list.`;\n }\n },\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/progress/actions.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Framework-level agent tools for the progress primitive. Registered as\n * native tools so every template exposes them. Use from long agent loops\n * to communicate status to the user while work is still in-flight.\n *\n * All operations are consolidated into a single `manage-progress` tool\n * with an `action` discriminator.\n */\n\nimport type { ActionEntry } from \"../agent/production-agent.js\";\nimport {\n startRun,\n updateRunProgress,\n completeRun,\n listRuns,\n} from \"./registry.js\";\n\nfunction parseLimit(value: unknown, fallback = 20): number {\n const n = Number(value ?? fallback);\n if (!Number.isFinite(n) || n <= 0) return fallback;\n return Math.min(Math.floor(n), 200);\n}\n\nexport function createProgressToolEntries(\n getCurrentUser: () => string,\n): Record<string, ActionEntry> {\n return {\n \"manage-progress\": {\n tool: {\n description: `Track multi-step task progress visible to the user in the runs tray.\n\nUse for non-trivial work with multiple real steps (not single-action lookups). Do NOT create single-step plans. Skip for trivial tasks that finish in one tool call.\n\n**Discipline:**\n- Exactly one task in progress at a time; never batch-complete steps after the fact — update as you go.\n- Always transition pending → in_progress before completing a step.\n- If the task pivots (scope change, unexpected blocker), update the current step to reflect it before continuing.\n- End every run with \"complete\" (succeeded / failed / cancelled). Never leave a run open indefinitely.\n\nActions:\n• \"start\" — Begin tracking. Returns a runId for subsequent calls. Params: title (required, short human description e.g. \"Triage 42 emails\"), step (optional initial step), metadataJson (optional JSON with link/thread/artifact info).\n• \"update\" — Report progress. Call after each meaningful milestone. Params: runId (required), percent (optional 0–100 when a bound is known), step (optional current step text). Omitted fields stay unchanged.\n• \"complete\" — Mark finished. Params: runId (required), status (required: \"succeeded\" | \"failed\" | \"cancelled\"), step (optional final step text). Pair with \\`notify\\` when the user should be alerted.\n• \"list\" — List recent runs. Use when the user asks \"what is still running\" or \"what did you do earlier\". Params: active (optional boolean, filter to in-progress only), limit (optional number, default 20, max 200).`,\n parameters: {\n type: \"object\" as const,\n properties: {\n action: {\n type: \"string\",\n enum: [\"start\", \"update\", \"complete\", \"list\"],\n description:\n 'The operation to perform: \"start\" a new run, \"update\" progress, \"complete\" a run, or \"list\" recent runs.',\n },\n title: {\n type: \"string\",\n description:\n '[start] Short human-readable title, e.g. \"Triage 128 unread emails\".',\n },\n step: {\n type: \"string\",\n description:\n '[start/update/complete] Step description, e.g. \"Fetching inbox\" or \"Drafting reply 23/100\".',\n },\n metadataJson: {\n type: \"string\",\n description:\n \"[start] Optional JSON metadata: link, thread id, artifact path, etc.\",\n },\n runId: {\n type: \"string\",\n description:\n '[update/complete] The id returned by a \"start\" action.',\n },\n percent: {\n type: \"number\",\n description:\n \"[update] Progress 0–100. Omit if the task has no known upper bound.\",\n },\n status: {\n type: \"string\",\n enum: [\"succeeded\", \"failed\", \"cancelled\"],\n description: \"[complete] Terminal status for the run.\",\n },\n active: {\n type: \"boolean\",\n description:\n \"[list] When true, only return runs still in progress.\",\n },\n limit: {\n type: \"number\",\n description: \"[list] Max rows (default 20, max 200).\",\n },\n },\n required: [\"action\"],\n },\n },\n run: async (args: Record<string, unknown>) => {\n const owner = getCurrentUser();\n const action = String(args.action ?? \"\");\n\n switch (action) {\n case \"start\": {\n const title = args.title ? String(args.title) : \"\";\n if (!title) return \"Error: title is required for the start action.\";\n let metadata: Record<string, unknown> | undefined;\n if (args.metadataJson) {\n try {\n metadata = JSON.parse(String(args.metadataJson));\n } catch {\n return \"Error: metadataJson must be valid JSON.\";\n }\n }\n const run = await startRun({\n owner,\n title,\n step: args.step ? String(args.step) : undefined,\n metadata,\n });\n return `Run started. runId=${run.id}`;\n }\n\n case \"update\": {\n const runId = String(args.runId ?? \"\");\n if (!runId)\n return \"Error: runId is required for the update action.\";\n const percent =\n args.percent == null ? undefined : Number(args.percent);\n const run = await updateRunProgress(runId, owner, {\n percent,\n step: args.step ? String(args.step) : undefined,\n });\n if (!run) return `Error: run ${runId} not found.`;\n return `Run updated (percent=${run.percent ?? \"?\"}, step=${run.step ?? \"\"}).`;\n }\n\n case \"complete\": {\n const runId = String(args.runId ?? \"\");\n const status = String(args.status ?? \"\");\n if (!runId || !status) {\n return \"Error: runId and status are required for the complete action.\";\n }\n if (![\"succeeded\", \"failed\", \"cancelled\"].includes(status)) {\n return 'Error: status must be \"succeeded\", \"failed\", or \"cancelled\".';\n }\n const run = await completeRun(\n runId,\n owner,\n status as \"succeeded\" | \"failed\" | \"cancelled\",\n args.step ? { step: String(args.step) } : undefined,\n );\n if (!run) return `Error: run ${runId} not found.`;\n return `Run ${run.id} completed with status=${run.status}.`;\n }\n\n case \"list\": {\n const rows = await listRuns(owner, {\n activeOnly: args.active === true || args.active === \"true\",\n limit: parseLimit(args.limit),\n });\n if (rows.length === 0) {\n return args.active ? \"No active runs.\" : \"No runs.\";\n }\n return rows\n .map(\n (r) =>\n `[${r.status}] ${r.title}${r.percent != null ? ` · ${r.percent}%` : \"\"}${r.step ? ` — ${r.step}` : \"\"} · ${r.startedAt}`,\n )\n .join(\"\\n\");\n }\n\n default:\n return `Error: unknown action \"${action}\". Use one of: start, update, complete, list.`;\n }\n },\n },\n };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-staged-dataset.d.ts","sourceRoot":"","sources":["../../../src/provider-api/actions/delete-staged-dataset.ts"],"names":[],"mappings":";;;;;;;AAQA,wBAkCG"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* delete-staged-dataset — remove a staged dataset and free its storage.
|
|
3
|
+
*/
|
|
4
|
+
import { defineAction } from "../../action.js";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { getCredentialContext } from "../../server/request-context.js";
|
|
7
|
+
import { deleteStagedDataset } from "../staged-datasets-store.js";
|
|
8
|
+
export default defineAction({
|
|
9
|
+
description: "Delete a staged dataset by id, freeing its scratch storage. " +
|
|
10
|
+
"Use after analysis is complete or before re-staging a large dataset under the same name. " +
|
|
11
|
+
"Only the owner who staged the dataset can delete it.",
|
|
12
|
+
schema: z.object({
|
|
13
|
+
datasetId: z
|
|
14
|
+
.string()
|
|
15
|
+
.min(1)
|
|
16
|
+
.describe("Dataset id to delete (from list-staged-datasets or provider-api-request stageAs result)."),
|
|
17
|
+
appId: z.string().min(1).describe("App id that owns the dataset."),
|
|
18
|
+
}),
|
|
19
|
+
http: false,
|
|
20
|
+
run: async (args) => {
|
|
21
|
+
const ctx = getCredentialContext();
|
|
22
|
+
if (!ctx)
|
|
23
|
+
throw new Error("No authenticated context for delete-staged-dataset.");
|
|
24
|
+
const deleted = await deleteStagedDataset({
|
|
25
|
+
id: args.datasetId,
|
|
26
|
+
appId: args.appId,
|
|
27
|
+
ownerEmail: ctx.userEmail,
|
|
28
|
+
});
|
|
29
|
+
if (!deleted) {
|
|
30
|
+
throw new Error(`Dataset ${args.datasetId} not found (or belongs to a different owner/app).`);
|
|
31
|
+
}
|
|
32
|
+
return { deleted: true, datasetId: args.datasetId };
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=delete-staged-dataset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-staged-dataset.js","sourceRoot":"","sources":["../../../src/provider-api/actions/delete-staged-dataset.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,8DAA8D;QAC9D,2FAA2F;QAC3F,sDAAsD;IACxD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,0FAA0F,CAC3F;QACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KACnE,CAAC;IACF,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG;YACN,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAEzE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;YACxC,EAAE,EAAE,IAAI,CAAC,SAAS;YAClB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,GAAG,CAAC,SAAS;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,CAAC,SAAS,mDAAmD,CAC7E,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACtD,CAAC;CACF,CAAC,CAAC","sourcesContent":["/**\n * delete-staged-dataset — remove a staged dataset and free its storage.\n */\nimport { defineAction } from \"../../action.js\";\nimport { z } from \"zod\";\nimport { getCredentialContext } from \"../../server/request-context.js\";\nimport { deleteStagedDataset } from \"../staged-datasets-store.js\";\n\nexport default defineAction({\n description:\n \"Delete a staged dataset by id, freeing its scratch storage. \" +\n \"Use after analysis is complete or before re-staging a large dataset under the same name. \" +\n \"Only the owner who staged the dataset can delete it.\",\n schema: z.object({\n datasetId: z\n .string()\n .min(1)\n .describe(\n \"Dataset id to delete (from list-staged-datasets or provider-api-request stageAs result).\",\n ),\n appId: z.string().min(1).describe(\"App id that owns the dataset.\"),\n }),\n http: false,\n run: async (args) => {\n const ctx = getCredentialContext();\n if (!ctx)\n throw new Error(\"No authenticated context for delete-staged-dataset.\");\n\n const deleted = await deleteStagedDataset({\n id: args.datasetId,\n appId: args.appId,\n ownerEmail: ctx.userEmail,\n });\n\n if (!deleted) {\n throw new Error(\n `Dataset ${args.datasetId} not found (or belongs to a different owner/app).`,\n );\n }\n\n return { deleted: true, datasetId: args.datasetId };\n },\n});\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare const _default: import("../../action.js").ActionDefinition<{
|
|
2
|
+
appId: string;
|
|
3
|
+
}, {
|
|
4
|
+
datasets: {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
rowCount: number;
|
|
8
|
+
columns: string[];
|
|
9
|
+
byteSize: number;
|
|
10
|
+
updatedAt: string;
|
|
11
|
+
}[];
|
|
12
|
+
total: number;
|
|
13
|
+
}>;
|
|
14
|
+
export default _default;
|
|
15
|
+
//# sourceMappingURL=list-staged-datasets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-staged-datasets.d.ts","sourceRoot":"","sources":["../../../src/provider-api/actions/list-staged-datasets.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAQA,wBAqCG"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* list-staged-datasets — enumerate scratch datasets staged by the current user.
|
|
3
|
+
*/
|
|
4
|
+
import { defineAction } from "../../action.js";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { getCredentialContext } from "../../server/request-context.js";
|
|
7
|
+
import { listStagedDatasets } from "../staged-datasets-store.js";
|
|
8
|
+
export default defineAction({
|
|
9
|
+
description: "List staged datasets stored by provider-api-request (stageAs) for the current user and app. " +
|
|
10
|
+
"Returns dataset ids, names, row counts, columns, and sizes. " +
|
|
11
|
+
"Use these ids with query-staged-dataset to run aggregations, or with delete-staged-dataset to free space.",
|
|
12
|
+
schema: z.object({
|
|
13
|
+
appId: z
|
|
14
|
+
.string()
|
|
15
|
+
.min(1)
|
|
16
|
+
.describe("App id that owns the datasets (must match the staging context)."),
|
|
17
|
+
}),
|
|
18
|
+
http: { method: "GET" },
|
|
19
|
+
readOnly: true,
|
|
20
|
+
run: async (args) => {
|
|
21
|
+
const ctx = getCredentialContext();
|
|
22
|
+
if (!ctx)
|
|
23
|
+
throw new Error("No authenticated context for list-staged-datasets.");
|
|
24
|
+
const datasets = await listStagedDatasets({
|
|
25
|
+
appId: args.appId,
|
|
26
|
+
ownerEmail: ctx.userEmail,
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
datasets: datasets.map((d) => ({
|
|
30
|
+
id: d.id,
|
|
31
|
+
name: d.name,
|
|
32
|
+
rowCount: d.rowCount,
|
|
33
|
+
columns: d.columns,
|
|
34
|
+
byteSize: d.byteSize,
|
|
35
|
+
updatedAt: new Date(d.updatedAt).toISOString(),
|
|
36
|
+
})),
|
|
37
|
+
total: datasets.length,
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=list-staged-datasets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-staged-datasets.js","sourceRoot":"","sources":["../../../src/provider-api/actions/list-staged-datasets.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,8FAA8F;QAC9F,8DAA8D;QAC9D,2GAA2G;IAC7G,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,iEAAiE,CAClE;KACJ,CAAC;IACF,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;IACvB,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG;YACN,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAExE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC;YACxC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,GAAG,CAAC,SAAS;SAC1B,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;aAC/C,CAAC,CAAC;YACH,KAAK,EAAE,QAAQ,CAAC,MAAM;SACvB,CAAC;IACJ,CAAC;CACF,CAAC,CAAC","sourcesContent":["/**\n * list-staged-datasets — enumerate scratch datasets staged by the current user.\n */\nimport { defineAction } from \"../../action.js\";\nimport { z } from \"zod\";\nimport { getCredentialContext } from \"../../server/request-context.js\";\nimport { listStagedDatasets } from \"../staged-datasets-store.js\";\n\nexport default defineAction({\n description:\n \"List staged datasets stored by provider-api-request (stageAs) for the current user and app. \" +\n \"Returns dataset ids, names, row counts, columns, and sizes. \" +\n \"Use these ids with query-staged-dataset to run aggregations, or with delete-staged-dataset to free space.\",\n schema: z.object({\n appId: z\n .string()\n .min(1)\n .describe(\n \"App id that owns the datasets (must match the staging context).\",\n ),\n }),\n http: { method: \"GET\" },\n readOnly: true,\n run: async (args) => {\n const ctx = getCredentialContext();\n if (!ctx)\n throw new Error(\"No authenticated context for list-staged-datasets.\");\n\n const datasets = await listStagedDatasets({\n appId: args.appId,\n ownerEmail: ctx.userEmail,\n });\n\n return {\n datasets: datasets.map((d) => ({\n id: d.id,\n name: d.name,\n rowCount: d.rowCount,\n columns: d.columns,\n byteSize: d.byteSize,\n updatedAt: new Date(d.updatedAt).toISOString(),\n })),\n total: datasets.length,\n };\n },\n});\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
declare const _default: import("../../action.js").ActionDefinition<{
|
|
2
|
+
datasetId: string;
|
|
3
|
+
appId: string;
|
|
4
|
+
where?: {
|
|
5
|
+
column: string;
|
|
6
|
+
op: "equals" | "lt" | "lte" | "gt" | "gte" | "not_equals" | "contains" | "not_contains" | "exists" | "not_exists";
|
|
7
|
+
value?: unknown;
|
|
8
|
+
}[] | undefined;
|
|
9
|
+
groupBy?: string[] | undefined;
|
|
10
|
+
aggregate?: {
|
|
11
|
+
column: string;
|
|
12
|
+
op: "max" | "min" | "count" | "sum" | "avg" | "count_distinct";
|
|
13
|
+
as?: string | undefined;
|
|
14
|
+
}[] | undefined;
|
|
15
|
+
select?: string[] | undefined;
|
|
16
|
+
orderBy?: string | undefined;
|
|
17
|
+
orderDir?: "desc" | "asc" | undefined;
|
|
18
|
+
limit?: unknown;
|
|
19
|
+
}, {
|
|
20
|
+
dataset: {
|
|
21
|
+
id: string;
|
|
22
|
+
name: string;
|
|
23
|
+
totalRows: number;
|
|
24
|
+
};
|
|
25
|
+
rowCount: number;
|
|
26
|
+
rows: Record<string, unknown>[];
|
|
27
|
+
}>;
|
|
28
|
+
export default _default;
|
|
29
|
+
//# sourceMappingURL=query-staged-dataset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-staged-dataset.d.ts","sourceRoot":"","sources":["../../../src/provider-api/actions/query-staged-dataset.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,wBAgGG"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* query-staged-dataset — run an in-memory aggregation over a staged dataset.
|
|
3
|
+
*
|
|
4
|
+
* All aggregation is done in TypeScript (no SQL JSON functions) so the action
|
|
5
|
+
* works identically on Postgres and SQLite.
|
|
6
|
+
*/
|
|
7
|
+
import { defineAction } from "../../action.js";
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { getCredentialContext } from "../../server/request-context.js";
|
|
10
|
+
import { getStagedDatasetRows, getStagedDatasetMeta, } from "../staged-datasets-store.js";
|
|
11
|
+
import { runAggregateQuery } from "../staged-datasets-aggregate.js";
|
|
12
|
+
const WhereSchema = z.object({
|
|
13
|
+
column: z.string().min(1),
|
|
14
|
+
op: z.enum([
|
|
15
|
+
"equals",
|
|
16
|
+
"not_equals",
|
|
17
|
+
"contains",
|
|
18
|
+
"not_contains",
|
|
19
|
+
"gt",
|
|
20
|
+
"gte",
|
|
21
|
+
"lt",
|
|
22
|
+
"lte",
|
|
23
|
+
"exists",
|
|
24
|
+
"not_exists",
|
|
25
|
+
]),
|
|
26
|
+
value: z.unknown().optional(),
|
|
27
|
+
});
|
|
28
|
+
const AggregateFieldSchema = z.object({
|
|
29
|
+
column: z.string().min(1).describe("Column to aggregate."),
|
|
30
|
+
op: z
|
|
31
|
+
.enum(["sum", "avg", "count", "min", "max", "count_distinct"])
|
|
32
|
+
.describe("Aggregation function."),
|
|
33
|
+
as: z
|
|
34
|
+
.string()
|
|
35
|
+
.optional()
|
|
36
|
+
.describe("Output column name. Default: {op}_{column}."),
|
|
37
|
+
});
|
|
38
|
+
export default defineAction({
|
|
39
|
+
description: "Run a filter/aggregate/project query over a staged dataset stored by provider-api-request (stageAs). " +
|
|
40
|
+
"All aggregation is done in-process — no SQL dialect differences. " +
|
|
41
|
+
"Use this after staging to compute counts, sums, averages, min/max, or to filter/project rows without re-fetching the provider API.",
|
|
42
|
+
schema: z.object({
|
|
43
|
+
datasetId: z
|
|
44
|
+
.string()
|
|
45
|
+
.min(1)
|
|
46
|
+
.describe("Dataset id returned by provider-api-request when stageAs was set, or from list-staged-datasets."),
|
|
47
|
+
appId: z
|
|
48
|
+
.string()
|
|
49
|
+
.min(1)
|
|
50
|
+
.describe("App id that owns the dataset (must match the staging context)."),
|
|
51
|
+
where: z
|
|
52
|
+
.array(WhereSchema)
|
|
53
|
+
.optional()
|
|
54
|
+
.describe("Optional row-level filters. All clauses must match (AND). " +
|
|
55
|
+
"Ops: equals, not_equals, contains, not_contains, gt, gte, lt, lte, exists, not_exists."),
|
|
56
|
+
groupBy: z
|
|
57
|
+
.array(z.string().min(1))
|
|
58
|
+
.optional()
|
|
59
|
+
.describe("Column(s) to group by. Omit for a single aggregate over all rows."),
|
|
60
|
+
aggregate: z
|
|
61
|
+
.array(AggregateFieldSchema)
|
|
62
|
+
.optional()
|
|
63
|
+
.describe("Aggregation fields. When set, non-group columns are aggregated. " +
|
|
64
|
+
"When omitted, rows are returned as-is (after where + select)."),
|
|
65
|
+
select: z
|
|
66
|
+
.array(z.string().min(1))
|
|
67
|
+
.optional()
|
|
68
|
+
.describe("Column projection when aggregate is empty. Omit to return all columns."),
|
|
69
|
+
orderBy: z.string().optional().describe("Sort output by this column."),
|
|
70
|
+
orderDir: z
|
|
71
|
+
.enum(["asc", "desc"])
|
|
72
|
+
.optional()
|
|
73
|
+
.describe("Sort direction (default asc)."),
|
|
74
|
+
limit: z.coerce
|
|
75
|
+
.number()
|
|
76
|
+
.int()
|
|
77
|
+
.min(1)
|
|
78
|
+
.max(10_000)
|
|
79
|
+
.optional()
|
|
80
|
+
.describe("Maximum rows to return (default all, max 10000)."),
|
|
81
|
+
}),
|
|
82
|
+
http: false,
|
|
83
|
+
run: async (args) => {
|
|
84
|
+
const ctx = getCredentialContext();
|
|
85
|
+
if (!ctx)
|
|
86
|
+
throw new Error("No authenticated context for query-staged-dataset.");
|
|
87
|
+
const meta = await getStagedDatasetMeta({
|
|
88
|
+
id: args.datasetId,
|
|
89
|
+
appId: args.appId,
|
|
90
|
+
ownerEmail: ctx.userEmail,
|
|
91
|
+
});
|
|
92
|
+
if (!meta) {
|
|
93
|
+
throw new Error(`Dataset ${args.datasetId} not found (or belongs to a different owner/app).`);
|
|
94
|
+
}
|
|
95
|
+
const rows = await getStagedDatasetRows({
|
|
96
|
+
id: args.datasetId,
|
|
97
|
+
appId: args.appId,
|
|
98
|
+
ownerEmail: ctx.userEmail,
|
|
99
|
+
});
|
|
100
|
+
const result = runAggregateQuery(rows, {
|
|
101
|
+
where: args.where,
|
|
102
|
+
groupBy: args.groupBy,
|
|
103
|
+
aggregate: args.aggregate,
|
|
104
|
+
select: args.select,
|
|
105
|
+
orderBy: args.orderBy,
|
|
106
|
+
orderDir: args.orderDir,
|
|
107
|
+
limit: args.limit,
|
|
108
|
+
});
|
|
109
|
+
return {
|
|
110
|
+
dataset: { id: meta.id, name: meta.name, totalRows: meta.rowCount },
|
|
111
|
+
rowCount: result.length,
|
|
112
|
+
rows: result,
|
|
113
|
+
};
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
//# sourceMappingURL=query-staged-dataset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-staged-dataset.js","sourceRoot":"","sources":["../../../src/provider-api/actions/query-staged-dataset.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * query-staged-dataset — run an in-memory aggregation over a staged dataset.\n *\n * All aggregation is done in TypeScript (no SQL JSON functions) so the action\n * works identically on Postgres and SQLite.\n */\nimport { defineAction } from \"../../action.js\";\nimport { z } from \"zod\";\nimport { getCredentialContext } from \"../../server/request-context.js\";\nimport {\n getStagedDatasetRows,\n getStagedDatasetMeta,\n} from \"../staged-datasets-store.js\";\nimport { runAggregateQuery } from \"../staged-datasets-aggregate.js\";\n\nconst WhereSchema = z.object({\n column: z.string().min(1),\n op: z.enum([\n \"equals\",\n \"not_equals\",\n \"contains\",\n \"not_contains\",\n \"gt\",\n \"gte\",\n \"lt\",\n \"lte\",\n \"exists\",\n \"not_exists\",\n ]),\n value: z.unknown().optional(),\n});\n\nconst AggregateFieldSchema = z.object({\n column: z.string().min(1).describe(\"Column to aggregate.\"),\n op: z\n .enum([\"sum\", \"avg\", \"count\", \"min\", \"max\", \"count_distinct\"])\n .describe(\"Aggregation function.\"),\n as: z\n .string()\n .optional()\n .describe(\"Output column name. Default: {op}_{column}.\"),\n});\n\nexport default defineAction({\n description:\n \"Run a filter/aggregate/project query over a staged dataset stored by provider-api-request (stageAs). \" +\n \"All aggregation is done in-process — no SQL dialect differences. \" +\n \"Use this after staging to compute counts, sums, averages, min/max, or to filter/project rows without re-fetching the provider API.\",\n schema: z.object({\n datasetId: z\n .string()\n .min(1)\n .describe(\n \"Dataset id returned by provider-api-request when stageAs was set, or from list-staged-datasets.\",\n ),\n appId: z\n .string()\n .min(1)\n .describe(\n \"App id that owns the dataset (must match the staging context).\",\n ),\n where: z\n .array(WhereSchema)\n .optional()\n .describe(\n \"Optional row-level filters. All clauses must match (AND). \" +\n \"Ops: equals, not_equals, contains, not_contains, gt, gte, lt, lte, exists, not_exists.\",\n ),\n groupBy: z\n .array(z.string().min(1))\n .optional()\n .describe(\n \"Column(s) to group by. Omit for a single aggregate over all rows.\",\n ),\n aggregate: z\n .array(AggregateFieldSchema)\n .optional()\n .describe(\n \"Aggregation fields. When set, non-group columns are aggregated. \" +\n \"When omitted, rows are returned as-is (after where + select).\",\n ),\n select: z\n .array(z.string().min(1))\n .optional()\n .describe(\n \"Column projection when aggregate is empty. Omit to return all columns.\",\n ),\n orderBy: z.string().optional().describe(\"Sort output by this column.\"),\n orderDir: z\n .enum([\"asc\", \"desc\"])\n .optional()\n .describe(\"Sort direction (default asc).\"),\n limit: z.coerce\n .number()\n .int()\n .min(1)\n .max(10_000)\n .optional()\n .describe(\"Maximum rows to return (default all, max 10000).\"),\n }),\n http: false,\n run: async (args) => {\n const ctx = getCredentialContext();\n if (!ctx)\n throw new Error(\"No authenticated context for query-staged-dataset.\");\n\n const meta = await getStagedDatasetMeta({\n id: args.datasetId,\n appId: args.appId,\n ownerEmail: ctx.userEmail,\n });\n if (!meta) {\n throw new Error(\n `Dataset ${args.datasetId} not found (or belongs to a different owner/app).`,\n );\n }\n\n const rows = await getStagedDatasetRows({\n id: args.datasetId,\n appId: args.appId,\n ownerEmail: ctx.userEmail,\n });\n\n const result = runAggregateQuery(rows, {\n where: args.where,\n groupBy: args.groupBy,\n aggregate: args.aggregate,\n select: args.select,\n orderBy: args.orderBy,\n orderDir: args.orderDir,\n limit: args.limit,\n });\n\n return {\n dataset: { id: meta.id, name: meta.name, totalRows: meta.rowCount },\n rowCount: result.length,\n rows: result,\n };\n },\n});\n"]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom provider registry — runtime storage and resolution.
|
|
3
|
+
*
|
|
4
|
+
* Lets apps register arbitrary HTTP API providers at runtime without touching
|
|
5
|
+
* the static PROVIDER_CONFIGS list. Provider rows live in the
|
|
6
|
+
* `custom_api_providers` SQL table (created on first use). Credentials
|
|
7
|
+
* referenced in the provider row continue to live in the existing secrets /
|
|
8
|
+
* credentials store — this table stores only key NAMES, never values.
|
|
9
|
+
*
|
|
10
|
+
* Scoping mirrors the `app_secrets` table: each row is scoped to a user
|
|
11
|
+
* (by email) or an organisation (by orgId).
|
|
12
|
+
*
|
|
13
|
+
* Supported auth kinds for custom providers:
|
|
14
|
+
* - bearer → Authorization: Bearer <credential>
|
|
15
|
+
* - basic → Authorization: Basic base64(user:pass)
|
|
16
|
+
* - api-key-header → custom header: <credential>
|
|
17
|
+
*
|
|
18
|
+
* google-service-account and oauth-bearer are intentionally unsupported for
|
|
19
|
+
* custom providers because they require additional out-of-band setup that
|
|
20
|
+
* cannot be expressed in the simple header/key model.
|
|
21
|
+
*/
|
|
22
|
+
export type CustomProviderScope = "user" | "org";
|
|
23
|
+
export type CustomProviderAuthKind = {
|
|
24
|
+
type: "bearer";
|
|
25
|
+
credentialKey: string;
|
|
26
|
+
} | {
|
|
27
|
+
type: "basic";
|
|
28
|
+
usernameKey: string;
|
|
29
|
+
passwordKey: string;
|
|
30
|
+
} | {
|
|
31
|
+
type: "api-key-header";
|
|
32
|
+
credentialKey: string;
|
|
33
|
+
headerName: string;
|
|
34
|
+
} | {
|
|
35
|
+
type: "none";
|
|
36
|
+
};
|
|
37
|
+
export interface CustomProviderConfig {
|
|
38
|
+
id: string;
|
|
39
|
+
scope: CustomProviderScope;
|
|
40
|
+
scopeId: string;
|
|
41
|
+
label: string;
|
|
42
|
+
baseUrl: string;
|
|
43
|
+
auth: CustomProviderAuthKind;
|
|
44
|
+
docsUrls: string[];
|
|
45
|
+
allowedHostSuffixes: string[];
|
|
46
|
+
defaultHeaders: Record<string, string>;
|
|
47
|
+
notes: string;
|
|
48
|
+
createdAt: number;
|
|
49
|
+
updatedAt: number;
|
|
50
|
+
}
|
|
51
|
+
export interface UpsertCustomProviderArgs {
|
|
52
|
+
scope: CustomProviderScope;
|
|
53
|
+
scopeId: string;
|
|
54
|
+
/** Slug used as the provider id (e.g. "my-api"). Must be lowercase, letters/digits/hyphens. */
|
|
55
|
+
id: string;
|
|
56
|
+
label: string;
|
|
57
|
+
baseUrl: string;
|
|
58
|
+
auth: CustomProviderAuthKind;
|
|
59
|
+
docsUrls?: string[];
|
|
60
|
+
allowedHostSuffixes?: string[];
|
|
61
|
+
defaultHeaders?: Record<string, string>;
|
|
62
|
+
notes?: string;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Validate and normalise a custom provider base URL. Throws when the URL is
|
|
66
|
+
* invalid, uses a non-http(s) scheme, or resolves to a private/internal host.
|
|
67
|
+
*/
|
|
68
|
+
export declare function validateCustomBaseUrl(rawUrl: string): Promise<URL>;
|
|
69
|
+
/**
|
|
70
|
+
* Validate user-supplied allowed host suffixes. Each suffix must look like a
|
|
71
|
+
* real registrable domain (at least two labels) and must not be a bare TLD or
|
|
72
|
+
* shared-hosting public suffix where unrelated parties control subdomains.
|
|
73
|
+
*/
|
|
74
|
+
export declare function validateAllowedHostSuffixes(suffixes: string[]): string[];
|
|
75
|
+
/**
|
|
76
|
+
* Create or update a custom provider. Validates the base URL against SSRF
|
|
77
|
+
* rules at write time. Returns the provider id.
|
|
78
|
+
*/
|
|
79
|
+
export declare function upsertCustomProvider(args: UpsertCustomProviderArgs): Promise<string>;
|
|
80
|
+
/**
|
|
81
|
+
* Delete a custom provider. Returns true if a row was deleted.
|
|
82
|
+
*/
|
|
83
|
+
export declare function deleteCustomProvider(scope: CustomProviderScope, scopeId: string, id: string): Promise<boolean>;
|
|
84
|
+
/**
|
|
85
|
+
* List all custom providers visible to a given (scope, scopeId) pair.
|
|
86
|
+
*/
|
|
87
|
+
export declare function listCustomProviders(scope: CustomProviderScope, scopeId: string): Promise<CustomProviderConfig[]>;
|
|
88
|
+
/**
|
|
89
|
+
* Look up one custom provider. Returns null when not found.
|
|
90
|
+
*/
|
|
91
|
+
export declare function getCustomProvider(scope: CustomProviderScope, scopeId: string, id: string): Promise<CustomProviderConfig | null>;
|
|
92
|
+
//# sourceMappingURL=custom-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-registry.d.ts","sourceRoot":"","sources":["../../src/provider-api/custom-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AASH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEjD,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,mBAAmB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,mBAAmB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,+FAA+F;IAC/F,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA+CD;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAkBxE;AAmFD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAkBxE;AAMD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAwDjB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAQjC;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAStC"}
|