@agent-native/core 0.79.26 → 0.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +39 -0
- package/corpus/core/docs/content/a2a-protocol.mdx +97 -9
- package/corpus/core/docs/content/actions.mdx +65 -4
- package/corpus/core/docs/content/agent-mentions.mdx +68 -4
- package/corpus/core/docs/content/agent-surfaces.mdx +112 -8
- package/corpus/core/docs/content/agent-teams.mdx +171 -12
- package/corpus/core/docs/content/agent-web-surfaces.mdx +51 -4
- package/corpus/core/docs/content/authentication.mdx +122 -8
- package/corpus/core/docs/content/automations.mdx +110 -8
- package/corpus/core/docs/content/blueprint-installer.mdx +42 -4
- package/corpus/core/docs/content/cli-adapters.mdx +44 -4
- package/corpus/core/docs/content/client.mdx +79 -8
- package/corpus/core/docs/content/cloneable-saas.mdx +85 -8
- package/corpus/core/docs/content/code-agents-ui.mdx +98 -8
- package/corpus/core/docs/content/components.mdx +118 -8
- package/corpus/core/docs/content/context-awareness.mdx +98 -8
- package/corpus/core/docs/content/creating-templates.mdx +49 -4
- package/corpus/core/docs/content/cross-app-sso.mdx +109 -8
- package/corpus/core/docs/content/database.mdx +56 -4
- package/corpus/core/docs/content/deployment.mdx +103 -8
- package/corpus/core/docs/content/dispatch.mdx +134 -8
- package/corpus/core/docs/content/drop-in-agent.mdx +63 -4
- package/corpus/core/docs/content/durable-background-runs.mdx +98 -8
- package/corpus/core/docs/content/durable-resume.mdx +47 -4
- package/corpus/core/docs/content/embedding-sdk.mdx +83 -8
- package/corpus/core/docs/content/evals.mdx +102 -8
- package/corpus/core/docs/content/extensions.mdx +113 -9
- package/corpus/core/docs/content/external-agents.mdx +119 -8
- package/corpus/core/docs/content/faq.mdx +98 -8
- package/corpus/core/docs/content/file-uploads.mdx +61 -4
- package/corpus/core/docs/content/frames.mdx +90 -8
- package/corpus/core/docs/content/generative-ui.mdx +50 -4
- package/corpus/core/docs/content/getting-started.mdx +34 -4
- package/corpus/core/docs/content/harness-agents.mdx +77 -8
- package/corpus/core/docs/content/human-approval.mdx +50 -4
- package/corpus/core/docs/content/key-concepts.mdx +102 -8
- package/corpus/core/docs/content/local-file-mode.mdx +58 -4
- package/corpus/core/docs/content/locales/ar-SA/a2a-protocol.mdx +97 -9
- package/corpus/core/docs/content/locales/ar-SA/actions.mdx +65 -4
- package/corpus/core/docs/content/locales/ar-SA/agent-mentions.mdx +68 -4
- package/corpus/core/docs/content/locales/ar-SA/agent-surfaces.mdx +114 -8
- package/corpus/core/docs/content/locales/ar-SA/agent-teams.mdx +174 -12
- package/corpus/core/docs/content/locales/ar-SA/agent-web-surfaces.mdx +49 -4
- package/corpus/core/docs/content/locales/ar-SA/authentication.mdx +120 -8
- package/corpus/core/docs/content/locales/ar-SA/automations.mdx +110 -8
- package/corpus/core/docs/content/locales/ar-SA/blueprint-installer.mdx +42 -4
- package/corpus/core/docs/content/locales/ar-SA/cli-adapters.mdx +40 -4
- package/corpus/core/docs/content/locales/ar-SA/client.mdx +80 -8
- package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +85 -8
- package/corpus/core/docs/content/locales/ar-SA/code-agents-ui.mdx +99 -8
- package/corpus/core/docs/content/locales/ar-SA/components.mdx +114 -8
- package/corpus/core/docs/content/locales/ar-SA/context-awareness.mdx +100 -8
- package/corpus/core/docs/content/locales/ar-SA/creating-templates.mdx +51 -4
- package/corpus/core/docs/content/locales/ar-SA/cross-app-sso.mdx +109 -8
- package/corpus/core/docs/content/locales/ar-SA/database.mdx +52 -4
- package/corpus/core/docs/content/locales/ar-SA/deployment.mdx +103 -8
- package/corpus/core/docs/content/locales/ar-SA/dispatch.mdx +134 -8
- package/corpus/core/docs/content/locales/ar-SA/drop-in-agent.mdx +63 -4
- package/corpus/core/docs/content/locales/ar-SA/durable-resume.mdx +47 -4
- package/corpus/core/docs/content/locales/ar-SA/embedding-sdk.mdx +83 -8
- package/corpus/core/docs/content/locales/ar-SA/evals.mdx +102 -8
- package/corpus/core/docs/content/locales/ar-SA/extensions.mdx +113 -9
- package/corpus/core/docs/content/locales/ar-SA/external-agents.mdx +119 -8
- package/corpus/core/docs/content/locales/ar-SA/faq.mdx +98 -8
- package/corpus/core/docs/content/locales/ar-SA/file-uploads.mdx +61 -4
- package/corpus/core/docs/content/locales/ar-SA/frames.mdx +88 -8
- package/corpus/core/docs/content/locales/ar-SA/getting-started.mdx +34 -4
- package/corpus/core/docs/content/locales/ar-SA/harness-agents.mdx +79 -8
- package/corpus/core/docs/content/locales/ar-SA/human-approval.mdx +50 -4
- package/corpus/core/docs/content/locales/ar-SA/key-concepts.mdx +107 -8
- package/corpus/core/docs/content/locales/ar-SA/local-file-mode.mdx +56 -4
- package/corpus/core/docs/content/locales/ar-SA/mcp-apps.mdx +120 -10
- package/corpus/core/docs/content/locales/ar-SA/mcp-clients.mdx +133 -8
- package/corpus/core/docs/content/locales/ar-SA/mcp-protocol.mdx +105 -8
- package/corpus/core/docs/content/locales/ar-SA/messaging.mdx +115 -8
- package/corpus/core/docs/content/locales/ar-SA/migration-workbench.mdx +47 -4
- package/corpus/core/docs/content/locales/ar-SA/multi-app-workspace.mdx +91 -8
- package/corpus/core/docs/content/locales/ar-SA/multi-tenancy.mdx +80 -8
- package/corpus/core/docs/content/locales/ar-SA/native-chat-ui.mdx +104 -8
- package/corpus/core/docs/content/locales/ar-SA/notifications.mdx +135 -8
- package/corpus/core/docs/content/locales/ar-SA/observability.mdx +102 -8
- package/corpus/core/docs/content/locales/ar-SA/observational-memory.mdx +87 -8
- package/corpus/core/docs/content/locales/ar-SA/onboarding.mdx +45 -4
- package/corpus/core/docs/content/locales/ar-SA/plan-plugin.mdx +99 -8
- package/corpus/core/docs/content/locales/ar-SA/pr-visual-recap.mdx +125 -8
- package/corpus/core/docs/content/locales/ar-SA/processors.mdx +41 -4
- package/corpus/core/docs/content/locales/ar-SA/progress.mdx +46 -4
- package/corpus/core/docs/content/locales/ar-SA/pure-agent-apps.mdx +48 -4
- package/corpus/core/docs/content/locales/ar-SA/real-time-collaboration.mdx +102 -8
- package/corpus/core/docs/content/locales/ar-SA/recurring-jobs.mdx +59 -4
- package/corpus/core/docs/content/locales/ar-SA/routing.mdx +44 -5
- package/corpus/core/docs/content/locales/ar-SA/sandbox-adapters.mdx +43 -4
- package/corpus/core/docs/content/locales/ar-SA/security.mdx +80 -8
- package/corpus/core/docs/content/locales/ar-SA/server.mdx +173 -12
- package/corpus/core/docs/content/locales/ar-SA/sharing.mdx +45 -4
- package/corpus/core/docs/content/locales/ar-SA/skills-guide.mdx +118 -9
- package/corpus/core/docs/content/locales/ar-SA/template-analytics.mdx +46 -4
- package/corpus/core/docs/content/locales/ar-SA/template-assets.mdx +62 -4
- package/corpus/core/docs/content/locales/ar-SA/template-brain.mdx +65 -4
- package/corpus/core/docs/content/locales/ar-SA/template-calendar.mdx +62 -4
- package/corpus/core/docs/content/locales/ar-SA/template-chat.mdx +61 -4
- package/corpus/core/docs/content/locales/ar-SA/template-clips.mdx +52 -4
- package/corpus/core/docs/content/locales/ar-SA/template-content.mdx +62 -4
- package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +101 -4
- package/corpus/core/docs/content/locales/ar-SA/template-dispatch.mdx +57 -4
- package/corpus/core/docs/content/locales/ar-SA/template-forms.mdx +62 -4
- package/corpus/core/docs/content/locales/ar-SA/template-mail.mdx +60 -4
- package/corpus/core/docs/content/locales/ar-SA/template-plan.mdx +61 -4
- package/corpus/core/docs/content/locales/ar-SA/template-slides.mdx +49 -4
- package/corpus/core/docs/content/locales/ar-SA/template-videos.mdx +53 -4
- package/corpus/core/docs/content/locales/ar-SA/tracking.mdx +54 -4
- package/corpus/core/docs/content/locales/ar-SA/using-your-agent.mdx +51 -4
- package/corpus/core/docs/content/locales/ar-SA/voice-input.mdx +43 -4
- package/corpus/core/docs/content/locales/ar-SA/what-is-agent-native.mdx +96 -8
- package/corpus/core/docs/content/locales/ar-SA/workspace-connections.mdx +128 -8
- package/corpus/core/docs/content/locales/ar-SA/workspace-management.mdx +50 -4
- package/corpus/core/docs/content/locales/ar-SA/workspace.mdx +112 -8
- package/corpus/core/docs/content/locales/ar-SA/writing-agent-instructions.mdx +41 -4
- package/corpus/core/docs/content/locales/de-DE/a2a-protocol.mdx +99 -9
- package/corpus/core/docs/content/locales/de-DE/actions.mdx +67 -4
- package/corpus/core/docs/content/locales/de-DE/agent-mentions.mdx +68 -4
- package/corpus/core/docs/content/locales/de-DE/agent-surfaces.mdx +116 -8
- package/corpus/core/docs/content/locales/de-DE/agent-teams.mdx +171 -12
- package/corpus/core/docs/content/locales/de-DE/agent-web-surfaces.mdx +51 -4
- package/corpus/core/docs/content/locales/de-DE/authentication.mdx +122 -8
- package/corpus/core/docs/content/locales/de-DE/automations.mdx +110 -8
- package/corpus/core/docs/content/locales/de-DE/blueprint-installer.mdx +42 -4
- package/corpus/core/docs/content/locales/de-DE/cli-adapters.mdx +44 -4
- package/corpus/core/docs/content/locales/de-DE/client.mdx +79 -8
- package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +85 -8
- package/corpus/core/docs/content/locales/de-DE/code-agents-ui.mdx +100 -8
- package/corpus/core/docs/content/locales/de-DE/components.mdx +118 -8
- package/corpus/core/docs/content/locales/de-DE/context-awareness.mdx +98 -8
- package/corpus/core/docs/content/locales/de-DE/creating-templates.mdx +51 -4
- package/corpus/core/docs/content/locales/de-DE/cross-app-sso.mdx +109 -8
- package/corpus/core/docs/content/locales/de-DE/database.mdx +52 -4
- package/corpus/core/docs/content/locales/de-DE/deployment.mdx +103 -8
- package/corpus/core/docs/content/locales/de-DE/dispatch.mdx +134 -8
- package/corpus/core/docs/content/locales/de-DE/drop-in-agent.mdx +63 -4
- package/corpus/core/docs/content/locales/de-DE/durable-resume.mdx +47 -4
- package/corpus/core/docs/content/locales/de-DE/embedding-sdk.mdx +85 -8
- package/corpus/core/docs/content/locales/de-DE/evals.mdx +102 -8
- package/corpus/core/docs/content/locales/de-DE/extensions.mdx +113 -9
- package/corpus/core/docs/content/locales/de-DE/external-agents.mdx +119 -8
- package/corpus/core/docs/content/locales/de-DE/faq.mdx +98 -8
- package/corpus/core/docs/content/locales/de-DE/file-uploads.mdx +61 -4
- package/corpus/core/docs/content/locales/de-DE/frames.mdx +88 -8
- package/corpus/core/docs/content/locales/de-DE/getting-started.mdx +34 -4
- package/corpus/core/docs/content/locales/de-DE/harness-agents.mdx +79 -8
- package/corpus/core/docs/content/locales/de-DE/human-approval.mdx +50 -4
- package/corpus/core/docs/content/locales/de-DE/key-concepts.mdx +104 -8
- package/corpus/core/docs/content/locales/de-DE/local-file-mode.mdx +58 -4
- package/corpus/core/docs/content/locales/de-DE/mcp-apps.mdx +120 -10
- package/corpus/core/docs/content/locales/de-DE/mcp-clients.mdx +133 -8
- package/corpus/core/docs/content/locales/de-DE/mcp-protocol.mdx +105 -8
- package/corpus/core/docs/content/locales/de-DE/messaging.mdx +115 -8
- package/corpus/core/docs/content/locales/de-DE/migration-workbench.mdx +47 -4
- package/corpus/core/docs/content/locales/de-DE/multi-app-workspace.mdx +91 -8
- package/corpus/core/docs/content/locales/de-DE/multi-tenancy.mdx +80 -8
- package/corpus/core/docs/content/locales/de-DE/native-chat-ui.mdx +108 -8
- package/corpus/core/docs/content/locales/de-DE/notifications.mdx +135 -8
- package/corpus/core/docs/content/locales/de-DE/observability.mdx +102 -8
- package/corpus/core/docs/content/locales/de-DE/observational-memory.mdx +92 -8
- package/corpus/core/docs/content/locales/de-DE/onboarding.mdx +45 -4
- package/corpus/core/docs/content/locales/de-DE/plan-plugin.mdx +99 -8
- package/corpus/core/docs/content/locales/de-DE/pr-visual-recap.mdx +125 -8
- package/corpus/core/docs/content/locales/de-DE/processors.mdx +41 -4
- package/corpus/core/docs/content/locales/de-DE/progress.mdx +46 -4
- package/corpus/core/docs/content/locales/de-DE/pure-agent-apps.mdx +50 -4
- package/corpus/core/docs/content/locales/de-DE/real-time-collaboration.mdx +104 -8
- package/corpus/core/docs/content/locales/de-DE/recurring-jobs.mdx +59 -4
- package/corpus/core/docs/content/locales/de-DE/routing.mdx +44 -5
- package/corpus/core/docs/content/locales/de-DE/sandbox-adapters.mdx +43 -4
- package/corpus/core/docs/content/locales/de-DE/security.mdx +80 -8
- package/corpus/core/docs/content/locales/de-DE/server.mdx +171 -12
- package/corpus/core/docs/content/locales/de-DE/sharing.mdx +45 -4
- package/corpus/core/docs/content/locales/de-DE/skills-guide.mdx +118 -9
- package/corpus/core/docs/content/locales/de-DE/template-analytics.mdx +46 -4
- package/corpus/core/docs/content/locales/de-DE/template-assets.mdx +62 -4
- package/corpus/core/docs/content/locales/de-DE/template-brain.mdx +69 -4
- package/corpus/core/docs/content/locales/de-DE/template-calendar.mdx +62 -4
- package/corpus/core/docs/content/locales/de-DE/template-chat.mdx +61 -4
- package/corpus/core/docs/content/locales/de-DE/template-clips.mdx +52 -4
- package/corpus/core/docs/content/locales/de-DE/template-content.mdx +60 -4
- package/corpus/core/docs/content/locales/de-DE/template-design.mdx +109 -4
- package/corpus/core/docs/content/locales/de-DE/template-dispatch.mdx +57 -4
- package/corpus/core/docs/content/locales/de-DE/template-forms.mdx +64 -4
- package/corpus/core/docs/content/locales/de-DE/template-mail.mdx +60 -4
- package/corpus/core/docs/content/locales/de-DE/template-plan.mdx +63 -4
- package/corpus/core/docs/content/locales/de-DE/template-slides.mdx +49 -4
- package/corpus/core/docs/content/locales/de-DE/template-videos.mdx +53 -4
- package/corpus/core/docs/content/locales/de-DE/tracking.mdx +54 -4
- package/corpus/core/docs/content/locales/de-DE/using-your-agent.mdx +51 -4
- package/corpus/core/docs/content/locales/de-DE/voice-input.mdx +45 -4
- package/corpus/core/docs/content/locales/de-DE/what-is-agent-native.mdx +100 -8
- package/corpus/core/docs/content/locales/de-DE/workspace-connections.mdx +128 -8
- package/corpus/core/docs/content/locales/de-DE/workspace-management.mdx +50 -4
- package/corpus/core/docs/content/locales/de-DE/workspace.mdx +111 -8
- package/corpus/core/docs/content/locales/de-DE/writing-agent-instructions.mdx +45 -4
- package/corpus/core/docs/content/locales/es-ES/a2a-protocol.mdx +99 -9
- package/corpus/core/docs/content/locales/es-ES/actions.mdx +67 -4
- package/corpus/core/docs/content/locales/es-ES/agent-mentions.mdx +68 -4
- package/corpus/core/docs/content/locales/es-ES/agent-surfaces.mdx +120 -8
- package/corpus/core/docs/content/locales/es-ES/agent-teams.mdx +172 -12
- package/corpus/core/docs/content/locales/es-ES/agent-web-surfaces.mdx +51 -4
- package/corpus/core/docs/content/locales/es-ES/authentication.mdx +122 -8
- package/corpus/core/docs/content/locales/es-ES/automations.mdx +110 -8
- package/corpus/core/docs/content/locales/es-ES/blueprint-installer.mdx +42 -4
- package/corpus/core/docs/content/locales/es-ES/cli-adapters.mdx +44 -4
- package/corpus/core/docs/content/locales/es-ES/client.mdx +79 -8
- package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +85 -8
- package/corpus/core/docs/content/locales/es-ES/code-agents-ui.mdx +101 -8
- package/corpus/core/docs/content/locales/es-ES/components.mdx +118 -8
- package/corpus/core/docs/content/locales/es-ES/context-awareness.mdx +98 -8
- package/corpus/core/docs/content/locales/es-ES/creating-templates.mdx +51 -4
- package/corpus/core/docs/content/locales/es-ES/cross-app-sso.mdx +109 -8
- package/corpus/core/docs/content/locales/es-ES/database.mdx +52 -4
- package/corpus/core/docs/content/locales/es-ES/deployment.mdx +103 -8
- package/corpus/core/docs/content/locales/es-ES/dispatch.mdx +134 -8
- package/corpus/core/docs/content/locales/es-ES/drop-in-agent.mdx +63 -4
- package/corpus/core/docs/content/locales/es-ES/durable-resume.mdx +47 -4
- package/corpus/core/docs/content/locales/es-ES/embedding-sdk.mdx +87 -8
- package/corpus/core/docs/content/locales/es-ES/evals.mdx +102 -8
- package/corpus/core/docs/content/locales/es-ES/extensions.mdx +113 -9
- package/corpus/core/docs/content/locales/es-ES/external-agents.mdx +119 -8
- package/corpus/core/docs/content/locales/es-ES/faq.mdx +98 -8
- package/corpus/core/docs/content/locales/es-ES/file-uploads.mdx +61 -4
- package/corpus/core/docs/content/locales/es-ES/frames.mdx +88 -8
- package/corpus/core/docs/content/locales/es-ES/getting-started.mdx +34 -4
- package/corpus/core/docs/content/locales/es-ES/harness-agents.mdx +79 -8
- package/corpus/core/docs/content/locales/es-ES/human-approval.mdx +50 -4
- package/corpus/core/docs/content/locales/es-ES/key-concepts.mdx +104 -8
- package/corpus/core/docs/content/locales/es-ES/local-file-mode.mdx +60 -4
- package/corpus/core/docs/content/locales/es-ES/mcp-apps.mdx +120 -10
- package/corpus/core/docs/content/locales/es-ES/mcp-clients.mdx +135 -8
- package/corpus/core/docs/content/locales/es-ES/mcp-protocol.mdx +105 -8
- package/corpus/core/docs/content/locales/es-ES/messaging.mdx +115 -8
- package/corpus/core/docs/content/locales/es-ES/migration-workbench.mdx +47 -4
- package/corpus/core/docs/content/locales/es-ES/multi-app-workspace.mdx +91 -8
- package/corpus/core/docs/content/locales/es-ES/multi-tenancy.mdx +80 -8
- package/corpus/core/docs/content/locales/es-ES/native-chat-ui.mdx +108 -8
- package/corpus/core/docs/content/locales/es-ES/notifications.mdx +135 -8
- package/corpus/core/docs/content/locales/es-ES/observability.mdx +104 -8
- package/corpus/core/docs/content/locales/es-ES/observational-memory.mdx +92 -8
- package/corpus/core/docs/content/locales/es-ES/onboarding.mdx +45 -4
- package/corpus/core/docs/content/locales/es-ES/plan-plugin.mdx +99 -8
- package/corpus/core/docs/content/locales/es-ES/pr-visual-recap.mdx +125 -8
- package/corpus/core/docs/content/locales/es-ES/processors.mdx +41 -4
- package/corpus/core/docs/content/locales/es-ES/progress.mdx +46 -4
- package/corpus/core/docs/content/locales/es-ES/pure-agent-apps.mdx +50 -4
- package/corpus/core/docs/content/locales/es-ES/real-time-collaboration.mdx +109 -8
- package/corpus/core/docs/content/locales/es-ES/recurring-jobs.mdx +59 -4
- package/corpus/core/docs/content/locales/es-ES/routing.mdx +44 -5
- package/corpus/core/docs/content/locales/es-ES/sandbox-adapters.mdx +44 -4
- package/corpus/core/docs/content/locales/es-ES/security.mdx +82 -8
- package/corpus/core/docs/content/locales/es-ES/server.mdx +173 -12
- package/corpus/core/docs/content/locales/es-ES/sharing.mdx +45 -4
- package/corpus/core/docs/content/locales/es-ES/skills-guide.mdx +118 -9
- package/corpus/core/docs/content/locales/es-ES/template-analytics.mdx +46 -4
- package/corpus/core/docs/content/locales/es-ES/template-assets.mdx +64 -4
- package/corpus/core/docs/content/locales/es-ES/template-brain.mdx +69 -4
- package/corpus/core/docs/content/locales/es-ES/template-calendar.mdx +62 -4
- package/corpus/core/docs/content/locales/es-ES/template-chat.mdx +61 -4
- package/corpus/core/docs/content/locales/es-ES/template-clips.mdx +52 -4
- package/corpus/core/docs/content/locales/es-ES/template-content.mdx +64 -4
- package/corpus/core/docs/content/locales/es-ES/template-design.mdx +108 -4
- package/corpus/core/docs/content/locales/es-ES/template-dispatch.mdx +57 -4
- package/corpus/core/docs/content/locales/es-ES/template-forms.mdx +64 -4
- package/corpus/core/docs/content/locales/es-ES/template-mail.mdx +60 -4
- package/corpus/core/docs/content/locales/es-ES/template-plan.mdx +61 -4
- package/corpus/core/docs/content/locales/es-ES/template-slides.mdx +49 -4
- package/corpus/core/docs/content/locales/es-ES/template-videos.mdx +53 -4
- package/corpus/core/docs/content/locales/es-ES/tracking.mdx +54 -4
- package/corpus/core/docs/content/locales/es-ES/using-your-agent.mdx +51 -4
- package/corpus/core/docs/content/locales/es-ES/voice-input.mdx +45 -4
- package/corpus/core/docs/content/locales/es-ES/what-is-agent-native.mdx +99 -8
- package/corpus/core/docs/content/locales/es-ES/workspace-connections.mdx +128 -8
- package/corpus/core/docs/content/locales/es-ES/workspace-management.mdx +50 -4
- package/corpus/core/docs/content/locales/es-ES/workspace.mdx +112 -8
- package/corpus/core/docs/content/locales/es-ES/writing-agent-instructions.mdx +46 -4
- package/corpus/core/docs/content/locales/fr-FR/a2a-protocol.mdx +97 -9
- package/corpus/core/docs/content/locales/fr-FR/actions.mdx +67 -4
- package/corpus/core/docs/content/locales/fr-FR/agent-mentions.mdx +68 -4
- package/corpus/core/docs/content/locales/fr-FR/agent-surfaces.mdx +118 -8
- package/corpus/core/docs/content/locales/fr-FR/agent-teams.mdx +172 -12
- package/corpus/core/docs/content/locales/fr-FR/agent-web-surfaces.mdx +51 -4
- package/corpus/core/docs/content/locales/fr-FR/authentication.mdx +122 -8
- package/corpus/core/docs/content/locales/fr-FR/automations.mdx +110 -8
- package/corpus/core/docs/content/locales/fr-FR/blueprint-installer.mdx +42 -4
- package/corpus/core/docs/content/locales/fr-FR/cli-adapters.mdx +44 -4
- package/corpus/core/docs/content/locales/fr-FR/client.mdx +81 -8
- package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +85 -8
- package/corpus/core/docs/content/locales/fr-FR/code-agents-ui.mdx +102 -8
- package/corpus/core/docs/content/locales/fr-FR/components.mdx +118 -8
- package/corpus/core/docs/content/locales/fr-FR/context-awareness.mdx +98 -8
- package/corpus/core/docs/content/locales/fr-FR/creating-templates.mdx +49 -4
- package/corpus/core/docs/content/locales/fr-FR/cross-app-sso.mdx +109 -8
- package/corpus/core/docs/content/locales/fr-FR/database.mdx +52 -4
- package/corpus/core/docs/content/locales/fr-FR/deployment.mdx +103 -8
- package/corpus/core/docs/content/locales/fr-FR/dispatch.mdx +134 -8
- package/corpus/core/docs/content/locales/fr-FR/drop-in-agent.mdx +63 -4
- package/corpus/core/docs/content/locales/fr-FR/durable-resume.mdx +47 -4
- package/corpus/core/docs/content/locales/fr-FR/embedding-sdk.mdx +87 -8
- package/corpus/core/docs/content/locales/fr-FR/evals.mdx +102 -8
- package/corpus/core/docs/content/locales/fr-FR/extensions.mdx +113 -9
- package/corpus/core/docs/content/locales/fr-FR/external-agents.mdx +119 -8
- package/corpus/core/docs/content/locales/fr-FR/faq.mdx +98 -8
- package/corpus/core/docs/content/locales/fr-FR/file-uploads.mdx +61 -4
- package/corpus/core/docs/content/locales/fr-FR/frames.mdx +90 -8
- package/corpus/core/docs/content/locales/fr-FR/getting-started.mdx +34 -4
- package/corpus/core/docs/content/locales/fr-FR/harness-agents.mdx +77 -8
- package/corpus/core/docs/content/locales/fr-FR/human-approval.mdx +50 -4
- package/corpus/core/docs/content/locales/fr-FR/key-concepts.mdx +106 -8
- package/corpus/core/docs/content/locales/fr-FR/local-file-mode.mdx +58 -4
- package/corpus/core/docs/content/locales/fr-FR/mcp-apps.mdx +120 -10
- package/corpus/core/docs/content/locales/fr-FR/mcp-clients.mdx +135 -8
- package/corpus/core/docs/content/locales/fr-FR/mcp-protocol.mdx +105 -8
- package/corpus/core/docs/content/locales/fr-FR/messaging.mdx +115 -8
- package/corpus/core/docs/content/locales/fr-FR/migration-workbench.mdx +47 -4
- package/corpus/core/docs/content/locales/fr-FR/multi-app-workspace.mdx +91 -8
- package/corpus/core/docs/content/locales/fr-FR/multi-tenancy.mdx +80 -8
- package/corpus/core/docs/content/locales/fr-FR/native-chat-ui.mdx +108 -8
- package/corpus/core/docs/content/locales/fr-FR/notifications.mdx +135 -8
- package/corpus/core/docs/content/locales/fr-FR/observability.mdx +104 -8
- package/corpus/core/docs/content/locales/fr-FR/observational-memory.mdx +89 -8
- package/corpus/core/docs/content/locales/fr-FR/onboarding.mdx +45 -4
- package/corpus/core/docs/content/locales/fr-FR/plan-plugin.mdx +99 -8
- package/corpus/core/docs/content/locales/fr-FR/pr-visual-recap.mdx +126 -8
- package/corpus/core/docs/content/locales/fr-FR/processors.mdx +41 -4
- package/corpus/core/docs/content/locales/fr-FR/progress.mdx +46 -4
- package/corpus/core/docs/content/locales/fr-FR/pure-agent-apps.mdx +48 -4
- package/corpus/core/docs/content/locales/fr-FR/real-time-collaboration.mdx +107 -8
- package/corpus/core/docs/content/locales/fr-FR/recurring-jobs.mdx +59 -4
- package/corpus/core/docs/content/locales/fr-FR/routing.mdx +44 -5
- package/corpus/core/docs/content/locales/fr-FR/sandbox-adapters.mdx +44 -4
- package/corpus/core/docs/content/locales/fr-FR/security.mdx +82 -8
- package/corpus/core/docs/content/locales/fr-FR/server.mdx +173 -12
- package/corpus/core/docs/content/locales/fr-FR/sharing.mdx +45 -4
- package/corpus/core/docs/content/locales/fr-FR/skills-guide.mdx +118 -9
- package/corpus/core/docs/content/locales/fr-FR/template-analytics.mdx +46 -4
- package/corpus/core/docs/content/locales/fr-FR/template-assets.mdx +66 -4
- package/corpus/core/docs/content/locales/fr-FR/template-brain.mdx +69 -4
- package/corpus/core/docs/content/locales/fr-FR/template-calendar.mdx +62 -4
- package/corpus/core/docs/content/locales/fr-FR/template-chat.mdx +61 -4
- package/corpus/core/docs/content/locales/fr-FR/template-clips.mdx +52 -4
- package/corpus/core/docs/content/locales/fr-FR/template-content.mdx +64 -4
- package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +107 -4
- package/corpus/core/docs/content/locales/fr-FR/template-dispatch.mdx +57 -4
- package/corpus/core/docs/content/locales/fr-FR/template-forms.mdx +64 -4
- package/corpus/core/docs/content/locales/fr-FR/template-mail.mdx +60 -4
- package/corpus/core/docs/content/locales/fr-FR/template-plan.mdx +61 -4
- package/corpus/core/docs/content/locales/fr-FR/template-slides.mdx +49 -4
- package/corpus/core/docs/content/locales/fr-FR/template-videos.mdx +53 -4
- package/corpus/core/docs/content/locales/fr-FR/tracking.mdx +54 -4
- package/corpus/core/docs/content/locales/fr-FR/using-your-agent.mdx +51 -4
- package/corpus/core/docs/content/locales/fr-FR/voice-input.mdx +45 -4
- package/corpus/core/docs/content/locales/fr-FR/what-is-agent-native.mdx +101 -8
- package/corpus/core/docs/content/locales/fr-FR/workspace-connections.mdx +128 -8
- package/corpus/core/docs/content/locales/fr-FR/workspace-management.mdx +50 -4
- package/corpus/core/docs/content/locales/fr-FR/workspace.mdx +112 -8
- package/corpus/core/docs/content/locales/fr-FR/writing-agent-instructions.mdx +47 -4
- package/corpus/core/docs/content/locales/hi-IN/a2a-protocol.mdx +97 -9
- package/corpus/core/docs/content/locales/hi-IN/actions.mdx +63 -4
- package/corpus/core/docs/content/locales/hi-IN/agent-mentions.mdx +68 -4
- package/corpus/core/docs/content/locales/hi-IN/agent-surfaces.mdx +112 -8
- package/corpus/core/docs/content/locales/hi-IN/agent-teams.mdx +171 -12
- package/corpus/core/docs/content/locales/hi-IN/agent-web-surfaces.mdx +51 -4
- package/corpus/core/docs/content/locales/hi-IN/authentication.mdx +122 -8
- package/corpus/core/docs/content/locales/hi-IN/automations.mdx +110 -8
- package/corpus/core/docs/content/locales/hi-IN/blueprint-installer.mdx +42 -4
- package/corpus/core/docs/content/locales/hi-IN/cli-adapters.mdx +44 -4
- package/corpus/core/docs/content/locales/hi-IN/client.mdx +79 -8
- package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +85 -8
- package/corpus/core/docs/content/locales/hi-IN/code-agents-ui.mdx +96 -8
- package/corpus/core/docs/content/locales/hi-IN/components.mdx +114 -8
- package/corpus/core/docs/content/locales/hi-IN/context-awareness.mdx +102 -8
- package/corpus/core/docs/content/locales/hi-IN/creating-templates.mdx +53 -4
- package/corpus/core/docs/content/locales/hi-IN/cross-app-sso.mdx +109 -8
- package/corpus/core/docs/content/locales/hi-IN/database.mdx +52 -4
- package/corpus/core/docs/content/locales/hi-IN/deployment.mdx +103 -8
- package/corpus/core/docs/content/locales/hi-IN/dispatch.mdx +134 -8
- package/corpus/core/docs/content/locales/hi-IN/drop-in-agent.mdx +63 -4
- package/corpus/core/docs/content/locales/hi-IN/durable-resume.mdx +47 -4
- package/corpus/core/docs/content/locales/hi-IN/embedding-sdk.mdx +83 -8
- package/corpus/core/docs/content/locales/hi-IN/evals.mdx +100 -8
- package/corpus/core/docs/content/locales/hi-IN/extensions.mdx +113 -9
- package/corpus/core/docs/content/locales/hi-IN/external-agents.mdx +119 -8
- package/corpus/core/docs/content/locales/hi-IN/faq.mdx +96 -8
- package/corpus/core/docs/content/locales/hi-IN/file-uploads.mdx +61 -4
- package/corpus/core/docs/content/locales/hi-IN/frames.mdx +88 -8
- package/corpus/core/docs/content/locales/hi-IN/getting-started.mdx +34 -4
- package/corpus/core/docs/content/locales/hi-IN/harness-agents.mdx +77 -8
- package/corpus/core/docs/content/locales/hi-IN/human-approval.mdx +51 -4
- package/corpus/core/docs/content/locales/hi-IN/key-concepts.mdx +104 -8
- package/corpus/core/docs/content/locales/hi-IN/local-file-mode.mdx +58 -4
- package/corpus/core/docs/content/locales/hi-IN/mcp-apps.mdx +120 -10
- package/corpus/core/docs/content/locales/hi-IN/mcp-clients.mdx +133 -8
- package/corpus/core/docs/content/locales/hi-IN/mcp-protocol.mdx +105 -8
- package/corpus/core/docs/content/locales/hi-IN/messaging.mdx +115 -8
- package/corpus/core/docs/content/locales/hi-IN/migration-workbench.mdx +45 -4
- package/corpus/core/docs/content/locales/hi-IN/multi-app-workspace.mdx +91 -8
- package/corpus/core/docs/content/locales/hi-IN/multi-tenancy.mdx +80 -8
- package/corpus/core/docs/content/locales/hi-IN/native-chat-ui.mdx +106 -8
- package/corpus/core/docs/content/locales/hi-IN/notifications.mdx +135 -8
- package/corpus/core/docs/content/locales/hi-IN/observability.mdx +102 -8
- package/corpus/core/docs/content/locales/hi-IN/observational-memory.mdx +89 -8
- package/corpus/core/docs/content/locales/hi-IN/onboarding.mdx +45 -4
- package/corpus/core/docs/content/locales/hi-IN/plan-plugin.mdx +99 -8
- package/corpus/core/docs/content/locales/hi-IN/pr-visual-recap.mdx +126 -8
- package/corpus/core/docs/content/locales/hi-IN/processors.mdx +41 -4
- package/corpus/core/docs/content/locales/hi-IN/progress.mdx +46 -4
- package/corpus/core/docs/content/locales/hi-IN/pure-agent-apps.mdx +48 -4
- package/corpus/core/docs/content/locales/hi-IN/real-time-collaboration.mdx +106 -8
- package/corpus/core/docs/content/locales/hi-IN/recurring-jobs.mdx +59 -4
- package/corpus/core/docs/content/locales/hi-IN/routing.mdx +44 -5
- package/corpus/core/docs/content/locales/hi-IN/sandbox-adapters.mdx +43 -4
- package/corpus/core/docs/content/locales/hi-IN/security.mdx +78 -8
- package/corpus/core/docs/content/locales/hi-IN/server.mdx +169 -12
- package/corpus/core/docs/content/locales/hi-IN/sharing.mdx +45 -4
- package/corpus/core/docs/content/locales/hi-IN/skills-guide.mdx +118 -9
- package/corpus/core/docs/content/locales/hi-IN/template-analytics.mdx +46 -4
- package/corpus/core/docs/content/locales/hi-IN/template-assets.mdx +62 -4
- package/corpus/core/docs/content/locales/hi-IN/template-brain.mdx +69 -4
- package/corpus/core/docs/content/locales/hi-IN/template-calendar.mdx +62 -4
- package/corpus/core/docs/content/locales/hi-IN/template-chat.mdx +59 -4
- package/corpus/core/docs/content/locales/hi-IN/template-clips.mdx +52 -4
- package/corpus/core/docs/content/locales/hi-IN/template-content.mdx +62 -4
- package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +102 -4
- package/corpus/core/docs/content/locales/hi-IN/template-dispatch.mdx +57 -4
- package/corpus/core/docs/content/locales/hi-IN/template-forms.mdx +64 -4
- package/corpus/core/docs/content/locales/hi-IN/template-mail.mdx +64 -4
- package/corpus/core/docs/content/locales/hi-IN/template-plan.mdx +61 -4
- package/corpus/core/docs/content/locales/hi-IN/template-slides.mdx +49 -4
- package/corpus/core/docs/content/locales/hi-IN/template-videos.mdx +53 -4
- package/corpus/core/docs/content/locales/hi-IN/tracking.mdx +54 -4
- package/corpus/core/docs/content/locales/hi-IN/using-your-agent.mdx +51 -4
- package/corpus/core/docs/content/locales/hi-IN/voice-input.mdx +43 -4
- package/corpus/core/docs/content/locales/hi-IN/what-is-agent-native.mdx +97 -8
- package/corpus/core/docs/content/locales/hi-IN/workspace-connections.mdx +128 -8
- package/corpus/core/docs/content/locales/hi-IN/workspace-management.mdx +50 -4
- package/corpus/core/docs/content/locales/hi-IN/workspace.mdx +111 -8
- package/corpus/core/docs/content/locales/hi-IN/writing-agent-instructions.mdx +40 -4
- package/corpus/core/docs/content/locales/ja-JP/a2a-protocol.mdx +97 -9
- package/corpus/core/docs/content/locales/ja-JP/actions.mdx +67 -4
- package/corpus/core/docs/content/locales/ja-JP/agent-mentions.mdx +68 -4
- package/corpus/core/docs/content/locales/ja-JP/agent-surfaces.mdx +116 -8
- package/corpus/core/docs/content/locales/ja-JP/agent-teams.mdx +172 -12
- package/corpus/core/docs/content/locales/ja-JP/agent-web-surfaces.mdx +51 -4
- package/corpus/core/docs/content/locales/ja-JP/authentication.mdx +122 -8
- package/corpus/core/docs/content/locales/ja-JP/automations.mdx +110 -8
- package/corpus/core/docs/content/locales/ja-JP/blueprint-installer.mdx +44 -4
- package/corpus/core/docs/content/locales/ja-JP/cli-adapters.mdx +44 -4
- package/corpus/core/docs/content/locales/ja-JP/client.mdx +79 -8
- package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +85 -8
- package/corpus/core/docs/content/locales/ja-JP/code-agents-ui.mdx +100 -8
- package/corpus/core/docs/content/locales/ja-JP/components.mdx +116 -8
- package/corpus/core/docs/content/locales/ja-JP/context-awareness.mdx +100 -8
- package/corpus/core/docs/content/locales/ja-JP/creating-templates.mdx +51 -4
- package/corpus/core/docs/content/locales/ja-JP/cross-app-sso.mdx +109 -8
- package/corpus/core/docs/content/locales/ja-JP/database.mdx +52 -4
- package/corpus/core/docs/content/locales/ja-JP/deployment.mdx +103 -8
- package/corpus/core/docs/content/locales/ja-JP/dispatch.mdx +134 -8
- package/corpus/core/docs/content/locales/ja-JP/drop-in-agent.mdx +63 -4
- package/corpus/core/docs/content/locales/ja-JP/durable-resume.mdx +47 -4
- package/corpus/core/docs/content/locales/ja-JP/embedding-sdk.mdx +85 -8
- package/corpus/core/docs/content/locales/ja-JP/evals.mdx +102 -8
- package/corpus/core/docs/content/locales/ja-JP/extensions.mdx +111 -9
- package/corpus/core/docs/content/locales/ja-JP/external-agents.mdx +119 -8
- package/corpus/core/docs/content/locales/ja-JP/faq.mdx +98 -8
- package/corpus/core/docs/content/locales/ja-JP/file-uploads.mdx +61 -4
- package/corpus/core/docs/content/locales/ja-JP/frames.mdx +88 -8
- package/corpus/core/docs/content/locales/ja-JP/getting-started.mdx +34 -4
- package/corpus/core/docs/content/locales/ja-JP/harness-agents.mdx +79 -8
- package/corpus/core/docs/content/locales/ja-JP/human-approval.mdx +50 -4
- package/corpus/core/docs/content/locales/ja-JP/key-concepts.mdx +105 -8
- package/corpus/core/docs/content/locales/ja-JP/local-file-mode.mdx +58 -4
- package/corpus/core/docs/content/locales/ja-JP/mcp-apps.mdx +119 -10
- package/corpus/core/docs/content/locales/ja-JP/mcp-clients.mdx +134 -8
- package/corpus/core/docs/content/locales/ja-JP/mcp-protocol.mdx +105 -8
- package/corpus/core/docs/content/locales/ja-JP/messaging.mdx +115 -8
- package/corpus/core/docs/content/locales/ja-JP/migration-workbench.mdx +47 -4
- package/corpus/core/docs/content/locales/ja-JP/multi-app-workspace.mdx +91 -8
- package/corpus/core/docs/content/locales/ja-JP/multi-tenancy.mdx +80 -8
- package/corpus/core/docs/content/locales/ja-JP/native-chat-ui.mdx +104 -8
- package/corpus/core/docs/content/locales/ja-JP/notifications.mdx +135 -8
- package/corpus/core/docs/content/locales/ja-JP/observability.mdx +104 -8
- package/corpus/core/docs/content/locales/ja-JP/observational-memory.mdx +89 -8
- package/corpus/core/docs/content/locales/ja-JP/onboarding.mdx +45 -4
- package/corpus/core/docs/content/locales/ja-JP/plan-plugin.mdx +99 -8
- package/corpus/core/docs/content/locales/ja-JP/pr-visual-recap.mdx +123 -8
- package/corpus/core/docs/content/locales/ja-JP/processors.mdx +39 -4
- package/corpus/core/docs/content/locales/ja-JP/progress.mdx +46 -4
- package/corpus/core/docs/content/locales/ja-JP/pure-agent-apps.mdx +48 -4
- package/corpus/core/docs/content/locales/ja-JP/real-time-collaboration.mdx +106 -8
- package/corpus/core/docs/content/locales/ja-JP/recurring-jobs.mdx +59 -4
- package/corpus/core/docs/content/locales/ja-JP/routing.mdx +44 -5
- package/corpus/core/docs/content/locales/ja-JP/sandbox-adapters.mdx +43 -4
- package/corpus/core/docs/content/locales/ja-JP/security.mdx +82 -8
- package/corpus/core/docs/content/locales/ja-JP/server.mdx +171 -12
- package/corpus/core/docs/content/locales/ja-JP/sharing.mdx +45 -4
- package/corpus/core/docs/content/locales/ja-JP/skills-guide.mdx +118 -9
- package/corpus/core/docs/content/locales/ja-JP/template-analytics.mdx +46 -4
- package/corpus/core/docs/content/locales/ja-JP/template-assets.mdx +64 -4
- package/corpus/core/docs/content/locales/ja-JP/template-brain.mdx +67 -4
- package/corpus/core/docs/content/locales/ja-JP/template-calendar.mdx +62 -4
- package/corpus/core/docs/content/locales/ja-JP/template-chat.mdx +61 -4
- package/corpus/core/docs/content/locales/ja-JP/template-clips.mdx +52 -4
- package/corpus/core/docs/content/locales/ja-JP/template-content.mdx +62 -4
- package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +106 -4
- package/corpus/core/docs/content/locales/ja-JP/template-dispatch.mdx +57 -4
- package/corpus/core/docs/content/locales/ja-JP/template-forms.mdx +62 -4
- package/corpus/core/docs/content/locales/ja-JP/template-mail.mdx +62 -4
- package/corpus/core/docs/content/locales/ja-JP/template-plan.mdx +63 -4
- package/corpus/core/docs/content/locales/ja-JP/template-slides.mdx +49 -4
- package/corpus/core/docs/content/locales/ja-JP/template-videos.mdx +53 -4
- package/corpus/core/docs/content/locales/ja-JP/tracking.mdx +54 -4
- package/corpus/core/docs/content/locales/ja-JP/using-your-agent.mdx +51 -4
- package/corpus/core/docs/content/locales/ja-JP/voice-input.mdx +43 -4
- package/corpus/core/docs/content/locales/ja-JP/what-is-agent-native.mdx +96 -8
- package/corpus/core/docs/content/locales/ja-JP/workspace-connections.mdx +128 -8
- package/corpus/core/docs/content/locales/ja-JP/workspace-management.mdx +50 -4
- package/corpus/core/docs/content/locales/ja-JP/workspace.mdx +111 -8
- package/corpus/core/docs/content/locales/ja-JP/writing-agent-instructions.mdx +44 -4
- package/corpus/core/docs/content/locales/ko-KR/a2a-protocol.mdx +97 -9
- package/corpus/core/docs/content/locales/ko-KR/actions.mdx +63 -4
- package/corpus/core/docs/content/locales/ko-KR/agent-mentions.mdx +68 -4
- package/corpus/core/docs/content/locales/ko-KR/agent-surfaces.mdx +113 -8
- package/corpus/core/docs/content/locales/ko-KR/agent-teams.mdx +171 -12
- package/corpus/core/docs/content/locales/ko-KR/agent-web-surfaces.mdx +51 -4
- package/corpus/core/docs/content/locales/ko-KR/authentication.mdx +122 -8
- package/corpus/core/docs/content/locales/ko-KR/automations.mdx +110 -8
- package/corpus/core/docs/content/locales/ko-KR/blueprint-installer.mdx +42 -4
- package/corpus/core/docs/content/locales/ko-KR/cli-adapters.mdx +44 -4
- package/corpus/core/docs/content/locales/ko-KR/client.mdx +79 -8
- package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +85 -8
- package/corpus/core/docs/content/locales/ko-KR/code-agents-ui.mdx +96 -8
- package/corpus/core/docs/content/locales/ko-KR/components.mdx +112 -8
- package/corpus/core/docs/content/locales/ko-KR/context-awareness.mdx +96 -8
- package/corpus/core/docs/content/locales/ko-KR/creating-templates.mdx +51 -4
- package/corpus/core/docs/content/locales/ko-KR/cross-app-sso.mdx +109 -8
- package/corpus/core/docs/content/locales/ko-KR/database.mdx +52 -4
- package/corpus/core/docs/content/locales/ko-KR/deployment.mdx +103 -8
- package/corpus/core/docs/content/locales/ko-KR/dispatch.mdx +132 -8
- package/corpus/core/docs/content/locales/ko-KR/drop-in-agent.mdx +63 -4
- package/corpus/core/docs/content/locales/ko-KR/durable-resume.mdx +47 -4
- package/corpus/core/docs/content/locales/ko-KR/embedding-sdk.mdx +81 -8
- package/corpus/core/docs/content/locales/ko-KR/evals.mdx +102 -8
- package/corpus/core/docs/content/locales/ko-KR/extensions.mdx +111 -9
- package/corpus/core/docs/content/locales/ko-KR/external-agents.mdx +119 -8
- package/corpus/core/docs/content/locales/ko-KR/faq.mdx +96 -8
- package/corpus/core/docs/content/locales/ko-KR/file-uploads.mdx +61 -4
- package/corpus/core/docs/content/locales/ko-KR/frames.mdx +86 -8
- package/corpus/core/docs/content/locales/ko-KR/getting-started.mdx +34 -4
- package/corpus/core/docs/content/locales/ko-KR/harness-agents.mdx +77 -8
- package/corpus/core/docs/content/locales/ko-KR/human-approval.mdx +50 -4
- package/corpus/core/docs/content/locales/ko-KR/key-concepts.mdx +104 -8
- package/corpus/core/docs/content/locales/ko-KR/local-file-mode.mdx +56 -4
- package/corpus/core/docs/content/locales/ko-KR/mcp-apps.mdx +120 -10
- package/corpus/core/docs/content/locales/ko-KR/mcp-clients.mdx +133 -8
- package/corpus/core/docs/content/locales/ko-KR/mcp-protocol.mdx +105 -8
- package/corpus/core/docs/content/locales/ko-KR/messaging.mdx +115 -8
- package/corpus/core/docs/content/locales/ko-KR/migration-workbench.mdx +45 -4
- package/corpus/core/docs/content/locales/ko-KR/multi-app-workspace.mdx +91 -8
- package/corpus/core/docs/content/locales/ko-KR/multi-tenancy.mdx +80 -8
- package/corpus/core/docs/content/locales/ko-KR/native-chat-ui.mdx +104 -8
- package/corpus/core/docs/content/locales/ko-KR/notifications.mdx +135 -8
- package/corpus/core/docs/content/locales/ko-KR/observability.mdx +102 -8
- package/corpus/core/docs/content/locales/ko-KR/observational-memory.mdx +87 -8
- package/corpus/core/docs/content/locales/ko-KR/onboarding.mdx +44 -4
- package/corpus/core/docs/content/locales/ko-KR/plan-plugin.mdx +99 -8
- package/corpus/core/docs/content/locales/ko-KR/pr-visual-recap.mdx +125 -8
- package/corpus/core/docs/content/locales/ko-KR/processors.mdx +39 -4
- package/corpus/core/docs/content/locales/ko-KR/progress.mdx +46 -4
- package/corpus/core/docs/content/locales/ko-KR/pure-agent-apps.mdx +46 -4
- package/corpus/core/docs/content/locales/ko-KR/real-time-collaboration.mdx +104 -8
- package/corpus/core/docs/content/locales/ko-KR/recurring-jobs.mdx +59 -4
- package/corpus/core/docs/content/locales/ko-KR/routing.mdx +44 -5
- package/corpus/core/docs/content/locales/ko-KR/sandbox-adapters.mdx +41 -4
- package/corpus/core/docs/content/locales/ko-KR/security.mdx +78 -8
- package/corpus/core/docs/content/locales/ko-KR/server.mdx +171 -12
- package/corpus/core/docs/content/locales/ko-KR/sharing.mdx +45 -4
- package/corpus/core/docs/content/locales/ko-KR/skills-guide.mdx +118 -9
- package/corpus/core/docs/content/locales/ko-KR/template-analytics.mdx +46 -4
- package/corpus/core/docs/content/locales/ko-KR/template-assets.mdx +62 -4
- package/corpus/core/docs/content/locales/ko-KR/template-brain.mdx +65 -4
- package/corpus/core/docs/content/locales/ko-KR/template-calendar.mdx +60 -4
- package/corpus/core/docs/content/locales/ko-KR/template-chat.mdx +59 -4
- package/corpus/core/docs/content/locales/ko-KR/template-clips.mdx +52 -4
- package/corpus/core/docs/content/locales/ko-KR/template-content.mdx +60 -4
- package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +102 -4
- package/corpus/core/docs/content/locales/ko-KR/template-dispatch.mdx +57 -4
- package/corpus/core/docs/content/locales/ko-KR/template-forms.mdx +60 -4
- package/corpus/core/docs/content/locales/ko-KR/template-mail.mdx +60 -4
- package/corpus/core/docs/content/locales/ko-KR/template-plan.mdx +57 -4
- package/corpus/core/docs/content/locales/ko-KR/template-slides.mdx +49 -4
- package/corpus/core/docs/content/locales/ko-KR/template-videos.mdx +53 -4
- package/corpus/core/docs/content/locales/ko-KR/tracking.mdx +54 -4
- package/corpus/core/docs/content/locales/ko-KR/using-your-agent.mdx +51 -4
- package/corpus/core/docs/content/locales/ko-KR/voice-input.mdx +43 -4
- package/corpus/core/docs/content/locales/ko-KR/what-is-agent-native.mdx +95 -8
- package/corpus/core/docs/content/locales/ko-KR/workspace-connections.mdx +128 -8
- package/corpus/core/docs/content/locales/ko-KR/workspace-management.mdx +50 -4
- package/corpus/core/docs/content/locales/ko-KR/workspace.mdx +111 -8
- package/corpus/core/docs/content/locales/ko-KR/writing-agent-instructions.mdx +38 -4
- package/corpus/core/docs/content/locales/pt-BR/a2a-protocol.mdx +99 -9
- package/corpus/core/docs/content/locales/pt-BR/actions.mdx +67 -4
- package/corpus/core/docs/content/locales/pt-BR/agent-mentions.mdx +68 -4
- package/corpus/core/docs/content/locales/pt-BR/agent-surfaces.mdx +116 -8
- package/corpus/core/docs/content/locales/pt-BR/agent-teams.mdx +172 -12
- package/corpus/core/docs/content/locales/pt-BR/agent-web-surfaces.mdx +51 -4
- package/corpus/core/docs/content/locales/pt-BR/authentication.mdx +122 -8
- package/corpus/core/docs/content/locales/pt-BR/automations.mdx +110 -8
- package/corpus/core/docs/content/locales/pt-BR/blueprint-installer.mdx +42 -4
- package/corpus/core/docs/content/locales/pt-BR/cli-adapters.mdx +44 -4
- package/corpus/core/docs/content/locales/pt-BR/client.mdx +81 -8
- package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +85 -8
- package/corpus/core/docs/content/locales/pt-BR/code-agents-ui.mdx +98 -8
- package/corpus/core/docs/content/locales/pt-BR/components.mdx +118 -8
- package/corpus/core/docs/content/locales/pt-BR/context-awareness.mdx +100 -8
- package/corpus/core/docs/content/locales/pt-BR/creating-templates.mdx +51 -4
- package/corpus/core/docs/content/locales/pt-BR/cross-app-sso.mdx +109 -8
- package/corpus/core/docs/content/locales/pt-BR/database.mdx +52 -4
- package/corpus/core/docs/content/locales/pt-BR/deployment.mdx +103 -8
- package/corpus/core/docs/content/locales/pt-BR/dispatch.mdx +134 -8
- package/corpus/core/docs/content/locales/pt-BR/drop-in-agent.mdx +63 -4
- package/corpus/core/docs/content/locales/pt-BR/durable-resume.mdx +47 -4
- package/corpus/core/docs/content/locales/pt-BR/embedding-sdk.mdx +87 -8
- package/corpus/core/docs/content/locales/pt-BR/evals.mdx +102 -8
- package/corpus/core/docs/content/locales/pt-BR/extensions.mdx +113 -9
- package/corpus/core/docs/content/locales/pt-BR/external-agents.mdx +119 -8
- package/corpus/core/docs/content/locales/pt-BR/faq.mdx +98 -8
- package/corpus/core/docs/content/locales/pt-BR/file-uploads.mdx +61 -4
- package/corpus/core/docs/content/locales/pt-BR/frames.mdx +88 -8
- package/corpus/core/docs/content/locales/pt-BR/getting-started.mdx +34 -4
- package/corpus/core/docs/content/locales/pt-BR/harness-agents.mdx +79 -8
- package/corpus/core/docs/content/locales/pt-BR/human-approval.mdx +50 -4
- package/corpus/core/docs/content/locales/pt-BR/key-concepts.mdx +104 -8
- package/corpus/core/docs/content/locales/pt-BR/local-file-mode.mdx +60 -4
- package/corpus/core/docs/content/locales/pt-BR/mcp-apps.mdx +120 -10
- package/corpus/core/docs/content/locales/pt-BR/mcp-clients.mdx +133 -8
- package/corpus/core/docs/content/locales/pt-BR/mcp-protocol.mdx +105 -8
- package/corpus/core/docs/content/locales/pt-BR/messaging.mdx +115 -8
- package/corpus/core/docs/content/locales/pt-BR/migration-workbench.mdx +47 -4
- package/corpus/core/docs/content/locales/pt-BR/multi-app-workspace.mdx +91 -8
- package/corpus/core/docs/content/locales/pt-BR/multi-tenancy.mdx +80 -8
- package/corpus/core/docs/content/locales/pt-BR/native-chat-ui.mdx +108 -8
- package/corpus/core/docs/content/locales/pt-BR/notifications.mdx +135 -8
- package/corpus/core/docs/content/locales/pt-BR/observability.mdx +104 -8
- package/corpus/core/docs/content/locales/pt-BR/observational-memory.mdx +92 -8
- package/corpus/core/docs/content/locales/pt-BR/onboarding.mdx +45 -4
- package/corpus/core/docs/content/locales/pt-BR/plan-plugin.mdx +99 -8
- package/corpus/core/docs/content/locales/pt-BR/pr-visual-recap.mdx +125 -8
- package/corpus/core/docs/content/locales/pt-BR/processors.mdx +41 -4
- package/corpus/core/docs/content/locales/pt-BR/progress.mdx +46 -4
- package/corpus/core/docs/content/locales/pt-BR/pure-agent-apps.mdx +48 -4
- package/corpus/core/docs/content/locales/pt-BR/real-time-collaboration.mdx +107 -8
- package/corpus/core/docs/content/locales/pt-BR/recurring-jobs.mdx +59 -4
- package/corpus/core/docs/content/locales/pt-BR/routing.mdx +44 -5
- package/corpus/core/docs/content/locales/pt-BR/sandbox-adapters.mdx +43 -4
- package/corpus/core/docs/content/locales/pt-BR/security.mdx +82 -8
- package/corpus/core/docs/content/locales/pt-BR/server.mdx +173 -12
- package/corpus/core/docs/content/locales/pt-BR/sharing.mdx +45 -4
- package/corpus/core/docs/content/locales/pt-BR/skills-guide.mdx +118 -9
- package/corpus/core/docs/content/locales/pt-BR/template-analytics.mdx +46 -4
- package/corpus/core/docs/content/locales/pt-BR/template-assets.mdx +64 -4
- package/corpus/core/docs/content/locales/pt-BR/template-brain.mdx +69 -4
- package/corpus/core/docs/content/locales/pt-BR/template-calendar.mdx +62 -4
- package/corpus/core/docs/content/locales/pt-BR/template-chat.mdx +61 -4
- package/corpus/core/docs/content/locales/pt-BR/template-clips.mdx +52 -4
- package/corpus/core/docs/content/locales/pt-BR/template-content.mdx +64 -4
- package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +106 -4
- package/corpus/core/docs/content/locales/pt-BR/template-dispatch.mdx +57 -4
- package/corpus/core/docs/content/locales/pt-BR/template-forms.mdx +64 -4
- package/corpus/core/docs/content/locales/pt-BR/template-mail.mdx +60 -4
- package/corpus/core/docs/content/locales/pt-BR/template-plan.mdx +63 -4
- package/corpus/core/docs/content/locales/pt-BR/template-slides.mdx +49 -4
- package/corpus/core/docs/content/locales/pt-BR/template-videos.mdx +53 -4
- package/corpus/core/docs/content/locales/pt-BR/tracking.mdx +54 -4
- package/corpus/core/docs/content/locales/pt-BR/using-your-agent.mdx +51 -4
- package/corpus/core/docs/content/locales/pt-BR/voice-input.mdx +43 -4
- package/corpus/core/docs/content/locales/pt-BR/what-is-agent-native.mdx +101 -8
- package/corpus/core/docs/content/locales/pt-BR/workspace-connections.mdx +128 -8
- package/corpus/core/docs/content/locales/pt-BR/workspace-management.mdx +50 -4
- package/corpus/core/docs/content/locales/pt-BR/workspace.mdx +111 -8
- package/corpus/core/docs/content/locales/pt-BR/writing-agent-instructions.mdx +46 -4
- package/corpus/core/docs/content/locales/zh-CN/a2a-protocol.mdx +97 -9
- package/corpus/core/docs/content/locales/zh-CN/actions.mdx +65 -4
- package/corpus/core/docs/content/locales/zh-CN/agent-mentions.mdx +68 -4
- package/corpus/core/docs/content/locales/zh-CN/agent-surfaces.mdx +108 -8
- package/corpus/core/docs/content/locales/zh-CN/agent-teams.mdx +171 -12
- package/corpus/core/docs/content/locales/zh-CN/agent-web-surfaces.mdx +51 -4
- package/corpus/core/docs/content/locales/zh-CN/authentication.mdx +122 -8
- package/corpus/core/docs/content/locales/zh-CN/automations.mdx +110 -8
- package/corpus/core/docs/content/locales/zh-CN/blueprint-installer.mdx +42 -4
- package/corpus/core/docs/content/locales/zh-CN/cli-adapters.mdx +44 -4
- package/corpus/core/docs/content/locales/zh-CN/client.mdx +79 -8
- package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +83 -8
- package/corpus/core/docs/content/locales/zh-CN/code-agents-ui.mdx +94 -8
- package/corpus/core/docs/content/locales/zh-CN/components.mdx +112 -8
- package/corpus/core/docs/content/locales/zh-CN/context-awareness.mdx +96 -8
- package/corpus/core/docs/content/locales/zh-CN/creating-templates.mdx +51 -4
- package/corpus/core/docs/content/locales/zh-CN/cross-app-sso.mdx +107 -8
- package/corpus/core/docs/content/locales/zh-CN/database.mdx +52 -4
- package/corpus/core/docs/content/locales/zh-CN/deployment.mdx +103 -8
- package/corpus/core/docs/content/locales/zh-CN/dispatch.mdx +134 -8
- package/corpus/core/docs/content/locales/zh-CN/drop-in-agent.mdx +63 -4
- package/corpus/core/docs/content/locales/zh-CN/durable-resume.mdx +45 -4
- package/corpus/core/docs/content/locales/zh-CN/embedding-sdk.mdx +81 -8
- package/corpus/core/docs/content/locales/zh-CN/evals.mdx +100 -8
- package/corpus/core/docs/content/locales/zh-CN/extensions.mdx +111 -9
- package/corpus/core/docs/content/locales/zh-CN/external-agents.mdx +119 -8
- package/corpus/core/docs/content/locales/zh-CN/faq.mdx +96 -8
- package/corpus/core/docs/content/locales/zh-CN/file-uploads.mdx +61 -4
- package/corpus/core/docs/content/locales/zh-CN/frames.mdx +86 -8
- package/corpus/core/docs/content/locales/zh-CN/getting-started.mdx +34 -4
- package/corpus/core/docs/content/locales/zh-CN/harness-agents.mdx +79 -8
- package/corpus/core/docs/content/locales/zh-CN/human-approval.mdx +50 -4
- package/corpus/core/docs/content/locales/zh-CN/key-concepts.mdx +100 -8
- package/corpus/core/docs/content/locales/zh-CN/local-file-mode.mdx +56 -4
- package/corpus/core/docs/content/locales/zh-CN/mcp-apps.mdx +120 -10
- package/corpus/core/docs/content/locales/zh-CN/mcp-clients.mdx +133 -8
- package/corpus/core/docs/content/locales/zh-CN/mcp-protocol.mdx +105 -8
- package/corpus/core/docs/content/locales/zh-CN/messaging.mdx +115 -8
- package/corpus/core/docs/content/locales/zh-CN/migration-workbench.mdx +45 -4
- package/corpus/core/docs/content/locales/zh-CN/multi-app-workspace.mdx +91 -8
- package/corpus/core/docs/content/locales/zh-CN/multi-tenancy.mdx +80 -8
- package/corpus/core/docs/content/locales/zh-CN/native-chat-ui.mdx +104 -8
- package/corpus/core/docs/content/locales/zh-CN/notifications.mdx +135 -8
- package/corpus/core/docs/content/locales/zh-CN/observability.mdx +102 -8
- package/corpus/core/docs/content/locales/zh-CN/observational-memory.mdx +85 -8
- package/corpus/core/docs/content/locales/zh-CN/onboarding.mdx +44 -4
- package/corpus/core/docs/content/locales/zh-CN/plan-plugin.mdx +97 -8
- package/corpus/core/docs/content/locales/zh-CN/pr-visual-recap.mdx +123 -8
- package/corpus/core/docs/content/locales/zh-CN/processors.mdx +39 -4
- package/corpus/core/docs/content/locales/zh-CN/progress.mdx +46 -4
- package/corpus/core/docs/content/locales/zh-CN/pure-agent-apps.mdx +46 -4
- package/corpus/core/docs/content/locales/zh-CN/real-time-collaboration.mdx +98 -8
- package/corpus/core/docs/content/locales/zh-CN/recurring-jobs.mdx +59 -4
- package/corpus/core/docs/content/locales/zh-CN/routing.mdx +42 -5
- package/corpus/core/docs/content/locales/zh-CN/sandbox-adapters.mdx +41 -4
- package/corpus/core/docs/content/locales/zh-CN/security.mdx +78 -8
- package/corpus/core/docs/content/locales/zh-CN/server.mdx +169 -12
- package/corpus/core/docs/content/locales/zh-CN/sharing.mdx +45 -4
- package/corpus/core/docs/content/locales/zh-CN/skills-guide.mdx +118 -9
- package/corpus/core/docs/content/locales/zh-CN/template-analytics.mdx +46 -4
- package/corpus/core/docs/content/locales/zh-CN/template-assets.mdx +58 -4
- package/corpus/core/docs/content/locales/zh-CN/template-brain.mdx +65 -4
- package/corpus/core/docs/content/locales/zh-CN/template-calendar.mdx +58 -4
- package/corpus/core/docs/content/locales/zh-CN/template-chat.mdx +57 -4
- package/corpus/core/docs/content/locales/zh-CN/template-clips.mdx +52 -4
- package/corpus/core/docs/content/locales/zh-CN/template-content.mdx +58 -4
- package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +94 -4
- package/corpus/core/docs/content/locales/zh-CN/template-dispatch.mdx +57 -4
- package/corpus/core/docs/content/locales/zh-CN/template-forms.mdx +58 -4
- package/corpus/core/docs/content/locales/zh-CN/template-mail.mdx +60 -4
- package/corpus/core/docs/content/locales/zh-CN/template-plan.mdx +57 -4
- package/corpus/core/docs/content/locales/zh-CN/template-slides.mdx +49 -4
- package/corpus/core/docs/content/locales/zh-CN/template-videos.mdx +51 -4
- package/corpus/core/docs/content/locales/zh-CN/tracking.mdx +54 -4
- package/corpus/core/docs/content/locales/zh-CN/using-your-agent.mdx +51 -4
- package/corpus/core/docs/content/locales/zh-CN/voice-input.mdx +43 -4
- package/corpus/core/docs/content/locales/zh-CN/what-is-agent-native.mdx +94 -8
- package/corpus/core/docs/content/locales/zh-CN/workspace-connections.mdx +126 -8
- package/corpus/core/docs/content/locales/zh-CN/workspace-management.mdx +50 -4
- package/corpus/core/docs/content/locales/zh-CN/workspace.mdx +110 -8
- package/corpus/core/docs/content/locales/zh-CN/writing-agent-instructions.mdx +38 -4
- package/corpus/core/docs/content/locales/zh-TW/a2a-protocol.mdx +97 -9
- package/corpus/core/docs/content/locales/zh-TW/actions.mdx +63 -4
- package/corpus/core/docs/content/locales/zh-TW/agent-mentions.mdx +68 -4
- package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.mdx +108 -8
- package/corpus/core/docs/content/locales/zh-TW/agent-teams.mdx +171 -12
- package/corpus/core/docs/content/locales/zh-TW/agent-web-surfaces.mdx +51 -4
- package/corpus/core/docs/content/locales/zh-TW/authentication.mdx +122 -8
- package/corpus/core/docs/content/locales/zh-TW/automations.mdx +110 -8
- package/corpus/core/docs/content/locales/zh-TW/blueprint-installer.mdx +42 -4
- package/corpus/core/docs/content/locales/zh-TW/cli-adapters.mdx +44 -4
- package/corpus/core/docs/content/locales/zh-TW/client.mdx +79 -8
- package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +83 -8
- package/corpus/core/docs/content/locales/zh-TW/code-agents-ui.mdx +94 -8
- package/corpus/core/docs/content/locales/zh-TW/components.mdx +112 -8
- package/corpus/core/docs/content/locales/zh-TW/context-awareness.mdx +96 -8
- package/corpus/core/docs/content/locales/zh-TW/creating-templates.mdx +51 -4
- package/corpus/core/docs/content/locales/zh-TW/cross-app-sso.mdx +107 -8
- package/corpus/core/docs/content/locales/zh-TW/database.mdx +52 -4
- package/corpus/core/docs/content/locales/zh-TW/deployment.mdx +103 -8
- package/corpus/core/docs/content/locales/zh-TW/dispatch.mdx +134 -8
- package/corpus/core/docs/content/locales/zh-TW/drop-in-agent.mdx +63 -4
- package/corpus/core/docs/content/locales/zh-TW/durable-background-runs.mdx +88 -8
- package/corpus/core/docs/content/locales/zh-TW/durable-resume.mdx +45 -4
- package/corpus/core/docs/content/locales/zh-TW/embedding-sdk.mdx +83 -8
- package/corpus/core/docs/content/locales/zh-TW/evals.mdx +100 -8
- package/corpus/core/docs/content/locales/zh-TW/extensions.mdx +111 -9
- package/corpus/core/docs/content/locales/zh-TW/external-agents.mdx +119 -8
- package/corpus/core/docs/content/locales/zh-TW/faq.mdx +96 -8
- package/corpus/core/docs/content/locales/zh-TW/file-uploads.mdx +61 -4
- package/corpus/core/docs/content/locales/zh-TW/frames.mdx +86 -8
- package/corpus/core/docs/content/locales/zh-TW/getting-started.mdx +34 -4
- package/corpus/core/docs/content/locales/zh-TW/harness-agents.mdx +79 -8
- package/corpus/core/docs/content/locales/zh-TW/human-approval.mdx +50 -4
- package/corpus/core/docs/content/locales/zh-TW/key-concepts.mdx +100 -8
- package/corpus/core/docs/content/locales/zh-TW/local-file-mode.mdx +56 -4
- package/corpus/core/docs/content/locales/zh-TW/mcp-apps.mdx +120 -10
- package/corpus/core/docs/content/locales/zh-TW/mcp-clients.mdx +133 -8
- package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.mdx +105 -8
- package/corpus/core/docs/content/locales/zh-TW/messaging.mdx +115 -8
- package/corpus/core/docs/content/locales/zh-TW/migration-workbench.mdx +45 -4
- package/corpus/core/docs/content/locales/zh-TW/multi-app-workspace.mdx +91 -8
- package/corpus/core/docs/content/locales/zh-TW/multi-tenancy.mdx +80 -8
- package/corpus/core/docs/content/locales/zh-TW/native-chat-ui.mdx +104 -8
- package/corpus/core/docs/content/locales/zh-TW/notifications.mdx +135 -8
- package/corpus/core/docs/content/locales/zh-TW/observability.mdx +102 -8
- package/corpus/core/docs/content/locales/zh-TW/observational-memory.mdx +85 -8
- package/corpus/core/docs/content/locales/zh-TW/onboarding.mdx +44 -4
- package/corpus/core/docs/content/locales/zh-TW/plan-plugin.mdx +97 -8
- package/corpus/core/docs/content/locales/zh-TW/pr-visual-recap.mdx +123 -8
- package/corpus/core/docs/content/locales/zh-TW/processors.mdx +39 -4
- package/corpus/core/docs/content/locales/zh-TW/progress.mdx +46 -4
- package/corpus/core/docs/content/locales/zh-TW/pure-agent-apps.mdx +46 -4
- package/corpus/core/docs/content/locales/zh-TW/real-time-collaboration.mdx +98 -8
- package/corpus/core/docs/content/locales/zh-TW/recurring-jobs.mdx +59 -4
- package/corpus/core/docs/content/locales/zh-TW/routing.mdx +42 -5
- package/corpus/core/docs/content/locales/zh-TW/sandbox-adapters.mdx +41 -4
- package/corpus/core/docs/content/locales/zh-TW/security.mdx +80 -8
- package/corpus/core/docs/content/locales/zh-TW/server.mdx +169 -12
- package/corpus/core/docs/content/locales/zh-TW/sharing.mdx +45 -4
- package/corpus/core/docs/content/locales/zh-TW/skills-guide.mdx +118 -9
- package/corpus/core/docs/content/locales/zh-TW/template-analytics.mdx +46 -4
- package/corpus/core/docs/content/locales/zh-TW/template-assets.mdx +58 -4
- package/corpus/core/docs/content/locales/zh-TW/template-brain.mdx +65 -4
- package/corpus/core/docs/content/locales/zh-TW/template-calendar.mdx +58 -4
- package/corpus/core/docs/content/locales/zh-TW/template-chat.mdx +59 -4
- package/corpus/core/docs/content/locales/zh-TW/template-clips.mdx +52 -4
- package/corpus/core/docs/content/locales/zh-TW/template-content.mdx +58 -4
- package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +96 -4
- package/corpus/core/docs/content/locales/zh-TW/template-dispatch.mdx +57 -4
- package/corpus/core/docs/content/locales/zh-TW/template-forms.mdx +58 -4
- package/corpus/core/docs/content/locales/zh-TW/template-mail.mdx +60 -4
- package/corpus/core/docs/content/locales/zh-TW/template-plan.mdx +57 -4
- package/corpus/core/docs/content/locales/zh-TW/template-slides.mdx +49 -4
- package/corpus/core/docs/content/locales/zh-TW/template-videos.mdx +51 -4
- package/corpus/core/docs/content/locales/zh-TW/tracking.mdx +54 -4
- package/corpus/core/docs/content/locales/zh-TW/using-your-agent.mdx +51 -4
- package/corpus/core/docs/content/locales/zh-TW/voice-input.mdx +43 -4
- package/corpus/core/docs/content/locales/zh-TW/what-is-agent-native.mdx +94 -8
- package/corpus/core/docs/content/locales/zh-TW/workspace-connections.mdx +126 -8
- package/corpus/core/docs/content/locales/zh-TW/workspace-management.mdx +50 -4
- package/corpus/core/docs/content/locales/zh-TW/workspace.mdx +111 -8
- package/corpus/core/docs/content/locales/zh-TW/writing-agent-instructions.mdx +38 -4
- package/corpus/core/docs/content/mcp-apps.mdx +120 -10
- package/corpus/core/docs/content/mcp-clients.mdx +161 -8
- package/corpus/core/docs/content/mcp-protocol.mdx +105 -8
- package/corpus/core/docs/content/messaging.mdx +115 -8
- package/corpus/core/docs/content/migration-workbench.mdx +45 -4
- package/corpus/core/docs/content/multi-app-workspace.mdx +91 -8
- package/corpus/core/docs/content/multi-tenancy.mdx +80 -8
- package/corpus/core/docs/content/native-chat-ui.mdx +106 -8
- package/corpus/core/docs/content/notifications.mdx +135 -8
- package/corpus/core/docs/content/observability.mdx +102 -8
- package/corpus/core/docs/content/observational-memory.mdx +89 -8
- package/corpus/core/docs/content/onboarding.mdx +45 -4
- package/corpus/core/docs/content/plan-plugin.mdx +99 -8
- package/corpus/core/docs/content/pr-visual-recap.mdx +125 -8
- package/corpus/core/docs/content/processors.mdx +41 -4
- package/corpus/core/docs/content/progress.mdx +46 -4
- package/corpus/core/docs/content/pure-agent-apps.mdx +46 -4
- package/corpus/core/docs/content/real-time-collaboration.mdx +104 -8
- package/corpus/core/docs/content/recurring-jobs.mdx +59 -4
- package/corpus/core/docs/content/routing.mdx +44 -5
- package/corpus/core/docs/content/sandbox-adapters.mdx +43 -4
- package/corpus/core/docs/content/security.mdx +80 -8
- package/corpus/core/docs/content/server.mdx +173 -12
- package/corpus/core/docs/content/sharing.mdx +45 -4
- package/corpus/core/docs/content/skills-guide.mdx +118 -9
- package/corpus/core/docs/content/template-analytics.mdx +46 -4
- package/corpus/core/docs/content/template-assets.mdx +60 -4
- package/corpus/core/docs/content/template-brain.mdx +67 -4
- package/corpus/core/docs/content/template-calendar.mdx +62 -4
- package/corpus/core/docs/content/template-chat.mdx +61 -4
- package/corpus/core/docs/content/template-clips.mdx +52 -4
- package/corpus/core/docs/content/template-content.mdx +60 -4
- package/corpus/core/docs/content/template-design.mdx +103 -4
- package/corpus/core/docs/content/template-dispatch.mdx +57 -4
- package/corpus/core/docs/content/template-forms.mdx +62 -4
- package/corpus/core/docs/content/template-mail.mdx +60 -4
- package/corpus/core/docs/content/template-plan.mdx +61 -4
- package/corpus/core/docs/content/template-slides.mdx +49 -4
- package/corpus/core/docs/content/template-videos.mdx +51 -4
- package/corpus/core/docs/content/tracking.mdx +54 -4
- package/corpus/core/docs/content/using-your-agent.mdx +51 -4
- package/corpus/core/docs/content/voice-input.mdx +43 -4
- package/corpus/core/docs/content/what-is-agent-native.mdx +188 -8
- package/corpus/core/docs/content/workspace-connections.mdx +128 -8
- package/corpus/core/docs/content/workspace-management.mdx +50 -4
- package/corpus/core/docs/content/workspace.mdx +111 -8
- package/corpus/core/docs/content/writing-agent-instructions.mdx +45 -4
- package/corpus/core/package.json +2 -1
- package/corpus/core/src/agent/engine/index.ts +1 -0
- package/corpus/core/src/agent/engine/registry.ts +40 -0
- package/corpus/core/src/agent/production-agent.ts +6 -2
- package/corpus/core/src/application-state/store.ts +5 -5
- package/corpus/core/src/chat-threads/store.ts +2 -2
- package/corpus/core/src/cli/content-local.ts +374 -0
- package/corpus/core/src/cli/design-connect.ts +490 -0
- package/corpus/core/src/cli/index.ts +33 -0
- package/corpus/core/src/cli/skills.ts +355 -200
- package/corpus/core/src/client/AssistantChat.tsx +39 -3
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +11 -93
- package/corpus/core/src/client/agent-chat.ts +27 -3
- package/corpus/core/src/client/analytics.ts +68 -15
- package/corpus/core/src/client/blocks/index.ts +2 -0
- package/corpus/core/src/client/blocks/library/MermaidBlock.tsx +1 -1
- package/corpus/core/src/client/blocks/library/diagram.config.ts +42 -18
- package/corpus/core/src/client/blocks/library/diagram.tsx +2 -2
- package/corpus/core/src/client/blocks/library/sanitize-html.ts +71 -6
- package/corpus/core/src/client/blocks/library/wireframe-kit.tsx +2 -2
- package/corpus/core/src/client/blocks/library/wireframe.tsx +9 -3
- package/corpus/core/src/client/blocks/mdx.ts +62 -1
- package/corpus/core/src/client/blocks/server.ts +2 -0
- package/corpus/core/src/client/blocks/types.ts +5 -4
- package/corpus/core/src/client/chat/message-components.tsx +2 -98
- package/corpus/core/src/client/chat-model-groups.ts +147 -0
- package/corpus/core/src/client/components/LiveCursorOverlay.tsx +33 -66
- package/corpus/core/src/client/components/ui/dialog.tsx +91 -0
- package/corpus/core/src/client/composer/ComposerPlusMenu.tsx +33 -290
- package/corpus/core/src/client/composer/TiptapComposer.tsx +99 -24
- package/corpus/core/src/client/composer/useVoiceDictation.ts +429 -260
- package/corpus/core/src/client/frame-protocol.ts +17 -2
- package/corpus/core/src/client/index.ts +2 -0
- package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +614 -0
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +411 -644
- package/corpus/core/src/client/resources/mcp-integration-catalog.ts +239 -0
- package/corpus/core/src/client/rich-markdown-editor/RegistryBlockNode.tsx +2 -2
- package/corpus/core/src/client/settings/SettingsPanel.tsx +1 -1
- package/corpus/core/src/client/sharing/ShareButton.tsx +20 -15
- package/corpus/core/src/client/use-agent-engine-configured.ts +80 -28
- package/corpus/core/src/client/use-chat-models.ts +12 -104
- package/corpus/core/src/db/client.ts +0 -5
- package/corpus/core/src/integrations/adapters/email.ts +2 -2
- package/corpus/core/src/local-artifacts/index.ts +18 -0
- package/corpus/core/src/localization/default-messages.ts +81 -0
- package/corpus/core/src/localization/shared.ts +3 -3
- package/corpus/core/src/org/handlers.ts +2 -2
- package/corpus/core/src/resources/store.ts +7 -7
- package/corpus/core/src/server/core-routes-plugin.ts +34 -12
- package/corpus/core/src/server/transcribe-voice.ts +57 -22
- package/corpus/core/src/shared/mcp-embed-headers.ts +23 -1
- package/corpus/core/src/shared/mcp-integration-config.ts +101 -0
- package/corpus/core/src/styles/agent-native.css +58 -107
- package/corpus/core/src/styles/blocks.css +15 -3
- package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +10 -0
- package/corpus/core/src/vite/client.ts +19 -0
- package/corpus/core/src/voice/index.ts +18 -0
- package/corpus/core/src/voice/voice-cleanup-prompt.ts +38 -0
- package/corpus/core/src/voice/voice-context.ts +217 -0
- package/corpus/core/src/voice/voice-replacements.ts +75 -0
- package/corpus/templates/analytics/AGENTS.md +4 -3
- package/corpus/templates/analytics/actions/list-session-recordings.ts +6 -1
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +557 -400
- package/corpus/templates/analytics/app/global.css +22 -4
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/analytics/app/i18n-data.ts +21 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +33 -8
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +7 -0
- package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +32 -10
- package/corpus/templates/analytics/changelog/2026-06-28-ask-tab-now-matches-the-darker-app-background.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-28-dashboard-email-reports-now-use-cleaner-light-mode-snapshots.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-28-sessions-now-show-only-signed-in-recordings-with-playable-re.md +6 -0
- package/corpus/templates/analytics/changelog/2026-06-28-sessions-shows-scoped-recordings-even-when-replay-events-are.md +6 -0
- package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +3 -3
- package/corpus/templates/analytics/server/lib/dashboard-report.ts +29 -7
- package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +5 -2
- package/corpus/templates/analytics/server/lib/session-replay.ts +21 -7
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +4 -4
- package/corpus/templates/assets/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
- package/corpus/templates/brain/app/components/layout/Layout.tsx +29 -2
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +131 -42
- package/corpus/templates/brain/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/brain/app/i18n-data.ts +20 -0
- package/corpus/templates/brain/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
- package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +29 -1
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +417 -299
- package/corpus/templates/calendar/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/calendar/app/i18n-data.ts +20 -0
- package/corpus/templates/calendar/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +6 -19
- package/corpus/templates/chat/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
- package/corpus/templates/clips/AGENTS.md +8 -0
- package/corpus/templates/clips/actions/cleanup-transcript.ts +58 -10
- package/corpus/templates/clips/actions/finalize-meeting.ts +81 -12
- package/corpus/templates/clips/actions/get-builder-credit-status.ts +22 -0
- package/corpus/templates/clips/actions/get-recording-player-data.ts +18 -3
- package/corpus/templates/clips/actions/lib/agents-md-context.ts +4 -1
- package/corpus/templates/clips/actions/lib/builder-credits-state.ts +46 -0
- package/corpus/templates/clips/actions/lib/provider-transcript.ts +51 -0
- package/corpus/templates/clips/actions/regenerate-title.ts +18 -0
- package/corpus/templates/clips/actions/request-transcript.ts +56 -33
- package/corpus/templates/clips/actions/save-browser-transcript.ts +1 -17
- package/corpus/templates/clips/app/components/library/library-layout.tsx +3 -3
- package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +1 -1
- package/corpus/templates/clips/app/components/player/share-dialog.tsx +2 -2
- package/corpus/templates/clips/app/components/player/transcript-panel.tsx +120 -11
- package/corpus/templates/clips/app/i18n/ar-SA.ts +25 -0
- package/corpus/templates/clips/app/i18n/de-DE.ts +25 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +25 -0
- package/corpus/templates/clips/app/i18n/es-ES.ts +25 -0
- package/corpus/templates/clips/app/i18n/fr-FR.ts +25 -0
- package/corpus/templates/clips/app/i18n/hi-IN.ts +25 -0
- package/corpus/templates/clips/app/i18n/ja-JP.ts +25 -0
- package/corpus/templates/clips/app/i18n/ko-KR.ts +25 -0
- package/corpus/templates/clips/app/i18n/pt-BR.ts +25 -0
- package/corpus/templates/clips/app/i18n/zh-CN.ts +23 -0
- package/corpus/templates/clips/app/i18n/zh-TW.ts +23 -0
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +69 -0
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +52 -2
- package/corpus/templates/clips/app/routes/record.tsx +26 -15
- package/corpus/templates/clips/changelog/2026-06-28-builder-credit-pauses-show-friendly-upgrade-guidance.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-28-left-sidebar-footer-controls-use-less-divider-chrome.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-28-transcription-now-auto-detects-spoken-language-instead-of-following.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-28-video-uploads-now-finish-when-duration-metadata-is-unavailable.md +6 -0
- package/corpus/templates/clips/desktop/src/lib/personal-vocabulary.ts +13 -8
- package/corpus/templates/clips/desktop/src/lib/transcription-engine.ts +7 -3
- package/corpus/templates/clips/desktop/src/lib/voice-dictation.ts +60 -1
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +30 -12
- package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +6 -19
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +4 -3
- package/corpus/templates/clips/shared/builder-credits.ts +120 -0
- package/corpus/templates/clips/shared/recording-core.ts +26 -8
- package/corpus/templates/content/AGENTS.md +23 -2
- package/corpus/templates/content/actions/_builder-docs-client.ts +952 -0
- package/corpus/templates/content/actions/_document-flush.ts +62 -0
- package/corpus/templates/content/actions/_local-file-documents.ts +115 -18
- package/corpus/templates/content/actions/check-builder-doc.ts +38 -0
- package/corpus/templates/content/actions/delete-document.ts +8 -0
- package/corpus/templates/content/actions/import-content-source.ts +12 -0
- package/corpus/templates/content/actions/list-builder-docs.ts +29 -0
- package/corpus/templates/content/actions/pull-builder-doc.ts +42 -0
- package/corpus/templates/content/actions/pull-document.ts +9 -59
- package/corpus/templates/content/actions/push-builder-doc.ts +45 -0
- package/corpus/templates/content/app/blocks/BuilderDocsBlocks.tsx +254 -0
- package/corpus/templates/content/app/blocks/contentBlockRegistry.tsx +4 -0
- package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +1 -1
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +1 -1
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +5 -5
- package/corpus/templates/content/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
- package/corpus/templates/content/server/db/schema.ts +12 -0
- package/corpus/templates/content/server/plugins/db.ts +23 -0
- package/corpus/templates/content/shared/api.ts +1 -0
- package/corpus/templates/content/shared/builder-docs-blocks.ts +361 -0
- package/corpus/templates/content/shared/builder-mdx.ts +1037 -0
- package/corpus/templates/content/shared/content-source.ts +6 -0
- package/corpus/templates/content/shared/nfm-registry.ts +4 -0
- package/corpus/templates/content/vite.config.ts +13 -0
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +137 -0
- package/corpus/templates/design/AGENTS.md +95 -5
- package/corpus/templates/design/DESIGN.md +82 -0
- package/corpus/templates/design/DEVELOPING.md +43 -0
- package/corpus/templates/design/actions/add-localhost-screens.ts +426 -0
- package/corpus/templates/design/actions/apply-shader.ts +277 -0
- package/corpus/templates/design/actions/apply-visual-edit.ts +303 -0
- package/corpus/templates/design/actions/connect-localhost.ts +183 -0
- package/corpus/templates/design/actions/edit-design.ts +195 -42
- package/corpus/templates/design/actions/generate-design.ts +71 -1
- package/corpus/templates/design/actions/generate-screens.ts +193 -0
- package/corpus/templates/design/actions/get-code-layer-projection.ts +191 -0
- package/corpus/templates/design/actions/get-shader.ts +119 -0
- package/corpus/templates/design/actions/list-localhost-connections.ts +95 -0
- package/corpus/templates/design/actions/navigate.ts +55 -2
- package/corpus/templates/design/actions/view-screen.ts +68 -1
- package/corpus/templates/design/agent-native.app-skill.json +10 -0
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +761 -0
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +2057 -103
- package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +74 -38
- package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +399 -0
- package/corpus/templates/design/app/components/design/EditPanel.tsx +3185 -439
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +1124 -0
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +3116 -147
- package/corpus/templates/design/app/components/design/QuestionFlow.tsx +700 -13
- package/corpus/templates/design/app/components/design/TweaksPanel.tsx +107 -63
- package/corpus/templates/design/app/components/design/index.ts +0 -5
- package/corpus/templates/design/app/components/design/inspector/AlignmentMatrix.tsx +286 -0
- package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +699 -0
- package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +461 -0
- package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +166 -0
- package/corpus/templates/design/app/components/design/inspector/FigmaColorPicker.tsx +1420 -0
- package/corpus/templates/design/app/components/design/inspector/SHADER_INTEGRATION.md +420 -0
- package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +215 -0
- package/corpus/templates/design/app/components/design/inspector/ShaderControls.stories.tsx +71 -0
- package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +518 -0
- package/corpus/templates/design/app/components/design/inspector/ShaderEffectRow.tsx +106 -0
- package/corpus/templates/design/app/components/design/inspector/figma-icons.tsx +361 -0
- package/corpus/templates/design/app/components/design/inspector/index.ts +60 -0
- package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +201 -0
- package/corpus/templates/design/app/components/design/types.ts +23 -0
- package/corpus/templates/design/app/components/layout/Layout.tsx +24 -13
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +4 -4
- package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +474 -36
- package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +22 -5
- package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +24 -11
- package/corpus/templates/design/app/global.css +121 -3
- package/corpus/templates/design/app/hooks/use-agent-generating.ts +4 -0
- package/corpus/templates/design/app/hooks/use-navigation-state.ts +130 -8
- package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +329 -0
- package/corpus/templates/design/app/i18n/zh-TW.ts +264 -0
- package/corpus/templates/design/app/i18n-data.ts +2790 -1
- package/corpus/templates/design/app/pages/DesignEditor.tsx +5108 -851
- package/corpus/templates/design/changelog/2026-06-28-annotate-mode-now-combines-drawing-and-comment-pins-in-one-c.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-design-editor-panel-borders-are-cleaner-so-the-canvas-edge-s.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-drawing-prompts-now-reliably-open-and-submit-to-the-design-a.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-editor-app-menus-now-use-an-outline-agent-native-mark-with-b.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-figma-style-code-design-mode.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-layer-selection-now-updates-chat-context-without-opening-the.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-layer-selections-now-preserve-hidden-and-locked-canvas-state.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-live-cursors-now-keep-names-beside-a-cleaner-pointer-marker.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-mode-switching-now-lives-in-a-compact-bottom-right-icon-dock.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-screen-overview-now-handles-zooming-drawing-opening-and-dele.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-screen-overview-now-selects-screens-on-click-and-opens-them-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-screen-overview-zooms-into-the-active-screen-with-smoother-e.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-selected-element-chips-in-chat-are-shorter-and-easier-to-sca.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-the-design-editor-toolbar-is-more-compact-and-the-app-menu-m.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-tweaks-now-live-at-the-top-of-the-design-sidebar-instead-of-.md +6 -0
- package/corpus/templates/design/changelog/2026-06-28-tweaks-now-live-in-the-right-inspector-beside-the-design-tab.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-active-sidebar-rows-use-soft-highlights.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-agents-can-now-open-screen-overview-focus-screens-and-add.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-design-agents-now-edit-broad-copy-changes-more-reliably.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-design-editor-extensions-now-run-inline-beside-the-artboard.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-sidebars-use-darker-chrome-and-chat-warns-immediately.md +6 -0
- package/corpus/templates/design/changelog/2026-06-29-visual-edit-can-open-localhost-routes-as-url-backed-screens.md +6 -0
- package/corpus/templates/design/package.json +1 -0
- package/corpus/templates/design/server/db/schema.ts +26 -0
- package/corpus/templates/design/server/lib/design-snapshot.ts +1 -1
- package/corpus/templates/design/server/plugins/agent-chat.ts +3 -0
- package/corpus/templates/design/shared/api.ts +27 -0
- package/corpus/templates/design/shared/canvas-frames.ts +103 -0
- package/corpus/templates/design/shared/canvas-math.ts +1058 -0
- package/corpus/templates/design/shared/code-layer.ts +2212 -0
- package/corpus/templates/design/shared/color-utils.ts +180 -0
- package/corpus/templates/design/shared/generation-session.ts +61 -0
- package/corpus/templates/design/shared/shader-presets.ts +782 -0
- package/corpus/templates/design/shared/shader-safety.ts +137 -0
- package/corpus/templates/design/shared/source-mode.ts +237 -0
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +149 -6
- package/corpus/templates/forms/app/i18n/ar-SA.ts +2 -0
- package/corpus/templates/forms/app/i18n/de-DE.ts +2 -0
- package/corpus/templates/forms/app/i18n/en-US.ts +2 -0
- package/corpus/templates/forms/app/i18n/es-ES.ts +2 -0
- package/corpus/templates/forms/app/i18n/fr-FR.ts +2 -0
- package/corpus/templates/forms/app/i18n/hi-IN.ts +2 -0
- package/corpus/templates/forms/app/i18n/ja-JP.ts +2 -0
- package/corpus/templates/forms/app/i18n/ko-KR.ts +2 -0
- package/corpus/templates/forms/app/i18n/pt-BR.ts +2 -0
- package/corpus/templates/forms/app/i18n/zh-CN.ts +2 -0
- package/corpus/templates/forms/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/forms/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +2 -2
- package/corpus/templates/macros/changelog/2026-06-28-left-sidebar-footer-controls-use-less-divider-chrome.md +6 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +408 -247
- package/corpus/templates/mail/app/i18n/ar-SA.ts +4 -0
- package/corpus/templates/mail/app/i18n/de-DE.ts +4 -0
- package/corpus/templates/mail/app/i18n/en-US.ts +4 -0
- package/corpus/templates/mail/app/i18n/es-ES.ts +4 -0
- package/corpus/templates/mail/app/i18n/fr-FR.ts +4 -0
- package/corpus/templates/mail/app/i18n/hi-IN.ts +4 -0
- package/corpus/templates/mail/app/i18n/ja-JP.ts +4 -0
- package/corpus/templates/mail/app/i18n/ko-KR.ts +4 -0
- package/corpus/templates/mail/app/i18n/pt-BR.ts +4 -0
- package/corpus/templates/mail/app/i18n/zh-CN.ts +4 -0
- package/corpus/templates/mail/app/i18n/zh-TW.ts +4 -0
- package/corpus/templates/mail/changelog/2026-06-28-pinned-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
- package/corpus/templates/plan/.agents/skills/visual-plan/SKILL.md +25 -92
- package/corpus/templates/plan/.agents/skills/visual-plan/references/connection.md +51 -0
- package/corpus/templates/plan/.agents/skills/visual-plan/references/document-quality.md +5 -1
- package/corpus/templates/plan/.agents/skills/visual-plan/references/local-files.md +85 -0
- package/corpus/templates/plan/.agents/skills/visual-plan/references/wireframe.md +21 -0
- package/corpus/templates/plan/.agents/skills/visual-recap/SKILL.md +32 -104
- package/corpus/templates/plan/.agents/skills/visual-recap/references/connection.md +51 -0
- package/corpus/templates/plan/.agents/skills/visual-recap/references/local-files.md +85 -0
- package/corpus/templates/plan/.agents/skills/visual-recap/references/wireframe.md +21 -0
- package/corpus/templates/plan/actions/create-prototype-plan.ts +1 -1
- package/corpus/templates/plan/actions/delete-visual-plan.ts +2 -2
- package/corpus/templates/plan/actions/get-plan-blocks.ts +2 -0
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +6 -8
- package/corpus/templates/plan/app/components/plan/CanvasArea.tsx +25 -29
- package/corpus/templates/plan/app/components/plan/wireframe/Wireframe.tsx +10 -5
- package/corpus/templates/plan/app/components/plan/wireframe/html-artboard.css +15 -3
- package/corpus/templates/plan/app/components/plan/wireframe/kit/rough.tsx +6 -6
- package/corpus/templates/plan/app/components/plan/wireframe/sanitize-html.ts +71 -6
- package/corpus/templates/plan/app/global.css +67 -81
- package/corpus/templates/plan/app/pages/PlansPage.tsx +8 -0
- package/corpus/templates/plan/app/root.tsx +31 -1
- package/corpus/templates/plan/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
- package/corpus/templates/plan/changelog/2026-06-28-plan-canvases-stay-stable-while-panning-and-zooming-in-chrom.md +6 -0
- package/corpus/templates/plan/changelog/2026-06-28-plan-wireframes-avoid-overlapping-sketch-lines-in-dense-mockups.md +6 -0
- package/corpus/templates/plan/changelog/2026-06-28-plan-wireframes-ignore-host-color-utility-classes-so-canvas-.md +6 -0
- package/corpus/templates/plan/changelog/2026-06-28-plans-use-the-shared-neutral-light-and-dark-theme.md +6 -0
- package/corpus/templates/plan/changelog/2026-06-28-sending-open-feedback-from-a-plan-now-opens-the-inline-plan-.md +6 -0
- package/corpus/templates/plan/changelog/2026-06-28-wireframe-style-can-now-be-switched-between-sketchy-and-clean.md +6 -0
- package/corpus/templates/plan/server/plan-content.ts +62 -3
- package/corpus/templates/plan/server/plan-mdx.ts +177 -2
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +5 -5
- package/corpus/templates/slides/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
- package/corpus/templates/videos/app/components/Sidebar.tsx +2 -2
- package/corpus/templates/videos/app/components/layout/Layout.tsx +29 -2
- package/corpus/templates/videos/app/components/layout/NavSidebar.tsx +113 -30
- package/corpus/templates/videos/app/i18n/ar-SA.ts +2 -0
- package/corpus/templates/videos/app/i18n/de-DE.ts +2 -0
- package/corpus/templates/videos/app/i18n/en-US.ts +2 -0
- package/corpus/templates/videos/app/i18n/es-ES.ts +2 -0
- package/corpus/templates/videos/app/i18n/fr-FR.ts +2 -0
- package/corpus/templates/videos/app/i18n/hi-IN.ts +2 -0
- package/corpus/templates/videos/app/i18n/ja-JP.ts +2 -0
- package/corpus/templates/videos/app/i18n/ko-KR.ts +2 -0
- package/corpus/templates/videos/app/i18n/pt-BR.ts +2 -0
- package/corpus/templates/videos/app/i18n/zh-CN.ts +2 -0
- package/corpus/templates/videos/app/i18n/zh-TW.ts +2 -0
- package/corpus/templates/videos/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
- package/dist/agent/engine/index.d.ts +1 -1
- package/dist/agent/engine/index.d.ts.map +1 -1
- package/dist/agent/engine/index.js +1 -1
- package/dist/agent/engine/index.js.map +1 -1
- package/dist/agent/engine/registry.d.ts +9 -0
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +37 -0
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +4 -3
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/application-state/store.js +5 -5
- package/dist/application-state/store.js.map +1 -1
- package/dist/chat-threads/store.js +2 -2
- package/dist/chat-threads/store.js.map +1 -1
- package/dist/cli/content-local.d.ts +31 -0
- package/dist/cli/content-local.d.ts.map +1 -0
- package/dist/cli/content-local.js +300 -0
- package/dist/cli/content-local.js.map +1 -0
- package/dist/cli/design-connect.d.ts +52 -0
- package/dist/cli/design-connect.d.ts.map +1 -0
- package/dist/cli/design-connect.js +409 -0
- package/dist/cli/design-connect.js.map +1 -0
- package/dist/cli/index.js +31 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/skills.d.ts +13 -4
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +348 -200
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +34 -4
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +8 -69
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat.d.ts +6 -0
- package/dist/client/agent-chat.d.ts.map +1 -1
- package/dist/client/agent-chat.js +17 -3
- package/dist/client/agent-chat.js.map +1 -1
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +48 -13
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/blocks/index.d.ts +1 -1
- package/dist/client/blocks/index.d.ts.map +1 -1
- package/dist/client/blocks/index.js +1 -1
- package/dist/client/blocks/index.js.map +1 -1
- package/dist/client/blocks/library/MermaidBlock.js +1 -1
- package/dist/client/blocks/library/MermaidBlock.js.map +1 -1
- package/dist/client/blocks/library/diagram.config.d.ts +9 -9
- package/dist/client/blocks/library/diagram.config.d.ts.map +1 -1
- package/dist/client/blocks/library/diagram.config.js +36 -12
- package/dist/client/blocks/library/diagram.config.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/sanitize-html.d.ts +3 -1
- package/dist/client/blocks/library/sanitize-html.d.ts.map +1 -1
- package/dist/client/blocks/library/sanitize-html.js +53 -5
- package/dist/client/blocks/library/sanitize-html.js.map +1 -1
- package/dist/client/blocks/library/wireframe-kit.d.ts +2 -2
- package/dist/client/blocks/library/wireframe-kit.d.ts.map +1 -1
- package/dist/client/blocks/library/wireframe-kit.js +2 -2
- package/dist/client/blocks/library/wireframe-kit.js.map +1 -1
- package/dist/client/blocks/library/wireframe.d.ts.map +1 -1
- package/dist/client/blocks/library/wireframe.js +5 -2
- package/dist/client/blocks/library/wireframe.js.map +1 -1
- package/dist/client/blocks/mdx.d.ts +11 -0
- package/dist/client/blocks/mdx.d.ts.map +1 -1
- package/dist/client/blocks/mdx.js +47 -1
- package/dist/client/blocks/mdx.js.map +1 -1
- package/dist/client/blocks/server.d.ts +1 -1
- package/dist/client/blocks/server.d.ts.map +1 -1
- package/dist/client/blocks/server.js +1 -1
- package/dist/client/blocks/server.js.map +1 -1
- package/dist/client/blocks/types.d.ts +5 -4
- package/dist/client/blocks/types.d.ts.map +1 -1
- package/dist/client/blocks/types.js.map +1 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +2 -12
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat-model-groups.d.ts +22 -0
- package/dist/client/chat-model-groups.d.ts.map +1 -0
- package/dist/client/chat-model-groups.js +93 -0
- package/dist/client/chat-model-groups.js.map +1 -0
- package/dist/client/components/LiveCursorOverlay.d.ts +1 -2
- package/dist/client/components/LiveCursorOverlay.d.ts.map +1 -1
- package/dist/client/components/LiveCursorOverlay.js +19 -40
- package/dist/client/components/LiveCursorOverlay.js.map +1 -1
- package/dist/client/components/ui/dialog.d.ts +14 -0
- package/dist/client/components/ui/dialog.d.ts.map +1 -0
- package/dist/client/components/ui/dialog.js +21 -0
- package/dist/client/components/ui/dialog.js.map +1 -0
- package/dist/client/composer/ComposerPlusMenu.d.ts.map +1 -1
- package/dist/client/composer/ComposerPlusMenu.js +24 -149
- package/dist/client/composer/ComposerPlusMenu.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +3 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +86 -24
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/useVoiceDictation.d.ts +9 -0
- package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
- package/dist/client/composer/useVoiceDictation.js +154 -32
- package/dist/client/composer/useVoiceDictation.js.map +1 -1
- package/dist/client/frame-protocol.d.ts +17 -2
- package/dist/client/frame-protocol.d.ts.map +1 -1
- package/dist/client/frame-protocol.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/resources/McpIntegrationDialog.d.ts +13 -0
- package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -0
- package/dist/client/resources/McpIntegrationDialog.js +261 -0
- package/dist/client/resources/McpIntegrationDialog.js.map +1 -0
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +74 -190
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.d.ts +30 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -0
- package/dist/client/resources/mcp-integration-catalog.js +191 -0
- package/dist/client/resources/mcp-integration-catalog.js.map +1 -0
- package/dist/client/rich-markdown-editor/RegistryBlockNode.js +2 -2
- package/dist/client/rich-markdown-editor/RegistryBlockNode.js.map +1 -1
- package/dist/client/settings/SettingsPanel.js +1 -1
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/sharing/ShareButton.d.ts +2 -0
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +7 -6
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/use-agent-engine-configured.d.ts +5 -0
- package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
- package/dist/client/use-agent-engine-configured.js +51 -25
- package/dist/client/use-agent-engine-configured.js.map +1 -1
- package/dist/client/use-chat-models.d.ts +2 -7
- package/dist/client/use-chat-models.d.ts.map +1 -1
- package/dist/client/use-chat-models.js +8 -78
- package/dist/client/use-chat-models.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +2 -2
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +0 -5
- package/dist/db/client.js.map +1 -1
- package/dist/integrations/adapters/email.js +2 -2
- package/dist/integrations/adapters/email.js.map +1 -1
- package/dist/local-artifacts/index.d.ts +6 -0
- package/dist/local-artifacts/index.d.ts.map +1 -1
- package/dist/local-artifacts/index.js +12 -0
- package/dist/local-artifacts/index.js.map +1 -1
- package/dist/localization/default-messages.d.ts +76 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +76 -0
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/localization/shared.d.ts +1 -1
- package/dist/localization/shared.js +3 -3
- package/dist/localization/shared.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +6 -6
- package/dist/org/handlers.js +2 -2
- package/dist/org/handlers.js.map +1 -1
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/resources/store.js +7 -7
- package/dist/resources/store.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- 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 +29 -11
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/server/transcribe-voice.d.ts.map +1 -1
- package/dist/server/transcribe-voice.js +40 -24
- package/dist/server/transcribe-voice.js.map +1 -1
- package/dist/shared/mcp-embed-headers.d.ts +1 -0
- package/dist/shared/mcp-embed-headers.d.ts.map +1 -1
- package/dist/shared/mcp-embed-headers.js +20 -1
- package/dist/shared/mcp-embed-headers.js.map +1 -1
- package/dist/shared/mcp-integration-config.d.ts +27 -0
- package/dist/shared/mcp-integration-config.d.ts.map +1 -0
- package/dist/shared/mcp-integration-config.js +56 -0
- package/dist/shared/mcp-integration-config.js.map +1 -0
- package/dist/styles/agent-native.css +58 -107
- package/dist/styles/blocks.css +15 -3
- package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +10 -0
- package/dist/vite/client.d.ts +11 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +4 -0
- package/dist/vite/client.js.map +1 -1
- package/dist/voice/index.d.ts +5 -0
- package/dist/voice/index.d.ts.map +1 -0
- package/dist/voice/index.js +4 -0
- package/dist/voice/index.js.map +1 -0
- package/dist/voice/voice-cleanup-prompt.d.ts +6 -0
- package/dist/voice/voice-cleanup-prompt.d.ts.map +1 -0
- package/dist/voice/voice-cleanup-prompt.js +26 -0
- package/dist/voice/voice-cleanup-prompt.js.map +1 -0
- package/dist/voice/voice-context.d.ts +25 -0
- package/dist/voice/voice-context.d.ts.map +1 -0
- package/dist/voice/voice-context.js +156 -0
- package/dist/voice/voice-context.js.map +1 -0
- package/dist/voice/voice-replacements.d.ts +4 -0
- package/dist/voice/voice-replacements.d.ts.map +1 -0
- package/dist/voice/voice-replacements.js +52 -0
- package/dist/voice/voice-replacements.js.map +1 -0
- package/docs/content/a2a-protocol.mdx +97 -9
- package/docs/content/actions.mdx +65 -4
- package/docs/content/agent-mentions.mdx +68 -4
- package/docs/content/agent-surfaces.mdx +112 -8
- package/docs/content/agent-teams.mdx +171 -12
- package/docs/content/agent-web-surfaces.mdx +51 -4
- package/docs/content/authentication.mdx +122 -8
- package/docs/content/automations.mdx +110 -8
- package/docs/content/blueprint-installer.mdx +42 -4
- package/docs/content/cli-adapters.mdx +44 -4
- package/docs/content/client.mdx +79 -8
- package/docs/content/cloneable-saas.mdx +85 -8
- package/docs/content/code-agents-ui.mdx +98 -8
- package/docs/content/components.mdx +118 -8
- package/docs/content/context-awareness.mdx +98 -8
- package/docs/content/creating-templates.mdx +49 -4
- package/docs/content/cross-app-sso.mdx +109 -8
- package/docs/content/database.mdx +56 -4
- package/docs/content/deployment.mdx +103 -8
- package/docs/content/dispatch.mdx +134 -8
- package/docs/content/drop-in-agent.mdx +63 -4
- package/docs/content/durable-background-runs.mdx +98 -8
- package/docs/content/durable-resume.mdx +47 -4
- package/docs/content/embedding-sdk.mdx +83 -8
- package/docs/content/evals.mdx +102 -8
- package/docs/content/extensions.mdx +113 -9
- package/docs/content/external-agents.mdx +119 -8
- package/docs/content/faq.mdx +98 -8
- package/docs/content/file-uploads.mdx +61 -4
- package/docs/content/frames.mdx +90 -8
- package/docs/content/generative-ui.mdx +50 -4
- package/docs/content/getting-started.mdx +34 -4
- package/docs/content/harness-agents.mdx +77 -8
- package/docs/content/human-approval.mdx +50 -4
- package/docs/content/key-concepts.mdx +102 -8
- package/docs/content/local-file-mode.mdx +58 -4
- package/docs/content/locales/ar-SA/a2a-protocol.mdx +97 -9
- package/docs/content/locales/ar-SA/actions.mdx +65 -4
- package/docs/content/locales/ar-SA/agent-mentions.mdx +68 -4
- package/docs/content/locales/ar-SA/agent-surfaces.mdx +114 -8
- package/docs/content/locales/ar-SA/agent-teams.mdx +174 -12
- package/docs/content/locales/ar-SA/agent-web-surfaces.mdx +49 -4
- package/docs/content/locales/ar-SA/authentication.mdx +120 -8
- package/docs/content/locales/ar-SA/automations.mdx +110 -8
- package/docs/content/locales/ar-SA/blueprint-installer.mdx +42 -4
- package/docs/content/locales/ar-SA/cli-adapters.mdx +40 -4
- package/docs/content/locales/ar-SA/client.mdx +80 -8
- package/docs/content/locales/ar-SA/cloneable-saas.mdx +85 -8
- package/docs/content/locales/ar-SA/code-agents-ui.mdx +99 -8
- package/docs/content/locales/ar-SA/components.mdx +114 -8
- package/docs/content/locales/ar-SA/context-awareness.mdx +100 -8
- package/docs/content/locales/ar-SA/creating-templates.mdx +51 -4
- package/docs/content/locales/ar-SA/cross-app-sso.mdx +109 -8
- package/docs/content/locales/ar-SA/database.mdx +52 -4
- package/docs/content/locales/ar-SA/deployment.mdx +103 -8
- package/docs/content/locales/ar-SA/dispatch.mdx +134 -8
- package/docs/content/locales/ar-SA/drop-in-agent.mdx +63 -4
- package/docs/content/locales/ar-SA/durable-resume.mdx +47 -4
- package/docs/content/locales/ar-SA/embedding-sdk.mdx +83 -8
- package/docs/content/locales/ar-SA/evals.mdx +102 -8
- package/docs/content/locales/ar-SA/extensions.mdx +113 -9
- package/docs/content/locales/ar-SA/external-agents.mdx +119 -8
- package/docs/content/locales/ar-SA/faq.mdx +98 -8
- package/docs/content/locales/ar-SA/file-uploads.mdx +61 -4
- package/docs/content/locales/ar-SA/frames.mdx +88 -8
- package/docs/content/locales/ar-SA/getting-started.mdx +34 -4
- package/docs/content/locales/ar-SA/harness-agents.mdx +79 -8
- package/docs/content/locales/ar-SA/human-approval.mdx +50 -4
- package/docs/content/locales/ar-SA/key-concepts.mdx +107 -8
- package/docs/content/locales/ar-SA/local-file-mode.mdx +56 -4
- package/docs/content/locales/ar-SA/mcp-apps.mdx +120 -10
- package/docs/content/locales/ar-SA/mcp-clients.mdx +133 -8
- package/docs/content/locales/ar-SA/mcp-protocol.mdx +105 -8
- package/docs/content/locales/ar-SA/messaging.mdx +115 -8
- package/docs/content/locales/ar-SA/migration-workbench.mdx +47 -4
- package/docs/content/locales/ar-SA/multi-app-workspace.mdx +91 -8
- package/docs/content/locales/ar-SA/multi-tenancy.mdx +80 -8
- package/docs/content/locales/ar-SA/native-chat-ui.mdx +104 -8
- package/docs/content/locales/ar-SA/notifications.mdx +135 -8
- package/docs/content/locales/ar-SA/observability.mdx +102 -8
- package/docs/content/locales/ar-SA/observational-memory.mdx +87 -8
- package/docs/content/locales/ar-SA/onboarding.mdx +45 -4
- package/docs/content/locales/ar-SA/plan-plugin.mdx +99 -8
- package/docs/content/locales/ar-SA/pr-visual-recap.mdx +125 -8
- package/docs/content/locales/ar-SA/processors.mdx +41 -4
- package/docs/content/locales/ar-SA/progress.mdx +46 -4
- package/docs/content/locales/ar-SA/pure-agent-apps.mdx +48 -4
- package/docs/content/locales/ar-SA/real-time-collaboration.mdx +102 -8
- package/docs/content/locales/ar-SA/recurring-jobs.mdx +59 -4
- package/docs/content/locales/ar-SA/routing.mdx +44 -5
- package/docs/content/locales/ar-SA/sandbox-adapters.mdx +43 -4
- package/docs/content/locales/ar-SA/security.mdx +80 -8
- package/docs/content/locales/ar-SA/server.mdx +173 -12
- package/docs/content/locales/ar-SA/sharing.mdx +45 -4
- package/docs/content/locales/ar-SA/skills-guide.mdx +118 -9
- package/docs/content/locales/ar-SA/template-analytics.mdx +46 -4
- package/docs/content/locales/ar-SA/template-assets.mdx +62 -4
- package/docs/content/locales/ar-SA/template-brain.mdx +65 -4
- package/docs/content/locales/ar-SA/template-calendar.mdx +62 -4
- package/docs/content/locales/ar-SA/template-chat.mdx +61 -4
- package/docs/content/locales/ar-SA/template-clips.mdx +52 -4
- package/docs/content/locales/ar-SA/template-content.mdx +62 -4
- package/docs/content/locales/ar-SA/template-design.mdx +101 -4
- package/docs/content/locales/ar-SA/template-dispatch.mdx +57 -4
- package/docs/content/locales/ar-SA/template-forms.mdx +62 -4
- package/docs/content/locales/ar-SA/template-mail.mdx +60 -4
- package/docs/content/locales/ar-SA/template-plan.mdx +61 -4
- package/docs/content/locales/ar-SA/template-slides.mdx +49 -4
- package/docs/content/locales/ar-SA/template-videos.mdx +53 -4
- package/docs/content/locales/ar-SA/tracking.mdx +54 -4
- package/docs/content/locales/ar-SA/using-your-agent.mdx +51 -4
- package/docs/content/locales/ar-SA/voice-input.mdx +43 -4
- package/docs/content/locales/ar-SA/what-is-agent-native.mdx +96 -8
- package/docs/content/locales/ar-SA/workspace-connections.mdx +128 -8
- package/docs/content/locales/ar-SA/workspace-management.mdx +50 -4
- package/docs/content/locales/ar-SA/workspace.mdx +112 -8
- package/docs/content/locales/ar-SA/writing-agent-instructions.mdx +41 -4
- package/docs/content/locales/de-DE/a2a-protocol.mdx +99 -9
- package/docs/content/locales/de-DE/actions.mdx +67 -4
- package/docs/content/locales/de-DE/agent-mentions.mdx +68 -4
- package/docs/content/locales/de-DE/agent-surfaces.mdx +116 -8
- package/docs/content/locales/de-DE/agent-teams.mdx +171 -12
- package/docs/content/locales/de-DE/agent-web-surfaces.mdx +51 -4
- package/docs/content/locales/de-DE/authentication.mdx +122 -8
- package/docs/content/locales/de-DE/automations.mdx +110 -8
- package/docs/content/locales/de-DE/blueprint-installer.mdx +42 -4
- package/docs/content/locales/de-DE/cli-adapters.mdx +44 -4
- package/docs/content/locales/de-DE/client.mdx +79 -8
- package/docs/content/locales/de-DE/cloneable-saas.mdx +85 -8
- package/docs/content/locales/de-DE/code-agents-ui.mdx +100 -8
- package/docs/content/locales/de-DE/components.mdx +118 -8
- package/docs/content/locales/de-DE/context-awareness.mdx +98 -8
- package/docs/content/locales/de-DE/creating-templates.mdx +51 -4
- package/docs/content/locales/de-DE/cross-app-sso.mdx +109 -8
- package/docs/content/locales/de-DE/database.mdx +52 -4
- package/docs/content/locales/de-DE/deployment.mdx +103 -8
- package/docs/content/locales/de-DE/dispatch.mdx +134 -8
- package/docs/content/locales/de-DE/drop-in-agent.mdx +63 -4
- package/docs/content/locales/de-DE/durable-resume.mdx +47 -4
- package/docs/content/locales/de-DE/embedding-sdk.mdx +85 -8
- package/docs/content/locales/de-DE/evals.mdx +102 -8
- package/docs/content/locales/de-DE/extensions.mdx +113 -9
- package/docs/content/locales/de-DE/external-agents.mdx +119 -8
- package/docs/content/locales/de-DE/faq.mdx +98 -8
- package/docs/content/locales/de-DE/file-uploads.mdx +61 -4
- package/docs/content/locales/de-DE/frames.mdx +88 -8
- package/docs/content/locales/de-DE/getting-started.mdx +34 -4
- package/docs/content/locales/de-DE/harness-agents.mdx +79 -8
- package/docs/content/locales/de-DE/human-approval.mdx +50 -4
- package/docs/content/locales/de-DE/key-concepts.mdx +104 -8
- package/docs/content/locales/de-DE/local-file-mode.mdx +58 -4
- package/docs/content/locales/de-DE/mcp-apps.mdx +120 -10
- package/docs/content/locales/de-DE/mcp-clients.mdx +133 -8
- package/docs/content/locales/de-DE/mcp-protocol.mdx +105 -8
- package/docs/content/locales/de-DE/messaging.mdx +115 -8
- package/docs/content/locales/de-DE/migration-workbench.mdx +47 -4
- package/docs/content/locales/de-DE/multi-app-workspace.mdx +91 -8
- package/docs/content/locales/de-DE/multi-tenancy.mdx +80 -8
- package/docs/content/locales/de-DE/native-chat-ui.mdx +108 -8
- package/docs/content/locales/de-DE/notifications.mdx +135 -8
- package/docs/content/locales/de-DE/observability.mdx +102 -8
- package/docs/content/locales/de-DE/observational-memory.mdx +92 -8
- package/docs/content/locales/de-DE/onboarding.mdx +45 -4
- package/docs/content/locales/de-DE/plan-plugin.mdx +99 -8
- package/docs/content/locales/de-DE/pr-visual-recap.mdx +125 -8
- package/docs/content/locales/de-DE/processors.mdx +41 -4
- package/docs/content/locales/de-DE/progress.mdx +46 -4
- package/docs/content/locales/de-DE/pure-agent-apps.mdx +50 -4
- package/docs/content/locales/de-DE/real-time-collaboration.mdx +104 -8
- package/docs/content/locales/de-DE/recurring-jobs.mdx +59 -4
- package/docs/content/locales/de-DE/routing.mdx +44 -5
- package/docs/content/locales/de-DE/sandbox-adapters.mdx +43 -4
- package/docs/content/locales/de-DE/security.mdx +80 -8
- package/docs/content/locales/de-DE/server.mdx +171 -12
- package/docs/content/locales/de-DE/sharing.mdx +45 -4
- package/docs/content/locales/de-DE/skills-guide.mdx +118 -9
- package/docs/content/locales/de-DE/template-analytics.mdx +46 -4
- package/docs/content/locales/de-DE/template-assets.mdx +62 -4
- package/docs/content/locales/de-DE/template-brain.mdx +69 -4
- package/docs/content/locales/de-DE/template-calendar.mdx +62 -4
- package/docs/content/locales/de-DE/template-chat.mdx +61 -4
- package/docs/content/locales/de-DE/template-clips.mdx +52 -4
- package/docs/content/locales/de-DE/template-content.mdx +60 -4
- package/docs/content/locales/de-DE/template-design.mdx +109 -4
- package/docs/content/locales/de-DE/template-dispatch.mdx +57 -4
- package/docs/content/locales/de-DE/template-forms.mdx +64 -4
- package/docs/content/locales/de-DE/template-mail.mdx +60 -4
- package/docs/content/locales/de-DE/template-plan.mdx +63 -4
- package/docs/content/locales/de-DE/template-slides.mdx +49 -4
- package/docs/content/locales/de-DE/template-videos.mdx +53 -4
- package/docs/content/locales/de-DE/tracking.mdx +54 -4
- package/docs/content/locales/de-DE/using-your-agent.mdx +51 -4
- package/docs/content/locales/de-DE/voice-input.mdx +45 -4
- package/docs/content/locales/de-DE/what-is-agent-native.mdx +100 -8
- package/docs/content/locales/de-DE/workspace-connections.mdx +128 -8
- package/docs/content/locales/de-DE/workspace-management.mdx +50 -4
- package/docs/content/locales/de-DE/workspace.mdx +111 -8
- package/docs/content/locales/de-DE/writing-agent-instructions.mdx +45 -4
- package/docs/content/locales/es-ES/a2a-protocol.mdx +99 -9
- package/docs/content/locales/es-ES/actions.mdx +67 -4
- package/docs/content/locales/es-ES/agent-mentions.mdx +68 -4
- package/docs/content/locales/es-ES/agent-surfaces.mdx +120 -8
- package/docs/content/locales/es-ES/agent-teams.mdx +172 -12
- package/docs/content/locales/es-ES/agent-web-surfaces.mdx +51 -4
- package/docs/content/locales/es-ES/authentication.mdx +122 -8
- package/docs/content/locales/es-ES/automations.mdx +110 -8
- package/docs/content/locales/es-ES/blueprint-installer.mdx +42 -4
- package/docs/content/locales/es-ES/cli-adapters.mdx +44 -4
- package/docs/content/locales/es-ES/client.mdx +79 -8
- package/docs/content/locales/es-ES/cloneable-saas.mdx +85 -8
- package/docs/content/locales/es-ES/code-agents-ui.mdx +101 -8
- package/docs/content/locales/es-ES/components.mdx +118 -8
- package/docs/content/locales/es-ES/context-awareness.mdx +98 -8
- package/docs/content/locales/es-ES/creating-templates.mdx +51 -4
- package/docs/content/locales/es-ES/cross-app-sso.mdx +109 -8
- package/docs/content/locales/es-ES/database.mdx +52 -4
- package/docs/content/locales/es-ES/deployment.mdx +103 -8
- package/docs/content/locales/es-ES/dispatch.mdx +134 -8
- package/docs/content/locales/es-ES/drop-in-agent.mdx +63 -4
- package/docs/content/locales/es-ES/durable-resume.mdx +47 -4
- package/docs/content/locales/es-ES/embedding-sdk.mdx +87 -8
- package/docs/content/locales/es-ES/evals.mdx +102 -8
- package/docs/content/locales/es-ES/extensions.mdx +113 -9
- package/docs/content/locales/es-ES/external-agents.mdx +119 -8
- package/docs/content/locales/es-ES/faq.mdx +98 -8
- package/docs/content/locales/es-ES/file-uploads.mdx +61 -4
- package/docs/content/locales/es-ES/frames.mdx +88 -8
- package/docs/content/locales/es-ES/getting-started.mdx +34 -4
- package/docs/content/locales/es-ES/harness-agents.mdx +79 -8
- package/docs/content/locales/es-ES/human-approval.mdx +50 -4
- package/docs/content/locales/es-ES/key-concepts.mdx +104 -8
- package/docs/content/locales/es-ES/local-file-mode.mdx +60 -4
- package/docs/content/locales/es-ES/mcp-apps.mdx +120 -10
- package/docs/content/locales/es-ES/mcp-clients.mdx +135 -8
- package/docs/content/locales/es-ES/mcp-protocol.mdx +105 -8
- package/docs/content/locales/es-ES/messaging.mdx +115 -8
- package/docs/content/locales/es-ES/migration-workbench.mdx +47 -4
- package/docs/content/locales/es-ES/multi-app-workspace.mdx +91 -8
- package/docs/content/locales/es-ES/multi-tenancy.mdx +80 -8
- package/docs/content/locales/es-ES/native-chat-ui.mdx +108 -8
- package/docs/content/locales/es-ES/notifications.mdx +135 -8
- package/docs/content/locales/es-ES/observability.mdx +104 -8
- package/docs/content/locales/es-ES/observational-memory.mdx +92 -8
- package/docs/content/locales/es-ES/onboarding.mdx +45 -4
- package/docs/content/locales/es-ES/plan-plugin.mdx +99 -8
- package/docs/content/locales/es-ES/pr-visual-recap.mdx +125 -8
- package/docs/content/locales/es-ES/processors.mdx +41 -4
- package/docs/content/locales/es-ES/progress.mdx +46 -4
- package/docs/content/locales/es-ES/pure-agent-apps.mdx +50 -4
- package/docs/content/locales/es-ES/real-time-collaboration.mdx +109 -8
- package/docs/content/locales/es-ES/recurring-jobs.mdx +59 -4
- package/docs/content/locales/es-ES/routing.mdx +44 -5
- package/docs/content/locales/es-ES/sandbox-adapters.mdx +44 -4
- package/docs/content/locales/es-ES/security.mdx +82 -8
- package/docs/content/locales/es-ES/server.mdx +173 -12
- package/docs/content/locales/es-ES/sharing.mdx +45 -4
- package/docs/content/locales/es-ES/skills-guide.mdx +118 -9
- package/docs/content/locales/es-ES/template-analytics.mdx +46 -4
- package/docs/content/locales/es-ES/template-assets.mdx +64 -4
- package/docs/content/locales/es-ES/template-brain.mdx +69 -4
- package/docs/content/locales/es-ES/template-calendar.mdx +62 -4
- package/docs/content/locales/es-ES/template-chat.mdx +61 -4
- package/docs/content/locales/es-ES/template-clips.mdx +52 -4
- package/docs/content/locales/es-ES/template-content.mdx +64 -4
- package/docs/content/locales/es-ES/template-design.mdx +108 -4
- package/docs/content/locales/es-ES/template-dispatch.mdx +57 -4
- package/docs/content/locales/es-ES/template-forms.mdx +64 -4
- package/docs/content/locales/es-ES/template-mail.mdx +60 -4
- package/docs/content/locales/es-ES/template-plan.mdx +61 -4
- package/docs/content/locales/es-ES/template-slides.mdx +49 -4
- package/docs/content/locales/es-ES/template-videos.mdx +53 -4
- package/docs/content/locales/es-ES/tracking.mdx +54 -4
- package/docs/content/locales/es-ES/using-your-agent.mdx +51 -4
- package/docs/content/locales/es-ES/voice-input.mdx +45 -4
- package/docs/content/locales/es-ES/what-is-agent-native.mdx +99 -8
- package/docs/content/locales/es-ES/workspace-connections.mdx +128 -8
- package/docs/content/locales/es-ES/workspace-management.mdx +50 -4
- package/docs/content/locales/es-ES/workspace.mdx +112 -8
- package/docs/content/locales/es-ES/writing-agent-instructions.mdx +46 -4
- package/docs/content/locales/fr-FR/a2a-protocol.mdx +97 -9
- package/docs/content/locales/fr-FR/actions.mdx +67 -4
- package/docs/content/locales/fr-FR/agent-mentions.mdx +68 -4
- package/docs/content/locales/fr-FR/agent-surfaces.mdx +118 -8
- package/docs/content/locales/fr-FR/agent-teams.mdx +172 -12
- package/docs/content/locales/fr-FR/agent-web-surfaces.mdx +51 -4
- package/docs/content/locales/fr-FR/authentication.mdx +122 -8
- package/docs/content/locales/fr-FR/automations.mdx +110 -8
- package/docs/content/locales/fr-FR/blueprint-installer.mdx +42 -4
- package/docs/content/locales/fr-FR/cli-adapters.mdx +44 -4
- package/docs/content/locales/fr-FR/client.mdx +81 -8
- package/docs/content/locales/fr-FR/cloneable-saas.mdx +85 -8
- package/docs/content/locales/fr-FR/code-agents-ui.mdx +102 -8
- package/docs/content/locales/fr-FR/components.mdx +118 -8
- package/docs/content/locales/fr-FR/context-awareness.mdx +98 -8
- package/docs/content/locales/fr-FR/creating-templates.mdx +49 -4
- package/docs/content/locales/fr-FR/cross-app-sso.mdx +109 -8
- package/docs/content/locales/fr-FR/database.mdx +52 -4
- package/docs/content/locales/fr-FR/deployment.mdx +103 -8
- package/docs/content/locales/fr-FR/dispatch.mdx +134 -8
- package/docs/content/locales/fr-FR/drop-in-agent.mdx +63 -4
- package/docs/content/locales/fr-FR/durable-resume.mdx +47 -4
- package/docs/content/locales/fr-FR/embedding-sdk.mdx +87 -8
- package/docs/content/locales/fr-FR/evals.mdx +102 -8
- package/docs/content/locales/fr-FR/extensions.mdx +113 -9
- package/docs/content/locales/fr-FR/external-agents.mdx +119 -8
- package/docs/content/locales/fr-FR/faq.mdx +98 -8
- package/docs/content/locales/fr-FR/file-uploads.mdx +61 -4
- package/docs/content/locales/fr-FR/frames.mdx +90 -8
- package/docs/content/locales/fr-FR/getting-started.mdx +34 -4
- package/docs/content/locales/fr-FR/harness-agents.mdx +77 -8
- package/docs/content/locales/fr-FR/human-approval.mdx +50 -4
- package/docs/content/locales/fr-FR/key-concepts.mdx +106 -8
- package/docs/content/locales/fr-FR/local-file-mode.mdx +58 -4
- package/docs/content/locales/fr-FR/mcp-apps.mdx +120 -10
- package/docs/content/locales/fr-FR/mcp-clients.mdx +135 -8
- package/docs/content/locales/fr-FR/mcp-protocol.mdx +105 -8
- package/docs/content/locales/fr-FR/messaging.mdx +115 -8
- package/docs/content/locales/fr-FR/migration-workbench.mdx +47 -4
- package/docs/content/locales/fr-FR/multi-app-workspace.mdx +91 -8
- package/docs/content/locales/fr-FR/multi-tenancy.mdx +80 -8
- package/docs/content/locales/fr-FR/native-chat-ui.mdx +108 -8
- package/docs/content/locales/fr-FR/notifications.mdx +135 -8
- package/docs/content/locales/fr-FR/observability.mdx +104 -8
- package/docs/content/locales/fr-FR/observational-memory.mdx +89 -8
- package/docs/content/locales/fr-FR/onboarding.mdx +45 -4
- package/docs/content/locales/fr-FR/plan-plugin.mdx +99 -8
- package/docs/content/locales/fr-FR/pr-visual-recap.mdx +126 -8
- package/docs/content/locales/fr-FR/processors.mdx +41 -4
- package/docs/content/locales/fr-FR/progress.mdx +46 -4
- package/docs/content/locales/fr-FR/pure-agent-apps.mdx +48 -4
- package/docs/content/locales/fr-FR/real-time-collaboration.mdx +107 -8
- package/docs/content/locales/fr-FR/recurring-jobs.mdx +59 -4
- package/docs/content/locales/fr-FR/routing.mdx +44 -5
- package/docs/content/locales/fr-FR/sandbox-adapters.mdx +44 -4
- package/docs/content/locales/fr-FR/security.mdx +82 -8
- package/docs/content/locales/fr-FR/server.mdx +173 -12
- package/docs/content/locales/fr-FR/sharing.mdx +45 -4
- package/docs/content/locales/fr-FR/skills-guide.mdx +118 -9
- package/docs/content/locales/fr-FR/template-analytics.mdx +46 -4
- package/docs/content/locales/fr-FR/template-assets.mdx +66 -4
- package/docs/content/locales/fr-FR/template-brain.mdx +69 -4
- package/docs/content/locales/fr-FR/template-calendar.mdx +62 -4
- package/docs/content/locales/fr-FR/template-chat.mdx +61 -4
- package/docs/content/locales/fr-FR/template-clips.mdx +52 -4
- package/docs/content/locales/fr-FR/template-content.mdx +64 -4
- package/docs/content/locales/fr-FR/template-design.mdx +107 -4
- package/docs/content/locales/fr-FR/template-dispatch.mdx +57 -4
- package/docs/content/locales/fr-FR/template-forms.mdx +64 -4
- package/docs/content/locales/fr-FR/template-mail.mdx +60 -4
- package/docs/content/locales/fr-FR/template-plan.mdx +61 -4
- package/docs/content/locales/fr-FR/template-slides.mdx +49 -4
- package/docs/content/locales/fr-FR/template-videos.mdx +53 -4
- package/docs/content/locales/fr-FR/tracking.mdx +54 -4
- package/docs/content/locales/fr-FR/using-your-agent.mdx +51 -4
- package/docs/content/locales/fr-FR/voice-input.mdx +45 -4
- package/docs/content/locales/fr-FR/what-is-agent-native.mdx +101 -8
- package/docs/content/locales/fr-FR/workspace-connections.mdx +128 -8
- package/docs/content/locales/fr-FR/workspace-management.mdx +50 -4
- package/docs/content/locales/fr-FR/workspace.mdx +112 -8
- package/docs/content/locales/fr-FR/writing-agent-instructions.mdx +47 -4
- package/docs/content/locales/hi-IN/a2a-protocol.mdx +97 -9
- package/docs/content/locales/hi-IN/actions.mdx +63 -4
- package/docs/content/locales/hi-IN/agent-mentions.mdx +68 -4
- package/docs/content/locales/hi-IN/agent-surfaces.mdx +112 -8
- package/docs/content/locales/hi-IN/agent-teams.mdx +171 -12
- package/docs/content/locales/hi-IN/agent-web-surfaces.mdx +51 -4
- package/docs/content/locales/hi-IN/authentication.mdx +122 -8
- package/docs/content/locales/hi-IN/automations.mdx +110 -8
- package/docs/content/locales/hi-IN/blueprint-installer.mdx +42 -4
- package/docs/content/locales/hi-IN/cli-adapters.mdx +44 -4
- package/docs/content/locales/hi-IN/client.mdx +79 -8
- package/docs/content/locales/hi-IN/cloneable-saas.mdx +85 -8
- package/docs/content/locales/hi-IN/code-agents-ui.mdx +96 -8
- package/docs/content/locales/hi-IN/components.mdx +114 -8
- package/docs/content/locales/hi-IN/context-awareness.mdx +102 -8
- package/docs/content/locales/hi-IN/creating-templates.mdx +53 -4
- package/docs/content/locales/hi-IN/cross-app-sso.mdx +109 -8
- package/docs/content/locales/hi-IN/database.mdx +52 -4
- package/docs/content/locales/hi-IN/deployment.mdx +103 -8
- package/docs/content/locales/hi-IN/dispatch.mdx +134 -8
- package/docs/content/locales/hi-IN/drop-in-agent.mdx +63 -4
- package/docs/content/locales/hi-IN/durable-resume.mdx +47 -4
- package/docs/content/locales/hi-IN/embedding-sdk.mdx +83 -8
- package/docs/content/locales/hi-IN/evals.mdx +100 -8
- package/docs/content/locales/hi-IN/extensions.mdx +113 -9
- package/docs/content/locales/hi-IN/external-agents.mdx +119 -8
- package/docs/content/locales/hi-IN/faq.mdx +96 -8
- package/docs/content/locales/hi-IN/file-uploads.mdx +61 -4
- package/docs/content/locales/hi-IN/frames.mdx +88 -8
- package/docs/content/locales/hi-IN/getting-started.mdx +34 -4
- package/docs/content/locales/hi-IN/harness-agents.mdx +77 -8
- package/docs/content/locales/hi-IN/human-approval.mdx +51 -4
- package/docs/content/locales/hi-IN/key-concepts.mdx +104 -8
- package/docs/content/locales/hi-IN/local-file-mode.mdx +58 -4
- package/docs/content/locales/hi-IN/mcp-apps.mdx +120 -10
- package/docs/content/locales/hi-IN/mcp-clients.mdx +133 -8
- package/docs/content/locales/hi-IN/mcp-protocol.mdx +105 -8
- package/docs/content/locales/hi-IN/messaging.mdx +115 -8
- package/docs/content/locales/hi-IN/migration-workbench.mdx +45 -4
- package/docs/content/locales/hi-IN/multi-app-workspace.mdx +91 -8
- package/docs/content/locales/hi-IN/multi-tenancy.mdx +80 -8
- package/docs/content/locales/hi-IN/native-chat-ui.mdx +106 -8
- package/docs/content/locales/hi-IN/notifications.mdx +135 -8
- package/docs/content/locales/hi-IN/observability.mdx +102 -8
- package/docs/content/locales/hi-IN/observational-memory.mdx +89 -8
- package/docs/content/locales/hi-IN/onboarding.mdx +45 -4
- package/docs/content/locales/hi-IN/plan-plugin.mdx +99 -8
- package/docs/content/locales/hi-IN/pr-visual-recap.mdx +126 -8
- package/docs/content/locales/hi-IN/processors.mdx +41 -4
- package/docs/content/locales/hi-IN/progress.mdx +46 -4
- package/docs/content/locales/hi-IN/pure-agent-apps.mdx +48 -4
- package/docs/content/locales/hi-IN/real-time-collaboration.mdx +106 -8
- package/docs/content/locales/hi-IN/recurring-jobs.mdx +59 -4
- package/docs/content/locales/hi-IN/routing.mdx +44 -5
- package/docs/content/locales/hi-IN/sandbox-adapters.mdx +43 -4
- package/docs/content/locales/hi-IN/security.mdx +78 -8
- package/docs/content/locales/hi-IN/server.mdx +169 -12
- package/docs/content/locales/hi-IN/sharing.mdx +45 -4
- package/docs/content/locales/hi-IN/skills-guide.mdx +118 -9
- package/docs/content/locales/hi-IN/template-analytics.mdx +46 -4
- package/docs/content/locales/hi-IN/template-assets.mdx +62 -4
- package/docs/content/locales/hi-IN/template-brain.mdx +69 -4
- package/docs/content/locales/hi-IN/template-calendar.mdx +62 -4
- package/docs/content/locales/hi-IN/template-chat.mdx +59 -4
- package/docs/content/locales/hi-IN/template-clips.mdx +52 -4
- package/docs/content/locales/hi-IN/template-content.mdx +62 -4
- package/docs/content/locales/hi-IN/template-design.mdx +102 -4
- package/docs/content/locales/hi-IN/template-dispatch.mdx +57 -4
- package/docs/content/locales/hi-IN/template-forms.mdx +64 -4
- package/docs/content/locales/hi-IN/template-mail.mdx +64 -4
- package/docs/content/locales/hi-IN/template-plan.mdx +61 -4
- package/docs/content/locales/hi-IN/template-slides.mdx +49 -4
- package/docs/content/locales/hi-IN/template-videos.mdx +53 -4
- package/docs/content/locales/hi-IN/tracking.mdx +54 -4
- package/docs/content/locales/hi-IN/using-your-agent.mdx +51 -4
- package/docs/content/locales/hi-IN/voice-input.mdx +43 -4
- package/docs/content/locales/hi-IN/what-is-agent-native.mdx +97 -8
- package/docs/content/locales/hi-IN/workspace-connections.mdx +128 -8
- package/docs/content/locales/hi-IN/workspace-management.mdx +50 -4
- package/docs/content/locales/hi-IN/workspace.mdx +111 -8
- package/docs/content/locales/hi-IN/writing-agent-instructions.mdx +40 -4
- package/docs/content/locales/ja-JP/a2a-protocol.mdx +97 -9
- package/docs/content/locales/ja-JP/actions.mdx +67 -4
- package/docs/content/locales/ja-JP/agent-mentions.mdx +68 -4
- package/docs/content/locales/ja-JP/agent-surfaces.mdx +116 -8
- package/docs/content/locales/ja-JP/agent-teams.mdx +172 -12
- package/docs/content/locales/ja-JP/agent-web-surfaces.mdx +51 -4
- package/docs/content/locales/ja-JP/authentication.mdx +122 -8
- package/docs/content/locales/ja-JP/automations.mdx +110 -8
- package/docs/content/locales/ja-JP/blueprint-installer.mdx +44 -4
- package/docs/content/locales/ja-JP/cli-adapters.mdx +44 -4
- package/docs/content/locales/ja-JP/client.mdx +79 -8
- package/docs/content/locales/ja-JP/cloneable-saas.mdx +85 -8
- package/docs/content/locales/ja-JP/code-agents-ui.mdx +100 -8
- package/docs/content/locales/ja-JP/components.mdx +116 -8
- package/docs/content/locales/ja-JP/context-awareness.mdx +100 -8
- package/docs/content/locales/ja-JP/creating-templates.mdx +51 -4
- package/docs/content/locales/ja-JP/cross-app-sso.mdx +109 -8
- package/docs/content/locales/ja-JP/database.mdx +52 -4
- package/docs/content/locales/ja-JP/deployment.mdx +103 -8
- package/docs/content/locales/ja-JP/dispatch.mdx +134 -8
- package/docs/content/locales/ja-JP/drop-in-agent.mdx +63 -4
- package/docs/content/locales/ja-JP/durable-resume.mdx +47 -4
- package/docs/content/locales/ja-JP/embedding-sdk.mdx +85 -8
- package/docs/content/locales/ja-JP/evals.mdx +102 -8
- package/docs/content/locales/ja-JP/extensions.mdx +111 -9
- package/docs/content/locales/ja-JP/external-agents.mdx +119 -8
- package/docs/content/locales/ja-JP/faq.mdx +98 -8
- package/docs/content/locales/ja-JP/file-uploads.mdx +61 -4
- package/docs/content/locales/ja-JP/frames.mdx +88 -8
- package/docs/content/locales/ja-JP/getting-started.mdx +34 -4
- package/docs/content/locales/ja-JP/harness-agents.mdx +79 -8
- package/docs/content/locales/ja-JP/human-approval.mdx +50 -4
- package/docs/content/locales/ja-JP/key-concepts.mdx +105 -8
- package/docs/content/locales/ja-JP/local-file-mode.mdx +58 -4
- package/docs/content/locales/ja-JP/mcp-apps.mdx +119 -10
- package/docs/content/locales/ja-JP/mcp-clients.mdx +134 -8
- package/docs/content/locales/ja-JP/mcp-protocol.mdx +105 -8
- package/docs/content/locales/ja-JP/messaging.mdx +115 -8
- package/docs/content/locales/ja-JP/migration-workbench.mdx +47 -4
- package/docs/content/locales/ja-JP/multi-app-workspace.mdx +91 -8
- package/docs/content/locales/ja-JP/multi-tenancy.mdx +80 -8
- package/docs/content/locales/ja-JP/native-chat-ui.mdx +104 -8
- package/docs/content/locales/ja-JP/notifications.mdx +135 -8
- package/docs/content/locales/ja-JP/observability.mdx +104 -8
- package/docs/content/locales/ja-JP/observational-memory.mdx +89 -8
- package/docs/content/locales/ja-JP/onboarding.mdx +45 -4
- package/docs/content/locales/ja-JP/plan-plugin.mdx +99 -8
- package/docs/content/locales/ja-JP/pr-visual-recap.mdx +123 -8
- package/docs/content/locales/ja-JP/processors.mdx +39 -4
- package/docs/content/locales/ja-JP/progress.mdx +46 -4
- package/docs/content/locales/ja-JP/pure-agent-apps.mdx +48 -4
- package/docs/content/locales/ja-JP/real-time-collaboration.mdx +106 -8
- package/docs/content/locales/ja-JP/recurring-jobs.mdx +59 -4
- package/docs/content/locales/ja-JP/routing.mdx +44 -5
- package/docs/content/locales/ja-JP/sandbox-adapters.mdx +43 -4
- package/docs/content/locales/ja-JP/security.mdx +82 -8
- package/docs/content/locales/ja-JP/server.mdx +171 -12
- package/docs/content/locales/ja-JP/sharing.mdx +45 -4
- package/docs/content/locales/ja-JP/skills-guide.mdx +118 -9
- package/docs/content/locales/ja-JP/template-analytics.mdx +46 -4
- package/docs/content/locales/ja-JP/template-assets.mdx +64 -4
- package/docs/content/locales/ja-JP/template-brain.mdx +67 -4
- package/docs/content/locales/ja-JP/template-calendar.mdx +62 -4
- package/docs/content/locales/ja-JP/template-chat.mdx +61 -4
- package/docs/content/locales/ja-JP/template-clips.mdx +52 -4
- package/docs/content/locales/ja-JP/template-content.mdx +62 -4
- package/docs/content/locales/ja-JP/template-design.mdx +106 -4
- package/docs/content/locales/ja-JP/template-dispatch.mdx +57 -4
- package/docs/content/locales/ja-JP/template-forms.mdx +62 -4
- package/docs/content/locales/ja-JP/template-mail.mdx +62 -4
- package/docs/content/locales/ja-JP/template-plan.mdx +63 -4
- package/docs/content/locales/ja-JP/template-slides.mdx +49 -4
- package/docs/content/locales/ja-JP/template-videos.mdx +53 -4
- package/docs/content/locales/ja-JP/tracking.mdx +54 -4
- package/docs/content/locales/ja-JP/using-your-agent.mdx +51 -4
- package/docs/content/locales/ja-JP/voice-input.mdx +43 -4
- package/docs/content/locales/ja-JP/what-is-agent-native.mdx +96 -8
- package/docs/content/locales/ja-JP/workspace-connections.mdx +128 -8
- package/docs/content/locales/ja-JP/workspace-management.mdx +50 -4
- package/docs/content/locales/ja-JP/workspace.mdx +111 -8
- package/docs/content/locales/ja-JP/writing-agent-instructions.mdx +44 -4
- package/docs/content/locales/ko-KR/a2a-protocol.mdx +97 -9
- package/docs/content/locales/ko-KR/actions.mdx +63 -4
- package/docs/content/locales/ko-KR/agent-mentions.mdx +68 -4
- package/docs/content/locales/ko-KR/agent-surfaces.mdx +113 -8
- package/docs/content/locales/ko-KR/agent-teams.mdx +171 -12
- package/docs/content/locales/ko-KR/agent-web-surfaces.mdx +51 -4
- package/docs/content/locales/ko-KR/authentication.mdx +122 -8
- package/docs/content/locales/ko-KR/automations.mdx +110 -8
- package/docs/content/locales/ko-KR/blueprint-installer.mdx +42 -4
- package/docs/content/locales/ko-KR/cli-adapters.mdx +44 -4
- package/docs/content/locales/ko-KR/client.mdx +79 -8
- package/docs/content/locales/ko-KR/cloneable-saas.mdx +85 -8
- package/docs/content/locales/ko-KR/code-agents-ui.mdx +96 -8
- package/docs/content/locales/ko-KR/components.mdx +112 -8
- package/docs/content/locales/ko-KR/context-awareness.mdx +96 -8
- package/docs/content/locales/ko-KR/creating-templates.mdx +51 -4
- package/docs/content/locales/ko-KR/cross-app-sso.mdx +109 -8
- package/docs/content/locales/ko-KR/database.mdx +52 -4
- package/docs/content/locales/ko-KR/deployment.mdx +103 -8
- package/docs/content/locales/ko-KR/dispatch.mdx +132 -8
- package/docs/content/locales/ko-KR/drop-in-agent.mdx +63 -4
- package/docs/content/locales/ko-KR/durable-resume.mdx +47 -4
- package/docs/content/locales/ko-KR/embedding-sdk.mdx +81 -8
- package/docs/content/locales/ko-KR/evals.mdx +102 -8
- package/docs/content/locales/ko-KR/extensions.mdx +111 -9
- package/docs/content/locales/ko-KR/external-agents.mdx +119 -8
- package/docs/content/locales/ko-KR/faq.mdx +96 -8
- package/docs/content/locales/ko-KR/file-uploads.mdx +61 -4
- package/docs/content/locales/ko-KR/frames.mdx +86 -8
- package/docs/content/locales/ko-KR/getting-started.mdx +34 -4
- package/docs/content/locales/ko-KR/harness-agents.mdx +77 -8
- package/docs/content/locales/ko-KR/human-approval.mdx +50 -4
- package/docs/content/locales/ko-KR/key-concepts.mdx +104 -8
- package/docs/content/locales/ko-KR/local-file-mode.mdx +56 -4
- package/docs/content/locales/ko-KR/mcp-apps.mdx +120 -10
- package/docs/content/locales/ko-KR/mcp-clients.mdx +133 -8
- package/docs/content/locales/ko-KR/mcp-protocol.mdx +105 -8
- package/docs/content/locales/ko-KR/messaging.mdx +115 -8
- package/docs/content/locales/ko-KR/migration-workbench.mdx +45 -4
- package/docs/content/locales/ko-KR/multi-app-workspace.mdx +91 -8
- package/docs/content/locales/ko-KR/multi-tenancy.mdx +80 -8
- package/docs/content/locales/ko-KR/native-chat-ui.mdx +104 -8
- package/docs/content/locales/ko-KR/notifications.mdx +135 -8
- package/docs/content/locales/ko-KR/observability.mdx +102 -8
- package/docs/content/locales/ko-KR/observational-memory.mdx +87 -8
- package/docs/content/locales/ko-KR/onboarding.mdx +44 -4
- package/docs/content/locales/ko-KR/plan-plugin.mdx +99 -8
- package/docs/content/locales/ko-KR/pr-visual-recap.mdx +125 -8
- package/docs/content/locales/ko-KR/processors.mdx +39 -4
- package/docs/content/locales/ko-KR/progress.mdx +46 -4
- package/docs/content/locales/ko-KR/pure-agent-apps.mdx +46 -4
- package/docs/content/locales/ko-KR/real-time-collaboration.mdx +104 -8
- package/docs/content/locales/ko-KR/recurring-jobs.mdx +59 -4
- package/docs/content/locales/ko-KR/routing.mdx +44 -5
- package/docs/content/locales/ko-KR/sandbox-adapters.mdx +41 -4
- package/docs/content/locales/ko-KR/security.mdx +78 -8
- package/docs/content/locales/ko-KR/server.mdx +171 -12
- package/docs/content/locales/ko-KR/sharing.mdx +45 -4
- package/docs/content/locales/ko-KR/skills-guide.mdx +118 -9
- package/docs/content/locales/ko-KR/template-analytics.mdx +46 -4
- package/docs/content/locales/ko-KR/template-assets.mdx +62 -4
- package/docs/content/locales/ko-KR/template-brain.mdx +65 -4
- package/docs/content/locales/ko-KR/template-calendar.mdx +60 -4
- package/docs/content/locales/ko-KR/template-chat.mdx +59 -4
- package/docs/content/locales/ko-KR/template-clips.mdx +52 -4
- package/docs/content/locales/ko-KR/template-content.mdx +60 -4
- package/docs/content/locales/ko-KR/template-design.mdx +102 -4
- package/docs/content/locales/ko-KR/template-dispatch.mdx +57 -4
- package/docs/content/locales/ko-KR/template-forms.mdx +60 -4
- package/docs/content/locales/ko-KR/template-mail.mdx +60 -4
- package/docs/content/locales/ko-KR/template-plan.mdx +57 -4
- package/docs/content/locales/ko-KR/template-slides.mdx +49 -4
- package/docs/content/locales/ko-KR/template-videos.mdx +53 -4
- package/docs/content/locales/ko-KR/tracking.mdx +54 -4
- package/docs/content/locales/ko-KR/using-your-agent.mdx +51 -4
- package/docs/content/locales/ko-KR/voice-input.mdx +43 -4
- package/docs/content/locales/ko-KR/what-is-agent-native.mdx +95 -8
- package/docs/content/locales/ko-KR/workspace-connections.mdx +128 -8
- package/docs/content/locales/ko-KR/workspace-management.mdx +50 -4
- package/docs/content/locales/ko-KR/workspace.mdx +111 -8
- package/docs/content/locales/ko-KR/writing-agent-instructions.mdx +38 -4
- package/docs/content/locales/pt-BR/a2a-protocol.mdx +99 -9
- package/docs/content/locales/pt-BR/actions.mdx +67 -4
- package/docs/content/locales/pt-BR/agent-mentions.mdx +68 -4
- package/docs/content/locales/pt-BR/agent-surfaces.mdx +116 -8
- package/docs/content/locales/pt-BR/agent-teams.mdx +172 -12
- package/docs/content/locales/pt-BR/agent-web-surfaces.mdx +51 -4
- package/docs/content/locales/pt-BR/authentication.mdx +122 -8
- package/docs/content/locales/pt-BR/automations.mdx +110 -8
- package/docs/content/locales/pt-BR/blueprint-installer.mdx +42 -4
- package/docs/content/locales/pt-BR/cli-adapters.mdx +44 -4
- package/docs/content/locales/pt-BR/client.mdx +81 -8
- package/docs/content/locales/pt-BR/cloneable-saas.mdx +85 -8
- package/docs/content/locales/pt-BR/code-agents-ui.mdx +98 -8
- package/docs/content/locales/pt-BR/components.mdx +118 -8
- package/docs/content/locales/pt-BR/context-awareness.mdx +100 -8
- package/docs/content/locales/pt-BR/creating-templates.mdx +51 -4
- package/docs/content/locales/pt-BR/cross-app-sso.mdx +109 -8
- package/docs/content/locales/pt-BR/database.mdx +52 -4
- package/docs/content/locales/pt-BR/deployment.mdx +103 -8
- package/docs/content/locales/pt-BR/dispatch.mdx +134 -8
- package/docs/content/locales/pt-BR/drop-in-agent.mdx +63 -4
- package/docs/content/locales/pt-BR/durable-resume.mdx +47 -4
- package/docs/content/locales/pt-BR/embedding-sdk.mdx +87 -8
- package/docs/content/locales/pt-BR/evals.mdx +102 -8
- package/docs/content/locales/pt-BR/extensions.mdx +113 -9
- package/docs/content/locales/pt-BR/external-agents.mdx +119 -8
- package/docs/content/locales/pt-BR/faq.mdx +98 -8
- package/docs/content/locales/pt-BR/file-uploads.mdx +61 -4
- package/docs/content/locales/pt-BR/frames.mdx +88 -8
- package/docs/content/locales/pt-BR/getting-started.mdx +34 -4
- package/docs/content/locales/pt-BR/harness-agents.mdx +79 -8
- package/docs/content/locales/pt-BR/human-approval.mdx +50 -4
- package/docs/content/locales/pt-BR/key-concepts.mdx +104 -8
- package/docs/content/locales/pt-BR/local-file-mode.mdx +60 -4
- package/docs/content/locales/pt-BR/mcp-apps.mdx +120 -10
- package/docs/content/locales/pt-BR/mcp-clients.mdx +133 -8
- package/docs/content/locales/pt-BR/mcp-protocol.mdx +105 -8
- package/docs/content/locales/pt-BR/messaging.mdx +115 -8
- package/docs/content/locales/pt-BR/migration-workbench.mdx +47 -4
- package/docs/content/locales/pt-BR/multi-app-workspace.mdx +91 -8
- package/docs/content/locales/pt-BR/multi-tenancy.mdx +80 -8
- package/docs/content/locales/pt-BR/native-chat-ui.mdx +108 -8
- package/docs/content/locales/pt-BR/notifications.mdx +135 -8
- package/docs/content/locales/pt-BR/observability.mdx +104 -8
- package/docs/content/locales/pt-BR/observational-memory.mdx +92 -8
- package/docs/content/locales/pt-BR/onboarding.mdx +45 -4
- package/docs/content/locales/pt-BR/plan-plugin.mdx +99 -8
- package/docs/content/locales/pt-BR/pr-visual-recap.mdx +125 -8
- package/docs/content/locales/pt-BR/processors.mdx +41 -4
- package/docs/content/locales/pt-BR/progress.mdx +46 -4
- package/docs/content/locales/pt-BR/pure-agent-apps.mdx +48 -4
- package/docs/content/locales/pt-BR/real-time-collaboration.mdx +107 -8
- package/docs/content/locales/pt-BR/recurring-jobs.mdx +59 -4
- package/docs/content/locales/pt-BR/routing.mdx +44 -5
- package/docs/content/locales/pt-BR/sandbox-adapters.mdx +43 -4
- package/docs/content/locales/pt-BR/security.mdx +82 -8
- package/docs/content/locales/pt-BR/server.mdx +173 -12
- package/docs/content/locales/pt-BR/sharing.mdx +45 -4
- package/docs/content/locales/pt-BR/skills-guide.mdx +118 -9
- package/docs/content/locales/pt-BR/template-analytics.mdx +46 -4
- package/docs/content/locales/pt-BR/template-assets.mdx +64 -4
- package/docs/content/locales/pt-BR/template-brain.mdx +69 -4
- package/docs/content/locales/pt-BR/template-calendar.mdx +62 -4
- package/docs/content/locales/pt-BR/template-chat.mdx +61 -4
- package/docs/content/locales/pt-BR/template-clips.mdx +52 -4
- package/docs/content/locales/pt-BR/template-content.mdx +64 -4
- package/docs/content/locales/pt-BR/template-design.mdx +106 -4
- package/docs/content/locales/pt-BR/template-dispatch.mdx +57 -4
- package/docs/content/locales/pt-BR/template-forms.mdx +64 -4
- package/docs/content/locales/pt-BR/template-mail.mdx +60 -4
- package/docs/content/locales/pt-BR/template-plan.mdx +63 -4
- package/docs/content/locales/pt-BR/template-slides.mdx +49 -4
- package/docs/content/locales/pt-BR/template-videos.mdx +53 -4
- package/docs/content/locales/pt-BR/tracking.mdx +54 -4
- package/docs/content/locales/pt-BR/using-your-agent.mdx +51 -4
- package/docs/content/locales/pt-BR/voice-input.mdx +43 -4
- package/docs/content/locales/pt-BR/what-is-agent-native.mdx +101 -8
- package/docs/content/locales/pt-BR/workspace-connections.mdx +128 -8
- package/docs/content/locales/pt-BR/workspace-management.mdx +50 -4
- package/docs/content/locales/pt-BR/workspace.mdx +111 -8
- package/docs/content/locales/pt-BR/writing-agent-instructions.mdx +46 -4
- package/docs/content/locales/zh-CN/a2a-protocol.mdx +97 -9
- package/docs/content/locales/zh-CN/actions.mdx +65 -4
- package/docs/content/locales/zh-CN/agent-mentions.mdx +68 -4
- package/docs/content/locales/zh-CN/agent-surfaces.mdx +108 -8
- package/docs/content/locales/zh-CN/agent-teams.mdx +171 -12
- package/docs/content/locales/zh-CN/agent-web-surfaces.mdx +51 -4
- package/docs/content/locales/zh-CN/authentication.mdx +122 -8
- package/docs/content/locales/zh-CN/automations.mdx +110 -8
- package/docs/content/locales/zh-CN/blueprint-installer.mdx +42 -4
- package/docs/content/locales/zh-CN/cli-adapters.mdx +44 -4
- package/docs/content/locales/zh-CN/client.mdx +79 -8
- package/docs/content/locales/zh-CN/cloneable-saas.mdx +83 -8
- package/docs/content/locales/zh-CN/code-agents-ui.mdx +94 -8
- package/docs/content/locales/zh-CN/components.mdx +112 -8
- package/docs/content/locales/zh-CN/context-awareness.mdx +96 -8
- package/docs/content/locales/zh-CN/creating-templates.mdx +51 -4
- package/docs/content/locales/zh-CN/cross-app-sso.mdx +107 -8
- package/docs/content/locales/zh-CN/database.mdx +52 -4
- package/docs/content/locales/zh-CN/deployment.mdx +103 -8
- package/docs/content/locales/zh-CN/dispatch.mdx +134 -8
- package/docs/content/locales/zh-CN/drop-in-agent.mdx +63 -4
- package/docs/content/locales/zh-CN/durable-resume.mdx +45 -4
- package/docs/content/locales/zh-CN/embedding-sdk.mdx +81 -8
- package/docs/content/locales/zh-CN/evals.mdx +100 -8
- package/docs/content/locales/zh-CN/extensions.mdx +111 -9
- package/docs/content/locales/zh-CN/external-agents.mdx +119 -8
- package/docs/content/locales/zh-CN/faq.mdx +96 -8
- package/docs/content/locales/zh-CN/file-uploads.mdx +61 -4
- package/docs/content/locales/zh-CN/frames.mdx +86 -8
- package/docs/content/locales/zh-CN/getting-started.mdx +34 -4
- package/docs/content/locales/zh-CN/harness-agents.mdx +79 -8
- package/docs/content/locales/zh-CN/human-approval.mdx +50 -4
- package/docs/content/locales/zh-CN/key-concepts.mdx +100 -8
- package/docs/content/locales/zh-CN/local-file-mode.mdx +56 -4
- package/docs/content/locales/zh-CN/mcp-apps.mdx +120 -10
- package/docs/content/locales/zh-CN/mcp-clients.mdx +133 -8
- package/docs/content/locales/zh-CN/mcp-protocol.mdx +105 -8
- package/docs/content/locales/zh-CN/messaging.mdx +115 -8
- package/docs/content/locales/zh-CN/migration-workbench.mdx +45 -4
- package/docs/content/locales/zh-CN/multi-app-workspace.mdx +91 -8
- package/docs/content/locales/zh-CN/multi-tenancy.mdx +80 -8
- package/docs/content/locales/zh-CN/native-chat-ui.mdx +104 -8
- package/docs/content/locales/zh-CN/notifications.mdx +135 -8
- package/docs/content/locales/zh-CN/observability.mdx +102 -8
- package/docs/content/locales/zh-CN/observational-memory.mdx +85 -8
- package/docs/content/locales/zh-CN/onboarding.mdx +44 -4
- package/docs/content/locales/zh-CN/plan-plugin.mdx +97 -8
- package/docs/content/locales/zh-CN/pr-visual-recap.mdx +123 -8
- package/docs/content/locales/zh-CN/processors.mdx +39 -4
- package/docs/content/locales/zh-CN/progress.mdx +46 -4
- package/docs/content/locales/zh-CN/pure-agent-apps.mdx +46 -4
- package/docs/content/locales/zh-CN/real-time-collaboration.mdx +98 -8
- package/docs/content/locales/zh-CN/recurring-jobs.mdx +59 -4
- package/docs/content/locales/zh-CN/routing.mdx +42 -5
- package/docs/content/locales/zh-CN/sandbox-adapters.mdx +41 -4
- package/docs/content/locales/zh-CN/security.mdx +78 -8
- package/docs/content/locales/zh-CN/server.mdx +169 -12
- package/docs/content/locales/zh-CN/sharing.mdx +45 -4
- package/docs/content/locales/zh-CN/skills-guide.mdx +118 -9
- package/docs/content/locales/zh-CN/template-analytics.mdx +46 -4
- package/docs/content/locales/zh-CN/template-assets.mdx +58 -4
- package/docs/content/locales/zh-CN/template-brain.mdx +65 -4
- package/docs/content/locales/zh-CN/template-calendar.mdx +58 -4
- package/docs/content/locales/zh-CN/template-chat.mdx +57 -4
- package/docs/content/locales/zh-CN/template-clips.mdx +52 -4
- package/docs/content/locales/zh-CN/template-content.mdx +58 -4
- package/docs/content/locales/zh-CN/template-design.mdx +94 -4
- package/docs/content/locales/zh-CN/template-dispatch.mdx +57 -4
- package/docs/content/locales/zh-CN/template-forms.mdx +58 -4
- package/docs/content/locales/zh-CN/template-mail.mdx +60 -4
- package/docs/content/locales/zh-CN/template-plan.mdx +57 -4
- package/docs/content/locales/zh-CN/template-slides.mdx +49 -4
- package/docs/content/locales/zh-CN/template-videos.mdx +51 -4
- package/docs/content/locales/zh-CN/tracking.mdx +54 -4
- package/docs/content/locales/zh-CN/using-your-agent.mdx +51 -4
- package/docs/content/locales/zh-CN/voice-input.mdx +43 -4
- package/docs/content/locales/zh-CN/what-is-agent-native.mdx +94 -8
- package/docs/content/locales/zh-CN/workspace-connections.mdx +126 -8
- package/docs/content/locales/zh-CN/workspace-management.mdx +50 -4
- package/docs/content/locales/zh-CN/workspace.mdx +110 -8
- package/docs/content/locales/zh-CN/writing-agent-instructions.mdx +38 -4
- package/docs/content/locales/zh-TW/a2a-protocol.mdx +97 -9
- package/docs/content/locales/zh-TW/actions.mdx +63 -4
- package/docs/content/locales/zh-TW/agent-mentions.mdx +68 -4
- package/docs/content/locales/zh-TW/agent-surfaces.mdx +108 -8
- package/docs/content/locales/zh-TW/agent-teams.mdx +171 -12
- package/docs/content/locales/zh-TW/agent-web-surfaces.mdx +51 -4
- package/docs/content/locales/zh-TW/authentication.mdx +122 -8
- package/docs/content/locales/zh-TW/automations.mdx +110 -8
- package/docs/content/locales/zh-TW/blueprint-installer.mdx +42 -4
- package/docs/content/locales/zh-TW/cli-adapters.mdx +44 -4
- package/docs/content/locales/zh-TW/client.mdx +79 -8
- package/docs/content/locales/zh-TW/cloneable-saas.mdx +83 -8
- package/docs/content/locales/zh-TW/code-agents-ui.mdx +94 -8
- package/docs/content/locales/zh-TW/components.mdx +112 -8
- package/docs/content/locales/zh-TW/context-awareness.mdx +96 -8
- package/docs/content/locales/zh-TW/creating-templates.mdx +51 -4
- package/docs/content/locales/zh-TW/cross-app-sso.mdx +107 -8
- package/docs/content/locales/zh-TW/database.mdx +52 -4
- package/docs/content/locales/zh-TW/deployment.mdx +103 -8
- package/docs/content/locales/zh-TW/dispatch.mdx +134 -8
- package/docs/content/locales/zh-TW/drop-in-agent.mdx +63 -4
- package/docs/content/locales/zh-TW/durable-background-runs.mdx +88 -8
- package/docs/content/locales/zh-TW/durable-resume.mdx +45 -4
- package/docs/content/locales/zh-TW/embedding-sdk.mdx +83 -8
- package/docs/content/locales/zh-TW/evals.mdx +100 -8
- package/docs/content/locales/zh-TW/extensions.mdx +111 -9
- package/docs/content/locales/zh-TW/external-agents.mdx +119 -8
- package/docs/content/locales/zh-TW/faq.mdx +96 -8
- package/docs/content/locales/zh-TW/file-uploads.mdx +61 -4
- package/docs/content/locales/zh-TW/frames.mdx +86 -8
- package/docs/content/locales/zh-TW/getting-started.mdx +34 -4
- package/docs/content/locales/zh-TW/harness-agents.mdx +79 -8
- package/docs/content/locales/zh-TW/human-approval.mdx +50 -4
- package/docs/content/locales/zh-TW/key-concepts.mdx +100 -8
- package/docs/content/locales/zh-TW/local-file-mode.mdx +56 -4
- package/docs/content/locales/zh-TW/mcp-apps.mdx +120 -10
- package/docs/content/locales/zh-TW/mcp-clients.mdx +133 -8
- package/docs/content/locales/zh-TW/mcp-protocol.mdx +105 -8
- package/docs/content/locales/zh-TW/messaging.mdx +115 -8
- package/docs/content/locales/zh-TW/migration-workbench.mdx +45 -4
- package/docs/content/locales/zh-TW/multi-app-workspace.mdx +91 -8
- package/docs/content/locales/zh-TW/multi-tenancy.mdx +80 -8
- package/docs/content/locales/zh-TW/native-chat-ui.mdx +104 -8
- package/docs/content/locales/zh-TW/notifications.mdx +135 -8
- package/docs/content/locales/zh-TW/observability.mdx +102 -8
- package/docs/content/locales/zh-TW/observational-memory.mdx +85 -8
- package/docs/content/locales/zh-TW/onboarding.mdx +44 -4
- package/docs/content/locales/zh-TW/plan-plugin.mdx +97 -8
- package/docs/content/locales/zh-TW/pr-visual-recap.mdx +123 -8
- package/docs/content/locales/zh-TW/processors.mdx +39 -4
- package/docs/content/locales/zh-TW/progress.mdx +46 -4
- package/docs/content/locales/zh-TW/pure-agent-apps.mdx +46 -4
- package/docs/content/locales/zh-TW/real-time-collaboration.mdx +98 -8
- package/docs/content/locales/zh-TW/recurring-jobs.mdx +59 -4
- package/docs/content/locales/zh-TW/routing.mdx +42 -5
- package/docs/content/locales/zh-TW/sandbox-adapters.mdx +41 -4
- package/docs/content/locales/zh-TW/security.mdx +80 -8
- package/docs/content/locales/zh-TW/server.mdx +169 -12
- package/docs/content/locales/zh-TW/sharing.mdx +45 -4
- package/docs/content/locales/zh-TW/skills-guide.mdx +118 -9
- package/docs/content/locales/zh-TW/template-analytics.mdx +46 -4
- package/docs/content/locales/zh-TW/template-assets.mdx +58 -4
- package/docs/content/locales/zh-TW/template-brain.mdx +65 -4
- package/docs/content/locales/zh-TW/template-calendar.mdx +58 -4
- package/docs/content/locales/zh-TW/template-chat.mdx +59 -4
- package/docs/content/locales/zh-TW/template-clips.mdx +52 -4
- package/docs/content/locales/zh-TW/template-content.mdx +58 -4
- package/docs/content/locales/zh-TW/template-design.mdx +96 -4
- package/docs/content/locales/zh-TW/template-dispatch.mdx +57 -4
- package/docs/content/locales/zh-TW/template-forms.mdx +58 -4
- package/docs/content/locales/zh-TW/template-mail.mdx +60 -4
- package/docs/content/locales/zh-TW/template-plan.mdx +57 -4
- package/docs/content/locales/zh-TW/template-slides.mdx +49 -4
- package/docs/content/locales/zh-TW/template-videos.mdx +51 -4
- package/docs/content/locales/zh-TW/tracking.mdx +54 -4
- package/docs/content/locales/zh-TW/using-your-agent.mdx +51 -4
- package/docs/content/locales/zh-TW/voice-input.mdx +43 -4
- package/docs/content/locales/zh-TW/what-is-agent-native.mdx +94 -8
- package/docs/content/locales/zh-TW/workspace-connections.mdx +126 -8
- package/docs/content/locales/zh-TW/workspace-management.mdx +50 -4
- package/docs/content/locales/zh-TW/workspace.mdx +111 -8
- package/docs/content/locales/zh-TW/writing-agent-instructions.mdx +38 -4
- package/docs/content/mcp-apps.mdx +120 -10
- package/docs/content/mcp-clients.mdx +161 -8
- package/docs/content/mcp-protocol.mdx +105 -8
- package/docs/content/messaging.mdx +115 -8
- package/docs/content/migration-workbench.mdx +45 -4
- package/docs/content/multi-app-workspace.mdx +91 -8
- package/docs/content/multi-tenancy.mdx +80 -8
- package/docs/content/native-chat-ui.mdx +106 -8
- package/docs/content/notifications.mdx +135 -8
- package/docs/content/observability.mdx +102 -8
- package/docs/content/observational-memory.mdx +89 -8
- package/docs/content/onboarding.mdx +45 -4
- package/docs/content/plan-plugin.mdx +99 -8
- package/docs/content/pr-visual-recap.mdx +125 -8
- package/docs/content/processors.mdx +41 -4
- package/docs/content/progress.mdx +46 -4
- package/docs/content/pure-agent-apps.mdx +46 -4
- package/docs/content/real-time-collaboration.mdx +104 -8
- package/docs/content/recurring-jobs.mdx +59 -4
- package/docs/content/routing.mdx +44 -5
- package/docs/content/sandbox-adapters.mdx +43 -4
- package/docs/content/security.mdx +80 -8
- package/docs/content/server.mdx +173 -12
- package/docs/content/sharing.mdx +45 -4
- package/docs/content/skills-guide.mdx +118 -9
- package/docs/content/template-analytics.mdx +46 -4
- package/docs/content/template-assets.mdx +60 -4
- package/docs/content/template-brain.mdx +67 -4
- package/docs/content/template-calendar.mdx +62 -4
- package/docs/content/template-chat.mdx +61 -4
- package/docs/content/template-clips.mdx +52 -4
- package/docs/content/template-content.mdx +60 -4
- package/docs/content/template-design.mdx +103 -4
- package/docs/content/template-dispatch.mdx +57 -4
- package/docs/content/template-forms.mdx +62 -4
- package/docs/content/template-mail.mdx +60 -4
- package/docs/content/template-plan.mdx +61 -4
- package/docs/content/template-slides.mdx +49 -4
- package/docs/content/template-videos.mdx +51 -4
- package/docs/content/tracking.mdx +54 -4
- package/docs/content/using-your-agent.mdx +51 -4
- package/docs/content/voice-input.mdx +43 -4
- package/docs/content/what-is-agent-native.mdx +188 -8
- package/docs/content/workspace-connections.mdx +128 -8
- package/docs/content/workspace-management.mdx +50 -4
- package/docs/content/workspace.mdx +111 -8
- package/docs/content/writing-agent-instructions.mdx +45 -4
- package/package.json +2 -1
- package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +10 -0
- package/corpus/templates/design/app/components/design/DesignToolbar.tsx +0 -339
- package/corpus/templates/design/app/components/design/PresentMode.tsx +0 -68
- package/corpus/templates/design/app/components/design/ViewportTabs.tsx +0 -149
- package/corpus/templates/design/app/components/design/ZoomControls.tsx +0 -157
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-components.js","sourceRoot":"","sources":["../../../src/client/chat/message-components.tsx"],"names":[],"mappings":"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","sourcesContent":["// Owns: message-timestamp helpers, SelectionAttachedPill, UserMessage,\n// AssistantMessage, MessageBranchPicker, CheckpointContext, MessageActionsContext,\n// RunningActivityStatus, ThinkingIndicator, and displayableUserMessageText.\n\nimport {\n useThread,\n useMessageRuntime,\n useComposer,\n MessagePrimitive,\n ActionBarPrimitive,\n BranchPickerPrimitive,\n ComposerPrimitive,\n} from \"@assistant-ui/react\";\nimport type { Attachment } from \"@assistant-ui/react\";\nimport {\n IconX,\n IconCheck,\n IconCopy,\n IconChevronDown,\n IconChevronLeft,\n IconChevronRight,\n IconDots,\n IconGitFork,\n IconId,\n IconQuote,\n IconRefresh,\n IconArrowBackUp,\n IconFile,\n IconFolder,\n IconFileText,\n IconCheckbox,\n IconMail,\n IconUser,\n IconPresentation,\n IconStack2,\n IconMessageChatbot,\n IconPencil,\n IconLoader2,\n} from \"@tabler/icons-react\";\nimport React, { useState, useEffect, useCallback, useRef, useId } from \"react\";\n\nimport { getActiveRun } from \"../active-run-state.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport { writeClipboardText } from \"../clipboard.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../components/ui/dropdown-menu.js\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../components/ui/tooltip.js\";\nimport { isPastedTextAttachmentName } from \"../composer/pasted-text.js\";\nimport { PastedTextChip } from \"../composer/PastedTextChip.js\";\nimport { ThumbsFeedback } from \"../observability/ThumbsFeedback.js\";\nimport type { ContentPart } from \"../sse-event-processor.js\";\nimport { cn } from \"../utils.js\";\nimport { MarkdownText } from \"./markdown-renderer.js\";\nimport {\n ToolCallFallback,\n FilesChangedSummary,\n ChatRunningContext,\n} from \"./tool-call-display.js\";\n\n// ─── Pending selection context key ───────────────────────────────────────────\n// Mirrored from AssistantChat to avoid a cross-import on a private constant.\nconst PENDING_SELECTION_KEY = \"pending-selection-context\";\n\n// ─── displayableUserMessageText ───────────────────────────────────────────────\n\nexport function displayableUserMessageText(text: string): string {\n return text.replace(/<context>[\\s\\S]*?<\\/context>\\n?/g, \"\").trim();\n}\n\n// ─── Message timestamp helpers ────────────────────────────────────────────────\n\ninterface FormattedMessageTimestamp {\n short: string;\n full: string;\n}\n\nfunction coerceMessageDate(value: unknown): Date | null {\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : value;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n return null;\n}\n\nfunction isSameCalendarDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function formatMessageTimestamp(\n value: unknown,\n): FormattedMessageTimestamp | null {\n const date = coerceMessageDate(value);\n if (!date) return null;\n\n const now = new Date();\n const yesterday = new Date(now);\n yesterday.setDate(now.getDate() - 1);\n const time = new Intl.DateTimeFormat(undefined, {\n hour: \"numeric\",\n minute: \"2-digit\",\n }).format(date);\n\n let short: string;\n if (isSameCalendarDay(date, now)) {\n short = time;\n } else if (isSameCalendarDay(date, yesterday)) {\n short = `Yesterday ${time}`;\n } else if (date.getFullYear() === now.getFullYear()) {\n short = `${new Intl.DateTimeFormat(undefined, {\n month: \"short\",\n day: \"numeric\",\n }).format(date)}, ${time}`;\n } else {\n short = `${new Intl.DateTimeFormat(undefined, {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n }).format(date)}, ${time}`;\n }\n\n return {\n short,\n full: new Intl.DateTimeFormat(undefined, {\n weekday: \"short\",\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n hour: \"numeric\",\n minute: \"2-digit\",\n }).format(date),\n };\n}\n\nexport function MessageTimestamp({\n timestamp,\n className,\n}: {\n timestamp: FormattedMessageTimestamp;\n className?: string;\n}) {\n return (\n <span\n className={cn(\n \"text-[11px] leading-none text-muted-foreground\",\n className,\n )}\n title={timestamp.full}\n >\n {timestamp.short}\n </span>\n );\n}\n\n// ─── SelectionAttachedPill ────────────────────────────────────────────────────\n\nexport function SelectionAttachedPill() {\n const [length, setLength] = useState<number | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n fetch(\n agentNativePath(\n `/_agent-native/application-state/${PENDING_SELECTION_KEY}`,\n ),\n )\n .then((r) => (r.ok && r.status !== 204 ? r.json() : null))\n .then((data) => {\n if (cancelled) return;\n const text =\n (data?.value?.text as string | undefined) ??\n (data?.text as string | undefined);\n if (text) setLength(text.length);\n })\n .catch(() => {});\n return () => {\n cancelled = true;\n };\n }, []);\n\n useEffect(() => {\n function onAttached(e: Event) {\n const detail = (e as CustomEvent).detail;\n if (typeof detail?.length === \"number\") setLength(detail.length);\n }\n function onCleared() {\n setLength(null);\n }\n window.addEventListener(\"agent-panel:selection-attached\", onAttached);\n window.addEventListener(\"agent-panel:selection-cleared\", onCleared);\n return () => {\n window.removeEventListener(\"agent-panel:selection-attached\", onAttached);\n window.removeEventListener(\"agent-panel:selection-cleared\", onCleared);\n };\n }, []);\n\n if (length === null || length === 0) return null;\n\n return (\n <div className=\"shrink-0 px-3 pt-1.5 -mb-1\">\n <div className=\"inline-flex items-center gap-1.5 rounded-full border border-border bg-muted/50 px-2 py-0.5 text-[11px] text-muted-foreground\">\n <IconQuote size={11} />\n <span>{length.toLocaleString()} chars of selection attached</span>\n <button\n type=\"button\"\n aria-label=\"Clear selection context\"\n onClick={() => {\n setLength(null);\n // Dispatch clear event; AssistantChat owns the DELETE call.\n window.dispatchEvent(\n new CustomEvent(\"agent-panel:selection-clear-requested\"),\n );\n }}\n className=\"flex h-4 w-4 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/60\"\n >\n <IconX size={11} />\n </button>\n </div>\n </div>\n );\n}\n\n// ─── CheckpointContext / MessageActionsContext ────────────────────────────────\n\nexport const CheckpointContext = React.createContext<{\n apiUrl: string;\n devMode: boolean;\n threadId?: string;\n} | null>(null);\n\nexport const MessageActionsContext = React.createContext<{\n onForkChat?: () => void | boolean | Promise<void | boolean>;\n} | null>(null);\n\n// ─── MessageBranchPicker ──────────────────────────────────────────────────────\n\nexport function MessageBranchPicker() {\n return (\n <BranchPickerPrimitive.Root\n hideWhenSingleBranch\n className=\"flex items-center gap-0.5 text-[11px] text-muted-foreground\"\n >\n <BranchPickerPrimitive.Previous asChild>\n <button\n type=\"button\"\n aria-label=\"Previous branch\"\n className=\"flex h-6 w-6 cursor-pointer items-center justify-center rounded-md text-muted-foreground/70 transition-colors duration-150 hover:bg-accent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40\"\n >\n <IconChevronLeft className=\"h-3.5 w-3.5\" />\n </button>\n </BranchPickerPrimitive.Previous>\n <span className=\"tabular-nums select-none\">\n <BranchPickerPrimitive.Number />\n {\"/\"}\n <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <button\n type=\"button\"\n aria-label=\"Next branch\"\n className=\"flex h-6 w-6 cursor-pointer items-center justify-center rounded-md text-muted-foreground/70 transition-colors duration-150 hover:bg-accent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40\"\n >\n <IconChevronRight className=\"h-3.5 w-3.5\" />\n </button>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n );\n}\n\n// ─── Mention rendering ────────────────────────────────────────────────────────\n\nconst mentionIconProps = {\n size: 14,\n className: \"shrink-0 text-muted-foreground\",\n};\n\nfunction MentionChipIcon({ icon }: { icon?: string }) {\n switch (icon) {\n case \"folder\":\n return <IconFolder {...mentionIconProps} />;\n case \"document\":\n return <IconFileText {...mentionIconProps} />;\n case \"form\":\n return <IconCheckbox {...mentionIconProps} />;\n case \"email\":\n return <IconMail {...mentionIconProps} />;\n case \"user\":\n return <IconUser {...mentionIconProps} />;\n case \"deck\":\n return <IconPresentation {...mentionIconProps} />;\n case \"agent\":\n return <IconMessageChatbot {...mentionIconProps} />;\n case \"file\":\n return <IconFile {...mentionIconProps} />;\n default:\n return <IconStack2 {...mentionIconProps} />;\n }\n}\n\n// Matches rich mention format: @[label|icon] or plain @word\nconst richMentionPattern = /@\\[([^\\]|]+)\\|([^\\]]+)\\]/g;\nconst plainMentionPattern = /((?:^|(?<=\\s))@(\\w+))/g;\n\nfunction UserMessageText({ text }: { text: string }) {\n // Strip injected <context>...</context> blocks before display\n const displayText = displayableUserMessageText(text);\n\n const parts: React.ReactNode[] = [];\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n let hasRichMentions = false;\n\n // First try rich mentions (@[label|icon])\n richMentionPattern.lastIndex = 0;\n while ((match = richMentionPattern.exec(displayText)) !== null) {\n hasRichMentions = true;\n const matchStart = match.index;\n if (matchStart > lastIndex) {\n parts.push(displayText.slice(lastIndex, matchStart));\n }\n const label = match[1];\n const icon = match[2];\n parts.push(\n <span\n key={matchStart}\n className=\"inline-flex items-center gap-1 rounded-md border border-input bg-muted/50 px-1.5 py-0.5 text-xs font-medium text-foreground align-middle mx-0.5 max-w-[200px] select-all\"\n data-mention-label={label}\n >\n <MentionChipIcon icon={icon} />\n <span className=\"truncate\">{label}</span>\n </span>,\n );\n lastIndex = matchStart + match[0].length;\n }\n\n if (hasRichMentions) {\n if (lastIndex < displayText.length) {\n parts.push(displayText.slice(lastIndex));\n }\n return <>{parts}</>;\n }\n\n // Fallback: plain @word mentions (for older messages)\n plainMentionPattern.lastIndex = 0;\n while ((match = plainMentionPattern.exec(displayText)) !== null) {\n const matchStart = match.index;\n if (matchStart > lastIndex) {\n parts.push(displayText.slice(lastIndex, matchStart));\n }\n const mentionName = match[2];\n parts.push(\n <span\n key={matchStart}\n className=\"inline-flex items-center gap-1 rounded-md border border-input bg-muted/50 px-1.5 py-0.5 text-xs font-medium text-foreground align-middle mx-0.5 select-all\"\n data-mention-label={mentionName}\n >\n @{mentionName}\n </span>,\n );\n lastIndex = matchStart + match[0].length;\n }\n\n if (lastIndex < displayText.length) {\n parts.push(displayText.slice(lastIndex));\n }\n\n return <>{parts.length > 0 ? parts : displayText}</>;\n}\n\n// ─── UserMessageAttachments ───────────────────────────────────────────────────\n\nfunction UserMessageAttachments() {\n const messageRuntime = useMessageRuntime();\n const msg = messageRuntime.getState();\n // assistant-ui stores user attachments on msg.attachments (separate from content).\n // Each attachment has: { id, type, name, contentType?, content: MessagePart[] }.\n // Image adapters put a {type:\"image\", image:\"data:...\"} part in content; text\n // adapters put a {type:\"text\", text:\"<attachment>...\"} part. Fall back to a\n // file chip when there's no inline image.\n const attachments = (msg as { attachments?: readonly Attachment[] })\n .attachments;\n if (!attachments || attachments.length === 0) return null;\n\n return (\n <div className=\"flex flex-wrap justify-end gap-1.5 mb-1.5\">\n {attachments.map((att) => {\n if (isPastedTextAttachmentName(att.name)) {\n return <PastedTextChip key={att.id} attachment={att} compact />;\n }\n\n // Prefer the hosted upload URL when available (set by the server after\n // preUploadAttachments). This avoids re-shipping base64 in each poll\n // and lets the browser cache the image via a stable URL.\n const uploadUrl = (\n att as unknown as { metadata?: { uploadUrl?: string } }\n ).metadata?.uploadUrl;\n const imagePart = att.content?.find(\n (p): p is { type: \"image\"; image: string } =>\n p.type === \"image\" &&\n \"image\" in p &&\n !!(p as { image?: string }).image,\n );\n const imageSrc = uploadUrl || imagePart?.image || null;\n if (imageSrc) {\n return (\n <div\n key={att.id}\n className=\"h-16 w-16 overflow-hidden rounded-lg border border-border/70 bg-muted/50\"\n title={att.name}\n >\n <img\n src={imageSrc}\n alt={att.name}\n className=\"h-full w-full object-cover\"\n />\n </div>\n );\n }\n return (\n <div\n key={att.id}\n className=\"flex items-center gap-1.5 rounded-lg border border-border/70 bg-muted/50 px-2 py-1.5 text-xs text-muted-foreground\"\n title={att.name}\n >\n <IconFile className=\"h-3.5 w-3.5 shrink-0\" />\n <span className=\"truncate max-w-[120px]\">{att.name || \"file\"}</span>\n </div>\n );\n })}\n </div>\n );\n}\n\n// ─── UserMessageEditComposer ──────────────────────────────────────────────────\n\nfunction UserMessageEditComposer() {\n return (\n <ComposerPrimitive.Root className=\"flex flex-col gap-2 rounded-lg border border-border bg-background px-3 py-2 shadow-sm\">\n <ComposerPrimitive.Input\n className=\"w-full resize-none bg-transparent text-sm leading-relaxed text-foreground placeholder:text-muted-foreground focus:outline-none\"\n rows={1}\n submitMode=\"enter\"\n />\n <div className=\"flex justify-end gap-2\">\n <ComposerPrimitive.Cancel asChild>\n <button\n type=\"button\"\n className=\"cursor-pointer rounded-md px-2 py-1 text-xs font-medium text-muted-foreground hover:bg-accent hover:text-foreground\"\n >\n Cancel\n </button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <button\n type=\"submit\"\n className=\"cursor-pointer rounded-md bg-foreground px-2 py-1 text-xs font-medium text-background hover:opacity-90 disabled:opacity-50\"\n >\n Save\n </button>\n </ComposerPrimitive.Send>\n </div>\n </ComposerPrimitive.Root>\n );\n}\n\n// ─── MessageActionsMenu ────────────────────────────────────────────────────────\n\nexport function MessageActionsMenu({\n showRevert,\n onRevert,\n}: {\n showRevert?: boolean;\n onRevert?: () => void;\n} = {}) {\n const [open, setOpen] = useState(false);\n const [copied, setCopied] = useState<string | null>(null);\n const messageRuntime = useMessageRuntime();\n const actionsCtx = React.useContext(MessageActionsContext);\n const timestamp = formatMessageTimestamp(messageRuntime.getState().createdAt);\n\n const handleCopyMessage = useCallback(() => {\n const m = messageRuntime.getState();\n const text = m.content\n .filter((p) => p.type === \"text\")\n .map((p) => (p as { text: string }).text)\n .join(\"\\n\");\n void writeClipboardText(text).then((ok) => {\n if (!ok) return;\n setCopied(\"message\");\n setTimeout(() => {\n setCopied(null);\n setOpen(false);\n }, 1000);\n });\n }, [messageRuntime]);\n\n const handleCopyRequestId = useCallback(() => {\n const m = messageRuntime.getState();\n const meta = m.metadata as\n | {\n custom?: { runId?: unknown };\n runId?: unknown;\n }\n | undefined;\n // Live yields put the trace ID at metadata.custom.runId; server-persisted\n // messages put it at metadata.runId. If neither is present (e.g. the run\n // is still in flight and this is the first message), fall back to the\n // active-run state so a hung / mid-stream chat still surfaces a usable\n // trace ID. Last resort is the assistant-ui local message id.\n const runId =\n (typeof meta?.custom?.runId === \"string\" && meta.custom.runId) ||\n (typeof meta?.runId === \"string\" && meta.runId) ||\n (typeof window !== \"undefined\" ? getActiveRun()?.runId : null) ||\n m.id ||\n \"\";\n void writeClipboardText(runId).then((ok) => {\n if (!ok) return;\n setCopied(\"id\");\n setTimeout(() => {\n setCopied(null);\n setOpen(false);\n }, 1000);\n });\n }, [messageRuntime]);\n\n const handleForkChat = useCallback(() => {\n setOpen(false);\n actionsCtx?.onForkChat?.();\n }, [actionsCtx]);\n\n const handleRevert = useCallback(() => {\n setOpen(false);\n onRevert?.();\n }, [onRevert]);\n\n return (\n <DropdownMenu open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger asChild>\n <button\n aria-label=\"Message actions\"\n className={cn(\n \"flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground/70 transition-colors duration-150 hover:bg-accent hover:text-foreground\",\n open && \"bg-accent text-foreground\",\n )}\n >\n <IconDots className=\"h-3.5 w-3.5\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"start\"\n sideOffset={6}\n className=\"w-48 rounded-lg border-border p-1.5 shadow-xl\"\n >\n {actionsCtx?.onForkChat && (\n <DropdownMenuItem onSelect={handleForkChat}>\n <IconGitFork className=\"h-3.5 w-3.5\" />\n Fork Chat\n </DropdownMenuItem>\n )}\n <DropdownMenuItem\n onSelect={(e) => {\n e.preventDefault();\n handleCopyMessage();\n }}\n >\n {copied === \"message\" ? (\n <IconCheck className=\"h-3.5 w-3.5\" />\n ) : (\n <IconCopy className=\"h-3.5 w-3.5\" />\n )}\n {copied === \"message\" ? \"Copied!\" : \"Copy Message\"}\n </DropdownMenuItem>\n <DropdownMenuItem\n onSelect={(e) => {\n e.preventDefault();\n handleCopyRequestId();\n }}\n >\n {copied === \"id\" ? (\n <IconCheck className=\"h-3.5 w-3.5\" />\n ) : (\n <IconId className=\"h-3.5 w-3.5\" />\n )}\n {copied === \"id\" ? \"Copied!\" : \"Copy Request ID\"}\n </DropdownMenuItem>\n {showRevert && (\n <DropdownMenuItem onSelect={handleRevert}>\n <IconArrowBackUp className=\"h-3.5 w-3.5\" />\n Revert to here\n </DropdownMenuItem>\n )}\n {timestamp && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuLabel className=\"px-2 py-1 text-[11px] font-normal text-muted-foreground\">\n Sent {timestamp.short}\n </DropdownMenuLabel>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n// ─── UserMessage ──────────────────────────────────────────────────────────────\n\nexport function UserMessage() {\n const [expanded, setExpanded] = useState(false);\n const [isExpandable, setIsExpandable] = useState(false);\n const contentRef = useRef<HTMLDivElement>(null);\n const messageRuntime = useMessageRuntime();\n const message = messageRuntime.getState();\n const timestamp = formatMessageTimestamp(message.createdAt);\n const isEditing = useComposer((state) => state.isEditing);\n const chatRunning = React.useContext(ChatRunningContext);\n const hasDisplayableText =\n message.content\n ?.filter((part): part is { type: \"text\"; text: string } => {\n return part.type === \"text\" && typeof part.text === \"string\";\n })\n .some((part) => displayableUserMessageText(part.text).length > 0) ??\n false;\n\n useEffect(() => {\n const el = contentRef.current;\n if (!el || !hasDisplayableText) return;\n\n const measure = () => {\n setIsExpandable(el.scrollHeight > 200);\n };\n\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(el);\n return () => observer.disconnect();\n }, [hasDisplayableText]);\n\n // When in edit mode, show the inline edit composer instead of the message bubble.\n if (isEditing) {\n return (\n <div className=\"flex justify-end\">\n <div className=\"w-full max-w-[85%]\">\n <UserMessageEditComposer />\n </div>\n </div>\n );\n }\n\n return (\n <div\n className=\"group flex justify-end\"\n style={{ contentVisibility: \"auto\" }}\n >\n <div className=\"max-w-[85%]\">\n <UserMessageAttachments />\n {hasDisplayableText && (\n <div\n className=\"relative rounded-lg bg-accent px-3 py-2 text-sm leading-relaxed text-foreground\"\n onCopy={(e) => {\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) return;\n const fragment = selection.getRangeAt(0).cloneContents();\n const mentions = fragment.querySelectorAll(\n \"[data-mention-label]\",\n );\n if (mentions.length === 0) return;\n e.preventDefault();\n mentions.forEach((el) => {\n el.textContent = `@${el.getAttribute(\"data-mention-label\")}`;\n });\n const div = document.createElement(\"div\");\n div.appendChild(fragment);\n e.clipboardData.setData(\"text/plain\", div.textContent || \"\");\n }}\n >\n <div\n ref={contentRef}\n className={cn(\n \"whitespace-pre-wrap break-words\",\n !expanded && isExpandable && \"max-h-[200px] overflow-hidden\",\n )}\n >\n <MessagePrimitive.Parts\n components={{\n Text: UserMessageText,\n }}\n />\n </div>\n {!expanded && isExpandable && (\n <div className=\"pointer-events-none absolute inset-x-0 bottom-0 h-14 rounded-b-lg bg-gradient-to-t from-accent via-accent/90 to-transparent\" />\n )}\n {/* Edit hover affordance — appears on hover when not running */}\n {!chatRunning && hasDisplayableText && (\n <TooltipProvider delayDuration={400}>\n <Tooltip>\n <TooltipTrigger asChild>\n <ActionBarPrimitive.Edit asChild>\n <button\n type=\"button\"\n aria-label=\"Edit message\"\n className=\"absolute -left-8 top-1 flex h-6 w-6 cursor-pointer items-center justify-center rounded-md text-muted-foreground/0 transition-colors duration-150 group-hover:text-muted-foreground/70 group-hover:hover:bg-accent group-hover:hover:text-foreground\"\n >\n <IconPencil className=\"h-3.5 w-3.5\" />\n </button>\n </ActionBarPrimitive.Edit>\n </TooltipTrigger>\n <TooltipContent side=\"left\" className=\"text-xs\">\n Edit message\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n )}\n {hasDisplayableText && isExpandable && (\n <button\n type=\"button\"\n onClick={() => setExpanded((prev) => !prev)}\n className=\"mt-1 inline-flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] font-medium text-muted-foreground hover:text-foreground\"\n >\n <IconChevronDown\n className={cn(\n \"h-3.5 w-3.5 transition-transform\",\n expanded && \"rotate-180\",\n )}\n />\n {expanded ? \"Collapse\" : \"Expand\"}\n </button>\n )}\n <div className=\"mt-1 flex items-center justify-end gap-1\">\n <MessageBranchPicker />\n {timestamp && (\n <MessageTimestamp\n timestamp={timestamp}\n className=\"opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100\"\n />\n )}\n </div>\n </div>\n </div>\n );\n}\n\n// ─── AssistantMessage ─────────────────────────────────────────────────────────\n\nexport function AssistantMessage() {\n const [restoreState, setRestoreState] = useState<\n \"idle\" | \"confirming\" | \"restoring\"\n >(\"idle\");\n const messageRuntime = useMessageRuntime();\n const thread = useThread();\n const chatRunning = React.useContext(ChatRunningContext);\n const msg = messageRuntime.getState();\n const timestamp = formatMessageTimestamp(msg.createdAt);\n const isLast =\n thread.messages.length > 0 &&\n thread.messages[thread.messages.length - 1].id === msg.id;\n const isComplete = !isLast || !chatRunning;\n const cpCtx = React.useContext(CheckpointContext);\n\n const handleRestore = useCallback(async () => {\n if (restoreState === \"idle\") {\n setRestoreState(\"confirming\");\n return;\n }\n if (restoreState !== \"confirming\" || !cpCtx) return;\n setRestoreState(\"restoring\");\n try {\n const m = messageRuntime.getState();\n const meta = m.metadata as\n | { custom?: { runId?: unknown }; runId?: unknown }\n | undefined;\n const runId =\n (typeof meta?.custom?.runId === \"string\" && meta.custom.runId) ||\n (typeof meta?.runId === \"string\" && meta.runId) ||\n null;\n if (!runId) {\n setRestoreState(\"idle\");\n return;\n }\n const tid = cpCtx.threadId || \"\";\n const res = await fetch(\n `${cpCtx.apiUrl}/checkpoints?threadId=${encodeURIComponent(tid)}`,\n );\n const checkpoints: unknown[] = res.ok ? await res.json() : [];\n const checkpoint = checkpoints.find(\n (cp) => (cp as { runId?: string }).runId === runId,\n );\n if (!checkpoint) {\n setRestoreState(\"idle\");\n return;\n }\n const restoreRes = await fetch(`${cpCtx.apiUrl}/checkpoints/restore`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n checkpointId: (checkpoint as { id?: string }).id,\n }),\n });\n if (restoreRes.ok) {\n window.location.reload();\n } else {\n setRestoreState(\"idle\");\n }\n } catch {\n setRestoreState(\"idle\");\n }\n }, [restoreState, cpCtx, messageRuntime]);\n\n const cancelRestore = useCallback(() => {\n setRestoreState(\"idle\");\n }, []);\n\n const showRestore = cpCtx?.devMode && isComplete && !isLast;\n\n // Collect parts for the files-changed summary (code-agent turns only).\n const msgContent = msg.content as ContentPart[] | undefined;\n const hasCodeAgentTools =\n Array.isArray(msgContent) &&\n msgContent.some(\n (p) =>\n p.type === \"tool-call\" &&\n p.structuredMeta &&\n (p.structuredMeta.toolKind === \"edit\" ||\n p.structuredMeta.toolKind === \"write\"),\n );\n\n return (\n <div\n className=\"group relative\"\n style={{ contentVisibility: isComplete ? \"auto\" : \"visible\" }}\n >\n <div className=\"max-w-[95%] text-sm leading-relaxed text-foreground\">\n <MessagePrimitive.Parts\n components={{\n Text: MarkdownText,\n tools: {\n Fallback: ToolCallFallback,\n },\n }}\n />\n {isComplete && hasCodeAgentTools && msgContent && (\n <FilesChangedSummary parts={msgContent} />\n )}\n </div>\n {isComplete && (\n <div className=\"mt-1 flex items-center justify-between\">\n <div className=\"flex min-w-0 items-center gap-1\">\n <MessageActionsMenu\n showRevert={showRestore && restoreState === \"idle\"}\n onRevert={handleRestore}\n />\n {/* Regenerate button — only on the last assistant message, auto-disabled while running */}\n {isLast && (\n <TooltipProvider delayDuration={400}>\n <Tooltip>\n <TooltipTrigger asChild>\n <ActionBarPrimitive.Reload asChild>\n <button\n type=\"button\"\n aria-label=\"Regenerate response\"\n className=\"flex h-6 w-6 cursor-pointer items-center justify-center rounded-md text-muted-foreground/70 transition-colors duration-150 hover:bg-accent hover:text-foreground opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 disabled:cursor-not-allowed disabled:opacity-40\"\n >\n <IconRefresh className=\"h-3.5 w-3.5\" />\n </button>\n </ActionBarPrimitive.Reload>\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"text-xs\">\n Regenerate response\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n <MessageBranchPicker />\n {timestamp && (\n <MessageTimestamp\n timestamp={timestamp}\n className=\"opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100\"\n />\n )}\n </div>\n {showRestore && restoreState === \"confirming\" ? (\n <div className=\"flex items-center gap-1 text-xs\">\n <button\n onClick={handleRestore}\n className=\"rounded-md bg-destructive px-1.5 py-0.5 text-destructive-foreground hover:bg-destructive/90\"\n >\n Restore to here?\n </button>\n <button\n onClick={cancelRestore}\n className=\"rounded-md px-1.5 py-0.5 text-muted-foreground hover:bg-accent\"\n >\n Cancel\n </button>\n </div>\n ) : showRestore && restoreState === \"restoring\" ? (\n <span className=\"flex items-center gap-1 text-xs text-muted-foreground\">\n <IconLoader2 className=\"h-3 w-3 animate-spin\" />\n Restoring...\n </span>\n ) : (\n <ThumbsFeedback\n threadId={cpCtx?.threadId ?? \"\"}\n runId={(() => {\n const meta = messageRuntime.getState().metadata as\n | { custom?: { runId?: unknown }; runId?: unknown }\n | undefined;\n return (\n (typeof meta?.custom?.runId === \"string\" &&\n meta.custom.runId) ||\n (typeof meta?.runId === \"string\" && meta.runId) ||\n \"\"\n );\n })()}\n messageSeq={thread.messages.findIndex((m) => m.id === msg.id)}\n />\n )}\n </div>\n )}\n </div>\n );\n}\n\n// ─── RunningActivityStatus / ThinkingIndicator ────────────────────────────────\n\nexport function RunningActivityStatus({ label }: { label: string }) {\n return (\n <div className=\"agent-running-activity\">\n <ThinkingIndicator label={label} />\n </div>\n );\n}\n\nexport function ThinkingIndicator({\n label = \"Thinking\",\n}: { label?: string } = {}) {\n const reactId = useId().replace(/:/g, \"\");\n const maskId = `agent-thinking-mask-${reactId}`;\n const gradientId = `agent-thinking-gradient-${reactId}`;\n const textX = 27;\n const textWidth = Math.max(44, Math.min(96, label.length * 6.35));\n const ellipsisX = textX + textWidth - 0.8;\n const viewBoxWidth = ellipsisX + 13;\n const shimmerWidth = viewBoxWidth * 0.68;\n return (\n <div\n className=\"agent-thinking-indicator\"\n role=\"status\"\n aria-live=\"polite\"\n aria-label={label}\n >\n <svg\n className=\"agent-thinking-indicator__glyph\"\n viewBox={`0 0 ${viewBoxWidth} 18`}\n style={\n {\n \"--agent-thinking-width\": `${viewBoxWidth / 16}rem`,\n } as React.CSSProperties\n }\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <defs>\n <linearGradient id={gradientId} x1=\"0\" x2=\"1\" y1=\"0\" y2=\"0\">\n <stop\n className=\"agent-thinking-indicator__sheen-edge\"\n offset=\"0%\"\n />\n <stop\n className=\"agent-thinking-indicator__sheen-mid\"\n offset=\"50%\"\n />\n <stop\n className=\"agent-thinking-indicator__sheen-edge\"\n offset=\"100%\"\n />\n </linearGradient>\n <mask id={maskId} maskUnits=\"userSpaceOnUse\">\n <g fill=\"white\">\n <g\n className=\"agent-thinking-indicator__logo\"\n transform=\"translate(0 2.7) scale(0.9)\"\n >\n <path d=\"M5.1 14H0L3.1 8.4 7.8 0 12.5 8.4H8.2L5.1 14Z\" />\n <path d=\"M19.5 0H24L16.6 14H12.1L19.5 0Z\" />\n </g>\n <text\n x={textX}\n y=\"13\"\n fontFamily='Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif'\n fontSize=\"13\"\n fontWeight=\"500\"\n letterSpacing=\"0\"\n >\n {label}\n </text>\n <g\n fontFamily='Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif'\n fontSize=\"13\"\n fontWeight=\"500\"\n >\n <text\n className=\"agent-thinking-indicator__ellipsis-dot agent-thinking-indicator__ellipsis-dot--1\"\n x={ellipsisX}\n y=\"13\"\n >\n .\n </text>\n <text\n className=\"agent-thinking-indicator__ellipsis-dot agent-thinking-indicator__ellipsis-dot--2\"\n x={ellipsisX + 3.7}\n y=\"13\"\n >\n .\n </text>\n <text\n className=\"agent-thinking-indicator__ellipsis-dot agent-thinking-indicator__ellipsis-dot--3\"\n x={ellipsisX + 7.4}\n y=\"13\"\n >\n .\n </text>\n </g>\n </g>\n </mask>\n </defs>\n <g mask={`url(#${maskId})`}>\n <rect\n className=\"agent-thinking-indicator__base\"\n width={viewBoxWidth}\n height=\"18\"\n />\n <rect\n className=\"agent-thinking-indicator__shimmer\"\n width={shimmerWidth}\n height=\"18\"\n fill={`url(#${gradientId})`}\n />\n </g>\n </svg>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"message-components.js","sourceRoot":"","sources":["../../../src/client/chat/message-components.tsx"],"names":[],"mappings":"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","sourcesContent":["// Owns: message-timestamp helpers, SelectionAttachedPill, UserMessage,\n// AssistantMessage, MessageBranchPicker, CheckpointContext, MessageActionsContext,\n// RunningActivityStatus, ThinkingIndicator, and displayableUserMessageText.\n\nimport {\n useThread,\n useMessageRuntime,\n useComposer,\n MessagePrimitive,\n ActionBarPrimitive,\n BranchPickerPrimitive,\n ComposerPrimitive,\n} from \"@assistant-ui/react\";\nimport type { Attachment } from \"@assistant-ui/react\";\nimport {\n IconX,\n IconCheck,\n IconCopy,\n IconChevronDown,\n IconChevronLeft,\n IconChevronRight,\n IconDots,\n IconGitFork,\n IconId,\n IconQuote,\n IconRefresh,\n IconArrowBackUp,\n IconFile,\n IconFolder,\n IconFileText,\n IconCheckbox,\n IconMail,\n IconUser,\n IconPresentation,\n IconStack2,\n IconMessageChatbot,\n IconPencil,\n IconLoader2,\n} from \"@tabler/icons-react\";\nimport React, { useState, useEffect, useCallback, useRef } from \"react\";\n\nimport { getActiveRun } from \"../active-run-state.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport { writeClipboardText } from \"../clipboard.js\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../components/ui/dropdown-menu.js\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../components/ui/tooltip.js\";\nimport { isPastedTextAttachmentName } from \"../composer/pasted-text.js\";\nimport { PastedTextChip } from \"../composer/PastedTextChip.js\";\nimport { ThumbsFeedback } from \"../observability/ThumbsFeedback.js\";\nimport type { ContentPart } from \"../sse-event-processor.js\";\nimport { cn } from \"../utils.js\";\nimport { MarkdownText } from \"./markdown-renderer.js\";\nimport {\n ToolCallFallback,\n FilesChangedSummary,\n ChatRunningContext,\n} from \"./tool-call-display.js\";\n\n// ─── Pending selection context key ───────────────────────────────────────────\n// Mirrored from AssistantChat to avoid a cross-import on a private constant.\nconst PENDING_SELECTION_KEY = \"pending-selection-context\";\n\n// ─── displayableUserMessageText ───────────────────────────────────────────────\n\nexport function displayableUserMessageText(text: string): string {\n return text.replace(/<context>[\\s\\S]*?<\\/context>\\n?/g, \"\").trim();\n}\n\n// ─── Message timestamp helpers ────────────────────────────────────────────────\n\ninterface FormattedMessageTimestamp {\n short: string;\n full: string;\n}\n\nfunction coerceMessageDate(value: unknown): Date | null {\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : value;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n return null;\n}\n\nfunction isSameCalendarDay(a: Date, b: Date): boolean {\n return (\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate()\n );\n}\n\nexport function formatMessageTimestamp(\n value: unknown,\n): FormattedMessageTimestamp | null {\n const date = coerceMessageDate(value);\n if (!date) return null;\n\n const now = new Date();\n const yesterday = new Date(now);\n yesterday.setDate(now.getDate() - 1);\n const time = new Intl.DateTimeFormat(undefined, {\n hour: \"numeric\",\n minute: \"2-digit\",\n }).format(date);\n\n let short: string;\n if (isSameCalendarDay(date, now)) {\n short = time;\n } else if (isSameCalendarDay(date, yesterday)) {\n short = `Yesterday ${time}`;\n } else if (date.getFullYear() === now.getFullYear()) {\n short = `${new Intl.DateTimeFormat(undefined, {\n month: \"short\",\n day: \"numeric\",\n }).format(date)}, ${time}`;\n } else {\n short = `${new Intl.DateTimeFormat(undefined, {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n }).format(date)}, ${time}`;\n }\n\n return {\n short,\n full: new Intl.DateTimeFormat(undefined, {\n weekday: \"short\",\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n hour: \"numeric\",\n minute: \"2-digit\",\n }).format(date),\n };\n}\n\nexport function MessageTimestamp({\n timestamp,\n className,\n}: {\n timestamp: FormattedMessageTimestamp;\n className?: string;\n}) {\n return (\n <span\n className={cn(\n \"text-[11px] leading-none text-muted-foreground\",\n className,\n )}\n title={timestamp.full}\n >\n {timestamp.short}\n </span>\n );\n}\n\n// ─── SelectionAttachedPill ────────────────────────────────────────────────────\n\nexport function SelectionAttachedPill() {\n const [length, setLength] = useState<number | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n fetch(\n agentNativePath(\n `/_agent-native/application-state/${PENDING_SELECTION_KEY}`,\n ),\n )\n .then((r) => (r.ok && r.status !== 204 ? r.json() : null))\n .then((data) => {\n if (cancelled) return;\n const text =\n (data?.value?.text as string | undefined) ??\n (data?.text as string | undefined);\n if (text) setLength(text.length);\n })\n .catch(() => {});\n return () => {\n cancelled = true;\n };\n }, []);\n\n useEffect(() => {\n function onAttached(e: Event) {\n const detail = (e as CustomEvent).detail;\n if (typeof detail?.length === \"number\") setLength(detail.length);\n }\n function onCleared() {\n setLength(null);\n }\n window.addEventListener(\"agent-panel:selection-attached\", onAttached);\n window.addEventListener(\"agent-panel:selection-cleared\", onCleared);\n return () => {\n window.removeEventListener(\"agent-panel:selection-attached\", onAttached);\n window.removeEventListener(\"agent-panel:selection-cleared\", onCleared);\n };\n }, []);\n\n if (length === null || length === 0) return null;\n\n return (\n <div className=\"shrink-0 px-3 pt-1.5 -mb-1\">\n <div className=\"inline-flex items-center gap-1.5 rounded-full border border-border bg-muted/50 px-2 py-0.5 text-[11px] text-muted-foreground\">\n <IconQuote size={11} />\n <span>{length.toLocaleString()} chars of selection attached</span>\n <button\n type=\"button\"\n aria-label=\"Clear selection context\"\n onClick={() => {\n setLength(null);\n // Dispatch clear event; AssistantChat owns the DELETE call.\n window.dispatchEvent(\n new CustomEvent(\"agent-panel:selection-clear-requested\"),\n );\n }}\n className=\"flex h-4 w-4 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/60\"\n >\n <IconX size={11} />\n </button>\n </div>\n </div>\n );\n}\n\n// ─── CheckpointContext / MessageActionsContext ────────────────────────────────\n\nexport const CheckpointContext = React.createContext<{\n apiUrl: string;\n devMode: boolean;\n threadId?: string;\n} | null>(null);\n\nexport const MessageActionsContext = React.createContext<{\n onForkChat?: () => void | boolean | Promise<void | boolean>;\n} | null>(null);\n\n// ─── MessageBranchPicker ──────────────────────────────────────────────────────\n\nexport function MessageBranchPicker() {\n return (\n <BranchPickerPrimitive.Root\n hideWhenSingleBranch\n className=\"flex items-center gap-0.5 text-[11px] text-muted-foreground\"\n >\n <BranchPickerPrimitive.Previous asChild>\n <button\n type=\"button\"\n aria-label=\"Previous branch\"\n className=\"flex h-6 w-6 cursor-pointer items-center justify-center rounded-md text-muted-foreground/70 transition-colors duration-150 hover:bg-accent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40\"\n >\n <IconChevronLeft className=\"h-3.5 w-3.5\" />\n </button>\n </BranchPickerPrimitive.Previous>\n <span className=\"tabular-nums select-none\">\n <BranchPickerPrimitive.Number />\n {\"/\"}\n <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <button\n type=\"button\"\n aria-label=\"Next branch\"\n className=\"flex h-6 w-6 cursor-pointer items-center justify-center rounded-md text-muted-foreground/70 transition-colors duration-150 hover:bg-accent hover:text-foreground disabled:cursor-not-allowed disabled:opacity-40\"\n >\n <IconChevronRight className=\"h-3.5 w-3.5\" />\n </button>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n );\n}\n\n// ─── Mention rendering ────────────────────────────────────────────────────────\n\nconst mentionIconProps = {\n size: 14,\n className: \"shrink-0 text-muted-foreground\",\n};\n\nfunction MentionChipIcon({ icon }: { icon?: string }) {\n switch (icon) {\n case \"folder\":\n return <IconFolder {...mentionIconProps} />;\n case \"document\":\n return <IconFileText {...mentionIconProps} />;\n case \"form\":\n return <IconCheckbox {...mentionIconProps} />;\n case \"email\":\n return <IconMail {...mentionIconProps} />;\n case \"user\":\n return <IconUser {...mentionIconProps} />;\n case \"deck\":\n return <IconPresentation {...mentionIconProps} />;\n case \"agent\":\n return <IconMessageChatbot {...mentionIconProps} />;\n case \"file\":\n return <IconFile {...mentionIconProps} />;\n default:\n return <IconStack2 {...mentionIconProps} />;\n }\n}\n\n// Matches rich mention format: @[label|icon] or plain @word\nconst richMentionPattern = /@\\[([^\\]|]+)\\|([^\\]]+)\\]/g;\nconst plainMentionPattern = /((?:^|(?<=\\s))@(\\w+))/g;\n\nfunction UserMessageText({ text }: { text: string }) {\n // Strip injected <context>...</context> blocks before display\n const displayText = displayableUserMessageText(text);\n\n const parts: React.ReactNode[] = [];\n let lastIndex = 0;\n let match: RegExpExecArray | null;\n let hasRichMentions = false;\n\n // First try rich mentions (@[label|icon])\n richMentionPattern.lastIndex = 0;\n while ((match = richMentionPattern.exec(displayText)) !== null) {\n hasRichMentions = true;\n const matchStart = match.index;\n if (matchStart > lastIndex) {\n parts.push(displayText.slice(lastIndex, matchStart));\n }\n const label = match[1];\n const icon = match[2];\n parts.push(\n <span\n key={matchStart}\n className=\"inline-flex items-center gap-1 rounded-md border border-input bg-muted/50 px-1.5 py-0.5 text-xs font-medium text-foreground align-middle mx-0.5 max-w-[200px] select-all\"\n data-mention-label={label}\n >\n <MentionChipIcon icon={icon} />\n <span className=\"truncate\">{label}</span>\n </span>,\n );\n lastIndex = matchStart + match[0].length;\n }\n\n if (hasRichMentions) {\n if (lastIndex < displayText.length) {\n parts.push(displayText.slice(lastIndex));\n }\n return <>{parts}</>;\n }\n\n // Fallback: plain @word mentions (for older messages)\n plainMentionPattern.lastIndex = 0;\n while ((match = plainMentionPattern.exec(displayText)) !== null) {\n const matchStart = match.index;\n if (matchStart > lastIndex) {\n parts.push(displayText.slice(lastIndex, matchStart));\n }\n const mentionName = match[2];\n parts.push(\n <span\n key={matchStart}\n className=\"inline-flex items-center gap-1 rounded-md border border-input bg-muted/50 px-1.5 py-0.5 text-xs font-medium text-foreground align-middle mx-0.5 select-all\"\n data-mention-label={mentionName}\n >\n @{mentionName}\n </span>,\n );\n lastIndex = matchStart + match[0].length;\n }\n\n if (lastIndex < displayText.length) {\n parts.push(displayText.slice(lastIndex));\n }\n\n return <>{parts.length > 0 ? parts : displayText}</>;\n}\n\n// ─── UserMessageAttachments ───────────────────────────────────────────────────\n\nfunction UserMessageAttachments() {\n const messageRuntime = useMessageRuntime();\n const msg = messageRuntime.getState();\n // assistant-ui stores user attachments on msg.attachments (separate from content).\n // Each attachment has: { id, type, name, contentType?, content: MessagePart[] }.\n // Image adapters put a {type:\"image\", image:\"data:...\"} part in content; text\n // adapters put a {type:\"text\", text:\"<attachment>...\"} part. Fall back to a\n // file chip when there's no inline image.\n const attachments = (msg as { attachments?: readonly Attachment[] })\n .attachments;\n if (!attachments || attachments.length === 0) return null;\n\n return (\n <div className=\"flex flex-wrap justify-end gap-1.5 mb-1.5\">\n {attachments.map((att) => {\n if (isPastedTextAttachmentName(att.name)) {\n return <PastedTextChip key={att.id} attachment={att} compact />;\n }\n\n // Prefer the hosted upload URL when available (set by the server after\n // preUploadAttachments). This avoids re-shipping base64 in each poll\n // and lets the browser cache the image via a stable URL.\n const uploadUrl = (\n att as unknown as { metadata?: { uploadUrl?: string } }\n ).metadata?.uploadUrl;\n const imagePart = att.content?.find(\n (p): p is { type: \"image\"; image: string } =>\n p.type === \"image\" &&\n \"image\" in p &&\n !!(p as { image?: string }).image,\n );\n const imageSrc = uploadUrl || imagePart?.image || null;\n if (imageSrc) {\n return (\n <div\n key={att.id}\n className=\"h-16 w-16 overflow-hidden rounded-lg border border-border/70 bg-muted/50\"\n title={att.name}\n >\n <img\n src={imageSrc}\n alt={att.name}\n className=\"h-full w-full object-cover\"\n />\n </div>\n );\n }\n return (\n <div\n key={att.id}\n className=\"flex items-center gap-1.5 rounded-lg border border-border/70 bg-muted/50 px-2 py-1.5 text-xs text-muted-foreground\"\n title={att.name}\n >\n <IconFile className=\"h-3.5 w-3.5 shrink-0\" />\n <span className=\"truncate max-w-[120px]\">{att.name || \"file\"}</span>\n </div>\n );\n })}\n </div>\n );\n}\n\n// ─── UserMessageEditComposer ──────────────────────────────────────────────────\n\nfunction UserMessageEditComposer() {\n return (\n <ComposerPrimitive.Root className=\"flex flex-col gap-2 rounded-lg border border-border bg-background px-3 py-2 shadow-sm\">\n <ComposerPrimitive.Input\n className=\"w-full resize-none bg-transparent text-sm leading-relaxed text-foreground placeholder:text-muted-foreground focus:outline-none\"\n rows={1}\n submitMode=\"enter\"\n />\n <div className=\"flex justify-end gap-2\">\n <ComposerPrimitive.Cancel asChild>\n <button\n type=\"button\"\n className=\"cursor-pointer rounded-md px-2 py-1 text-xs font-medium text-muted-foreground hover:bg-accent hover:text-foreground\"\n >\n Cancel\n </button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <button\n type=\"submit\"\n className=\"cursor-pointer rounded-md bg-foreground px-2 py-1 text-xs font-medium text-background hover:opacity-90 disabled:opacity-50\"\n >\n Save\n </button>\n </ComposerPrimitive.Send>\n </div>\n </ComposerPrimitive.Root>\n );\n}\n\n// ─── MessageActionsMenu ────────────────────────────────────────────────────────\n\nexport function MessageActionsMenu({\n showRevert,\n onRevert,\n}: {\n showRevert?: boolean;\n onRevert?: () => void;\n} = {}) {\n const [open, setOpen] = useState(false);\n const [copied, setCopied] = useState<string | null>(null);\n const messageRuntime = useMessageRuntime();\n const actionsCtx = React.useContext(MessageActionsContext);\n const timestamp = formatMessageTimestamp(messageRuntime.getState().createdAt);\n\n const handleCopyMessage = useCallback(() => {\n const m = messageRuntime.getState();\n const text = m.content\n .filter((p) => p.type === \"text\")\n .map((p) => (p as { text: string }).text)\n .join(\"\\n\");\n void writeClipboardText(text).then((ok) => {\n if (!ok) return;\n setCopied(\"message\");\n setTimeout(() => {\n setCopied(null);\n setOpen(false);\n }, 1000);\n });\n }, [messageRuntime]);\n\n const handleCopyRequestId = useCallback(() => {\n const m = messageRuntime.getState();\n const meta = m.metadata as\n | {\n custom?: { runId?: unknown };\n runId?: unknown;\n }\n | undefined;\n // Live yields put the trace ID at metadata.custom.runId; server-persisted\n // messages put it at metadata.runId. If neither is present (e.g. the run\n // is still in flight and this is the first message), fall back to the\n // active-run state so a hung / mid-stream chat still surfaces a usable\n // trace ID. Last resort is the assistant-ui local message id.\n const runId =\n (typeof meta?.custom?.runId === \"string\" && meta.custom.runId) ||\n (typeof meta?.runId === \"string\" && meta.runId) ||\n (typeof window !== \"undefined\" ? getActiveRun()?.runId : null) ||\n m.id ||\n \"\";\n void writeClipboardText(runId).then((ok) => {\n if (!ok) return;\n setCopied(\"id\");\n setTimeout(() => {\n setCopied(null);\n setOpen(false);\n }, 1000);\n });\n }, [messageRuntime]);\n\n const handleForkChat = useCallback(() => {\n setOpen(false);\n actionsCtx?.onForkChat?.();\n }, [actionsCtx]);\n\n const handleRevert = useCallback(() => {\n setOpen(false);\n onRevert?.();\n }, [onRevert]);\n\n return (\n <DropdownMenu open={open} onOpenChange={setOpen}>\n <DropdownMenuTrigger asChild>\n <button\n aria-label=\"Message actions\"\n className={cn(\n \"flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground/70 transition-colors duration-150 hover:bg-accent hover:text-foreground\",\n open && \"bg-accent text-foreground\",\n )}\n >\n <IconDots className=\"h-3.5 w-3.5\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"start\"\n sideOffset={6}\n className=\"w-48 rounded-lg border-border p-1.5 shadow-xl\"\n >\n {actionsCtx?.onForkChat && (\n <DropdownMenuItem onSelect={handleForkChat}>\n <IconGitFork className=\"h-3.5 w-3.5\" />\n Fork Chat\n </DropdownMenuItem>\n )}\n <DropdownMenuItem\n onSelect={(e) => {\n e.preventDefault();\n handleCopyMessage();\n }}\n >\n {copied === \"message\" ? (\n <IconCheck className=\"h-3.5 w-3.5\" />\n ) : (\n <IconCopy className=\"h-3.5 w-3.5\" />\n )}\n {copied === \"message\" ? \"Copied!\" : \"Copy Message\"}\n </DropdownMenuItem>\n <DropdownMenuItem\n onSelect={(e) => {\n e.preventDefault();\n handleCopyRequestId();\n }}\n >\n {copied === \"id\" ? (\n <IconCheck className=\"h-3.5 w-3.5\" />\n ) : (\n <IconId className=\"h-3.5 w-3.5\" />\n )}\n {copied === \"id\" ? \"Copied!\" : \"Copy Request ID\"}\n </DropdownMenuItem>\n {showRevert && (\n <DropdownMenuItem onSelect={handleRevert}>\n <IconArrowBackUp className=\"h-3.5 w-3.5\" />\n Revert to here\n </DropdownMenuItem>\n )}\n {timestamp && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuLabel className=\"px-2 py-1 text-[11px] font-normal text-muted-foreground\">\n Sent {timestamp.short}\n </DropdownMenuLabel>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\n// ─── UserMessage ──────────────────────────────────────────────────────────────\n\nexport function UserMessage() {\n const [expanded, setExpanded] = useState(false);\n const [isExpandable, setIsExpandable] = useState(false);\n const contentRef = useRef<HTMLDivElement>(null);\n const messageRuntime = useMessageRuntime();\n const message = messageRuntime.getState();\n const timestamp = formatMessageTimestamp(message.createdAt);\n const isEditing = useComposer((state) => state.isEditing);\n const chatRunning = React.useContext(ChatRunningContext);\n const hasDisplayableText =\n message.content\n ?.filter((part): part is { type: \"text\"; text: string } => {\n return part.type === \"text\" && typeof part.text === \"string\";\n })\n .some((part) => displayableUserMessageText(part.text).length > 0) ??\n false;\n\n useEffect(() => {\n const el = contentRef.current;\n if (!el || !hasDisplayableText) return;\n\n const measure = () => {\n setIsExpandable(el.scrollHeight > 200);\n };\n\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(el);\n return () => observer.disconnect();\n }, [hasDisplayableText]);\n\n // When in edit mode, show the inline edit composer instead of the message bubble.\n if (isEditing) {\n return (\n <div className=\"flex justify-end\">\n <div className=\"w-full max-w-[85%]\">\n <UserMessageEditComposer />\n </div>\n </div>\n );\n }\n\n return (\n <div\n className=\"group flex justify-end\"\n style={{ contentVisibility: \"auto\" }}\n >\n <div className=\"max-w-[85%]\">\n <UserMessageAttachments />\n {hasDisplayableText && (\n <div\n className=\"relative rounded-lg bg-accent px-3 py-2 text-sm leading-relaxed text-foreground\"\n onCopy={(e) => {\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) return;\n const fragment = selection.getRangeAt(0).cloneContents();\n const mentions = fragment.querySelectorAll(\n \"[data-mention-label]\",\n );\n if (mentions.length === 0) return;\n e.preventDefault();\n mentions.forEach((el) => {\n el.textContent = `@${el.getAttribute(\"data-mention-label\")}`;\n });\n const div = document.createElement(\"div\");\n div.appendChild(fragment);\n e.clipboardData.setData(\"text/plain\", div.textContent || \"\");\n }}\n >\n <div\n ref={contentRef}\n className={cn(\n \"whitespace-pre-wrap break-words\",\n !expanded && isExpandable && \"max-h-[200px] overflow-hidden\",\n )}\n >\n <MessagePrimitive.Parts\n components={{\n Text: UserMessageText,\n }}\n />\n </div>\n {!expanded && isExpandable && (\n <div className=\"pointer-events-none absolute inset-x-0 bottom-0 h-14 rounded-b-lg bg-gradient-to-t from-accent via-accent/90 to-transparent\" />\n )}\n {/* Edit hover affordance — appears on hover when not running */}\n {!chatRunning && hasDisplayableText && (\n <TooltipProvider delayDuration={400}>\n <Tooltip>\n <TooltipTrigger asChild>\n <ActionBarPrimitive.Edit asChild>\n <button\n type=\"button\"\n aria-label=\"Edit message\"\n className=\"absolute -left-8 top-1 flex h-6 w-6 cursor-pointer items-center justify-center rounded-md text-muted-foreground/0 transition-colors duration-150 group-hover:text-muted-foreground/70 group-hover:hover:bg-accent group-hover:hover:text-foreground\"\n >\n <IconPencil className=\"h-3.5 w-3.5\" />\n </button>\n </ActionBarPrimitive.Edit>\n </TooltipTrigger>\n <TooltipContent side=\"left\" className=\"text-xs\">\n Edit message\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n </div>\n )}\n {hasDisplayableText && isExpandable && (\n <button\n type=\"button\"\n onClick={() => setExpanded((prev) => !prev)}\n className=\"mt-1 inline-flex items-center gap-1 rounded-md px-1.5 py-1 text-[11px] font-medium text-muted-foreground hover:text-foreground\"\n >\n <IconChevronDown\n className={cn(\n \"h-3.5 w-3.5 transition-transform\",\n expanded && \"rotate-180\",\n )}\n />\n {expanded ? \"Collapse\" : \"Expand\"}\n </button>\n )}\n <div className=\"mt-1 flex items-center justify-end gap-1\">\n <MessageBranchPicker />\n {timestamp && (\n <MessageTimestamp\n timestamp={timestamp}\n className=\"opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100\"\n />\n )}\n </div>\n </div>\n </div>\n );\n}\n\n// ─── AssistantMessage ─────────────────────────────────────────────────────────\n\nexport function AssistantMessage() {\n const [restoreState, setRestoreState] = useState<\n \"idle\" | \"confirming\" | \"restoring\"\n >(\"idle\");\n const messageRuntime = useMessageRuntime();\n const thread = useThread();\n const chatRunning = React.useContext(ChatRunningContext);\n const msg = messageRuntime.getState();\n const timestamp = formatMessageTimestamp(msg.createdAt);\n const isLast =\n thread.messages.length > 0 &&\n thread.messages[thread.messages.length - 1].id === msg.id;\n const isComplete = !isLast || !chatRunning;\n const cpCtx = React.useContext(CheckpointContext);\n\n const handleRestore = useCallback(async () => {\n if (restoreState === \"idle\") {\n setRestoreState(\"confirming\");\n return;\n }\n if (restoreState !== \"confirming\" || !cpCtx) return;\n setRestoreState(\"restoring\");\n try {\n const m = messageRuntime.getState();\n const meta = m.metadata as\n | { custom?: { runId?: unknown }; runId?: unknown }\n | undefined;\n const runId =\n (typeof meta?.custom?.runId === \"string\" && meta.custom.runId) ||\n (typeof meta?.runId === \"string\" && meta.runId) ||\n null;\n if (!runId) {\n setRestoreState(\"idle\");\n return;\n }\n const tid = cpCtx.threadId || \"\";\n const res = await fetch(\n `${cpCtx.apiUrl}/checkpoints?threadId=${encodeURIComponent(tid)}`,\n );\n const checkpoints: unknown[] = res.ok ? await res.json() : [];\n const checkpoint = checkpoints.find(\n (cp) => (cp as { runId?: string }).runId === runId,\n );\n if (!checkpoint) {\n setRestoreState(\"idle\");\n return;\n }\n const restoreRes = await fetch(`${cpCtx.apiUrl}/checkpoints/restore`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n checkpointId: (checkpoint as { id?: string }).id,\n }),\n });\n if (restoreRes.ok) {\n window.location.reload();\n } else {\n setRestoreState(\"idle\");\n }\n } catch {\n setRestoreState(\"idle\");\n }\n }, [restoreState, cpCtx, messageRuntime]);\n\n const cancelRestore = useCallback(() => {\n setRestoreState(\"idle\");\n }, []);\n\n const showRestore = cpCtx?.devMode && isComplete && !isLast;\n\n // Collect parts for the files-changed summary (code-agent turns only).\n const msgContent = msg.content as ContentPart[] | undefined;\n const hasCodeAgentTools =\n Array.isArray(msgContent) &&\n msgContent.some(\n (p) =>\n p.type === \"tool-call\" &&\n p.structuredMeta &&\n (p.structuredMeta.toolKind === \"edit\" ||\n p.structuredMeta.toolKind === \"write\"),\n );\n\n return (\n <div\n className=\"group relative\"\n style={{ contentVisibility: isComplete ? \"auto\" : \"visible\" }}\n >\n <div className=\"max-w-[95%] text-sm leading-relaxed text-foreground\">\n <MessagePrimitive.Parts\n components={{\n Text: MarkdownText,\n tools: {\n Fallback: ToolCallFallback,\n },\n }}\n />\n {isComplete && hasCodeAgentTools && msgContent && (\n <FilesChangedSummary parts={msgContent} />\n )}\n </div>\n {isComplete && (\n <div className=\"mt-1 flex items-center justify-between\">\n <div className=\"flex min-w-0 items-center gap-1\">\n <MessageActionsMenu\n showRevert={showRestore && restoreState === \"idle\"}\n onRevert={handleRestore}\n />\n {/* Regenerate button — only on the last assistant message, auto-disabled while running */}\n {isLast && (\n <TooltipProvider delayDuration={400}>\n <Tooltip>\n <TooltipTrigger asChild>\n <ActionBarPrimitive.Reload asChild>\n <button\n type=\"button\"\n aria-label=\"Regenerate response\"\n className=\"flex h-6 w-6 cursor-pointer items-center justify-center rounded-md text-muted-foreground/70 transition-colors duration-150 hover:bg-accent hover:text-foreground opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 disabled:cursor-not-allowed disabled:opacity-40\"\n >\n <IconRefresh className=\"h-3.5 w-3.5\" />\n </button>\n </ActionBarPrimitive.Reload>\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"text-xs\">\n Regenerate response\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )}\n <MessageBranchPicker />\n {timestamp && (\n <MessageTimestamp\n timestamp={timestamp}\n className=\"opacity-0 transition-opacity duration-150 group-hover:opacity-100 group-focus-within:opacity-100\"\n />\n )}\n </div>\n {showRestore && restoreState === \"confirming\" ? (\n <div className=\"flex items-center gap-1 text-xs\">\n <button\n onClick={handleRestore}\n className=\"rounded-md bg-destructive px-1.5 py-0.5 text-destructive-foreground hover:bg-destructive/90\"\n >\n Restore to here?\n </button>\n <button\n onClick={cancelRestore}\n className=\"rounded-md px-1.5 py-0.5 text-muted-foreground hover:bg-accent\"\n >\n Cancel\n </button>\n </div>\n ) : showRestore && restoreState === \"restoring\" ? (\n <span className=\"flex items-center gap-1 text-xs text-muted-foreground\">\n <IconLoader2 className=\"h-3 w-3 animate-spin\" />\n Restoring...\n </span>\n ) : (\n <ThumbsFeedback\n threadId={cpCtx?.threadId ?? \"\"}\n runId={(() => {\n const meta = messageRuntime.getState().metadata as\n | { custom?: { runId?: unknown }; runId?: unknown }\n | undefined;\n return (\n (typeof meta?.custom?.runId === \"string\" &&\n meta.custom.runId) ||\n (typeof meta?.runId === \"string\" && meta.runId) ||\n \"\"\n );\n })()}\n messageSeq={thread.messages.findIndex((m) => m.id === msg.id)}\n />\n )}\n </div>\n )}\n </div>\n );\n}\n\n// ─── RunningActivityStatus / ThinkingIndicator ────────────────────────────────\n\nexport function RunningActivityStatus({ label }: { label: string }) {\n return (\n <div className=\"agent-running-activity\">\n <ThinkingIndicator label={label} />\n </div>\n );\n}\n\nexport function ThinkingIndicator({\n label = \"Thinking\",\n}: { label?: string } = {}) {\n return (\n <div\n className=\"agent-thinking-indicator\"\n role=\"status\"\n aria-live=\"polite\"\n aria-label={label}\n >\n <span className=\"agent-thinking-indicator__text\">{label}</span>\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface EngineModelGroup {
|
|
2
|
+
engine: string;
|
|
3
|
+
label: string;
|
|
4
|
+
models: string[];
|
|
5
|
+
configured: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ChatModelEngineEntry {
|
|
8
|
+
name: string;
|
|
9
|
+
label: string;
|
|
10
|
+
supportedModels?: readonly string[];
|
|
11
|
+
requiredEnvVars?: readonly string[];
|
|
12
|
+
packageInstalled?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface BuildChatModelGroupsOptions {
|
|
15
|
+
engines: readonly ChatModelEngineEntry[];
|
|
16
|
+
configuredKeys?: Iterable<string>;
|
|
17
|
+
builderConnected?: boolean;
|
|
18
|
+
currentEngineName?: string;
|
|
19
|
+
currentModel?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function buildChatModelGroups({ engines, configuredKeys, builderConnected, currentEngineName, currentModel, }: BuildChatModelGroupsOptions): EngineModelGroup[];
|
|
22
|
+
//# sourceMappingURL=chat-model-groups.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-model-groups.d.ts","sourceRoot":"","sources":["../../src/client/chat-model-groups.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAqFD,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,cAAc,EACd,gBAAwB,EACxB,iBAAiB,EACjB,YAAY,GACb,EAAE,2BAA2B,GAAG,gBAAgB,EAAE,CAkClD"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
function addCurrentModel(models, engineName, currentEngineName, currentModel) {
|
|
2
|
+
const next = [...models];
|
|
3
|
+
if (engineName === currentEngineName &&
|
|
4
|
+
currentModel &&
|
|
5
|
+
!next.includes(currentModel)) {
|
|
6
|
+
next.unshift(currentModel);
|
|
7
|
+
}
|
|
8
|
+
return next;
|
|
9
|
+
}
|
|
10
|
+
function groupBuilderModels(models) {
|
|
11
|
+
const claude = models.filter((model) => model.startsWith("claude-"));
|
|
12
|
+
const openai = models.filter((model) => model.startsWith("gpt-"));
|
|
13
|
+
const gemini = models.filter((model) => model.startsWith("gemini-"));
|
|
14
|
+
const other = models.filter((model) => !model.startsWith("claude-") &&
|
|
15
|
+
!model.startsWith("gpt-") &&
|
|
16
|
+
!model.startsWith("gemini-"));
|
|
17
|
+
return [
|
|
18
|
+
...(claude.length
|
|
19
|
+
? [
|
|
20
|
+
{
|
|
21
|
+
engine: "builder",
|
|
22
|
+
label: "Claude",
|
|
23
|
+
models: claude,
|
|
24
|
+
configured: true,
|
|
25
|
+
},
|
|
26
|
+
]
|
|
27
|
+
: []),
|
|
28
|
+
...(openai.length
|
|
29
|
+
? [
|
|
30
|
+
{
|
|
31
|
+
engine: "builder",
|
|
32
|
+
label: "OpenAI",
|
|
33
|
+
models: openai,
|
|
34
|
+
configured: true,
|
|
35
|
+
},
|
|
36
|
+
]
|
|
37
|
+
: []),
|
|
38
|
+
...(gemini.length
|
|
39
|
+
? [
|
|
40
|
+
{
|
|
41
|
+
engine: "builder",
|
|
42
|
+
label: "Gemini",
|
|
43
|
+
models: gemini,
|
|
44
|
+
configured: true,
|
|
45
|
+
},
|
|
46
|
+
]
|
|
47
|
+
: []),
|
|
48
|
+
...(other.length
|
|
49
|
+
? [
|
|
50
|
+
{
|
|
51
|
+
engine: "builder",
|
|
52
|
+
label: "More",
|
|
53
|
+
models: other,
|
|
54
|
+
configured: true,
|
|
55
|
+
},
|
|
56
|
+
]
|
|
57
|
+
: []),
|
|
58
|
+
];
|
|
59
|
+
}
|
|
60
|
+
function shouldShowDirectEngine(engine, currentEngineName) {
|
|
61
|
+
if (engine.name === currentEngineName)
|
|
62
|
+
return true;
|
|
63
|
+
if (engine.name === "builder")
|
|
64
|
+
return false;
|
|
65
|
+
if (engine.name === "ai-sdk:anthropic")
|
|
66
|
+
return false;
|
|
67
|
+
if (engine.requiredEnvVars?.length === 0)
|
|
68
|
+
return false;
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
export function buildChatModelGroups({ engines, configuredKeys, builderConnected = false, currentEngineName, currentModel, }) {
|
|
72
|
+
const configured = new Set(configuredKeys ?? []);
|
|
73
|
+
if (builderConnected) {
|
|
74
|
+
const builderEngine = engines.find((engine) => engine.name === "builder");
|
|
75
|
+
const builderModels = addCurrentModel(builderEngine?.supportedModels ?? [], "builder", currentEngineName, currentModel);
|
|
76
|
+
return groupBuilderModels(builderModels);
|
|
77
|
+
}
|
|
78
|
+
return engines
|
|
79
|
+
.filter((engine) => engine.packageInstalled !== false)
|
|
80
|
+
.filter((engine) => shouldShowDirectEngine(engine, currentEngineName))
|
|
81
|
+
.map((engine) => {
|
|
82
|
+
const requiredEnvVars = engine.requiredEnvVars ?? [];
|
|
83
|
+
return {
|
|
84
|
+
engine: engine.name,
|
|
85
|
+
label: engine.label,
|
|
86
|
+
models: addCurrentModel(engine.supportedModels ?? [], engine.name, currentEngineName, currentModel),
|
|
87
|
+
configured: requiredEnvVars.length === 0 ||
|
|
88
|
+
requiredEnvVars.some((key) => configured.has(key)),
|
|
89
|
+
};
|
|
90
|
+
})
|
|
91
|
+
.filter((group) => group.models.length > 0);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=chat-model-groups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-model-groups.js","sourceRoot":"","sources":["../../src/client/chat-model-groups.ts"],"names":[],"mappings":"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","sourcesContent":["export interface EngineModelGroup {\n engine: string;\n label: string;\n models: string[];\n configured: boolean;\n}\n\nexport interface ChatModelEngineEntry {\n name: string;\n label: string;\n supportedModels?: readonly string[];\n requiredEnvVars?: readonly string[];\n packageInstalled?: boolean;\n}\n\nexport interface BuildChatModelGroupsOptions {\n engines: readonly ChatModelEngineEntry[];\n configuredKeys?: Iterable<string>;\n builderConnected?: boolean;\n currentEngineName?: string;\n currentModel?: string;\n}\n\nfunction addCurrentModel(\n models: readonly string[],\n engineName: string,\n currentEngineName?: string,\n currentModel?: string,\n): string[] {\n const next = [...models];\n if (\n engineName === currentEngineName &&\n currentModel &&\n !next.includes(currentModel)\n ) {\n next.unshift(currentModel);\n }\n return next;\n}\n\nfunction groupBuilderModels(models: readonly string[]): EngineModelGroup[] {\n const claude = models.filter((model) => model.startsWith(\"claude-\"));\n const openai = models.filter((model) => model.startsWith(\"gpt-\"));\n const gemini = models.filter((model) => model.startsWith(\"gemini-\"));\n const other = models.filter(\n (model) =>\n !model.startsWith(\"claude-\") &&\n !model.startsWith(\"gpt-\") &&\n !model.startsWith(\"gemini-\"),\n );\n\n return [\n ...(claude.length\n ? [\n {\n engine: \"builder\",\n label: \"Claude\",\n models: claude,\n configured: true,\n },\n ]\n : []),\n ...(openai.length\n ? [\n {\n engine: \"builder\",\n label: \"OpenAI\",\n models: openai,\n configured: true,\n },\n ]\n : []),\n ...(gemini.length\n ? [\n {\n engine: \"builder\",\n label: \"Gemini\",\n models: gemini,\n configured: true,\n },\n ]\n : []),\n ...(other.length\n ? [\n {\n engine: \"builder\",\n label: \"More\",\n models: other,\n configured: true,\n },\n ]\n : []),\n ];\n}\n\nfunction shouldShowDirectEngine(\n engine: ChatModelEngineEntry,\n currentEngineName?: string,\n): boolean {\n if (engine.name === currentEngineName) return true;\n if (engine.name === \"builder\") return false;\n if (engine.name === \"ai-sdk:anthropic\") return false;\n if (engine.requiredEnvVars?.length === 0) return false;\n return true;\n}\n\nexport function buildChatModelGroups({\n engines,\n configuredKeys,\n builderConnected = false,\n currentEngineName,\n currentModel,\n}: BuildChatModelGroupsOptions): EngineModelGroup[] {\n const configured = new Set(configuredKeys ?? []);\n\n if (builderConnected) {\n const builderEngine = engines.find((engine) => engine.name === \"builder\");\n const builderModels = addCurrentModel(\n builderEngine?.supportedModels ?? [],\n \"builder\",\n currentEngineName,\n currentModel,\n );\n return groupBuilderModels(builderModels);\n }\n\n return engines\n .filter((engine) => engine.packageInstalled !== false)\n .filter((engine) => shouldShowDirectEngine(engine, currentEngineName))\n .map((engine) => {\n const requiredEnvVars = engine.requiredEnvVars ?? [];\n return {\n engine: engine.name,\n label: engine.label,\n models: addCurrentModel(\n engine.supportedModels ?? [],\n engine.name,\n currentEngineName,\n currentModel,\n ),\n configured:\n requiredEnvVars.length === 0 ||\n requiredEnvVars.some((key) => configured.has(key)),\n };\n })\n .filter((group) => group.models.length > 0);\n}\n"]}
|
|
@@ -7,8 +7,7 @@
|
|
|
7
7
|
* correctly. Pass a `mapCoords` prop to handle non-identity transforms
|
|
8
8
|
* (e.g. a zoomed canvas).
|
|
9
9
|
*
|
|
10
|
-
* The agent
|
|
11
|
-
* label, consistent with AgentPresenceChip.
|
|
10
|
+
* The agent uses the same pointer shape with an "AI" label.
|
|
12
11
|
*
|
|
13
12
|
* Cursors fade out after 10 seconds of no movement.
|
|
14
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveCursorOverlay.d.ts","sourceRoot":"","sources":["../../../src/client/components/LiveCursorOverlay.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"LiveCursorOverlay.d.ts","sourceRoot":"","sources":["../../../src/client/components/LiveCursorOverlay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE/E,MAAM,WAAW,WAAW;IAC1B,+EAA+E;IAC/E,CAAC,IAAI,EAAE,eAAe,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED,MAAM,WAAW,sBAAsB;IACrC,iDAAiD;IACjD,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACnD,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuFD,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,SAAoB,EACpB,SAAS,EACT,YAAY,EACZ,SAAS,GACV,EAAE,sBAAsB,+BAuFxB"}
|
|
@@ -8,36 +8,17 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
8
8
|
* correctly. Pass a `mapCoords` prop to handle non-identity transforms
|
|
9
9
|
* (e.g. a zoomed canvas).
|
|
10
10
|
*
|
|
11
|
-
* The agent
|
|
12
|
-
* label, consistent with AgentPresenceChip.
|
|
11
|
+
* The agent uses the same pointer shape with an "AI" label.
|
|
13
12
|
*
|
|
14
13
|
* Cursors fade out after 10 seconds of no movement.
|
|
15
14
|
*/
|
|
16
|
-
import { IconSparkles } from "@tabler/icons-react";
|
|
17
15
|
import { useState, useEffect, useRef, memo } from "react";
|
|
18
16
|
const STALE_MS = 10_000; // Fade out cursors older than 10s
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
function CursorPointer({ color, isAgent, }) {
|
|
25
|
-
if (isAgent) {
|
|
26
|
-
return (_jsx("div", { style: {
|
|
27
|
-
display: "flex",
|
|
28
|
-
alignItems: "center",
|
|
29
|
-
justifyContent: "center",
|
|
30
|
-
width: 22,
|
|
31
|
-
height: 22,
|
|
32
|
-
borderRadius: "50%",
|
|
33
|
-
backgroundColor: color,
|
|
34
|
-
color: "#fff",
|
|
35
|
-
boxShadow: `0 0 0 2px #fff`,
|
|
36
|
-
}, children: _jsx(IconSparkles, { size: 12, stroke: 2 }) }));
|
|
37
|
-
}
|
|
38
|
-
const svgSrc = "data:image/svg+xml;charset=utf-8," +
|
|
39
|
-
encodeURIComponent(CURSOR_SVG.replace("__COLOR__", color));
|
|
40
|
-
return (_jsx("img", { src: svgSrc, alt: "", "aria-hidden": true, style: { width: 16, height: 22, display: "block", flexShrink: 0 } }));
|
|
17
|
+
function CursorPointer({ color }) {
|
|
18
|
+
return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "25", height: "29", viewBox: "0 0 25 29", fill: "none", "aria-hidden": true, style: {
|
|
19
|
+
display: "block",
|
|
20
|
+
filter: "drop-shadow(0 2px 3px rgba(15, 23, 42, 0.3))",
|
|
21
|
+
}, children: _jsx("path", { d: "M2.5 2.5L21.5 11L12.6 14.1L8.3 24.5L2.5 2.5Z", fill: color, stroke: "white", strokeLinejoin: "round", strokeWidth: "3" }) }));
|
|
41
22
|
}
|
|
42
23
|
const CursorLabel = memo(function CursorLabel({ entry, }) {
|
|
43
24
|
const { other, x, y } = entry;
|
|
@@ -52,27 +33,25 @@ const CursorLabel = memo(function CursorLabel({ entry, }) {
|
|
|
52
33
|
transform: "translate(-2px, -2px)",
|
|
53
34
|
zIndex: 9999,
|
|
54
35
|
transition: "left 120ms linear, top 120ms linear",
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
36
|
+
width: 0,
|
|
37
|
+
height: 0,
|
|
38
|
+
}, children: [_jsx(CursorPointer, { color: color }), _jsx("div", { style: {
|
|
39
|
+
position: "absolute",
|
|
40
|
+
left: 31,
|
|
41
|
+
top: 31,
|
|
60
42
|
backgroundColor: color,
|
|
61
43
|
color: "#fff",
|
|
62
|
-
fontSize:
|
|
63
|
-
fontWeight:
|
|
64
|
-
|
|
65
|
-
|
|
44
|
+
fontSize: 12,
|
|
45
|
+
fontWeight: 500,
|
|
46
|
+
lineHeight: "16px",
|
|
47
|
+
padding: "2px 7px",
|
|
48
|
+
borderRadius: 2,
|
|
66
49
|
whiteSpace: "nowrap",
|
|
67
|
-
|
|
68
|
-
boxShadow: "0 1px 3px rgba(0,0,0,0.25)",
|
|
50
|
+
boxShadow: "0 5px 12px rgba(15, 23, 42, 0.16)",
|
|
69
51
|
maxWidth: 120,
|
|
70
52
|
overflow: "hidden",
|
|
71
53
|
textOverflow: "ellipsis",
|
|
72
|
-
|
|
73
|
-
alignItems: "center",
|
|
74
|
-
gap: 3,
|
|
75
|
-
}, children: [other.isAgent && (_jsx(IconSparkles, { size: 9, stroke: 2, style: { flexShrink: 0, opacity: 0.85 } })), label] })] }));
|
|
54
|
+
}, children: label })] }));
|
|
76
55
|
});
|
|
77
56
|
export function LiveCursorOverlay({ others, cursorKey = "cursor", mapCoords, containerRef, className, }) {
|
|
78
57
|
const overlayRef = useRef(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveCursorOverlay.js","sourceRoot":"","sources":["../../../src/client/components/LiveCursorOverlay.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * LiveCursorOverlay — renders remote users' cursors over an absolutely-\n * positioned container.\n *\n * Cursor positions are expected as normalized coordinates (0–1 relative to\n * the container's content size) so different zoom/scroll positions map\n * correctly. Pass a `mapCoords` prop to handle non-identity transforms\n * (e.g. a zoomed canvas).\n *\n * The agent's cursor is styled distinctly with a sparkle variant + \"AI\"\n * label, consistent with AgentPresenceChip.\n *\n * Cursors fade out after 10 seconds of no movement.\n */\n\nimport { IconSparkles } from \"@tabler/icons-react\";\nimport { useState, useEffect, useRef, memo } from \"react\";\n\nimport type { OtherPresence, NormalizedPoint } from \"../../collab/presence.js\";\n\nexport interface CursorMapFn {\n /** Convert normalized coords to pixel offsets within the overlay container. */\n (norm: NormalizedPoint): { x: number; y: number };\n}\n\nexport interface LiveCursorOverlayProps {\n /** Remote participants with presence payload. */\n others: OtherPresence[];\n /**\n * Key inside presence payload that carries the cursor position.\n * Default: \"cursor\"\n * Expected shape: { x: number; y: number } (normalized 0–1).\n */\n cursorKey?: string;\n /**\n * Override coordinate mapping. Default: scale by container clientWidth/Height.\n * Pass this when the container uses transform: scale() or has virtual scroll.\n */\n mapCoords?: CursorMapFn;\n /**\n * Container element ref. Required when mapCoords is not provided —\n * used to compute pixel positions from normalized coords.\n */\n containerRef?: React.RefObject<HTMLElement | null>;\n /** Additional CSS class for the overlay div. */\n className?: string;\n}\n\nconst STALE_MS = 10_000; // Fade out cursors older than 10s\n\nconst CURSOR_SVG = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"22\" viewBox=\"0 0 16 22\" fill=\"none\">\n <path d=\"M0 0L0 18L4.5 13.5L7.5 20L9.5 19.5L6.5 13L12 13L0 0Z\" fill=\"__COLOR__\" stroke=\"white\" stroke-width=\"1\"/>\n </svg>\n`.trim();\n\nfunction CursorPointer({\n color,\n isAgent,\n}: {\n color: string;\n isAgent: boolean;\n}) {\n if (isAgent) {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 22,\n height: 22,\n borderRadius: \"50%\",\n backgroundColor: color,\n color: \"#fff\",\n boxShadow: `0 0 0 2px #fff`,\n }}\n >\n <IconSparkles size={12} stroke={2} />\n </div>\n );\n }\n\n const svgSrc =\n \"data:image/svg+xml;charset=utf-8,\" +\n encodeURIComponent(CURSOR_SVG.replace(\"__COLOR__\", color));\n\n return (\n <img\n src={svgSrc}\n alt=\"\"\n aria-hidden\n style={{ width: 16, height: 22, display: \"block\", flexShrink: 0 }}\n />\n );\n}\n\ninterface CursorEntry {\n other: OtherPresence;\n x: number;\n y: number;\n lastSeen: number;\n}\n\nconst CursorLabel = memo(function CursorLabel({\n entry,\n}: {\n entry: CursorEntry;\n}) {\n const { other, x, y } = entry;\n const color = other.user.color || \"#94a3b8\";\n const label = other.isAgent ? \"AI\" : other.user.name || other.user.email;\n\n return (\n <div\n aria-label={`${label} cursor`}\n style={{\n position: \"absolute\",\n left: x,\n top: y,\n pointerEvents: \"none\",\n userSelect: \"none\",\n transform: \"translate(-2px, -2px)\",\n zIndex: 9999,\n transition: \"left 120ms linear, top 120ms linear\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n gap: 2,\n }}\n >\n <CursorPointer color={color} isAgent={other.isAgent} />\n <div\n style={{\n backgroundColor: color,\n color: \"#fff\",\n fontSize: 11,\n fontWeight: 600,\n padding: \"1px 5px\",\n borderRadius: 4,\n whiteSpace: \"nowrap\",\n marginLeft: other.isAgent ? 0 : 4,\n boxShadow: \"0 1px 3px rgba(0,0,0,0.25)\",\n maxWidth: 120,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"flex\",\n alignItems: \"center\",\n gap: 3,\n }}\n >\n {other.isAgent && (\n <IconSparkles\n size={9}\n stroke={2}\n style={{ flexShrink: 0, opacity: 0.85 }}\n />\n )}\n {label}\n </div>\n </div>\n );\n});\n\nexport function LiveCursorOverlay({\n others,\n cursorKey = \"cursor\",\n mapCoords,\n containerRef,\n className,\n}: LiveCursorOverlayProps) {\n const overlayRef = useRef<HTMLDivElement>(null);\n const [, tick] = useState(0); // Force re-render to prune stale cursors\n const entriesRef = useRef<Map<number, CursorEntry>>(new Map());\n\n // Tick every 5s to prune stale cursors (no re-render storm).\n useEffect(() => {\n const id = setInterval(() => tick((n) => n + 1), 5_000);\n return () => clearInterval(id);\n }, []);\n\n // Build entries from others, computing pixel positions.\n const now = Date.now();\n const visible: CursorEntry[] = [];\n\n for (const other of others) {\n const pos = other.presence[cursorKey] as NormalizedPoint | undefined;\n if (!pos || typeof pos.x !== \"number\" || typeof pos.y !== \"number\")\n continue;\n\n // Compute pixel position.\n let px: number;\n let py: number;\n if (mapCoords) {\n const mapped = mapCoords(pos);\n px = mapped.x;\n py = mapped.y;\n } else {\n const container =\n containerRef?.current ?? overlayRef.current?.parentElement;\n const w = container ? container.clientWidth : 0;\n const h = container ? container.clientHeight : 0;\n px = pos.x * w;\n py = pos.y * h;\n }\n\n const prev = entriesRef.current.get(other.clientId);\n const lastSeen =\n prev && prev.x === px && prev.y === py ? prev.lastSeen : now;\n const entry: CursorEntry = { other, x: px, y: py, lastSeen };\n entriesRef.current.set(other.clientId, entry);\n\n if (now - lastSeen < STALE_MS) {\n visible.push(entry);\n }\n }\n\n // Remove entries for participants who left.\n for (const clientId of entriesRef.current.keys()) {\n if (!others.find((o) => o.clientId === clientId)) {\n entriesRef.current.delete(clientId);\n }\n }\n\n if (visible.length === 0) {\n return (\n <div\n ref={overlayRef}\n aria-hidden\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n overflow: \"hidden\",\n }}\n className={className}\n />\n );\n }\n\n return (\n <div\n ref={overlayRef}\n aria-hidden\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n overflow: \"hidden\",\n }}\n className={className}\n >\n {visible.map((entry) => (\n <CursorLabel key={entry.other.clientId} entry={entry} />\n ))}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"LiveCursorOverlay.js","sourceRoot":"","sources":["../../../src/client/components/LiveCursorOverlay.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * LiveCursorOverlay — renders remote users' cursors over an absolutely-\n * positioned container.\n *\n * Cursor positions are expected as normalized coordinates (0–1 relative to\n * the container's content size) so different zoom/scroll positions map\n * correctly. Pass a `mapCoords` prop to handle non-identity transforms\n * (e.g. a zoomed canvas).\n *\n * The agent uses the same pointer shape with an \"AI\" label.\n *\n * Cursors fade out after 10 seconds of no movement.\n */\n\nimport { useState, useEffect, useRef, memo } from \"react\";\n\nimport type { OtherPresence, NormalizedPoint } from \"../../collab/presence.js\";\n\nexport interface CursorMapFn {\n /** Convert normalized coords to pixel offsets within the overlay container. */\n (norm: NormalizedPoint): { x: number; y: number };\n}\n\nexport interface LiveCursorOverlayProps {\n /** Remote participants with presence payload. */\n others: OtherPresence[];\n /**\n * Key inside presence payload that carries the cursor position.\n * Default: \"cursor\"\n * Expected shape: { x: number; y: number } (normalized 0–1).\n */\n cursorKey?: string;\n /**\n * Override coordinate mapping. Default: scale by container clientWidth/Height.\n * Pass this when the container uses transform: scale() or has virtual scroll.\n */\n mapCoords?: CursorMapFn;\n /**\n * Container element ref. Required when mapCoords is not provided —\n * used to compute pixel positions from normalized coords.\n */\n containerRef?: React.RefObject<HTMLElement | null>;\n /** Additional CSS class for the overlay div. */\n className?: string;\n}\n\nconst STALE_MS = 10_000; // Fade out cursors older than 10s\n\nfunction CursorPointer({ color }: { color: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"25\"\n height=\"29\"\n viewBox=\"0 0 25 29\"\n fill=\"none\"\n aria-hidden\n style={{\n display: \"block\",\n filter: \"drop-shadow(0 2px 3px rgba(15, 23, 42, 0.3))\",\n }}\n >\n <path\n d=\"M2.5 2.5L21.5 11L12.6 14.1L8.3 24.5L2.5 2.5Z\"\n fill={color}\n stroke=\"white\"\n strokeLinejoin=\"round\"\n strokeWidth=\"3\"\n />\n </svg>\n );\n}\n\ninterface CursorEntry {\n other: OtherPresence;\n x: number;\n y: number;\n lastSeen: number;\n}\n\nconst CursorLabel = memo(function CursorLabel({\n entry,\n}: {\n entry: CursorEntry;\n}) {\n const { other, x, y } = entry;\n const color = other.user.color || \"#94a3b8\";\n const label = other.isAgent ? \"AI\" : other.user.name || other.user.email;\n\n return (\n <div\n aria-label={`${label} cursor`}\n style={{\n position: \"absolute\",\n left: x,\n top: y,\n pointerEvents: \"none\",\n userSelect: \"none\",\n transform: \"translate(-2px, -2px)\",\n zIndex: 9999,\n transition: \"left 120ms linear, top 120ms linear\",\n width: 0,\n height: 0,\n }}\n >\n <CursorPointer color={color} />\n <div\n style={{\n position: \"absolute\",\n left: 31,\n top: 31,\n backgroundColor: color,\n color: \"#fff\",\n fontSize: 12,\n fontWeight: 500,\n lineHeight: \"16px\",\n padding: \"2px 7px\",\n borderRadius: 2,\n whiteSpace: \"nowrap\",\n boxShadow: \"0 5px 12px rgba(15, 23, 42, 0.16)\",\n maxWidth: 120,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {label}\n </div>\n </div>\n );\n});\n\nexport function LiveCursorOverlay({\n others,\n cursorKey = \"cursor\",\n mapCoords,\n containerRef,\n className,\n}: LiveCursorOverlayProps) {\n const overlayRef = useRef<HTMLDivElement>(null);\n const [, tick] = useState(0); // Force re-render to prune stale cursors\n const entriesRef = useRef<Map<number, CursorEntry>>(new Map());\n\n // Tick every 5s to prune stale cursors (no re-render storm).\n useEffect(() => {\n const id = setInterval(() => tick((n) => n + 1), 5_000);\n return () => clearInterval(id);\n }, []);\n\n // Build entries from others, computing pixel positions.\n const now = Date.now();\n const visible: CursorEntry[] = [];\n\n for (const other of others) {\n const pos = other.presence[cursorKey] as NormalizedPoint | undefined;\n if (!pos || typeof pos.x !== \"number\" || typeof pos.y !== \"number\")\n continue;\n\n // Compute pixel position.\n let px: number;\n let py: number;\n if (mapCoords) {\n const mapped = mapCoords(pos);\n px = mapped.x;\n py = mapped.y;\n } else {\n const container =\n containerRef?.current ?? overlayRef.current?.parentElement;\n const w = container ? container.clientWidth : 0;\n const h = container ? container.clientHeight : 0;\n px = pos.x * w;\n py = pos.y * h;\n }\n\n const prev = entriesRef.current.get(other.clientId);\n const lastSeen =\n prev && prev.x === px && prev.y === py ? prev.lastSeen : now;\n const entry: CursorEntry = { other, x: px, y: py, lastSeen };\n entriesRef.current.set(other.clientId, entry);\n\n if (now - lastSeen < STALE_MS) {\n visible.push(entry);\n }\n }\n\n // Remove entries for participants who left.\n for (const clientId of entriesRef.current.keys()) {\n if (!others.find((o) => o.clientId === clientId)) {\n entriesRef.current.delete(clientId);\n }\n }\n\n if (visible.length === 0) {\n return (\n <div\n ref={overlayRef}\n aria-hidden\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n overflow: \"hidden\",\n }}\n className={className}\n />\n );\n }\n\n return (\n <div\n ref={overlayRef}\n aria-hidden\n style={{\n position: \"absolute\",\n inset: 0,\n pointerEvents: \"none\",\n overflow: \"hidden\",\n }}\n className={className}\n >\n {visible.map((entry) => (\n <CursorLabel key={entry.other.clientId} entry={entry} />\n ))}\n </div>\n );\n}\n"]}
|