@agent-native/core 0.79.2 → 0.79.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +24 -0
- package/corpus/core/docs/content/locales/zh-TW/a2a-protocol.md +392 -0
- package/corpus/core/docs/content/locales/zh-TW/actions.md +583 -0
- package/corpus/core/docs/content/locales/zh-TW/agent-mentions.md +164 -0
- package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.md +397 -0
- package/corpus/core/docs/content/locales/zh-TW/agent-teams.md +171 -0
- package/corpus/core/docs/content/locales/zh-TW/agent-web-surfaces.md +161 -0
- package/corpus/core/docs/content/locales/zh-TW/audit-log.md +111 -0
- package/corpus/core/docs/content/locales/zh-TW/authentication.md +332 -0
- package/corpus/core/docs/content/locales/zh-TW/automations.md +268 -0
- package/corpus/core/docs/content/locales/zh-TW/blueprint-installer.md +83 -0
- package/corpus/core/docs/content/locales/zh-TW/cli-adapters.md +129 -0
- package/corpus/core/docs/content/locales/zh-TW/client.md +398 -0
- package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.md +114 -0
- package/corpus/core/docs/content/locales/zh-TW/code-agents-ui.md +436 -0
- package/corpus/core/docs/content/locales/zh-TW/components.md +368 -0
- package/corpus/core/docs/content/locales/zh-TW/context-awareness.md +373 -0
- package/corpus/core/docs/content/locales/zh-TW/creating-templates.md +411 -0
- package/corpus/core/docs/content/locales/zh-TW/cross-app-sso.md +188 -0
- package/corpus/core/docs/content/locales/zh-TW/database.md +183 -0
- package/corpus/core/docs/content/locales/zh-TW/deployment.md +348 -0
- package/corpus/core/docs/content/locales/zh-TW/dispatch.md +146 -0
- package/corpus/core/docs/content/locales/zh-TW/drop-in-agent.md +260 -0
- package/corpus/core/docs/content/locales/zh-TW/durable-resume.md +65 -0
- package/corpus/core/docs/content/locales/zh-TW/embedding-sdk.md +597 -0
- package/corpus/core/docs/content/locales/zh-TW/evals.md +155 -0
- package/corpus/core/docs/content/locales/zh-TW/extensions.md +360 -0
- package/corpus/core/docs/content/locales/zh-TW/external-agents.md +619 -0
- package/corpus/core/docs/content/locales/zh-TW/faq.md +142 -0
- package/corpus/core/docs/content/locales/zh-TW/file-uploads.md +122 -0
- package/corpus/core/docs/content/locales/zh-TW/frames.md +153 -0
- package/corpus/core/docs/content/locales/zh-TW/getting-started.md +199 -0
- package/corpus/core/docs/content/locales/zh-TW/harness-agents.md +349 -0
- package/corpus/core/docs/content/locales/zh-TW/human-approval.md +86 -0
- package/corpus/core/docs/content/locales/zh-TW/internationalization.md +147 -0
- package/corpus/core/docs/content/locales/zh-TW/key-concepts.md +312 -0
- package/corpus/core/docs/content/locales/zh-TW/local-file-mode.md +433 -0
- package/corpus/core/docs/content/locales/zh-TW/mcp-apps.md +147 -0
- package/corpus/core/docs/content/locales/zh-TW/mcp-clients.md +330 -0
- package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.md +279 -0
- package/corpus/core/docs/content/locales/zh-TW/messaging.md +461 -0
- package/corpus/core/docs/content/locales/zh-TW/migration-workbench.md +33 -0
- package/corpus/core/docs/content/locales/zh-TW/multi-app-workspace.md +312 -0
- package/corpus/core/docs/content/locales/zh-TW/multi-tenancy.md +52 -0
- package/corpus/core/docs/content/locales/zh-TW/native-chat-ui.md +321 -0
- package/corpus/core/docs/content/locales/zh-TW/notifications.md +231 -0
- package/corpus/core/docs/content/locales/zh-TW/observability.md +294 -0
- package/corpus/core/docs/content/locales/zh-TW/observational-memory.md +77 -0
- package/corpus/core/docs/content/locales/zh-TW/onboarding.md +216 -0
- package/corpus/core/docs/content/locales/zh-TW/plan-plugin.md +200 -0
- package/corpus/core/docs/content/locales/zh-TW/pr-visual-recap.md +384 -0
- package/corpus/core/docs/content/locales/zh-TW/processors.md +106 -0
- package/corpus/core/docs/content/locales/zh-TW/progress.md +199 -0
- package/corpus/core/docs/content/locales/zh-TW/pure-agent-apps.md +39 -0
- package/corpus/core/docs/content/locales/zh-TW/real-time-collaboration.md +680 -0
- package/corpus/core/docs/content/locales/zh-TW/recurring-jobs.md +142 -0
- package/corpus/core/docs/content/locales/zh-TW/routing.md +79 -0
- package/corpus/core/docs/content/locales/zh-TW/sandbox-adapters.md +227 -0
- package/corpus/core/docs/content/locales/zh-TW/security.md +330 -0
- package/corpus/core/docs/content/locales/zh-TW/server.md +265 -0
- package/corpus/core/docs/content/locales/zh-TW/sharing.md +219 -0
- package/corpus/core/docs/content/locales/zh-TW/skills-guide.md +281 -0
- package/corpus/core/docs/content/locales/zh-TW/template-analytics.md +259 -0
- package/corpus/core/docs/content/locales/zh-TW/template-assets.md +303 -0
- package/corpus/core/docs/content/locales/zh-TW/template-brain.md +324 -0
- package/corpus/core/docs/content/locales/zh-TW/template-calendar.md +194 -0
- package/corpus/core/docs/content/locales/zh-TW/template-chat.md +129 -0
- package/corpus/core/docs/content/locales/zh-TW/template-clips.md +368 -0
- package/corpus/core/docs/content/locales/zh-TW/template-content.md +402 -0
- package/corpus/core/docs/content/locales/zh-TW/template-design.md +173 -0
- package/corpus/core/docs/content/locales/zh-TW/template-dispatch.md +220 -0
- package/corpus/core/docs/content/locales/zh-TW/template-forms.md +178 -0
- package/corpus/core/docs/content/locales/zh-TW/template-mail.md +239 -0
- package/corpus/core/docs/content/locales/zh-TW/template-plan.md +814 -0
- package/corpus/core/docs/content/locales/zh-TW/template-slides.md +293 -0
- package/corpus/core/docs/content/locales/zh-TW/template-videos.md +222 -0
- package/corpus/core/docs/content/locales/zh-TW/tracking.md +236 -0
- package/corpus/core/docs/content/locales/zh-TW/using-your-agent.md +71 -0
- package/corpus/core/docs/content/locales/zh-TW/voice-input.md +81 -0
- package/corpus/core/docs/content/locales/zh-TW/what-is-agent-native.md +202 -0
- package/corpus/core/docs/content/locales/zh-TW/workspace-connections.md +321 -0
- package/corpus/core/docs/content/locales/zh-TW/workspace-management.md +175 -0
- package/corpus/core/docs/content/locales/zh-TW/workspace.md +323 -0
- package/corpus/core/docs/content/locales/zh-TW/writing-agent-instructions.md +173 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/client/ErrorBoundary.tsx +10 -0
- package/corpus/core/src/client/FeedbackButton.tsx +12 -0
- package/corpus/core/src/client/blocks/library/block-copy.ts +32 -0
- package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +33 -0
- package/corpus/core/src/client/i18n.tsx +5 -0
- package/corpus/core/src/localization/actions/set-localization-preference.ts +2 -1
- package/corpus/core/src/localization/shared.ts +45 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +38 -0
- package/corpus/core/src/server/onboarding-html.ts +99 -0
- package/corpus/core/src/templates/default/app/i18n/index.ts +2 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +466 -0
- package/corpus/core/src/templates/default/app/root.tsx +8 -0
- package/corpus/templates/analytics/app/i18n/index.ts +2 -0
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +818 -0
- package/corpus/templates/analytics/app/i18n-data.ts +9 -0
- package/corpus/templates/assets/app/i18n/index.ts +2 -0
- package/corpus/templates/assets/app/i18n/zh-TW.ts +860 -0
- package/corpus/templates/assets/app/i18n-data.ts +3 -0
- package/corpus/templates/brain/app/i18n/index.ts +2 -0
- package/corpus/templates/brain/app/i18n/zh-TW.ts +709 -0
- package/corpus/templates/brain/app/i18n-data.ts +3 -0
- package/corpus/templates/calendar/app/i18n/zh-TW.ts +836 -0
- package/corpus/templates/calendar/app/i18n-data.ts +4 -0
- package/corpus/templates/chat/app/i18n/index.ts +2 -0
- package/corpus/templates/chat/app/i18n/zh-TW.ts +67 -0
- package/corpus/templates/chat/app/i18n-data.ts +3 -0
- package/corpus/templates/clips/app/i18n/index.ts +2 -0
- package/corpus/templates/clips/app/i18n/zh-TW.ts +1280 -0
- package/corpus/templates/content/app/i18n/index.ts +2 -0
- package/corpus/templates/content/app/i18n/zh-TW.ts +906 -0
- package/corpus/templates/content/app/i18n-data.ts +4 -0
- package/corpus/templates/design/app/i18n/index.ts +2 -0
- package/corpus/templates/design/app/i18n/zh-TW.ts +517 -0
- package/corpus/templates/design/app/i18n-data.ts +6 -0
- package/corpus/templates/dispatch/app/i18n/index.ts +2 -0
- package/corpus/templates/dispatch/app/i18n/zh-TW.ts +195 -0
- package/corpus/templates/dispatch/app/i18n-data.ts +3 -0
- package/corpus/templates/forms/app/i18n/index.ts +2 -0
- package/corpus/templates/forms/app/i18n/zh-TW.ts +349 -0
- package/corpus/templates/macros/app/i18n/index.ts +2 -0
- package/corpus/templates/macros/app/i18n/zh-TW.ts +224 -0
- package/corpus/templates/mail/app/i18n/index.ts +2 -0
- package/corpus/templates/mail/app/i18n/zh-TW.ts +562 -0
- package/corpus/templates/mail/app/root.tsx +6 -0
- package/corpus/templates/plan/app/i18n/index.ts +2 -0
- package/corpus/templates/plan/app/i18n/zh-TW.ts +712 -0
- package/corpus/templates/slides/app/i18n/index.ts +2 -0
- package/corpus/templates/slides/app/i18n/zh-TW.ts +531 -0
- package/corpus/templates/videos/app/i18n/index.ts +2 -0
- package/corpus/templates/videos/app/i18n/zh-TW.ts +435 -0
- package/dist/client/ErrorBoundary.d.ts.map +1 -1
- package/dist/client/ErrorBoundary.js +10 -0
- package/dist/client/ErrorBoundary.js.map +1 -1
- package/dist/client/FeedbackButton.d.ts.map +1 -1
- package/dist/client/FeedbackButton.js +12 -0
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/blocks/library/block-copy.d.ts.map +1 -1
- package/dist/client/blocks/library/block-copy.js +32 -0
- package/dist/client/blocks/library/block-copy.js.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js +32 -0
- package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
- package/dist/client/i18n.d.ts.map +1 -1
- package/dist/client/i18n.js +5 -0
- package/dist/client/i18n.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/localization/actions/set-localization-preference.d.ts.map +1 -1
- package/dist/localization/actions/set-localization-preference.js +2 -2
- package/dist/localization/actions/set-localization-preference.js.map +1 -1
- package/dist/localization/shared.d.ts +1 -1
- package/dist/localization/shared.d.ts.map +1 -1
- package/dist/localization/shared.js +43 -0
- package/dist/localization/shared.js.map +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +3 -3
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +39 -0
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +2 -2
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +96 -0
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/templates/default/app/i18n/index.ts +2 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +466 -0
- package/dist/templates/default/app/root.tsx +8 -0
- package/docs/content/locales/zh-TW/a2a-protocol.md +392 -0
- package/docs/content/locales/zh-TW/actions.md +583 -0
- package/docs/content/locales/zh-TW/agent-mentions.md +164 -0
- package/docs/content/locales/zh-TW/agent-surfaces.md +397 -0
- package/docs/content/locales/zh-TW/agent-teams.md +171 -0
- package/docs/content/locales/zh-TW/agent-web-surfaces.md +161 -0
- package/docs/content/locales/zh-TW/audit-log.md +111 -0
- package/docs/content/locales/zh-TW/authentication.md +332 -0
- package/docs/content/locales/zh-TW/automations.md +268 -0
- package/docs/content/locales/zh-TW/blueprint-installer.md +83 -0
- package/docs/content/locales/zh-TW/cli-adapters.md +129 -0
- package/docs/content/locales/zh-TW/client.md +398 -0
- package/docs/content/locales/zh-TW/cloneable-saas.md +114 -0
- package/docs/content/locales/zh-TW/code-agents-ui.md +436 -0
- package/docs/content/locales/zh-TW/components.md +368 -0
- package/docs/content/locales/zh-TW/context-awareness.md +373 -0
- package/docs/content/locales/zh-TW/creating-templates.md +411 -0
- package/docs/content/locales/zh-TW/cross-app-sso.md +188 -0
- package/docs/content/locales/zh-TW/database.md +183 -0
- package/docs/content/locales/zh-TW/deployment.md +348 -0
- package/docs/content/locales/zh-TW/dispatch.md +146 -0
- package/docs/content/locales/zh-TW/drop-in-agent.md +260 -0
- package/docs/content/locales/zh-TW/durable-resume.md +65 -0
- package/docs/content/locales/zh-TW/embedding-sdk.md +597 -0
- package/docs/content/locales/zh-TW/evals.md +155 -0
- package/docs/content/locales/zh-TW/extensions.md +360 -0
- package/docs/content/locales/zh-TW/external-agents.md +619 -0
- package/docs/content/locales/zh-TW/faq.md +142 -0
- package/docs/content/locales/zh-TW/file-uploads.md +122 -0
- package/docs/content/locales/zh-TW/frames.md +153 -0
- package/docs/content/locales/zh-TW/getting-started.md +199 -0
- package/docs/content/locales/zh-TW/harness-agents.md +349 -0
- package/docs/content/locales/zh-TW/human-approval.md +86 -0
- package/docs/content/locales/zh-TW/internationalization.md +147 -0
- package/docs/content/locales/zh-TW/key-concepts.md +312 -0
- package/docs/content/locales/zh-TW/local-file-mode.md +433 -0
- package/docs/content/locales/zh-TW/mcp-apps.md +147 -0
- package/docs/content/locales/zh-TW/mcp-clients.md +330 -0
- package/docs/content/locales/zh-TW/mcp-protocol.md +279 -0
- package/docs/content/locales/zh-TW/messaging.md +461 -0
- package/docs/content/locales/zh-TW/migration-workbench.md +33 -0
- package/docs/content/locales/zh-TW/multi-app-workspace.md +312 -0
- package/docs/content/locales/zh-TW/multi-tenancy.md +52 -0
- package/docs/content/locales/zh-TW/native-chat-ui.md +321 -0
- package/docs/content/locales/zh-TW/notifications.md +231 -0
- package/docs/content/locales/zh-TW/observability.md +294 -0
- package/docs/content/locales/zh-TW/observational-memory.md +77 -0
- package/docs/content/locales/zh-TW/onboarding.md +216 -0
- package/docs/content/locales/zh-TW/plan-plugin.md +200 -0
- package/docs/content/locales/zh-TW/pr-visual-recap.md +384 -0
- package/docs/content/locales/zh-TW/processors.md +106 -0
- package/docs/content/locales/zh-TW/progress.md +199 -0
- package/docs/content/locales/zh-TW/pure-agent-apps.md +39 -0
- package/docs/content/locales/zh-TW/real-time-collaboration.md +680 -0
- package/docs/content/locales/zh-TW/recurring-jobs.md +142 -0
- package/docs/content/locales/zh-TW/routing.md +79 -0
- package/docs/content/locales/zh-TW/sandbox-adapters.md +227 -0
- package/docs/content/locales/zh-TW/security.md +330 -0
- package/docs/content/locales/zh-TW/server.md +265 -0
- package/docs/content/locales/zh-TW/sharing.md +219 -0
- package/docs/content/locales/zh-TW/skills-guide.md +281 -0
- package/docs/content/locales/zh-TW/template-analytics.md +259 -0
- package/docs/content/locales/zh-TW/template-assets.md +303 -0
- package/docs/content/locales/zh-TW/template-brain.md +324 -0
- package/docs/content/locales/zh-TW/template-calendar.md +194 -0
- package/docs/content/locales/zh-TW/template-chat.md +129 -0
- package/docs/content/locales/zh-TW/template-clips.md +368 -0
- package/docs/content/locales/zh-TW/template-content.md +402 -0
- package/docs/content/locales/zh-TW/template-design.md +173 -0
- package/docs/content/locales/zh-TW/template-dispatch.md +220 -0
- package/docs/content/locales/zh-TW/template-forms.md +178 -0
- package/docs/content/locales/zh-TW/template-mail.md +239 -0
- package/docs/content/locales/zh-TW/template-plan.md +814 -0
- package/docs/content/locales/zh-TW/template-slides.md +293 -0
- package/docs/content/locales/zh-TW/template-videos.md +222 -0
- package/docs/content/locales/zh-TW/tracking.md +236 -0
- package/docs/content/locales/zh-TW/using-your-agent.md +71 -0
- package/docs/content/locales/zh-TW/voice-input.md +81 -0
- package/docs/content/locales/zh-TW/what-is-agent-native.md +202 -0
- package/docs/content/locales/zh-TW/workspace-connections.md +321 -0
- package/docs/content/locales/zh-TW/workspace-management.md +175 -0
- package/docs/content/locales/zh-TW/workspace.md +323 -0
- package/docs/content/locales/zh-TW/writing-agent-instructions.md +173 -0
- package/package.json +1 -1
- package/src/templates/default/app/i18n/index.ts +2 -0
- package/src/templates/default/app/i18n/zh-TW.ts +466 -0
- package/src/templates/default/app/root.tsx +8 -0
package/dist/client/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/client/i18n.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,OAAsC,MAAM,SAAS,CAAC;AAC7D,OAAc,EACZ,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,GAK5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,sBAAsB,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,+BAA+B,EAC/B,2BAA2B,EAC3B,2BAA2B,GAK5B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AA2ChE,MAAM,aAAa,GAAG,aAAa,CAA4B,IAAI,CAAC,CAAC;AAErE,MAAM,oBAAoB,GAGtB;IACF,OAAO,EAAE;QACP,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,QAAQ;QAChB,iBAAiB,EAAE,2BAA2B;KAC/C;IACD,OAAO,EAAE;QACP,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,iBAAiB,EAAE,SAAS;KAC7B;IACD,OAAO,EAAE;QACP,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,SAAS;QACjB,iBAAiB,EAAE,8BAA8B;KAClD;IACD,OAAO,EAAE;QACP,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,SAAS;QACjB,iBAAiB,EAAE,kCAAkC;KACtD;IACD,OAAO,EAAE;QACP,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,QAAQ;QAChB,iBAAiB,EAAE,0BAA0B;KAC9C;IACD,OAAO,EAAE;QACP,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,MAAM;QACd,iBAAiB,EAAE,aAAa;KACjC;IACD,OAAO,EAAE;QACP,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,KAAK;QACb,iBAAiB,EAAE,YAAY;KAChC;IACD,OAAO,EAAE;QACP,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,SAAS;QACjB,iBAAiB,EAAE,4BAA4B;KAChD;IACD,OAAO,EAAE;QACP,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,QAAQ;QAChB,iBAAiB,EAAE,gCAAgC;KACpD;IACD,OAAO,EAAE;QACP,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,QAAQ;QAChB,iBAAiB,EAAE,qBAAqB;KACzC;CACF,CAAC;AAEF,SAAS,yBAAyB;IAChC,IAAI,OAAO,SAAS,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAChD,OAAO,SAAS,CAAC,SAAS,EAAE,MAAM;QAChC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC;QAC1B,CAAC,CAAC,SAAS,CAAC,QAAQ;YAClB,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC;YACtB,CAAC,CAAC,EAAE,CAAC;AACX,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,CAAC;QACH,OAAO,+BAA+B,CACpC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAChD,CAAC,MAAM,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,UAA4B;IACzD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;IAC9E,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAC7C,OAAO,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,mBAAmB,CAAC,IAG5B;IACC,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,+BAA+B,CAChD,IAAI,CAAC,iBAAiB,IAAI,SAAS,CAAC,UAAU,IAAI,oBAAoB,EAAE,CACzE,CAAC,MAAM,CAAC;IACT,MAAM,MAAM,GACV,IAAI,CAAC,aAAa;QAClB,SAAS,CAAC,MAAM;QAChB,2BAA2B,CAAC,UAAU,EAAE,yBAAyB,EAAE,CAAC,CAAC;IACvE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,MAAM,YAAY,GAAI,KAA+B,CAAC,OAAO,CAAC;IAC9D,IACE,YAAY;QACZ,OAAO,YAAY,KAAK,QAAQ;QAChC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAC5B,CAAC;QACD,OAAO,YAA8B,CAAC;IACxC,CAAC;IACD,OAAO,KAAuB,CAAC;AACjC,CAAC;AAED,SAAS,kBAAkB,CAAC,IAM3B;IACC,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAmD;QAChE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACnB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,QAAQ;SAChC;KACF,CAAC;IACF,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACrE,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG;YAC9B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe;SACvC,CAAC;IACJ,CAAC;IACD,KAAK,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;QACvC,SAAS;QACT,GAAG,EAAE,IAAI,CAAC,aAAa;QACvB,WAAW,EAAE,IAAI,CAAC,YAAY;QAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;QACpB,aAAa,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;QACrC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;QAC7B,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,EACtC,QAAQ,EACR,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,iBAAiB,GAAG,IAAI,GACK;IAC7B,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,aAAa,CAAC;IACtD,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,cAAc,CAAC;IAC7D,MAAM,cAAc,GAAG,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,CAAC;IAC3C,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC,EAC/D,CAAC,aAAa,EAAE,iBAAiB,CAAC,CACnC,CAAC;IACF,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAC/C,YAAY,CAAC,UAAU,CACxB,CAAC;IACF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAa,YAAY,CAAC,MAAM,CAAC,CAAC;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAC;IAElD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,iBAAiB,GAAG,uBAAuB,CAC/C,SAAS,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,IAAI,SAAS,CAAC,QAAQ;YAC5D,CAAC,CAAC,SAAS,CAAC,QAAQ;YACpB,CAAC,CAAC,eAAe,CACpB,CAAC;QACF,OAAO,CAAC,OAAO,GAAG,kBAAkB,CAAC;YACnC,SAAS;YACT,YAAY;YACZ,QAAQ,EACN,SAAS,CAAC,MAAM,KAAK,YAAY,IAAI,SAAS,CAAC,QAAQ;gBACrD,CAAC,CAAC,SAAS,CAAC,QAAQ;gBACpB,CAAC,CAAC,cAAc;YACpB,aAAa,EAAE,YAAY,CAAC,MAAM;YAClC,eAAe,EAAE,iBAAiB;SACnC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,iBAAiB,CACpB,YAAY,EACZ,SAAS,EACT,cAAc,EACd,IAAI,EACJ,IAAI,CACL,CAAC;QACJ,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;IAEpD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GACd,UAAU,KAAK,QAAQ;YACrB,CAAC,CAAC,2BAA2B,CAAC,yBAAyB,EAAE,CAAC;YAC1D,CAAC,CAAC,UAAU,CAAC;QACjB,SAAS,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,KAAK,UAAU,WAAW;YACxB,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,IAAI,CAAC;gBACH,IACE,MAAM,KAAK,YAAY;oBACvB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1C,CAAC;oBACD,MAAM,SAAS,GACb,SAAS,CAAC,MAAM,KAAK,MAAM,IAAI,SAAS,CAAC,QAAQ;wBAC/C,CAAC,CAAC,SAAS,CAAC,QAAQ;wBACpB,CAAC,CAAC,aAAa,KAAK,MAAM,IAAI,eAAe;4BAC3C,CAAC,CAAC,eAAe;4BACjB,CAAC,CAAC,IAAI,CAAC;oBACb,MAAM,MAAM,GAAG,SAAS,IAAI,CAAC,MAAM,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3D,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;oBACjD,IAAI,QAAQ,EAAE,CAAC;wBACb,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;oBAClE,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,SAAS;oBAAE,UAAU,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,KAAK,WAAW,EAAE,CAAC;QACnB,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE;QACD,SAAS,CAAC,MAAM;QAChB,SAAS,CAAC,QAAQ;QAClB,IAAI;QACJ,aAAa;QACb,eAAe;QACf,YAAY;QACZ,MAAM;QACN,SAAS;QACT,YAAY;KACb,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,QAAQ,KAAK,WAAW;YAAE,OAAO;QAC5C,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAC/B,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,UAAU,CACR,6BAA6B,EAC7B,SAAS,EACT,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB;aACE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,IAAI,SAAS;gBAAE,OAAO;YACtB,MAAM,UAAU,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YACjE,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAC/B,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,kEAAkE;QACpE,CAAC,CAAC,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAC1C,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;YACxC,IAAI,KAAK,CAAC,GAAG,KAAK,kBAAkB,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI;gBAAE,OAAO;YACvE,kBAAkB,CAChB,+BAA+B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CACvD,CAAC;QACJ,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC9C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,iBAAiB,CACpB,cAAc,EACd;YACE,MAAM;YACN,UAAU;YACV,GAAG,EAAE,eAAe,CAAC,MAAM,CAAC;SAC7B,EACD,EAAE,aAAa,EAAE,cAAc,EAAE,CAClC,CAAC,KAAK,CAAC,GAAG,EAAE;YACX,2EAA2E;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAEzB,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EAAE,IAAsB,EAAE,EAAE;QAC/B,MAAM,UAAU,GAAG,+BAA+B,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAChE,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC/B,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAClC,IAAI,CAAC,iBAAiB;YAAE,OAAO;QAC/B,IAAI,CAAC;YACH,MAAM,UAAU,CACd,6BAA6B,EAC7B;gBACE,MAAM,EAAE,UAAU;aACnB,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAI,KAA8B,EAAE,MAAM,CAAC;YACvD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACrC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC,EACD,CAAC,iBAAiB,CAAC,CACpB,CAAC;IAEF,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,CAAC;QACL,MAAM;QACN,YAAY;QACZ,UAAU;QACV,GAAG,EAAE,eAAe,CAAC,MAAM,CAAC;QAC5B,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC;QACjC,aAAa;QACb,OAAO;KACR,CAAC,EACF,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,CAAC,CAC3D,CAAC;IAEF,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACpC,KAAC,eAAe,IAAC,IAAI,EAAE,IAAI,YAAG,QAAQ,GAAmB,GAClC,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,sBAAsB,GAA2B;IACrD,eAAe,EAAE,MAAM;IACvB,oBAAoB,EAAE,YAAY;IAClC,wBAAwB,EAAE,sBAAsB;IAChD,0BAA0B,EAAE,uBAAuB;IACnD,wBAAwB,EAAE,sBAAsB;IAChD,0BAA0B,EAAE,uBAAuB;IACnD,qBAAqB,EAAE,aAAa;IACpC,uBAAuB,EAAE,gBAAgB;IACzC,wBAAwB,EAAE,uBAAuB;IACjD,yBAAyB,EAAE,yBAAyB;IACpD,+BAA+B,EAC7B,oDAAoD;IACtD,4BAA4B,EAAE,sBAAsB;IACpD,8BAA8B,EAAE,uBAAuB;IACvD,2BAA2B,EAAE,qBAAqB;IAClD,2BAA2B,EACzB,6EAA6E;IAC/E,eAAe,EAAE,MAAM;IACvB,kBAAkB,EAAE,gBAAgB;IACpC,kBAAkB,EAAE,gBAAgB;IACpC,wBAAwB,EAAE,SAAS;IACnC,qBAAqB,EAAE,MAAM;IAC7B,uBAAuB,EAAE,QAAQ;IACjC,wBAAwB,EAAE,SAAS;IACnC,yBAAyB,EAAE,kBAAkB;IAC7C,0BAA0B,EAAE,mBAAmB;IAC/C,yBAAyB,EAAE,wBAAwB;IACnD,0BAA0B,EAAE,yBAAyB;IACrD,uBAAuB,EAAE,wBAAwB;IACjD,wBAAwB,EAAE,yBAAyB;IACnD,sBAAsB,EAAE,kBAAkB;IAC1C,uBAAuB,EAAE,mBAAmB;IAC5C,6BAA6B,EAC3B,kHAAkH;IACpH,6BAA6B,EAAE,6CAA6C;IAC5E,0BAA0B,EAAE,yBAAyB;IACrD,oBAAoB,EAAE,uBAAuB;IAC7C,kCAAkC,EAChC,kGAAkG;IACpG,uBAAuB,EACrB,gGAAgG;IAClG,2BAA2B,EAAE,0BAA0B;IACvD,iCAAiC,EAC/B,4EAA4E;IAC9E,gCAAgC,EAAE,sBAAsB;IACxD,sCAAsC,EACpC,wFAAwF;IAC1F,8BAA8B,EAAE,6BAA6B;IAC7D,8BAA8B,EAAE,aAAa;IAC7C,kCAAkC,EAAE,oBAAoB;IACxD,wCAAwC,EACtC,mEAAmE;IACrE,4BAA4B,EAAE,gBAAgB;IAC9C,4BAA4B,EAAE,gBAAgB;IAC9C,oBAAoB,EAAE,OAAO;IAC7B,uBAAuB,EAAE,aAAa;IACtC,kCAAkC,EAAE,2BAA2B;IAC/D,uCAAuC,EACrC,mFAAmF;IACrF,4BAA4B,EAAE,kBAAkB;IAChD,qBAAqB,EAAE,WAAW;IAClC,iBAAiB,EAAE,MAAM;IACzB,4BAA4B,EAAE,mBAAmB;IACjD,gBAAgB,EAAE,KAAK;IACvB,0BAA0B,EAAE,4CAA4C;IACxE,sBAAsB,EAAE,WAAW;IACnC,oBAAoB,EAAE,UAAU;IAChC,wBAAwB,EAAE,cAAc;IACxC,yBAAyB,EAAE,qBAAqB;IAChD,4BAA4B,EAAE,kBAAkB;IAChD,sBAAsB,EAAE,YAAY;IACpC,qBAAqB,EAAE,WAAW;IAClC,qBAAqB,EAAE,UAAU;IACjC,qBAAqB,EAAE,UAAU;IACjC,2BAA2B,EAAE,iBAAiB;IAC9C,uBAAuB,EAAE,YAAY;IACrC,qBAAqB,EAAE,WAAW;IAClC,2BAA2B,EAAE,kBAAkB;IAC/C,yBAAyB,EAAE,gBAAgB;IAC3C,sBAAsB,EAAE,YAAY;IACpC,+BAA+B,EAAE,uBAAuB;IACxD,0CAA0C,EACxC,kFAAkF;IACpF,wBAAwB,EAAE,cAAc;CACzC,CAAC;AAEF,SAAS,eAAe,CACtB,KAAc,EACd,MAAM,GAAG,EAAE,EACX,GAAG,GAA2B,EAAE;IAEhC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAC5E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,wBAAwB,GAAG,eAAe,CAAC,sBAAsB,CAAC,CAAC;AAEzE,SAAS,0BAA0B,CACjC,QAAgB,EAChB,OAAiC;IAEjC,OAAO,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,IAAY,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC;IAChE,MAAM,KAAK,GAAG,WAAW;SACtB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,IAAI,EAAE;SACN,WAAW,EAAE,CAAC;IACjB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACtE,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,OAAiC;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrC,MAAM,SAAS,GACb,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC;IACxE,MAAM,QAAQ,GACZ,wBAAwB,CAAC,SAAS,CAAC;QACnC,wBAAwB,CAAC,GAAG,CAAC;QAC7B,sBAAsB,CAAC,SAAS,CAAC;QACjC,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,QAAQ;QACb,CAAC,CAAC,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC/C,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,IAAI;IAClB,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,cAAc,CAAC;IAC7D,OAAO,WAAW,CAChB,CAAC,GAAW,EAAE,OAAiC,EAAE,EAAE;QACjD,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,UAAU,KAAK,GAAG;YAAE,OAAO,UAAU,CAAC;QAC1C,MAAM,SAAS,GACb,IACD,CAAC,SAAS,CAAC;QACZ,MAAM,cAAc,GAAG,SAAS,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/D,IAAI,cAAc,IAAI,cAAc,KAAK,GAAG;YAAE,OAAO,cAAc,CAAC;QACpE,OAAO,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC,EACD,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,cAAc,CAAC;IACjD,OAAO,OAAO,CACZ,GAAG,EAAE,CAAC,CAAC;QACL,UAAU,CACR,KAA6B,EAC7B,OAAoC;YAEpC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CACpD,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAChD,CAAC;QACJ,CAAC;QACD,YAAY,CAAC,KAAa,EAAE,OAAkC;YAC5D,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC;QACD,kBAAkB,CAChB,KAAa,EACb,IAAiC,EACjC,OAAwC;YAExC,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1E,CAAC;QACD,UAAU,CAAC,KAAe,EAAE,OAAgC;YAC1D,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC,EACF,CAAC,MAAM,CAAC,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,SAAS,EACT,aAAa,GAAG,IAAI,EACpB,KAAK,EACL,OAAO,GAAG,QAAQ,GAMnB;IACC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;IAC1D,MAAM,IAAI,GACR,oBAAoB,CAAC,MAAM,CAAC,IAAI,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;IAC1C,MAAM,OAAO,GAAG;QACd,GAAG,CAAC,aAAa;YACf,CAAC,CAAC;gBACE;oBACE,KAAK,EAAE,QAAiB;oBACxB,KAAK,EAAE,IAAI,CAAC,MAAM;oBAClB,WAAW,EAAE,IAAI,CAAC,iBAAiB;iBACpC;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClC,KAAK,EAAE,IAAI;YACX,KAAK,EACH,eAAe,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC,WAAW;gBACpE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,UAAU;gBAClC,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,eAAe,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG;YAClF,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;KACJ,CAAC;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;IAEvE,OAAO,CACL,cAAK,SAAS,EAAE,SAAS,YACvB,MAAC,eAAe,CAAC,IAAI,IACnB,KAAK,EAAE,UAAU,EACjB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACvB,KAAK,aAAa,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAGnE,MAAC,eAAe,CAAC,OAAO,IACtB,SAAS,EACP,OAAO,KAAK,MAAM;wBAChB,CAAC,CAAC,mMAAmM;wBACrM,CAAC,CAAC,mOAAmO,gBAE7N,aAAa,EACzB,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,aAAa,aAEvC,gBAAM,SAAS,EAAC,iCAAiC,aAC/C,KAAC,YAAY,IAAC,SAAS,EAAC,wCAAwC,GAAG,EAClE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CACtB,KAAC,eAAe,CAAC,KAAK,cACpB,eAAM,SAAS,EAAC,UAAU,YACvB,QAAQ,EAAE,KAAK,IAAI,UAAU,GACzB,GACe,CACzB,CAAC,CAAC,CAAC,IAAI,IACH,EACN,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CACtB,KAAC,eAAe,CAAC,IAAI,IAAC,OAAO,kBAC3B,KAAC,eAAe,IAAC,SAAS,EAAC,mCAAmC,GAAG,GAC5C,CACxB,CAAC,CAAC,CAAC,IAAI,IACgB,EAC1B,KAAC,eAAe,CAAC,MAAM,cACrB,KAAC,eAAe,CAAC,OAAO,IACtB,QAAQ,EAAC,QAAQ,EACjB,UAAU,EAAE,CAAC,EACb,SAAS,EACP,OAAO,KAAK,MAAM;4BAChB,CAAC,CAAC,wFAAwF;4BAC1F,CAAC,CAAC,qHAAqH,YAG3H,KAAC,eAAe,CAAC,QAAQ,IAAC,SAAS,EAAC,KAAK,YACtC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,MAAC,eAAe,CAAC,IAAI,IAEnB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,SAAS,EAAC,qLAAqL,aAE/L,eAAM,SAAS,EAAC,yFAAyF,YACvG,KAAC,eAAe,CAAC,aAAa,cAC5B,KAAC,SAAS,IAAC,SAAS,EAAC,aAAa,GAAG,GACP,GAC3B,EACP,eAAK,SAAS,EAAC,uBAAuB,aACpC,KAAC,eAAe,CAAC,QAAQ,cACvB,eAAM,SAAS,EAAC,iBAAiB,YAAE,MAAM,CAAC,KAAK,GAAQ,GAC9B,EAC3B,eAAM,SAAS,EAAC,0DAA0D,YACvE,MAAM,CAAC,WAAW,GACd,IACH,KAhBD,MAAM,CAAC,KAAK,CAiBI,CACxB,CAAC,GACuB,GACH,GACH,IACJ,GACnB,CACP,CAAC;AACJ,CAAC","sourcesContent":["import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { IconCheck, IconChevronDown, IconLanguage } from \"@tabler/icons-react\";\nimport i18next, { type i18n as I18nInstance } from \"i18next\";\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n I18nextProvider,\n initReactI18next,\n useTranslation,\n} from \"react-i18next\";\n\nimport {\n DEFAULT_LOCALE,\n LOCALE_HYDRATION_GLOBAL,\n LOCALE_METADATA,\n LOCALE_STORAGE_KEY,\n SUPPORTED_LOCALES,\n localeDirection,\n normalizeLocalizationPreference,\n resolveLocaleFromCandidates,\n resolveLocaleFromPreference,\n type LocaleCode,\n type LocaleMetadata,\n type LocalePreference,\n type LocalizationPreference,\n} from \"../localization/shared.js\";\nimport defaultEnglishMessages from \"../templates/default/app/i18n/en-US.js\";\nimport { setClientAppState } from \"./application-state.js\";\nimport { callAction } from \"./use-action.js\";\n\nexport {\n DEFAULT_LOCALE,\n LOCALE_HYDRATION_GLOBAL,\n LOCALE_METADATA,\n LOCALE_STORAGE_KEY,\n SUPPORTED_LOCALES,\n localeDirection,\n normalizeLocaleCode,\n normalizeLocalePreference,\n normalizeLocalizationPreference,\n resolveLocaleFromCandidates,\n resolveLocaleFromPreference,\n type LocaleCode,\n type LocaleMetadata,\n type LocalePreference,\n type LocalizationPreference,\n} from \"../localization/shared.js\";\nexport { getLocaleInitScript } from \"../localization/server.js\";\n\nexport type LocaleMessages = Record<string, unknown>;\n\nexport interface LocaleHydrationPayload {\n locale?: LocaleCode;\n preference?: LocalizationPreference;\n dir?: \"ltr\" | \"rtl\";\n messages?: LocaleMessages;\n}\n\nexport interface AgentNativeI18nCatalog {\n namespace?: string;\n sourceLocale?: LocaleCode;\n messages?: LocaleMessages;\n loadMessages?: (locale: LocaleCode) => Promise<LocaleMessages | null>;\n}\n\nexport interface AgentNativeI18nProviderProps {\n children: React.ReactNode;\n catalog?: AgentNativeI18nCatalog;\n initialLocale?: LocaleCode;\n initialPreference?: LocalizationPreference | LocalePreference;\n initialMessages?: LocaleMessages | null;\n persistPreference?: boolean;\n}\n\ninterface LocaleContextValue {\n locale: LocaleCode;\n sourceLocale: LocaleCode;\n preference: LocalePreference;\n dir: \"ltr\" | \"rtl\";\n metadata: LocaleMetadata;\n setPreference: (preference: LocalePreference) => Promise<void>;\n loading: boolean;\n}\n\ndeclare global {\n interface Window {\n __AGENT_NATIVE_LOCALE__?: LocaleHydrationPayload;\n }\n}\n\nconst LocaleContext = createContext<LocaleContextValue | null>(null);\n\nconst LANGUAGE_PICKER_COPY: Record<\n LocaleCode,\n { label: string; system: string; systemDescription: string }\n> = {\n \"en-US\": {\n label: \"Language\",\n system: \"System\",\n systemDescription: \"Use your browser language\",\n },\n \"zh-CN\": {\n label: \"语言\",\n system: \"系统\",\n systemDescription: \"使用浏览器语言\",\n },\n \"es-ES\": {\n label: \"Idioma\",\n system: \"Sistema\",\n systemDescription: \"Usar el idioma del navegador\",\n },\n \"fr-FR\": {\n label: \"Langue\",\n system: \"Système\",\n systemDescription: \"Utiliser la langue du navigateur\",\n },\n \"de-DE\": {\n label: \"Sprache\",\n system: \"System\",\n systemDescription: \"Browsersprache verwenden\",\n },\n \"ja-JP\": {\n label: \"言語\",\n system: \"システム\",\n systemDescription: \"ブラウザーの言語を使用\",\n },\n \"ko-KR\": {\n label: \"언어\",\n system: \"시스템\",\n systemDescription: \"브라우저 언어 사용\",\n },\n \"pt-BR\": {\n label: \"Idioma\",\n system: \"Sistema\",\n systemDescription: \"Usar o idioma do navegador\",\n },\n \"hi-IN\": {\n label: \"भाषा\",\n system: \"सिस्टम\",\n systemDescription: \"ब्राउज़र की भाषा का उपयोग करें\",\n },\n \"ar-SA\": {\n label: \"اللغة\",\n system: \"النظام\",\n systemDescription: \"استخدام لغة المتصفح\",\n },\n};\n\nfunction browserLanguageCandidates(): string[] {\n if (typeof navigator === \"undefined\") return [];\n return navigator.languages?.length\n ? [...navigator.languages]\n : navigator.language\n ? [navigator.language]\n : [];\n}\n\nfunction readStoredPreference(): LocalePreference | null {\n if (typeof window === \"undefined\") return null;\n try {\n return normalizeLocalizationPreference(\n window.localStorage.getItem(LOCALE_STORAGE_KEY),\n ).locale;\n } catch {\n return null;\n }\n}\n\nfunction writeStoredPreference(preference: LocalePreference) {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(LOCALE_STORAGE_KEY, preference);\n } catch {\n // Ignore storage-denied browsers; the in-memory provider state still works.\n }\n}\n\nfunction readHydrationPayload(): LocaleHydrationPayload {\n if (typeof window === \"undefined\") return {};\n return window[LOCALE_HYDRATION_GLOBAL] ?? {};\n}\n\nfunction resolveInitialState(args: {\n initialLocale?: LocaleCode;\n initialPreference?: LocalizationPreference | LocalePreference;\n}): { locale: LocaleCode; preference: LocalePreference } {\n const hydration = readHydrationPayload();\n const preference = normalizeLocalizationPreference(\n args.initialPreference ?? hydration.preference ?? readStoredPreference(),\n ).locale;\n const locale =\n args.initialLocale ??\n hydration.locale ??\n resolveLocaleFromPreference(preference, browserLanguageCandidates());\n return { locale, preference };\n}\n\nfunction normalizeLoadedMessages(value: unknown): LocaleMessages | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const maybeDefault = (value as { default?: unknown }).default;\n if (\n maybeDefault &&\n typeof maybeDefault === \"object\" &&\n !Array.isArray(maybeDefault)\n ) {\n return maybeDefault as LocaleMessages;\n }\n return value as LocaleMessages;\n}\n\nfunction createI18nInstance(args: {\n namespace: string;\n sourceLocale: LocaleCode;\n messages: LocaleMessages;\n initialLocale: LocaleCode;\n initialMessages?: LocaleMessages | null;\n}): I18nInstance {\n const instance = i18next.createInstance();\n const resources: Record<string, Record<string, LocaleMessages>> = {\n [args.sourceLocale]: {\n [args.namespace]: args.messages,\n },\n };\n if (args.initialLocale !== args.sourceLocale && args.initialMessages) {\n resources[args.initialLocale] = {\n [args.namespace]: args.initialMessages,\n };\n }\n void instance.use(initReactI18next).init({\n resources,\n lng: args.initialLocale,\n fallbackLng: args.sourceLocale,\n defaultNS: args.namespace,\n ns: [args.namespace],\n interpolation: { escapeValue: false },\n react: { useSuspense: false },\n returnNull: false,\n initAsync: false,\n });\n return instance;\n}\n\nexport function AgentNativeI18nProvider({\n children,\n catalog,\n initialLocale,\n initialPreference,\n initialMessages,\n persistPreference = true,\n}: AgentNativeI18nProviderProps) {\n const namespace = catalog?.namespace ?? \"translation\";\n const sourceLocale = catalog?.sourceLocale ?? DEFAULT_LOCALE;\n const sourceMessages = catalog?.messages ?? {};\n const loadMessages = catalog?.loadMessages;\n const hydration = readHydrationPayload();\n const initialState = useMemo(\n () => resolveInitialState({ initialLocale, initialPreference }),\n [initialLocale, initialPreference],\n );\n const [preference, setPreferenceState] = useState<LocalePreference>(\n initialState.preference,\n );\n const [locale, setLocale] = useState<LocaleCode>(initialState.locale);\n const [loading, setLoading] = useState(false);\n const i18nRef = useRef<I18nInstance | null>(null);\n\n if (!i18nRef.current) {\n const preloadedMessages = normalizeLoadedMessages(\n hydration.locale === initialState.locale && hydration.messages\n ? hydration.messages\n : initialMessages,\n );\n i18nRef.current = createI18nInstance({\n namespace,\n sourceLocale,\n messages:\n hydration.locale === sourceLocale && hydration.messages\n ? hydration.messages\n : sourceMessages,\n initialLocale: initialState.locale,\n initialMessages: preloadedMessages,\n });\n }\n\n const i18n = i18nRef.current;\n\n useEffect(() => {\n if (i18n.hasResourceBundle(sourceLocale, namespace)) {\n i18n.addResourceBundle(\n sourceLocale,\n namespace,\n sourceMessages,\n true,\n true,\n );\n }\n }, [i18n, namespace, sourceLocale, sourceMessages]);\n\n useEffect(() => {\n const nextLocale =\n preference === \"system\"\n ? resolveLocaleFromCandidates(browserLanguageCandidates())\n : preference;\n setLocale(nextLocale);\n }, [preference]);\n\n useEffect(() => {\n let cancelled = false;\n\n async function applyLocale() {\n setLoading(true);\n try {\n if (\n locale !== sourceLocale &&\n !i18n.hasResourceBundle(locale, namespace)\n ) {\n const preloaded =\n hydration.locale === locale && hydration.messages\n ? hydration.messages\n : initialLocale === locale && initialMessages\n ? initialMessages\n : null;\n const loaded = preloaded ?? (await loadMessages?.(locale));\n const messages = normalizeLoadedMessages(loaded);\n if (messages) {\n i18n.addResourceBundle(locale, namespace, messages, true, true);\n }\n }\n if (!cancelled) {\n await i18n.changeLanguage(locale);\n }\n } finally {\n if (!cancelled) setLoading(false);\n }\n }\n\n void applyLocale();\n return () => {\n cancelled = true;\n };\n }, [\n hydration.locale,\n hydration.messages,\n i18n,\n initialLocale,\n initialMessages,\n loadMessages,\n locale,\n namespace,\n sourceLocale,\n ]);\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const dir = localeDirection(locale);\n const root = document.documentElement;\n root.setAttribute(\"lang\", locale);\n root.setAttribute(\"dir\", dir);\n root.setAttribute(\"data-locale\", locale);\n }, [locale]);\n\n useEffect(() => {\n if (!persistPreference) return;\n let cancelled = false;\n callAction<LocalizationPreference>(\n \"get-localization-preference\",\n undefined,\n { method: \"GET\" },\n )\n .then((value) => {\n if (cancelled) return;\n const normalized = normalizeLocalizationPreference(value).locale;\n setPreferenceState(normalized);\n writeStoredPreference(normalized);\n })\n .catch(() => {\n // Anonymous/public routes use localStorage/browser language only.\n });\n return () => {\n cancelled = true;\n };\n }, [persistPreference]);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const onStorage = (event: StorageEvent) => {\n if (event.key !== LOCALE_STORAGE_KEY || event.newValue == null) return;\n setPreferenceState(\n normalizeLocalizationPreference(event.newValue).locale,\n );\n };\n window.addEventListener(\"storage\", onStorage);\n return () => window.removeEventListener(\"storage\", onStorage);\n }, []);\n\n useEffect(() => {\n void setClientAppState(\n \"localization\",\n {\n locale,\n preference,\n dir: localeDirection(locale),\n },\n { requestSource: \"localization\" },\n ).catch(() => {\n // Public/anonymous pages cannot write app-state; localization still works.\n });\n }, [locale, preference]);\n\n const setPreference = useCallback(\n async (next: LocalePreference) => {\n const normalized = normalizeLocalizationPreference(next).locale;\n setPreferenceState(normalized);\n writeStoredPreference(normalized);\n if (!persistPreference) return;\n try {\n await callAction<LocalizationPreference>(\n \"set-localization-preference\",\n {\n locale: normalized,\n },\n );\n } catch (error) {\n const status = (error as { status?: unknown })?.status;\n if (status !== 401 && status !== 403) {\n throw error;\n }\n }\n },\n [persistPreference],\n );\n\n const context = useMemo<LocaleContextValue>(\n () => ({\n locale,\n sourceLocale,\n preference,\n dir: localeDirection(locale),\n metadata: LOCALE_METADATA[locale],\n setPreference,\n loading,\n }),\n [loading, locale, preference, setPreference, sourceLocale],\n );\n\n return (\n <LocaleContext.Provider value={context}>\n <I18nextProvider i18n={i18n}>{children}</I18nextProvider>\n </LocaleContext.Provider>\n );\n}\n\nexport function useLocale(): LocaleContextValue {\n const value = useContext(LocaleContext);\n if (!value) {\n throw new Error(\"useLocale must be used within AgentNativeI18nProvider\");\n }\n return value;\n}\n\nexport function useOptionalLocale(): LocaleContextValue | null {\n return useContext(LocaleContext);\n}\n\nconst CORE_FALLBACK_MESSAGES: Record<string, string> = {\n \"runsTray.runs\": \"Runs\",\n \"runsTray.agentRuns\": \"Agent runs\",\n \"runsTray.activeRun_one\": \"{{count}} active run\",\n \"runsTray.activeRun_other\": \"{{count}} active runs\",\n \"runsTray.failedRun_one\": \"{{count}} failed run\",\n \"runsTray.failedRun_other\": \"{{count}} failed runs\",\n \"runsTray.recentRuns\": \"Recent runs\",\n \"runsTray.noRecentRuns\": \"No recent runs\",\n \"runsTray.ariaAgentRuns\": \"Agent runs, {{label}}\",\n \"runsTray.summaryRunning\": \"{{activeCount}} running\",\n \"runsTray.summaryRunningRecent\":\n \"{{activeCount}} running · {{terminalCount}} recent\",\n \"runsTray.summaryRecent_one\": \"{{count}} recent run\",\n \"runsTray.summaryRecent_other\": \"{{count}} recent runs\",\n \"runsTray.noTrackedWorkYet\": \"No tracked work yet\",\n \"runsTray.emptyDescription\":\n \"Background agent work will appear here while it runs and after it finishes.\",\n \"runsTray.open\": \"Open\",\n \"runsTray.stopRun\": \"Stop {{title}}\",\n \"runsTray.hideRun\": \"Hide {{title}}\",\n \"runsTray.statusRunning\": \"Running\",\n \"runsTray.statusDone\": \"Done\",\n \"runsTray.statusFailed\": \"Failed\",\n \"runsTray.statusStopped\": \"Stopped\",\n \"runsTray.updatedJustNow\": \"Updated just now\",\n \"runsTray.finishedJustNow\": \"Finished just now\",\n \"runsTray.updatedMinutes\": \"Updated {{count}}m ago\",\n \"runsTray.finishedMinutes\": \"Finished {{count}}m ago\",\n \"runsTray.updatedHours\": \"Updated {{count}}h ago\",\n \"runsTray.finishedHours\": \"Finished {{count}}h ago\",\n \"runsTray.updatedDate\": \"Updated {{date}}\",\n \"runsTray.finishedDate\": \"Finished {{date}}\",\n \"codeRequired.fallbackDetail\":\n \"Edit locally or use Builder.io to edit this code in the cloud and continue customizing the app any way you like.\",\n \"codeRequired.defaultFeature\": \"Make the requested code changes to this app\",\n \"codeRequired.branchError\": \"Failed to create branch\",\n \"codeRequired.title\": \"Code changes required\",\n \"codeRequired.subtitleWithFeature\":\n '\"{{feature}}\" creates or modifies source code, which needs Desktop or Builder from this surface.',\n \"codeRequired.subtitle\":\n \"This action creates or modifies source code, which needs Desktop or Builder from this surface.\",\n \"codeRequired.desktopTitle\": \"Use Agent Native Desktop\",\n \"codeRequired.desktopDescription\":\n \"Open the project in the desktop app to enable source edits and CLI access.\",\n \"codeRequired.builderAgentTitle\": \"Use Builder.io Agent\",\n \"codeRequired.builderAgentDescription\":\n \"Let our cloud agent make the changes for you. You'll get a link to preview and deploy.\",\n \"codeRequired.codeChangeTitle\": \"This requires a code change\",\n \"codeRequired.codeChangeBadge\": \"Code change\",\n \"codeRequired.connectBuilderTitle\": \"Connect Builder.io\",\n \"codeRequired.connectBuilderDescription\":\n \"Connect Builder to enable cloud-based code changes from this app.\",\n \"codeRequired.setupRequired\": \"Setup required\",\n \"codeRequired.branchCreated\": \"Branch created\",\n \"codeRequired.close\": \"Close\",\n \"agentPanel.useBuilder\": \"Use Builder\",\n \"agentPanel.openDesktopToEditCode\": \"Open Desktop to edit code\",\n \"agentPanel.codeUnavailableDescription\":\n \"Source-code changes and CLI access are available in the Agent Native Desktop app.\",\n \"agentPanel.downloadDesktop\": \"Download Desktop\",\n \"agentPanel.chatMode\": \"Chat mode\",\n \"agentPanel.chat\": \"Chat\",\n \"agentPanel.cliTerminalMode\": \"CLI terminal mode\",\n \"agentPanel.cli\": \"CLI\",\n \"agentPanel.workspaceMode\": \"Workspace files, agents, skills, and tasks\",\n \"agentPanel.workspace\": \"Workspace\",\n \"agentPanel.newChat\": \"New chat\",\n \"agentPanel.newTerminal\": \"New terminal\",\n \"agentPanel.panelOptions\": \"Agent panel options\",\n \"agentPanel.collapseSidebar\": \"Collapse sidebar\",\n \"agentPanel.hideChats\": \"Hide chats\",\n \"agentPanel.allChats\": \"All chats\",\n \"agentPanel.settings\": \"Settings\",\n \"agentPanel.feedback\": \"Feedback\",\n \"agentPanel.exitFullscreen\": \"Exit fullscreen\",\n \"agentPanel.fullscreen\": \"Fullscreen\",\n \"agentPanel.closeTab\": \"Close tab\",\n \"agentPanel.closeOtherTabs\": \"Close other tabs\",\n \"agentPanel.closeAllTabs\": \"Close all tabs\",\n \"agentPanel.clearChat\": \"Clear chat\",\n \"agentPanel.cliRequiresDevMode\": \"CLI requires dev mode\",\n \"agentPanel.cliRequiresDevModeDescription\":\n \"Run this app locally with pnpm dev or use Builder.io to access the CLI terminal.\",\n \"agentPanel.toggleAgent\": \"Toggle agent\",\n};\n\nfunction flattenMessages(\n value: unknown,\n prefix = \"\",\n out: Record<string, string> = {},\n) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return out;\n for (const [key, child] of Object.entries(value)) {\n const nextKey = prefix ? `${prefix}.${key}` : key;\n if (typeof child === \"string\") {\n out[nextKey] = child;\n } else {\n flattenMessages(child, nextKey, out);\n }\n }\n return out;\n}\n\nconst DEFAULT_ENGLISH_MESSAGES = flattenMessages(defaultEnglishMessages);\n\nfunction interpolateFallbackMessage(\n template: string,\n options?: Record<string, unknown>,\n) {\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, name: string) => {\n const value = options?.[name];\n return value == null ? \"\" : String(value);\n });\n}\n\nfunction humanizeFallbackKey(key: string) {\n const lastSegment = key.split(\".\").filter(Boolean).pop() ?? key;\n const words = lastSegment\n .replace(/[_-]+/g, \" \")\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .trim()\n .toLowerCase();\n return words ? words.charAt(0).toUpperCase() + words.slice(1) : key;\n}\n\nfunction fallbackMessage(key: string, options?: Record<string, unknown>) {\n const count = Number(options?.count);\n const pluralKey =\n Number.isFinite(count) && count === 1 ? `${key}_one` : `${key}_other`;\n const template =\n DEFAULT_ENGLISH_MESSAGES[pluralKey] ??\n DEFAULT_ENGLISH_MESSAGES[key] ??\n CORE_FALLBACK_MESSAGES[pluralKey] ??\n CORE_FALLBACK_MESSAGES[key];\n return template\n ? interpolateFallbackMessage(template, options)\n : humanizeFallbackKey(key);\n}\n\nexport function useT() {\n const { i18n, t } = useTranslation();\n const context = useContext(LocaleContext);\n const sourceLocale = context?.sourceLocale ?? DEFAULT_LOCALE;\n return useCallback(\n (key: string, options?: Record<string, unknown>) => {\n const translated = t(key, options);\n if (translated !== key) return translated;\n const getFixedT = (\n i18n as { getFixedT?: (locale: LocaleCode) => typeof t }\n ).getFixedT;\n const sourceFallback = getFixedT?.(sourceLocale)(key, options);\n if (sourceFallback && sourceFallback !== key) return sourceFallback;\n return fallbackMessage(key, options);\n },\n [i18n, sourceLocale, t],\n );\n}\n\nexport function useFormatters() {\n const context = useContext(LocaleContext);\n const locale = context?.locale ?? DEFAULT_LOCALE;\n return useMemo(\n () => ({\n formatDate(\n value: Date | number | string,\n options?: Intl.DateTimeFormatOptions,\n ) {\n return new Intl.DateTimeFormat(locale, options).format(\n value instanceof Date ? value : new Date(value),\n );\n },\n formatNumber(value: number, options?: Intl.NumberFormatOptions) {\n return new Intl.NumberFormat(locale, options).format(value);\n },\n formatRelativeTime(\n value: number,\n unit: Intl.RelativeTimeFormatUnit,\n options?: Intl.RelativeTimeFormatOptions,\n ) {\n return new Intl.RelativeTimeFormat(locale, options).format(value, unit);\n },\n formatList(value: string[], options?: Intl.ListFormatOptions) {\n return new Intl.ListFormat(locale, options).format(value);\n },\n }),\n [locale],\n );\n}\n\nexport function LanguagePicker({\n className,\n includeSystem = true,\n label,\n variant = \"select\",\n}: {\n className?: string;\n includeSystem?: boolean;\n label?: string;\n variant?: \"select\" | \"icon\";\n}) {\n const { locale, preference, setPreference } = useLocale();\n const copy =\n LANGUAGE_PICKER_COPY[locale] ?? LANGUAGE_PICKER_COPY[DEFAULT_LOCALE];\n const resolvedLabel = label ?? copy.label;\n const options = [\n ...(includeSystem\n ? [\n {\n value: \"system\" as const,\n label: copy.system,\n description: copy.systemDescription,\n },\n ]\n : []),\n ...SUPPORTED_LOCALES.map((code) => ({\n value: code,\n label:\n LOCALE_METADATA[code].nativeName === LOCALE_METADATA[code].englishName\n ? LOCALE_METADATA[code].nativeName\n : `${LOCALE_METADATA[code].nativeName} (${LOCALE_METADATA[code].englishName})`,\n description: code,\n })),\n ];\n const selected = options.find((option) => option.value === preference);\n\n return (\n <div className={className}>\n <SelectPrimitive.Root\n value={preference}\n onValueChange={(value) =>\n void setPreference(normalizeLocalizationPreference(value).locale)\n }\n >\n <SelectPrimitive.Trigger\n className={\n variant === \"icon\"\n ? \"flex h-8 w-8 items-center justify-center rounded-md border border-border bg-background text-foreground outline-none transition-colors hover:bg-accent/40 data-[placeholder]:text-muted-foreground\"\n : \"flex h-9 w-full items-center justify-between rounded-md border border-border bg-background px-3 text-start text-[12px] text-foreground outline-none transition-colors hover:bg-accent/40 data-[placeholder]:text-muted-foreground\"\n }\n aria-label={resolvedLabel}\n title={selected?.label ?? resolvedLabel}\n >\n <span className=\"flex min-w-0 items-center gap-2\">\n <IconLanguage className=\"h-4 w-4 shrink-0 text-muted-foreground\" />\n {variant === \"select\" ? (\n <SelectPrimitive.Value>\n <span className=\"truncate\">\n {selected?.label ?? preference}\n </span>\n </SelectPrimitive.Value>\n ) : null}\n </span>\n {variant === \"select\" ? (\n <SelectPrimitive.Icon asChild>\n <IconChevronDown className=\"h-3.5 w-3.5 text-muted-foreground\" />\n </SelectPrimitive.Icon>\n ) : null}\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n position=\"popper\"\n sideOffset={6}\n className={\n variant === \"icon\"\n ? \"z-[9999] min-w-56 overflow-hidden rounded-lg border border-border bg-popover shadow-lg\"\n : \"z-[9999] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-lg border border-border bg-popover shadow-lg\"\n }\n >\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={option.value}\n value={option.value}\n className=\"relative flex w-full cursor-pointer select-none items-start gap-2 rounded-md px-8 py-2.5 text-[12px] outline-none data-[highlighted]:bg-accent/60 data-[state=checked]:bg-accent/40\"\n >\n <span className=\"absolute start-2 top-2.5 flex h-4 w-4 items-center justify-center text-muted-foreground\">\n <SelectPrimitive.ItemIndicator>\n <IconCheck className=\"h-3.5 w-3.5\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <div className=\"flex min-w-0 flex-col\">\n <SelectPrimitive.ItemText>\n <span className=\"text-foreground\">{option.label}</span>\n </SelectPrimitive.ItemText>\n <span className=\"mt-0.5 text-[11px] leading-relaxed text-muted-foreground\">\n {option.description}\n </span>\n </div>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../src/client/i18n.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { IconCheck, IconChevronDown, IconLanguage } from \"@tabler/icons-react\";\nimport i18next, { type i18n as I18nInstance } from \"i18next\";\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n I18nextProvider,\n initReactI18next,\n useTranslation,\n} from \"react-i18next\";\n\nimport {\n DEFAULT_LOCALE,\n LOCALE_HYDRATION_GLOBAL,\n LOCALE_METADATA,\n LOCALE_STORAGE_KEY,\n SUPPORTED_LOCALES,\n localeDirection,\n normalizeLocalizationPreference,\n resolveLocaleFromCandidates,\n resolveLocaleFromPreference,\n type LocaleCode,\n type LocaleMetadata,\n type LocalePreference,\n type LocalizationPreference,\n} from \"../localization/shared.js\";\nimport defaultEnglishMessages from \"../templates/default/app/i18n/en-US.js\";\nimport { setClientAppState } from \"./application-state.js\";\nimport { callAction } from \"./use-action.js\";\n\nexport {\n DEFAULT_LOCALE,\n LOCALE_HYDRATION_GLOBAL,\n LOCALE_METADATA,\n LOCALE_STORAGE_KEY,\n SUPPORTED_LOCALES,\n localeDirection,\n normalizeLocaleCode,\n normalizeLocalePreference,\n normalizeLocalizationPreference,\n resolveLocaleFromCandidates,\n resolveLocaleFromPreference,\n type LocaleCode,\n type LocaleMetadata,\n type LocalePreference,\n type LocalizationPreference,\n} from \"../localization/shared.js\";\nexport { getLocaleInitScript } from \"../localization/server.js\";\n\nexport type LocaleMessages = Record<string, unknown>;\n\nexport interface LocaleHydrationPayload {\n locale?: LocaleCode;\n preference?: LocalizationPreference;\n dir?: \"ltr\" | \"rtl\";\n messages?: LocaleMessages;\n}\n\nexport interface AgentNativeI18nCatalog {\n namespace?: string;\n sourceLocale?: LocaleCode;\n messages?: LocaleMessages;\n loadMessages?: (locale: LocaleCode) => Promise<LocaleMessages | null>;\n}\n\nexport interface AgentNativeI18nProviderProps {\n children: React.ReactNode;\n catalog?: AgentNativeI18nCatalog;\n initialLocale?: LocaleCode;\n initialPreference?: LocalizationPreference | LocalePreference;\n initialMessages?: LocaleMessages | null;\n persistPreference?: boolean;\n}\n\ninterface LocaleContextValue {\n locale: LocaleCode;\n sourceLocale: LocaleCode;\n preference: LocalePreference;\n dir: \"ltr\" | \"rtl\";\n metadata: LocaleMetadata;\n setPreference: (preference: LocalePreference) => Promise<void>;\n loading: boolean;\n}\n\ndeclare global {\n interface Window {\n __AGENT_NATIVE_LOCALE__?: LocaleHydrationPayload;\n }\n}\n\nconst LocaleContext = createContext<LocaleContextValue | null>(null);\n\nconst LANGUAGE_PICKER_COPY: Record<\n LocaleCode,\n { label: string; system: string; systemDescription: string }\n> = {\n \"en-US\": {\n label: \"Language\",\n system: \"System\",\n systemDescription: \"Use your browser language\",\n },\n \"zh-CN\": {\n label: \"语言\",\n system: \"系统\",\n systemDescription: \"使用浏览器语言\",\n },\n \"zh-TW\": {\n label: \"語言\",\n system: \"系統\",\n systemDescription: \"使用瀏覽器語言\",\n },\n \"es-ES\": {\n label: \"Idioma\",\n system: \"Sistema\",\n systemDescription: \"Usar el idioma del navegador\",\n },\n \"fr-FR\": {\n label: \"Langue\",\n system: \"Système\",\n systemDescription: \"Utiliser la langue du navigateur\",\n },\n \"de-DE\": {\n label: \"Sprache\",\n system: \"System\",\n systemDescription: \"Browsersprache verwenden\",\n },\n \"ja-JP\": {\n label: \"言語\",\n system: \"システム\",\n systemDescription: \"ブラウザーの言語を使用\",\n },\n \"ko-KR\": {\n label: \"언어\",\n system: \"시스템\",\n systemDescription: \"브라우저 언어 사용\",\n },\n \"pt-BR\": {\n label: \"Idioma\",\n system: \"Sistema\",\n systemDescription: \"Usar o idioma do navegador\",\n },\n \"hi-IN\": {\n label: \"भाषा\",\n system: \"सिस्टम\",\n systemDescription: \"ब्राउज़र की भाषा का उपयोग करें\",\n },\n \"ar-SA\": {\n label: \"اللغة\",\n system: \"النظام\",\n systemDescription: \"استخدام لغة المتصفح\",\n },\n};\n\nfunction browserLanguageCandidates(): string[] {\n if (typeof navigator === \"undefined\") return [];\n return navigator.languages?.length\n ? [...navigator.languages]\n : navigator.language\n ? [navigator.language]\n : [];\n}\n\nfunction readStoredPreference(): LocalePreference | null {\n if (typeof window === \"undefined\") return null;\n try {\n return normalizeLocalizationPreference(\n window.localStorage.getItem(LOCALE_STORAGE_KEY),\n ).locale;\n } catch {\n return null;\n }\n}\n\nfunction writeStoredPreference(preference: LocalePreference) {\n if (typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(LOCALE_STORAGE_KEY, preference);\n } catch {\n // Ignore storage-denied browsers; the in-memory provider state still works.\n }\n}\n\nfunction readHydrationPayload(): LocaleHydrationPayload {\n if (typeof window === \"undefined\") return {};\n return window[LOCALE_HYDRATION_GLOBAL] ?? {};\n}\n\nfunction resolveInitialState(args: {\n initialLocale?: LocaleCode;\n initialPreference?: LocalizationPreference | LocalePreference;\n}): { locale: LocaleCode; preference: LocalePreference } {\n const hydration = readHydrationPayload();\n const preference = normalizeLocalizationPreference(\n args.initialPreference ?? hydration.preference ?? readStoredPreference(),\n ).locale;\n const locale =\n args.initialLocale ??\n hydration.locale ??\n resolveLocaleFromPreference(preference, browserLanguageCandidates());\n return { locale, preference };\n}\n\nfunction normalizeLoadedMessages(value: unknown): LocaleMessages | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const maybeDefault = (value as { default?: unknown }).default;\n if (\n maybeDefault &&\n typeof maybeDefault === \"object\" &&\n !Array.isArray(maybeDefault)\n ) {\n return maybeDefault as LocaleMessages;\n }\n return value as LocaleMessages;\n}\n\nfunction createI18nInstance(args: {\n namespace: string;\n sourceLocale: LocaleCode;\n messages: LocaleMessages;\n initialLocale: LocaleCode;\n initialMessages?: LocaleMessages | null;\n}): I18nInstance {\n const instance = i18next.createInstance();\n const resources: Record<string, Record<string, LocaleMessages>> = {\n [args.sourceLocale]: {\n [args.namespace]: args.messages,\n },\n };\n if (args.initialLocale !== args.sourceLocale && args.initialMessages) {\n resources[args.initialLocale] = {\n [args.namespace]: args.initialMessages,\n };\n }\n void instance.use(initReactI18next).init({\n resources,\n lng: args.initialLocale,\n fallbackLng: args.sourceLocale,\n defaultNS: args.namespace,\n ns: [args.namespace],\n interpolation: { escapeValue: false },\n react: { useSuspense: false },\n returnNull: false,\n initAsync: false,\n });\n return instance;\n}\n\nexport function AgentNativeI18nProvider({\n children,\n catalog,\n initialLocale,\n initialPreference,\n initialMessages,\n persistPreference = true,\n}: AgentNativeI18nProviderProps) {\n const namespace = catalog?.namespace ?? \"translation\";\n const sourceLocale = catalog?.sourceLocale ?? DEFAULT_LOCALE;\n const sourceMessages = catalog?.messages ?? {};\n const loadMessages = catalog?.loadMessages;\n const hydration = readHydrationPayload();\n const initialState = useMemo(\n () => resolveInitialState({ initialLocale, initialPreference }),\n [initialLocale, initialPreference],\n );\n const [preference, setPreferenceState] = useState<LocalePreference>(\n initialState.preference,\n );\n const [locale, setLocale] = useState<LocaleCode>(initialState.locale);\n const [loading, setLoading] = useState(false);\n const i18nRef = useRef<I18nInstance | null>(null);\n\n if (!i18nRef.current) {\n const preloadedMessages = normalizeLoadedMessages(\n hydration.locale === initialState.locale && hydration.messages\n ? hydration.messages\n : initialMessages,\n );\n i18nRef.current = createI18nInstance({\n namespace,\n sourceLocale,\n messages:\n hydration.locale === sourceLocale && hydration.messages\n ? hydration.messages\n : sourceMessages,\n initialLocale: initialState.locale,\n initialMessages: preloadedMessages,\n });\n }\n\n const i18n = i18nRef.current;\n\n useEffect(() => {\n if (i18n.hasResourceBundle(sourceLocale, namespace)) {\n i18n.addResourceBundle(\n sourceLocale,\n namespace,\n sourceMessages,\n true,\n true,\n );\n }\n }, [i18n, namespace, sourceLocale, sourceMessages]);\n\n useEffect(() => {\n const nextLocale =\n preference === \"system\"\n ? resolveLocaleFromCandidates(browserLanguageCandidates())\n : preference;\n setLocale(nextLocale);\n }, [preference]);\n\n useEffect(() => {\n let cancelled = false;\n\n async function applyLocale() {\n setLoading(true);\n try {\n if (\n locale !== sourceLocale &&\n !i18n.hasResourceBundle(locale, namespace)\n ) {\n const preloaded =\n hydration.locale === locale && hydration.messages\n ? hydration.messages\n : initialLocale === locale && initialMessages\n ? initialMessages\n : null;\n const loaded = preloaded ?? (await loadMessages?.(locale));\n const messages = normalizeLoadedMessages(loaded);\n if (messages) {\n i18n.addResourceBundle(locale, namespace, messages, true, true);\n }\n }\n if (!cancelled) {\n await i18n.changeLanguage(locale);\n }\n } finally {\n if (!cancelled) setLoading(false);\n }\n }\n\n void applyLocale();\n return () => {\n cancelled = true;\n };\n }, [\n hydration.locale,\n hydration.messages,\n i18n,\n initialLocale,\n initialMessages,\n loadMessages,\n locale,\n namespace,\n sourceLocale,\n ]);\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const dir = localeDirection(locale);\n const root = document.documentElement;\n root.setAttribute(\"lang\", locale);\n root.setAttribute(\"dir\", dir);\n root.setAttribute(\"data-locale\", locale);\n }, [locale]);\n\n useEffect(() => {\n if (!persistPreference) return;\n let cancelled = false;\n callAction<LocalizationPreference>(\n \"get-localization-preference\",\n undefined,\n { method: \"GET\" },\n )\n .then((value) => {\n if (cancelled) return;\n const normalized = normalizeLocalizationPreference(value).locale;\n setPreferenceState(normalized);\n writeStoredPreference(normalized);\n })\n .catch(() => {\n // Anonymous/public routes use localStorage/browser language only.\n });\n return () => {\n cancelled = true;\n };\n }, [persistPreference]);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const onStorage = (event: StorageEvent) => {\n if (event.key !== LOCALE_STORAGE_KEY || event.newValue == null) return;\n setPreferenceState(\n normalizeLocalizationPreference(event.newValue).locale,\n );\n };\n window.addEventListener(\"storage\", onStorage);\n return () => window.removeEventListener(\"storage\", onStorage);\n }, []);\n\n useEffect(() => {\n void setClientAppState(\n \"localization\",\n {\n locale,\n preference,\n dir: localeDirection(locale),\n },\n { requestSource: \"localization\" },\n ).catch(() => {\n // Public/anonymous pages cannot write app-state; localization still works.\n });\n }, [locale, preference]);\n\n const setPreference = useCallback(\n async (next: LocalePreference) => {\n const normalized = normalizeLocalizationPreference(next).locale;\n setPreferenceState(normalized);\n writeStoredPreference(normalized);\n if (!persistPreference) return;\n try {\n await callAction<LocalizationPreference>(\n \"set-localization-preference\",\n {\n locale: normalized,\n },\n );\n } catch (error) {\n const status = (error as { status?: unknown })?.status;\n if (status !== 401 && status !== 403) {\n throw error;\n }\n }\n },\n [persistPreference],\n );\n\n const context = useMemo<LocaleContextValue>(\n () => ({\n locale,\n sourceLocale,\n preference,\n dir: localeDirection(locale),\n metadata: LOCALE_METADATA[locale],\n setPreference,\n loading,\n }),\n [loading, locale, preference, setPreference, sourceLocale],\n );\n\n return (\n <LocaleContext.Provider value={context}>\n <I18nextProvider i18n={i18n}>{children}</I18nextProvider>\n </LocaleContext.Provider>\n );\n}\n\nexport function useLocale(): LocaleContextValue {\n const value = useContext(LocaleContext);\n if (!value) {\n throw new Error(\"useLocale must be used within AgentNativeI18nProvider\");\n }\n return value;\n}\n\nexport function useOptionalLocale(): LocaleContextValue | null {\n return useContext(LocaleContext);\n}\n\nconst CORE_FALLBACK_MESSAGES: Record<string, string> = {\n \"runsTray.runs\": \"Runs\",\n \"runsTray.agentRuns\": \"Agent runs\",\n \"runsTray.activeRun_one\": \"{{count}} active run\",\n \"runsTray.activeRun_other\": \"{{count}} active runs\",\n \"runsTray.failedRun_one\": \"{{count}} failed run\",\n \"runsTray.failedRun_other\": \"{{count}} failed runs\",\n \"runsTray.recentRuns\": \"Recent runs\",\n \"runsTray.noRecentRuns\": \"No recent runs\",\n \"runsTray.ariaAgentRuns\": \"Agent runs, {{label}}\",\n \"runsTray.summaryRunning\": \"{{activeCount}} running\",\n \"runsTray.summaryRunningRecent\":\n \"{{activeCount}} running · {{terminalCount}} recent\",\n \"runsTray.summaryRecent_one\": \"{{count}} recent run\",\n \"runsTray.summaryRecent_other\": \"{{count}} recent runs\",\n \"runsTray.noTrackedWorkYet\": \"No tracked work yet\",\n \"runsTray.emptyDescription\":\n \"Background agent work will appear here while it runs and after it finishes.\",\n \"runsTray.open\": \"Open\",\n \"runsTray.stopRun\": \"Stop {{title}}\",\n \"runsTray.hideRun\": \"Hide {{title}}\",\n \"runsTray.statusRunning\": \"Running\",\n \"runsTray.statusDone\": \"Done\",\n \"runsTray.statusFailed\": \"Failed\",\n \"runsTray.statusStopped\": \"Stopped\",\n \"runsTray.updatedJustNow\": \"Updated just now\",\n \"runsTray.finishedJustNow\": \"Finished just now\",\n \"runsTray.updatedMinutes\": \"Updated {{count}}m ago\",\n \"runsTray.finishedMinutes\": \"Finished {{count}}m ago\",\n \"runsTray.updatedHours\": \"Updated {{count}}h ago\",\n \"runsTray.finishedHours\": \"Finished {{count}}h ago\",\n \"runsTray.updatedDate\": \"Updated {{date}}\",\n \"runsTray.finishedDate\": \"Finished {{date}}\",\n \"codeRequired.fallbackDetail\":\n \"Edit locally or use Builder.io to edit this code in the cloud and continue customizing the app any way you like.\",\n \"codeRequired.defaultFeature\": \"Make the requested code changes to this app\",\n \"codeRequired.branchError\": \"Failed to create branch\",\n \"codeRequired.title\": \"Code changes required\",\n \"codeRequired.subtitleWithFeature\":\n '\"{{feature}}\" creates or modifies source code, which needs Desktop or Builder from this surface.',\n \"codeRequired.subtitle\":\n \"This action creates or modifies source code, which needs Desktop or Builder from this surface.\",\n \"codeRequired.desktopTitle\": \"Use Agent Native Desktop\",\n \"codeRequired.desktopDescription\":\n \"Open the project in the desktop app to enable source edits and CLI access.\",\n \"codeRequired.builderAgentTitle\": \"Use Builder.io Agent\",\n \"codeRequired.builderAgentDescription\":\n \"Let our cloud agent make the changes for you. You'll get a link to preview and deploy.\",\n \"codeRequired.codeChangeTitle\": \"This requires a code change\",\n \"codeRequired.codeChangeBadge\": \"Code change\",\n \"codeRequired.connectBuilderTitle\": \"Connect Builder.io\",\n \"codeRequired.connectBuilderDescription\":\n \"Connect Builder to enable cloud-based code changes from this app.\",\n \"codeRequired.setupRequired\": \"Setup required\",\n \"codeRequired.branchCreated\": \"Branch created\",\n \"codeRequired.close\": \"Close\",\n \"agentPanel.useBuilder\": \"Use Builder\",\n \"agentPanel.openDesktopToEditCode\": \"Open Desktop to edit code\",\n \"agentPanel.codeUnavailableDescription\":\n \"Source-code changes and CLI access are available in the Agent Native Desktop app.\",\n \"agentPanel.downloadDesktop\": \"Download Desktop\",\n \"agentPanel.chatMode\": \"Chat mode\",\n \"agentPanel.chat\": \"Chat\",\n \"agentPanel.cliTerminalMode\": \"CLI terminal mode\",\n \"agentPanel.cli\": \"CLI\",\n \"agentPanel.workspaceMode\": \"Workspace files, agents, skills, and tasks\",\n \"agentPanel.workspace\": \"Workspace\",\n \"agentPanel.newChat\": \"New chat\",\n \"agentPanel.newTerminal\": \"New terminal\",\n \"agentPanel.panelOptions\": \"Agent panel options\",\n \"agentPanel.collapseSidebar\": \"Collapse sidebar\",\n \"agentPanel.hideChats\": \"Hide chats\",\n \"agentPanel.allChats\": \"All chats\",\n \"agentPanel.settings\": \"Settings\",\n \"agentPanel.feedback\": \"Feedback\",\n \"agentPanel.exitFullscreen\": \"Exit fullscreen\",\n \"agentPanel.fullscreen\": \"Fullscreen\",\n \"agentPanel.closeTab\": \"Close tab\",\n \"agentPanel.closeOtherTabs\": \"Close other tabs\",\n \"agentPanel.closeAllTabs\": \"Close all tabs\",\n \"agentPanel.clearChat\": \"Clear chat\",\n \"agentPanel.cliRequiresDevMode\": \"CLI requires dev mode\",\n \"agentPanel.cliRequiresDevModeDescription\":\n \"Run this app locally with pnpm dev or use Builder.io to access the CLI terminal.\",\n \"agentPanel.toggleAgent\": \"Toggle agent\",\n};\n\nfunction flattenMessages(\n value: unknown,\n prefix = \"\",\n out: Record<string, string> = {},\n) {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return out;\n for (const [key, child] of Object.entries(value)) {\n const nextKey = prefix ? `${prefix}.${key}` : key;\n if (typeof child === \"string\") {\n out[nextKey] = child;\n } else {\n flattenMessages(child, nextKey, out);\n }\n }\n return out;\n}\n\nconst DEFAULT_ENGLISH_MESSAGES = flattenMessages(defaultEnglishMessages);\n\nfunction interpolateFallbackMessage(\n template: string,\n options?: Record<string, unknown>,\n) {\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, name: string) => {\n const value = options?.[name];\n return value == null ? \"\" : String(value);\n });\n}\n\nfunction humanizeFallbackKey(key: string) {\n const lastSegment = key.split(\".\").filter(Boolean).pop() ?? key;\n const words = lastSegment\n .replace(/[_-]+/g, \" \")\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .trim()\n .toLowerCase();\n return words ? words.charAt(0).toUpperCase() + words.slice(1) : key;\n}\n\nfunction fallbackMessage(key: string, options?: Record<string, unknown>) {\n const count = Number(options?.count);\n const pluralKey =\n Number.isFinite(count) && count === 1 ? `${key}_one` : `${key}_other`;\n const template =\n DEFAULT_ENGLISH_MESSAGES[pluralKey] ??\n DEFAULT_ENGLISH_MESSAGES[key] ??\n CORE_FALLBACK_MESSAGES[pluralKey] ??\n CORE_FALLBACK_MESSAGES[key];\n return template\n ? interpolateFallbackMessage(template, options)\n : humanizeFallbackKey(key);\n}\n\nexport function useT() {\n const { i18n, t } = useTranslation();\n const context = useContext(LocaleContext);\n const sourceLocale = context?.sourceLocale ?? DEFAULT_LOCALE;\n return useCallback(\n (key: string, options?: Record<string, unknown>) => {\n const translated = t(key, options);\n if (translated !== key) return translated;\n const getFixedT = (\n i18n as { getFixedT?: (locale: LocaleCode) => typeof t }\n ).getFixedT;\n const sourceFallback = getFixedT?.(sourceLocale)(key, options);\n if (sourceFallback && sourceFallback !== key) return sourceFallback;\n return fallbackMessage(key, options);\n },\n [i18n, sourceLocale, t],\n );\n}\n\nexport function useFormatters() {\n const context = useContext(LocaleContext);\n const locale = context?.locale ?? DEFAULT_LOCALE;\n return useMemo(\n () => ({\n formatDate(\n value: Date | number | string,\n options?: Intl.DateTimeFormatOptions,\n ) {\n return new Intl.DateTimeFormat(locale, options).format(\n value instanceof Date ? value : new Date(value),\n );\n },\n formatNumber(value: number, options?: Intl.NumberFormatOptions) {\n return new Intl.NumberFormat(locale, options).format(value);\n },\n formatRelativeTime(\n value: number,\n unit: Intl.RelativeTimeFormatUnit,\n options?: Intl.RelativeTimeFormatOptions,\n ) {\n return new Intl.RelativeTimeFormat(locale, options).format(value, unit);\n },\n formatList(value: string[], options?: Intl.ListFormatOptions) {\n return new Intl.ListFormat(locale, options).format(value);\n },\n }),\n [locale],\n );\n}\n\nexport function LanguagePicker({\n className,\n includeSystem = true,\n label,\n variant = \"select\",\n}: {\n className?: string;\n includeSystem?: boolean;\n label?: string;\n variant?: \"select\" | \"icon\";\n}) {\n const { locale, preference, setPreference } = useLocale();\n const copy =\n LANGUAGE_PICKER_COPY[locale] ?? LANGUAGE_PICKER_COPY[DEFAULT_LOCALE];\n const resolvedLabel = label ?? copy.label;\n const options = [\n ...(includeSystem\n ? [\n {\n value: \"system\" as const,\n label: copy.system,\n description: copy.systemDescription,\n },\n ]\n : []),\n ...SUPPORTED_LOCALES.map((code) => ({\n value: code,\n label:\n LOCALE_METADATA[code].nativeName === LOCALE_METADATA[code].englishName\n ? LOCALE_METADATA[code].nativeName\n : `${LOCALE_METADATA[code].nativeName} (${LOCALE_METADATA[code].englishName})`,\n description: code,\n })),\n ];\n const selected = options.find((option) => option.value === preference);\n\n return (\n <div className={className}>\n <SelectPrimitive.Root\n value={preference}\n onValueChange={(value) =>\n void setPreference(normalizeLocalizationPreference(value).locale)\n }\n >\n <SelectPrimitive.Trigger\n className={\n variant === \"icon\"\n ? \"flex h-8 w-8 items-center justify-center rounded-md border border-border bg-background text-foreground outline-none transition-colors hover:bg-accent/40 data-[placeholder]:text-muted-foreground\"\n : \"flex h-9 w-full items-center justify-between rounded-md border border-border bg-background px-3 text-start text-[12px] text-foreground outline-none transition-colors hover:bg-accent/40 data-[placeholder]:text-muted-foreground\"\n }\n aria-label={resolvedLabel}\n title={selected?.label ?? resolvedLabel}\n >\n <span className=\"flex min-w-0 items-center gap-2\">\n <IconLanguage className=\"h-4 w-4 shrink-0 text-muted-foreground\" />\n {variant === \"select\" ? (\n <SelectPrimitive.Value>\n <span className=\"truncate\">\n {selected?.label ?? preference}\n </span>\n </SelectPrimitive.Value>\n ) : null}\n </span>\n {variant === \"select\" ? (\n <SelectPrimitive.Icon asChild>\n <IconChevronDown className=\"h-3.5 w-3.5 text-muted-foreground\" />\n </SelectPrimitive.Icon>\n ) : null}\n </SelectPrimitive.Trigger>\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n position=\"popper\"\n sideOffset={6}\n className={\n variant === \"icon\"\n ? \"z-[9999] min-w-56 overflow-hidden rounded-lg border border-border bg-popover shadow-lg\"\n : \"z-[9999] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-lg border border-border bg-popover shadow-lg\"\n }\n >\n <SelectPrimitive.Viewport className=\"p-1\">\n {options.map((option) => (\n <SelectPrimitive.Item\n key={option.value}\n value={option.value}\n className=\"relative flex w-full cursor-pointer select-none items-start gap-2 rounded-md px-8 py-2.5 text-[12px] outline-none data-[highlighted]:bg-accent/60 data-[state=checked]:bg-accent/40\"\n >\n <span className=\"absolute start-2 top-2.5 flex h-4 w-4 items-center justify-center text-muted-foreground\">\n <SelectPrimitive.ItemIndicator>\n <IconCheck className=\"h-3.5 w-3.5\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <div className=\"flex min-w-0 flex-col\">\n <SelectPrimitive.ItemText>\n <span className=\"text-foreground\">{option.label}</span>\n </SelectPrimitive.ItemText>\n <span className=\"mt-0.5 text-[11px] leading-relaxed text-muted-foreground\">\n {option.description}\n </span>\n </div>\n </SelectPrimitive.Item>\n ))}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n </div>\n );\n}\n"]}
|
|
@@ -49,11 +49,11 @@ export declare const postAwareness: import("h3").EventHandlerWithFetch<import("h
|
|
|
49
49
|
error: string;
|
|
50
50
|
states?: undefined;
|
|
51
51
|
} | {
|
|
52
|
-
error?: undefined;
|
|
53
52
|
states: {
|
|
54
53
|
clientId: number;
|
|
55
54
|
state: string;
|
|
56
55
|
}[];
|
|
56
|
+
error?: undefined;
|
|
57
57
|
}>>;
|
|
58
58
|
/**
|
|
59
59
|
* GET /_agent-native/collab/:docId/users
|
|
@@ -64,10 +64,10 @@ export declare const getActiveUsers: import("h3").EventHandlerWithFetch<import("
|
|
|
64
64
|
error: string;
|
|
65
65
|
users?: undefined;
|
|
66
66
|
} | {
|
|
67
|
-
error?: undefined;
|
|
68
67
|
users: {
|
|
69
68
|
clientId: number;
|
|
70
69
|
lastSeen: number;
|
|
71
70
|
}[];
|
|
71
|
+
error?: undefined;
|
|
72
72
|
}>>;
|
|
73
73
|
//# sourceMappingURL=awareness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"awareness.d.ts","sourceRoot":"","sources":["../../src/collab/awareness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS3C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD,eAAO,MAAM,sBAAsB,EAAG,kBAA2B,CAAC;AAElE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAgB,mBAAmB,IAAI,YAAY,CAElD;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAUN;AAKD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAO1E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAOnE;AAUD;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"awareness.d.ts","sourceRoot":"","sources":["../../src/collab/awareness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS3C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD,eAAO,MAAM,sBAAsB,EAAG,kBAA2B,CAAC;AAElE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAgB,mBAAmB,IAAI,YAAY,CAElD;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAUN;AAKD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAO1E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,IAAI,CAOnE;AAUD;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa;;;;;kBAuCa,MAAM;eAAS,MAAM;;;GAa1D,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;;kBAWM,MAAM;kBAAY,MAAM;;;GAMvD,CAAC"}
|
package/dist/collab/routes.d.ts
CHANGED
|
@@ -26,8 +26,8 @@ export declare const getCollabState: import("h3").EventHandlerWithFetch<import("
|
|
|
26
26
|
* Body: { update: string (base64), requestSource?: string }
|
|
27
27
|
*/
|
|
28
28
|
export declare const postCollabUpdate: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
29
|
-
error: string;
|
|
30
29
|
ok?: undefined;
|
|
30
|
+
error: string;
|
|
31
31
|
} | {
|
|
32
32
|
error?: undefined;
|
|
33
33
|
ok: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-localization-preference.d.ts","sourceRoot":"","sources":["../../../src/localization/actions/set-localization-preference.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"set-localization-preference.d.ts","sourceRoot":"","sources":["../../../src/localization/actions/set-localization-preference.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,cAAc,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { defineAction } from "../../action.js";
|
|
3
3
|
import { putUserSetting } from "../../settings/user-settings.js";
|
|
4
|
-
import { LOCALIZATION_SETTING_KEY, normalizeLocalePreference, } from "../shared.js";
|
|
4
|
+
import { LOCALIZATION_SETTING_KEY, SUPPORTED_LOCALES, normalizeLocalePreference, } from "../shared.js";
|
|
5
5
|
export default defineAction({
|
|
6
6
|
description: "Set the current user's interface language preference to 'system' or a supported BCP-47 locale.",
|
|
7
7
|
schema: z.object({
|
|
@@ -14,7 +14,7 @@ export default defineAction({
|
|
|
14
14
|
throw new Error("Not authenticated.");
|
|
15
15
|
const locale = normalizeLocalePreference(args.locale);
|
|
16
16
|
if (!locale) {
|
|
17
|
-
throw new Error(
|
|
17
|
+
throw new Error(`Unsupported locale. Use system, ${SUPPORTED_LOCALES.join(", ")}.`);
|
|
18
18
|
}
|
|
19
19
|
const value = { locale };
|
|
20
20
|
await putUserSetting(ctx.userEmail, LOCALIZATION_SETTING_KEY, value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set-localization-preference.js","sourceRoot":"","sources":["../../../src/localization/actions/set-localization-preference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAE1B,MAAM,cAAc,CAAC;AAEtB,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,gGAAgG;IAClG,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,CAAC,6DAA6D,CAAC;KAC3E,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAmC,EAAE;QACxD,IAAI,CAAC,GAAG,EAAE,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,
|
|
1
|
+
{"version":3,"file":"set-localization-preference.js","sourceRoot":"","sources":["../../../src/localization/actions/set-localization-preference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,GAE1B,MAAM,cAAc,CAAC;AAEtB,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,gGAAgG;IAClG,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,CAAC,6DAA6D,CAAC;KAC3E,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAmC,EAAE;QACxD,IAAI,CAAC,GAAG,EAAE,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,mCAAmC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACnE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAqD,EAAE,MAAM,EAAE,CAAC;QAC3E,MAAM,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC,CAAC","sourcesContent":["import { z } from \"zod\";\n\nimport { defineAction } from \"../../action.js\";\nimport { putUserSetting } from \"../../settings/user-settings.js\";\nimport {\n LOCALIZATION_SETTING_KEY,\n SUPPORTED_LOCALES,\n normalizeLocalePreference,\n type LocalizationPreference,\n} from \"../shared.js\";\n\nexport default defineAction({\n description:\n \"Set the current user's interface language preference to 'system' or a supported BCP-47 locale.\",\n schema: z.object({\n locale: z\n .string()\n .describe(\"Language preference: 'system' or a supported BCP-47 locale.\"),\n }),\n run: async (args, ctx): Promise<LocalizationPreference> => {\n if (!ctx?.userEmail) throw new Error(\"Not authenticated.\");\n const locale = normalizeLocalePreference(args.locale);\n if (!locale) {\n throw new Error(\n `Unsupported locale. Use system, ${SUPPORTED_LOCALES.join(\", \")}.`,\n );\n }\n const value: LocalizationPreference & Record<string, unknown> = { locale };\n await putUserSetting(ctx.userEmail, LOCALIZATION_SETTING_KEY, value);\n return value;\n },\n});\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const SUPPORTED_LOCALES: readonly ["en-US", "zh-CN", "es-ES", "fr-FR", "de-DE", "ja-JP", "ko-KR", "pt-BR", "hi-IN", "ar-SA"];
|
|
1
|
+
export declare const SUPPORTED_LOCALES: readonly ["en-US", "zh-CN", "zh-TW", "es-ES", "fr-FR", "de-DE", "ja-JP", "ko-KR", "pt-BR", "hi-IN", "ar-SA"];
|
|
2
2
|
export type LocaleCode = (typeof SUPPORTED_LOCALES)[number];
|
|
3
3
|
export type LocalePreference = "system" | LocaleCode;
|
|
4
4
|
export interface LocaleMetadata {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/localization/shared.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,YAC5B,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,CACC,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,EAAE,UAAoB,CAAC;AAClD,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,kBAAkB,mCAAmC,CAAC;AACnE,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAEjE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/localization/shared.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,YAC5B,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,CACC,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,EAAE,UAAoB,CAAC;AAClD,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AACvD,eAAO,MAAM,kBAAkB,mCAAmC,CAAC;AACnE,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAEjE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,UAAU,EAAE,cAAc,CAmE9D,CAAC;AAwCF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAiBrE;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,GACb,gBAAgB,GAAG,IAAI,CAGzB;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,GACb,sBAAsB,CASxB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,GAAG,KAAK,CAEjE;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAC5B,UAAU,CAMZ;AAED,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,sBAAsB,GAAG,gBAAgB,GAAG,OAAO,EAC/D,gBAAgB,GAAE,QAAQ,CAAC,OAAO,CAAM,GACvC,UAAU,CAOZ"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const SUPPORTED_LOCALES = [
|
|
2
2
|
"en-US",
|
|
3
3
|
"zh-CN",
|
|
4
|
+
"zh-TW",
|
|
4
5
|
"es-ES",
|
|
5
6
|
"fr-FR",
|
|
6
7
|
"de-DE",
|
|
@@ -27,6 +28,12 @@ export const LOCALE_METADATA = {
|
|
|
27
28
|
nativeName: "简体中文",
|
|
28
29
|
dir: "ltr",
|
|
29
30
|
},
|
|
31
|
+
"zh-TW": {
|
|
32
|
+
code: "zh-TW",
|
|
33
|
+
englishName: "Chinese (Traditional, Taiwan)",
|
|
34
|
+
nativeName: "繁體中文",
|
|
35
|
+
dir: "ltr",
|
|
36
|
+
},
|
|
30
37
|
"es-ES": {
|
|
31
38
|
code: "es-ES",
|
|
32
39
|
englishName: "Spanish",
|
|
@@ -77,6 +84,39 @@ export const LOCALE_METADATA = {
|
|
|
77
84
|
},
|
|
78
85
|
};
|
|
79
86
|
const SUPPORTED_LOCALE_SET = new Set(SUPPORTED_LOCALES);
|
|
87
|
+
const CHINESE_LOCALE_ALIASES = {
|
|
88
|
+
"zh-cn": "zh-CN",
|
|
89
|
+
"zh-hans": "zh-CN",
|
|
90
|
+
"zh-hans-cn": "zh-CN",
|
|
91
|
+
"zh-hans-sg": "zh-CN",
|
|
92
|
+
"zh-hant": "zh-TW",
|
|
93
|
+
"zh-hant-hk": "zh-TW",
|
|
94
|
+
"zh-hant-mo": "zh-TW",
|
|
95
|
+
"zh-hant-tw": "zh-TW",
|
|
96
|
+
"zh-hk": "zh-TW",
|
|
97
|
+
"zh-mo": "zh-TW",
|
|
98
|
+
"zh-sg": "zh-CN",
|
|
99
|
+
"zh-tw": "zh-TW",
|
|
100
|
+
};
|
|
101
|
+
function normalizeChineseLocaleAlias(canonical) {
|
|
102
|
+
const normalized = canonical.toLowerCase();
|
|
103
|
+
const alias = CHINESE_LOCALE_ALIASES[normalized];
|
|
104
|
+
if (alias)
|
|
105
|
+
return alias;
|
|
106
|
+
const parts = normalized.split("-");
|
|
107
|
+
if (parts[0] !== "zh")
|
|
108
|
+
return null;
|
|
109
|
+
if (parts.includes("hant") ||
|
|
110
|
+
parts.includes("tw") ||
|
|
111
|
+
parts.includes("hk") ||
|
|
112
|
+
parts.includes("mo")) {
|
|
113
|
+
return "zh-TW";
|
|
114
|
+
}
|
|
115
|
+
if (parts.includes("hans") || parts.includes("cn") || parts.includes("sg")) {
|
|
116
|
+
return "zh-CN";
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
80
120
|
export function isLocaleCode(value) {
|
|
81
121
|
return typeof value === "string" && SUPPORTED_LOCALE_SET.has(value);
|
|
82
122
|
}
|
|
@@ -87,6 +127,9 @@ export function normalizeLocaleCode(value) {
|
|
|
87
127
|
for (const canonical of Intl.getCanonicalLocales(value.trim())) {
|
|
88
128
|
if (isLocaleCode(canonical))
|
|
89
129
|
return canonical;
|
|
130
|
+
const alias = normalizeChineseLocaleAlias(canonical);
|
|
131
|
+
if (alias)
|
|
132
|
+
return alias;
|
|
90
133
|
const language = canonical.split("-")[0]?.toLowerCase();
|
|
91
134
|
const match = SUPPORTED_LOCALES.find((locale) => locale.split("-")[0]?.toLowerCase() === language);
|
|
92
135
|
if (match)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/localization/shared.ts"],"names":[],"mappings":"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","sourcesContent":["export const SUPPORTED_LOCALES = [\n \"en-US\",\n \"zh-CN\",\n \"es-ES\",\n \"fr-FR\",\n \"de-DE\",\n \"ja-JP\",\n \"ko-KR\",\n \"pt-BR\",\n \"hi-IN\",\n \"ar-SA\",\n] as const;\n\nexport type LocaleCode = (typeof SUPPORTED_LOCALES)[number];\nexport type LocalePreference = \"system\" | LocaleCode;\n\nexport interface LocaleMetadata {\n code: LocaleCode;\n englishName: string;\n nativeName: string;\n dir: \"ltr\" | \"rtl\";\n}\n\nexport interface LocalizationPreference {\n locale: LocalePreference;\n}\n\nexport const DEFAULT_LOCALE: LocaleCode = \"en-US\";\nexport const LOCALIZATION_SETTING_KEY = \"localization\";\nexport const LOCALE_STORAGE_KEY = \"agent-native:locale-preference\";\nexport const LOCALE_HYDRATION_GLOBAL = \"__AGENT_NATIVE_LOCALE__\";\n\nexport const LOCALE_METADATA: Record<LocaleCode, LocaleMetadata> = {\n \"en-US\": {\n code: \"en-US\",\n englishName: \"English\",\n nativeName: \"English\",\n dir: \"ltr\",\n },\n \"zh-CN\": {\n code: \"zh-CN\",\n englishName: \"Chinese (Simplified)\",\n nativeName: \"简体中文\",\n dir: \"ltr\",\n },\n \"es-ES\": {\n code: \"es-ES\",\n englishName: \"Spanish\",\n nativeName: \"Español\",\n dir: \"ltr\",\n },\n \"fr-FR\": {\n code: \"fr-FR\",\n englishName: \"French\",\n nativeName: \"Français\",\n dir: \"ltr\",\n },\n \"de-DE\": {\n code: \"de-DE\",\n englishName: \"German\",\n nativeName: \"Deutsch\",\n dir: \"ltr\",\n },\n \"ja-JP\": {\n code: \"ja-JP\",\n englishName: \"Japanese\",\n nativeName: \"日本語\",\n dir: \"ltr\",\n },\n \"ko-KR\": {\n code: \"ko-KR\",\n englishName: \"Korean\",\n nativeName: \"한국어\",\n dir: \"ltr\",\n },\n \"pt-BR\": {\n code: \"pt-BR\",\n englishName: \"Portuguese (Brazil)\",\n nativeName: \"Português (Brasil)\",\n dir: \"ltr\",\n },\n \"hi-IN\": {\n code: \"hi-IN\",\n englishName: \"Hindi\",\n nativeName: \"हिन्दी\",\n dir: \"ltr\",\n },\n \"ar-SA\": {\n code: \"ar-SA\",\n englishName: \"Arabic\",\n nativeName: \"العربية\",\n dir: \"rtl\",\n },\n};\n\nconst SUPPORTED_LOCALE_SET = new Set<string>(SUPPORTED_LOCALES);\n\nexport function isLocaleCode(value: unknown): value is LocaleCode {\n return typeof value === \"string\" && SUPPORTED_LOCALE_SET.has(value);\n}\n\nexport function normalizeLocaleCode(value: unknown): LocaleCode | null {\n if (typeof value !== \"string\" || value.trim().length === 0) return null;\n try {\n for (const canonical of Intl.getCanonicalLocales(value.trim())) {\n if (isLocaleCode(canonical)) return canonical;\n const language = canonical.split(\"-\")[0]?.toLowerCase();\n const match = SUPPORTED_LOCALES.find(\n (locale) => locale.split(\"-\")[0]?.toLowerCase() === language,\n );\n if (match) return match;\n }\n } catch {\n return null;\n }\n return null;\n}\n\nexport function normalizeLocalePreference(\n value: unknown,\n): LocalePreference | null {\n if (value === \"system\") return \"system\";\n return normalizeLocaleCode(value);\n}\n\nexport function normalizeLocalizationPreference(\n value: unknown,\n): LocalizationPreference {\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n const locale = normalizeLocalePreference(\n (value as { locale?: unknown }).locale,\n );\n if (locale) return { locale };\n }\n const locale = normalizeLocalePreference(value);\n return { locale: locale ?? \"system\" };\n}\n\nexport function localeDirection(locale: LocaleCode): \"ltr\" | \"rtl\" {\n return LOCALE_METADATA[locale]?.dir ?? \"ltr\";\n}\n\nexport function resolveLocaleFromCandidates(\n candidates: Iterable<unknown>,\n): LocaleCode {\n for (const candidate of candidates) {\n const normalized = normalizeLocaleCode(candidate);\n if (normalized) return normalized;\n }\n return DEFAULT_LOCALE;\n}\n\nexport function resolveLocaleFromPreference(\n preference: LocalizationPreference | LocalePreference | unknown,\n systemCandidates: Iterable<unknown> = [],\n): LocaleCode {\n const normalized =\n typeof preference === \"string\"\n ? normalizeLocalePreference(preference)\n : normalizeLocalizationPreference(preference).locale;\n if (normalized && normalized !== \"system\") return normalized;\n return resolveLocaleFromCandidates(systemCandidates);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/localization/shared.ts"],"names":[],"mappings":"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","sourcesContent":["export const SUPPORTED_LOCALES = [\n \"en-US\",\n \"zh-CN\",\n \"zh-TW\",\n \"es-ES\",\n \"fr-FR\",\n \"de-DE\",\n \"ja-JP\",\n \"ko-KR\",\n \"pt-BR\",\n \"hi-IN\",\n \"ar-SA\",\n] as const;\n\nexport type LocaleCode = (typeof SUPPORTED_LOCALES)[number];\nexport type LocalePreference = \"system\" | LocaleCode;\n\nexport interface LocaleMetadata {\n code: LocaleCode;\n englishName: string;\n nativeName: string;\n dir: \"ltr\" | \"rtl\";\n}\n\nexport interface LocalizationPreference {\n locale: LocalePreference;\n}\n\nexport const DEFAULT_LOCALE: LocaleCode = \"en-US\";\nexport const LOCALIZATION_SETTING_KEY = \"localization\";\nexport const LOCALE_STORAGE_KEY = \"agent-native:locale-preference\";\nexport const LOCALE_HYDRATION_GLOBAL = \"__AGENT_NATIVE_LOCALE__\";\n\nexport const LOCALE_METADATA: Record<LocaleCode, LocaleMetadata> = {\n \"en-US\": {\n code: \"en-US\",\n englishName: \"English\",\n nativeName: \"English\",\n dir: \"ltr\",\n },\n \"zh-CN\": {\n code: \"zh-CN\",\n englishName: \"Chinese (Simplified)\",\n nativeName: \"简体中文\",\n dir: \"ltr\",\n },\n \"zh-TW\": {\n code: \"zh-TW\",\n englishName: \"Chinese (Traditional, Taiwan)\",\n nativeName: \"繁體中文\",\n dir: \"ltr\",\n },\n \"es-ES\": {\n code: \"es-ES\",\n englishName: \"Spanish\",\n nativeName: \"Español\",\n dir: \"ltr\",\n },\n \"fr-FR\": {\n code: \"fr-FR\",\n englishName: \"French\",\n nativeName: \"Français\",\n dir: \"ltr\",\n },\n \"de-DE\": {\n code: \"de-DE\",\n englishName: \"German\",\n nativeName: \"Deutsch\",\n dir: \"ltr\",\n },\n \"ja-JP\": {\n code: \"ja-JP\",\n englishName: \"Japanese\",\n nativeName: \"日本語\",\n dir: \"ltr\",\n },\n \"ko-KR\": {\n code: \"ko-KR\",\n englishName: \"Korean\",\n nativeName: \"한국어\",\n dir: \"ltr\",\n },\n \"pt-BR\": {\n code: \"pt-BR\",\n englishName: \"Portuguese (Brazil)\",\n nativeName: \"Português (Brasil)\",\n dir: \"ltr\",\n },\n \"hi-IN\": {\n code: \"hi-IN\",\n englishName: \"Hindi\",\n nativeName: \"हिन्दी\",\n dir: \"ltr\",\n },\n \"ar-SA\": {\n code: \"ar-SA\",\n englishName: \"Arabic\",\n nativeName: \"العربية\",\n dir: \"rtl\",\n },\n};\n\nconst SUPPORTED_LOCALE_SET = new Set<string>(SUPPORTED_LOCALES);\n\nconst CHINESE_LOCALE_ALIASES: Record<string, LocaleCode> = {\n \"zh-cn\": \"zh-CN\",\n \"zh-hans\": \"zh-CN\",\n \"zh-hans-cn\": \"zh-CN\",\n \"zh-hans-sg\": \"zh-CN\",\n \"zh-hant\": \"zh-TW\",\n \"zh-hant-hk\": \"zh-TW\",\n \"zh-hant-mo\": \"zh-TW\",\n \"zh-hant-tw\": \"zh-TW\",\n \"zh-hk\": \"zh-TW\",\n \"zh-mo\": \"zh-TW\",\n \"zh-sg\": \"zh-CN\",\n \"zh-tw\": \"zh-TW\",\n};\n\nfunction normalizeChineseLocaleAlias(canonical: string): LocaleCode | null {\n const normalized = canonical.toLowerCase();\n const alias = CHINESE_LOCALE_ALIASES[normalized];\n if (alias) return alias;\n\n const parts = normalized.split(\"-\");\n if (parts[0] !== \"zh\") return null;\n if (\n parts.includes(\"hant\") ||\n parts.includes(\"tw\") ||\n parts.includes(\"hk\") ||\n parts.includes(\"mo\")\n ) {\n return \"zh-TW\";\n }\n if (parts.includes(\"hans\") || parts.includes(\"cn\") || parts.includes(\"sg\")) {\n return \"zh-CN\";\n }\n return null;\n}\n\nexport function isLocaleCode(value: unknown): value is LocaleCode {\n return typeof value === \"string\" && SUPPORTED_LOCALE_SET.has(value);\n}\n\nexport function normalizeLocaleCode(value: unknown): LocaleCode | null {\n if (typeof value !== \"string\" || value.trim().length === 0) return null;\n try {\n for (const canonical of Intl.getCanonicalLocales(value.trim())) {\n if (isLocaleCode(canonical)) return canonical;\n const alias = normalizeChineseLocaleAlias(canonical);\n if (alias) return alias;\n const language = canonical.split(\"-\")[0]?.toLowerCase();\n const match = SUPPORTED_LOCALES.find(\n (locale) => locale.split(\"-\")[0]?.toLowerCase() === language,\n );\n if (match) return match;\n }\n } catch {\n return null;\n }\n return null;\n}\n\nexport function normalizeLocalePreference(\n value: unknown,\n): LocalePreference | null {\n if (value === \"system\") return \"system\";\n return normalizeLocaleCode(value);\n}\n\nexport function normalizeLocalizationPreference(\n value: unknown,\n): LocalizationPreference {\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n const locale = normalizeLocalePreference(\n (value as { locale?: unknown }).locale,\n );\n if (locale) return { locale };\n }\n const locale = normalizeLocalePreference(value);\n return { locale: locale ?? \"system\" };\n}\n\nexport function localeDirection(locale: LocaleCode): \"ltr\" | \"rtl\" {\n return LOCALE_METADATA[locale]?.dir ?? \"ltr\";\n}\n\nexport function resolveLocaleFromCandidates(\n candidates: Iterable<unknown>,\n): LocaleCode {\n for (const candidate of candidates) {\n const normalized = normalizeLocaleCode(candidate);\n if (normalized) return normalized;\n }\n return DEFAULT_LOCALE;\n}\n\nexport function resolveLocaleFromPreference(\n preference: LocalizationPreference | LocalePreference | unknown,\n systemCandidates: Iterable<unknown> = [],\n): LocaleCode {\n const normalized =\n typeof preference === \"string\"\n ? normalizeLocalePreference(preference)\n : normalizeLocalizationPreference(preference).locale;\n if (normalized && normalized !== \"system\") return normalized;\n return resolveLocaleFromCandidates(systemCandidates);\n}\n"]}
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
export declare function createNotificationsHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<"" | import("./types.js").Notification[] | {
|
|
14
14
|
count: number;
|
|
15
15
|
updated?: undefined;
|
|
16
|
-
ok?: undefined;
|
|
17
16
|
error?: undefined;
|
|
17
|
+
ok?: undefined;
|
|
18
18
|
} | {
|
|
19
19
|
count?: undefined;
|
|
20
20
|
updated: number;
|
|
21
|
-
ok?: undefined;
|
|
22
21
|
error?: undefined;
|
|
22
|
+
ok?: undefined;
|
|
23
23
|
} | {
|
|
24
24
|
count?: undefined;
|
|
25
25
|
updated?: undefined;
|
|
@@ -28,7 +28,7 @@ export declare function createNotificationsHandler(): import("h3").EventHandlerW
|
|
|
28
28
|
} | {
|
|
29
29
|
count?: undefined;
|
|
30
30
|
updated?: undefined;
|
|
31
|
-
ok: boolean;
|
|
32
31
|
error?: undefined;
|
|
32
|
+
ok: boolean;
|
|
33
33
|
}>>;
|
|
34
34
|
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -41,17 +41,17 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
|
|
|
41
41
|
thumbsUpRate: number;
|
|
42
42
|
avgEvalScore: number;
|
|
43
43
|
} | {
|
|
44
|
+
error?: undefined;
|
|
44
45
|
ok?: undefined;
|
|
45
46
|
summary: import("./types.js").TraceSummary;
|
|
46
47
|
spans: import("./types.js").TraceSpan[];
|
|
47
|
-
error?: undefined;
|
|
48
48
|
id?: undefined;
|
|
49
49
|
} | {
|
|
50
|
+
error?: undefined;
|
|
50
51
|
ok?: undefined;
|
|
51
52
|
summary?: undefined;
|
|
52
53
|
spans?: undefined;
|
|
53
54
|
id: string;
|
|
54
|
-
error?: undefined;
|
|
55
55
|
} | {
|
|
56
56
|
ok?: undefined;
|
|
57
57
|
summary?: undefined;
|
|
@@ -59,10 +59,10 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
|
|
|
59
59
|
error: any;
|
|
60
60
|
id?: undefined;
|
|
61
61
|
} | {
|
|
62
|
+
error?: undefined;
|
|
62
63
|
summary?: undefined;
|
|
63
64
|
spans?: undefined;
|
|
64
65
|
ok: boolean;
|
|
65
|
-
error?: undefined;
|
|
66
66
|
id?: undefined;
|
|
67
67
|
}>>;
|
|
68
68
|
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -52,8 +52,8 @@ export declare function handleDeleteResource(event: any): Promise<{
|
|
|
52
52
|
error: string;
|
|
53
53
|
ok?: undefined;
|
|
54
54
|
} | {
|
|
55
|
-
ok: boolean;
|
|
56
55
|
error?: undefined;
|
|
56
|
+
ok: boolean;
|
|
57
57
|
}>;
|
|
58
58
|
/** POST /_agent-native/resources/upload — upload a file as a resource */
|
|
59
59
|
export declare function handleUploadResource(event: any): Promise<import("./store.js").Resource | {
|
|
@@ -73,9 +73,9 @@ export declare function handleUploadResource(event: any): Promise<import("./stor
|
|
|
73
73
|
runId: string | null;
|
|
74
74
|
expiresAt: number | null;
|
|
75
75
|
metadata: string | null;
|
|
76
|
+
error?: undefined;
|
|
76
77
|
url: string;
|
|
77
78
|
provider: string;
|
|
78
|
-
error?: undefined;
|
|
79
79
|
}>;
|
|
80
80
|
export {};
|
|
81
81
|
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-chat-plugin.d.ts","sourceRoot":"","sources":["../../src/server/agent-chat-plugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-chat-plugin.d.ts","sourceRoot":"","sources":["../../src/server/agent-chat-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -6110,6 +6110,45 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
|
|
|
6110
6110
|
}
|
|
6111
6111
|
}
|
|
6112
6112
|
}
|
|
6113
|
+
// Cookieless durable background worker: getSession()/getOrgContext()
|
|
6114
|
+
// resolve from the (absent) session, so org-scoped credential resolution
|
|
6115
|
+
// (the Builder engine) would miss the owner's org and resolveEngine would
|
|
6116
|
+
// fall back to the anthropic default — bailing on a missing key before
|
|
6117
|
+
// the worker claims its run. The owner IS known here (seeded via
|
|
6118
|
+
// OWNER_CONTEXT_KEY from the run's thread), so resolve the org directly
|
|
6119
|
+
// from the owner email, the same active-org logic the foreground session
|
|
6120
|
+
// would yield.
|
|
6121
|
+
if (!resolvedOrgId && owner) {
|
|
6122
|
+
try {
|
|
6123
|
+
const { resolveOrgIdForEmail } = await import("../org/context.js");
|
|
6124
|
+
resolvedOrgId = (await resolveOrgIdForEmail(owner)) ?? undefined;
|
|
6125
|
+
}
|
|
6126
|
+
catch {
|
|
6127
|
+
// org tables unavailable — proceed without org (foreground-equivalent)
|
|
6128
|
+
}
|
|
6129
|
+
}
|
|
6130
|
+
// DURABLE OWNER CONTEXT, PART 2: ORG.
|
|
6131
|
+
// The cookieless `_process-run` self-dispatch (and any other background
|
|
6132
|
+
// re-entry) resolves the owner from the run row, but has NO session —
|
|
6133
|
+
// every org resolver above ultimately derives identity from
|
|
6134
|
+
// getSession(event), so they all come back null here. That silently
|
|
6135
|
+
// scopes the agent to `org_id IS NULL` rows only: it sees and writes
|
|
6136
|
+
// resources outside the user's org, while the foreground UI — which
|
|
6137
|
+
// carries the session cookie — resolves the real org. The result is the
|
|
6138
|
+
// observed split where the agent can't list/read the same resources the
|
|
6139
|
+
// UI shows and writes new rows with a null org. Resolve the org from the
|
|
6140
|
+
// now-known owner email (the same active-org / membership logic
|
|
6141
|
+
// getOrgContext uses, minus the session) so the agent and the UI operate
|
|
6142
|
+
// over the same org-scoped data.
|
|
6143
|
+
if (!resolvedOrgId && owner && !ownerContext.anonymous) {
|
|
6144
|
+
try {
|
|
6145
|
+
const { resolveOrgIdForEmail } = await import("../org/context.js");
|
|
6146
|
+
resolvedOrgId = (await resolveOrgIdForEmail(owner)) ?? undefined;
|
|
6147
|
+
}
|
|
6148
|
+
catch {
|
|
6149
|
+
// org tables unavailable (first boot) — leave org unscoped
|
|
6150
|
+
}
|
|
6151
|
+
}
|
|
6113
6152
|
// Propagate the caller's IANA timezone from `x-user-timezone` so that
|
|
6114
6153
|
// tool calls made by the agent (e.g. log-meal with no explicit date)
|
|
6115
6154
|
// resolve "today" in the user's local timezone instead of server UTC.
|