@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":"routes.js","sourceRoot":"","sources":["../../src/extensions/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,GAElB,MAAM,IAAI,CAAC;AACZ,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EACL,qBAAqB,EACrB,eAAe,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACL,cAAc,EACd,YAAY,EACZ,0BAA0B,EAC1B,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,8BAA8B,EAC9B,eAAe,EACf,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,GAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EACL,qCAAqC,EACrC,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,yBAAyB,EACzB,aAAa,EACb,YAAY,EACZ,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrE,MAAM,UAAU,uBAAuB;IACrC,OAAO,kBAAkB,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;QACjD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,IAAI,EAAE,CAAC;aACzC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;aACnB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,QAAQ;YACpB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC/B,IAAI,CAAC;oBACH,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAClC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YACpB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;QAC9C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;QAE1D,IAAI,CAAC;YACH,OAAO,MAAM,qBAAqB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE;gBAClE,MAAM,sBAAsB,EAAE,CAAC;gBAC/B,OAAO,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAClC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YAChC,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,KAAc,EACd,MAAc,EACd,KAAe,EACf,SAAiB;IAEjB,wDAAwD;IACxD,IACE,MAAM,KAAK,MAAM;QACjB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK;QAClB,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,EACpB,CAAC;QACD,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,mDAAmD;IACnD,IACE,MAAM,KAAK,MAAM;QACjB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK;QAClB,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EACnB,CAAC;QACD,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,kEAAkE;IAClE,IAAI,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QAClE,OAAO,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACvE,CAAC;IAED,8DAA8D;IAC9D,IAAI,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACnE,OAAO,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACzE,CAAC;IAED,iEAAiE;IACjE,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACrE,OAAO,yBAAyB,CAC9B,KAAK,EACL,KAAK,CAAC,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,CAAC,EACR,SAAS,CACV,CAAC;IACJ,CAAC;IAED,cAAc;IACd,IAAI,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QACpE,OAAO,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,qEAAqE;IACrE,0EAA0E;IAC1E,IAAI,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,qBAAqB,GACzB,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,uBAAuB,CAAC,KAAK,MAAM,CAAC;QACnE,MAAM,cAAc,GAClB,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAAC;QAC5D,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,mBAAmB,EAAE,CAAC;QAC3E,OAAO,OAAO,CAAC,GAAG,CAChB,CAAC,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAClC,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,CAAC,CACtD,CACF,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QACvC,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QAC9C,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACpE,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACzE,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,kBAAkB,CAC7B,cAAc,CAAC,OAAO,EACtB,SAAS,EACT,MAAM,EACN,KAAK,CAAC,CAAC,CAAC,EACR;gBACE,WAAW,EAAE,cAAc,CAAC,UAAU;gBACtC,WAAW,EAAE,SAAS;gBACtB,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,aAAa;gBACrB,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,WAAW;aAC/C,CACF,CAAC;YACF,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,0BAA0B,CAAC,CAAC;YACrE,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,CAAC,CAAC;YAC1E,iBAAiB,CAAC,KAAK,EAAE,wBAAwB,EAAE,SAAS,CAAC,CAAC;YAC9D,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,MAAM,EAAE,QAAQ,CAAC;QACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC1C,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACvC,mEAAmE;QACnE,gEAAgE;QAChE,2DAA2D;QAC3D,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC;QAEpD,MAAM,IAAI,GAAG,kBAAkB,CAC7B,SAAS,CAAC,OAAO,EACjB,SAAS,EACT,MAAM,EACN,KAAK,CAAC,CAAC,CAAC,EACR;YACE,WAAW,EAAE,SAAS,CAAC,UAAU;YACjC,WAAW,EAAE,SAAS;YACtB,QAAQ;YACR,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CACF,CAAC;QACF,2EAA2E;QAC3E,iEAAiE;QACjE,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,0BAA0B,CAAC,CAAC;QACrE,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,CAAC,CAAC;QAC1E,iBAAiB,CAAC,KAAK,EAAE,wBAAwB,EAAE,SAAS,CAAC,CAAC;QAC9D,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2DAA2D;IAC3D,IAAI,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QACrE,MAAM,aAAa,GAAG,MAAM,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,aAAa;YAAE,OAAO,aAAa,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,KAAK,GACT,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS;YAC7C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACzB,MAAM,cAAc,GAClB,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAAC;QAC5D,OAAO;YACL,OAAO,EAAE,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC5C,KAAK;gBACL,cAAc;aACf,CAAC;SACH,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,IAAI,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QACrE,MAAM,aAAa,GAAG,MAAM,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,aAAa;YAAE,OAAO,aAAa,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,0EAA0E;IAC1E,IACE,MAAM,KAAK,MAAM;QACjB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;QACtB,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EACtB,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,aAAa;YAAE,OAAO,aAAa,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,WAAW;IACX,IAAI,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,iBAAiB,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,QAAwB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,0EAA0E;IAC1E,2EAA2E;IAC3E,IAAI,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACnE,MAAM,aAAa,GAAG,MAAM,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,aAAa;YAAE,OAAO,aAAa,CAAC;QACxC,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,sEAAsE;IACtE,IAAI,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACrE,MAAM,aAAa,GAAG,MAAM,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,aAAa;YAAE,OAAO,aAAa,CAAC;QACxC,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,yEAAyE;IACzE,IAAI,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;QAC1E,MAAM,aAAa,GAAG,MAAM,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,aAAa;YAAE,OAAO,aAAa,CAAC;QACxC,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;IAED,gEAAgE;IAChE,IAAI,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,eAAe,EAAE,CAAC;QAC5E,MAAM,aAAa,GAAG,MAAM,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,aAAa;YAAE,OAAO,aAAa,CAAC;QACxC,MAAM,EAAE,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAC7C,CAAC;IAED,WAAW;IACX,IAAI,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,MAAM,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,aAAa;YAAE,OAAO,aAAa,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,gBAAgB,GACpB,IAAI,CAAC,OAAO,KAAK,SAAS;YAC1B,IAAI,CAAC,OAAO,KAAK,SAAS;YAC1B,IAAI,CAAC,KAAK,KAAK,SAAS;YACxB,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;QAC5B,MAAM,aAAa,GACjB,IAAI,CAAC,IAAI,KAAK,SAAS;YACvB,IAAI,CAAC,WAAW,KAAK,SAAS;YAC9B,IAAI,CAAC,IAAI,KAAK,SAAS;YACvB,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC;QAEhC,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,GAAG,MAAM,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC9C,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;aACvD,CAAC,CAAC;QACL,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,gBAAgB,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,cAAc;IACd,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,aAAa,GAAG,MAAM,6BAA6B,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,aAAa;YAAE,OAAO,aAAa,CAAC;QACxC,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,GAAqC,EACrC,IAAiC,EACjC,UAAwC,EAAE;IAE1C,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,KAAK;QACxB,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,CAAC,IAAI;YACL,CAAC,MAAM,aAAa,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;iBACtC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC;iBACtC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,WAAW,GACf,OAAO,CAAC,cAAc,KAAK,KAAK;QAC9B,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;QACjD,CAAC,CAAC,GAAG,CAAC;IACV,OAAO;QACL,GAAG,WAAW;QACd,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,KAAK;YACZ,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,YAAY;gBACZ,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACrD,CAAC,CAAC,KAAK;QACX,SAAS,EAAE,KAAK;YACd,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,YAAY;gBACZ,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC3C,CAAC,CAAC,KAAK;QACX,cAAc,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI;KACrC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,KAAc,EACd,WAAmB;IAEnB,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IACjC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9B,OAAO;QACL,KAAK,EACH,2LAA2L;QAC7L,MAAM,EAAE,cAAc,CAAC,MAAM;KAC9B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,KAAc,EACd,WAAmB,EACnB,UAAkB,EAClB,SAAiB;IAEjB,MAAM,sBAAsB,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,SAAS;QAC9B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;QAClC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC1C,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,MAAM,UAAU,GAAG,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,UAAU;QACtB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC;QACjD,CAAC,CAAC,GAAG,CAAC;IACR,MAAM,KAAK,GAAG,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC;IACxD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAEhC,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;YAClC,GAAG,EAAE;;;;gBAIK;YACV,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC;SAC9C,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;YAClC,GAAG,EAAE;;;;;gBAKK;YACV,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC;SAC/D,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAClC,GAAG,EAAE;;;;cAIK;QACV,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC;KAClD,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,KAAc,EACd,WAAmB,EACnB,UAAkB,EAClB,SAAiB;IAEjB,MAAM,sBAAsB,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,SAAS;QAC9B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;QAClC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC1C,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;IACvC,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GACR,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACpD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAEhC,IAAI,KAAK,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,MAAM,cAAc,GAAG,EAAE;QACvB,CAAC,CAAC;4EACsE;QACxE,CAAC,CAAC;4EACsE,CAAC;IAE3E,MAAM,MAAM,CAAC,OAAO,CAAC;QACnB,GAAG,EAAE;;OAEF,cAAc,EAAE;QACnB,IAAI,EAAE;YACJ,UAAU,EAAE;YACZ,WAAW;YACX,UAAU;YACV,MAAM;YACN,IAAI;YACJ,SAAS;YACT,KAAK;YACL,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,CAAC,IAAI;YAC/B,QAAQ;YACR,GAAG;YACH,GAAG;SACJ;KACF,CAAC,CAAC;IACH,OAAO;QACL,EAAE,EAAE,MAAM;QACV,WAAW;QACX,UAAU;QACV,IAAI;QACJ,UAAU,EAAE,SAAS;QACrB,KAAK;QACL,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QACrC,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,KAAc,EACd,WAAmB,EACnB,UAAkB,EAClB,MAAc,EACd,SAAiB;IAEjB,MAAM,sBAAsB,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,SAAS;QAC9B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc,EAAE,CAAC;QAClC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC1C,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,MAAM,KAAK,GAAG,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC;IACxD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,MAAM,CAAC,OAAO,CAAC;YACnB,GAAG,EAAE,2HAA2H;YAChI,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC;SAC/C,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,CAAC,OAAO,CAAC;QACnB,GAAG,EAAE,iIAAiI;QACtI,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,CAAC;KACnD,CAAC,CAAC;IACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,KAAc,EACd,SAAiB;IAEjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;IACxB,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,MAAM,GAAG,6BAA6B,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;IACnE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO;YACL,KAAK,EACH,gFAAgF;SACnF,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAA2B,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;IAE1B,IAAI,WAAW,GAAG,MAAM,CAAC;IACzB,uEAAuE;IACvE,yEAAyE;IACzE,6EAA6E;IAC7E,8EAA8E;IAC9E,MAAM,aAAa,GAA2B,EAAE,CAAC;IACjD,IAAI,YAAY,GAAG,OAAO,CAAC;IAC3B,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,MAAM,eAAe,GAA2B,EAAE,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,qCAAqC,CAC3D,MAAM,EACN,SAAS,CACV,CAAC;QACF,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC;QACjC,eAAe,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;QAChD,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;QAExD,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAClD,MAAM,YAAY,GAAG,MAAM,qCAAqC,CAC9D,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EACxC,SAAS,CACV,CAAC;YACF,aAAa,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC;YAC1C,eAAe,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;YACnD,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,MAAM,qCAAqC,CAC5D,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAC/D,SAAS,CACV,CAAC;YACF,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC;YACnC,eAAe,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;YACjD,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,0BAA0B,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,EAAE,CAAC;IACpE,CAAC;IACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAAC;IAE1D,IAAI,MAAM,4BAA4B,CAAC,WAAW,CAAC,EAAE,CAAC;QACpD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,wDAAwD,EAAE,CAAC;IAC7E,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAChC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QAC3B,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE;QACzC,GAAG;KACJ,CAAC,CACH,CAAC;IACF,KAAK,MAAM,MAAM,IAAI,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;YAClD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO;gBACL,KAAK,EAAE,QAAQ,MAAM,CAAC,IAAI,sCAAsC;aACjE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IAE7D,0EAA0E;IAC1E,wEAAwE;IACxE,wEAAwE;IACxE,8EAA8E;IAC9E,0EAA0E;IAC1E,yDAAyD;IACzD,MAAM,UAAU,GAAG,CAAC,MAAM,wBAAwB,EAAE,CAAC,IAAI,SAAS,CAAC;IAEnE,IAAI,CAAC;QACH,MAAM,SAAS,GAA2C;YACxD,MAAM;YACN,OAAO;YACP,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,QAAQ,EAAE,QAAQ;SACnB,CAAC;QACF,IAAI,UAAU;YAAE,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;QAClD,IAAI,YAAY,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,MAAM,YAAY,GAAG,OAAO,YAAY,KAAK,QAAQ,CAAC;YACtD,SAAS,CAAC,IAAI,GAAG,YAAY;gBAC3B,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YACjC,kEAAkE;YAClE,qEAAqE;YACrE,qEAAqE;YACrE,+DAA+D;YAC/D,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,cAAc,CAC1C,CAAC;YACF,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,YAAY,GAChB,CAAC,YAAY;oBACb,CAAC,OAAO,YAAY,KAAK,QAAQ;wBAC/B,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;wBAC7B,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;gBAChC,IAAI,YAAY;oBAAE,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YACjE,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAErD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1E,IAAI,WAAW,IAAI,CAAC,MAAM,4BAA4B,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;gBACrE,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC;YACnE,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,MAAM,MAAM,IAAI,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC;oBACjD,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,MAAM,CAAC,CAAC;oBACxD,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;wBAClD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;wBAC9B,OAAO;4BACL,KAAK,EAAE,wCAAwC,MAAM,CAAC,IAAI,GAAG;yBAC9D,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE;oBACJ,QAAQ,EAAE,WAAW;wBACnB,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC;wBACzC,CAAC,CAAC,QAAQ;iBACb;aACF,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,yBAAyB,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,YAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,IAAI,EAAE,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC;SAChD,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;YAC/B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;QACjD,CAAC;QACD,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO;YACL,KAAK,EAAE,yBAAyB,aAAa,CAC3C,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAC3B,YAAY,CACb,EAAE;SACJ,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,IAAI,qBAAqB,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;AAE7D,KAAK,UAAU,gBAAgB,CAC7B,EAAqC,EACrC,IAAc;IAEd,MAAM,eAAe,GAAG,qBAAqB,CAAC;IAC9C,IAAI,cAA2B,CAAC;IAChC,qBAAqB,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACpD,cAAc,GAAG,OAAO,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,MAAM,eAAe,CAAC;IAEtB,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAChC,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC7C,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,CAAY,EAAE,EAAE;QAChC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,OAAO,CAAC,KAAK,GAAG,CAAC,GAAG,CAAY,EAAE,EAAE;QAClC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC,CAAQ,CAAC;IACV,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC;QACtB,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,eAAe,CAAC;QACvC,cAAc,EAAE,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,KAAc;IAC1C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IACtC,CAAC;IAED,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,cAAc,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC;QAC1C,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO;YACL,KAAK,EAAE,6DAA6D;SACrE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;YAC5C,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,IAAI,cAAc,EAAE,CAAC;IACnD,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAC7B,kcAAkc,CAAC;AAErc,iFAAiF;AACjF,0EAA0E;AAC1E,uEAAuE;AACvE,mEAAmE;AACnE,MAAM,CAAC,MAAM,gBAAgB,GAC3B,mmBAAmmB,CAAC;AAEtmB,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAC/B,+CAA+C,CAAC;AAElD,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU,EAAE,GAAW;IACpD,MAAM,SAAS,GAAG,GAAG;SAClB,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,WAAW,GAAG,GAAG;SACpB,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAc;IACzC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,cAAc,CAAC,kBAAkB,EAAE,GAAG,CAAC,EAAE,CAAC;QAC5C,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO;YACL,KAAK,EACH,oEAAoE;SACvE,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC;QAC1C,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO;YACL,KAAK,EAAE,6DAA6D;SACrE,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,oBAAoB,EAAE,GAAG,CAAC,EAAE,CAAC;QAC9C,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO;YACL,KAAK,EACH,2HAA2H;SAC9H,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;YAC5C,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,IAAI,aAAa,EAAE,CAAC;IAClD,CAAC;AACH,CAAC","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport {\n defineEventHandler,\n getMethod,\n setResponseStatus,\n setResponseHeader,\n type H3Event,\n} from \"h3\";\nimport { readBody } from \"../server/h3-helpers.js\";\nimport { getSession } from \"../server/auth.js\";\nimport {\n runWithRequestContext,\n getRequestOrgId,\n} from \"../server/request-context.js\";\nimport { getOrgContext } from \"../org/context.js\";\nimport { getDbExec, isPostgres } from \"../db/client.js\";\nimport {\n listExtensions,\n getExtension,\n getExtensionHistoryVersion,\n listExtensionHistory,\n createExtension,\n updateExtension,\n updateExtensionContent,\n restoreExtensionHistoryVersion,\n deleteExtension,\n hideExtension,\n unhideExtension,\n globalHideExtension,\n globalUnhideExtension,\n ensureExtensionsTables,\n type ExtensionRow,\n} from \"./store.js\";\nimport {\n getLocalExtension,\n isLocalExtensionRow,\n listLocalExtensions,\n type LocalExtensionRow,\n} from \"./local.js\";\nimport { buildExtensionHtml, EXTENSION_IFRAME_CSP } from \"./html-shell.js\";\nimport { getThemeVars } from \"./theme.js\";\nimport {\n resolveKeyReferencesWithRequestScopes,\n validateUrlAllowlist,\n getResolvedKeyAllowlist,\n type ResolvedKeyReference,\n} from \"../secrets/substitution.js\";\nimport {\n collectSecretValues,\n normalizeExtensionProxyMethod,\n readResponseTextWithLimit,\n redactSecrets,\n redactString,\n sanitizeOutboundHeaders,\n} from \"./proxy-security.js\";\nimport {\n createSsrfSafeDispatcher,\n isBlockedExtensionUrlWithDns,\n} from \"./url-safety.js\";\nimport { ForbiddenError, resolveAccess } from \"../sharing/access.js\";\nimport type { ShareRole } from \"../sharing/schema.js\";\n\nexport function createExtensionsHandler() {\n return defineEventHandler(async (event: H3Event) => {\n const method = getMethod(event);\n const pathname = (event.url?.pathname || \"\")\n .replace(/^\\/+/, \"\")\n .replace(/\\/+$/, \"\");\n const parts = pathname\n ? pathname.split(\"/\").map((part) => {\n try {\n return decodeURIComponent(part);\n } catch {\n return part;\n }\n })\n : [];\n\n const session = await getSession(event).catch(() => null);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"Authentication required\" };\n }\n\n const orgCtx = await getOrgContext(event).catch(() => null);\n const userEmail = session.email;\n const orgId = orgCtx?.orgId ?? session.orgId ?? undefined;\n\n try {\n return await runWithRequestContext({ userEmail, orgId }, async () => {\n await ensureExtensionsTables();\n return dispatch(event, method, parts, userEmail);\n });\n } catch (err) {\n if (err instanceof ForbiddenError) {\n setResponseStatus(event, 403);\n return { error: err.message };\n }\n throw err;\n }\n });\n}\n\nasync function dispatch(\n event: H3Event,\n method: string,\n parts: string[],\n userEmail: string,\n): Promise<unknown> {\n // POST /sql/query — read-only SQL for extension iframes\n if (\n method === \"POST\" &&\n parts.length === 2 &&\n parts[0] === \"sql\" &&\n parts[1] === \"query\"\n ) {\n return handleSqlQuery(event);\n }\n\n // POST /sql/exec — write SQL for extension iframes\n if (\n method === \"POST\" &&\n parts.length === 2 &&\n parts[0] === \"sql\" &&\n parts[1] === \"exec\"\n ) {\n return handleSqlExec(event);\n }\n\n // GET /data/:extensionId/:collection — list items in a collection\n if (method === \"GET\" && parts.length === 3 && parts[0] === \"data\") {\n return handleExtensionDataList(event, parts[1], parts[2], userEmail);\n }\n\n // POST /data/:extensionId/:collection — create/upsert an item\n if (method === \"POST\" && parts.length === 3 && parts[0] === \"data\") {\n return handleExtensionDataUpsert(event, parts[1], parts[2], userEmail);\n }\n\n // DELETE /data/:extensionId/:collection/:itemId — delete an item\n if (method === \"DELETE\" && parts.length === 4 && parts[0] === \"data\") {\n return handleExtensionDataDelete(\n event,\n parts[1],\n parts[2],\n parts[3],\n userEmail,\n );\n }\n\n // POST /proxy\n if (method === \"POST\" && parts.length === 1 && parts[0] === \"proxy\") {\n return handleProxy(event, userEmail);\n }\n\n // GET / — list. `?includeGloballyHidden=true` surfaces extensions an\n // admin/owner has globally hidden (so they can be unhidden for everyone).\n if (method === \"GET\" && parts.length === 0) {\n const includeGloballyHidden =\n event.url?.searchParams?.get(\"includeGloballyHidden\") === \"true\";\n const includeContent =\n event.url?.searchParams?.get(\"includeContent\") === \"true\";\n const rows = await listExtensions({ includeGloballyHidden });\n const localRows = includeGloballyHidden ? [] : await listLocalExtensions();\n return Promise.all(\n [...rows, ...localRows].map((row) =>\n extensionResponse(row, undefined, { includeContent }),\n ),\n );\n }\n\n // POST / — create\n if (method === \"POST\" && parts.length === 0) {\n const body = await readBody(event);\n if (!body.name) {\n setResponseStatus(event, 400);\n return { error: \"name is required\" };\n }\n const extension = await createExtension(body);\n setResponseStatus(event, 201);\n return extension;\n }\n\n // GET /:id/render\n if (method === \"GET\" && parts.length === 2 && parts[1] === \"render\") {\n const localExtension = await getLocalExtension(parts[0]);\n if (localExtension) {\n const search = event.url?.search || \"\";\n const isDark = search.includes(\"dark=1\") || search.includes(\"dark=true\");\n const themeVars = getThemeVars(isDark);\n const html = buildExtensionHtml(\n localExtension.content,\n themeVars,\n isDark,\n parts[0],\n {\n authorEmail: localExtension.ownerEmail,\n viewerEmail: userEmail,\n isAuthor: false,\n role: \"viewer\",\n source: \"local-files\",\n permissions: localExtension.source.permissions,\n },\n );\n setResponseHeader(event, \"Content-Type\", \"text/html; charset=utf-8\");\n setResponseHeader(event, \"Content-Security-Policy\", EXTENSION_IFRAME_CSP);\n setResponseHeader(event, \"X-Content-Type-Options\", \"nosniff\");\n setResponseHeader(event, \"Referrer-Policy\", \"no-referrer\");\n return html;\n }\n\n const access = await resolveAccess(\"extension\", parts[0]);\n const extension = access?.resource;\n if (!extension) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n const search = event.url?.search || \"\";\n const isDark = search.includes(\"dark=1\") || search.includes(\"dark=true\");\n const themeVars = getThemeVars(isDark);\n // Compute viewer-vs-author binding so the iframe can warn when the\n // viewer is NOT the author. The role is plumbed through to gate\n // dangerous bridge helpers in iframe-bridge.ts (audit H4).\n const isAuthor = extension.ownerEmail === userEmail;\n\n const html = buildExtensionHtml(\n extension.content,\n themeVars,\n isDark,\n parts[0],\n {\n authorEmail: extension.ownerEmail,\n viewerEmail: userEmail,\n isAuthor,\n role: access.role,\n },\n );\n // Security headers per render. `frame-ancestors` in the CSP must be set as\n // an HTTP header to be enforced; meta-CSP can't set it per spec.\n setResponseHeader(event, \"Content-Type\", \"text/html; charset=utf-8\");\n setResponseHeader(event, \"Content-Security-Policy\", EXTENSION_IFRAME_CSP);\n setResponseHeader(event, \"X-Content-Type-Options\", \"nosniff\");\n setResponseHeader(event, \"Referrer-Policy\", \"no-referrer\");\n return html;\n }\n\n // GET /:id/history — list saved snapshots for an extension\n if (method === \"GET\" && parts.length === 2 && parts[1] === \"history\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const limitParam = event.url?.searchParams?.get(\"limit\");\n const limit =\n limitParam === null || limitParam === undefined\n ? undefined\n : Number(limitParam);\n const includeContent =\n event.url?.searchParams?.get(\"includeContent\") === \"true\";\n return {\n history: await listExtensionHistory(parts[0], {\n limit,\n includeContent,\n }),\n };\n }\n\n // GET /:id/history/:version — fetch one snapshot plus its previous-version diff\n if (method === \"GET\" && parts.length === 3 && parts[1] === \"history\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const detail = await getExtensionHistoryVersion(parts[0], parts[2]);\n if (!detail) {\n setResponseStatus(event, 404);\n return { error: \"Extension history version not found\" };\n }\n return detail;\n }\n\n // POST /:id/history/:version/restore — restore display metadata + content\n if (\n method === \"POST\" &&\n parts.length === 4 &&\n parts[1] === \"history\" &&\n parts[3] === \"restore\"\n ) {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const restored = await restoreExtensionHistoryVersion(parts[0], parts[2]);\n if (!restored) {\n setResponseStatus(event, 404);\n return { error: \"Extension history version not found\" };\n }\n return extensionResponse(restored);\n }\n\n // GET /:id\n if (method === \"GET\" && parts.length === 1) {\n const localExtension = await getLocalExtension(parts[0]);\n if (localExtension) {\n return extensionResponse(localExtension, \"viewer\");\n }\n\n const access = await resolveAccess(\"extension\", parts[0]);\n if (!access) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return extensionResponse(access.resource as ExtensionRow, access.role);\n }\n\n // POST /:id/hide — remove from the current user's Extensions list/sidebar\n // without deleting the underlying extension for teammates or shared slots.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"hide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await hideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, hidden: true };\n }\n\n // POST /:id/unhide — restore an extension hidden by the current user.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"unhide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await unhideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, hidden: false };\n }\n\n // POST /:id/global-hide — admin/owner hides the extension from EVERYONE.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"global-hide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await globalHideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, globallyHidden: true };\n }\n\n // POST /:id/global-unhide — admin/owner reverses a global hide.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"global-unhide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await globalUnhideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, globallyHidden: false };\n }\n\n // PUT /:id\n if (method === \"PUT\" && parts.length === 1) {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const body = await readBody(event);\n const hasContentUpdate =\n body.content !== undefined ||\n body.patches !== undefined ||\n body.edits !== undefined ||\n body.format !== undefined;\n const hasMetaUpdate =\n body.name !== undefined ||\n body.description !== undefined ||\n body.icon !== undefined ||\n body.visibility !== undefined;\n\n let result = null;\n if (hasContentUpdate) {\n result = await updateExtensionContent(parts[0], {\n content: body.content,\n patches: body.patches,\n edits: body.edits,\n format: body.format === true || body.format === \"true\",\n });\n }\n if (hasMetaUpdate) {\n result = await updateExtension(parts[0], body);\n }\n if (!hasContentUpdate && !hasMetaUpdate) {\n result = await getExtension(parts[0]);\n }\n if (!result) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return result;\n }\n\n // DELETE /:id\n if (method === \"DELETE\" && parts.length === 1) {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await deleteExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true };\n }\n\n setResponseStatus(event, 404);\n return { error: \"Not found\" };\n}\n\nasync function extensionResponse(\n row: ExtensionRow | LocalExtensionRow,\n role?: \"owner\" | ShareRole | null,\n options: { includeContent?: boolean } = {},\n) {\n const local = isLocalExtensionRow(row);\n const resolvedRole = local\n ? \"viewer\"\n : (role ??\n (await resolveAccess(\"extension\", row.id)\n .then((access) => access?.role ?? null)\n .catch(() => null)));\n const responseRow =\n options.includeContent === false\n ? (({ content: _content, ...rest }) => rest)(row)\n : row;\n return {\n ...responseRow,\n role: resolvedRole,\n canEdit: local\n ? false\n : resolvedRole\n ? [\"owner\", \"admin\", \"editor\"].includes(resolvedRole)\n : false,\n canDelete: local\n ? false\n : resolvedRole\n ? [\"owner\", \"admin\"].includes(resolvedRole)\n : false,\n globallyHidden: row.hiddenAt != null,\n };\n}\n\nasync function localExtensionSqlOnlyResponse(\n event: H3Event,\n extensionId: string,\n): Promise<unknown | null> {\n const localExtension = await getLocalExtension(extensionId);\n if (!localExtension) return null;\n setResponseStatus(event, 400);\n return {\n error:\n \"This extension is backed by local files. Edit its extension.json or entry file in the workspace; SQL-backed extension history, sharing, hide, update, and delete operations do not apply.\",\n source: localExtension.source,\n };\n}\n\nasync function handleExtensionDataList(\n event: H3Event,\n extensionId: string,\n collection: string,\n userEmail: string,\n): Promise<unknown> {\n await ensureExtensionsTables();\n const extension = await getExtension(extensionId);\n const localExtension = extension\n ? null\n : await getLocalExtension(extensionId);\n if (!extension && !localExtension) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n const client = getDbExec();\n const url = event.url;\n const limitParam = url?.searchParams?.get(\"limit\");\n const limit = limitParam\n ? Math.min(Math.max(1, Number(limitParam)), 1000)\n : 100;\n const scope = url?.searchParams?.get(\"scope\") || \"user\";\n const orgId = getRequestOrgId();\n\n if (scope === \"org\") {\n if (!orgId) {\n setResponseStatus(event, 400);\n return { error: \"Org context required for scope=org\" };\n }\n const result = await client.execute({\n sql: `SELECT COALESCE(item_id, id) AS id, tool_id, collection, data, owner_email, scope, org_id, created_at, updated_at\n FROM tool_data\n WHERE tool_id = ? AND collection = ? AND scope = 'org' AND org_id = ?\n ORDER BY created_at DESC\n LIMIT ?`,\n args: [extensionId, collection, orgId, limit],\n });\n return result.rows ?? [];\n }\n\n if (scope === \"all\") {\n const result = await client.execute({\n sql: `SELECT COALESCE(item_id, id) AS id, tool_id, collection, data, owner_email, scope, org_id, created_at, updated_at\n FROM tool_data\n WHERE tool_id = ? AND collection = ?\n AND ((scope = 'user' AND owner_email = ?) OR (scope = 'org' AND org_id = ?))\n ORDER BY created_at DESC\n LIMIT ?`,\n args: [extensionId, collection, userEmail, orgId ?? \"\", limit],\n });\n return result.rows ?? [];\n }\n\n const result = await client.execute({\n sql: `SELECT COALESCE(item_id, id) AS id, tool_id, collection, data, owner_email, scope, org_id, created_at, updated_at\n FROM tool_data\n WHERE tool_id = ? AND collection = ? AND scope = 'user' AND owner_email = ?\n ORDER BY updated_at DESC\n LIMIT ?`,\n args: [extensionId, collection, userEmail, limit],\n });\n return result.rows ?? [];\n}\n\nasync function handleExtensionDataUpsert(\n event: H3Event,\n extensionId: string,\n collection: string,\n userEmail: string,\n): Promise<unknown> {\n await ensureExtensionsTables();\n const extension = await getExtension(extensionId);\n const localExtension = extension\n ? null\n : await getLocalExtension(extensionId);\n if (!extension && !localExtension) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n const body = await readBody(event);\n if (body.data === undefined) {\n setResponseStatus(event, 400);\n return { error: \"data is required\" };\n }\n const itemId = String(body.id || randomUUID());\n const data =\n typeof body.data === \"string\" ? body.data : JSON.stringify(body.data);\n const now = new Date().toISOString();\n const scope = body.scope === \"org\" ? \"org\" : \"user\";\n const orgId = getRequestOrgId();\n\n if (scope === \"org\" && !orgId) {\n setResponseStatus(event, 400);\n return { error: \"Org context required for scope=org\" };\n }\n\n const scopeKey = scope === \"org\" ? `org:${orgId}` : userEmail;\n const client = getDbExec();\n const pg = isPostgres();\n const conflictClause = pg\n ? `ON CONFLICT (tool_id, collection, scope_key, item_id)\n DO UPDATE SET data = EXCLUDED.data, updated_at = EXCLUDED.updated_at`\n : `ON CONFLICT (tool_id, collection, scope_key, item_id)\n DO UPDATE SET data = excluded.data, updated_at = excluded.updated_at`;\n\n await client.execute({\n sql: `INSERT INTO tool_data (id, tool_id, collection, item_id, data, owner_email, scope, org_id, scope_key, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n ${conflictClause}`,\n args: [\n randomUUID(),\n extensionId,\n collection,\n itemId,\n data,\n userEmail,\n scope,\n scope === \"org\" ? orgId! : null,\n scopeKey,\n now,\n now,\n ],\n });\n return {\n id: itemId,\n extensionId,\n collection,\n data,\n ownerEmail: userEmail,\n scope,\n orgId: scope === \"org\" ? orgId : null,\n createdAt: now,\n updatedAt: now,\n };\n}\n\nasync function handleExtensionDataDelete(\n event: H3Event,\n extensionId: string,\n collection: string,\n itemId: string,\n userEmail: string,\n): Promise<unknown> {\n await ensureExtensionsTables();\n const extension = await getExtension(extensionId);\n const localExtension = extension\n ? null\n : await getLocalExtension(extensionId);\n if (!extension && !localExtension) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n const url = event.url;\n const scope = url?.searchParams?.get(\"scope\") || \"user\";\n const orgId = getRequestOrgId();\n const client = getDbExec();\n\n if (scope === \"org\") {\n if (!orgId) {\n setResponseStatus(event, 400);\n return { error: \"Org context required for scope=org\" };\n }\n await client.execute({\n sql: `DELETE FROM tool_data WHERE COALESCE(item_id, id) = ? AND tool_id = ? AND collection = ? AND scope = 'org' AND org_id = ?`,\n args: [itemId, extensionId, collection, orgId],\n });\n return { ok: true };\n }\n\n await client.execute({\n sql: `DELETE FROM tool_data WHERE COALESCE(item_id, id) = ? AND tool_id = ? AND collection = ? AND scope = 'user' AND owner_email = ?`,\n args: [itemId, extensionId, collection, userEmail],\n });\n return { ok: true };\n}\n\nasync function handleProxy(\n event: H3Event,\n userEmail: string,\n): Promise<unknown> {\n const body = await readBody(event);\n const rawUrl = body.url;\n if (!rawUrl || typeof rawUrl !== \"string\") {\n setResponseStatus(event, 400);\n return { error: \"url is required\" };\n }\n\n const method = normalizeExtensionProxyMethod(body.method || \"GET\");\n if (!method) {\n setResponseStatus(event, 405);\n return {\n error:\n \"Unsupported HTTP method. Allowed methods: GET, POST, PUT, PATCH, DELETE, HEAD.\",\n };\n }\n const rawHeaders: Record<string, string> = body.headers || {};\n const rawBody = body.body;\n\n let resolvedUrl = rawUrl;\n // Resolve secret references per header value rather than over a single\n // JSON.stringify(headers) blob. A secret value containing a double-quote\n // would corrupt that JSON, the later JSON.parse would throw, and the request\n // would silently fall back to the *unresolved* headers (placeholders intact).\n const parsedHeaders: Record<string, string> = {};\n let resolvedBody = rawBody;\n const allSecretValues: string[] = [];\n const allResolvedKeys: ResolvedKeyReference[] = [];\n\n try {\n const urlResult = await resolveKeyReferencesWithRequestScopes(\n rawUrl,\n userEmail,\n );\n resolvedUrl = urlResult.resolved;\n allSecretValues.push(...urlResult.secretValues);\n allResolvedKeys.push(...(urlResult.resolvedKeys ?? []));\n\n for (const [hk, hv] of Object.entries(rawHeaders)) {\n const headerResult = await resolveKeyReferencesWithRequestScopes(\n typeof hv === \"string\" ? hv : String(hv),\n userEmail,\n );\n parsedHeaders[hk] = headerResult.resolved;\n allSecretValues.push(...headerResult.secretValues);\n allResolvedKeys.push(...(headerResult.resolvedKeys ?? []));\n }\n\n if (rawBody) {\n const bodyResult = await resolveKeyReferencesWithRequestScopes(\n typeof rawBody === \"string\" ? rawBody : JSON.stringify(rawBody),\n userEmail,\n );\n resolvedBody = bodyResult.resolved;\n allSecretValues.push(...bodyResult.secretValues);\n allResolvedKeys.push(...(bodyResult.resolvedKeys ?? []));\n }\n } catch (err: any) {\n setResponseStatus(event, 400);\n return { error: `Key resolution failed: ${err?.message ?? err}` };\n }\n const secretValues = collectSecretValues(allSecretValues);\n\n if (await isBlockedExtensionUrlWithDns(resolvedUrl)) {\n setResponseStatus(event, 403);\n return { error: \"Requests to private/internal addresses are not allowed\" };\n }\n\n const uniqueResolvedKeys = new Map(\n allResolvedKeys.map((ref) => [\n `${ref.name}:${ref.scope}:${ref.scopeId}`,\n ref,\n ]),\n );\n for (const keyRef of uniqueResolvedKeys.values()) {\n const allowlist = await getResolvedKeyAllowlist(keyRef);\n if (!validateUrlAllowlist(resolvedUrl, allowlist)) {\n setResponseStatus(event, 403);\n return {\n error: `Key \"${keyRef.name}\" is not allowed for this URL origin`,\n };\n }\n }\n\n const headers = sanitizeOutboundHeaders(parsedHeaders);\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 15_000);\n\n // Best-effort connect-time SSRF guard. When undici is available (it ships\n // with Node 18+ but is not always exposed as an importable module), the\n // dispatcher re-checks the resolved IP at TCP-connect time, closing the\n // TOCTOU between the pre-flight `isBlockedExtensionUrlWithDns` lookup and the\n // actual fetch lookup. If undici is not importable, fall through to plain\n // fetch — the pre-flight remains the primary protection.\n const dispatcher = (await createSsrfSafeDispatcher()) ?? undefined;\n\n try {\n const fetchOpts: RequestInit & { dispatcher?: unknown } = {\n method,\n headers,\n signal: controller.signal,\n redirect: \"manual\",\n };\n if (dispatcher) fetchOpts.dispatcher = dispatcher;\n if (resolvedBody && [\"POST\", \"PUT\", \"PATCH\"].includes(method)) {\n const isStringBody = typeof resolvedBody === \"string\";\n fetchOpts.body = isStringBody\n ? resolvedBody\n : JSON.stringify(resolvedBody);\n // Only inject Content-Type when (a) the caller didn't set one and\n // (b) the body is actually JSON-shaped (object or stringified JSON).\n // Otherwise leave it unset so the runtime fetch picks an appropriate\n // default and we don't misrepresent text/plain bodies as JSON.\n const hasContentType = Object.keys(headers).some(\n (k) => k.toLowerCase() === \"content-type\",\n );\n if (!hasContentType) {\n const isJsonShaped =\n !isStringBody ||\n (typeof resolvedBody === \"string\" &&\n /^\\s*[{[]/.test(resolvedBody) &&\n isLikelyJson(resolvedBody));\n if (isJsonShaped) headers[\"Content-Type\"] = \"application/json\";\n }\n }\n\n const response = await fetch(resolvedUrl, fetchOpts);\n\n if (response.status >= 300 && response.status < 400) {\n const location = response.headers.get(\"location\");\n const redirectUrl = location ? new URL(location, resolvedUrl).href : null;\n if (redirectUrl && (await isBlockedExtensionUrlWithDns(redirectUrl))) {\n setResponseStatus(event, 403);\n return { error: \"Redirect to private/internal address blocked\" };\n }\n if (redirectUrl) {\n for (const keyRef of uniqueResolvedKeys.values()) {\n const allowlist = await getResolvedKeyAllowlist(keyRef);\n if (!validateUrlAllowlist(redirectUrl, allowlist)) {\n setResponseStatus(event, 403);\n return {\n error: `Redirect URL is not allowed for key \"${keyRef.name}\"`,\n };\n }\n }\n }\n return {\n status: response.status,\n body: {\n redirect: redirectUrl\n ? redactString(redirectUrl, secretValues)\n : location,\n },\n };\n }\n\n const { text } = await readResponseTextWithLimit(response);\n let responseBody: unknown;\n try {\n responseBody = JSON.parse(text);\n } catch {\n responseBody = text;\n }\n\n return {\n status: response.status,\n body: redactSecrets(responseBody, secretValues),\n };\n } catch (err: any) {\n if (err?.name === \"AbortError\") {\n setResponseStatus(event, 504);\n return { error: \"Upstream request timed out\" };\n }\n setResponseStatus(event, 502);\n return {\n error: `Proxy request failed: ${redactSecrets(\n err?.message ?? String(err),\n secretValues,\n )}`,\n };\n } finally {\n clearTimeout(timeout);\n }\n}\n\n/**\n * Capture console output from a CLI script that uses console.log for results.\n * Same technique as wrapCliScript in agent-chat-plugin.ts.\n */\nlet captureCliOutputQueue: Promise<void> = Promise.resolve();\n\nasync function captureCliOutput(\n fn: (args: string[]) => Promise<void>,\n args: string[],\n): Promise<string> {\n const previousCapture = captureCliOutputQueue;\n let releaseCapture!: () => void;\n captureCliOutputQueue = new Promise<void>((resolve) => {\n releaseCapture = resolve;\n });\n await previousCapture;\n\n const logs: string[] = [];\n const origLog = console.log;\n const origError = console.error;\n const origStdoutWrite = process.stdout.write;\n console.log = (...a: unknown[]) => {\n logs.push(a.map(String).join(\" \"));\n };\n console.error = (...a: unknown[]) => {\n logs.push(a.map(String).join(\" \"));\n };\n process.stdout.write = ((chunk: any) => {\n if (typeof chunk === \"string\") logs.push(chunk);\n else if (Buffer.isBuffer(chunk)) logs.push(chunk.toString());\n return true;\n }) as any;\n try {\n await fn(args);\n } catch (err: any) {\n logs.push(`Error: ${err?.message ?? String(err)}`);\n } finally {\n console.log = origLog;\n console.error = origError;\n process.stdout.write = origStdoutWrite;\n releaseCapture();\n }\n return logs.join(\"\\n\") || \"(no output)\";\n}\n\nasync function handleSqlQuery(event: H3Event): Promise<unknown> {\n const body = await readBody(event);\n const sql = body.sql;\n if (!sql || typeof sql !== \"string\") {\n setResponseStatus(event, 400);\n return { error: \"sql is required\" };\n }\n\n const cleanSql = stripSqlComments(sql);\n if (!/^\\s*(SELECT|WITH)\\b/i.test(cleanSql)) {\n setResponseStatus(event, 403);\n return { error: \"Only SELECT queries are allowed from extensions\" };\n }\n if (matchesSqlGate(SENSITIVE_SQL_RE, sql)) {\n setResponseStatus(event, 403);\n return {\n error: \"Sensitive framework tables are not readable from extensions\",\n };\n }\n\n try {\n const mod = await import(\"../scripts/db/query.js\");\n const args = [\"--sql\", sql, \"--format\", \"json\"];\n if (body.limit) args.push(\"--limit\", String(body.limit));\n if (body.args !== undefined) {\n if (!Array.isArray(body.args)) {\n setResponseStatus(event, 400);\n return { error: \"args must be an array\" };\n }\n args.push(\"--args\", JSON.stringify(body.args));\n }\n const output = await captureCliOutput(mod.default, args);\n try {\n return JSON.parse(output);\n } catch {\n return { output };\n }\n } catch (err: any) {\n setResponseStatus(event, 500);\n return { error: err?.message ?? \"Query failed\" };\n }\n}\n\n// TODO(security): replace this regex blocklist with a SQL parser + an explicit\n// allowlist of tables a extension may read/write (e.g. only `tool_data`, plus a\n// per-template list). The current blocklist is best-effort defense in depth\n// and is by design bypassable via SQL constructions that don't include the\n// blocklisted token literally (string concat, dynamic SQL, etc). The temp-\n// view scoping in scripts/db/scoping.ts is the actual ownership boundary.\nexport const DESTRUCTIVE_SQL_RE =\n /\\b(CREATE\\s+(?:(?:LOCAL|GLOBAL)\\s+)?(?:TEMPORARY|TEMP)?\\s*(TABLE|INDEX|VIEW|SCHEMA|DATABASE|TRIGGER|FUNCTION|EXTENSION|ROLE|TABLESPACE|PUBLICATION|SUBSCRIPTION)|DROP\\s+(TABLE|INDEX|VIEW|SCHEMA|DATABASE|TRIGGER|FUNCTION|EXTENSION|ROLE)|TRUNCATE|DELETE\\s+FROM\\s+(?!tool_data\\b)|ALTER\\s+(TABLE|VIEW|SCHEMA|DATABASE|FUNCTION|ROLE|EXTENSION|PUBLICATION)\\s+(?!tool_data\\b)|ATTACH|DETACH|VACUUM|REINDEX|PRAGMA|GRANT|REVOKE|SET\\s+ROLE|RESET\\s+ROLE|COPY)\\b/i;\n\n// Sensitive tables that extensions must not touch directly. Includes Better Auth\n// identity tables, framework infrastructure (tracing, evals, automations,\n// integrations, notifications, scheduling, sharing/orgs), and Postgres\n// catalogs that would let a extension enumerate or read internals.\nexport const SENSITIVE_SQL_RE =\n /\\b(app_secrets|user|users|session|sessions|account|accounts|verification|oauth_tokens|tools|extensions|tool_shares|tool_slots|tool_slot_installs|tool_hidden_extensions|tool_history|member|organization|invitation|jwks|agent_trace_spans|agent_trace_summaries|agent_feedback|agent_satisfaction_scores|agent_evals|agent_runs|agent_run_events|notifications|progress_runs|integration_configs|integration_pending_tasks|integration_thread_mappings|resources|org_members|org_invitations|bigquery_cache|dashboard_views|pg_catalog|information_schema|pg_class|pg_proc|pg_namespace|pg_user|pg_roles|pg_authid|pg_shadow)\\b/i;\n\n// Refuses positional INSERTs (no column list). `INSERT INTO recordings VALUES\n// (...)` would let a extension stuff arbitrary owner_email values into a row.\n// `INSERT INTO recordings (col1, col2) VALUES (...)` is required so the\n// downstream injectOwnership helper can append owner_email.\nexport const POSITIONAL_INSERT_RE =\n /\\bINSERT\\s+INTO\\s+[\"'`]?\\w+[\"'`]?\\s+VALUES\\b/i;\n\nfunction stripSqlComments(sql: string): string {\n return sql.replace(/\\/\\*[\\s\\S]*?\\*\\//g, \" \").replace(/--[^\\n]*/g, \" \");\n}\n\n/**\n * Test a blocklist regex against the SQL with comments normalized two ways, so\n * a comment placed *inside* a keyword can't smuggle a blocked construct past a\n * literal-token match:\n * - comments → space catches `DROP /* x */ TABLE` (token boundaries kept)\n * - comments → empty catches `DR/**/OP TABLE` (split keyword rejoined)\n *\n * A statement is refused if EITHER normalization trips the regex. This only\n * ever ADDS matches — it never newly-allows SQL — so it cannot loosen the gate\n * (real extension SQL doesn't embed comments inside keywords, so false-positive\n * risk is negligible). The authoritative ownership boundary remains the\n * fail-closed temp-view scoping in scripts/db/scoping.ts; this stays defense in\n * depth. See the TODO above re: replacing all of this with a real SQL parser.\n */\nexport function matchesSqlGate(re: RegExp, sql: string): boolean {\n const withSpace = sql\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, \" \")\n .replace(/--[^\\n]*/g, \" \");\n const withNothing = sql\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\")\n .replace(/--[^\\n]*/g, \"\");\n return re.test(withSpace) || re.test(withNothing);\n}\n\nfunction isLikelyJson(text: string): boolean {\n try {\n const parsed = JSON.parse(text);\n return parsed !== null && typeof parsed === \"object\";\n } catch {\n return false;\n }\n}\n\nasync function handleSqlExec(event: H3Event): Promise<unknown> {\n const body = await readBody(event);\n const sql = body.sql;\n if (!sql || typeof sql !== \"string\") {\n setResponseStatus(event, 400);\n return { error: \"sql is required\" };\n }\n\n if (matchesSqlGate(DESTRUCTIVE_SQL_RE, sql)) {\n setResponseStatus(event, 403);\n return {\n error:\n \"Schema changes and destructive SQL are not allowed from extensions\",\n };\n }\n if (matchesSqlGate(SENSITIVE_SQL_RE, sql)) {\n setResponseStatus(event, 403);\n return {\n error: \"Sensitive framework tables are not writable from extensions\",\n };\n }\n if (matchesSqlGate(POSITIONAL_INSERT_RE, sql)) {\n setResponseStatus(event, 400);\n return {\n error:\n \"INSERT must specify an explicit column list (e.g. INSERT INTO t (col1, col2) VALUES (?, ?)) so ownership can be injected.\",\n };\n }\n\n try {\n const mod = await import(\"../scripts/db/exec.js\");\n const args = [\"--sql\", sql, \"--format\", \"json\"];\n if (body.args !== undefined) {\n if (!Array.isArray(body.args)) {\n setResponseStatus(event, 400);\n return { error: \"args must be an array\" };\n }\n args.push(\"--args\", JSON.stringify(body.args));\n }\n const output = await captureCliOutput(mod.default, args);\n try {\n return JSON.parse(output);\n } catch {\n return { output };\n }\n } catch (err: any) {\n setResponseStatus(event, 500);\n return { error: err?.message ?? \"Exec failed\" };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/extensions/routes.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport {\n defineEventHandler,\n getMethod,\n setResponseStatus,\n setResponseHeader,\n type H3Event,\n} from \"h3\";\nimport { readBody } from \"../server/h3-helpers.js\";\nimport { getSession } from \"../server/auth.js\";\nimport {\n runWithRequestContext,\n getRequestOrgId,\n} from \"../server/request-context.js\";\nimport { getOrgContext } from \"../org/context.js\";\nimport { getDbExec, isPostgres } from \"../db/client.js\";\nimport {\n listExtensions,\n getExtension,\n getExtensionHistoryVersion,\n listExtensionHistory,\n createExtension,\n updateExtension,\n updateExtensionContent,\n restoreExtensionHistoryVersion,\n deleteExtension,\n hideExtension,\n unhideExtension,\n globalHideExtension,\n globalUnhideExtension,\n ensureExtensionsTables,\n type ExtensionRow,\n} from \"./store.js\";\nimport {\n getLocalExtension,\n isLocalExtensionRow,\n listLocalExtensions,\n type LocalExtensionRow,\n} from \"./local.js\";\nimport { buildExtensionHtml, EXTENSION_IFRAME_CSP } from \"./html-shell.js\";\nimport { getThemeVars } from \"./theme.js\";\nimport {\n resolveKeyReferencesWithRequestScopes,\n validateUrlAllowlist,\n getResolvedKeyAllowlist,\n type ResolvedKeyReference,\n} from \"../secrets/substitution.js\";\nimport {\n collectSecretValues,\n normalizeExtensionProxyMethod,\n readResponseTextWithLimit,\n redactSecrets,\n redactString,\n sanitizeOutboundHeaders,\n} from \"./proxy-security.js\";\nimport {\n createSsrfSafeDispatcher,\n isBlockedExtensionUrlWithDns,\n} from \"./url-safety.js\";\nimport { ForbiddenError, resolveAccess } from \"../sharing/access.js\";\nimport { ROLE_RANK, type ShareRole } from \"../sharing/schema.js\";\n\nexport function createExtensionsHandler() {\n return defineEventHandler(async (event: H3Event) => {\n const method = getMethod(event);\n const pathname = (event.url?.pathname || \"\")\n .replace(/^\\/+/, \"\")\n .replace(/\\/+$/, \"\");\n const parts = pathname\n ? pathname.split(\"/\").map((part) => {\n try {\n return decodeURIComponent(part);\n } catch {\n return part;\n }\n })\n : [];\n\n const session = await getSession(event).catch(() => null);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"Authentication required\" };\n }\n\n const orgCtx = await getOrgContext(event).catch(() => null);\n const userEmail = session.email;\n const orgId = orgCtx?.orgId ?? session.orgId ?? undefined;\n\n try {\n return await runWithRequestContext({ userEmail, orgId }, async () => {\n await ensureExtensionsTables();\n return dispatch(event, method, parts, userEmail);\n });\n } catch (err) {\n if (err instanceof ForbiddenError) {\n setResponseStatus(event, 403);\n return { error: err.message };\n }\n throw err;\n }\n });\n}\n\nasync function dispatch(\n event: H3Event,\n method: string,\n parts: string[],\n userEmail: string,\n): Promise<unknown> {\n // POST /sql/query — read-only SQL for extension iframes\n if (\n method === \"POST\" &&\n parts.length === 2 &&\n parts[0] === \"sql\" &&\n parts[1] === \"query\"\n ) {\n return handleSqlQuery(event);\n }\n\n // POST /sql/exec — write SQL for extension iframes\n if (\n method === \"POST\" &&\n parts.length === 2 &&\n parts[0] === \"sql\" &&\n parts[1] === \"exec\"\n ) {\n return handleSqlExec(event);\n }\n\n // GET /data/:extensionId/:collection — list items in a collection\n if (method === \"GET\" && parts.length === 3 && parts[0] === \"data\") {\n return handleExtensionDataList(event, parts[1], parts[2], userEmail);\n }\n\n // POST /data/:extensionId/:collection — create/upsert an item\n if (method === \"POST\" && parts.length === 3 && parts[0] === \"data\") {\n return handleExtensionDataUpsert(event, parts[1], parts[2], userEmail);\n }\n\n // DELETE /data/:extensionId/:collection/:itemId — delete an item\n if (method === \"DELETE\" && parts.length === 4 && parts[0] === \"data\") {\n return handleExtensionDataDelete(\n event,\n parts[1],\n parts[2],\n parts[3],\n userEmail,\n );\n }\n\n // POST /proxy\n if (method === \"POST\" && parts.length === 1 && parts[0] === \"proxy\") {\n return handleProxy(event, userEmail);\n }\n\n // GET / — list. `?includeGloballyHidden=true` surfaces extensions an\n // admin/owner has globally hidden (so they can be unhidden for everyone).\n if (method === \"GET\" && parts.length === 0) {\n const includeGloballyHidden =\n event.url?.searchParams?.get(\"includeGloballyHidden\") === \"true\";\n const includeContent =\n event.url?.searchParams?.get(\"includeContent\") === \"true\";\n const rows = await listExtensions({ includeGloballyHidden });\n const localRows = includeGloballyHidden ? [] : await listLocalExtensions();\n return Promise.all(\n [...rows, ...localRows].map((row) =>\n extensionResponse(row, undefined, { includeContent }),\n ),\n );\n }\n\n // POST / — create\n if (method === \"POST\" && parts.length === 0) {\n const body = await readBody(event);\n if (!body.name) {\n setResponseStatus(event, 400);\n return { error: \"name is required\" };\n }\n const extension = await createExtension(body);\n setResponseStatus(event, 201);\n return extension;\n }\n\n // GET /:id/render\n if (method === \"GET\" && parts.length === 2 && parts[1] === \"render\") {\n const localExtension = await getLocalExtension(parts[0]);\n if (localExtension) {\n const search = event.url?.search || \"\";\n const isDark = search.includes(\"dark=1\") || search.includes(\"dark=true\");\n const themeVars = getThemeVars(isDark);\n const html = buildExtensionHtml(\n localExtension.content,\n themeVars,\n isDark,\n parts[0],\n {\n authorEmail: localExtension.ownerEmail,\n viewerEmail: userEmail,\n isAuthor: false,\n role: \"viewer\",\n source: \"local-files\",\n permissions: localExtension.source.permissions,\n },\n );\n setResponseHeader(event, \"Content-Type\", \"text/html; charset=utf-8\");\n setResponseHeader(event, \"Content-Security-Policy\", EXTENSION_IFRAME_CSP);\n setResponseHeader(event, \"X-Content-Type-Options\", \"nosniff\");\n setResponseHeader(event, \"Referrer-Policy\", \"no-referrer\");\n return html;\n }\n\n const access = await resolveAccess(\"extension\", parts[0]);\n const extension = access?.resource;\n if (!extension) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n const search = event.url?.search || \"\";\n const isDark = search.includes(\"dark=1\") || search.includes(\"dark=true\");\n const themeVars = getThemeVars(isDark);\n // Compute viewer-vs-author binding so the iframe can warn when the\n // viewer is NOT the author. The role is plumbed through to gate\n // dangerous bridge helpers in iframe-bridge.ts (audit H4).\n const isAuthor = extension.ownerEmail === userEmail;\n\n const html = buildExtensionHtml(\n extension.content,\n themeVars,\n isDark,\n parts[0],\n {\n authorEmail: extension.ownerEmail,\n viewerEmail: userEmail,\n isAuthor,\n role: access.role,\n },\n );\n // Security headers per render. `frame-ancestors` in the CSP must be set as\n // an HTTP header to be enforced; meta-CSP can't set it per spec.\n setResponseHeader(event, \"Content-Type\", \"text/html; charset=utf-8\");\n setResponseHeader(event, \"Content-Security-Policy\", EXTENSION_IFRAME_CSP);\n setResponseHeader(event, \"X-Content-Type-Options\", \"nosniff\");\n setResponseHeader(event, \"Referrer-Policy\", \"no-referrer\");\n return html;\n }\n\n // GET /:id/history — list saved snapshots for an extension\n if (method === \"GET\" && parts.length === 2 && parts[1] === \"history\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const limitParam = event.url?.searchParams?.get(\"limit\");\n const limit =\n limitParam === null || limitParam === undefined\n ? undefined\n : Number(limitParam);\n const includeContent =\n event.url?.searchParams?.get(\"includeContent\") === \"true\";\n return {\n history: await listExtensionHistory(parts[0], {\n limit,\n includeContent,\n }),\n };\n }\n\n // GET /:id/history/:version — fetch one snapshot plus its previous-version diff\n if (method === \"GET\" && parts.length === 3 && parts[1] === \"history\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const detail = await getExtensionHistoryVersion(parts[0], parts[2]);\n if (!detail) {\n setResponseStatus(event, 404);\n return { error: \"Extension history version not found\" };\n }\n return detail;\n }\n\n // POST /:id/history/:version/restore — restore display metadata + content\n if (\n method === \"POST\" &&\n parts.length === 4 &&\n parts[1] === \"history\" &&\n parts[3] === \"restore\"\n ) {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const restored = await restoreExtensionHistoryVersion(parts[0], parts[2]);\n if (!restored) {\n setResponseStatus(event, 404);\n return { error: \"Extension history version not found\" };\n }\n return extensionResponse(restored);\n }\n\n // GET /:id\n if (method === \"GET\" && parts.length === 1) {\n const localExtension = await getLocalExtension(parts[0]);\n if (localExtension) {\n return extensionResponse(localExtension, \"viewer\");\n }\n\n const access = await resolveAccess(\"extension\", parts[0]);\n if (!access) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return extensionResponse(access.resource as ExtensionRow, access.role);\n }\n\n // POST /:id/hide — remove from the current user's Extensions list/sidebar\n // without deleting the underlying extension for teammates or shared slots.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"hide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await hideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, hidden: true };\n }\n\n // POST /:id/unhide — restore an extension hidden by the current user.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"unhide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await unhideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, hidden: false };\n }\n\n // POST /:id/global-hide — admin/owner hides the extension from EVERYONE.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"global-hide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await globalHideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, globallyHidden: true };\n }\n\n // POST /:id/global-unhide — admin/owner reverses a global hide.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"global-unhide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await globalUnhideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, globallyHidden: false };\n }\n\n // PUT /:id\n if (method === \"PUT\" && parts.length === 1) {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const body = await readBody(event);\n const hasContentUpdate =\n body.content !== undefined ||\n body.patches !== undefined ||\n body.edits !== undefined ||\n body.format !== undefined;\n const hasMetaUpdate =\n body.name !== undefined ||\n body.description !== undefined ||\n body.icon !== undefined ||\n body.visibility !== undefined;\n\n let result = null;\n if (hasContentUpdate) {\n result = await updateExtensionContent(parts[0], {\n content: body.content,\n patches: body.patches,\n edits: body.edits,\n format: body.format === true || body.format === \"true\",\n });\n }\n if (hasMetaUpdate) {\n result = await updateExtension(parts[0], body);\n }\n if (!hasContentUpdate && !hasMetaUpdate) {\n result = await getExtension(parts[0]);\n }\n if (!result) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return result;\n }\n\n // DELETE /:id\n if (method === \"DELETE\" && parts.length === 1) {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await deleteExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true };\n }\n\n setResponseStatus(event, 404);\n return { error: \"Not found\" };\n}\n\nasync function extensionResponse(\n row: ExtensionRow | LocalExtensionRow,\n role?: \"owner\" | ShareRole | null,\n options: { includeContent?: boolean } = {},\n) {\n const local = isLocalExtensionRow(row);\n const resolvedRole = local\n ? \"viewer\"\n : (role ??\n (await resolveAccess(\"extension\", row.id)\n .then((access) => access?.role ?? null)\n .catch(() => null)));\n const responseRow =\n options.includeContent === false\n ? (({ content: _content, ...rest }) => rest)(row)\n : row;\n return {\n ...responseRow,\n role: resolvedRole,\n canEdit: local\n ? false\n : resolvedRole\n ? [\"owner\", \"admin\", \"editor\"].includes(resolvedRole)\n : false,\n canDelete: local\n ? false\n : resolvedRole\n ? [\"owner\", \"admin\"].includes(resolvedRole)\n : false,\n globallyHidden: row.hiddenAt != null,\n };\n}\n\nasync function localExtensionSqlOnlyResponse(\n event: H3Event,\n extensionId: string,\n): Promise<unknown | null> {\n const localExtension = await getLocalExtension(extensionId);\n if (!localExtension) return null;\n setResponseStatus(event, 400);\n return {\n error:\n \"This extension is backed by local files. Edit its extension.json or entry file in the workspace; SQL-backed extension history, sharing, hide, update, and delete operations do not apply.\",\n source: localExtension.source,\n };\n}\n\nasync function handleExtensionDataList(\n event: H3Event,\n extensionId: string,\n collection: string,\n userEmail: string,\n): Promise<unknown> {\n await ensureExtensionsTables();\n const access = await requireExtensionDataAccess(event, extensionId, \"viewer\");\n if (!access.ok) return access.response;\n\n const client = getDbExec();\n const url = event.url;\n const limitParam = url?.searchParams?.get(\"limit\");\n const limit = limitParam\n ? Math.min(Math.max(1, Number(limitParam)), 1000)\n : 100;\n const scope = url?.searchParams?.get(\"scope\") || \"user\";\n const orgId = getRequestOrgId();\n\n if (scope === \"org\") {\n if (!orgId) {\n setResponseStatus(event, 400);\n return { error: \"Org context required for scope=org\" };\n }\n const result = await client.execute({\n sql: `SELECT COALESCE(item_id, id) AS id, tool_id, collection, data, owner_email, scope, org_id, created_at, updated_at\n FROM tool_data\n WHERE tool_id = ? AND collection = ? AND scope = 'org' AND org_id = ?\n ORDER BY created_at DESC\n LIMIT ?`,\n args: [extensionId, collection, orgId, limit],\n });\n return result.rows ?? [];\n }\n\n if (scope === \"all\") {\n const result = await client.execute({\n sql: `SELECT COALESCE(item_id, id) AS id, tool_id, collection, data, owner_email, scope, org_id, created_at, updated_at\n FROM tool_data\n WHERE tool_id = ? AND collection = ?\n AND ((scope = 'user' AND owner_email = ?) OR (scope = 'org' AND org_id = ?))\n ORDER BY created_at DESC\n LIMIT ?`,\n args: [extensionId, collection, userEmail, orgId ?? \"\", limit],\n });\n return result.rows ?? [];\n }\n\n const result = await client.execute({\n sql: `SELECT COALESCE(item_id, id) AS id, tool_id, collection, data, owner_email, scope, org_id, created_at, updated_at\n FROM tool_data\n WHERE tool_id = ? AND collection = ? AND scope = 'user' AND owner_email = ?\n ORDER BY updated_at DESC\n LIMIT ?`,\n args: [extensionId, collection, userEmail, limit],\n });\n return result.rows ?? [];\n}\n\nasync function handleExtensionDataUpsert(\n event: H3Event,\n extensionId: string,\n collection: string,\n userEmail: string,\n): Promise<unknown> {\n await ensureExtensionsTables();\n const access = await requireExtensionDataAccess(event, extensionId, \"editor\");\n if (!access.ok) return access.response;\n\n const body = await readBody(event);\n if (body.data === undefined) {\n setResponseStatus(event, 400);\n return { error: \"data is required\" };\n }\n const itemId = String(body.id || randomUUID());\n const data =\n typeof body.data === \"string\" ? body.data : JSON.stringify(body.data);\n const now = new Date().toISOString();\n const scope = body.scope === \"org\" ? \"org\" : \"user\";\n const orgId = getRequestOrgId();\n\n if (scope === \"org\" && !orgId) {\n setResponseStatus(event, 400);\n return { error: \"Org context required for scope=org\" };\n }\n\n const scopeKey = scope === \"org\" ? `org:${orgId}` : userEmail;\n const client = getDbExec();\n const pg = isPostgres();\n const conflictClause = pg\n ? `ON CONFLICT (tool_id, collection, scope_key, item_id)\n DO UPDATE SET data = EXCLUDED.data, updated_at = EXCLUDED.updated_at`\n : `ON CONFLICT (tool_id, collection, scope_key, item_id)\n DO UPDATE SET data = excluded.data, updated_at = excluded.updated_at`;\n\n await client.execute({\n sql: `INSERT INTO tool_data (id, tool_id, collection, item_id, data, owner_email, scope, org_id, scope_key, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n ${conflictClause}`,\n args: [\n randomUUID(),\n extensionId,\n collection,\n itemId,\n data,\n userEmail,\n scope,\n scope === \"org\" ? orgId! : null,\n scopeKey,\n now,\n now,\n ],\n });\n return {\n id: itemId,\n extensionId,\n collection,\n data,\n ownerEmail: userEmail,\n scope,\n orgId: scope === \"org\" ? orgId : null,\n createdAt: now,\n updatedAt: now,\n };\n}\n\nasync function handleExtensionDataDelete(\n event: H3Event,\n extensionId: string,\n collection: string,\n itemId: string,\n userEmail: string,\n): Promise<unknown> {\n await ensureExtensionsTables();\n const access = await requireExtensionDataAccess(event, extensionId, \"editor\");\n if (!access.ok) return access.response;\n\n const url = event.url;\n const scope = url?.searchParams?.get(\"scope\") || \"user\";\n const orgId = getRequestOrgId();\n const client = getDbExec();\n\n if (scope === \"org\") {\n if (!orgId) {\n setResponseStatus(event, 400);\n return { error: \"Org context required for scope=org\" };\n }\n await client.execute({\n sql: `DELETE FROM tool_data WHERE COALESCE(item_id, id) = ? AND tool_id = ? AND collection = ? AND scope = 'org' AND org_id = ?`,\n args: [itemId, extensionId, collection, orgId],\n });\n return { ok: true };\n }\n\n await client.execute({\n sql: `DELETE FROM tool_data WHERE COALESCE(item_id, id) = ? AND tool_id = ? AND collection = ? AND scope = 'user' AND owner_email = ?`,\n args: [itemId, extensionId, collection, userEmail],\n });\n return { ok: true };\n}\n\nasync function requireExtensionDataAccess(\n event: H3Event,\n extensionId: string,\n minRole: ShareRole,\n): Promise<{ ok: true } | { ok: false; response: unknown }> {\n const access = await resolveAccess(\"extension\", extensionId);\n if (access) {\n if (ROLE_RANK[access.role] < ROLE_RANK[minRole]) {\n setResponseStatus(event, 403);\n return {\n ok: false,\n response: {\n error: `Requires ${minRole} role on extension ${extensionId} (have ${access.role})`,\n },\n };\n }\n return { ok: true };\n }\n\n const localExtension = await getLocalExtension(extensionId);\n if (localExtension) {\n if (!localExtension.source.permissions.extensionData) {\n setResponseStatus(event, 403);\n return {\n ok: false,\n response: { error: \"extensionData is disabled for this extension\" },\n };\n }\n return { ok: true };\n }\n\n setResponseStatus(event, 404);\n return { ok: false, response: { error: \"Extension not found\" } };\n}\n\nasync function handleProxy(\n event: H3Event,\n userEmail: string,\n): Promise<unknown> {\n const body = await readBody(event);\n const rawUrl = body.url;\n if (!rawUrl || typeof rawUrl !== \"string\") {\n setResponseStatus(event, 400);\n return { error: \"url is required\" };\n }\n\n const method = normalizeExtensionProxyMethod(body.method || \"GET\");\n if (!method) {\n setResponseStatus(event, 405);\n return {\n error:\n \"Unsupported HTTP method. Allowed methods: GET, POST, PUT, PATCH, DELETE, HEAD.\",\n };\n }\n const rawHeaders: Record<string, string> = body.headers || {};\n const rawBody = body.body;\n\n let resolvedUrl = rawUrl;\n // Resolve secret references per header value rather than over a single\n // JSON.stringify(headers) blob. A secret value containing a double-quote\n // would corrupt that JSON, the later JSON.parse would throw, and the request\n // would silently fall back to the *unresolved* headers (placeholders intact).\n const parsedHeaders: Record<string, string> = {};\n let resolvedBody = rawBody;\n const allSecretValues: string[] = [];\n const allResolvedKeys: ResolvedKeyReference[] = [];\n\n try {\n const urlResult = await resolveKeyReferencesWithRequestScopes(\n rawUrl,\n userEmail,\n );\n resolvedUrl = urlResult.resolved;\n allSecretValues.push(...urlResult.secretValues);\n allResolvedKeys.push(...(urlResult.resolvedKeys ?? []));\n\n for (const [hk, hv] of Object.entries(rawHeaders)) {\n const headerResult = await resolveKeyReferencesWithRequestScopes(\n typeof hv === \"string\" ? hv : String(hv),\n userEmail,\n );\n parsedHeaders[hk] = headerResult.resolved;\n allSecretValues.push(...headerResult.secretValues);\n allResolvedKeys.push(...(headerResult.resolvedKeys ?? []));\n }\n\n if (rawBody) {\n const bodyResult = await resolveKeyReferencesWithRequestScopes(\n typeof rawBody === \"string\" ? rawBody : JSON.stringify(rawBody),\n userEmail,\n );\n resolvedBody = bodyResult.resolved;\n allSecretValues.push(...bodyResult.secretValues);\n allResolvedKeys.push(...(bodyResult.resolvedKeys ?? []));\n }\n } catch (err: any) {\n setResponseStatus(event, 400);\n return { error: `Key resolution failed: ${err?.message ?? err}` };\n }\n const secretValues = collectSecretValues(allSecretValues);\n\n if (await isBlockedExtensionUrlWithDns(resolvedUrl)) {\n setResponseStatus(event, 403);\n return { error: \"Requests to private/internal addresses are not allowed\" };\n }\n\n const uniqueResolvedKeys = new Map(\n allResolvedKeys.map((ref) => [\n `${ref.name}:${ref.scope}:${ref.scopeId}`,\n ref,\n ]),\n );\n for (const keyRef of uniqueResolvedKeys.values()) {\n const allowlist = await getResolvedKeyAllowlist(keyRef);\n if (!validateUrlAllowlist(resolvedUrl, allowlist)) {\n setResponseStatus(event, 403);\n return {\n error: `Key \"${keyRef.name}\" is not allowed for this URL origin`,\n };\n }\n }\n\n const headers = sanitizeOutboundHeaders(parsedHeaders);\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 15_000);\n\n // Best-effort connect-time SSRF guard. When undici is available (it ships\n // with Node 18+ but is not always exposed as an importable module), the\n // dispatcher re-checks the resolved IP at TCP-connect time, closing the\n // TOCTOU between the pre-flight `isBlockedExtensionUrlWithDns` lookup and the\n // actual fetch lookup. If undici is not importable, fall through to plain\n // fetch — the pre-flight remains the primary protection.\n const dispatcher = (await createSsrfSafeDispatcher()) ?? undefined;\n\n try {\n const fetchOpts: RequestInit & { dispatcher?: unknown } = {\n method,\n headers,\n signal: controller.signal,\n redirect: \"manual\",\n };\n if (dispatcher) fetchOpts.dispatcher = dispatcher;\n if (resolvedBody && [\"POST\", \"PUT\", \"PATCH\"].includes(method)) {\n const isStringBody = typeof resolvedBody === \"string\";\n fetchOpts.body = isStringBody\n ? resolvedBody\n : JSON.stringify(resolvedBody);\n // Only inject Content-Type when (a) the caller didn't set one and\n // (b) the body is actually JSON-shaped (object or stringified JSON).\n // Otherwise leave it unset so the runtime fetch picks an appropriate\n // default and we don't misrepresent text/plain bodies as JSON.\n const hasContentType = Object.keys(headers).some(\n (k) => k.toLowerCase() === \"content-type\",\n );\n if (!hasContentType) {\n const isJsonShaped =\n !isStringBody ||\n (typeof resolvedBody === \"string\" &&\n /^\\s*[{[]/.test(resolvedBody) &&\n isLikelyJson(resolvedBody));\n if (isJsonShaped) headers[\"Content-Type\"] = \"application/json\";\n }\n }\n\n const response = await fetch(resolvedUrl, fetchOpts);\n\n if (response.status >= 300 && response.status < 400) {\n const location = response.headers.get(\"location\");\n const redirectUrl = location ? new URL(location, resolvedUrl).href : null;\n if (redirectUrl && (await isBlockedExtensionUrlWithDns(redirectUrl))) {\n setResponseStatus(event, 403);\n return { error: \"Redirect to private/internal address blocked\" };\n }\n if (redirectUrl) {\n for (const keyRef of uniqueResolvedKeys.values()) {\n const allowlist = await getResolvedKeyAllowlist(keyRef);\n if (!validateUrlAllowlist(redirectUrl, allowlist)) {\n setResponseStatus(event, 403);\n return {\n error: `Redirect URL is not allowed for key \"${keyRef.name}\"`,\n };\n }\n }\n }\n return {\n status: response.status,\n body: {\n redirect: redirectUrl\n ? redactString(redirectUrl, secretValues)\n : location,\n },\n };\n }\n\n const { text } = await readResponseTextWithLimit(response);\n let responseBody: unknown;\n try {\n responseBody = JSON.parse(text);\n } catch {\n responseBody = text;\n }\n\n return {\n status: response.status,\n body: redactSecrets(responseBody, secretValues),\n };\n } catch (err: any) {\n if (err?.name === \"AbortError\") {\n setResponseStatus(event, 504);\n return { error: \"Upstream request timed out\" };\n }\n setResponseStatus(event, 502);\n return {\n error: `Proxy request failed: ${redactSecrets(\n err?.message ?? String(err),\n secretValues,\n )}`,\n };\n } finally {\n clearTimeout(timeout);\n }\n}\n\n/**\n * Capture console output from a CLI script that uses console.log for results.\n * Same technique as wrapCliScript in agent-chat-plugin.ts.\n */\nlet captureCliOutputQueue: Promise<void> = Promise.resolve();\n\nasync function captureCliOutput(\n fn: (args: string[]) => Promise<void>,\n args: string[],\n): Promise<string> {\n const previousCapture = captureCliOutputQueue;\n let releaseCapture!: () => void;\n captureCliOutputQueue = new Promise<void>((resolve) => {\n releaseCapture = resolve;\n });\n await previousCapture;\n\n const logs: string[] = [];\n const origLog = console.log;\n const origError = console.error;\n const origStdoutWrite = process.stdout.write;\n console.log = (...a: unknown[]) => {\n logs.push(a.map(String).join(\" \"));\n };\n console.error = (...a: unknown[]) => {\n logs.push(a.map(String).join(\" \"));\n };\n process.stdout.write = ((chunk: any) => {\n if (typeof chunk === \"string\") logs.push(chunk);\n else if (Buffer.isBuffer(chunk)) logs.push(chunk.toString());\n return true;\n }) as any;\n try {\n await fn(args);\n } catch (err: any) {\n logs.push(`Error: ${err?.message ?? String(err)}`);\n } finally {\n console.log = origLog;\n console.error = origError;\n process.stdout.write = origStdoutWrite;\n releaseCapture();\n }\n return logs.join(\"\\n\") || \"(no output)\";\n}\n\nasync function handleSqlQuery(event: H3Event): Promise<unknown> {\n const body = await readBody(event);\n const sql = body.sql;\n if (!sql || typeof sql !== \"string\") {\n setResponseStatus(event, 400);\n return { error: \"sql is required\" };\n }\n\n const cleanSql = stripSqlComments(sql);\n if (!/^\\s*(SELECT|WITH)\\b/i.test(cleanSql)) {\n setResponseStatus(event, 403);\n return { error: \"Only SELECT queries are allowed from extensions\" };\n }\n if (matchesSqlGate(SENSITIVE_SQL_RE, sql)) {\n setResponseStatus(event, 403);\n return {\n error: \"Sensitive framework tables are not readable from extensions\",\n };\n }\n\n try {\n const mod = await import(\"../scripts/db/query.js\");\n const args = [\"--sql\", sql, \"--format\", \"json\"];\n if (body.limit) args.push(\"--limit\", String(body.limit));\n if (body.args !== undefined) {\n if (!Array.isArray(body.args)) {\n setResponseStatus(event, 400);\n return { error: \"args must be an array\" };\n }\n args.push(\"--args\", JSON.stringify(body.args));\n }\n const output = await captureCliOutput(mod.default, args);\n try {\n return JSON.parse(output);\n } catch {\n return { output };\n }\n } catch (err: any) {\n setResponseStatus(event, 500);\n return { error: err?.message ?? \"Query failed\" };\n }\n}\n\n// TODO(security): replace this regex blocklist with a SQL parser + an explicit\n// allowlist of tables a extension may read/write (e.g. only `tool_data`, plus a\n// per-template list). The current blocklist is best-effort defense in depth\n// and is by design bypassable via SQL constructions that don't include the\n// blocklisted token literally (string concat, dynamic SQL, etc). The temp-\n// view scoping in scripts/db/scoping.ts is the actual ownership boundary.\nexport const DESTRUCTIVE_SQL_RE =\n /\\b(CREATE\\s+(?:(?:LOCAL|GLOBAL)\\s+)?(?:TEMPORARY|TEMP)?\\s*(TABLE|INDEX|VIEW|SCHEMA|DATABASE|TRIGGER|FUNCTION|EXTENSION|ROLE|TABLESPACE|PUBLICATION|SUBSCRIPTION)|DROP\\s+(TABLE|INDEX|VIEW|SCHEMA|DATABASE|TRIGGER|FUNCTION|EXTENSION|ROLE)|TRUNCATE|DELETE\\s+FROM\\s+(?!tool_data\\b)|ALTER\\s+(TABLE|VIEW|SCHEMA|DATABASE|FUNCTION|ROLE|EXTENSION|PUBLICATION)\\s+(?!tool_data\\b)|ATTACH|DETACH|VACUUM|REINDEX|PRAGMA|GRANT|REVOKE|SET\\s+ROLE|RESET\\s+ROLE|COPY)\\b/i;\n\n// Sensitive tables that extensions must not touch directly. Includes Better Auth\n// identity tables, framework infrastructure (tracing, evals, automations,\n// integrations, notifications, scheduling, sharing/orgs), and Postgres\n// catalogs that would let a extension enumerate or read internals.\nexport const SENSITIVE_SQL_RE =\n /\\b(app_secrets|user|users|session|sessions|account|accounts|verification|oauth_tokens|tools|extensions|tool_shares|tool_slots|tool_slot_installs|tool_hidden_extensions|tool_history|member|organization|invitation|jwks|agent_trace_spans|agent_trace_summaries|agent_feedback|agent_satisfaction_scores|agent_evals|agent_runs|agent_run_events|notifications|progress_runs|integration_configs|integration_pending_tasks|integration_thread_mappings|resources|org_members|org_invitations|bigquery_cache|dashboard_views|pg_catalog|information_schema|pg_class|pg_proc|pg_namespace|pg_user|pg_roles|pg_authid|pg_shadow)\\b/i;\n\n// Refuses positional INSERTs (no column list). `INSERT INTO recordings VALUES\n// (...)` would let a extension stuff arbitrary owner_email values into a row.\n// `INSERT INTO recordings (col1, col2) VALUES (...)` is required so the\n// downstream injectOwnership helper can append owner_email.\nexport const POSITIONAL_INSERT_RE =\n /\\bINSERT\\s+INTO\\s+[\"'`]?\\w+[\"'`]?\\s+VALUES\\b/i;\n\nfunction stripSqlComments(sql: string): string {\n return sql.replace(/\\/\\*[\\s\\S]*?\\*\\//g, \" \").replace(/--[^\\n]*/g, \" \");\n}\n\n/**\n * Test a blocklist regex against the SQL with comments normalized two ways, so\n * a comment placed *inside* a keyword can't smuggle a blocked construct past a\n * literal-token match:\n * - comments → space catches `DROP /* x */ TABLE` (token boundaries kept)\n * - comments → empty catches `DR/**/OP TABLE` (split keyword rejoined)\n *\n * A statement is refused if EITHER normalization trips the regex. This only\n * ever ADDS matches — it never newly-allows SQL — so it cannot loosen the gate\n * (real extension SQL doesn't embed comments inside keywords, so false-positive\n * risk is negligible). The authoritative ownership boundary remains the\n * fail-closed temp-view scoping in scripts/db/scoping.ts; this stays defense in\n * depth. See the TODO above re: replacing all of this with a real SQL parser.\n */\nexport function matchesSqlGate(re: RegExp, sql: string): boolean {\n const withSpace = sql\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, \" \")\n .replace(/--[^\\n]*/g, \" \");\n const withNothing = sql\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\")\n .replace(/--[^\\n]*/g, \"\");\n return re.test(withSpace) || re.test(withNothing);\n}\n\nfunction isLikelyJson(text: string): boolean {\n try {\n const parsed = JSON.parse(text);\n return parsed !== null && typeof parsed === \"object\";\n } catch {\n return false;\n }\n}\n\nasync function handleSqlExec(event: H3Event): Promise<unknown> {\n const body = await readBody(event);\n const sql = body.sql;\n if (!sql || typeof sql !== \"string\") {\n setResponseStatus(event, 400);\n return { error: \"sql is required\" };\n }\n\n if (matchesSqlGate(DESTRUCTIVE_SQL_RE, sql)) {\n setResponseStatus(event, 403);\n return {\n error:\n \"Schema changes and destructive SQL are not allowed from extensions\",\n };\n }\n if (matchesSqlGate(SENSITIVE_SQL_RE, sql)) {\n setResponseStatus(event, 403);\n return {\n error: \"Sensitive framework tables are not writable from extensions\",\n };\n }\n if (matchesSqlGate(POSITIONAL_INSERT_RE, sql)) {\n setResponseStatus(event, 400);\n return {\n error:\n \"INSERT must specify an explicit column list (e.g. INSERT INTO t (col1, col2) VALUES (?, ?)) so ownership can be injected.\",\n };\n }\n\n try {\n const mod = await import(\"../scripts/db/exec.js\");\n const args = [\"--sql\", sql, \"--format\", \"json\"];\n if (body.args !== undefined) {\n if (!Array.isArray(body.args)) {\n setResponseStatus(event, 400);\n return { error: \"args must be an array\" };\n }\n args.push(\"--args\", JSON.stringify(body.args));\n }\n const output = await captureCliOutput(mod.default, args);\n try {\n return JSON.parse(output);\n } catch {\n return { output };\n }\n } catch (err: any) {\n setResponseStatus(event, 500);\n return { error: err?.message ?? \"Exec failed\" };\n }\n}\n"]}
|