@agent-native/core 0.76.5 → 0.76.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +8 -0
- package/corpus/core/docs/content/extensions.md +16 -0
- package/corpus/core/docs/content/locales/ar-SA/a2a-protocol.md +392 -0
- package/corpus/core/docs/content/locales/ar-SA/actions.md +583 -0
- package/corpus/core/docs/content/locales/ar-SA/agent-mentions.md +164 -0
- package/corpus/core/docs/content/locales/ar-SA/agent-surfaces.md +397 -0
- package/corpus/core/docs/content/locales/ar-SA/agent-teams.md +171 -0
- package/corpus/core/docs/content/locales/ar-SA/agent-web-surfaces.md +161 -0
- package/corpus/core/docs/content/locales/ar-SA/audit-log.md +111 -0
- package/corpus/core/docs/content/locales/ar-SA/authentication.md +332 -0
- package/corpus/core/docs/content/locales/ar-SA/automations.md +268 -0
- package/corpus/core/docs/content/locales/ar-SA/blueprint-installer.md +83 -0
- package/corpus/core/docs/content/locales/ar-SA/cli-adapters.md +129 -0
- package/corpus/core/docs/content/locales/ar-SA/client.md +398 -0
- package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.md +114 -0
- package/corpus/core/docs/content/locales/ar-SA/code-agents-ui.md +436 -0
- package/corpus/core/docs/content/locales/ar-SA/components.md +368 -0
- package/corpus/core/docs/content/locales/ar-SA/context-awareness.md +373 -0
- package/corpus/core/docs/content/locales/ar-SA/creating-templates.md +411 -0
- package/corpus/core/docs/content/locales/ar-SA/cross-app-sso.md +185 -0
- package/corpus/core/docs/content/locales/ar-SA/database.md +183 -0
- package/corpus/core/docs/content/locales/ar-SA/deployment.md +349 -0
- package/corpus/core/docs/content/locales/ar-SA/dispatch.md +146 -0
- package/corpus/core/docs/content/locales/ar-SA/drop-in-agent.md +260 -0
- package/corpus/core/docs/content/locales/ar-SA/durable-resume.md +65 -0
- package/corpus/core/docs/content/locales/ar-SA/embedding-sdk.md +597 -0
- package/corpus/core/docs/content/locales/ar-SA/evals.md +155 -0
- package/corpus/core/docs/content/locales/ar-SA/extensions.md +360 -0
- package/corpus/core/docs/content/locales/ar-SA/external-agents.md +619 -0
- package/corpus/core/docs/content/locales/ar-SA/faq.md +142 -0
- package/corpus/core/docs/content/locales/ar-SA/file-uploads.md +122 -0
- package/corpus/core/docs/content/locales/ar-SA/frames.md +153 -0
- package/corpus/core/docs/content/locales/ar-SA/getting-started.md +199 -0
- package/corpus/core/docs/content/locales/ar-SA/harness-agents.md +349 -0
- package/corpus/core/docs/content/locales/ar-SA/human-approval.md +86 -0
- package/corpus/core/docs/content/locales/ar-SA/internationalization.md +68 -25
- package/corpus/core/docs/content/locales/ar-SA/key-concepts.md +312 -0
- package/corpus/core/docs/content/locales/ar-SA/local-file-mode.md +433 -0
- package/corpus/core/docs/content/locales/ar-SA/mcp-apps.md +147 -0
- package/corpus/core/docs/content/locales/ar-SA/mcp-clients.md +330 -0
- package/corpus/core/docs/content/locales/ar-SA/mcp-protocol.md +279 -0
- package/corpus/core/docs/content/locales/ar-SA/messaging.md +461 -0
- package/corpus/core/docs/content/locales/ar-SA/migration-workbench.md +33 -0
- package/corpus/core/docs/content/locales/ar-SA/multi-app-workspace.md +312 -0
- package/corpus/core/docs/content/locales/ar-SA/multi-tenancy.md +52 -0
- package/corpus/core/docs/content/locales/ar-SA/native-chat-ui.md +321 -0
- package/corpus/core/docs/content/locales/ar-SA/notifications.md +231 -0
- package/corpus/core/docs/content/locales/ar-SA/observability.md +294 -0
- package/corpus/core/docs/content/locales/ar-SA/observational-memory.md +77 -0
- package/corpus/core/docs/content/locales/ar-SA/onboarding.md +216 -0
- package/corpus/core/docs/content/locales/ar-SA/plan-plugin.md +200 -0
- package/corpus/core/docs/content/locales/ar-SA/pr-visual-recap.md +384 -0
- package/corpus/core/docs/content/locales/ar-SA/processors.md +106 -0
- package/corpus/core/docs/content/locales/ar-SA/progress.md +199 -0
- package/corpus/core/docs/content/locales/ar-SA/pure-agent-apps.md +39 -0
- package/corpus/core/docs/content/locales/ar-SA/real-time-collaboration.md +676 -0
- package/corpus/core/docs/content/locales/ar-SA/recurring-jobs.md +142 -0
- package/corpus/core/docs/content/locales/ar-SA/routing.md +79 -0
- package/corpus/core/docs/content/locales/ar-SA/sandbox-adapters.md +227 -0
- package/corpus/core/docs/content/locales/ar-SA/security.md +330 -0
- package/corpus/core/docs/content/locales/ar-SA/server.md +253 -0
- package/corpus/core/docs/content/locales/ar-SA/sharing.md +219 -0
- package/corpus/core/docs/content/locales/ar-SA/skills-guide.md +281 -0
- package/corpus/core/docs/content/locales/ar-SA/template-analytics.md +259 -0
- package/corpus/core/docs/content/locales/ar-SA/template-assets.md +303 -0
- package/corpus/core/docs/content/locales/ar-SA/template-brain.md +324 -0
- package/corpus/core/docs/content/locales/ar-SA/template-calendar.md +194 -0
- package/corpus/core/docs/content/locales/ar-SA/template-chat.md +129 -0
- package/corpus/core/docs/content/locales/ar-SA/template-clips.md +368 -0
- package/corpus/core/docs/content/locales/ar-SA/template-content.md +402 -0
- package/corpus/core/docs/content/locales/ar-SA/template-design.md +173 -0
- package/corpus/core/docs/content/locales/ar-SA/template-dispatch.md +220 -0
- package/corpus/core/docs/content/locales/ar-SA/template-forms.md +178 -0
- package/corpus/core/docs/content/locales/ar-SA/template-mail.md +239 -0
- package/corpus/core/docs/content/locales/ar-SA/template-plan.md +815 -0
- package/corpus/core/docs/content/locales/ar-SA/template-slides.md +293 -0
- package/corpus/core/docs/content/locales/ar-SA/template-videos.md +222 -0
- package/corpus/core/docs/content/locales/ar-SA/tracking.md +236 -0
- package/corpus/core/docs/content/locales/ar-SA/using-your-agent.md +71 -0
- package/corpus/core/docs/content/locales/ar-SA/voice-input.md +81 -0
- package/corpus/core/docs/content/locales/ar-SA/what-is-agent-native.md +202 -0
- package/corpus/core/docs/content/locales/ar-SA/workspace-connections.md +321 -0
- package/corpus/core/docs/content/locales/ar-SA/workspace-management.md +175 -0
- package/corpus/core/docs/content/locales/ar-SA/workspace.md +323 -0
- package/corpus/core/docs/content/locales/ar-SA/writing-agent-instructions.md +173 -0
- package/corpus/core/docs/content/locales/de-DE/a2a-protocol.md +392 -0
- package/corpus/core/docs/content/locales/de-DE/actions.md +583 -0
- package/corpus/core/docs/content/locales/de-DE/agent-mentions.md +164 -0
- package/corpus/core/docs/content/locales/de-DE/agent-surfaces.md +397 -0
- package/corpus/core/docs/content/locales/de-DE/agent-teams.md +171 -0
- package/corpus/core/docs/content/locales/de-DE/agent-web-surfaces.md +161 -0
- package/corpus/core/docs/content/locales/de-DE/audit-log.md +111 -0
- package/corpus/core/docs/content/locales/de-DE/authentication.md +332 -0
- package/corpus/core/docs/content/locales/de-DE/automations.md +268 -0
- package/corpus/core/docs/content/locales/de-DE/blueprint-installer.md +83 -0
- package/corpus/core/docs/content/locales/de-DE/cli-adapters.md +129 -0
- package/corpus/core/docs/content/locales/de-DE/client.md +398 -0
- package/corpus/core/docs/content/locales/de-DE/cloneable-saas.md +114 -0
- package/corpus/core/docs/content/locales/de-DE/code-agents-ui.md +436 -0
- package/corpus/core/docs/content/locales/de-DE/components.md +368 -0
- package/corpus/core/docs/content/locales/de-DE/context-awareness.md +373 -0
- package/corpus/core/docs/content/locales/de-DE/creating-templates.md +411 -0
- package/corpus/core/docs/content/locales/de-DE/cross-app-sso.md +185 -0
- package/corpus/core/docs/content/locales/de-DE/database.md +183 -0
- package/corpus/core/docs/content/locales/de-DE/deployment.md +349 -0
- package/corpus/core/docs/content/locales/de-DE/dispatch.md +146 -0
- package/corpus/core/docs/content/locales/de-DE/drop-in-agent.md +260 -0
- package/corpus/core/docs/content/locales/de-DE/durable-resume.md +65 -0
- package/corpus/core/docs/content/locales/de-DE/embedding-sdk.md +597 -0
- package/corpus/core/docs/content/locales/de-DE/evals.md +155 -0
- package/corpus/core/docs/content/locales/de-DE/extensions.md +360 -0
- package/corpus/core/docs/content/locales/de-DE/external-agents.md +619 -0
- package/corpus/core/docs/content/locales/de-DE/faq.md +142 -0
- package/corpus/core/docs/content/locales/de-DE/file-uploads.md +122 -0
- package/corpus/core/docs/content/locales/de-DE/frames.md +153 -0
- package/corpus/core/docs/content/locales/de-DE/getting-started.md +199 -0
- package/corpus/core/docs/content/locales/de-DE/harness-agents.md +349 -0
- package/corpus/core/docs/content/locales/de-DE/human-approval.md +86 -0
- package/corpus/core/docs/content/locales/de-DE/internationalization.md +65 -22
- package/corpus/core/docs/content/locales/de-DE/key-concepts.md +312 -0
- package/corpus/core/docs/content/locales/de-DE/local-file-mode.md +433 -0
- package/corpus/core/docs/content/locales/de-DE/mcp-apps.md +147 -0
- package/corpus/core/docs/content/locales/de-DE/mcp-clients.md +330 -0
- package/corpus/core/docs/content/locales/de-DE/mcp-protocol.md +279 -0
- package/corpus/core/docs/content/locales/de-DE/messaging.md +461 -0
- package/corpus/core/docs/content/locales/de-DE/migration-workbench.md +33 -0
- package/corpus/core/docs/content/locales/de-DE/multi-app-workspace.md +312 -0
- package/corpus/core/docs/content/locales/de-DE/multi-tenancy.md +52 -0
- package/corpus/core/docs/content/locales/de-DE/native-chat-ui.md +321 -0
- package/corpus/core/docs/content/locales/de-DE/notifications.md +231 -0
- package/corpus/core/docs/content/locales/de-DE/observability.md +294 -0
- package/corpus/core/docs/content/locales/de-DE/observational-memory.md +77 -0
- package/corpus/core/docs/content/locales/de-DE/onboarding.md +216 -0
- package/corpus/core/docs/content/locales/de-DE/plan-plugin.md +200 -0
- package/corpus/core/docs/content/locales/de-DE/pr-visual-recap.md +384 -0
- package/corpus/core/docs/content/locales/de-DE/processors.md +106 -0
- package/corpus/core/docs/content/locales/de-DE/progress.md +199 -0
- package/corpus/core/docs/content/locales/de-DE/pure-agent-apps.md +39 -0
- package/corpus/core/docs/content/locales/de-DE/real-time-collaboration.md +676 -0
- package/corpus/core/docs/content/locales/de-DE/recurring-jobs.md +142 -0
- package/corpus/core/docs/content/locales/de-DE/routing.md +79 -0
- package/corpus/core/docs/content/locales/de-DE/sandbox-adapters.md +227 -0
- package/corpus/core/docs/content/locales/de-DE/security.md +330 -0
- package/corpus/core/docs/content/locales/de-DE/server.md +253 -0
- package/corpus/core/docs/content/locales/de-DE/sharing.md +219 -0
- package/corpus/core/docs/content/locales/de-DE/skills-guide.md +281 -0
- package/corpus/core/docs/content/locales/de-DE/template-analytics.md +259 -0
- package/corpus/core/docs/content/locales/de-DE/template-assets.md +303 -0
- package/corpus/core/docs/content/locales/de-DE/template-brain.md +324 -0
- package/corpus/core/docs/content/locales/de-DE/template-calendar.md +194 -0
- package/corpus/core/docs/content/locales/de-DE/template-chat.md +129 -0
- package/corpus/core/docs/content/locales/de-DE/template-clips.md +368 -0
- package/corpus/core/docs/content/locales/de-DE/template-content.md +402 -0
- package/corpus/core/docs/content/locales/de-DE/template-design.md +173 -0
- package/corpus/core/docs/content/locales/de-DE/template-dispatch.md +220 -0
- package/corpus/core/docs/content/locales/de-DE/template-forms.md +178 -0
- package/corpus/core/docs/content/locales/de-DE/template-mail.md +239 -0
- package/corpus/core/docs/content/locales/de-DE/template-plan.md +814 -0
- package/corpus/core/docs/content/locales/de-DE/template-slides.md +293 -0
- package/corpus/core/docs/content/locales/de-DE/template-videos.md +222 -0
- package/corpus/core/docs/content/locales/de-DE/tracking.md +236 -0
- package/corpus/core/docs/content/locales/de-DE/using-your-agent.md +71 -0
- package/corpus/core/docs/content/locales/de-DE/voice-input.md +81 -0
- package/corpus/core/docs/content/locales/de-DE/what-is-agent-native.md +202 -0
- package/corpus/core/docs/content/locales/de-DE/workspace-connections.md +321 -0
- package/corpus/core/docs/content/locales/de-DE/workspace-management.md +175 -0
- package/corpus/core/docs/content/locales/de-DE/workspace.md +323 -0
- package/corpus/core/docs/content/locales/de-DE/writing-agent-instructions.md +173 -0
- package/corpus/core/docs/content/locales/es-ES/a2a-protocol.md +392 -0
- package/corpus/core/docs/content/locales/es-ES/actions.md +583 -0
- package/corpus/core/docs/content/locales/es-ES/agent-mentions.md +164 -0
- package/corpus/core/docs/content/locales/es-ES/agent-surfaces.md +397 -0
- package/corpus/core/docs/content/locales/es-ES/agent-teams.md +171 -0
- package/corpus/core/docs/content/locales/es-ES/agent-web-surfaces.md +161 -0
- package/corpus/core/docs/content/locales/es-ES/audit-log.md +111 -0
- package/corpus/core/docs/content/locales/es-ES/authentication.md +332 -0
- package/corpus/core/docs/content/locales/es-ES/automations.md +268 -0
- package/corpus/core/docs/content/locales/es-ES/blueprint-installer.md +83 -0
- package/corpus/core/docs/content/locales/es-ES/cli-adapters.md +129 -0
- package/corpus/core/docs/content/locales/es-ES/client.md +398 -0
- package/corpus/core/docs/content/locales/es-ES/cloneable-saas.md +114 -0
- package/corpus/core/docs/content/locales/es-ES/code-agents-ui.md +436 -0
- package/corpus/core/docs/content/locales/es-ES/components.md +368 -0
- package/corpus/core/docs/content/locales/es-ES/context-awareness.md +373 -0
- package/corpus/core/docs/content/locales/es-ES/creating-templates.md +411 -0
- package/corpus/core/docs/content/locales/es-ES/cross-app-sso.md +185 -0
- package/corpus/core/docs/content/locales/es-ES/database.md +183 -0
- package/corpus/core/docs/content/locales/es-ES/deployment.md +349 -0
- package/corpus/core/docs/content/locales/es-ES/dispatch.md +146 -0
- package/corpus/core/docs/content/locales/es-ES/drop-in-agent.md +260 -0
- package/corpus/core/docs/content/locales/es-ES/durable-resume.md +65 -0
- package/corpus/core/docs/content/locales/es-ES/embedding-sdk.md +597 -0
- package/corpus/core/docs/content/locales/es-ES/evals.md +155 -0
- package/corpus/core/docs/content/locales/es-ES/extensions.md +360 -0
- package/corpus/core/docs/content/locales/es-ES/external-agents.md +619 -0
- package/corpus/core/docs/content/locales/es-ES/faq.md +142 -0
- package/corpus/core/docs/content/locales/es-ES/file-uploads.md +122 -0
- package/corpus/core/docs/content/locales/es-ES/frames.md +153 -0
- package/corpus/core/docs/content/locales/es-ES/getting-started.md +199 -0
- package/corpus/core/docs/content/locales/es-ES/harness-agents.md +349 -0
- package/corpus/core/docs/content/locales/es-ES/human-approval.md +86 -0
- package/corpus/core/docs/content/locales/es-ES/internationalization.md +67 -24
- package/corpus/core/docs/content/locales/es-ES/key-concepts.md +312 -0
- package/corpus/core/docs/content/locales/es-ES/local-file-mode.md +433 -0
- package/corpus/core/docs/content/locales/es-ES/mcp-apps.md +147 -0
- package/corpus/core/docs/content/locales/es-ES/mcp-clients.md +330 -0
- package/corpus/core/docs/content/locales/es-ES/mcp-protocol.md +279 -0
- package/corpus/core/docs/content/locales/es-ES/messaging.md +461 -0
- package/corpus/core/docs/content/locales/es-ES/migration-workbench.md +33 -0
- package/corpus/core/docs/content/locales/es-ES/multi-app-workspace.md +312 -0
- package/corpus/core/docs/content/locales/es-ES/multi-tenancy.md +52 -0
- package/corpus/core/docs/content/locales/es-ES/native-chat-ui.md +321 -0
- package/corpus/core/docs/content/locales/es-ES/notifications.md +231 -0
- package/corpus/core/docs/content/locales/es-ES/observability.md +294 -0
- package/corpus/core/docs/content/locales/es-ES/observational-memory.md +77 -0
- package/corpus/core/docs/content/locales/es-ES/onboarding.md +216 -0
- package/corpus/core/docs/content/locales/es-ES/plan-plugin.md +200 -0
- package/corpus/core/docs/content/locales/es-ES/pr-visual-recap.md +384 -0
- package/corpus/core/docs/content/locales/es-ES/processors.md +106 -0
- package/corpus/core/docs/content/locales/es-ES/progress.md +199 -0
- package/corpus/core/docs/content/locales/es-ES/pure-agent-apps.md +39 -0
- package/corpus/core/docs/content/locales/es-ES/real-time-collaboration.md +676 -0
- package/corpus/core/docs/content/locales/es-ES/recurring-jobs.md +142 -0
- package/corpus/core/docs/content/locales/es-ES/routing.md +79 -0
- package/corpus/core/docs/content/locales/es-ES/sandbox-adapters.md +227 -0
- package/corpus/core/docs/content/locales/es-ES/security.md +330 -0
- package/corpus/core/docs/content/locales/es-ES/server.md +253 -0
- package/corpus/core/docs/content/locales/es-ES/sharing.md +219 -0
- package/corpus/core/docs/content/locales/es-ES/skills-guide.md +281 -0
- package/corpus/core/docs/content/locales/es-ES/template-analytics.md +259 -0
- package/corpus/core/docs/content/locales/es-ES/template-assets.md +303 -0
- package/corpus/core/docs/content/locales/es-ES/template-brain.md +324 -0
- package/corpus/core/docs/content/locales/es-ES/template-calendar.md +194 -0
- package/corpus/core/docs/content/locales/es-ES/template-chat.md +129 -0
- package/corpus/core/docs/content/locales/es-ES/template-clips.md +368 -0
- package/corpus/core/docs/content/locales/es-ES/template-content.md +402 -0
- package/corpus/core/docs/content/locales/es-ES/template-design.md +173 -0
- package/corpus/core/docs/content/locales/es-ES/template-dispatch.md +220 -0
- package/corpus/core/docs/content/locales/es-ES/template-forms.md +178 -0
- package/corpus/core/docs/content/locales/es-ES/template-mail.md +239 -0
- package/corpus/core/docs/content/locales/es-ES/template-plan.md +815 -0
- package/corpus/core/docs/content/locales/es-ES/template-slides.md +293 -0
- package/corpus/core/docs/content/locales/es-ES/template-videos.md +222 -0
- package/corpus/core/docs/content/locales/es-ES/tracking.md +236 -0
- package/corpus/core/docs/content/locales/es-ES/using-your-agent.md +71 -0
- package/corpus/core/docs/content/locales/es-ES/voice-input.md +81 -0
- package/corpus/core/docs/content/locales/es-ES/what-is-agent-native.md +202 -0
- package/corpus/core/docs/content/locales/es-ES/workspace-connections.md +321 -0
- package/corpus/core/docs/content/locales/es-ES/workspace-management.md +175 -0
- package/corpus/core/docs/content/locales/es-ES/workspace.md +323 -0
- package/corpus/core/docs/content/locales/es-ES/writing-agent-instructions.md +173 -0
- package/corpus/core/docs/content/locales/fr-FR/a2a-protocol.md +392 -0
- package/corpus/core/docs/content/locales/fr-FR/actions.md +583 -0
- package/corpus/core/docs/content/locales/fr-FR/agent-mentions.md +164 -0
- package/corpus/core/docs/content/locales/fr-FR/agent-surfaces.md +397 -0
- package/corpus/core/docs/content/locales/fr-FR/agent-teams.md +171 -0
- package/corpus/core/docs/content/locales/fr-FR/agent-web-surfaces.md +161 -0
- package/corpus/core/docs/content/locales/fr-FR/audit-log.md +111 -0
- package/corpus/core/docs/content/locales/fr-FR/authentication.md +332 -0
- package/corpus/core/docs/content/locales/fr-FR/automations.md +268 -0
- package/corpus/core/docs/content/locales/fr-FR/blueprint-installer.md +83 -0
- package/corpus/core/docs/content/locales/fr-FR/cli-adapters.md +129 -0
- package/corpus/core/docs/content/locales/fr-FR/client.md +398 -0
- package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.md +114 -0
- package/corpus/core/docs/content/locales/fr-FR/code-agents-ui.md +436 -0
- package/corpus/core/docs/content/locales/fr-FR/components.md +368 -0
- package/corpus/core/docs/content/locales/fr-FR/context-awareness.md +373 -0
- package/corpus/core/docs/content/locales/fr-FR/creating-templates.md +411 -0
- package/corpus/core/docs/content/locales/fr-FR/cross-app-sso.md +185 -0
- package/corpus/core/docs/content/locales/fr-FR/database.md +183 -0
- package/corpus/core/docs/content/locales/fr-FR/deployment.md +349 -0
- package/corpus/core/docs/content/locales/fr-FR/dispatch.md +146 -0
- package/corpus/core/docs/content/locales/fr-FR/drop-in-agent.md +260 -0
- package/corpus/core/docs/content/locales/fr-FR/durable-resume.md +65 -0
- package/corpus/core/docs/content/locales/fr-FR/embedding-sdk.md +597 -0
- package/corpus/core/docs/content/locales/fr-FR/evals.md +155 -0
- package/corpus/core/docs/content/locales/fr-FR/extensions.md +360 -0
- package/corpus/core/docs/content/locales/fr-FR/external-agents.md +619 -0
- package/corpus/core/docs/content/locales/fr-FR/faq.md +142 -0
- package/corpus/core/docs/content/locales/fr-FR/file-uploads.md +122 -0
- package/corpus/core/docs/content/locales/fr-FR/frames.md +153 -0
- package/corpus/core/docs/content/locales/fr-FR/getting-started.md +199 -0
- package/corpus/core/docs/content/locales/fr-FR/harness-agents.md +349 -0
- package/corpus/core/docs/content/locales/fr-FR/human-approval.md +86 -0
- package/corpus/core/docs/content/locales/fr-FR/internationalization.md +67 -24
- package/corpus/core/docs/content/locales/fr-FR/key-concepts.md +312 -0
- package/corpus/core/docs/content/locales/fr-FR/local-file-mode.md +433 -0
- package/corpus/core/docs/content/locales/fr-FR/mcp-apps.md +147 -0
- package/corpus/core/docs/content/locales/fr-FR/mcp-clients.md +330 -0
- package/corpus/core/docs/content/locales/fr-FR/mcp-protocol.md +279 -0
- package/corpus/core/docs/content/locales/fr-FR/messaging.md +461 -0
- package/corpus/core/docs/content/locales/fr-FR/migration-workbench.md +33 -0
- package/corpus/core/docs/content/locales/fr-FR/multi-app-workspace.md +312 -0
- package/corpus/core/docs/content/locales/fr-FR/multi-tenancy.md +52 -0
- package/corpus/core/docs/content/locales/fr-FR/native-chat-ui.md +321 -0
- package/corpus/core/docs/content/locales/fr-FR/notifications.md +231 -0
- package/corpus/core/docs/content/locales/fr-FR/observability.md +294 -0
- package/corpus/core/docs/content/locales/fr-FR/observational-memory.md +77 -0
- package/corpus/core/docs/content/locales/fr-FR/onboarding.md +216 -0
- package/corpus/core/docs/content/locales/fr-FR/plan-plugin.md +200 -0
- package/corpus/core/docs/content/locales/fr-FR/pr-visual-recap.md +384 -0
- package/corpus/core/docs/content/locales/fr-FR/processors.md +106 -0
- package/corpus/core/docs/content/locales/fr-FR/progress.md +199 -0
- package/corpus/core/docs/content/locales/fr-FR/pure-agent-apps.md +39 -0
- package/corpus/core/docs/content/locales/fr-FR/real-time-collaboration.md +676 -0
- package/corpus/core/docs/content/locales/fr-FR/recurring-jobs.md +142 -0
- package/corpus/core/docs/content/locales/fr-FR/routing.md +79 -0
- package/corpus/core/docs/content/locales/fr-FR/sandbox-adapters.md +227 -0
- package/corpus/core/docs/content/locales/fr-FR/security.md +330 -0
- package/corpus/core/docs/content/locales/fr-FR/server.md +253 -0
- package/corpus/core/docs/content/locales/fr-FR/sharing.md +219 -0
- package/corpus/core/docs/content/locales/fr-FR/skills-guide.md +281 -0
- package/corpus/core/docs/content/locales/fr-FR/template-analytics.md +259 -0
- package/corpus/core/docs/content/locales/fr-FR/template-assets.md +303 -0
- package/corpus/core/docs/content/locales/fr-FR/template-brain.md +324 -0
- package/corpus/core/docs/content/locales/fr-FR/template-calendar.md +194 -0
- package/corpus/core/docs/content/locales/fr-FR/template-chat.md +129 -0
- package/corpus/core/docs/content/locales/fr-FR/template-clips.md +368 -0
- package/corpus/core/docs/content/locales/fr-FR/template-content.md +402 -0
- package/corpus/core/docs/content/locales/fr-FR/template-design.md +173 -0
- package/corpus/core/docs/content/locales/fr-FR/template-dispatch.md +220 -0
- package/corpus/core/docs/content/locales/fr-FR/template-forms.md +178 -0
- package/corpus/core/docs/content/locales/fr-FR/template-mail.md +239 -0
- package/corpus/core/docs/content/locales/fr-FR/template-plan.md +815 -0
- package/corpus/core/docs/content/locales/fr-FR/template-slides.md +293 -0
- package/corpus/core/docs/content/locales/fr-FR/template-videos.md +222 -0
- package/corpus/core/docs/content/locales/fr-FR/tracking.md +236 -0
- package/corpus/core/docs/content/locales/fr-FR/using-your-agent.md +71 -0
- package/corpus/core/docs/content/locales/fr-FR/voice-input.md +81 -0
- package/corpus/core/docs/content/locales/fr-FR/what-is-agent-native.md +202 -0
- package/corpus/core/docs/content/locales/fr-FR/workspace-connections.md +321 -0
- package/corpus/core/docs/content/locales/fr-FR/workspace-management.md +175 -0
- package/corpus/core/docs/content/locales/fr-FR/workspace.md +323 -0
- package/corpus/core/docs/content/locales/fr-FR/writing-agent-instructions.md +173 -0
- package/corpus/core/docs/content/locales/hi-IN/a2a-protocol.md +392 -0
- package/corpus/core/docs/content/locales/hi-IN/actions.md +583 -0
- package/corpus/core/docs/content/locales/hi-IN/agent-mentions.md +164 -0
- package/corpus/core/docs/content/locales/hi-IN/agent-surfaces.md +397 -0
- package/corpus/core/docs/content/locales/hi-IN/agent-teams.md +171 -0
- package/corpus/core/docs/content/locales/hi-IN/agent-web-surfaces.md +161 -0
- package/corpus/core/docs/content/locales/hi-IN/audit-log.md +111 -0
- package/corpus/core/docs/content/locales/hi-IN/authentication.md +332 -0
- package/corpus/core/docs/content/locales/hi-IN/automations.md +268 -0
- package/corpus/core/docs/content/locales/hi-IN/blueprint-installer.md +83 -0
- package/corpus/core/docs/content/locales/hi-IN/cli-adapters.md +129 -0
- package/corpus/core/docs/content/locales/hi-IN/client.md +398 -0
- package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.md +114 -0
- package/corpus/core/docs/content/locales/hi-IN/code-agents-ui.md +436 -0
- package/corpus/core/docs/content/locales/hi-IN/components.md +368 -0
- package/corpus/core/docs/content/locales/hi-IN/context-awareness.md +373 -0
- package/corpus/core/docs/content/locales/hi-IN/creating-templates.md +411 -0
- package/corpus/core/docs/content/locales/hi-IN/cross-app-sso.md +185 -0
- package/corpus/core/docs/content/locales/hi-IN/database.md +183 -0
- package/corpus/core/docs/content/locales/hi-IN/deployment.md +349 -0
- package/corpus/core/docs/content/locales/hi-IN/dispatch.md +146 -0
- package/corpus/core/docs/content/locales/hi-IN/drop-in-agent.md +260 -0
- package/corpus/core/docs/content/locales/hi-IN/durable-resume.md +65 -0
- package/corpus/core/docs/content/locales/hi-IN/embedding-sdk.md +597 -0
- package/corpus/core/docs/content/locales/hi-IN/evals.md +155 -0
- package/corpus/core/docs/content/locales/hi-IN/extensions.md +360 -0
- package/corpus/core/docs/content/locales/hi-IN/external-agents.md +619 -0
- package/corpus/core/docs/content/locales/hi-IN/faq.md +142 -0
- package/corpus/core/docs/content/locales/hi-IN/file-uploads.md +122 -0
- package/corpus/core/docs/content/locales/hi-IN/frames.md +153 -0
- package/corpus/core/docs/content/locales/hi-IN/getting-started.md +199 -0
- package/corpus/core/docs/content/locales/hi-IN/harness-agents.md +349 -0
- package/corpus/core/docs/content/locales/hi-IN/human-approval.md +86 -0
- package/corpus/core/docs/content/locales/hi-IN/internationalization.md +70 -27
- package/corpus/core/docs/content/locales/hi-IN/key-concepts.md +312 -0
- package/corpus/core/docs/content/locales/hi-IN/local-file-mode.md +433 -0
- package/corpus/core/docs/content/locales/hi-IN/mcp-apps.md +147 -0
- package/corpus/core/docs/content/locales/hi-IN/mcp-clients.md +330 -0
- package/corpus/core/docs/content/locales/hi-IN/mcp-protocol.md +279 -0
- package/corpus/core/docs/content/locales/hi-IN/messaging.md +461 -0
- package/corpus/core/docs/content/locales/hi-IN/migration-workbench.md +33 -0
- package/corpus/core/docs/content/locales/hi-IN/multi-app-workspace.md +312 -0
- package/corpus/core/docs/content/locales/hi-IN/multi-tenancy.md +52 -0
- package/corpus/core/docs/content/locales/hi-IN/native-chat-ui.md +321 -0
- package/corpus/core/docs/content/locales/hi-IN/notifications.md +231 -0
- package/corpus/core/docs/content/locales/hi-IN/observability.md +294 -0
- package/corpus/core/docs/content/locales/hi-IN/observational-memory.md +77 -0
- package/corpus/core/docs/content/locales/hi-IN/onboarding.md +216 -0
- package/corpus/core/docs/content/locales/hi-IN/plan-plugin.md +200 -0
- package/corpus/core/docs/content/locales/hi-IN/pr-visual-recap.md +384 -0
- package/corpus/core/docs/content/locales/hi-IN/processors.md +106 -0
- package/corpus/core/docs/content/locales/hi-IN/progress.md +199 -0
- package/corpus/core/docs/content/locales/hi-IN/pure-agent-apps.md +39 -0
- package/corpus/core/docs/content/locales/hi-IN/real-time-collaboration.md +676 -0
- package/corpus/core/docs/content/locales/hi-IN/recurring-jobs.md +142 -0
- package/corpus/core/docs/content/locales/hi-IN/routing.md +79 -0
- package/corpus/core/docs/content/locales/hi-IN/sandbox-adapters.md +227 -0
- package/corpus/core/docs/content/locales/hi-IN/security.md +330 -0
- package/corpus/core/docs/content/locales/hi-IN/server.md +253 -0
- package/corpus/core/docs/content/locales/hi-IN/sharing.md +219 -0
- package/corpus/core/docs/content/locales/hi-IN/skills-guide.md +281 -0
- package/corpus/core/docs/content/locales/hi-IN/template-analytics.md +259 -0
- package/corpus/core/docs/content/locales/hi-IN/template-assets.md +303 -0
- package/corpus/core/docs/content/locales/hi-IN/template-brain.md +324 -0
- package/corpus/core/docs/content/locales/hi-IN/template-calendar.md +194 -0
- package/corpus/core/docs/content/locales/hi-IN/template-chat.md +129 -0
- package/corpus/core/docs/content/locales/hi-IN/template-clips.md +368 -0
- package/corpus/core/docs/content/locales/hi-IN/template-content.md +402 -0
- package/corpus/core/docs/content/locales/hi-IN/template-design.md +173 -0
- package/corpus/core/docs/content/locales/hi-IN/template-dispatch.md +220 -0
- package/corpus/core/docs/content/locales/hi-IN/template-forms.md +178 -0
- package/corpus/core/docs/content/locales/hi-IN/template-mail.md +239 -0
- package/corpus/core/docs/content/locales/hi-IN/template-plan.md +815 -0
- package/corpus/core/docs/content/locales/hi-IN/template-slides.md +293 -0
- package/corpus/core/docs/content/locales/hi-IN/template-videos.md +222 -0
- package/corpus/core/docs/content/locales/hi-IN/tracking.md +236 -0
- package/corpus/core/docs/content/locales/hi-IN/using-your-agent.md +71 -0
- package/corpus/core/docs/content/locales/hi-IN/voice-input.md +81 -0
- package/corpus/core/docs/content/locales/hi-IN/what-is-agent-native.md +202 -0
- package/corpus/core/docs/content/locales/hi-IN/workspace-connections.md +321 -0
- package/corpus/core/docs/content/locales/hi-IN/workspace-management.md +175 -0
- package/corpus/core/docs/content/locales/hi-IN/workspace.md +323 -0
- package/corpus/core/docs/content/locales/hi-IN/writing-agent-instructions.md +173 -0
- package/corpus/core/docs/content/locales/ja-JP/a2a-protocol.md +392 -0
- package/corpus/core/docs/content/locales/ja-JP/actions.md +583 -0
- package/corpus/core/docs/content/locales/ja-JP/agent-mentions.md +164 -0
- package/corpus/core/docs/content/locales/ja-JP/agent-surfaces.md +397 -0
- package/corpus/core/docs/content/locales/ja-JP/agent-teams.md +171 -0
- package/corpus/core/docs/content/locales/ja-JP/agent-web-surfaces.md +161 -0
- package/corpus/core/docs/content/locales/ja-JP/audit-log.md +111 -0
- package/corpus/core/docs/content/locales/ja-JP/authentication.md +332 -0
- package/corpus/core/docs/content/locales/ja-JP/automations.md +268 -0
- package/corpus/core/docs/content/locales/ja-JP/blueprint-installer.md +83 -0
- package/corpus/core/docs/content/locales/ja-JP/cli-adapters.md +129 -0
- package/corpus/core/docs/content/locales/ja-JP/client.md +398 -0
- package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.md +114 -0
- package/corpus/core/docs/content/locales/ja-JP/code-agents-ui.md +436 -0
- package/corpus/core/docs/content/locales/ja-JP/components.md +368 -0
- package/corpus/core/docs/content/locales/ja-JP/context-awareness.md +373 -0
- package/corpus/core/docs/content/locales/ja-JP/creating-templates.md +411 -0
- package/corpus/core/docs/content/locales/ja-JP/cross-app-sso.md +185 -0
- package/corpus/core/docs/content/locales/ja-JP/database.md +183 -0
- package/corpus/core/docs/content/locales/ja-JP/deployment.md +349 -0
- package/corpus/core/docs/content/locales/ja-JP/dispatch.md +146 -0
- package/corpus/core/docs/content/locales/ja-JP/drop-in-agent.md +260 -0
- package/corpus/core/docs/content/locales/ja-JP/durable-resume.md +65 -0
- package/corpus/core/docs/content/locales/ja-JP/embedding-sdk.md +597 -0
- package/corpus/core/docs/content/locales/ja-JP/evals.md +155 -0
- package/corpus/core/docs/content/locales/ja-JP/extensions.md +360 -0
- package/corpus/core/docs/content/locales/ja-JP/external-agents.md +619 -0
- package/corpus/core/docs/content/locales/ja-JP/faq.md +142 -0
- package/corpus/core/docs/content/locales/ja-JP/file-uploads.md +122 -0
- package/corpus/core/docs/content/locales/ja-JP/frames.md +153 -0
- package/corpus/core/docs/content/locales/ja-JP/getting-started.md +199 -0
- package/corpus/core/docs/content/locales/ja-JP/harness-agents.md +349 -0
- package/corpus/core/docs/content/locales/ja-JP/human-approval.md +86 -0
- package/corpus/core/docs/content/locales/ja-JP/internationalization.md +54 -23
- package/corpus/core/docs/content/locales/ja-JP/key-concepts.md +312 -0
- package/corpus/core/docs/content/locales/ja-JP/local-file-mode.md +433 -0
- package/corpus/core/docs/content/locales/ja-JP/mcp-apps.md +147 -0
- package/corpus/core/docs/content/locales/ja-JP/mcp-clients.md +330 -0
- package/corpus/core/docs/content/locales/ja-JP/mcp-protocol.md +279 -0
- package/corpus/core/docs/content/locales/ja-JP/messaging.md +461 -0
- package/corpus/core/docs/content/locales/ja-JP/migration-workbench.md +33 -0
- package/corpus/core/docs/content/locales/ja-JP/multi-app-workspace.md +312 -0
- package/corpus/core/docs/content/locales/ja-JP/multi-tenancy.md +52 -0
- package/corpus/core/docs/content/locales/ja-JP/native-chat-ui.md +321 -0
- package/corpus/core/docs/content/locales/ja-JP/notifications.md +231 -0
- package/corpus/core/docs/content/locales/ja-JP/observability.md +294 -0
- package/corpus/core/docs/content/locales/ja-JP/observational-memory.md +77 -0
- package/corpus/core/docs/content/locales/ja-JP/onboarding.md +216 -0
- package/corpus/core/docs/content/locales/ja-JP/plan-plugin.md +200 -0
- package/corpus/core/docs/content/locales/ja-JP/pr-visual-recap.md +384 -0
- package/corpus/core/docs/content/locales/ja-JP/processors.md +106 -0
- package/corpus/core/docs/content/locales/ja-JP/progress.md +199 -0
- package/corpus/core/docs/content/locales/ja-JP/pure-agent-apps.md +39 -0
- package/corpus/core/docs/content/locales/ja-JP/real-time-collaboration.md +676 -0
- package/corpus/core/docs/content/locales/ja-JP/recurring-jobs.md +142 -0
- package/corpus/core/docs/content/locales/ja-JP/routing.md +79 -0
- package/corpus/core/docs/content/locales/ja-JP/sandbox-adapters.md +227 -0
- package/corpus/core/docs/content/locales/ja-JP/security.md +330 -0
- package/corpus/core/docs/content/locales/ja-JP/server.md +253 -0
- package/corpus/core/docs/content/locales/ja-JP/sharing.md +219 -0
- package/corpus/core/docs/content/locales/ja-JP/skills-guide.md +281 -0
- package/corpus/core/docs/content/locales/ja-JP/template-analytics.md +259 -0
- package/corpus/core/docs/content/locales/ja-JP/template-assets.md +303 -0
- package/corpus/core/docs/content/locales/ja-JP/template-brain.md +324 -0
- package/corpus/core/docs/content/locales/ja-JP/template-calendar.md +194 -0
- package/corpus/core/docs/content/locales/ja-JP/template-chat.md +129 -0
- package/corpus/core/docs/content/locales/ja-JP/template-clips.md +368 -0
- package/corpus/core/docs/content/locales/ja-JP/template-content.md +402 -0
- package/corpus/core/docs/content/locales/ja-JP/template-design.md +173 -0
- package/corpus/core/docs/content/locales/ja-JP/template-dispatch.md +220 -0
- package/corpus/core/docs/content/locales/ja-JP/template-forms.md +178 -0
- package/corpus/core/docs/content/locales/ja-JP/template-mail.md +239 -0
- package/corpus/core/docs/content/locales/ja-JP/template-plan.md +814 -0
- package/corpus/core/docs/content/locales/ja-JP/template-slides.md +293 -0
- package/corpus/core/docs/content/locales/ja-JP/template-videos.md +222 -0
- package/corpus/core/docs/content/locales/ja-JP/tracking.md +236 -0
- package/corpus/core/docs/content/locales/ja-JP/using-your-agent.md +71 -0
- package/corpus/core/docs/content/locales/ja-JP/voice-input.md +81 -0
- package/corpus/core/docs/content/locales/ja-JP/what-is-agent-native.md +202 -0
- package/corpus/core/docs/content/locales/ja-JP/workspace-connections.md +321 -0
- package/corpus/core/docs/content/locales/ja-JP/workspace-management.md +175 -0
- package/corpus/core/docs/content/locales/ja-JP/workspace.md +323 -0
- package/corpus/core/docs/content/locales/ja-JP/writing-agent-instructions.md +173 -0
- package/corpus/core/docs/content/locales/ko-KR/a2a-protocol.md +392 -0
- package/corpus/core/docs/content/locales/ko-KR/actions.md +583 -0
- package/corpus/core/docs/content/locales/ko-KR/agent-mentions.md +164 -0
- package/corpus/core/docs/content/locales/ko-KR/agent-surfaces.md +397 -0
- package/corpus/core/docs/content/locales/ko-KR/agent-teams.md +171 -0
- package/corpus/core/docs/content/locales/ko-KR/agent-web-surfaces.md +161 -0
- package/corpus/core/docs/content/locales/ko-KR/audit-log.md +111 -0
- package/corpus/core/docs/content/locales/ko-KR/authentication.md +332 -0
- package/corpus/core/docs/content/locales/ko-KR/automations.md +268 -0
- package/corpus/core/docs/content/locales/ko-KR/blueprint-installer.md +83 -0
- package/corpus/core/docs/content/locales/ko-KR/cli-adapters.md +129 -0
- package/corpus/core/docs/content/locales/ko-KR/client.md +398 -0
- package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.md +114 -0
- package/corpus/core/docs/content/locales/ko-KR/code-agents-ui.md +436 -0
- package/corpus/core/docs/content/locales/ko-KR/components.md +368 -0
- package/corpus/core/docs/content/locales/ko-KR/context-awareness.md +373 -0
- package/corpus/core/docs/content/locales/ko-KR/creating-templates.md +411 -0
- package/corpus/core/docs/content/locales/ko-KR/cross-app-sso.md +187 -0
- package/corpus/core/docs/content/locales/ko-KR/database.md +183 -0
- package/corpus/core/docs/content/locales/ko-KR/deployment.md +349 -0
- package/corpus/core/docs/content/locales/ko-KR/dispatch.md +146 -0
- package/corpus/core/docs/content/locales/ko-KR/drop-in-agent.md +260 -0
- package/corpus/core/docs/content/locales/ko-KR/durable-resume.md +65 -0
- package/corpus/core/docs/content/locales/ko-KR/embedding-sdk.md +597 -0
- package/corpus/core/docs/content/locales/ko-KR/evals.md +155 -0
- package/corpus/core/docs/content/locales/ko-KR/extensions.md +360 -0
- package/corpus/core/docs/content/locales/ko-KR/external-agents.md +621 -0
- package/corpus/core/docs/content/locales/ko-KR/faq.md +142 -0
- package/corpus/core/docs/content/locales/ko-KR/file-uploads.md +122 -0
- package/corpus/core/docs/content/locales/ko-KR/frames.md +153 -0
- package/corpus/core/docs/content/locales/ko-KR/getting-started.md +199 -0
- package/corpus/core/docs/content/locales/ko-KR/harness-agents.md +349 -0
- package/corpus/core/docs/content/locales/ko-KR/human-approval.md +88 -0
- package/corpus/core/docs/content/locales/ko-KR/internationalization.md +66 -23
- package/corpus/core/docs/content/locales/ko-KR/key-concepts.md +312 -0
- package/corpus/core/docs/content/locales/ko-KR/local-file-mode.md +433 -0
- package/corpus/core/docs/content/locales/ko-KR/mcp-apps.md +147 -0
- package/corpus/core/docs/content/locales/ko-KR/mcp-clients.md +330 -0
- package/corpus/core/docs/content/locales/ko-KR/mcp-protocol.md +279 -0
- package/corpus/core/docs/content/locales/ko-KR/messaging.md +464 -0
- package/corpus/core/docs/content/locales/ko-KR/migration-workbench.md +33 -0
- package/corpus/core/docs/content/locales/ko-KR/multi-app-workspace.md +312 -0
- package/corpus/core/docs/content/locales/ko-KR/multi-tenancy.md +52 -0
- package/corpus/core/docs/content/locales/ko-KR/native-chat-ui.md +321 -0
- package/corpus/core/docs/content/locales/ko-KR/notifications.md +231 -0
- package/corpus/core/docs/content/locales/ko-KR/observability.md +294 -0
- package/corpus/core/docs/content/locales/ko-KR/observational-memory.md +77 -0
- package/corpus/core/docs/content/locales/ko-KR/onboarding.md +216 -0
- package/corpus/core/docs/content/locales/ko-KR/plan-plugin.md +200 -0
- package/corpus/core/docs/content/locales/ko-KR/pr-visual-recap.md +384 -0
- package/corpus/core/docs/content/locales/ko-KR/processors.md +106 -0
- package/corpus/core/docs/content/locales/ko-KR/progress.md +199 -0
- package/corpus/core/docs/content/locales/ko-KR/pure-agent-apps.md +39 -0
- package/corpus/core/docs/content/locales/ko-KR/real-time-collaboration.md +676 -0
- package/corpus/core/docs/content/locales/ko-KR/recurring-jobs.md +142 -0
- package/corpus/core/docs/content/locales/ko-KR/routing.md +79 -0
- package/corpus/core/docs/content/locales/ko-KR/sandbox-adapters.md +227 -0
- package/corpus/core/docs/content/locales/ko-KR/security.md +330 -0
- package/corpus/core/docs/content/locales/ko-KR/server.md +253 -0
- package/corpus/core/docs/content/locales/ko-KR/sharing.md +219 -0
- package/corpus/core/docs/content/locales/ko-KR/skills-guide.md +281 -0
- package/corpus/core/docs/content/locales/ko-KR/template-analytics.md +259 -0
- package/corpus/core/docs/content/locales/ko-KR/template-assets.md +307 -0
- package/corpus/core/docs/content/locales/ko-KR/template-brain.md +324 -0
- package/corpus/core/docs/content/locales/ko-KR/template-calendar.md +194 -0
- package/corpus/core/docs/content/locales/ko-KR/template-chat.md +129 -0
- package/corpus/core/docs/content/locales/ko-KR/template-clips.md +372 -0
- package/corpus/core/docs/content/locales/ko-KR/template-content.md +402 -0
- package/corpus/core/docs/content/locales/ko-KR/template-design.md +173 -0
- package/corpus/core/docs/content/locales/ko-KR/template-dispatch.md +220 -0
- package/corpus/core/docs/content/locales/ko-KR/template-forms.md +178 -0
- package/corpus/core/docs/content/locales/ko-KR/template-mail.md +239 -0
- package/corpus/core/docs/content/locales/ko-KR/template-plan.md +815 -0
- package/corpus/core/docs/content/locales/ko-KR/template-slides.md +293 -0
- package/corpus/core/docs/content/locales/ko-KR/template-videos.md +222 -0
- package/corpus/core/docs/content/locales/ko-KR/tracking.md +236 -0
- package/corpus/core/docs/content/locales/ko-KR/using-your-agent.md +71 -0
- package/corpus/core/docs/content/locales/ko-KR/voice-input.md +81 -0
- package/corpus/core/docs/content/locales/ko-KR/what-is-agent-native.md +202 -0
- package/corpus/core/docs/content/locales/ko-KR/workspace-connections.md +321 -0
- package/corpus/core/docs/content/locales/ko-KR/workspace-management.md +175 -0
- package/corpus/core/docs/content/locales/ko-KR/workspace.md +323 -0
- package/corpus/core/docs/content/locales/ko-KR/writing-agent-instructions.md +173 -0
- package/corpus/core/docs/content/locales/pt-BR/a2a-protocol.md +392 -0
- package/corpus/core/docs/content/locales/pt-BR/actions.md +583 -0
- package/corpus/core/docs/content/locales/pt-BR/agent-mentions.md +164 -0
- package/corpus/core/docs/content/locales/pt-BR/agent-surfaces.md +397 -0
- package/corpus/core/docs/content/locales/pt-BR/agent-teams.md +171 -0
- package/corpus/core/docs/content/locales/pt-BR/agent-web-surfaces.md +161 -0
- package/corpus/core/docs/content/locales/pt-BR/audit-log.md +111 -0
- package/corpus/core/docs/content/locales/pt-BR/authentication.md +332 -0
- package/corpus/core/docs/content/locales/pt-BR/automations.md +268 -0
- package/corpus/core/docs/content/locales/pt-BR/blueprint-installer.md +83 -0
- package/corpus/core/docs/content/locales/pt-BR/cli-adapters.md +129 -0
- package/corpus/core/docs/content/locales/pt-BR/client.md +398 -0
- package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.md +114 -0
- package/corpus/core/docs/content/locales/pt-BR/code-agents-ui.md +436 -0
- package/corpus/core/docs/content/locales/pt-BR/components.md +368 -0
- package/corpus/core/docs/content/locales/pt-BR/context-awareness.md +373 -0
- package/corpus/core/docs/content/locales/pt-BR/creating-templates.md +411 -0
- package/corpus/core/docs/content/locales/pt-BR/cross-app-sso.md +185 -0
- package/corpus/core/docs/content/locales/pt-BR/database.md +183 -0
- package/corpus/core/docs/content/locales/pt-BR/deployment.md +349 -0
- package/corpus/core/docs/content/locales/pt-BR/dispatch.md +146 -0
- package/corpus/core/docs/content/locales/pt-BR/drop-in-agent.md +260 -0
- package/corpus/core/docs/content/locales/pt-BR/durable-resume.md +65 -0
- package/corpus/core/docs/content/locales/pt-BR/embedding-sdk.md +597 -0
- package/corpus/core/docs/content/locales/pt-BR/evals.md +155 -0
- package/corpus/core/docs/content/locales/pt-BR/extensions.md +360 -0
- package/corpus/core/docs/content/locales/pt-BR/external-agents.md +619 -0
- package/corpus/core/docs/content/locales/pt-BR/faq.md +142 -0
- package/corpus/core/docs/content/locales/pt-BR/file-uploads.md +122 -0
- package/corpus/core/docs/content/locales/pt-BR/frames.md +153 -0
- package/corpus/core/docs/content/locales/pt-BR/getting-started.md +199 -0
- package/corpus/core/docs/content/locales/pt-BR/harness-agents.md +349 -0
- package/corpus/core/docs/content/locales/pt-BR/human-approval.md +86 -0
- package/corpus/core/docs/content/locales/pt-BR/internationalization.md +67 -24
- package/corpus/core/docs/content/locales/pt-BR/key-concepts.md +312 -0
- package/corpus/core/docs/content/locales/pt-BR/local-file-mode.md +433 -0
- package/corpus/core/docs/content/locales/pt-BR/mcp-apps.md +147 -0
- package/corpus/core/docs/content/locales/pt-BR/mcp-clients.md +330 -0
- package/corpus/core/docs/content/locales/pt-BR/mcp-protocol.md +279 -0
- package/corpus/core/docs/content/locales/pt-BR/messaging.md +461 -0
- package/corpus/core/docs/content/locales/pt-BR/migration-workbench.md +33 -0
- package/corpus/core/docs/content/locales/pt-BR/multi-app-workspace.md +312 -0
- package/corpus/core/docs/content/locales/pt-BR/multi-tenancy.md +52 -0
- package/corpus/core/docs/content/locales/pt-BR/native-chat-ui.md +321 -0
- package/corpus/core/docs/content/locales/pt-BR/notifications.md +231 -0
- package/corpus/core/docs/content/locales/pt-BR/observability.md +294 -0
- package/corpus/core/docs/content/locales/pt-BR/observational-memory.md +77 -0
- package/corpus/core/docs/content/locales/pt-BR/onboarding.md +216 -0
- package/corpus/core/docs/content/locales/pt-BR/plan-plugin.md +200 -0
- package/corpus/core/docs/content/locales/pt-BR/pr-visual-recap.md +384 -0
- package/corpus/core/docs/content/locales/pt-BR/processors.md +106 -0
- package/corpus/core/docs/content/locales/pt-BR/progress.md +199 -0
- package/corpus/core/docs/content/locales/pt-BR/pure-agent-apps.md +39 -0
- package/corpus/core/docs/content/locales/pt-BR/real-time-collaboration.md +676 -0
- package/corpus/core/docs/content/locales/pt-BR/recurring-jobs.md +142 -0
- package/corpus/core/docs/content/locales/pt-BR/routing.md +79 -0
- package/corpus/core/docs/content/locales/pt-BR/sandbox-adapters.md +227 -0
- package/corpus/core/docs/content/locales/pt-BR/security.md +330 -0
- package/corpus/core/docs/content/locales/pt-BR/server.md +253 -0
- package/corpus/core/docs/content/locales/pt-BR/sharing.md +219 -0
- package/corpus/core/docs/content/locales/pt-BR/skills-guide.md +281 -0
- package/corpus/core/docs/content/locales/pt-BR/template-analytics.md +259 -0
- package/corpus/core/docs/content/locales/pt-BR/template-assets.md +303 -0
- package/corpus/core/docs/content/locales/pt-BR/template-brain.md +324 -0
- package/corpus/core/docs/content/locales/pt-BR/template-calendar.md +194 -0
- package/corpus/core/docs/content/locales/pt-BR/template-chat.md +129 -0
- package/corpus/core/docs/content/locales/pt-BR/template-clips.md +368 -0
- package/corpus/core/docs/content/locales/pt-BR/template-content.md +402 -0
- package/corpus/core/docs/content/locales/pt-BR/template-design.md +173 -0
- package/corpus/core/docs/content/locales/pt-BR/template-dispatch.md +220 -0
- package/corpus/core/docs/content/locales/pt-BR/template-forms.md +178 -0
- package/corpus/core/docs/content/locales/pt-BR/template-mail.md +239 -0
- package/corpus/core/docs/content/locales/pt-BR/template-plan.md +815 -0
- package/corpus/core/docs/content/locales/pt-BR/template-slides.md +293 -0
- package/corpus/core/docs/content/locales/pt-BR/template-videos.md +222 -0
- package/corpus/core/docs/content/locales/pt-BR/tracking.md +236 -0
- package/corpus/core/docs/content/locales/pt-BR/using-your-agent.md +71 -0
- package/corpus/core/docs/content/locales/pt-BR/voice-input.md +81 -0
- package/corpus/core/docs/content/locales/pt-BR/what-is-agent-native.md +202 -0
- package/corpus/core/docs/content/locales/pt-BR/workspace-connections.md +321 -0
- package/corpus/core/docs/content/locales/pt-BR/workspace-management.md +175 -0
- package/corpus/core/docs/content/locales/pt-BR/workspace.md +323 -0
- package/corpus/core/docs/content/locales/pt-BR/writing-agent-instructions.md +173 -0
- package/corpus/core/docs/content/locales/zh-CN/a2a-protocol.md +392 -0
- package/corpus/core/docs/content/locales/zh-CN/actions.md +583 -0
- package/corpus/core/docs/content/locales/zh-CN/agent-mentions.md +164 -0
- package/corpus/core/docs/content/locales/zh-CN/agent-surfaces.md +397 -0
- package/corpus/core/docs/content/locales/zh-CN/agent-teams.md +171 -0
- package/corpus/core/docs/content/locales/zh-CN/agent-web-surfaces.md +161 -0
- package/corpus/core/docs/content/locales/zh-CN/audit-log.md +111 -0
- package/corpus/core/docs/content/locales/zh-CN/authentication.md +332 -0
- package/corpus/core/docs/content/locales/zh-CN/automations.md +268 -0
- package/corpus/core/docs/content/locales/zh-CN/blueprint-installer.md +83 -0
- package/corpus/core/docs/content/locales/zh-CN/cli-adapters.md +129 -0
- package/corpus/core/docs/content/locales/zh-CN/client.md +398 -0
- package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.md +114 -0
- package/corpus/core/docs/content/locales/zh-CN/code-agents-ui.md +436 -0
- package/corpus/core/docs/content/locales/zh-CN/components.md +368 -0
- package/corpus/core/docs/content/locales/zh-CN/context-awareness.md +373 -0
- package/corpus/core/docs/content/locales/zh-CN/creating-templates.md +411 -0
- package/corpus/core/docs/content/locales/zh-CN/cross-app-sso.md +188 -0
- package/corpus/core/docs/content/locales/zh-CN/database.md +183 -0
- package/corpus/core/docs/content/locales/zh-CN/deployment.md +349 -0
- package/corpus/core/docs/content/locales/zh-CN/dispatch.md +146 -0
- package/corpus/core/docs/content/locales/zh-CN/drop-in-agent.md +260 -0
- package/corpus/core/docs/content/locales/zh-CN/durable-resume.md +65 -0
- package/corpus/core/docs/content/locales/zh-CN/embedding-sdk.md +597 -0
- package/corpus/core/docs/content/locales/zh-CN/evals.md +155 -0
- package/corpus/core/docs/content/locales/zh-CN/extensions.md +360 -0
- package/corpus/core/docs/content/locales/zh-CN/external-agents.md +619 -0
- package/corpus/core/docs/content/locales/zh-CN/faq.md +142 -0
- package/corpus/core/docs/content/locales/zh-CN/file-uploads.md +122 -0
- package/corpus/core/docs/content/locales/zh-CN/frames.md +153 -0
- package/corpus/core/docs/content/locales/zh-CN/getting-started.md +199 -0
- package/corpus/core/docs/content/locales/zh-CN/harness-agents.md +349 -0
- package/corpus/core/docs/content/locales/zh-CN/human-approval.md +86 -0
- package/corpus/core/docs/content/locales/zh-CN/internationalization.md +67 -24
- package/corpus/core/docs/content/locales/zh-CN/key-concepts.md +312 -0
- package/corpus/core/docs/content/locales/zh-CN/local-file-mode.md +433 -0
- package/corpus/core/docs/content/locales/zh-CN/mcp-apps.md +147 -0
- package/corpus/core/docs/content/locales/zh-CN/mcp-clients.md +330 -0
- package/corpus/core/docs/content/locales/zh-CN/mcp-protocol.md +279 -0
- package/corpus/core/docs/content/locales/zh-CN/messaging.md +461 -0
- package/corpus/core/docs/content/locales/zh-CN/migration-workbench.md +33 -0
- package/corpus/core/docs/content/locales/zh-CN/multi-app-workspace.md +312 -0
- package/corpus/core/docs/content/locales/zh-CN/multi-tenancy.md +52 -0
- package/corpus/core/docs/content/locales/zh-CN/native-chat-ui.md +321 -0
- package/corpus/core/docs/content/locales/zh-CN/notifications.md +231 -0
- package/corpus/core/docs/content/locales/zh-CN/observability.md +294 -0
- package/corpus/core/docs/content/locales/zh-CN/observational-memory.md +77 -0
- package/corpus/core/docs/content/locales/zh-CN/onboarding.md +216 -0
- package/corpus/core/docs/content/locales/zh-CN/plan-plugin.md +200 -0
- package/corpus/core/docs/content/locales/zh-CN/pr-visual-recap.md +384 -0
- package/corpus/core/docs/content/locales/zh-CN/processors.md +106 -0
- package/corpus/core/docs/content/locales/zh-CN/progress.md +199 -0
- package/corpus/core/docs/content/locales/zh-CN/pure-agent-apps.md +39 -0
- package/corpus/core/docs/content/locales/zh-CN/real-time-collaboration.md +676 -0
- package/corpus/core/docs/content/locales/zh-CN/recurring-jobs.md +142 -0
- package/corpus/core/docs/content/locales/zh-CN/routing.md +79 -0
- package/corpus/core/docs/content/locales/zh-CN/sandbox-adapters.md +227 -0
- package/corpus/core/docs/content/locales/zh-CN/security.md +330 -0
- package/corpus/core/docs/content/locales/zh-CN/server.md +253 -0
- package/corpus/core/docs/content/locales/zh-CN/sharing.md +219 -0
- package/corpus/core/docs/content/locales/zh-CN/skills-guide.md +281 -0
- package/corpus/core/docs/content/locales/zh-CN/template-analytics.md +259 -0
- package/corpus/core/docs/content/locales/zh-CN/template-assets.md +303 -0
- package/corpus/core/docs/content/locales/zh-CN/template-brain.md +324 -0
- package/corpus/core/docs/content/locales/zh-CN/template-calendar.md +194 -0
- package/corpus/core/docs/content/locales/zh-CN/template-chat.md +129 -0
- package/corpus/core/docs/content/locales/zh-CN/template-clips.md +368 -0
- package/corpus/core/docs/content/locales/zh-CN/template-content.md +402 -0
- package/corpus/core/docs/content/locales/zh-CN/template-design.md +173 -0
- package/corpus/core/docs/content/locales/zh-CN/template-dispatch.md +220 -0
- package/corpus/core/docs/content/locales/zh-CN/template-forms.md +178 -0
- package/corpus/core/docs/content/locales/zh-CN/template-mail.md +239 -0
- package/corpus/core/docs/content/locales/zh-CN/template-plan.md +814 -0
- package/corpus/core/docs/content/locales/zh-CN/template-slides.md +293 -0
- package/corpus/core/docs/content/locales/zh-CN/template-videos.md +222 -0
- package/corpus/core/docs/content/locales/zh-CN/tracking.md +236 -0
- package/corpus/core/docs/content/locales/zh-CN/using-your-agent.md +71 -0
- package/corpus/core/docs/content/locales/zh-CN/voice-input.md +81 -0
- package/corpus/core/docs/content/locales/zh-CN/what-is-agent-native.md +202 -0
- package/corpus/core/docs/content/locales/zh-CN/workspace-connections.md +321 -0
- package/corpus/core/docs/content/locales/zh-CN/workspace-management.md +175 -0
- package/corpus/core/docs/content/locales/zh-CN/workspace.md +323 -0
- package/corpus/core/docs/content/locales/zh-CN/writing-agent-instructions.md +173 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/run-store.ts +13 -0
- package/corpus/core/src/client/components/CodeRequiredDialog.tsx +37 -23
- package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +13 -9
- package/corpus/core/src/client/extensions/ExtensionEditor.tsx +43 -33
- package/corpus/core/src/client/extensions/ExtensionSlot.tsx +16 -12
- package/corpus/core/src/client/extensions/ExtensionsListPage.tsx +52 -37
- package/corpus/core/src/client/i18n.tsx +87 -2
- package/corpus/core/src/client/integrations/IntegrationCard.tsx +13 -8
- package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +34 -30
- package/corpus/core/src/client/observability/ObservabilityDashboard.tsx +90 -65
- package/corpus/core/src/client/org/RequireActiveOrg.tsx +24 -18
- package/corpus/core/src/client/org/TeamPage.tsx +37 -26
- package/corpus/core/src/client/progress/RunsTray.tsx +67 -33
- package/corpus/core/src/extensions/routes.ts +45 -25
- package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +356 -0
- package/corpus/core/src/templates/default/app/i18n/de-DE.ts +332 -0
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +303 -0
- package/corpus/core/src/templates/default/app/i18n/es-ES.ts +339 -0
- package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +339 -0
- package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +332 -0
- package/corpus/core/src/templates/default/app/i18n/index.ts +18 -0
- package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +326 -0
- package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +326 -0
- package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +339 -0
- package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +324 -0
- package/corpus/core/src/templates/default/app/root.tsx +109 -6
- package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/references/api.md +34 -12
- package/corpus/templates/analytics/app/components/layout/NewAnalysisDialog.tsx +16 -10
- package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +9 -4
- package/corpus/templates/analytics/app/i18n-data.ts +16 -0
- package/corpus/templates/assets/app/i18n-data.ts +101 -0
- package/corpus/templates/assets/app/routes/asset.$id.tsx +60 -36
- package/corpus/templates/assets/app/routes/brand-kits._index.tsx +19 -16
- package/corpus/templates/assets/app/routes/settings.tsx +58 -37
- package/corpus/templates/brain/app/i18n-data.ts +114 -0
- package/corpus/templates/brain/app/routes/_index.tsx +7 -4
- package/corpus/templates/brain/app/routes/ops.tsx +88 -60
- package/corpus/templates/brain/app/routes/search.tsx +97 -56
- package/corpus/templates/calendar/app/components/calendar/DeleteEventDialog.tsx +33 -21
- package/corpus/templates/calendar/app/components/calendar/EventDialog.tsx +25 -30
- package/corpus/templates/calendar/app/i18n/index.ts +3 -24
- package/corpus/templates/calendar/app/i18n-data.ts +61 -0
- package/corpus/templates/calendar/app/pages/Settings.tsx +23 -23
- package/corpus/templates/chat/app/i18n-data.ts +78 -0
- package/corpus/templates/chat/app/routes/database.tsx +3 -1
- package/corpus/templates/chat/app/routes/observability.tsx +3 -2
- package/corpus/templates/chat/app/routes/team.tsx +4 -2
- package/corpus/templates/clips/app/i18n/ar-SA.ts +17 -0
- package/corpus/templates/clips/app/i18n/de-DE.ts +17 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +17 -0
- package/corpus/templates/clips/app/i18n/es-ES.ts +17 -0
- package/corpus/templates/clips/app/i18n/fr-FR.ts +17 -0
- package/corpus/templates/clips/app/i18n/hi-IN.ts +17 -0
- package/corpus/templates/clips/app/i18n/ja-JP.ts +17 -0
- package/corpus/templates/clips/app/i18n/ko-KR.ts +17 -0
- package/corpus/templates/clips/app/i18n/pt-BR.ts +17 -0
- package/corpus/templates/clips/app/i18n/zh-CN.ts +15 -0
- package/corpus/templates/clips/app/routes/_app.trash.tsx +33 -20
- package/corpus/templates/content/app/i18n-data.ts +100 -0
- package/corpus/templates/content/app/routes/_app.team.tsx +7 -6
- package/corpus/templates/design/app/i18n-data.ts +58 -0
- package/corpus/templates/design/app/pages/Present.tsx +4 -3
- package/corpus/templates/design/app/routes/team.tsx +3 -1
- package/corpus/templates/forms/app/i18n/ar-SA.ts +88 -0
- package/corpus/templates/forms/app/i18n/de-DE.ts +88 -0
- package/corpus/templates/forms/app/i18n/en-US.ts +88 -0
- package/corpus/templates/forms/app/i18n/es-ES.ts +90 -0
- package/corpus/templates/forms/app/i18n/fr-FR.ts +88 -0
- package/corpus/templates/forms/app/i18n/hi-IN.ts +88 -0
- package/corpus/templates/forms/app/i18n/ja-JP.ts +88 -0
- package/corpus/templates/forms/app/i18n/ko-KR.ts +88 -0
- package/corpus/templates/forms/app/i18n/pt-BR.ts +88 -0
- package/corpus/templates/forms/app/i18n/zh-CN.ts +88 -0
- package/corpus/templates/forms/app/pages/FormsListPage.tsx +92 -63
- package/corpus/templates/forms/app/pages/ResponsesPage.tsx +37 -20
- package/corpus/templates/forms/app/routes/_index.tsx +15 -14
- package/corpus/templates/macros/app/i18n/ar-SA.ts +22 -0
- package/corpus/templates/macros/app/i18n/de-DE.ts +22 -0
- package/corpus/templates/macros/app/i18n/en-US.ts +22 -0
- package/corpus/templates/macros/app/i18n/es-ES.ts +22 -0
- package/corpus/templates/macros/app/i18n/fr-FR.ts +22 -0
- package/corpus/templates/macros/app/i18n/hi-IN.ts +22 -0
- package/corpus/templates/macros/app/i18n/ja-JP.ts +22 -0
- package/corpus/templates/macros/app/i18n/ko-KR.ts +22 -0
- package/corpus/templates/macros/app/i18n/pt-BR.ts +22 -0
- package/corpus/templates/macros/app/i18n/zh-CN.ts +22 -0
- package/corpus/templates/macros/app/routes/analytics.tsx +54 -27
- package/corpus/templates/mail/app/components/layout/CommandPalette.tsx +34 -26
- package/corpus/templates/mail/app/i18n/ar-SA.ts +30 -0
- package/corpus/templates/mail/app/i18n/de-DE.ts +30 -0
- package/corpus/templates/mail/app/i18n/en-US.ts +30 -0
- package/corpus/templates/mail/app/i18n/es-ES.ts +30 -0
- package/corpus/templates/mail/app/i18n/fr-FR.ts +30 -0
- package/corpus/templates/mail/app/i18n/hi-IN.ts +30 -0
- package/corpus/templates/mail/app/i18n/ja-JP.ts +30 -0
- package/corpus/templates/mail/app/i18n/ko-KR.ts +30 -0
- package/corpus/templates/mail/app/i18n/pt-BR.ts +30 -0
- package/corpus/templates/mail/app/i18n/zh-CN.ts +30 -0
- package/corpus/templates/mail/app/pages/NotFound.tsx +6 -2
- package/corpus/templates/plan/app/components/plan/GuestModeBanner.tsx +4 -3
- package/corpus/templates/plan/app/i18n/ar-SA.ts +17 -0
- package/corpus/templates/plan/app/i18n/de-DE.ts +17 -0
- package/corpus/templates/plan/app/i18n/en-US.ts +17 -0
- package/corpus/templates/plan/app/i18n/es-ES.ts +17 -0
- package/corpus/templates/plan/app/i18n/fr-FR.ts +17 -0
- package/corpus/templates/plan/app/i18n/hi-IN.ts +17 -0
- package/corpus/templates/plan/app/i18n/ja-JP.ts +17 -0
- package/corpus/templates/plan/app/i18n/ko-KR.ts +17 -0
- package/corpus/templates/plan/app/i18n/pt-BR.ts +17 -0
- package/corpus/templates/plan/app/i18n/zh-CN.ts +17 -0
- package/corpus/templates/plan/app/pages/PlanChatPage.tsx +12 -13
- package/corpus/templates/slides/app/i18n/ar-SA.ts +11 -0
- package/corpus/templates/slides/app/i18n/de-DE.ts +11 -0
- package/corpus/templates/slides/app/i18n/en-US.ts +11 -0
- package/corpus/templates/slides/app/i18n/es-ES.ts +11 -0
- package/corpus/templates/slides/app/i18n/fr-FR.ts +11 -0
- package/corpus/templates/slides/app/i18n/hi-IN.ts +11 -0
- package/corpus/templates/slides/app/i18n/ja-JP.ts +11 -0
- package/corpus/templates/slides/app/i18n/ko-KR.ts +11 -0
- package/corpus/templates/slides/app/i18n/pt-BR.ts +11 -0
- package/corpus/templates/slides/app/i18n/zh-CN.ts +11 -0
- package/corpus/templates/slides/app/pages/DesignSystems.tsx +10 -9
- package/corpus/templates/slides/app/pages/NotFound.tsx +4 -2
- package/corpus/templates/videos/app/i18n/ar-SA.ts +14 -0
- package/corpus/templates/videos/app/i18n/de-DE.ts +14 -0
- package/corpus/templates/videos/app/i18n/en-US.ts +14 -0
- package/corpus/templates/videos/app/i18n/es-ES.ts +14 -0
- package/corpus/templates/videos/app/i18n/fr-FR.ts +14 -0
- package/corpus/templates/videos/app/i18n/hi-IN.ts +14 -0
- package/corpus/templates/videos/app/i18n/ja-JP.ts +14 -0
- package/corpus/templates/videos/app/i18n/ko-KR.ts +14 -0
- package/corpus/templates/videos/app/i18n/pt-BR.ts +14 -0
- package/corpus/templates/videos/app/i18n/zh-CN.ts +14 -0
- package/corpus/templates/videos/app/pages/DesignSystems.tsx +10 -9
- package/corpus/templates/videos/app/pages/NewComposition.tsx +9 -9
- package/corpus/templates/videos/app/pages/NotFound.tsx +4 -2
- package/dist/agent/run-store.d.ts +13 -0
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +13 -0
- package/dist/agent/run-store.js.map +1 -1
- package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
- package/dist/client/components/CodeRequiredDialog.js +12 -9
- package/dist/client/components/CodeRequiredDialog.js.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.js +4 -2
- package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
- package/dist/client/extensions/ExtensionEditor.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionEditor.js +22 -12
- package/dist/client/extensions/ExtensionEditor.js.map +1 -1
- package/dist/client/extensions/ExtensionSlot.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionSlot.js +9 -7
- package/dist/client/extensions/ExtensionSlot.js.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsListPage.js +28 -15
- package/dist/client/extensions/ExtensionsListPage.js.map +1 -1
- package/dist/client/i18n.d.ts +1 -1
- package/dist/client/i18n.d.ts.map +1 -1
- package/dist/client/i18n.js +68 -2
- package/dist/client/i18n.js.map +1 -1
- package/dist/client/integrations/IntegrationCard.d.ts.map +1 -1
- package/dist/client/integrations/IntegrationCard.js +8 -4
- package/dist/client/integrations/IntegrationCard.js.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.js +15 -8
- package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
- package/dist/client/observability/ObservabilityDashboard.d.ts.map +1 -1
- package/dist/client/observability/ObservabilityDashboard.js +40 -17
- package/dist/client/observability/ObservabilityDashboard.js.map +1 -1
- package/dist/client/org/RequireActiveOrg.d.ts.map +1 -1
- package/dist/client/org/RequireActiveOrg.js +14 -8
- package/dist/client/org/RequireActiveOrg.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +21 -14
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/progress/RunsTray.d.ts.map +1 -1
- package/dist/client/progress/RunsTray.js +49 -30
- package/dist/client/progress/RunsTray.js.map +1 -1
- package/dist/extensions/routes.d.ts.map +1 -1
- package/dist/extensions/routes.js +38 -24
- package/dist/extensions/routes.js.map +1 -1
- package/dist/templates/default/app/i18n/ar-SA.ts +356 -0
- package/dist/templates/default/app/i18n/de-DE.ts +332 -0
- package/dist/templates/default/app/i18n/en-US.ts +303 -0
- package/dist/templates/default/app/i18n/es-ES.ts +339 -0
- package/dist/templates/default/app/i18n/fr-FR.ts +339 -0
- package/dist/templates/default/app/i18n/hi-IN.ts +332 -0
- package/dist/templates/default/app/i18n/index.ts +18 -0
- package/dist/templates/default/app/i18n/ja-JP.ts +326 -0
- package/dist/templates/default/app/i18n/ko-KR.ts +326 -0
- package/dist/templates/default/app/i18n/pt-BR.ts +339 -0
- package/dist/templates/default/app/i18n/zh-CN.ts +324 -0
- package/dist/templates/default/app/root.tsx +109 -6
- package/dist/templates/workspace-core/.agents/skills/extensions/references/api.md +34 -12
- package/docs/content/extensions.md +16 -0
- package/docs/content/locales/ar-SA/a2a-protocol.md +392 -0
- package/docs/content/locales/ar-SA/actions.md +583 -0
- package/docs/content/locales/ar-SA/agent-mentions.md +164 -0
- package/docs/content/locales/ar-SA/agent-surfaces.md +397 -0
- package/docs/content/locales/ar-SA/agent-teams.md +171 -0
- package/docs/content/locales/ar-SA/agent-web-surfaces.md +161 -0
- package/docs/content/locales/ar-SA/audit-log.md +111 -0
- package/docs/content/locales/ar-SA/authentication.md +332 -0
- package/docs/content/locales/ar-SA/automations.md +268 -0
- package/docs/content/locales/ar-SA/blueprint-installer.md +83 -0
- package/docs/content/locales/ar-SA/cli-adapters.md +129 -0
- package/docs/content/locales/ar-SA/client.md +398 -0
- package/docs/content/locales/ar-SA/cloneable-saas.md +114 -0
- package/docs/content/locales/ar-SA/code-agents-ui.md +436 -0
- package/docs/content/locales/ar-SA/components.md +368 -0
- package/docs/content/locales/ar-SA/context-awareness.md +373 -0
- package/docs/content/locales/ar-SA/creating-templates.md +411 -0
- package/docs/content/locales/ar-SA/cross-app-sso.md +185 -0
- package/docs/content/locales/ar-SA/database.md +183 -0
- package/docs/content/locales/ar-SA/deployment.md +349 -0
- package/docs/content/locales/ar-SA/dispatch.md +146 -0
- package/docs/content/locales/ar-SA/drop-in-agent.md +260 -0
- package/docs/content/locales/ar-SA/durable-resume.md +65 -0
- package/docs/content/locales/ar-SA/embedding-sdk.md +597 -0
- package/docs/content/locales/ar-SA/evals.md +155 -0
- package/docs/content/locales/ar-SA/extensions.md +360 -0
- package/docs/content/locales/ar-SA/external-agents.md +619 -0
- package/docs/content/locales/ar-SA/faq.md +142 -0
- package/docs/content/locales/ar-SA/file-uploads.md +122 -0
- package/docs/content/locales/ar-SA/frames.md +153 -0
- package/docs/content/locales/ar-SA/getting-started.md +199 -0
- package/docs/content/locales/ar-SA/harness-agents.md +349 -0
- package/docs/content/locales/ar-SA/human-approval.md +86 -0
- package/docs/content/locales/ar-SA/internationalization.md +68 -25
- package/docs/content/locales/ar-SA/key-concepts.md +312 -0
- package/docs/content/locales/ar-SA/local-file-mode.md +433 -0
- package/docs/content/locales/ar-SA/mcp-apps.md +147 -0
- package/docs/content/locales/ar-SA/mcp-clients.md +330 -0
- package/docs/content/locales/ar-SA/mcp-protocol.md +279 -0
- package/docs/content/locales/ar-SA/messaging.md +461 -0
- package/docs/content/locales/ar-SA/migration-workbench.md +33 -0
- package/docs/content/locales/ar-SA/multi-app-workspace.md +312 -0
- package/docs/content/locales/ar-SA/multi-tenancy.md +52 -0
- package/docs/content/locales/ar-SA/native-chat-ui.md +321 -0
- package/docs/content/locales/ar-SA/notifications.md +231 -0
- package/docs/content/locales/ar-SA/observability.md +294 -0
- package/docs/content/locales/ar-SA/observational-memory.md +77 -0
- package/docs/content/locales/ar-SA/onboarding.md +216 -0
- package/docs/content/locales/ar-SA/plan-plugin.md +200 -0
- package/docs/content/locales/ar-SA/pr-visual-recap.md +384 -0
- package/docs/content/locales/ar-SA/processors.md +106 -0
- package/docs/content/locales/ar-SA/progress.md +199 -0
- package/docs/content/locales/ar-SA/pure-agent-apps.md +39 -0
- package/docs/content/locales/ar-SA/real-time-collaboration.md +676 -0
- package/docs/content/locales/ar-SA/recurring-jobs.md +142 -0
- package/docs/content/locales/ar-SA/routing.md +79 -0
- package/docs/content/locales/ar-SA/sandbox-adapters.md +227 -0
- package/docs/content/locales/ar-SA/security.md +330 -0
- package/docs/content/locales/ar-SA/server.md +253 -0
- package/docs/content/locales/ar-SA/sharing.md +219 -0
- package/docs/content/locales/ar-SA/skills-guide.md +281 -0
- package/docs/content/locales/ar-SA/template-analytics.md +259 -0
- package/docs/content/locales/ar-SA/template-assets.md +303 -0
- package/docs/content/locales/ar-SA/template-brain.md +324 -0
- package/docs/content/locales/ar-SA/template-calendar.md +194 -0
- package/docs/content/locales/ar-SA/template-chat.md +129 -0
- package/docs/content/locales/ar-SA/template-clips.md +368 -0
- package/docs/content/locales/ar-SA/template-content.md +402 -0
- package/docs/content/locales/ar-SA/template-design.md +173 -0
- package/docs/content/locales/ar-SA/template-dispatch.md +220 -0
- package/docs/content/locales/ar-SA/template-forms.md +178 -0
- package/docs/content/locales/ar-SA/template-mail.md +239 -0
- package/docs/content/locales/ar-SA/template-plan.md +815 -0
- package/docs/content/locales/ar-SA/template-slides.md +293 -0
- package/docs/content/locales/ar-SA/template-videos.md +222 -0
- package/docs/content/locales/ar-SA/tracking.md +236 -0
- package/docs/content/locales/ar-SA/using-your-agent.md +71 -0
- package/docs/content/locales/ar-SA/voice-input.md +81 -0
- package/docs/content/locales/ar-SA/what-is-agent-native.md +202 -0
- package/docs/content/locales/ar-SA/workspace-connections.md +321 -0
- package/docs/content/locales/ar-SA/workspace-management.md +175 -0
- package/docs/content/locales/ar-SA/workspace.md +323 -0
- package/docs/content/locales/ar-SA/writing-agent-instructions.md +173 -0
- package/docs/content/locales/de-DE/a2a-protocol.md +392 -0
- package/docs/content/locales/de-DE/actions.md +583 -0
- package/docs/content/locales/de-DE/agent-mentions.md +164 -0
- package/docs/content/locales/de-DE/agent-surfaces.md +397 -0
- package/docs/content/locales/de-DE/agent-teams.md +171 -0
- package/docs/content/locales/de-DE/agent-web-surfaces.md +161 -0
- package/docs/content/locales/de-DE/audit-log.md +111 -0
- package/docs/content/locales/de-DE/authentication.md +332 -0
- package/docs/content/locales/de-DE/automations.md +268 -0
- package/docs/content/locales/de-DE/blueprint-installer.md +83 -0
- package/docs/content/locales/de-DE/cli-adapters.md +129 -0
- package/docs/content/locales/de-DE/client.md +398 -0
- package/docs/content/locales/de-DE/cloneable-saas.md +114 -0
- package/docs/content/locales/de-DE/code-agents-ui.md +436 -0
- package/docs/content/locales/de-DE/components.md +368 -0
- package/docs/content/locales/de-DE/context-awareness.md +373 -0
- package/docs/content/locales/de-DE/creating-templates.md +411 -0
- package/docs/content/locales/de-DE/cross-app-sso.md +185 -0
- package/docs/content/locales/de-DE/database.md +183 -0
- package/docs/content/locales/de-DE/deployment.md +349 -0
- package/docs/content/locales/de-DE/dispatch.md +146 -0
- package/docs/content/locales/de-DE/drop-in-agent.md +260 -0
- package/docs/content/locales/de-DE/durable-resume.md +65 -0
- package/docs/content/locales/de-DE/embedding-sdk.md +597 -0
- package/docs/content/locales/de-DE/evals.md +155 -0
- package/docs/content/locales/de-DE/extensions.md +360 -0
- package/docs/content/locales/de-DE/external-agents.md +619 -0
- package/docs/content/locales/de-DE/faq.md +142 -0
- package/docs/content/locales/de-DE/file-uploads.md +122 -0
- package/docs/content/locales/de-DE/frames.md +153 -0
- package/docs/content/locales/de-DE/getting-started.md +199 -0
- package/docs/content/locales/de-DE/harness-agents.md +349 -0
- package/docs/content/locales/de-DE/human-approval.md +86 -0
- package/docs/content/locales/de-DE/internationalization.md +65 -22
- package/docs/content/locales/de-DE/key-concepts.md +312 -0
- package/docs/content/locales/de-DE/local-file-mode.md +433 -0
- package/docs/content/locales/de-DE/mcp-apps.md +147 -0
- package/docs/content/locales/de-DE/mcp-clients.md +330 -0
- package/docs/content/locales/de-DE/mcp-protocol.md +279 -0
- package/docs/content/locales/de-DE/messaging.md +461 -0
- package/docs/content/locales/de-DE/migration-workbench.md +33 -0
- package/docs/content/locales/de-DE/multi-app-workspace.md +312 -0
- package/docs/content/locales/de-DE/multi-tenancy.md +52 -0
- package/docs/content/locales/de-DE/native-chat-ui.md +321 -0
- package/docs/content/locales/de-DE/notifications.md +231 -0
- package/docs/content/locales/de-DE/observability.md +294 -0
- package/docs/content/locales/de-DE/observational-memory.md +77 -0
- package/docs/content/locales/de-DE/onboarding.md +216 -0
- package/docs/content/locales/de-DE/plan-plugin.md +200 -0
- package/docs/content/locales/de-DE/pr-visual-recap.md +384 -0
- package/docs/content/locales/de-DE/processors.md +106 -0
- package/docs/content/locales/de-DE/progress.md +199 -0
- package/docs/content/locales/de-DE/pure-agent-apps.md +39 -0
- package/docs/content/locales/de-DE/real-time-collaboration.md +676 -0
- package/docs/content/locales/de-DE/recurring-jobs.md +142 -0
- package/docs/content/locales/de-DE/routing.md +79 -0
- package/docs/content/locales/de-DE/sandbox-adapters.md +227 -0
- package/docs/content/locales/de-DE/security.md +330 -0
- package/docs/content/locales/de-DE/server.md +253 -0
- package/docs/content/locales/de-DE/sharing.md +219 -0
- package/docs/content/locales/de-DE/skills-guide.md +281 -0
- package/docs/content/locales/de-DE/template-analytics.md +259 -0
- package/docs/content/locales/de-DE/template-assets.md +303 -0
- package/docs/content/locales/de-DE/template-brain.md +324 -0
- package/docs/content/locales/de-DE/template-calendar.md +194 -0
- package/docs/content/locales/de-DE/template-chat.md +129 -0
- package/docs/content/locales/de-DE/template-clips.md +368 -0
- package/docs/content/locales/de-DE/template-content.md +402 -0
- package/docs/content/locales/de-DE/template-design.md +173 -0
- package/docs/content/locales/de-DE/template-dispatch.md +220 -0
- package/docs/content/locales/de-DE/template-forms.md +178 -0
- package/docs/content/locales/de-DE/template-mail.md +239 -0
- package/docs/content/locales/de-DE/template-plan.md +814 -0
- package/docs/content/locales/de-DE/template-slides.md +293 -0
- package/docs/content/locales/de-DE/template-videos.md +222 -0
- package/docs/content/locales/de-DE/tracking.md +236 -0
- package/docs/content/locales/de-DE/using-your-agent.md +71 -0
- package/docs/content/locales/de-DE/voice-input.md +81 -0
- package/docs/content/locales/de-DE/what-is-agent-native.md +202 -0
- package/docs/content/locales/de-DE/workspace-connections.md +321 -0
- package/docs/content/locales/de-DE/workspace-management.md +175 -0
- package/docs/content/locales/de-DE/workspace.md +323 -0
- package/docs/content/locales/de-DE/writing-agent-instructions.md +173 -0
- package/docs/content/locales/es-ES/a2a-protocol.md +392 -0
- package/docs/content/locales/es-ES/actions.md +583 -0
- package/docs/content/locales/es-ES/agent-mentions.md +164 -0
- package/docs/content/locales/es-ES/agent-surfaces.md +397 -0
- package/docs/content/locales/es-ES/agent-teams.md +171 -0
- package/docs/content/locales/es-ES/agent-web-surfaces.md +161 -0
- package/docs/content/locales/es-ES/audit-log.md +111 -0
- package/docs/content/locales/es-ES/authentication.md +332 -0
- package/docs/content/locales/es-ES/automations.md +268 -0
- package/docs/content/locales/es-ES/blueprint-installer.md +83 -0
- package/docs/content/locales/es-ES/cli-adapters.md +129 -0
- package/docs/content/locales/es-ES/client.md +398 -0
- package/docs/content/locales/es-ES/cloneable-saas.md +114 -0
- package/docs/content/locales/es-ES/code-agents-ui.md +436 -0
- package/docs/content/locales/es-ES/components.md +368 -0
- package/docs/content/locales/es-ES/context-awareness.md +373 -0
- package/docs/content/locales/es-ES/creating-templates.md +411 -0
- package/docs/content/locales/es-ES/cross-app-sso.md +185 -0
- package/docs/content/locales/es-ES/database.md +183 -0
- package/docs/content/locales/es-ES/deployment.md +349 -0
- package/docs/content/locales/es-ES/dispatch.md +146 -0
- package/docs/content/locales/es-ES/drop-in-agent.md +260 -0
- package/docs/content/locales/es-ES/durable-resume.md +65 -0
- package/docs/content/locales/es-ES/embedding-sdk.md +597 -0
- package/docs/content/locales/es-ES/evals.md +155 -0
- package/docs/content/locales/es-ES/extensions.md +360 -0
- package/docs/content/locales/es-ES/external-agents.md +619 -0
- package/docs/content/locales/es-ES/faq.md +142 -0
- package/docs/content/locales/es-ES/file-uploads.md +122 -0
- package/docs/content/locales/es-ES/frames.md +153 -0
- package/docs/content/locales/es-ES/getting-started.md +199 -0
- package/docs/content/locales/es-ES/harness-agents.md +349 -0
- package/docs/content/locales/es-ES/human-approval.md +86 -0
- package/docs/content/locales/es-ES/internationalization.md +67 -24
- package/docs/content/locales/es-ES/key-concepts.md +312 -0
- package/docs/content/locales/es-ES/local-file-mode.md +433 -0
- package/docs/content/locales/es-ES/mcp-apps.md +147 -0
- package/docs/content/locales/es-ES/mcp-clients.md +330 -0
- package/docs/content/locales/es-ES/mcp-protocol.md +279 -0
- package/docs/content/locales/es-ES/messaging.md +461 -0
- package/docs/content/locales/es-ES/migration-workbench.md +33 -0
- package/docs/content/locales/es-ES/multi-app-workspace.md +312 -0
- package/docs/content/locales/es-ES/multi-tenancy.md +52 -0
- package/docs/content/locales/es-ES/native-chat-ui.md +321 -0
- package/docs/content/locales/es-ES/notifications.md +231 -0
- package/docs/content/locales/es-ES/observability.md +294 -0
- package/docs/content/locales/es-ES/observational-memory.md +77 -0
- package/docs/content/locales/es-ES/onboarding.md +216 -0
- package/docs/content/locales/es-ES/plan-plugin.md +200 -0
- package/docs/content/locales/es-ES/pr-visual-recap.md +384 -0
- package/docs/content/locales/es-ES/processors.md +106 -0
- package/docs/content/locales/es-ES/progress.md +199 -0
- package/docs/content/locales/es-ES/pure-agent-apps.md +39 -0
- package/docs/content/locales/es-ES/real-time-collaboration.md +676 -0
- package/docs/content/locales/es-ES/recurring-jobs.md +142 -0
- package/docs/content/locales/es-ES/routing.md +79 -0
- package/docs/content/locales/es-ES/sandbox-adapters.md +227 -0
- package/docs/content/locales/es-ES/security.md +330 -0
- package/docs/content/locales/es-ES/server.md +253 -0
- package/docs/content/locales/es-ES/sharing.md +219 -0
- package/docs/content/locales/es-ES/skills-guide.md +281 -0
- package/docs/content/locales/es-ES/template-analytics.md +259 -0
- package/docs/content/locales/es-ES/template-assets.md +303 -0
- package/docs/content/locales/es-ES/template-brain.md +324 -0
- package/docs/content/locales/es-ES/template-calendar.md +194 -0
- package/docs/content/locales/es-ES/template-chat.md +129 -0
- package/docs/content/locales/es-ES/template-clips.md +368 -0
- package/docs/content/locales/es-ES/template-content.md +402 -0
- package/docs/content/locales/es-ES/template-design.md +173 -0
- package/docs/content/locales/es-ES/template-dispatch.md +220 -0
- package/docs/content/locales/es-ES/template-forms.md +178 -0
- package/docs/content/locales/es-ES/template-mail.md +239 -0
- package/docs/content/locales/es-ES/template-plan.md +815 -0
- package/docs/content/locales/es-ES/template-slides.md +293 -0
- package/docs/content/locales/es-ES/template-videos.md +222 -0
- package/docs/content/locales/es-ES/tracking.md +236 -0
- package/docs/content/locales/es-ES/using-your-agent.md +71 -0
- package/docs/content/locales/es-ES/voice-input.md +81 -0
- package/docs/content/locales/es-ES/what-is-agent-native.md +202 -0
- package/docs/content/locales/es-ES/workspace-connections.md +321 -0
- package/docs/content/locales/es-ES/workspace-management.md +175 -0
- package/docs/content/locales/es-ES/workspace.md +323 -0
- package/docs/content/locales/es-ES/writing-agent-instructions.md +173 -0
- package/docs/content/locales/fr-FR/a2a-protocol.md +392 -0
- package/docs/content/locales/fr-FR/actions.md +583 -0
- package/docs/content/locales/fr-FR/agent-mentions.md +164 -0
- package/docs/content/locales/fr-FR/agent-surfaces.md +397 -0
- package/docs/content/locales/fr-FR/agent-teams.md +171 -0
- package/docs/content/locales/fr-FR/agent-web-surfaces.md +161 -0
- package/docs/content/locales/fr-FR/audit-log.md +111 -0
- package/docs/content/locales/fr-FR/authentication.md +332 -0
- package/docs/content/locales/fr-FR/automations.md +268 -0
- package/docs/content/locales/fr-FR/blueprint-installer.md +83 -0
- package/docs/content/locales/fr-FR/cli-adapters.md +129 -0
- package/docs/content/locales/fr-FR/client.md +398 -0
- package/docs/content/locales/fr-FR/cloneable-saas.md +114 -0
- package/docs/content/locales/fr-FR/code-agents-ui.md +436 -0
- package/docs/content/locales/fr-FR/components.md +368 -0
- package/docs/content/locales/fr-FR/context-awareness.md +373 -0
- package/docs/content/locales/fr-FR/creating-templates.md +411 -0
- package/docs/content/locales/fr-FR/cross-app-sso.md +185 -0
- package/docs/content/locales/fr-FR/database.md +183 -0
- package/docs/content/locales/fr-FR/deployment.md +349 -0
- package/docs/content/locales/fr-FR/dispatch.md +146 -0
- package/docs/content/locales/fr-FR/drop-in-agent.md +260 -0
- package/docs/content/locales/fr-FR/durable-resume.md +65 -0
- package/docs/content/locales/fr-FR/embedding-sdk.md +597 -0
- package/docs/content/locales/fr-FR/evals.md +155 -0
- package/docs/content/locales/fr-FR/extensions.md +360 -0
- package/docs/content/locales/fr-FR/external-agents.md +619 -0
- package/docs/content/locales/fr-FR/faq.md +142 -0
- package/docs/content/locales/fr-FR/file-uploads.md +122 -0
- package/docs/content/locales/fr-FR/frames.md +153 -0
- package/docs/content/locales/fr-FR/getting-started.md +199 -0
- package/docs/content/locales/fr-FR/harness-agents.md +349 -0
- package/docs/content/locales/fr-FR/human-approval.md +86 -0
- package/docs/content/locales/fr-FR/internationalization.md +67 -24
- package/docs/content/locales/fr-FR/key-concepts.md +312 -0
- package/docs/content/locales/fr-FR/local-file-mode.md +433 -0
- package/docs/content/locales/fr-FR/mcp-apps.md +147 -0
- package/docs/content/locales/fr-FR/mcp-clients.md +330 -0
- package/docs/content/locales/fr-FR/mcp-protocol.md +279 -0
- package/docs/content/locales/fr-FR/messaging.md +461 -0
- package/docs/content/locales/fr-FR/migration-workbench.md +33 -0
- package/docs/content/locales/fr-FR/multi-app-workspace.md +312 -0
- package/docs/content/locales/fr-FR/multi-tenancy.md +52 -0
- package/docs/content/locales/fr-FR/native-chat-ui.md +321 -0
- package/docs/content/locales/fr-FR/notifications.md +231 -0
- package/docs/content/locales/fr-FR/observability.md +294 -0
- package/docs/content/locales/fr-FR/observational-memory.md +77 -0
- package/docs/content/locales/fr-FR/onboarding.md +216 -0
- package/docs/content/locales/fr-FR/plan-plugin.md +200 -0
- package/docs/content/locales/fr-FR/pr-visual-recap.md +384 -0
- package/docs/content/locales/fr-FR/processors.md +106 -0
- package/docs/content/locales/fr-FR/progress.md +199 -0
- package/docs/content/locales/fr-FR/pure-agent-apps.md +39 -0
- package/docs/content/locales/fr-FR/real-time-collaboration.md +676 -0
- package/docs/content/locales/fr-FR/recurring-jobs.md +142 -0
- package/docs/content/locales/fr-FR/routing.md +79 -0
- package/docs/content/locales/fr-FR/sandbox-adapters.md +227 -0
- package/docs/content/locales/fr-FR/security.md +330 -0
- package/docs/content/locales/fr-FR/server.md +253 -0
- package/docs/content/locales/fr-FR/sharing.md +219 -0
- package/docs/content/locales/fr-FR/skills-guide.md +281 -0
- package/docs/content/locales/fr-FR/template-analytics.md +259 -0
- package/docs/content/locales/fr-FR/template-assets.md +303 -0
- package/docs/content/locales/fr-FR/template-brain.md +324 -0
- package/docs/content/locales/fr-FR/template-calendar.md +194 -0
- package/docs/content/locales/fr-FR/template-chat.md +129 -0
- package/docs/content/locales/fr-FR/template-clips.md +368 -0
- package/docs/content/locales/fr-FR/template-content.md +402 -0
- package/docs/content/locales/fr-FR/template-design.md +173 -0
- package/docs/content/locales/fr-FR/template-dispatch.md +220 -0
- package/docs/content/locales/fr-FR/template-forms.md +178 -0
- package/docs/content/locales/fr-FR/template-mail.md +239 -0
- package/docs/content/locales/fr-FR/template-plan.md +815 -0
- package/docs/content/locales/fr-FR/template-slides.md +293 -0
- package/docs/content/locales/fr-FR/template-videos.md +222 -0
- package/docs/content/locales/fr-FR/tracking.md +236 -0
- package/docs/content/locales/fr-FR/using-your-agent.md +71 -0
- package/docs/content/locales/fr-FR/voice-input.md +81 -0
- package/docs/content/locales/fr-FR/what-is-agent-native.md +202 -0
- package/docs/content/locales/fr-FR/workspace-connections.md +321 -0
- package/docs/content/locales/fr-FR/workspace-management.md +175 -0
- package/docs/content/locales/fr-FR/workspace.md +323 -0
- package/docs/content/locales/fr-FR/writing-agent-instructions.md +173 -0
- package/docs/content/locales/hi-IN/a2a-protocol.md +392 -0
- package/docs/content/locales/hi-IN/actions.md +583 -0
- package/docs/content/locales/hi-IN/agent-mentions.md +164 -0
- package/docs/content/locales/hi-IN/agent-surfaces.md +397 -0
- package/docs/content/locales/hi-IN/agent-teams.md +171 -0
- package/docs/content/locales/hi-IN/agent-web-surfaces.md +161 -0
- package/docs/content/locales/hi-IN/audit-log.md +111 -0
- package/docs/content/locales/hi-IN/authentication.md +332 -0
- package/docs/content/locales/hi-IN/automations.md +268 -0
- package/docs/content/locales/hi-IN/blueprint-installer.md +83 -0
- package/docs/content/locales/hi-IN/cli-adapters.md +129 -0
- package/docs/content/locales/hi-IN/client.md +398 -0
- package/docs/content/locales/hi-IN/cloneable-saas.md +114 -0
- package/docs/content/locales/hi-IN/code-agents-ui.md +436 -0
- package/docs/content/locales/hi-IN/components.md +368 -0
- package/docs/content/locales/hi-IN/context-awareness.md +373 -0
- package/docs/content/locales/hi-IN/creating-templates.md +411 -0
- package/docs/content/locales/hi-IN/cross-app-sso.md +185 -0
- package/docs/content/locales/hi-IN/database.md +183 -0
- package/docs/content/locales/hi-IN/deployment.md +349 -0
- package/docs/content/locales/hi-IN/dispatch.md +146 -0
- package/docs/content/locales/hi-IN/drop-in-agent.md +260 -0
- package/docs/content/locales/hi-IN/durable-resume.md +65 -0
- package/docs/content/locales/hi-IN/embedding-sdk.md +597 -0
- package/docs/content/locales/hi-IN/evals.md +155 -0
- package/docs/content/locales/hi-IN/extensions.md +360 -0
- package/docs/content/locales/hi-IN/external-agents.md +619 -0
- package/docs/content/locales/hi-IN/faq.md +142 -0
- package/docs/content/locales/hi-IN/file-uploads.md +122 -0
- package/docs/content/locales/hi-IN/frames.md +153 -0
- package/docs/content/locales/hi-IN/getting-started.md +199 -0
- package/docs/content/locales/hi-IN/harness-agents.md +349 -0
- package/docs/content/locales/hi-IN/human-approval.md +86 -0
- package/docs/content/locales/hi-IN/internationalization.md +70 -27
- package/docs/content/locales/hi-IN/key-concepts.md +312 -0
- package/docs/content/locales/hi-IN/local-file-mode.md +433 -0
- package/docs/content/locales/hi-IN/mcp-apps.md +147 -0
- package/docs/content/locales/hi-IN/mcp-clients.md +330 -0
- package/docs/content/locales/hi-IN/mcp-protocol.md +279 -0
- package/docs/content/locales/hi-IN/messaging.md +461 -0
- package/docs/content/locales/hi-IN/migration-workbench.md +33 -0
- package/docs/content/locales/hi-IN/multi-app-workspace.md +312 -0
- package/docs/content/locales/hi-IN/multi-tenancy.md +52 -0
- package/docs/content/locales/hi-IN/native-chat-ui.md +321 -0
- package/docs/content/locales/hi-IN/notifications.md +231 -0
- package/docs/content/locales/hi-IN/observability.md +294 -0
- package/docs/content/locales/hi-IN/observational-memory.md +77 -0
- package/docs/content/locales/hi-IN/onboarding.md +216 -0
- package/docs/content/locales/hi-IN/plan-plugin.md +200 -0
- package/docs/content/locales/hi-IN/pr-visual-recap.md +384 -0
- package/docs/content/locales/hi-IN/processors.md +106 -0
- package/docs/content/locales/hi-IN/progress.md +199 -0
- package/docs/content/locales/hi-IN/pure-agent-apps.md +39 -0
- package/docs/content/locales/hi-IN/real-time-collaboration.md +676 -0
- package/docs/content/locales/hi-IN/recurring-jobs.md +142 -0
- package/docs/content/locales/hi-IN/routing.md +79 -0
- package/docs/content/locales/hi-IN/sandbox-adapters.md +227 -0
- package/docs/content/locales/hi-IN/security.md +330 -0
- package/docs/content/locales/hi-IN/server.md +253 -0
- package/docs/content/locales/hi-IN/sharing.md +219 -0
- package/docs/content/locales/hi-IN/skills-guide.md +281 -0
- package/docs/content/locales/hi-IN/template-analytics.md +259 -0
- package/docs/content/locales/hi-IN/template-assets.md +303 -0
- package/docs/content/locales/hi-IN/template-brain.md +324 -0
- package/docs/content/locales/hi-IN/template-calendar.md +194 -0
- package/docs/content/locales/hi-IN/template-chat.md +129 -0
- package/docs/content/locales/hi-IN/template-clips.md +368 -0
- package/docs/content/locales/hi-IN/template-content.md +402 -0
- package/docs/content/locales/hi-IN/template-design.md +173 -0
- package/docs/content/locales/hi-IN/template-dispatch.md +220 -0
- package/docs/content/locales/hi-IN/template-forms.md +178 -0
- package/docs/content/locales/hi-IN/template-mail.md +239 -0
- package/docs/content/locales/hi-IN/template-plan.md +815 -0
- package/docs/content/locales/hi-IN/template-slides.md +293 -0
- package/docs/content/locales/hi-IN/template-videos.md +222 -0
- package/docs/content/locales/hi-IN/tracking.md +236 -0
- package/docs/content/locales/hi-IN/using-your-agent.md +71 -0
- package/docs/content/locales/hi-IN/voice-input.md +81 -0
- package/docs/content/locales/hi-IN/what-is-agent-native.md +202 -0
- package/docs/content/locales/hi-IN/workspace-connections.md +321 -0
- package/docs/content/locales/hi-IN/workspace-management.md +175 -0
- package/docs/content/locales/hi-IN/workspace.md +323 -0
- package/docs/content/locales/hi-IN/writing-agent-instructions.md +173 -0
- package/docs/content/locales/ja-JP/a2a-protocol.md +392 -0
- package/docs/content/locales/ja-JP/actions.md +583 -0
- package/docs/content/locales/ja-JP/agent-mentions.md +164 -0
- package/docs/content/locales/ja-JP/agent-surfaces.md +397 -0
- package/docs/content/locales/ja-JP/agent-teams.md +171 -0
- package/docs/content/locales/ja-JP/agent-web-surfaces.md +161 -0
- package/docs/content/locales/ja-JP/audit-log.md +111 -0
- package/docs/content/locales/ja-JP/authentication.md +332 -0
- package/docs/content/locales/ja-JP/automations.md +268 -0
- package/docs/content/locales/ja-JP/blueprint-installer.md +83 -0
- package/docs/content/locales/ja-JP/cli-adapters.md +129 -0
- package/docs/content/locales/ja-JP/client.md +398 -0
- package/docs/content/locales/ja-JP/cloneable-saas.md +114 -0
- package/docs/content/locales/ja-JP/code-agents-ui.md +436 -0
- package/docs/content/locales/ja-JP/components.md +368 -0
- package/docs/content/locales/ja-JP/context-awareness.md +373 -0
- package/docs/content/locales/ja-JP/creating-templates.md +411 -0
- package/docs/content/locales/ja-JP/cross-app-sso.md +185 -0
- package/docs/content/locales/ja-JP/database.md +183 -0
- package/docs/content/locales/ja-JP/deployment.md +349 -0
- package/docs/content/locales/ja-JP/dispatch.md +146 -0
- package/docs/content/locales/ja-JP/drop-in-agent.md +260 -0
- package/docs/content/locales/ja-JP/durable-resume.md +65 -0
- package/docs/content/locales/ja-JP/embedding-sdk.md +597 -0
- package/docs/content/locales/ja-JP/evals.md +155 -0
- package/docs/content/locales/ja-JP/extensions.md +360 -0
- package/docs/content/locales/ja-JP/external-agents.md +619 -0
- package/docs/content/locales/ja-JP/faq.md +142 -0
- package/docs/content/locales/ja-JP/file-uploads.md +122 -0
- package/docs/content/locales/ja-JP/frames.md +153 -0
- package/docs/content/locales/ja-JP/getting-started.md +199 -0
- package/docs/content/locales/ja-JP/harness-agents.md +349 -0
- package/docs/content/locales/ja-JP/human-approval.md +86 -0
- package/docs/content/locales/ja-JP/internationalization.md +54 -23
- package/docs/content/locales/ja-JP/key-concepts.md +312 -0
- package/docs/content/locales/ja-JP/local-file-mode.md +433 -0
- package/docs/content/locales/ja-JP/mcp-apps.md +147 -0
- package/docs/content/locales/ja-JP/mcp-clients.md +330 -0
- package/docs/content/locales/ja-JP/mcp-protocol.md +279 -0
- package/docs/content/locales/ja-JP/messaging.md +461 -0
- package/docs/content/locales/ja-JP/migration-workbench.md +33 -0
- package/docs/content/locales/ja-JP/multi-app-workspace.md +312 -0
- package/docs/content/locales/ja-JP/multi-tenancy.md +52 -0
- package/docs/content/locales/ja-JP/native-chat-ui.md +321 -0
- package/docs/content/locales/ja-JP/notifications.md +231 -0
- package/docs/content/locales/ja-JP/observability.md +294 -0
- package/docs/content/locales/ja-JP/observational-memory.md +77 -0
- package/docs/content/locales/ja-JP/onboarding.md +216 -0
- package/docs/content/locales/ja-JP/plan-plugin.md +200 -0
- package/docs/content/locales/ja-JP/pr-visual-recap.md +384 -0
- package/docs/content/locales/ja-JP/processors.md +106 -0
- package/docs/content/locales/ja-JP/progress.md +199 -0
- package/docs/content/locales/ja-JP/pure-agent-apps.md +39 -0
- package/docs/content/locales/ja-JP/real-time-collaboration.md +676 -0
- package/docs/content/locales/ja-JP/recurring-jobs.md +142 -0
- package/docs/content/locales/ja-JP/routing.md +79 -0
- package/docs/content/locales/ja-JP/sandbox-adapters.md +227 -0
- package/docs/content/locales/ja-JP/security.md +330 -0
- package/docs/content/locales/ja-JP/server.md +253 -0
- package/docs/content/locales/ja-JP/sharing.md +219 -0
- package/docs/content/locales/ja-JP/skills-guide.md +281 -0
- package/docs/content/locales/ja-JP/template-analytics.md +259 -0
- package/docs/content/locales/ja-JP/template-assets.md +303 -0
- package/docs/content/locales/ja-JP/template-brain.md +324 -0
- package/docs/content/locales/ja-JP/template-calendar.md +194 -0
- package/docs/content/locales/ja-JP/template-chat.md +129 -0
- package/docs/content/locales/ja-JP/template-clips.md +368 -0
- package/docs/content/locales/ja-JP/template-content.md +402 -0
- package/docs/content/locales/ja-JP/template-design.md +173 -0
- package/docs/content/locales/ja-JP/template-dispatch.md +220 -0
- package/docs/content/locales/ja-JP/template-forms.md +178 -0
- package/docs/content/locales/ja-JP/template-mail.md +239 -0
- package/docs/content/locales/ja-JP/template-plan.md +814 -0
- package/docs/content/locales/ja-JP/template-slides.md +293 -0
- package/docs/content/locales/ja-JP/template-videos.md +222 -0
- package/docs/content/locales/ja-JP/tracking.md +236 -0
- package/docs/content/locales/ja-JP/using-your-agent.md +71 -0
- package/docs/content/locales/ja-JP/voice-input.md +81 -0
- package/docs/content/locales/ja-JP/what-is-agent-native.md +202 -0
- package/docs/content/locales/ja-JP/workspace-connections.md +321 -0
- package/docs/content/locales/ja-JP/workspace-management.md +175 -0
- package/docs/content/locales/ja-JP/workspace.md +323 -0
- package/docs/content/locales/ja-JP/writing-agent-instructions.md +173 -0
- package/docs/content/locales/ko-KR/a2a-protocol.md +392 -0
- package/docs/content/locales/ko-KR/actions.md +583 -0
- package/docs/content/locales/ko-KR/agent-mentions.md +164 -0
- package/docs/content/locales/ko-KR/agent-surfaces.md +397 -0
- package/docs/content/locales/ko-KR/agent-teams.md +171 -0
- package/docs/content/locales/ko-KR/agent-web-surfaces.md +161 -0
- package/docs/content/locales/ko-KR/audit-log.md +111 -0
- package/docs/content/locales/ko-KR/authentication.md +332 -0
- package/docs/content/locales/ko-KR/automations.md +268 -0
- package/docs/content/locales/ko-KR/blueprint-installer.md +83 -0
- package/docs/content/locales/ko-KR/cli-adapters.md +129 -0
- package/docs/content/locales/ko-KR/client.md +398 -0
- package/docs/content/locales/ko-KR/cloneable-saas.md +114 -0
- package/docs/content/locales/ko-KR/code-agents-ui.md +436 -0
- package/docs/content/locales/ko-KR/components.md +368 -0
- package/docs/content/locales/ko-KR/context-awareness.md +373 -0
- package/docs/content/locales/ko-KR/creating-templates.md +411 -0
- package/docs/content/locales/ko-KR/cross-app-sso.md +187 -0
- package/docs/content/locales/ko-KR/database.md +183 -0
- package/docs/content/locales/ko-KR/deployment.md +349 -0
- package/docs/content/locales/ko-KR/dispatch.md +146 -0
- package/docs/content/locales/ko-KR/drop-in-agent.md +260 -0
- package/docs/content/locales/ko-KR/durable-resume.md +65 -0
- package/docs/content/locales/ko-KR/embedding-sdk.md +597 -0
- package/docs/content/locales/ko-KR/evals.md +155 -0
- package/docs/content/locales/ko-KR/extensions.md +360 -0
- package/docs/content/locales/ko-KR/external-agents.md +621 -0
- package/docs/content/locales/ko-KR/faq.md +142 -0
- package/docs/content/locales/ko-KR/file-uploads.md +122 -0
- package/docs/content/locales/ko-KR/frames.md +153 -0
- package/docs/content/locales/ko-KR/getting-started.md +199 -0
- package/docs/content/locales/ko-KR/harness-agents.md +349 -0
- package/docs/content/locales/ko-KR/human-approval.md +88 -0
- package/docs/content/locales/ko-KR/internationalization.md +66 -23
- package/docs/content/locales/ko-KR/key-concepts.md +312 -0
- package/docs/content/locales/ko-KR/local-file-mode.md +433 -0
- package/docs/content/locales/ko-KR/mcp-apps.md +147 -0
- package/docs/content/locales/ko-KR/mcp-clients.md +330 -0
- package/docs/content/locales/ko-KR/mcp-protocol.md +279 -0
- package/docs/content/locales/ko-KR/messaging.md +464 -0
- package/docs/content/locales/ko-KR/migration-workbench.md +33 -0
- package/docs/content/locales/ko-KR/multi-app-workspace.md +312 -0
- package/docs/content/locales/ko-KR/multi-tenancy.md +52 -0
- package/docs/content/locales/ko-KR/native-chat-ui.md +321 -0
- package/docs/content/locales/ko-KR/notifications.md +231 -0
- package/docs/content/locales/ko-KR/observability.md +294 -0
- package/docs/content/locales/ko-KR/observational-memory.md +77 -0
- package/docs/content/locales/ko-KR/onboarding.md +216 -0
- package/docs/content/locales/ko-KR/plan-plugin.md +200 -0
- package/docs/content/locales/ko-KR/pr-visual-recap.md +384 -0
- package/docs/content/locales/ko-KR/processors.md +106 -0
- package/docs/content/locales/ko-KR/progress.md +199 -0
- package/docs/content/locales/ko-KR/pure-agent-apps.md +39 -0
- package/docs/content/locales/ko-KR/real-time-collaboration.md +676 -0
- package/docs/content/locales/ko-KR/recurring-jobs.md +142 -0
- package/docs/content/locales/ko-KR/routing.md +79 -0
- package/docs/content/locales/ko-KR/sandbox-adapters.md +227 -0
- package/docs/content/locales/ko-KR/security.md +330 -0
- package/docs/content/locales/ko-KR/server.md +253 -0
- package/docs/content/locales/ko-KR/sharing.md +219 -0
- package/docs/content/locales/ko-KR/skills-guide.md +281 -0
- package/docs/content/locales/ko-KR/template-analytics.md +259 -0
- package/docs/content/locales/ko-KR/template-assets.md +307 -0
- package/docs/content/locales/ko-KR/template-brain.md +324 -0
- package/docs/content/locales/ko-KR/template-calendar.md +194 -0
- package/docs/content/locales/ko-KR/template-chat.md +129 -0
- package/docs/content/locales/ko-KR/template-clips.md +372 -0
- package/docs/content/locales/ko-KR/template-content.md +402 -0
- package/docs/content/locales/ko-KR/template-design.md +173 -0
- package/docs/content/locales/ko-KR/template-dispatch.md +220 -0
- package/docs/content/locales/ko-KR/template-forms.md +178 -0
- package/docs/content/locales/ko-KR/template-mail.md +239 -0
- package/docs/content/locales/ko-KR/template-plan.md +815 -0
- package/docs/content/locales/ko-KR/template-slides.md +293 -0
- package/docs/content/locales/ko-KR/template-videos.md +222 -0
- package/docs/content/locales/ko-KR/tracking.md +236 -0
- package/docs/content/locales/ko-KR/using-your-agent.md +71 -0
- package/docs/content/locales/ko-KR/voice-input.md +81 -0
- package/docs/content/locales/ko-KR/what-is-agent-native.md +202 -0
- package/docs/content/locales/ko-KR/workspace-connections.md +321 -0
- package/docs/content/locales/ko-KR/workspace-management.md +175 -0
- package/docs/content/locales/ko-KR/workspace.md +323 -0
- package/docs/content/locales/ko-KR/writing-agent-instructions.md +173 -0
- package/docs/content/locales/pt-BR/a2a-protocol.md +392 -0
- package/docs/content/locales/pt-BR/actions.md +583 -0
- package/docs/content/locales/pt-BR/agent-mentions.md +164 -0
- package/docs/content/locales/pt-BR/agent-surfaces.md +397 -0
- package/docs/content/locales/pt-BR/agent-teams.md +171 -0
- package/docs/content/locales/pt-BR/agent-web-surfaces.md +161 -0
- package/docs/content/locales/pt-BR/audit-log.md +111 -0
- package/docs/content/locales/pt-BR/authentication.md +332 -0
- package/docs/content/locales/pt-BR/automations.md +268 -0
- package/docs/content/locales/pt-BR/blueprint-installer.md +83 -0
- package/docs/content/locales/pt-BR/cli-adapters.md +129 -0
- package/docs/content/locales/pt-BR/client.md +398 -0
- package/docs/content/locales/pt-BR/cloneable-saas.md +114 -0
- package/docs/content/locales/pt-BR/code-agents-ui.md +436 -0
- package/docs/content/locales/pt-BR/components.md +368 -0
- package/docs/content/locales/pt-BR/context-awareness.md +373 -0
- package/docs/content/locales/pt-BR/creating-templates.md +411 -0
- package/docs/content/locales/pt-BR/cross-app-sso.md +185 -0
- package/docs/content/locales/pt-BR/database.md +183 -0
- package/docs/content/locales/pt-BR/deployment.md +349 -0
- package/docs/content/locales/pt-BR/dispatch.md +146 -0
- package/docs/content/locales/pt-BR/drop-in-agent.md +260 -0
- package/docs/content/locales/pt-BR/durable-resume.md +65 -0
- package/docs/content/locales/pt-BR/embedding-sdk.md +597 -0
- package/docs/content/locales/pt-BR/evals.md +155 -0
- package/docs/content/locales/pt-BR/extensions.md +360 -0
- package/docs/content/locales/pt-BR/external-agents.md +619 -0
- package/docs/content/locales/pt-BR/faq.md +142 -0
- package/docs/content/locales/pt-BR/file-uploads.md +122 -0
- package/docs/content/locales/pt-BR/frames.md +153 -0
- package/docs/content/locales/pt-BR/getting-started.md +199 -0
- package/docs/content/locales/pt-BR/harness-agents.md +349 -0
- package/docs/content/locales/pt-BR/human-approval.md +86 -0
- package/docs/content/locales/pt-BR/internationalization.md +67 -24
- package/docs/content/locales/pt-BR/key-concepts.md +312 -0
- package/docs/content/locales/pt-BR/local-file-mode.md +433 -0
- package/docs/content/locales/pt-BR/mcp-apps.md +147 -0
- package/docs/content/locales/pt-BR/mcp-clients.md +330 -0
- package/docs/content/locales/pt-BR/mcp-protocol.md +279 -0
- package/docs/content/locales/pt-BR/messaging.md +461 -0
- package/docs/content/locales/pt-BR/migration-workbench.md +33 -0
- package/docs/content/locales/pt-BR/multi-app-workspace.md +312 -0
- package/docs/content/locales/pt-BR/multi-tenancy.md +52 -0
- package/docs/content/locales/pt-BR/native-chat-ui.md +321 -0
- package/docs/content/locales/pt-BR/notifications.md +231 -0
- package/docs/content/locales/pt-BR/observability.md +294 -0
- package/docs/content/locales/pt-BR/observational-memory.md +77 -0
- package/docs/content/locales/pt-BR/onboarding.md +216 -0
- package/docs/content/locales/pt-BR/plan-plugin.md +200 -0
- package/docs/content/locales/pt-BR/pr-visual-recap.md +384 -0
- package/docs/content/locales/pt-BR/processors.md +106 -0
- package/docs/content/locales/pt-BR/progress.md +199 -0
- package/docs/content/locales/pt-BR/pure-agent-apps.md +39 -0
- package/docs/content/locales/pt-BR/real-time-collaboration.md +676 -0
- package/docs/content/locales/pt-BR/recurring-jobs.md +142 -0
- package/docs/content/locales/pt-BR/routing.md +79 -0
- package/docs/content/locales/pt-BR/sandbox-adapters.md +227 -0
- package/docs/content/locales/pt-BR/security.md +330 -0
- package/docs/content/locales/pt-BR/server.md +253 -0
- package/docs/content/locales/pt-BR/sharing.md +219 -0
- package/docs/content/locales/pt-BR/skills-guide.md +281 -0
- package/docs/content/locales/pt-BR/template-analytics.md +259 -0
- package/docs/content/locales/pt-BR/template-assets.md +303 -0
- package/docs/content/locales/pt-BR/template-brain.md +324 -0
- package/docs/content/locales/pt-BR/template-calendar.md +194 -0
- package/docs/content/locales/pt-BR/template-chat.md +129 -0
- package/docs/content/locales/pt-BR/template-clips.md +368 -0
- package/docs/content/locales/pt-BR/template-content.md +402 -0
- package/docs/content/locales/pt-BR/template-design.md +173 -0
- package/docs/content/locales/pt-BR/template-dispatch.md +220 -0
- package/docs/content/locales/pt-BR/template-forms.md +178 -0
- package/docs/content/locales/pt-BR/template-mail.md +239 -0
- package/docs/content/locales/pt-BR/template-plan.md +815 -0
- package/docs/content/locales/pt-BR/template-slides.md +293 -0
- package/docs/content/locales/pt-BR/template-videos.md +222 -0
- package/docs/content/locales/pt-BR/tracking.md +236 -0
- package/docs/content/locales/pt-BR/using-your-agent.md +71 -0
- package/docs/content/locales/pt-BR/voice-input.md +81 -0
- package/docs/content/locales/pt-BR/what-is-agent-native.md +202 -0
- package/docs/content/locales/pt-BR/workspace-connections.md +321 -0
- package/docs/content/locales/pt-BR/workspace-management.md +175 -0
- package/docs/content/locales/pt-BR/workspace.md +323 -0
- package/docs/content/locales/pt-BR/writing-agent-instructions.md +173 -0
- package/docs/content/locales/zh-CN/a2a-protocol.md +392 -0
- package/docs/content/locales/zh-CN/actions.md +583 -0
- package/docs/content/locales/zh-CN/agent-mentions.md +164 -0
- package/docs/content/locales/zh-CN/agent-surfaces.md +397 -0
- package/docs/content/locales/zh-CN/agent-teams.md +171 -0
- package/docs/content/locales/zh-CN/agent-web-surfaces.md +161 -0
- package/docs/content/locales/zh-CN/audit-log.md +111 -0
- package/docs/content/locales/zh-CN/authentication.md +332 -0
- package/docs/content/locales/zh-CN/automations.md +268 -0
- package/docs/content/locales/zh-CN/blueprint-installer.md +83 -0
- package/docs/content/locales/zh-CN/cli-adapters.md +129 -0
- package/docs/content/locales/zh-CN/client.md +398 -0
- package/docs/content/locales/zh-CN/cloneable-saas.md +114 -0
- package/docs/content/locales/zh-CN/code-agents-ui.md +436 -0
- package/docs/content/locales/zh-CN/components.md +368 -0
- package/docs/content/locales/zh-CN/context-awareness.md +373 -0
- package/docs/content/locales/zh-CN/creating-templates.md +411 -0
- package/docs/content/locales/zh-CN/cross-app-sso.md +188 -0
- package/docs/content/locales/zh-CN/database.md +183 -0
- package/docs/content/locales/zh-CN/deployment.md +349 -0
- package/docs/content/locales/zh-CN/dispatch.md +146 -0
- package/docs/content/locales/zh-CN/drop-in-agent.md +260 -0
- package/docs/content/locales/zh-CN/durable-resume.md +65 -0
- package/docs/content/locales/zh-CN/embedding-sdk.md +597 -0
- package/docs/content/locales/zh-CN/evals.md +155 -0
- package/docs/content/locales/zh-CN/extensions.md +360 -0
- package/docs/content/locales/zh-CN/external-agents.md +619 -0
- package/docs/content/locales/zh-CN/faq.md +142 -0
- package/docs/content/locales/zh-CN/file-uploads.md +122 -0
- package/docs/content/locales/zh-CN/frames.md +153 -0
- package/docs/content/locales/zh-CN/getting-started.md +199 -0
- package/docs/content/locales/zh-CN/harness-agents.md +349 -0
- package/docs/content/locales/zh-CN/human-approval.md +86 -0
- package/docs/content/locales/zh-CN/internationalization.md +67 -24
- package/docs/content/locales/zh-CN/key-concepts.md +312 -0
- package/docs/content/locales/zh-CN/local-file-mode.md +433 -0
- package/docs/content/locales/zh-CN/mcp-apps.md +147 -0
- package/docs/content/locales/zh-CN/mcp-clients.md +330 -0
- package/docs/content/locales/zh-CN/mcp-protocol.md +279 -0
- package/docs/content/locales/zh-CN/messaging.md +461 -0
- package/docs/content/locales/zh-CN/migration-workbench.md +33 -0
- package/docs/content/locales/zh-CN/multi-app-workspace.md +312 -0
- package/docs/content/locales/zh-CN/multi-tenancy.md +52 -0
- package/docs/content/locales/zh-CN/native-chat-ui.md +321 -0
- package/docs/content/locales/zh-CN/notifications.md +231 -0
- package/docs/content/locales/zh-CN/observability.md +294 -0
- package/docs/content/locales/zh-CN/observational-memory.md +77 -0
- package/docs/content/locales/zh-CN/onboarding.md +216 -0
- package/docs/content/locales/zh-CN/plan-plugin.md +200 -0
- package/docs/content/locales/zh-CN/pr-visual-recap.md +384 -0
- package/docs/content/locales/zh-CN/processors.md +106 -0
- package/docs/content/locales/zh-CN/progress.md +199 -0
- package/docs/content/locales/zh-CN/pure-agent-apps.md +39 -0
- package/docs/content/locales/zh-CN/real-time-collaboration.md +676 -0
- package/docs/content/locales/zh-CN/recurring-jobs.md +142 -0
- package/docs/content/locales/zh-CN/routing.md +79 -0
- package/docs/content/locales/zh-CN/sandbox-adapters.md +227 -0
- package/docs/content/locales/zh-CN/security.md +330 -0
- package/docs/content/locales/zh-CN/server.md +253 -0
- package/docs/content/locales/zh-CN/sharing.md +219 -0
- package/docs/content/locales/zh-CN/skills-guide.md +281 -0
- package/docs/content/locales/zh-CN/template-analytics.md +259 -0
- package/docs/content/locales/zh-CN/template-assets.md +303 -0
- package/docs/content/locales/zh-CN/template-brain.md +324 -0
- package/docs/content/locales/zh-CN/template-calendar.md +194 -0
- package/docs/content/locales/zh-CN/template-chat.md +129 -0
- package/docs/content/locales/zh-CN/template-clips.md +368 -0
- package/docs/content/locales/zh-CN/template-content.md +402 -0
- package/docs/content/locales/zh-CN/template-design.md +173 -0
- package/docs/content/locales/zh-CN/template-dispatch.md +220 -0
- package/docs/content/locales/zh-CN/template-forms.md +178 -0
- package/docs/content/locales/zh-CN/template-mail.md +239 -0
- package/docs/content/locales/zh-CN/template-plan.md +814 -0
- package/docs/content/locales/zh-CN/template-slides.md +293 -0
- package/docs/content/locales/zh-CN/template-videos.md +222 -0
- package/docs/content/locales/zh-CN/tracking.md +236 -0
- package/docs/content/locales/zh-CN/using-your-agent.md +71 -0
- package/docs/content/locales/zh-CN/voice-input.md +81 -0
- package/docs/content/locales/zh-CN/what-is-agent-native.md +202 -0
- package/docs/content/locales/zh-CN/workspace-connections.md +321 -0
- package/docs/content/locales/zh-CN/workspace-management.md +175 -0
- package/docs/content/locales/zh-CN/workspace.md +323 -0
- package/docs/content/locales/zh-CN/writing-agent-instructions.md +173 -0
- package/package.json +1 -1
- package/src/templates/default/app/i18n/ar-SA.ts +356 -0
- package/src/templates/default/app/i18n/de-DE.ts +332 -0
- package/src/templates/default/app/i18n/en-US.ts +303 -0
- package/src/templates/default/app/i18n/es-ES.ts +339 -0
- package/src/templates/default/app/i18n/fr-FR.ts +339 -0
- package/src/templates/default/app/i18n/hi-IN.ts +332 -0
- package/src/templates/default/app/i18n/index.ts +18 -0
- package/src/templates/default/app/i18n/ja-JP.ts +326 -0
- package/src/templates/default/app/i18n/ko-KR.ts +326 -0
- package/src/templates/default/app/i18n/pt-BR.ts +339 -0
- package/src/templates/default/app/i18n/zh-CN.ts +324 -0
- package/src/templates/default/app/root.tsx +109 -6
- package/src/templates/workspace-core/.agents/skills/extensions/references/api.md +34 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationCard.js","sourceRoot":"","sources":["../../../src/client/integrations/IntegrationCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useCallback } from \"react\";\nimport {\n IconBrandSlack,\n IconBrandTelegram,\n IconBrandWhatsapp,\n IconMessageCircle,\n IconChevronDown,\n IconChevronRight,\n IconCopy,\n IconCheck,\n} from \"@tabler/icons-react\";\nimport type { IntegrationStatus } from \"./useIntegrationStatus.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../components/ui/tooltip.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst platformIcons: Record<string, React.ComponentType<any>> = {\n slack: IconBrandSlack as React.ComponentType<any>,\n telegram: IconBrandTelegram as React.ComponentType<any>,\n whatsapp: IconBrandWhatsapp as React.ComponentType<any>,\n};\n\nfunction StatusDot({\n enabled,\n configured,\n}: {\n enabled: boolean;\n configured: boolean;\n}) {\n const color =\n enabled && configured\n ? \"bg-green-500\"\n : configured\n ? \"bg-yellow-500\"\n : \"bg-gray-400\";\n return <span className={`inline-block h-2 w-2 rounded-full ${color}`} />;\n}\n\nexport function IntegrationCard({\n status,\n onRefresh,\n}: {\n status: IntegrationStatus;\n onRefresh: () => void;\n}) {\n const [expanded, setExpanded] = useState(false);\n const [toggling, setToggling] = useState(false);\n const [copied, setCopied] = useState(false);\n const [toggleError, setToggleError] = useState<string | null>(null);\n\n const Icon = platformIcons[status.platform] || IconMessageCircle;\n\n const handleToggle = useCallback(async () => {\n setToggling(true);\n setToggleError(null);\n try {\n const action = status.enabled ? \"disable\" : \"enable\";\n const res = await fetch(\n agentNativePath(\n `/_agent-native/integrations/${status.platform}/${action}`,\n ),\n { method: \"POST\" },\n );\n if (res.ok) {\n onRefresh();\n return;\n }\n const data = (await res.json().catch(() => null)) as {\n error?: string;\n } | null;\n setToggleError(\n data?.error ||\n res.statusText ||\n `Couldn't ${action} ${status.label} (HTTP ${res.status})`,\n );\n } catch (err) {\n setToggleError(\n err instanceof Error\n ? err.message\n : \"Network error reaching the server\",\n );\n } finally {\n setToggling(false);\n }\n }, [status.platform, status.enabled, status.label, onRefresh]);\n\n const handleCopy = useCallback(async () => {\n if (!status.webhookUrl) return;\n await navigator.clipboard.writeText(status.webhookUrl);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }, [status.webhookUrl]);\n\n return (\n <div className=\"rounded-md border border-border bg-background\">\n <button\n onClick={() => setExpanded(!expanded)}\n className=\"flex w-full items-center gap-2 px-2.5 py-2 text-start hover:bg-accent/50\"\n >\n {expanded ? (\n <IconChevronDown\n size={12}\n className=\"text-muted-foreground shrink-0\"\n />\n ) : (\n <IconChevronRight\n size={12}\n className=\"text-muted-foreground shrink-0 rtl:-scale-x-100\"\n />\n )}\n <Icon size={16} className=\"text-muted-foreground shrink-0\" />\n <span className=\"flex-1 text-xs font-medium text-foreground\">\n {status.label}\n </span>\n <StatusDot enabled={status.enabled} configured={status.configured} />\n </button>\n\n {expanded && (\n <div className=\"border-t border-border px-2.5 py-2 space-y-2\">\n {status.webhookUrl && (\n <div>\n <div className=\"text-[10px] font-medium text-muted-foreground mb-1\">\n Webhook URL\n </div>\n <div className=\"flex items-center gap-1\">\n <code className=\"flex-1 truncate rounded bg-muted px-1.5 py-0.5 text-[10px] text-foreground\">\n {status.webhookUrl}\n </code>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={handleCopy}\n className=\"shrink-0 rounded p-0.5 text-muted-foreground hover:text-foreground hover:bg-accent/50\"\n >\n {copied ? (\n <IconCheck size={12} />\n ) : (\n <IconCopy size={12} />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent>Copy webhook URL</TooltipContent>\n </Tooltip>\n </div>\n </div>\n )}\n\n {status.error && (\n <p className=\"text-[10px] text-destructive\">{status.error}</p>\n )}\n\n {toggleError && (\n <p className=\"text-[10px] text-destructive\">{toggleError}</p>\n )}\n\n {!status.configured && !status.error && (\n <p className=\"text-[10px] text-muted-foreground\">\n Not configured. Set the required secrets to enable this\n integration.\n </p>\n )}\n\n {status.configured && (\n <button\n onClick={handleToggle}\n disabled={toggling}\n className=\"w-full rounded-md border border-border px-2 py-1 text-[11px] font-medium text-foreground hover:bg-accent/50 disabled:opacity-50\"\n >\n {toggling ? \"...\" : status.enabled ? \"Disable\" : \"Enable\"}\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"IntegrationCard.js","sourceRoot":"","sources":["../../../src/client/integrations/IntegrationCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useCallback } from \"react\";\nimport {\n IconBrandSlack,\n IconBrandTelegram,\n IconBrandWhatsapp,\n IconMessageCircle,\n IconChevronDown,\n IconChevronRight,\n IconCopy,\n IconCheck,\n} from \"@tabler/icons-react\";\nimport type { IntegrationStatus } from \"./useIntegrationStatus.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../components/ui/tooltip.js\";\nimport { useT } from \"../i18n.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst platformIcons: Record<string, React.ComponentType<any>> = {\n slack: IconBrandSlack as React.ComponentType<any>,\n telegram: IconBrandTelegram as React.ComponentType<any>,\n whatsapp: IconBrandWhatsapp as React.ComponentType<any>,\n};\n\nfunction StatusDot({\n enabled,\n configured,\n}: {\n enabled: boolean;\n configured: boolean;\n}) {\n const color =\n enabled && configured\n ? \"bg-green-500\"\n : configured\n ? \"bg-yellow-500\"\n : \"bg-gray-400\";\n return <span className={`inline-block h-2 w-2 rounded-full ${color}`} />;\n}\n\nexport function IntegrationCard({\n status,\n onRefresh,\n}: {\n status: IntegrationStatus;\n onRefresh: () => void;\n}) {\n const t = useT();\n const [expanded, setExpanded] = useState(false);\n const [toggling, setToggling] = useState(false);\n const [copied, setCopied] = useState(false);\n const [toggleError, setToggleError] = useState<string | null>(null);\n\n const Icon = platformIcons[status.platform] || IconMessageCircle;\n\n const handleToggle = useCallback(async () => {\n setToggling(true);\n setToggleError(null);\n try {\n const action = status.enabled ? \"disable\" : \"enable\";\n const res = await fetch(\n agentNativePath(\n `/_agent-native/integrations/${status.platform}/${action}`,\n ),\n { method: \"POST\" },\n );\n if (res.ok) {\n onRefresh();\n return;\n }\n const data = (await res.json().catch(() => null)) as {\n error?: string;\n } | null;\n setToggleError(\n data?.error ||\n res.statusText ||\n `Couldn't ${action} ${status.label} (HTTP ${res.status})`,\n );\n } catch (err) {\n setToggleError(\n err instanceof Error ? err.message : t(\"integrations.networkError\"),\n );\n } finally {\n setToggling(false);\n }\n }, [status.platform, status.enabled, status.label, onRefresh]);\n\n const handleCopy = useCallback(async () => {\n if (!status.webhookUrl) return;\n await navigator.clipboard.writeText(status.webhookUrl);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }, [status.webhookUrl]);\n\n return (\n <div className=\"rounded-md border border-border bg-background\">\n <button\n onClick={() => setExpanded(!expanded)}\n className=\"flex w-full items-center gap-2 px-2.5 py-2 text-start hover:bg-accent/50\"\n >\n {expanded ? (\n <IconChevronDown\n size={12}\n className=\"text-muted-foreground shrink-0\"\n />\n ) : (\n <IconChevronRight\n size={12}\n className=\"text-muted-foreground shrink-0 rtl:-scale-x-100\"\n />\n )}\n <Icon size={16} className=\"text-muted-foreground shrink-0\" />\n <span className=\"flex-1 text-xs font-medium text-foreground\">\n {status.label}\n </span>\n <StatusDot enabled={status.enabled} configured={status.configured} />\n </button>\n\n {expanded && (\n <div className=\"border-t border-border px-2.5 py-2 space-y-2\">\n {status.webhookUrl && (\n <div>\n <div className=\"text-[10px] font-medium text-muted-foreground mb-1\">\n {t(\"integrations.webhookUrl\")}\n </div>\n <div className=\"flex items-center gap-1\">\n <code className=\"flex-1 truncate rounded bg-muted px-1.5 py-0.5 text-[10px] text-foreground\">\n {status.webhookUrl}\n </code>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={handleCopy}\n className=\"shrink-0 rounded p-0.5 text-muted-foreground hover:text-foreground hover:bg-accent/50\"\n >\n {copied ? (\n <IconCheck size={12} />\n ) : (\n <IconCopy size={12} />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent>\n {t(\"integrations.copyWebhookUrl\")}\n </TooltipContent>\n </Tooltip>\n </div>\n </div>\n )}\n\n {status.error && (\n <p className=\"text-[10px] text-destructive\">{status.error}</p>\n )}\n\n {toggleError && (\n <p className=\"text-[10px] text-destructive\">{toggleError}</p>\n )}\n\n {!status.configured && !status.error && (\n <p className=\"text-[10px] text-muted-foreground\">\n {t(\"integrations.notConfigured\")}\n </p>\n )}\n\n {status.configured && (\n <button\n onClick={handleToggle}\n disabled={toggling}\n className=\"w-full rounded-md border border-border px-2 py-1 text-[11px] font-medium text-foreground hover:bg-accent/50 disabled:opacity-50\"\n >\n {toggling\n ? t(\"integrations.toggling\")\n : status.enabled\n ? t(\"integrations.disable\")\n : t(\"integrations.enable\")}\n </button>\n )}\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationsPanel.d.ts","sourceRoot":"","sources":["../../../src/client/integrations/IntegrationsPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IntegrationsPanel.d.ts","sourceRoot":"","sources":["../../../src/client/integrations/IntegrationsPanel.tsx"],"names":[],"mappings":"AAudA,wBAAgB,iBAAiB,4CA8IhC"}
|
|
@@ -4,6 +4,7 @@ import { IconPlus, IconBrandSlack, IconBrandTelegram, IconBrandWhatsapp, IconBra
|
|
|
4
4
|
import { useIntegrationStatus, } from "./useIntegrationStatus.js";
|
|
5
5
|
import { agentNativePath } from "../api-path.js";
|
|
6
6
|
import { Tooltip, TooltipContent, TooltipTrigger, } from "../components/ui/tooltip.js";
|
|
7
|
+
import { useT } from "../i18n.js";
|
|
7
8
|
const PLATFORMS = [
|
|
8
9
|
{
|
|
9
10
|
id: "slack",
|
|
@@ -121,6 +122,7 @@ function useAgentEngineConfigured() {
|
|
|
121
122
|
}
|
|
122
123
|
// ─── Integration detail view ─────────────────────────────────────────────────
|
|
123
124
|
function IntegrationDetail({ platform, serverStatus, onBack, onRefresh, }) {
|
|
125
|
+
const t = useT();
|
|
124
126
|
const [toggling, setToggling] = useState(false);
|
|
125
127
|
const [copied, setCopied] = useState(false);
|
|
126
128
|
const [toggleError, setToggleError] = useState(null);
|
|
@@ -144,9 +146,7 @@ function IntegrationDetail({ platform, serverStatus, onBack, onRefresh, }) {
|
|
|
144
146
|
`Couldn't ${action} ${platform.label} (HTTP ${res.status})`);
|
|
145
147
|
}
|
|
146
148
|
catch (err) {
|
|
147
|
-
setToggleError(err instanceof Error
|
|
148
|
-
? err.message
|
|
149
|
-
: "Network error reaching the server");
|
|
149
|
+
setToggleError(err instanceof Error ? err.message : t("integrations.networkError"));
|
|
150
150
|
}
|
|
151
151
|
finally {
|
|
152
152
|
setToggling(false);
|
|
@@ -168,9 +168,15 @@ function IntegrationDetail({ platform, serverStatus, onBack, onRefresh, }) {
|
|
|
168
168
|
const serviceAccountEmail = typeof serverStatus?.details?.serviceAccountEmail === "string"
|
|
169
169
|
? serverStatus.details.serviceAccountEmail
|
|
170
170
|
: null;
|
|
171
|
-
return (_jsxs("div", { children: [_jsxs("button", { onClick: onBack, className: "flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground mb-2", children: [_jsx(IconChevronLeft, { size: 12, className: "rtl:-scale-x-100" }), "
|
|
171
|
+
return (_jsxs("div", { children: [_jsxs("button", { onClick: onBack, className: "flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground mb-2", children: [_jsx(IconChevronLeft, { size: 12, className: "rtl:-scale-x-100" }), t("integrations.back")] }), _jsxs("div", { className: "flex items-center gap-2 mb-2", children: [_jsx(platform.icon, { size: 18, className: "text-foreground shrink-0" }), _jsxs("div", { children: [_jsx("div", { className: "text-xs font-medium text-foreground", children: platform.label }), _jsx("div", { className: "text-[10px] text-muted-foreground", children: platform.description })] })] }), showAgentEnginePrereq && (_jsx("div", { className: "mb-3 rounded-md border border-amber-500/30 bg-amber-500/10 px-2.5 py-2", children: _jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-[10px] font-medium text-foreground", children: t("integrations.agentEngineRequired") }), _jsx("p", { className: "mt-0.5 text-[10px] leading-relaxed text-muted-foreground", children: t("integrations.agentEngineDescription", {
|
|
172
|
+
platform: platform.label,
|
|
173
|
+
}) })] }), _jsx("button", { type: "button", onClick: handleOpenLlmSettings, className: "shrink-0 rounded border border-border bg-background px-2 py-1 text-[10px] font-medium text-muted-foreground transition-colors hover:bg-accent/40 hover:text-foreground", children: t("integrations.openLlm") })] }) })), _jsxs("div", { className: "mb-3", children: [_jsx("div", { className: "text-[10px] font-medium text-muted-foreground mb-1.5", children: t("integrations.setup") }), _jsx("ol", { className: "space-y-1", children: platform.setupSteps.map((step, i) => (_jsxs("li", { className: "flex gap-1.5 text-[10px] text-muted-foreground leading-relaxed", children: [_jsxs("span", { className: "shrink-0 text-muted-foreground/50", children: [i + 1, "."] }), step] }, i))) })] }), serviceAccountEmail && (_jsxs("div", { className: "mb-3", children: [_jsx("div", { className: "text-[10px] font-medium text-muted-foreground mb-1", children: t("integrations.shareDocumentsWith") }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("code", { className: "flex-1 truncate rounded bg-muted px-1.5 py-0.5 text-[10px] text-foreground", children: serviceAccountEmail }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { onClick: () => handleCopy(serviceAccountEmail), className: "shrink-0 rounded p-0.5 text-muted-foreground hover:text-foreground hover:bg-accent/50", children: copied ? _jsx(IconCheck, { size: 12 }) : _jsx(IconCopy, { size: 12 }) }) }), _jsx(TooltipContent, { children: t("integrations.copyServiceAccountEmail") })] })] })] })), platform.envVars.length > 0 && (_jsxs("div", { className: "mb-3", children: [_jsx("div", { className: "text-[10px] font-medium text-muted-foreground mb-1", children: t("integrations.requiredSecrets") }), _jsx("div", { className: "space-y-0.5", children: platform.envVars.map((v) => (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("code", { className: "text-[10px] text-foreground bg-muted px-1 py-0.5 rounded", children: v }), isConfigured && (_jsx(IconCircleCheck, { size: 11, className: "text-green-500 shrink-0" }))] }, v))) }), !isConfigured && (_jsx("p", { className: "text-[10px] text-amber-500 mt-1", children: t("integrations.envHelp") }))] })), serverStatus?.webhookUrl && !platform.isClient && (_jsxs("div", { className: "mb-3", children: [_jsx("div", { className: "text-[10px] font-medium text-muted-foreground mb-1", children: t("integrations.webhookUrl") }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("code", { className: "flex-1 truncate rounded bg-muted px-1.5 py-0.5 text-[10px] text-foreground", children: serverStatus.webhookUrl }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { onClick: () => handleCopy(serverStatus.webhookUrl), className: "shrink-0 rounded p-0.5 text-muted-foreground hover:text-foreground hover:bg-accent/50", children: copied ? _jsx(IconCheck, { size: 12 }) : _jsx(IconCopy, { size: 12 }) }) }), _jsx(TooltipContent, { children: t("integrations.copy") })] })] })] })), platform.docsUrl && (_jsxs("a", { href: platform.docsUrl, target: "_blank", rel: "noopener noreferrer", className: "flex items-center gap-1 text-[10px] text-blue-400 hover:text-blue-300 mb-3", children: [t("integrations.documentation"), _jsx(IconExternalLink, { size: 10 })] })), serverStatus && !platform.isClient && isConfigured && (_jsx("button", { onClick: handleToggle, disabled: toggling, className: `w-full rounded-md border px-2 py-1.5 text-[11px] font-medium disabled:opacity-50 ${isEnabled
|
|
172
174
|
? "border-border text-foreground hover:bg-accent/50"
|
|
173
|
-
: "border-green-600/50 text-green-400 hover:bg-green-900/20"}`, children: toggling
|
|
175
|
+
: "border-green-600/50 text-green-400 hover:bg-green-900/20"}`, children: toggling
|
|
176
|
+
? t("integrations.toggling")
|
|
177
|
+
: isEnabled
|
|
178
|
+
? t("integrations.disable")
|
|
179
|
+
: t("integrations.enable") })), platform.isClient && (_jsx("div", { className: "rounded-md border border-border bg-muted/30 px-2.5 py-2 text-[10px] text-muted-foreground", children: t("integrations.clientAvailable") })), serverStatus?.error && (_jsx("p", { className: "text-[10px] text-destructive mt-2", children: serverStatus.error })), toggleError && (_jsx("p", { className: "text-[10px] text-destructive mt-2", children: toggleError }))] }));
|
|
174
180
|
}
|
|
175
181
|
// ─── Add integration picker ──────────────────────────────────────────────────
|
|
176
182
|
function AddIntegrationPicker({ connectedIds, onSelect, }) {
|
|
@@ -178,6 +184,7 @@ function AddIntegrationPicker({ connectedIds, onSelect, }) {
|
|
|
178
184
|
}
|
|
179
185
|
// ─── Main panel ──────────────────────────────────────────────────────────────
|
|
180
186
|
export function IntegrationsPanel() {
|
|
187
|
+
const t = useT();
|
|
181
188
|
const { statuses, loading, refetch } = useIntegrationStatus();
|
|
182
189
|
const [selectedPlatform, setSelectedPlatform] = useState(null);
|
|
183
190
|
const [showPicker, setShowPicker] = useState(false);
|
|
@@ -192,18 +199,18 @@ export function IntegrationsPanel() {
|
|
|
192
199
|
return (_jsx(IntegrationDetail, { platform: selectedPlatform, serverStatus: statusMap.get(selectedPlatform.id), onBack: () => setSelectedPlatform(null), onRefresh: refetch }));
|
|
193
200
|
}
|
|
194
201
|
if (showPicker) {
|
|
195
|
-
return (_jsxs("div", { children: [_jsxs("button", { onClick: () => setShowPicker(false), className: "flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground mb-2", children: [_jsx(IconChevronLeft, { size: 12, className: "rtl:-scale-x-100" }), "
|
|
202
|
+
return (_jsxs("div", { children: [_jsxs("button", { onClick: () => setShowPicker(false), className: "flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground mb-2", children: [_jsx(IconChevronLeft, { size: 12, className: "rtl:-scale-x-100" }), t("integrations.back")] }), _jsx("div", { className: "text-[10px] font-medium text-muted-foreground mb-1.5", children: t("integrations.addChatIntegration") }), _jsx(AddIntegrationPicker, { connectedIds: connectedIds, onSelect: (p) => {
|
|
196
203
|
setSelectedPlatform(p);
|
|
197
204
|
setShowPicker(false);
|
|
198
205
|
} })] }));
|
|
199
206
|
}
|
|
200
|
-
return (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between mb-1.5", children: [_jsxs("div", { children: [_jsx("div", { className: "text-xs font-medium text-foreground", children: "
|
|
207
|
+
return (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between mb-1.5", children: [_jsxs("div", { children: [_jsx("div", { className: "text-xs font-medium text-foreground", children: t("integrations.chatIntegrations") }), _jsx("div", { className: "text-[10px] text-muted-foreground", children: t("integrations.chatIntegrationsDescription") })] }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { onClick: () => setShowPicker(true), className: "flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconPlus, { size: 12 }) }) }), _jsx(TooltipContent, { children: t("integrations.addIntegration") })] })] }), loading ? (_jsxs("div", { className: "space-y-1.5", children: [_jsx("div", { className: "h-6 w-full rounded bg-muted/50 animate-pulse" }), _jsx("div", { className: "h-6 w-3/4 rounded bg-muted/50 animate-pulse" })] })) : connectedPlatforms.length === 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("button", { onClick: () => setShowPicker(true), className: "flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-[11px] text-muted-foreground hover:text-foreground hover:bg-accent/30", children: [_jsx(IconPlus, { size: 12, className: "shrink-0" }), t("integrations.addIntegration")] }), _jsxs("div", { className: "rounded-md border border-border bg-muted/30 px-2.5 py-2 text-[10px] text-muted-foreground", children: [t("integrations.dispatchEntrypoint"), " ", _jsx("a", { href: "https://dispatch.agent-native.com", target: "_blank", rel: "noopener noreferrer", className: "no-underline font-medium text-foreground hover:text-foreground/80", children: "dispatch template" }), "."] })] })) : (_jsxs("div", { className: "space-y-2", children: [connectedPlatforms.map((platform) => {
|
|
201
208
|
const s = statusMap.get(platform.id);
|
|
202
209
|
return (_jsxs("button", { onClick: () => setSelectedPlatform(platform), className: "flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-start hover:bg-accent/50", children: [_jsx(platform.icon, { size: 14, className: "shrink-0 text-muted-foreground" }), _jsx("span", { className: "flex-1 text-[11px] font-medium text-foreground truncate", children: platform.label }), s && (_jsx("span", { className: `inline-block h-1.5 w-1.5 rounded-full shrink-0 ${s.enabled && s.configured
|
|
203
210
|
? "bg-green-500"
|
|
204
211
|
: s.configured
|
|
205
212
|
? "bg-yellow-500"
|
|
206
213
|
: "bg-gray-400"}` }))] }, platform.id));
|
|
207
|
-
}), _jsx("div", { className: "rounded-md border border-border bg-muted/30 px-2.5 py-2 text-[10px] text-muted-foreground", children: "
|
|
214
|
+
}), _jsx("div", { className: "rounded-md border border-border bg-muted/30 px-2.5 py-2 text-[10px] text-muted-foreground", children: t("integrations.sharedMessaging") })] }))] }));
|
|
208
215
|
}
|
|
209
216
|
//# sourceMappingURL=IntegrationsPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegrationsPanel.js","sourceRoot":"","sources":["../../../src/client/integrations/IntegrationsPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useCallback, useEffect } from \"react\";\nimport {\n IconPlus,\n IconBrandSlack,\n IconBrandTelegram,\n IconBrandWhatsapp,\n IconBrandGoogleDrive,\n IconTerminal2,\n IconBuildingSkyscraper,\n IconCopy,\n IconCheck,\n IconChevronLeft,\n IconExternalLink,\n IconCircleCheck,\n} from \"@tabler/icons-react\";\nimport {\n useIntegrationStatus,\n type IntegrationStatus,\n} from \"./useIntegrationStatus.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../components/ui/tooltip.js\";\n\n// ─── Platform config ─────────────────────────────────────────────────────────\n\ninterface PlatformInfo {\n id: string;\n label: string;\n icon: React.ComponentType<any>;\n description: string;\n envVars: string[];\n setupSteps: string[];\n docsUrl?: string;\n /** If true, this is a \"client\" integration (user connects TO the agent) rather than a webhook */\n isClient?: boolean;\n}\n\nconst PLATFORMS: PlatformInfo[] = [\n {\n id: \"slack\",\n label: \"Slack\",\n icon: IconBrandSlack,\n description: \"Message your agent from any Slack channel or DM.\",\n envVars: [\"SLACK_BOT_TOKEN\", \"SLACK_SIGNING_SECRET\"],\n setupSteps: [\n \"Create a Slack app at api.slack.com/apps\",\n 'Enable \"Event Subscriptions\" and point to your webhook URL',\n \"Subscribe to message.im and app_mention events\",\n \"Install the app to your workspace\",\n \"Copy the Bot Token and Signing Secret into your environment\",\n ],\n docsUrl: \"https://api.slack.com/apps\",\n },\n {\n id: \"telegram\",\n label: \"Telegram\",\n icon: IconBrandTelegram,\n description: \"Chat with your agent via a Telegram bot.\",\n envVars: [\"TELEGRAM_BOT_TOKEN\"],\n setupSteps: [\n \"Message @BotFather on Telegram to create a new bot\",\n \"Copy the bot token into your environment\",\n 'Click \"Setup webhook\" below to register automatically',\n ],\n },\n {\n id: \"whatsapp\",\n label: \"WhatsApp\",\n icon: IconBrandWhatsapp,\n description: \"Connect your agent to WhatsApp Business.\",\n envVars: [\"WHATSAPP_TOKEN\", \"WHATSAPP_VERIFY_TOKEN\"],\n setupSteps: [\n \"Create a Meta Business app at developers.facebook.com\",\n \"Set up WhatsApp Business API\",\n \"Configure the webhook URL and verify token\",\n \"Copy the access token into your environment\",\n ],\n docsUrl: \"https://developers.facebook.com/docs/whatsapp\",\n },\n {\n id: \"google-docs\",\n label: \"Google Docs\",\n icon: IconBrandGoogleDrive,\n description: \"Tag the agent in Google Doc comments to get responses.\",\n envVars: [\"GOOGLE_SERVICE_ACCOUNT_KEY\"],\n setupSteps: [\n \"Create a Google Cloud service account and download the JSON key\",\n \"Set GOOGLE_SERVICE_ACCOUNT_KEY in your environment (JSON string or file path)\",\n \"Share your Google Docs with the service account email\",\n 'Write a comment containing \"@Agent\" to trigger the agent',\n ],\n },\n {\n id: \"openclaw\",\n label: \"OpenClaw\",\n icon: IconTerminal2,\n description: \"Access this agent from OpenClaw's unified agent interface.\",\n envVars: [],\n isClient: true,\n setupSteps: [\n \"Install OpenClaw: npm install -g openclaw\",\n \"Add this agent's URL as a provider in your OpenClaw config\",\n \"OpenClaw discovers your agent's capabilities via the A2A protocol\",\n ],\n },\n {\n id: \"claude-code\",\n label: \"Claude Code\",\n icon: IconTerminal2,\n description:\n \"Let Claude Code call this agent via A2A for data and actions.\",\n envVars: [],\n isClient: true,\n setupSteps: [\n \"Your agent exposes an A2A endpoint at /.well-known/agent-card.json\",\n \"In Claude Code, reference your agent's URL when asking for data\",\n \"Claude Code will discover and call your agent's skills automatically\",\n ],\n },\n {\n id: \"builder\",\n label: \"Builder.io\",\n icon: IconBuildingSkyscraper,\n description:\n \"One chat interface that orchestrates all your agents together.\",\n envVars: [],\n isClient: true,\n setupSteps: [\n \"Connect your agent-native apps in your Builder.io workspace\",\n \"Builder.io discovers each agent's skills via A2A\",\n \"Chat with one agent that can trigger actions across all your apps\",\n ],\n docsUrl: \"https://www.builder.io\",\n },\n];\n\nfunction useAgentEngineConfigured() {\n const [configured, setConfigured] = useState<boolean | undefined>(undefined);\n\n const refresh = useCallback(() => {\n fetch(agentNativePath(\"/_agent-native/agent-engine/status\"))\n .then((r) => (r.ok ? r.json() : null))\n .then((data) => {\n if (typeof data?.configured === \"boolean\") {\n setConfigured(data.configured);\n }\n })\n .catch(() => {});\n }, []);\n\n useEffect(() => {\n refresh();\n window.addEventListener(\"agent-engine:configured-changed\", refresh);\n return () =>\n window.removeEventListener(\"agent-engine:configured-changed\", refresh);\n }, [refresh]);\n\n return configured;\n}\n\n// ─── Integration detail view ─────────────────────────────────────────────────\n\nfunction IntegrationDetail({\n platform,\n serverStatus,\n onBack,\n onRefresh,\n}: {\n platform: PlatformInfo;\n serverStatus?: IntegrationStatus;\n onBack: () => void;\n onRefresh: () => void;\n}) {\n const [toggling, setToggling] = useState(false);\n const [copied, setCopied] = useState(false);\n const [toggleError, setToggleError] = useState<string | null>(null);\n const agentEngineConfigured = useAgentEngineConfigured();\n\n const handleToggle = useCallback(async () => {\n setToggling(true);\n setToggleError(null);\n try {\n const action = serverStatus?.enabled ? \"disable\" : \"enable\";\n const res = await fetch(\n agentNativePath(`/_agent-native/integrations/${platform.id}/${action}`),\n { method: \"POST\" },\n );\n if (res.ok) {\n onRefresh();\n return;\n }\n // Surface the real reason instead of silently doing nothing.\n // The endpoint returns `{ error }` for known failures (admin gating,\n // missing secrets, etc.); fall back to status text otherwise.\n const data = (await res.json().catch(() => null)) as {\n error?: string;\n } | null;\n setToggleError(\n data?.error ||\n res.statusText ||\n `Couldn't ${action} ${platform.label} (HTTP ${res.status})`,\n );\n } catch (err) {\n setToggleError(\n err instanceof Error\n ? err.message\n : \"Network error reaching the server\",\n );\n } finally {\n setToggling(false);\n }\n }, [platform.id, platform.label, serverStatus?.enabled, onRefresh]);\n\n const handleCopy = useCallback(async (text: string) => {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }, []);\n\n const handleOpenLlmSettings = useCallback(() => {\n window.dispatchEvent(\n new CustomEvent(\"agent-panel:open-settings\", {\n detail: { section: \"llm\" },\n }),\n );\n }, []);\n\n const isConfigured = serverStatus?.configured ?? false;\n const isEnabled = serverStatus?.enabled ?? false;\n const showAgentEnginePrereq =\n !platform.isClient && agentEngineConfigured === false;\n const serviceAccountEmail =\n typeof serverStatus?.details?.serviceAccountEmail === \"string\"\n ? serverStatus.details.serviceAccountEmail\n : null;\n\n return (\n <div>\n <button\n onClick={onBack}\n className=\"flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground mb-2\"\n >\n <IconChevronLeft size={12} className=\"rtl:-scale-x-100\" />\n Back\n </button>\n\n <div className=\"flex items-center gap-2 mb-2\">\n <platform.icon size={18} className=\"text-foreground shrink-0\" />\n <div>\n <div className=\"text-xs font-medium text-foreground\">\n {platform.label}\n </div>\n <div className=\"text-[10px] text-muted-foreground\">\n {platform.description}\n </div>\n </div>\n </div>\n\n {showAgentEnginePrereq && (\n <div className=\"mb-3 rounded-md border border-amber-500/30 bg-amber-500/10 px-2.5 py-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"min-w-0\">\n <div className=\"text-[10px] font-medium text-foreground\">\n Agent engine required\n </div>\n <p className=\"mt-0.5 text-[10px] leading-relaxed text-muted-foreground\">\n Connect Builder.io or an LLM key before {platform.label} can\n answer.\n </p>\n </div>\n <button\n type=\"button\"\n onClick={handleOpenLlmSettings}\n className=\"shrink-0 rounded border border-border bg-background px-2 py-1 text-[10px] font-medium text-muted-foreground transition-colors hover:bg-accent/40 hover:text-foreground\"\n >\n Open LLM\n </button>\n </div>\n </div>\n )}\n\n {/* Setup steps */}\n <div className=\"mb-3\">\n <div className=\"text-[10px] font-medium text-muted-foreground mb-1.5\">\n Setup\n </div>\n <ol className=\"space-y-1\">\n {platform.setupSteps.map((step, i) => (\n <li\n key={i}\n className=\"flex gap-1.5 text-[10px] text-muted-foreground leading-relaxed\"\n >\n <span className=\"shrink-0 text-muted-foreground/50\">\n {i + 1}.\n </span>\n {step}\n </li>\n ))}\n </ol>\n </div>\n\n {serviceAccountEmail && (\n <div className=\"mb-3\">\n <div className=\"text-[10px] font-medium text-muted-foreground mb-1\">\n Share documents with\n </div>\n <div className=\"flex items-center gap-1\">\n <code className=\"flex-1 truncate rounded bg-muted px-1.5 py-0.5 text-[10px] text-foreground\">\n {serviceAccountEmail}\n </code>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={() => handleCopy(serviceAccountEmail)}\n className=\"shrink-0 rounded p-0.5 text-muted-foreground hover:text-foreground hover:bg-accent/50\"\n >\n {copied ? <IconCheck size={12} /> : <IconCopy size={12} />}\n </button>\n </TooltipTrigger>\n <TooltipContent>Copy service account email</TooltipContent>\n </Tooltip>\n </div>\n </div>\n )}\n\n {/* Required secrets */}\n {platform.envVars.length > 0 && (\n <div className=\"mb-3\">\n <div className=\"text-[10px] font-medium text-muted-foreground mb-1\">\n Required secrets\n </div>\n <div className=\"space-y-0.5\">\n {platform.envVars.map((v) => (\n <div key={v} className=\"flex items-center gap-1\">\n <code className=\"text-[10px] text-foreground bg-muted px-1 py-0.5 rounded\">\n {v}\n </code>\n {isConfigured && (\n <IconCircleCheck\n size={11}\n className=\"text-green-500 shrink-0\"\n />\n )}\n </div>\n ))}\n </div>\n {!isConfigured && (\n <p className=\"text-[10px] text-amber-500 mt-1\">\n Set these in your .env file or environment to connect.\n </p>\n )}\n </div>\n )}\n\n {/* Webhook URL */}\n {serverStatus?.webhookUrl && !platform.isClient && (\n <div className=\"mb-3\">\n <div className=\"text-[10px] font-medium text-muted-foreground mb-1\">\n Webhook URL\n </div>\n <div className=\"flex items-center gap-1\">\n <code className=\"flex-1 truncate rounded bg-muted px-1.5 py-0.5 text-[10px] text-foreground\">\n {serverStatus.webhookUrl}\n </code>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={() => handleCopy(serverStatus.webhookUrl!)}\n className=\"shrink-0 rounded p-0.5 text-muted-foreground hover:text-foreground hover:bg-accent/50\"\n >\n {copied ? <IconCheck size={12} /> : <IconCopy size={12} />}\n </button>\n </TooltipTrigger>\n <TooltipContent>Copy</TooltipContent>\n </Tooltip>\n </div>\n </div>\n )}\n\n {/* Docs link */}\n {platform.docsUrl && (\n <a\n href={platform.docsUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-[10px] text-blue-400 hover:text-blue-300 mb-3\"\n >\n Documentation\n <IconExternalLink size={10} />\n </a>\n )}\n\n {/* Enable/disable for server integrations */}\n {serverStatus && !platform.isClient && isConfigured && (\n <button\n onClick={handleToggle}\n disabled={toggling}\n className={`w-full rounded-md border px-2 py-1.5 text-[11px] font-medium disabled:opacity-50 ${\n isEnabled\n ? \"border-border text-foreground hover:bg-accent/50\"\n : \"border-green-600/50 text-green-400 hover:bg-green-900/20\"\n }`}\n >\n {toggling ? \"...\" : isEnabled ? \"Disable\" : \"Enable\"}\n </button>\n )}\n\n {/* Status for client integrations */}\n {platform.isClient && (\n <div className=\"rounded-md border border-border bg-muted/30 px-2.5 py-2 text-[10px] text-muted-foreground\">\n This agent's A2A endpoint is automatically available. No configuration\n needed.\n </div>\n )}\n\n {serverStatus?.error && (\n <p className=\"text-[10px] text-destructive mt-2\">\n {serverStatus.error}\n </p>\n )}\n\n {toggleError && (\n <p className=\"text-[10px] text-destructive mt-2\">{toggleError}</p>\n )}\n </div>\n );\n}\n\n// ─── Add integration picker ──────────────────────────────────────────────────\n\nfunction AddIntegrationPicker({\n connectedIds,\n onSelect,\n}: {\n connectedIds: Set<string>;\n onSelect: (platform: PlatformInfo) => void;\n}) {\n return (\n <div className=\"space-y-1\">\n {PLATFORMS.filter((p) => !connectedIds.has(p.id)).map((platform) => (\n <button\n key={platform.id}\n onClick={() => onSelect(platform)}\n className=\"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-start hover:bg-accent/50\"\n >\n <platform.icon size={14} className=\"shrink-0 text-muted-foreground\" />\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-[11px] font-medium text-foreground\">\n {platform.label}\n </div>\n <div className=\"text-[10px] text-muted-foreground truncate\">\n {platform.description}\n </div>\n </div>\n </button>\n ))}\n </div>\n );\n}\n\n// ─── Main panel ──────────────────────────────────────────────────────────────\n\nexport function IntegrationsPanel() {\n const { statuses, loading, refetch } = useIntegrationStatus();\n const [selectedPlatform, setSelectedPlatform] = useState<PlatformInfo | null>(\n null,\n );\n const [showPicker, setShowPicker] = useState(false);\n\n const statusMap = new Map(statuses.map((s) => [s.platform, s]));\n\n // Show connected (enabled or configured) integrations\n const connectedPlatforms = PLATFORMS.filter((p) => {\n const s = statusMap.get(p.id);\n return s?.configured || s?.enabled;\n });\n\n const connectedIds = new Set(connectedPlatforms.map((p) => p.id));\n\n if (selectedPlatform) {\n return (\n <IntegrationDetail\n platform={selectedPlatform}\n serverStatus={statusMap.get(selectedPlatform.id)}\n onBack={() => setSelectedPlatform(null)}\n onRefresh={refetch}\n />\n );\n }\n\n if (showPicker) {\n return (\n <div>\n <button\n onClick={() => setShowPicker(false)}\n className=\"flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground mb-2\"\n >\n <IconChevronLeft size={12} className=\"rtl:-scale-x-100\" />\n Back\n </button>\n <div className=\"text-[10px] font-medium text-muted-foreground mb-1.5\">\n Add a chat integration\n </div>\n <AddIntegrationPicker\n connectedIds={connectedIds}\n onSelect={(p) => {\n setSelectedPlatform(p);\n setShowPicker(false);\n }}\n />\n </div>\n );\n }\n\n return (\n <div>\n <div className=\"flex items-center justify-between mb-1.5\">\n <div>\n <div className=\"text-xs font-medium text-foreground\">\n Chat Integrations\n </div>\n <div className=\"text-[10px] text-muted-foreground\">\n Talk to this agent from other platforms\n </div>\n </div>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={() => setShowPicker(true)}\n className=\"flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50\"\n >\n <IconPlus size={12} />\n </button>\n </TooltipTrigger>\n <TooltipContent>Add integration</TooltipContent>\n </Tooltip>\n </div>\n\n {loading ? (\n <div className=\"space-y-1.5\">\n <div className=\"h-6 w-full rounded bg-muted/50 animate-pulse\" />\n <div className=\"h-6 w-3/4 rounded bg-muted/50 animate-pulse\" />\n </div>\n ) : connectedPlatforms.length === 0 ? (\n <div className=\"space-y-2\">\n <button\n onClick={() => setShowPicker(true)}\n className=\"flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-[11px] text-muted-foreground hover:text-foreground hover:bg-accent/30\"\n >\n <IconPlus size={12} className=\"shrink-0\" />\n Add integration\n </button>\n <div className=\"rounded-md border border-border bg-muted/30 px-2.5 py-2 text-[10px] text-muted-foreground\">\n For a central Slack or Telegram entrypoint that can route work\n across multiple apps, use the{\" \"}\n <a\n href=\"https://dispatch.agent-native.com\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"no-underline font-medium text-foreground hover:text-foreground/80\"\n >\n dispatch template\n </a>\n .\n </div>\n </div>\n ) : (\n <div className=\"space-y-2\">\n {connectedPlatforms.map((platform) => {\n const s = statusMap.get(platform.id);\n return (\n <button\n key={platform.id}\n onClick={() => setSelectedPlatform(platform)}\n className=\"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-start hover:bg-accent/50\"\n >\n <platform.icon\n size={14}\n className=\"shrink-0 text-muted-foreground\"\n />\n <span className=\"flex-1 text-[11px] font-medium text-foreground truncate\">\n {platform.label}\n </span>\n {s && (\n <span\n className={`inline-block h-1.5 w-1.5 rounded-full shrink-0 ${\n s.enabled && s.configured\n ? \"bg-green-500\"\n : s.configured\n ? \"bg-yellow-500\"\n : \"bg-gray-400\"\n }`}\n />\n )}\n </button>\n );\n })}\n <div className=\"rounded-md border border-border bg-muted/30 px-2.5 py-2 text-[10px] text-muted-foreground\">\n Need one shared messaging surface for your workspace? Connect Slack\n or Telegram to a dispatch app and let it delegate to other agents\n over A2A.\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"IntegrationsPanel.js","sourceRoot":"","sources":["../../../src/client/integrations/IntegrationsPanel.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useCallback, useEffect } from \"react\";\nimport {\n IconPlus,\n IconBrandSlack,\n IconBrandTelegram,\n IconBrandWhatsapp,\n IconBrandGoogleDrive,\n IconTerminal2,\n IconBuildingSkyscraper,\n IconCopy,\n IconCheck,\n IconChevronLeft,\n IconExternalLink,\n IconCircleCheck,\n} from \"@tabler/icons-react\";\nimport {\n useIntegrationStatus,\n type IntegrationStatus,\n} from \"./useIntegrationStatus.js\";\nimport { agentNativePath } from \"../api-path.js\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../components/ui/tooltip.js\";\nimport { useT } from \"../i18n.js\";\n\n// ─── Platform config ─────────────────────────────────────────────────────────\n\ninterface PlatformInfo {\n id: string;\n label: string;\n icon: React.ComponentType<any>;\n description: string;\n envVars: string[];\n setupSteps: string[];\n docsUrl?: string;\n /** If true, this is a \"client\" integration (user connects TO the agent) rather than a webhook */\n isClient?: boolean;\n}\n\nconst PLATFORMS: PlatformInfo[] = [\n {\n id: \"slack\",\n label: \"Slack\",\n icon: IconBrandSlack,\n description: \"Message your agent from any Slack channel or DM.\",\n envVars: [\"SLACK_BOT_TOKEN\", \"SLACK_SIGNING_SECRET\"],\n setupSteps: [\n \"Create a Slack app at api.slack.com/apps\",\n 'Enable \"Event Subscriptions\" and point to your webhook URL',\n \"Subscribe to message.im and app_mention events\",\n \"Install the app to your workspace\",\n \"Copy the Bot Token and Signing Secret into your environment\",\n ],\n docsUrl: \"https://api.slack.com/apps\",\n },\n {\n id: \"telegram\",\n label: \"Telegram\",\n icon: IconBrandTelegram,\n description: \"Chat with your agent via a Telegram bot.\",\n envVars: [\"TELEGRAM_BOT_TOKEN\"],\n setupSteps: [\n \"Message @BotFather on Telegram to create a new bot\",\n \"Copy the bot token into your environment\",\n 'Click \"Setup webhook\" below to register automatically',\n ],\n },\n {\n id: \"whatsapp\",\n label: \"WhatsApp\",\n icon: IconBrandWhatsapp,\n description: \"Connect your agent to WhatsApp Business.\",\n envVars: [\"WHATSAPP_TOKEN\", \"WHATSAPP_VERIFY_TOKEN\"],\n setupSteps: [\n \"Create a Meta Business app at developers.facebook.com\",\n \"Set up WhatsApp Business API\",\n \"Configure the webhook URL and verify token\",\n \"Copy the access token into your environment\",\n ],\n docsUrl: \"https://developers.facebook.com/docs/whatsapp\",\n },\n {\n id: \"google-docs\",\n label: \"Google Docs\",\n icon: IconBrandGoogleDrive,\n description: \"Tag the agent in Google Doc comments to get responses.\",\n envVars: [\"GOOGLE_SERVICE_ACCOUNT_KEY\"],\n setupSteps: [\n \"Create a Google Cloud service account and download the JSON key\",\n \"Set GOOGLE_SERVICE_ACCOUNT_KEY in your environment (JSON string or file path)\",\n \"Share your Google Docs with the service account email\",\n 'Write a comment containing \"@Agent\" to trigger the agent',\n ],\n },\n {\n id: \"openclaw\",\n label: \"OpenClaw\",\n icon: IconTerminal2,\n description: \"Access this agent from OpenClaw's unified agent interface.\",\n envVars: [],\n isClient: true,\n setupSteps: [\n \"Install OpenClaw: npm install -g openclaw\",\n \"Add this agent's URL as a provider in your OpenClaw config\",\n \"OpenClaw discovers your agent's capabilities via the A2A protocol\",\n ],\n },\n {\n id: \"claude-code\",\n label: \"Claude Code\",\n icon: IconTerminal2,\n description:\n \"Let Claude Code call this agent via A2A for data and actions.\",\n envVars: [],\n isClient: true,\n setupSteps: [\n \"Your agent exposes an A2A endpoint at /.well-known/agent-card.json\",\n \"In Claude Code, reference your agent's URL when asking for data\",\n \"Claude Code will discover and call your agent's skills automatically\",\n ],\n },\n {\n id: \"builder\",\n label: \"Builder.io\",\n icon: IconBuildingSkyscraper,\n description:\n \"One chat interface that orchestrates all your agents together.\",\n envVars: [],\n isClient: true,\n setupSteps: [\n \"Connect your agent-native apps in your Builder.io workspace\",\n \"Builder.io discovers each agent's skills via A2A\",\n \"Chat with one agent that can trigger actions across all your apps\",\n ],\n docsUrl: \"https://www.builder.io\",\n },\n];\n\nfunction useAgentEngineConfigured() {\n const [configured, setConfigured] = useState<boolean | undefined>(undefined);\n\n const refresh = useCallback(() => {\n fetch(agentNativePath(\"/_agent-native/agent-engine/status\"))\n .then((r) => (r.ok ? r.json() : null))\n .then((data) => {\n if (typeof data?.configured === \"boolean\") {\n setConfigured(data.configured);\n }\n })\n .catch(() => {});\n }, []);\n\n useEffect(() => {\n refresh();\n window.addEventListener(\"agent-engine:configured-changed\", refresh);\n return () =>\n window.removeEventListener(\"agent-engine:configured-changed\", refresh);\n }, [refresh]);\n\n return configured;\n}\n\n// ─── Integration detail view ─────────────────────────────────────────────────\n\nfunction IntegrationDetail({\n platform,\n serverStatus,\n onBack,\n onRefresh,\n}: {\n platform: PlatformInfo;\n serverStatus?: IntegrationStatus;\n onBack: () => void;\n onRefresh: () => void;\n}) {\n const t = useT();\n const [toggling, setToggling] = useState(false);\n const [copied, setCopied] = useState(false);\n const [toggleError, setToggleError] = useState<string | null>(null);\n const agentEngineConfigured = useAgentEngineConfigured();\n\n const handleToggle = useCallback(async () => {\n setToggling(true);\n setToggleError(null);\n try {\n const action = serverStatus?.enabled ? \"disable\" : \"enable\";\n const res = await fetch(\n agentNativePath(`/_agent-native/integrations/${platform.id}/${action}`),\n { method: \"POST\" },\n );\n if (res.ok) {\n onRefresh();\n return;\n }\n // Surface the real reason instead of silently doing nothing.\n // The endpoint returns `{ error }` for known failures (admin gating,\n // missing secrets, etc.); fall back to status text otherwise.\n const data = (await res.json().catch(() => null)) as {\n error?: string;\n } | null;\n setToggleError(\n data?.error ||\n res.statusText ||\n `Couldn't ${action} ${platform.label} (HTTP ${res.status})`,\n );\n } catch (err) {\n setToggleError(\n err instanceof Error ? err.message : t(\"integrations.networkError\"),\n );\n } finally {\n setToggling(false);\n }\n }, [platform.id, platform.label, serverStatus?.enabled, onRefresh]);\n\n const handleCopy = useCallback(async (text: string) => {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n }, []);\n\n const handleOpenLlmSettings = useCallback(() => {\n window.dispatchEvent(\n new CustomEvent(\"agent-panel:open-settings\", {\n detail: { section: \"llm\" },\n }),\n );\n }, []);\n\n const isConfigured = serverStatus?.configured ?? false;\n const isEnabled = serverStatus?.enabled ?? false;\n const showAgentEnginePrereq =\n !platform.isClient && agentEngineConfigured === false;\n const serviceAccountEmail =\n typeof serverStatus?.details?.serviceAccountEmail === \"string\"\n ? serverStatus.details.serviceAccountEmail\n : null;\n\n return (\n <div>\n <button\n onClick={onBack}\n className=\"flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground mb-2\"\n >\n <IconChevronLeft size={12} className=\"rtl:-scale-x-100\" />\n {t(\"integrations.back\")}\n </button>\n\n <div className=\"flex items-center gap-2 mb-2\">\n <platform.icon size={18} className=\"text-foreground shrink-0\" />\n <div>\n <div className=\"text-xs font-medium text-foreground\">\n {platform.label}\n </div>\n <div className=\"text-[10px] text-muted-foreground\">\n {platform.description}\n </div>\n </div>\n </div>\n\n {showAgentEnginePrereq && (\n <div className=\"mb-3 rounded-md border border-amber-500/30 bg-amber-500/10 px-2.5 py-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <div className=\"min-w-0\">\n <div className=\"text-[10px] font-medium text-foreground\">\n {t(\"integrations.agentEngineRequired\")}\n </div>\n <p className=\"mt-0.5 text-[10px] leading-relaxed text-muted-foreground\">\n {t(\"integrations.agentEngineDescription\", {\n platform: platform.label,\n })}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={handleOpenLlmSettings}\n className=\"shrink-0 rounded border border-border bg-background px-2 py-1 text-[10px] font-medium text-muted-foreground transition-colors hover:bg-accent/40 hover:text-foreground\"\n >\n {t(\"integrations.openLlm\")}\n </button>\n </div>\n </div>\n )}\n\n {/* Setup steps */}\n <div className=\"mb-3\">\n <div className=\"text-[10px] font-medium text-muted-foreground mb-1.5\">\n {t(\"integrations.setup\")}\n </div>\n <ol className=\"space-y-1\">\n {platform.setupSteps.map((step, i) => (\n <li\n key={i}\n className=\"flex gap-1.5 text-[10px] text-muted-foreground leading-relaxed\"\n >\n <span className=\"shrink-0 text-muted-foreground/50\">\n {i + 1}.\n </span>\n {step}\n </li>\n ))}\n </ol>\n </div>\n\n {serviceAccountEmail && (\n <div className=\"mb-3\">\n <div className=\"text-[10px] font-medium text-muted-foreground mb-1\">\n {t(\"integrations.shareDocumentsWith\")}\n </div>\n <div className=\"flex items-center gap-1\">\n <code className=\"flex-1 truncate rounded bg-muted px-1.5 py-0.5 text-[10px] text-foreground\">\n {serviceAccountEmail}\n </code>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={() => handleCopy(serviceAccountEmail)}\n className=\"shrink-0 rounded p-0.5 text-muted-foreground hover:text-foreground hover:bg-accent/50\"\n >\n {copied ? <IconCheck size={12} /> : <IconCopy size={12} />}\n </button>\n </TooltipTrigger>\n <TooltipContent>\n {t(\"integrations.copyServiceAccountEmail\")}\n </TooltipContent>\n </Tooltip>\n </div>\n </div>\n )}\n\n {/* Required secrets */}\n {platform.envVars.length > 0 && (\n <div className=\"mb-3\">\n <div className=\"text-[10px] font-medium text-muted-foreground mb-1\">\n {t(\"integrations.requiredSecrets\")}\n </div>\n <div className=\"space-y-0.5\">\n {platform.envVars.map((v) => (\n <div key={v} className=\"flex items-center gap-1\">\n <code className=\"text-[10px] text-foreground bg-muted px-1 py-0.5 rounded\">\n {v}\n </code>\n {isConfigured && (\n <IconCircleCheck\n size={11}\n className=\"text-green-500 shrink-0\"\n />\n )}\n </div>\n ))}\n </div>\n {!isConfigured && (\n <p className=\"text-[10px] text-amber-500 mt-1\">\n {t(\"integrations.envHelp\")}\n </p>\n )}\n </div>\n )}\n\n {/* Webhook URL */}\n {serverStatus?.webhookUrl && !platform.isClient && (\n <div className=\"mb-3\">\n <div className=\"text-[10px] font-medium text-muted-foreground mb-1\">\n {t(\"integrations.webhookUrl\")}\n </div>\n <div className=\"flex items-center gap-1\">\n <code className=\"flex-1 truncate rounded bg-muted px-1.5 py-0.5 text-[10px] text-foreground\">\n {serverStatus.webhookUrl}\n </code>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={() => handleCopy(serverStatus.webhookUrl!)}\n className=\"shrink-0 rounded p-0.5 text-muted-foreground hover:text-foreground hover:bg-accent/50\"\n >\n {copied ? <IconCheck size={12} /> : <IconCopy size={12} />}\n </button>\n </TooltipTrigger>\n <TooltipContent>{t(\"integrations.copy\")}</TooltipContent>\n </Tooltip>\n </div>\n </div>\n )}\n\n {/* Docs link */}\n {platform.docsUrl && (\n <a\n href={platform.docsUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1 text-[10px] text-blue-400 hover:text-blue-300 mb-3\"\n >\n {t(\"integrations.documentation\")}\n <IconExternalLink size={10} />\n </a>\n )}\n\n {/* Enable/disable for server integrations */}\n {serverStatus && !platform.isClient && isConfigured && (\n <button\n onClick={handleToggle}\n disabled={toggling}\n className={`w-full rounded-md border px-2 py-1.5 text-[11px] font-medium disabled:opacity-50 ${\n isEnabled\n ? \"border-border text-foreground hover:bg-accent/50\"\n : \"border-green-600/50 text-green-400 hover:bg-green-900/20\"\n }`}\n >\n {toggling\n ? t(\"integrations.toggling\")\n : isEnabled\n ? t(\"integrations.disable\")\n : t(\"integrations.enable\")}\n </button>\n )}\n\n {/* Status for client integrations */}\n {platform.isClient && (\n <div className=\"rounded-md border border-border bg-muted/30 px-2.5 py-2 text-[10px] text-muted-foreground\">\n {t(\"integrations.clientAvailable\")}\n </div>\n )}\n\n {serverStatus?.error && (\n <p className=\"text-[10px] text-destructive mt-2\">\n {serverStatus.error}\n </p>\n )}\n\n {toggleError && (\n <p className=\"text-[10px] text-destructive mt-2\">{toggleError}</p>\n )}\n </div>\n );\n}\n\n// ─── Add integration picker ──────────────────────────────────────────────────\n\nfunction AddIntegrationPicker({\n connectedIds,\n onSelect,\n}: {\n connectedIds: Set<string>;\n onSelect: (platform: PlatformInfo) => void;\n}) {\n return (\n <div className=\"space-y-1\">\n {PLATFORMS.filter((p) => !connectedIds.has(p.id)).map((platform) => (\n <button\n key={platform.id}\n onClick={() => onSelect(platform)}\n className=\"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-start hover:bg-accent/50\"\n >\n <platform.icon size={14} className=\"shrink-0 text-muted-foreground\" />\n <div className=\"flex-1 min-w-0\">\n <div className=\"text-[11px] font-medium text-foreground\">\n {platform.label}\n </div>\n <div className=\"text-[10px] text-muted-foreground truncate\">\n {platform.description}\n </div>\n </div>\n </button>\n ))}\n </div>\n );\n}\n\n// ─── Main panel ──────────────────────────────────────────────────────────────\n\nexport function IntegrationsPanel() {\n const t = useT();\n const { statuses, loading, refetch } = useIntegrationStatus();\n const [selectedPlatform, setSelectedPlatform] = useState<PlatformInfo | null>(\n null,\n );\n const [showPicker, setShowPicker] = useState(false);\n\n const statusMap = new Map(statuses.map((s) => [s.platform, s]));\n\n // Show connected (enabled or configured) integrations\n const connectedPlatforms = PLATFORMS.filter((p) => {\n const s = statusMap.get(p.id);\n return s?.configured || s?.enabled;\n });\n\n const connectedIds = new Set(connectedPlatforms.map((p) => p.id));\n\n if (selectedPlatform) {\n return (\n <IntegrationDetail\n platform={selectedPlatform}\n serverStatus={statusMap.get(selectedPlatform.id)}\n onBack={() => setSelectedPlatform(null)}\n onRefresh={refetch}\n />\n );\n }\n\n if (showPicker) {\n return (\n <div>\n <button\n onClick={() => setShowPicker(false)}\n className=\"flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground mb-2\"\n >\n <IconChevronLeft size={12} className=\"rtl:-scale-x-100\" />\n {t(\"integrations.back\")}\n </button>\n <div className=\"text-[10px] font-medium text-muted-foreground mb-1.5\">\n {t(\"integrations.addChatIntegration\")}\n </div>\n <AddIntegrationPicker\n connectedIds={connectedIds}\n onSelect={(p) => {\n setSelectedPlatform(p);\n setShowPicker(false);\n }}\n />\n </div>\n );\n }\n\n return (\n <div>\n <div className=\"flex items-center justify-between mb-1.5\">\n <div>\n <div className=\"text-xs font-medium text-foreground\">\n {t(\"integrations.chatIntegrations\")}\n </div>\n <div className=\"text-[10px] text-muted-foreground\">\n {t(\"integrations.chatIntegrationsDescription\")}\n </div>\n </div>\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n onClick={() => setShowPicker(true)}\n className=\"flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50\"\n >\n <IconPlus size={12} />\n </button>\n </TooltipTrigger>\n <TooltipContent>{t(\"integrations.addIntegration\")}</TooltipContent>\n </Tooltip>\n </div>\n\n {loading ? (\n <div className=\"space-y-1.5\">\n <div className=\"h-6 w-full rounded bg-muted/50 animate-pulse\" />\n <div className=\"h-6 w-3/4 rounded bg-muted/50 animate-pulse\" />\n </div>\n ) : connectedPlatforms.length === 0 ? (\n <div className=\"space-y-2\">\n <button\n onClick={() => setShowPicker(true)}\n className=\"flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-[11px] text-muted-foreground hover:text-foreground hover:bg-accent/30\"\n >\n <IconPlus size={12} className=\"shrink-0\" />\n {t(\"integrations.addIntegration\")}\n </button>\n <div className=\"rounded-md border border-border bg-muted/30 px-2.5 py-2 text-[10px] text-muted-foreground\">\n {t(\"integrations.dispatchEntrypoint\")}{\" \"}\n <a\n href=\"https://dispatch.agent-native.com\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"no-underline font-medium text-foreground hover:text-foreground/80\"\n >\n dispatch template\n </a>\n .\n </div>\n </div>\n ) : (\n <div className=\"space-y-2\">\n {connectedPlatforms.map((platform) => {\n const s = statusMap.get(platform.id);\n return (\n <button\n key={platform.id}\n onClick={() => setSelectedPlatform(platform)}\n className=\"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-start hover:bg-accent/50\"\n >\n <platform.icon\n size={14}\n className=\"shrink-0 text-muted-foreground\"\n />\n <span className=\"flex-1 text-[11px] font-medium text-foreground truncate\">\n {platform.label}\n </span>\n {s && (\n <span\n className={`inline-block h-1.5 w-1.5 rounded-full shrink-0 ${\n s.enabled && s.configured\n ? \"bg-green-500\"\n : s.configured\n ? \"bg-yellow-500\"\n : \"bg-gray-400\"\n }`}\n />\n )}\n </button>\n );\n })}\n <div className=\"rounded-md border border-border bg-muted/30 px-2.5 py-2 text-[10px] text-muted-foreground\">\n {t(\"integrations.sharedMessaging\")}\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObservabilityDashboard.d.ts","sourceRoot":"","sources":["../../../src/client/observability/ObservabilityDashboard.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ObservabilityDashboard.d.ts","sourceRoot":"","sources":["../../../src/client/observability/ObservabilityDashboard.tsx"],"names":[],"mappings":"AA00BA,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,GACV,EAAE,2BAA2B,2CAwC7B"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useState } from "react";
|
|
3
3
|
import { IconActivity, IconMessages, IconThumbUp, IconThumbDown, IconClock, IconCoin, IconTool, IconMoodSmile, IconChartBar, IconAB2, IconMessageReport, IconChevronRight, IconArrowLeft, IconLoader2, IconAlertTriangle, } from "@tabler/icons-react";
|
|
4
4
|
import { cn } from "../utils.js";
|
|
5
|
+
import { useT } from "../i18n.js";
|
|
5
6
|
import { useObservabilityOverview, useTraces, useTraceDetail, useFeedbackList, useFeedbackStats, useSatisfaction, useEvalStats, useExperiments, useExperimentDetail, useExperimentResults, } from "./useObservability.js";
|
|
6
7
|
// ─── Helpers ────────────────────────────────────────────────────────────
|
|
7
8
|
function formatCost(centsX100) {
|
|
@@ -75,15 +76,17 @@ function LoadingState() {
|
|
|
75
76
|
}
|
|
76
77
|
// ─── Tab: Overview ──────────────────────────────────────────────────────
|
|
77
78
|
function OverviewTab({ days }) {
|
|
79
|
+
const t = useT();
|
|
78
80
|
const { data, isLoading } = useObservabilityOverview(days);
|
|
79
81
|
if (isLoading)
|
|
80
82
|
return _jsx(LoadingState, {});
|
|
81
83
|
if (!data)
|
|
82
|
-
return _jsx(EmptyState, { message: "
|
|
83
|
-
return (_jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-3", children: [_jsx(MetricCard, { label: "
|
|
84
|
+
return _jsx(EmptyState, { message: t("observability.noData") });
|
|
85
|
+
return (_jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-3", children: [_jsx(MetricCard, { label: t("observability.totalRuns"), value: String(data.totalRuns), icon: _jsx(IconActivity, { size: 16 }) }), _jsx(MetricCard, { label: t("observability.totalCost"), value: formatCostCents(data.totalCostCents), icon: _jsx(IconCoin, { size: 16 }) }), _jsx(MetricCard, { label: t("observability.avgLatency"), value: formatDuration(data.avgDurationMs), icon: _jsx(IconClock, { size: 16 }) }), _jsx(MetricCard, { label: t("observability.toolSuccess"), value: formatPercent(data.toolSuccessRate), icon: _jsx(IconTool, { size: 16 }) }), _jsx(MetricCard, { label: t("observability.thumbsUp"), value: formatPercent(data.thumbsUpRate), icon: _jsx(IconThumbUp, { size: 16 }) }), _jsx(MetricCard, { label: t("observability.avgEvalScore"), value: data.avgEvalScore.toFixed(2), icon: _jsx(IconMoodSmile, { size: 16 }) })] }));
|
|
84
86
|
}
|
|
85
87
|
// ─── Tab: Conversations ─────────────────────────────────────────────────
|
|
86
88
|
function ConversationsTab({ days }) {
|
|
89
|
+
const t = useT();
|
|
87
90
|
const { data: traces, isLoading } = useTraces(days);
|
|
88
91
|
const [selectedRunId, setSelectedRunId] = useState(null);
|
|
89
92
|
if (selectedRunId) {
|
|
@@ -92,27 +95,32 @@ function ConversationsTab({ days }) {
|
|
|
92
95
|
if (isLoading)
|
|
93
96
|
return _jsx(LoadingState, {});
|
|
94
97
|
if (!traces || traces.length === 0)
|
|
95
|
-
return _jsx(EmptyState, { message: "
|
|
96
|
-
return (_jsx("div", { className: "rounded-lg border border-border overflow-hidden", children: _jsxs("table", { className: "w-full table-fixed text-left text-xs", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-muted/30", children: [_jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground w-[15%]", children: "
|
|
98
|
+
return _jsx(EmptyState, { message: t("observability.noConversations") });
|
|
99
|
+
return (_jsx("div", { className: "rounded-lg border border-border overflow-hidden", children: _jsxs("table", { className: "w-full table-fixed text-left text-xs", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-muted/30", children: [_jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground w-[15%]", children: t("observability.run") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground w-[20%]", children: t("observability.model") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: t("observability.duration") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: t("observability.cost") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: t("observability.tools") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: t("observability.time") }), _jsx("th", { className: "w-8" })] }) }), _jsx("tbody", { children: traces.map((trace) => (_jsxs("tr", { onClick: () => setSelectedRunId(trace.runId), className: "border-b border-border last:border-b-0 cursor-pointer hover:bg-accent/30", children: [_jsx("td", { className: "px-3 py-2 font-mono text-foreground truncate", children: truncateId(trace.runId) }), _jsx("td", { className: "px-3 py-2 text-muted-foreground truncate", children: trace.model || "unknown" }), _jsx("td", { className: "px-3 py-2 tabular-nums text-muted-foreground", children: formatDuration(trace.totalDurationMs) }), _jsx("td", { className: "px-3 py-2 tabular-nums text-muted-foreground", children: formatCost(trace.totalCostCentsX100) }), _jsxs("td", { className: "px-3 py-2 tabular-nums text-muted-foreground", children: [trace.toolCalls, trace.failedTools > 0 && (_jsx("span", { className: "ml-1 text-red-500", children: t("observability.failedCount", {
|
|
100
|
+
count: trace.failedTools,
|
|
101
|
+
}) }))] }), _jsx("td", { className: "px-3 py-2 text-muted-foreground truncate", children: timeAgo(trace.createdAt) }), _jsx("td", { className: "px-3 py-2", children: _jsx(IconChevronRight, { size: 14, className: "text-muted-foreground" }) })] }, trace.runId))) })] }) }));
|
|
97
102
|
}
|
|
98
103
|
function TraceDetailView({ runId, onBack, }) {
|
|
104
|
+
const t = useT();
|
|
99
105
|
const { data, isLoading } = useTraceDetail(runId);
|
|
100
|
-
return (_jsxs("div", { children: [_jsxs("button", { onClick: onBack, className: "flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground mb-3", children: [_jsx(IconArrowLeft, { size: 14 }), "
|
|
106
|
+
return (_jsxs("div", { children: [_jsxs("button", { onClick: onBack, className: "flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground mb-3", children: [_jsx(IconArrowLeft, { size: 14 }), t("observability.backToList")] }), isLoading && _jsx(LoadingState, {}), data && (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-4", children: [_jsxs("div", { className: "rounded-lg border border-border p-3", children: [_jsx("div", { className: "text-[10px] text-muted-foreground mb-1", children: t("observability.model") }), _jsx("div", { className: "text-sm font-medium text-foreground truncate", children: data.summary.model || "unknown" })] }), _jsxs("div", { className: "rounded-lg border border-border p-3", children: [_jsx("div", { className: "text-[10px] text-muted-foreground mb-1", children: t("observability.duration") }), _jsx("div", { className: "text-sm font-medium tabular-nums text-foreground", children: formatDuration(data.summary.totalDurationMs) })] }), _jsxs("div", { className: "rounded-lg border border-border p-3", children: [_jsx("div", { className: "text-[10px] text-muted-foreground mb-1", children: t("observability.cost") }), _jsx("div", { className: "text-sm font-medium tabular-nums text-foreground", children: formatCost(data.summary.totalCostCentsX100) })] }), _jsxs("div", { className: "rounded-lg border border-border p-3", children: [_jsx("div", { className: "text-[10px] text-muted-foreground mb-1", children: t("observability.spans") }), _jsx("div", { className: "text-sm font-medium tabular-nums text-foreground", children: data.summary.totalSpans })] })] }), _jsx("div", { className: "rounded-lg border border-border overflow-hidden", children: _jsxs("table", { className: "w-full table-fixed text-left text-xs", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-muted/30", children: [_jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground w-[15%]", children: t("observability.type") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground w-[35%]", children: t("observability.name") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: t("observability.duration") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: t("observability.tokens") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: t("observability.status") })] }) }), _jsx("tbody", { children: data.spans.map((span) => (_jsxs("tr", { className: "border-b border-border last:border-b-0", children: [_jsx("td", { className: "px-3 py-2 truncate", children: _jsx("span", { className: "rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground", children: span.spanType.replace("_", " ") }) }), _jsx("td", { className: "px-3 py-2 font-medium text-foreground truncate", children: span.name }), _jsx("td", { className: "px-3 py-2 tabular-nums text-muted-foreground", children: formatDuration(span.durationMs) }), _jsx("td", { className: "px-3 py-2 tabular-nums text-muted-foreground", children: span.inputTokens + span.outputTokens > 0
|
|
101
107
|
? `${span.inputTokens} / ${span.outputTokens}`
|
|
102
108
|
: "-" }), _jsx("td", { className: "px-3 py-2", children: _jsx(StatusBadge, { status: span.status }) })] }, span.id))) })] }) })] }))] }));
|
|
103
109
|
}
|
|
104
110
|
// ─── Tab: Evals ─────────────────────────────────────────────────────────
|
|
105
111
|
function EvalsTab({ days }) {
|
|
112
|
+
const t = useT();
|
|
106
113
|
const { data, isLoading } = useEvalStats(days);
|
|
107
114
|
if (isLoading)
|
|
108
115
|
return _jsx(LoadingState, {});
|
|
109
116
|
if (!data || data.totalEvals === 0)
|
|
110
|
-
return _jsx(EmptyState, { message: "
|
|
117
|
+
return _jsx(EmptyState, { message: t("observability.noEvals") });
|
|
111
118
|
const maxCount = Math.max(...data.byCriteria.map((c) => c.count), 1);
|
|
112
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsx(MetricCard, { label: "
|
|
119
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsx(MetricCard, { label: t("observability.totalEvals"), value: String(data.totalEvals), icon: _jsx(IconChartBar, { size: 16 }) }), _jsx(MetricCard, { label: t("observability.avgScore"), value: data.avgScore.toFixed(2), icon: _jsx(IconMoodSmile, { size: 16 }) })] }), data.byCriteria.length > 0 && (_jsxs("div", { children: [_jsx("h3", { className: "text-xs font-medium text-foreground mb-2", children: t("observability.scoresByCriteria") }), _jsx("div", { className: "space-y-2", children: data.byCriteria.map((c) => (_jsxs("div", { children: [_jsxs("div", { className: "flex items-center justify-between gap-2 text-xs mb-1 min-w-0", children: [_jsx("span", { className: "text-foreground truncate min-w-0", children: c.criteria }), _jsxs("span", { className: "shrink-0 text-muted-foreground tabular-nums", children: [c.avgScore.toFixed(2), " avg (", c.count, ")"] })] }), _jsx("div", { className: "h-1.5 rounded-full bg-muted overflow-hidden", children: _jsx("div", { className: "h-full bg-foreground/70 rounded-full", style: { width: `${(c.count / maxCount) * 100}%` } }) })] }, c.criteria))) })] }))] }));
|
|
113
120
|
}
|
|
114
121
|
// ─── Tab: Experiments ───────────────────────────────────────────────────
|
|
115
122
|
function ExperimentsTab() {
|
|
123
|
+
const t = useT();
|
|
116
124
|
const { data: experiments, isLoading } = useExperiments();
|
|
117
125
|
const [selectedId, setSelectedId] = useState(null);
|
|
118
126
|
if (selectedId) {
|
|
@@ -121,16 +129,18 @@ function ExperimentsTab() {
|
|
|
121
129
|
if (isLoading)
|
|
122
130
|
return _jsx(LoadingState, {});
|
|
123
131
|
if (!experiments || experiments.length === 0)
|
|
124
|
-
return _jsx(EmptyState, { message: "
|
|
125
|
-
return (_jsx("div", { className: "rounded-lg border border-border overflow-hidden", children: _jsxs("table", { className: "w-full table-fixed text-left text-xs", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-muted/30", children: [_jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground w-[40%]", children: "
|
|
132
|
+
return _jsx(EmptyState, { message: t("observability.noExperiments") });
|
|
133
|
+
return (_jsx("div", { className: "rounded-lg border border-border overflow-hidden", children: _jsxs("table", { className: "w-full table-fixed text-left text-xs", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-muted/30", children: [_jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground w-[40%]", children: t("observability.name") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: t("observability.status") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: t("observability.variants") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: t("observability.created") }), _jsx("th", { className: "w-8" })] }) }), _jsx("tbody", { children: experiments.map((exp) => (_jsxs("tr", { onClick: () => setSelectedId(exp.id), className: "border-b border-border last:border-b-0 cursor-pointer hover:bg-accent/30", children: [_jsx("td", { className: "px-3 py-2 font-medium text-foreground truncate", children: exp.name }), _jsx("td", { className: "px-3 py-2", children: _jsx(StatusBadge, { status: exp.status }) }), _jsx("td", { className: "px-3 py-2 tabular-nums text-muted-foreground", children: exp.variants.length }), _jsx("td", { className: "px-3 py-2 text-muted-foreground", children: timeAgo(exp.createdAt) }), _jsx("td", { className: "px-3 py-2", children: _jsx(IconChevronRight, { size: 14, className: "text-muted-foreground" }) })] }, exp.id))) })] }) }));
|
|
126
134
|
}
|
|
127
135
|
function ExperimentDetailView({ id, onBack, }) {
|
|
136
|
+
const t = useT();
|
|
128
137
|
const { data: exp, isLoading } = useExperimentDetail(id);
|
|
129
138
|
const { data: results } = useExperimentResults(id);
|
|
130
|
-
return (_jsxs("div", { children: [_jsxs("button", { onClick: onBack, className: "flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground mb-3", children: [_jsx(IconArrowLeft, { size: 14 }), "
|
|
139
|
+
return (_jsxs("div", { children: [_jsxs("button", { onClick: onBack, className: "flex items-center gap-1 text-xs text-muted-foreground hover:text-foreground mb-3", children: [_jsx(IconArrowLeft, { size: 14 }), t("observability.backToExperiments")] }), isLoading && _jsx(LoadingState, {}), exp && (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex items-center justify-between gap-2 min-w-0", children: [_jsx("h3", { className: "text-sm font-medium text-foreground truncate min-w-0", children: exp.name }), _jsx(StatusBadge, { status: exp.status })] }), _jsxs("div", { className: "grid grid-cols-3 gap-3", children: [_jsxs("div", { className: "rounded-lg border border-border p-3", children: [_jsx("div", { className: "text-[10px] text-muted-foreground mb-1", children: t("observability.variants") }), _jsx("div", { className: "text-sm font-medium tabular-nums text-foreground", children: exp.variants.length })] }), _jsxs("div", { className: "rounded-lg border border-border p-3", children: [_jsx("div", { className: "text-[10px] text-muted-foreground mb-1", children: t("observability.metrics") }), _jsx("div", { className: "text-sm font-medium tabular-nums text-foreground", children: exp.metrics.length })] }), _jsxs("div", { className: "rounded-lg border border-border p-3", children: [_jsx("div", { className: "text-[10px] text-muted-foreground mb-1", children: t("observability.level") }), _jsx("div", { className: "text-sm font-medium text-foreground capitalize", children: exp.assignmentLevel })] })] }), exp.variants.length > 0 && (_jsxs("div", { children: [_jsx("h4", { className: "text-xs font-medium text-foreground mb-2", children: t("observability.variants") }), _jsx("div", { className: "space-y-1", children: exp.variants.map((v) => (_jsxs("div", { className: "flex items-center justify-between rounded border border-border px-3 py-2 text-xs", children: [_jsx("span", { className: "font-mono text-foreground", children: truncateId(v.id) }), _jsxs("span", { className: "text-muted-foreground tabular-nums", children: ["Weight: ", v.weight] })] }, v.id))) })] })), results && results.length > 0 && (_jsxs("div", { children: [_jsx("h4", { className: "text-xs font-medium text-foreground mb-2", children: t("observability.results") }), _jsx("div", { className: "rounded-lg border border-border overflow-hidden", children: _jsxs("table", { className: "w-full table-fixed text-left text-xs", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-muted/30", children: [_jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground w-[20%]", children: t("observability.variant") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground w-[25%]", children: t("observability.metric") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: t("observability.value") }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: "CI" }), _jsx("th", { className: "px-3 py-2 font-medium text-muted-foreground", children: "N" })] }) }), _jsx("tbody", { children: results.map((r) => (_jsxs("tr", { className: "border-b border-border last:border-b-0", children: [_jsx("td", { className: "px-3 py-2 font-mono text-foreground truncate", children: truncateId(r.variantId) }), _jsx("td", { className: "px-3 py-2 text-foreground truncate", children: r.metric }), _jsx("td", { className: "px-3 py-2 tabular-nums text-foreground", children: r.value.toFixed(3) }), _jsxs("td", { className: "px-3 py-2 tabular-nums text-muted-foreground", children: ["[", r.confidenceLow.toFixed(3), ",", " ", r.confidenceHigh.toFixed(3), "]"] }), _jsx("td", { className: "px-3 py-2 tabular-nums text-muted-foreground", children: r.sampleSize })] }, r.id))) })] }) })] }))] }))] }));
|
|
131
140
|
}
|
|
132
141
|
// ─── Tab: Feedback ──────────────────────────────────────────────────────
|
|
133
142
|
function FeedbackTab({ days }) {
|
|
143
|
+
const t = useT();
|
|
134
144
|
const { data: stats, isLoading: statsLoading } = useFeedbackStats(days);
|
|
135
145
|
const { data: entries, isLoading: listLoading } = useFeedbackList(days);
|
|
136
146
|
const { data: satisfaction } = useSatisfaction(days);
|
|
@@ -143,27 +153,40 @@ function FeedbackTab({ days }) {
|
|
|
143
153
|
? satisfaction.reduce((sum, s) => sum + s.frustrationScore, 0) /
|
|
144
154
|
satisfaction.length
|
|
145
155
|
: 0;
|
|
146
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-4", children: [_jsx(MetricCard, { label: "
|
|
156
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-4", children: [_jsx(MetricCard, { label: t("observability.totalFeedback"), value: String(stats?.total ?? 0), icon: _jsx(IconMessageReport, { size: 16 }) }), _jsx(MetricCard, { label: t("observability.thumbsUp"), value: String(stats?.thumbsUp ?? 0), icon: _jsx(IconThumbUp, { size: 16 }) }), _jsx(MetricCard, { label: t("observability.thumbsDown"), value: String(stats?.thumbsDown ?? 0), icon: _jsx(IconThumbDown, { size: 16 }) }), _jsx(MetricCard, { label: t("observability.frustration"), value: avgFrustration.toFixed(2), icon: _jsx(IconAlertTriangle, { size: 16 }) })] }), thumbsTotal > 0 && (_jsxs("div", { className: "rounded-lg border border-border p-3", children: [_jsx("div", { className: "text-xs text-muted-foreground mb-2", children: t("observability.thumbsUpRate") }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "flex-1 h-2 rounded-full bg-muted overflow-hidden", children: _jsx("div", { className: "h-full bg-green-500 rounded-full", style: { width: `${thumbsUpRate * 100}%` } }) }), _jsx("span", { className: "text-sm font-medium tabular-nums text-foreground", children: formatPercent(thumbsUpRate) })] })] })), stats?.categories && Object.keys(stats.categories).length > 0 && (_jsxs("div", { children: [_jsx("h3", { className: "text-xs font-medium text-foreground mb-2", children: t("observability.categories") }), _jsx("div", { className: "flex flex-wrap gap-1.5", children: Object.entries(stats.categories).map(([cat, count]) => (_jsxs("span", { className: "inline-flex items-center gap-1 rounded-full border border-border px-2.5 py-1 text-[10px] text-foreground max-w-[200px]", children: [_jsx("span", { className: "truncate", children: cat }), _jsx("span", { className: "shrink-0 text-muted-foreground tabular-nums", children: count })] }, cat))) })] })), entries && entries.length > 0 && (_jsxs("div", { children: [_jsx("h3", { className: "text-xs font-medium text-foreground mb-2", children: "Recent feedback" }), _jsx("div", { className: "space-y-1 max-h-64 overflow-y-auto overflow-x-hidden rounded-lg border border-border", children: entries.map((entry) => (_jsxs("div", { className: "flex items-center gap-2 px-3 py-2 text-xs border-b border-border last:border-b-0 min-w-0", children: [_jsxs("span", { className: "shrink-0", children: [entry.feedbackType === "thumbs_up" && (_jsx(IconThumbUp, { size: 14, className: "text-green-500" })), entry.feedbackType === "thumbs_down" && (_jsx(IconThumbDown, { size: 14, className: "text-red-500" })), entry.feedbackType === "category" && (_jsx(IconChartBar, { size: 14, className: "text-blue-500" })), entry.feedbackType === "text" && (_jsx(IconMessages, { size: 14, className: "text-muted-foreground" }))] }), _jsx("span", { className: "flex-1 min-w-0 truncate text-foreground", children: entry.feedbackType === "text" ||
|
|
147
157
|
entry.feedbackType === "category"
|
|
148
158
|
? entry.value
|
|
149
159
|
: entry.feedbackType.replace("_", " ") }), _jsx("span", { className: "shrink-0 text-muted-foreground", children: timeAgo(entry.createdAt) })] }, entry.id))) })] }))] }));
|
|
150
160
|
}
|
|
151
161
|
// ─── Main Dashboard ─────────────────────────────────────────────────────
|
|
152
162
|
const TABS = [
|
|
153
|
-
{ id: "overview",
|
|
154
|
-
{
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
163
|
+
{ id: "overview", labelKey: "observability.overview", icon: IconActivity },
|
|
164
|
+
{
|
|
165
|
+
id: "conversations",
|
|
166
|
+
labelKey: "observability.conversations",
|
|
167
|
+
icon: IconMessages,
|
|
168
|
+
},
|
|
169
|
+
{ id: "evals", labelKey: "observability.evals", icon: IconChartBar },
|
|
170
|
+
{
|
|
171
|
+
id: "experiments",
|
|
172
|
+
labelKey: "observability.experiments",
|
|
173
|
+
icon: IconAB2,
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
id: "feedback",
|
|
177
|
+
labelKey: "observability.feedback",
|
|
178
|
+
icon: IconMessageReport,
|
|
179
|
+
},
|
|
158
180
|
];
|
|
159
181
|
export function ObservabilityDashboard({ className, }) {
|
|
182
|
+
const t = useT();
|
|
160
183
|
const [activeTab, setActiveTab] = useState("overview");
|
|
161
184
|
const [days, setDays] = useState(7);
|
|
162
185
|
return (_jsxs("div", { className: cn("space-y-4", className), children: [_jsxs("div", { className: "flex items-center justify-between gap-4 flex-wrap", children: [_jsx("div", { className: "flex gap-1 rounded-lg border border-border p-1 bg-muted/30", children: TABS.map((tab) => {
|
|
163
186
|
const Icon = tab.icon;
|
|
164
187
|
return (_jsxs("button", { onClick: () => setActiveTab(tab.id), className: cn("flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium", activeTab === tab.id
|
|
165
188
|
? "bg-background text-foreground shadow-sm"
|
|
166
|
-
: "text-muted-foreground hover:text-foreground"), children: [_jsx(Icon, { size: 14 }), tab.
|
|
189
|
+
: "text-muted-foreground hover:text-foreground"), children: [_jsx(Icon, { size: 14 }), t(tab.labelKey)] }, tab.id));
|
|
167
190
|
}) }), activeTab !== "experiments" && (_jsx(RangeSelector, { value: days, onChange: setDays }))] }), activeTab === "overview" && _jsx(OverviewTab, { days: days }), activeTab === "conversations" && _jsx(ConversationsTab, { days: days }), activeTab === "evals" && _jsx(EvalsTab, { days: days }), activeTab === "experiments" && _jsx(ExperimentsTab, {}), activeTab === "feedback" && _jsx(FeedbackTab, { days: days })] }));
|
|
168
191
|
}
|
|
169
192
|
//# sourceMappingURL=ObservabilityDashboard.js.map
|