@agent-native/core 0.79.12 → 0.79.15
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 +19 -0
- package/corpus/core/docs/content/locales/zh-TW/a2a-protocol.md +68 -68
- package/corpus/core/docs/content/locales/zh-TW/actions.md +82 -82
- package/corpus/core/docs/content/locales/zh-TW/agent-mentions.md +22 -22
- package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.md +82 -82
- package/corpus/core/docs/content/locales/zh-TW/agent-teams.md +29 -29
- package/corpus/core/docs/content/locales/zh-TW/agent-web-surfaces.md +11 -11
- package/corpus/core/docs/content/locales/zh-TW/audit-log.md +16 -16
- package/corpus/core/docs/content/locales/zh-TW/authentication.md +32 -32
- package/corpus/core/docs/content/locales/zh-TW/automations.md +32 -32
- package/corpus/core/docs/content/locales/zh-TW/blueprint-installer.md +19 -19
- package/corpus/core/docs/content/locales/zh-TW/cli-adapters.md +17 -17
- package/corpus/core/docs/content/locales/zh-TW/client.md +62 -62
- package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.md +32 -32
- package/corpus/core/docs/content/locales/zh-TW/code-agents-ui.md +91 -91
- package/corpus/core/docs/content/locales/zh-TW/components.md +51 -51
- package/corpus/core/docs/content/locales/zh-TW/context-awareness.md +66 -66
- package/corpus/core/docs/content/locales/zh-TW/creating-templates.md +39 -39
- package/corpus/core/docs/content/locales/zh-TW/cross-app-sso.md +29 -29
- package/corpus/core/docs/content/locales/zh-TW/database.md +21 -21
- package/corpus/core/docs/content/locales/zh-TW/deployment.md +37 -37
- package/corpus/core/docs/content/locales/zh-TW/dispatch.md +43 -43
- package/corpus/core/docs/content/locales/zh-TW/drop-in-agent.md +34 -34
- package/corpus/core/docs/content/locales/zh-TW/durable-resume.md +18 -18
- package/corpus/core/docs/content/locales/zh-TW/embedding-sdk.md +73 -73
- package/corpus/core/docs/content/locales/zh-TW/evals.md +16 -16
- package/corpus/core/docs/content/locales/zh-TW/extensions.md +81 -81
- package/corpus/core/docs/content/locales/zh-TW/external-agents.md +146 -146
- package/corpus/core/docs/content/locales/zh-TW/faq.md +43 -43
- package/corpus/core/docs/content/locales/zh-TW/file-uploads.md +11 -11
- package/corpus/core/docs/content/locales/zh-TW/frames.md +33 -33
- package/corpus/core/docs/content/locales/zh-TW/getting-started.md +28 -28
- package/corpus/core/docs/content/locales/zh-TW/harness-agents.md +78 -78
- package/corpus/core/docs/content/locales/zh-TW/human-approval.md +27 -27
- package/corpus/core/docs/content/locales/zh-TW/internationalization.md +19 -19
- package/corpus/core/docs/content/locales/zh-TW/key-concepts.md +68 -68
- package/corpus/core/docs/content/locales/zh-TW/local-file-mode.md +50 -50
- package/corpus/core/docs/content/locales/zh-TW/mcp-apps.md +38 -38
- package/corpus/core/docs/content/locales/zh-TW/mcp-clients.md +67 -67
- package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.md +50 -50
- package/corpus/core/docs/content/locales/zh-TW/messaging.md +99 -99
- package/corpus/core/docs/content/locales/zh-TW/migration-workbench.md +6 -6
- package/corpus/core/docs/content/locales/zh-TW/multi-app-workspace.md +39 -39
- package/corpus/core/docs/content/locales/zh-TW/multi-tenancy.md +7 -7
- package/corpus/core/docs/content/locales/zh-TW/native-chat-ui.md +38 -38
- package/corpus/core/docs/content/locales/zh-TW/notifications.md +23 -23
- package/corpus/core/docs/content/locales/zh-TW/observability.md +49 -49
- package/corpus/core/docs/content/locales/zh-TW/observational-memory.md +23 -23
- package/corpus/core/docs/content/locales/zh-TW/onboarding.md +40 -40
- package/corpus/core/docs/content/locales/zh-TW/plan-plugin.md +37 -37
- package/corpus/core/docs/content/locales/zh-TW/pr-visual-recap.md +72 -72
- package/corpus/core/docs/content/locales/zh-TW/processors.md +17 -17
- package/corpus/core/docs/content/locales/zh-TW/progress.md +15 -15
- package/corpus/core/docs/content/locales/zh-TW/pure-agent-apps.md +10 -10
- package/corpus/core/docs/content/locales/zh-TW/real-time-collaboration.md +103 -103
- package/corpus/core/docs/content/locales/zh-TW/recurring-jobs.md +19 -19
- package/corpus/core/docs/content/locales/zh-TW/routing.md +9 -9
- package/corpus/core/docs/content/locales/zh-TW/sandbox-adapters.md +48 -48
- package/corpus/core/docs/content/locales/zh-TW/security.md +49 -49
- package/corpus/core/docs/content/locales/zh-TW/server.md +47 -47
- package/corpus/core/docs/content/locales/zh-TW/sharing.md +22 -22
- package/corpus/core/docs/content/locales/zh-TW/skills-guide.md +46 -46
- package/corpus/core/docs/content/locales/zh-TW/template-analytics.md +40 -40
- package/corpus/core/docs/content/locales/zh-TW/template-assets.md +69 -69
- package/corpus/core/docs/content/locales/zh-TW/template-brain.md +81 -81
- package/corpus/core/docs/content/locales/zh-TW/template-calendar.md +40 -40
- package/corpus/core/docs/content/locales/zh-TW/template-chat.md +27 -27
- package/corpus/core/docs/content/locales/zh-TW/template-clips.md +85 -85
- package/corpus/core/docs/content/locales/zh-TW/template-content.md +65 -66
- package/corpus/core/docs/content/locales/zh-TW/template-design.md +29 -29
- package/corpus/core/docs/content/locales/zh-TW/template-dispatch.md +51 -51
- package/corpus/core/docs/content/locales/zh-TW/template-forms.md +25 -25
- package/corpus/core/docs/content/locales/zh-TW/template-mail.md +71 -71
- package/corpus/core/docs/content/locales/zh-TW/template-plan.md +92 -92
- package/corpus/core/docs/content/locales/zh-TW/template-slides.md +52 -52
- package/corpus/core/docs/content/locales/zh-TW/template-videos.md +30 -30
- package/corpus/core/docs/content/locales/zh-TW/tracking.md +29 -29
- package/corpus/core/docs/content/locales/zh-TW/using-your-agent.md +18 -18
- package/corpus/core/docs/content/locales/zh-TW/voice-input.md +19 -19
- package/corpus/core/docs/content/locales/zh-TW/what-is-agent-native.md +61 -61
- package/corpus/core/docs/content/locales/zh-TW/workspace-connections.md +41 -41
- package/corpus/core/docs/content/locales/zh-TW/workspace-management.md +27 -27
- package/corpus/core/docs/content/locales/zh-TW/workspace.md +58 -58
- package/corpus/core/docs/content/locales/zh-TW/writing-agent-instructions.md +41 -41
- package/corpus/core/docs/content/template-clips.md +48 -2
- package/corpus/core/package.json +2 -1
- package/corpus/core/src/client/AgentPanel.tsx +27 -3
- package/corpus/core/src/deploy/build.ts +417 -42
- package/corpus/core/src/deploy/route-discovery.ts +1 -1
- package/corpus/core/src/server/edge.ts +50 -0
- package/corpus/core/src/styles/agent-native.css +93 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +44 -44
- package/corpus/core/src/vite/client.ts +1 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +5 -3
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +69 -70
- package/corpus/templates/analytics/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/assets/app/components/layout/Layout.tsx +3 -3
- package/corpus/templates/assets/app/i18n/zh-TW.ts +82 -82
- package/corpus/templates/assets/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/brain/app/components/layout/Layout.tsx +6 -4
- package/corpus/templates/brain/app/i18n/zh-TW.ts +90 -90
- package/corpus/templates/brain/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -1
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/calendar/app/i18n/zh-TW.ts +57 -57
- package/corpus/templates/calendar/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/calendar/server/lib/booking-og-fonts.ts +20 -6
- package/corpus/templates/calendar/server/lib/booking-og-image.ts +17 -9
- package/corpus/templates/chat/app/components/layout/Layout.tsx +5 -3
- package/corpus/templates/chat/app/i18n/zh-TW.ts +3 -3
- package/corpus/templates/chat/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/clips/AGENTS.md +6 -0
- package/corpus/templates/clips/actions/delete-recording-permanent.ts +7 -1
- package/corpus/templates/clips/actions/get-recording-player-data.ts +44 -2
- package/corpus/templates/clips/actions/navigate.ts +2 -0
- package/corpus/templates/clips/actions/save-bug-report-context.ts +173 -0
- package/corpus/templates/clips/actions/view-screen.ts +58 -7
- package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +9 -3
- package/corpus/templates/clips/app/hooks/use-navigation-state.ts +17 -0
- package/corpus/templates/clips/app/i18n/ar-SA.ts +31 -0
- package/corpus/templates/clips/app/i18n/de-DE.ts +32 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +32 -0
- package/corpus/templates/clips/app/i18n/es-ES.ts +32 -0
- package/corpus/templates/clips/app/i18n/fr-FR.ts +32 -0
- package/corpus/templates/clips/app/i18n/hi-IN.ts +32 -0
- package/corpus/templates/clips/app/i18n/ja-JP.ts +31 -0
- package/corpus/templates/clips/app/i18n/ko-KR.ts +32 -0
- package/corpus/templates/clips/app/i18n/pt-BR.ts +32 -0
- package/corpus/templates/clips/app/i18n/zh-CN.ts +30 -0
- package/corpus/templates/clips/app/i18n/zh-TW.ts +461 -451
- package/corpus/templates/clips/app/routes/bug-report.done.tsx +126 -0
- package/corpus/templates/clips/app/routes/bug-report.tsx +222 -0
- package/corpus/templates/clips/app/routes/record.tsx +104 -12
- package/corpus/templates/clips/changelog/2026-06-26-brief-network-blips-no-longer-block-recording-or-wrongly-pro.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-bug-report-recordings-can-keep-redacted-host-app-context-wit.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-bug-report-widgets-can-launch-clips-recordings-from-embedded.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-desktop-recording-keeps-connected-users-out-of-the-storage-s.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-if-a-recording-can-t-be-uploaded-the-chrome-extension-now-sa.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/clips/chrome-extension/public/manifest.json +9 -2
- package/corpus/templates/clips/chrome-extension/src/background.ts +43 -0
- package/corpus/templates/clips/chrome-extension/src/offscreen.ts +111 -6
- package/corpus/templates/clips/chrome-extension/src/popup.ts +18 -7
- package/corpus/templates/clips/desktop/src/app.tsx +53 -19
- package/corpus/templates/clips/server/db/schema.ts +26 -0
- package/corpus/templates/clips/server/lib/public-agent-context.ts +51 -0
- package/corpus/templates/clips/server/plugins/auth.ts +1 -0
- package/corpus/templates/clips/server/plugins/db.ts +28 -0
- package/corpus/templates/clips/server/routes/api/agent-context.json.get.ts +4 -1
- package/corpus/templates/clips/shared/bug-report.ts +161 -0
- package/corpus/templates/content/app/components/layout/Layout.tsx +10 -8
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -1
- package/corpus/templates/content/app/i18n/zh-TW.ts +67 -66
- package/corpus/templates/content/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/design/app/components/layout/Layout.tsx +3 -3
- package/corpus/templates/design/app/i18n/zh-TW.ts +44 -44
- package/corpus/templates/design/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/dispatch/app/i18n/zh-TW.ts +5 -4
- package/corpus/templates/dispatch/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/forms/app/components/layout/Layout.tsx +4 -2
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/forms/app/i18n/zh-TW.ts +48 -48
- package/corpus/templates/forms/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +3 -3
- package/corpus/templates/macros/app/i18n/zh-TW.ts +5 -5
- package/corpus/templates/macros/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/mail/app/i18n/zh-TW.ts +83 -83
- package/corpus/templates/mail/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -3
- package/corpus/templates/plan/app/i18n/zh-TW.ts +69 -69
- package/corpus/templates/plan/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/slides/app/components/layout/Layout.tsx +3 -3
- package/corpus/templates/slides/app/i18n/zh-TW.ts +64 -64
- package/corpus/templates/slides/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/videos/app/components/layout/Layout.tsx +2 -2
- package/corpus/templates/videos/app/i18n/zh-TW.ts +54 -54
- package/corpus/templates/videos/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +14 -4
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/deploy/build.d.ts +3 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +361 -37
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/route-discovery.d.ts +1 -1
- package/dist/deploy/route-discovery.js +1 -1
- package/dist/deploy/route-discovery.js.map +1 -1
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/server/edge.d.ts +11 -0
- package/dist/server/edge.d.ts.map +1 -0
- package/dist/server/edge.js +11 -0
- package/dist/server/edge.js.map +1 -0
- package/dist/styles/agent-native.css +93 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +44 -44
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +1 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/locales/zh-TW/a2a-protocol.md +68 -68
- package/docs/content/locales/zh-TW/actions.md +82 -82
- package/docs/content/locales/zh-TW/agent-mentions.md +22 -22
- package/docs/content/locales/zh-TW/agent-surfaces.md +82 -82
- package/docs/content/locales/zh-TW/agent-teams.md +29 -29
- package/docs/content/locales/zh-TW/agent-web-surfaces.md +11 -11
- package/docs/content/locales/zh-TW/audit-log.md +16 -16
- package/docs/content/locales/zh-TW/authentication.md +32 -32
- package/docs/content/locales/zh-TW/automations.md +32 -32
- package/docs/content/locales/zh-TW/blueprint-installer.md +19 -19
- package/docs/content/locales/zh-TW/cli-adapters.md +17 -17
- package/docs/content/locales/zh-TW/client.md +62 -62
- package/docs/content/locales/zh-TW/cloneable-saas.md +32 -32
- package/docs/content/locales/zh-TW/code-agents-ui.md +91 -91
- package/docs/content/locales/zh-TW/components.md +51 -51
- package/docs/content/locales/zh-TW/context-awareness.md +66 -66
- package/docs/content/locales/zh-TW/creating-templates.md +39 -39
- package/docs/content/locales/zh-TW/cross-app-sso.md +29 -29
- package/docs/content/locales/zh-TW/database.md +21 -21
- package/docs/content/locales/zh-TW/deployment.md +37 -37
- package/docs/content/locales/zh-TW/dispatch.md +43 -43
- package/docs/content/locales/zh-TW/drop-in-agent.md +34 -34
- package/docs/content/locales/zh-TW/durable-resume.md +18 -18
- package/docs/content/locales/zh-TW/embedding-sdk.md +73 -73
- package/docs/content/locales/zh-TW/evals.md +16 -16
- package/docs/content/locales/zh-TW/extensions.md +81 -81
- package/docs/content/locales/zh-TW/external-agents.md +146 -146
- package/docs/content/locales/zh-TW/faq.md +43 -43
- package/docs/content/locales/zh-TW/file-uploads.md +11 -11
- package/docs/content/locales/zh-TW/frames.md +33 -33
- package/docs/content/locales/zh-TW/getting-started.md +28 -28
- package/docs/content/locales/zh-TW/harness-agents.md +78 -78
- package/docs/content/locales/zh-TW/human-approval.md +27 -27
- package/docs/content/locales/zh-TW/internationalization.md +19 -19
- package/docs/content/locales/zh-TW/key-concepts.md +68 -68
- package/docs/content/locales/zh-TW/local-file-mode.md +50 -50
- package/docs/content/locales/zh-TW/mcp-apps.md +38 -38
- package/docs/content/locales/zh-TW/mcp-clients.md +67 -67
- package/docs/content/locales/zh-TW/mcp-protocol.md +50 -50
- package/docs/content/locales/zh-TW/messaging.md +99 -99
- package/docs/content/locales/zh-TW/migration-workbench.md +6 -6
- package/docs/content/locales/zh-TW/multi-app-workspace.md +39 -39
- package/docs/content/locales/zh-TW/multi-tenancy.md +7 -7
- package/docs/content/locales/zh-TW/native-chat-ui.md +38 -38
- package/docs/content/locales/zh-TW/notifications.md +23 -23
- package/docs/content/locales/zh-TW/observability.md +49 -49
- package/docs/content/locales/zh-TW/observational-memory.md +23 -23
- package/docs/content/locales/zh-TW/onboarding.md +40 -40
- package/docs/content/locales/zh-TW/plan-plugin.md +37 -37
- package/docs/content/locales/zh-TW/pr-visual-recap.md +72 -72
- package/docs/content/locales/zh-TW/processors.md +17 -17
- package/docs/content/locales/zh-TW/progress.md +15 -15
- package/docs/content/locales/zh-TW/pure-agent-apps.md +10 -10
- package/docs/content/locales/zh-TW/real-time-collaboration.md +103 -103
- package/docs/content/locales/zh-TW/recurring-jobs.md +19 -19
- package/docs/content/locales/zh-TW/routing.md +9 -9
- package/docs/content/locales/zh-TW/sandbox-adapters.md +48 -48
- package/docs/content/locales/zh-TW/security.md +49 -49
- package/docs/content/locales/zh-TW/server.md +47 -47
- package/docs/content/locales/zh-TW/sharing.md +22 -22
- package/docs/content/locales/zh-TW/skills-guide.md +46 -46
- package/docs/content/locales/zh-TW/template-analytics.md +40 -40
- package/docs/content/locales/zh-TW/template-assets.md +69 -69
- package/docs/content/locales/zh-TW/template-brain.md +81 -81
- package/docs/content/locales/zh-TW/template-calendar.md +40 -40
- package/docs/content/locales/zh-TW/template-chat.md +27 -27
- package/docs/content/locales/zh-TW/template-clips.md +85 -85
- package/docs/content/locales/zh-TW/template-content.md +65 -66
- package/docs/content/locales/zh-TW/template-design.md +29 -29
- package/docs/content/locales/zh-TW/template-dispatch.md +51 -51
- package/docs/content/locales/zh-TW/template-forms.md +25 -25
- package/docs/content/locales/zh-TW/template-mail.md +71 -71
- package/docs/content/locales/zh-TW/template-plan.md +92 -92
- package/docs/content/locales/zh-TW/template-slides.md +52 -52
- package/docs/content/locales/zh-TW/template-videos.md +30 -30
- package/docs/content/locales/zh-TW/tracking.md +29 -29
- package/docs/content/locales/zh-TW/using-your-agent.md +18 -18
- package/docs/content/locales/zh-TW/voice-input.md +19 -19
- package/docs/content/locales/zh-TW/what-is-agent-native.md +61 -61
- package/docs/content/locales/zh-TW/workspace-connections.md +41 -41
- package/docs/content/locales/zh-TW/workspace-management.md +27 -27
- package/docs/content/locales/zh-TW/workspace.md +58 -58
- package/docs/content/locales/zh-TW/writing-agent-instructions.md +41 -41
- package/docs/content/template-clips.md +48 -2
- package/package.json +2 -1
- package/src/templates/default/app/i18n/zh-TW.ts +44 -44
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
export const BUG_REPORT_QUERY_FLAG = "bugReport";
|
|
2
|
+
|
|
3
|
+
export const BUG_REPORT_SEVERITIES = [
|
|
4
|
+
"low",
|
|
5
|
+
"normal",
|
|
6
|
+
"high",
|
|
7
|
+
"urgent",
|
|
8
|
+
] as const;
|
|
9
|
+
|
|
10
|
+
export type BugReportSeverity = (typeof BUG_REPORT_SEVERITIES)[number];
|
|
11
|
+
|
|
12
|
+
export interface BugReportContext {
|
|
13
|
+
projectId: string | null;
|
|
14
|
+
title: string | null;
|
|
15
|
+
description: string | null;
|
|
16
|
+
severity: BugReportSeverity;
|
|
17
|
+
sourceUrl: string | null;
|
|
18
|
+
pageTitle: string | null;
|
|
19
|
+
appVersion: string | null;
|
|
20
|
+
environment: string | null;
|
|
21
|
+
reporterEmail: string | null;
|
|
22
|
+
reporterName: string | null;
|
|
23
|
+
reporterId: string | null;
|
|
24
|
+
metadata: Record<string, unknown> | null;
|
|
25
|
+
returnUrl: string | null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const PARAMS = {
|
|
29
|
+
projectId: "projectId",
|
|
30
|
+
title: "title",
|
|
31
|
+
description: "description",
|
|
32
|
+
severity: "severity",
|
|
33
|
+
sourceUrl: "sourceUrl",
|
|
34
|
+
pageTitle: "pageTitle",
|
|
35
|
+
appVersion: "appVersion",
|
|
36
|
+
environment: "environment",
|
|
37
|
+
reporterEmail: "reporterEmail",
|
|
38
|
+
reporterName: "reporterName",
|
|
39
|
+
reporterId: "reporterId",
|
|
40
|
+
metadata: "metadata",
|
|
41
|
+
returnUrl: "returnUrl",
|
|
42
|
+
} as const;
|
|
43
|
+
|
|
44
|
+
function prefixed(key: string): string {
|
|
45
|
+
return `bugReport${key[0]?.toUpperCase() ?? ""}${key.slice(1)}`;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function clean(value: string | null, max = 1000): string | null {
|
|
49
|
+
const trimmed = value?.trim() ?? "";
|
|
50
|
+
if (!trimmed) return null;
|
|
51
|
+
return trimmed.length > max ? trimmed.slice(0, max) : trimmed;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function param(
|
|
55
|
+
params: URLSearchParams,
|
|
56
|
+
key: keyof typeof PARAMS,
|
|
57
|
+
allowLoose: boolean,
|
|
58
|
+
): string | null {
|
|
59
|
+
const raw = params.get(prefixed(PARAMS[key]));
|
|
60
|
+
if (raw !== null) return raw;
|
|
61
|
+
return allowLoose ? params.get(PARAMS[key]) : null;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function parseSeverity(value: string | null): BugReportSeverity {
|
|
65
|
+
return BUG_REPORT_SEVERITIES.includes(value as BugReportSeverity)
|
|
66
|
+
? (value as BugReportSeverity)
|
|
67
|
+
: "normal";
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function parseMetadata(raw: string | null): Record<string, unknown> | null {
|
|
71
|
+
const value = clean(raw, 12_000);
|
|
72
|
+
if (!value) return null;
|
|
73
|
+
try {
|
|
74
|
+
const parsed = JSON.parse(value);
|
|
75
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
76
|
+
return parsed as Record<string, unknown>;
|
|
77
|
+
}
|
|
78
|
+
} catch {
|
|
79
|
+
return { note: value };
|
|
80
|
+
}
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function hasBugReportQuery(
|
|
85
|
+
params: URLSearchParams,
|
|
86
|
+
options: { allowLoose?: boolean } = {},
|
|
87
|
+
): boolean {
|
|
88
|
+
if (params.get(BUG_REPORT_QUERY_FLAG) === "1") return true;
|
|
89
|
+
if (params.get("intent") === "bug-report") return true;
|
|
90
|
+
for (const key of params.keys()) {
|
|
91
|
+
if (key.startsWith("bugReport") && key !== BUG_REPORT_QUERY_FLAG) {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
if (
|
|
95
|
+
options.allowLoose &&
|
|
96
|
+
Object.values(PARAMS).includes(
|
|
97
|
+
key as (typeof PARAMS)[keyof typeof PARAMS],
|
|
98
|
+
)
|
|
99
|
+
) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export function parseBugReportContext(
|
|
107
|
+
params: URLSearchParams,
|
|
108
|
+
options: { allowLoose?: boolean } = {},
|
|
109
|
+
): BugReportContext | null {
|
|
110
|
+
const allowLoose = options.allowLoose ?? false;
|
|
111
|
+
if (!hasBugReportQuery(params, { allowLoose })) return null;
|
|
112
|
+
|
|
113
|
+
return {
|
|
114
|
+
projectId: clean(param(params, "projectId", allowLoose), 120),
|
|
115
|
+
title: clean(param(params, "title", allowLoose), 500),
|
|
116
|
+
description: clean(param(params, "description", allowLoose), 5000),
|
|
117
|
+
severity: parseSeverity(param(params, "severity", allowLoose)),
|
|
118
|
+
sourceUrl: clean(param(params, "sourceUrl", allowLoose), 8000),
|
|
119
|
+
pageTitle: clean(param(params, "pageTitle", allowLoose), 500),
|
|
120
|
+
appVersion: clean(param(params, "appVersion", allowLoose), 120),
|
|
121
|
+
environment: clean(param(params, "environment", allowLoose), 120),
|
|
122
|
+
reporterEmail: clean(param(params, "reporterEmail", allowLoose), 320),
|
|
123
|
+
reporterName: clean(param(params, "reporterName", allowLoose), 200),
|
|
124
|
+
reporterId: clean(param(params, "reporterId", allowLoose), 200),
|
|
125
|
+
metadata: parseMetadata(param(params, "metadata", allowLoose)),
|
|
126
|
+
returnUrl: clean(param(params, "returnUrl", allowLoose), 8000),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export function bugReportContextToSearchParams(
|
|
131
|
+
context: BugReportContext,
|
|
132
|
+
): URLSearchParams {
|
|
133
|
+
const params = new URLSearchParams();
|
|
134
|
+
params.set(BUG_REPORT_QUERY_FLAG, "1");
|
|
135
|
+
const append = (key: keyof typeof PARAMS, value: string | null) => {
|
|
136
|
+
if (value) params.set(prefixed(PARAMS[key]), value);
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
append("projectId", context.projectId);
|
|
140
|
+
append("title", context.title);
|
|
141
|
+
append("description", context.description);
|
|
142
|
+
append("severity", context.severity);
|
|
143
|
+
append("sourceUrl", context.sourceUrl);
|
|
144
|
+
append("pageTitle", context.pageTitle);
|
|
145
|
+
append("appVersion", context.appVersion);
|
|
146
|
+
append("environment", context.environment);
|
|
147
|
+
append("reporterEmail", context.reporterEmail);
|
|
148
|
+
append("reporterName", context.reporterName);
|
|
149
|
+
append("reporterId", context.reporterId);
|
|
150
|
+
append("returnUrl", context.returnUrl);
|
|
151
|
+
if (context.metadata) {
|
|
152
|
+
params.set(prefixed(PARAMS.metadata), JSON.stringify(context.metadata));
|
|
153
|
+
}
|
|
154
|
+
return params;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export function bugReportTitle(context: BugReportContext | null): string {
|
|
158
|
+
return (
|
|
159
|
+
context?.title || context?.pageTitle || context?.sourceUrl || "Bug report"
|
|
160
|
+
);
|
|
161
|
+
}
|
|
@@ -110,7 +110,7 @@ export function Layout({ children }: LayoutProps) {
|
|
|
110
110
|
|
|
111
111
|
return (
|
|
112
112
|
<HeaderActionsProvider>
|
|
113
|
-
<div className="flex h-screen overflow-hidden bg-background">
|
|
113
|
+
<div className="agent-layout-shell flex h-screen overflow-hidden bg-background">
|
|
114
114
|
{isMobile ? (
|
|
115
115
|
<>
|
|
116
116
|
<Sheet open={mobileSidebarOpen} onOpenChange={setMobileSidebarOpen}>
|
|
@@ -139,13 +139,15 @@ export function Layout({ children }: LayoutProps) {
|
|
|
139
139
|
)}
|
|
140
140
|
</>
|
|
141
141
|
) : (
|
|
142
|
-
<
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
142
|
+
<div className="agent-layout-left-drawer flex shrink-0">
|
|
143
|
+
<DocumentSidebar
|
|
144
|
+
activeDocumentId={activeDocumentId}
|
|
145
|
+
collapsed={sidebarCollapsed}
|
|
146
|
+
onToggleCollapsed={() => setSidebarCollapsed((c) => !c)}
|
|
147
|
+
width={sidebarWidth}
|
|
148
|
+
onResize={handleSidebarResize}
|
|
149
|
+
/>
|
|
150
|
+
</div>
|
|
149
151
|
)}
|
|
150
152
|
<AgentSidebar
|
|
151
153
|
position="right"
|
|
@@ -763,7 +763,7 @@ export function DocumentSidebar({
|
|
|
763
763
|
return (
|
|
764
764
|
<div
|
|
765
765
|
className={cn(
|
|
766
|
-
"relative flex h-full min-h-0 flex-col border-e border-border bg-muted/30",
|
|
766
|
+
"agent-layout-left-drawer relative flex h-full min-h-0 flex-col border-e border-border bg-muted/30",
|
|
767
767
|
width === undefined && "w-full",
|
|
768
768
|
)}
|
|
769
769
|
style={width === undefined ? undefined : { width, flexShrink: 0 }}
|
|
@@ -4,9 +4,10 @@ const messages = {
|
|
|
4
4
|
commandSearchDocuments: "搜尋檔案",
|
|
5
5
|
commandAppearance: "外觀",
|
|
6
6
|
toggleTheme: "切換主題",
|
|
7
|
-
metaTitle:
|
|
7
|
+
metaTitle:
|
|
8
|
+
"Agent-Native Content - 開放原始碼且代理友善的 Obsidian 替代方案",
|
|
8
9
|
metaDescription:
|
|
9
|
-
"
|
|
10
|
+
"開放原始碼 MDX 編輯器,適用於本機文件、知識庫和內容系統,具備自訂區塊和代理輔助編輯。",
|
|
10
11
|
},
|
|
11
12
|
theme: {
|
|
12
13
|
system: "系統主題",
|
|
@@ -76,7 +77,7 @@ const messages = {
|
|
|
76
77
|
comment: "評論",
|
|
77
78
|
pasteLink: "貼上連結...",
|
|
78
79
|
apply: "應用",
|
|
79
|
-
plainText: "
|
|
80
|
+
plainText: "純文字",
|
|
80
81
|
searchLanguages: "搜尋語言...",
|
|
81
82
|
noBlocksFields: "沒有 Blocks 欄位。請從屬性選單新增一個。",
|
|
82
83
|
noDocumentSelected: "未選取檔案",
|
|
@@ -93,7 +94,7 @@ const messages = {
|
|
|
93
94
|
enterToSubmit: "輸入提交",
|
|
94
95
|
failedToCreateDatabase: "建立資料庫失敗",
|
|
95
96
|
failedToCreatePage: "建立頁面失敗",
|
|
96
|
-
generateWithAi: "
|
|
97
|
+
generateWithAi: "用人工智慧生成",
|
|
97
98
|
dropMedia: "拖放媒體",
|
|
98
99
|
editLink: "編輯連結",
|
|
99
100
|
emojiAddIcon: "新增圖示",
|
|
@@ -142,24 +143,24 @@ const messages = {
|
|
|
142
143
|
versionRestored: "版本已還原。",
|
|
143
144
|
versionSavedAutomatically: "編輯時會自動儲存版本。",
|
|
144
145
|
media: {
|
|
145
|
-
addAltTextDescription: "
|
|
146
|
+
addAltTextDescription: "新增替代文字來描述該圖片。",
|
|
146
147
|
addAudio: "新增音訊",
|
|
147
148
|
addImage: "新增圖片",
|
|
148
149
|
addVideo: "新增影片",
|
|
149
|
-
altText: "
|
|
150
|
-
altTextGenerationFailed: "
|
|
150
|
+
altText: "替代文字",
|
|
151
|
+
altTextGenerationFailed: "無法啟動替代文字生成。",
|
|
151
152
|
assets: "資產",
|
|
152
153
|
assetsImagePicker: "資產圖片選取器",
|
|
153
|
-
assetsMissingImageUrl: "
|
|
154
|
+
assetsMissingImageUrl: "資產未傳回圖片 URL。",
|
|
154
155
|
audio: "音訊",
|
|
155
156
|
audioAdded: "新增了音訊",
|
|
156
157
|
audioDownloadStarted: "音訊下載開始。",
|
|
157
158
|
audioLinkHint: "適用於網路上的直接音訊連結",
|
|
158
159
|
audioPreview: "音訊預覽",
|
|
159
|
-
audioView: "
|
|
160
|
+
audioView: "音訊檢視",
|
|
160
161
|
chooseFromAssets: "從資產中選取",
|
|
161
|
-
clickToEditAltText: "
|
|
162
|
-
closeAltTextEditor: "
|
|
162
|
+
clickToEditAltText: "點選可檢視和編輯替代文字",
|
|
163
|
+
closeAltTextEditor: "關閉替代文字編輯器",
|
|
163
164
|
closeAudioPreview: "關閉音訊預覽",
|
|
164
165
|
closeImagePreview: "關閉圖片預覽",
|
|
165
166
|
closeVideoPreview: "關閉影片預覽",
|
|
@@ -189,8 +190,8 @@ const messages = {
|
|
|
189
190
|
expandAudio: "展開音訊",
|
|
190
191
|
expandImage: "展開圖片",
|
|
191
192
|
expandVideo: "展開影片",
|
|
192
|
-
generateAltText: "
|
|
193
|
-
generatingAltText: "
|
|
193
|
+
generateAltText: "生成替代文字",
|
|
194
|
+
generatingAltText: "正在生成替代文字...",
|
|
194
195
|
image: "圖片",
|
|
195
196
|
imageAdded: "圖片已新增",
|
|
196
197
|
imageCommentWithAlt: "圖片:{{alt}}",
|
|
@@ -227,7 +228,7 @@ const messages = {
|
|
|
227
228
|
transcribe: "轉錄",
|
|
228
229
|
transcribingAudio: "正在轉錄音訊...",
|
|
229
230
|
transcribingVideo: "正在轉錄影片...",
|
|
230
|
-
transcript: "
|
|
231
|
+
transcript: "逐字稿",
|
|
231
232
|
transcriptBlockFailed: "無法新增轉錄塊。",
|
|
232
233
|
transcriptionStarted: "轉錄開始了。",
|
|
233
234
|
upload: "上傳",
|
|
@@ -241,12 +242,12 @@ const messages = {
|
|
|
241
242
|
videoLinkHint: "適用於網路上的直接影片連結",
|
|
242
243
|
videoPreview: "影片預覽",
|
|
243
244
|
videoView: "影片觀看",
|
|
244
|
-
viewAndEditAltText: "
|
|
245
|
+
viewAndEditAltText: "檢視和編輯替代文字",
|
|
245
246
|
zoomImageIn: "放大圖片",
|
|
246
247
|
zoomImageOut: "縮小圖片",
|
|
247
248
|
zoomIn: "放大",
|
|
248
249
|
zoomOut: "縮小",
|
|
249
|
-
generateAltTextPrompt: "
|
|
250
|
+
generateAltTextPrompt: "為這張圖片生成替代文字,並將其新增到圖片中。",
|
|
250
251
|
transcribeAudioPrompt: "轉錄這段音訊,並將轉錄內容新增到下方。",
|
|
251
252
|
transcribeVideoPrompt: "轉錄這段影片,並將轉錄內容新增到下方。",
|
|
252
253
|
},
|
|
@@ -321,7 +322,7 @@ const messages = {
|
|
|
321
322
|
removeFileOrMedia: "刪除 {{name}}",
|
|
322
323
|
removeOption: "刪除選項 {{name}}",
|
|
323
324
|
removePerson: "刪除 {{name}}",
|
|
324
|
-
renameOption: "
|
|
325
|
+
renameOption: "重新命名選項 {{name}}",
|
|
325
326
|
save: "儲存",
|
|
326
327
|
searchOrAddPerson: "搜尋或新增人員",
|
|
327
328
|
searchOrCreateOption: "搜尋或建立選項",
|
|
@@ -337,8 +338,8 @@ const messages = {
|
|
|
337
338
|
today: "今天",
|
|
338
339
|
tomorrow: "明天",
|
|
339
340
|
type: "型別",
|
|
340
|
-
uncheck: "
|
|
341
|
-
unchecked: "
|
|
341
|
+
uncheck: "取消選取",
|
|
342
|
+
unchecked: "未選取",
|
|
342
343
|
upload: "上傳",
|
|
343
344
|
visibility: "能見度",
|
|
344
345
|
},
|
|
@@ -347,8 +348,8 @@ const messages = {
|
|
|
347
348
|
audioDescription: "上傳或嵌入音訊",
|
|
348
349
|
basicBlocks: "基本塊",
|
|
349
350
|
blocks: "積木",
|
|
350
|
-
bulletedList: "
|
|
351
|
-
bulletedListDescription: "
|
|
351
|
+
bulletedList: "專案符號清單",
|
|
352
|
+
bulletedListDescription: "無序清單",
|
|
352
353
|
callout: "標注",
|
|
353
354
|
calloutDescription: "突出顯示的資訊塊",
|
|
354
355
|
codeBlock: "程式碼塊",
|
|
@@ -359,7 +360,7 @@ const messages = {
|
|
|
359
360
|
divider: "分頻器",
|
|
360
361
|
dividerDescription: "水平尺",
|
|
361
362
|
generate: "生成",
|
|
362
|
-
generateDescription: "利用 AI
|
|
363
|
+
generateDescription: "利用 AI 產生內容",
|
|
363
364
|
heading1Description: "大標題",
|
|
364
365
|
heading2Description: "中標題",
|
|
365
366
|
heading3Description: "小標題",
|
|
@@ -368,8 +369,8 @@ const messages = {
|
|
|
368
369
|
imageDescription: "上傳或嵌入圖片",
|
|
369
370
|
localComponents: "本機元件",
|
|
370
371
|
media: "媒體",
|
|
371
|
-
numberedList: "
|
|
372
|
-
numberedListDescription: "
|
|
372
|
+
numberedList: "編號清單",
|
|
373
|
+
numberedListDescription: "有序清單",
|
|
373
374
|
page: "頁面",
|
|
374
375
|
pageDescription: "建立子頁面",
|
|
375
376
|
pages: "頁面數",
|
|
@@ -378,7 +379,7 @@ const messages = {
|
|
|
378
379
|
table: "表",
|
|
379
380
|
tableDescription: "新增表格",
|
|
380
381
|
text: "文字",
|
|
381
|
-
textDescription: "
|
|
382
|
+
textDescription: "純文字塊",
|
|
382
383
|
todoList: "待辦事項清單",
|
|
383
384
|
todoListDescription: "檢查清單專案",
|
|
384
385
|
toggle: "切換",
|
|
@@ -444,7 +445,7 @@ const messages = {
|
|
|
444
445
|
notionPageUrlOrId: "Notion 頁面 URL 或頁面 ID",
|
|
445
446
|
open: "開啟",
|
|
446
447
|
openInNotion: "在概念中開啟",
|
|
447
|
-
orgCanFindAndView: "
|
|
448
|
+
orgCanFindAndView: "您組織中的任何人都可以尋找和檢視",
|
|
448
449
|
orgLinkCanView: "您組織中知道該連結的任何人都可以檢視",
|
|
449
450
|
pageBreadcrumb: "頁面面包屑",
|
|
450
451
|
printDialogOpened: "列印對話框開啟",
|
|
@@ -462,14 +463,14 @@ const messages = {
|
|
|
462
463
|
revealedLocalFile: "顯示本機檔案",
|
|
463
464
|
searchNotionPages: "搜尋概念頁面...",
|
|
464
465
|
setUpNotion: "樹立觀念",
|
|
465
|
-
setUpNotionFirst: "首先在側邊欄中設定 Notion - 點選 Notion
|
|
466
|
+
setUpNotionFirst: "首先在側邊欄中設定 Notion - 點選 Notion 圖示。",
|
|
466
467
|
setUpNotionToSync: "設定 Notion 來同步此檔案。",
|
|
467
468
|
pasteNotionPageUrlOrId: "貼上 Notion 頁面 URL 或頁面 ID。",
|
|
468
469
|
pasteNotionPageUrlOrIdToLink:
|
|
469
470
|
"貼上 Notion 頁面 URL 或頁面 ID 以連結此檔案。",
|
|
470
471
|
share: "分享",
|
|
471
472
|
shareableCopyReady: "可共用副本已準備就緒",
|
|
472
|
-
shareableCopyReadyDescription: "
|
|
473
|
+
shareableCopyReadyDescription: "該副本儲存在資料庫中以供共用。",
|
|
473
474
|
shareableCopyWasNotCreated: "未建立可共用副本。",
|
|
474
475
|
unlink: "取消連結",
|
|
475
476
|
disconnect: "斷開連線",
|
|
@@ -487,10 +488,10 @@ const messages = {
|
|
|
487
488
|
askAi: "詢問 AI",
|
|
488
489
|
resolve: "解決",
|
|
489
490
|
resolved: "已解決({{count}})",
|
|
490
|
-
reply: "
|
|
491
|
+
reply: "回覆...",
|
|
491
492
|
reopen: "重新開啟",
|
|
492
493
|
agentRegardingText: "關於這段文字:“{{text}}”",
|
|
493
|
-
agentThreadHeader: "
|
|
494
|
+
agentThreadHeader: "評論對話串:",
|
|
494
495
|
agentHelp: "請幫忙處理這個。",
|
|
495
496
|
},
|
|
496
497
|
publicDocument: {
|
|
@@ -503,7 +504,7 @@ const messages = {
|
|
|
503
504
|
database: {
|
|
504
505
|
addAnotherSource: "新增另一個來源",
|
|
505
506
|
agentNativeApps: "Agent-Native 應用",
|
|
506
|
-
addDatabaseView: "
|
|
507
|
+
addDatabaseView: "新增資料庫檢視",
|
|
507
508
|
addProperty: "新增屬性",
|
|
508
509
|
back: "返回",
|
|
509
510
|
builderSpace: "Builder 空間",
|
|
@@ -514,17 +515,17 @@ const messages = {
|
|
|
514
515
|
databaseRowsAndLocalPropertiesWereKeptIntact: "資料庫行和本機屬性已保留。",
|
|
515
516
|
failedToDeleteRow: "刪除行失敗",
|
|
516
517
|
failedToDeleteSelectedRows: "刪除所選行失敗",
|
|
517
|
-
failedToDuplicateEverySelectedRow: "
|
|
518
|
+
failedToDuplicateEverySelectedRow: "未能複製所有選取行",
|
|
518
519
|
failedToDuplicateRow: "複製行失敗",
|
|
519
520
|
failedToMoveCard: "行動卡片失敗",
|
|
520
521
|
failedToMoveRow: "行動行失敗",
|
|
521
|
-
failedToSavePageIcon: "
|
|
522
|
+
failedToSavePageIcon: "儲存頁面圖示失敗",
|
|
522
523
|
failedToSavePagePreview: "儲存頁面預覽失敗",
|
|
523
524
|
failedToUpdateCheckbox: "更新核取方塊失敗",
|
|
524
|
-
failedToUpdateEverySelectedRow: "
|
|
525
|
-
filter: "
|
|
525
|
+
failedToUpdateEverySelectedRow: "未能更新所有選取行",
|
|
526
|
+
filter: "篩選",
|
|
526
527
|
group: "分組",
|
|
527
|
-
click: "
|
|
528
|
+
click: "點選",
|
|
528
529
|
column: "列",
|
|
529
530
|
columnOptions: "列選項",
|
|
530
531
|
clearColumn: "清空列",
|
|
@@ -543,16 +544,16 @@ const messages = {
|
|
|
543
544
|
nameColumnMenu: "名稱列選單",
|
|
544
545
|
newBoardGroupName: "新看板分組名稱",
|
|
545
546
|
newDatabaseGalleryCardTitle: "新資料庫畫廊卡片標題",
|
|
546
|
-
newDatabaseListItemTitle: "
|
|
547
|
+
newDatabaseListItemTitle: "新資料庫清單項標題",
|
|
547
548
|
newDatabaseRow: "新資料庫行",
|
|
548
549
|
newGroup: "新分組",
|
|
549
550
|
newPage: "新頁面",
|
|
550
551
|
newProperty: "新屬性",
|
|
551
|
-
newViewName: "
|
|
552
|
+
newViewName: "新檢視名稱",
|
|
552
553
|
nextDatabasePage: "下一頁面資料庫頁面",
|
|
553
554
|
nextMonth: "下個月",
|
|
554
555
|
nextTimelineRange: "下一個時間線範圍",
|
|
555
|
-
noRowsMatchThisView: "
|
|
556
|
+
noRowsMatchThisView: "沒有行匹配此檢視",
|
|
556
557
|
oneFileOrMediaLinkPerLine: "每行一個檔案或媒體連結",
|
|
557
558
|
previewPageTitle: "預覽頁面標題",
|
|
558
559
|
previousDatabasePage: "上一頁面資料庫頁面",
|
|
@@ -574,8 +575,8 @@ const messages = {
|
|
|
574
575
|
sourceWasNotDisconnected: "來源未斷開連線",
|
|
575
576
|
sources: "來源",
|
|
576
577
|
table: "表格",
|
|
577
|
-
tableColumnHandle: "
|
|
578
|
-
tableRowHandle: "
|
|
578
|
+
tableColumnHandle: "點選或拖動表格列手柄",
|
|
579
|
+
tableRowHandle: "點選或拖動表格行手柄",
|
|
579
580
|
toAddAColumn: "以新增列。",
|
|
580
581
|
toAddARow: "以新增行。",
|
|
581
582
|
toAddOrRemoveColumns: "以新增或移除列。",
|
|
@@ -583,13 +584,13 @@ const messages = {
|
|
|
583
584
|
tryAgain: "請重試。",
|
|
584
585
|
untitled: "無標題",
|
|
585
586
|
value: "值",
|
|
586
|
-
viewName: "
|
|
587
|
+
viewName: "檢視名稱",
|
|
587
588
|
wrapAllContent: "換行顯示所有內容",
|
|
588
|
-
addADatePropertyToUseCalendarView: "
|
|
589
|
-
addADatePropertyToUseTimelineView: "
|
|
589
|
+
addADatePropertyToUseCalendarView: "新增日期屬性以使用行事曆檢視。",
|
|
590
|
+
addADatePropertyToUseTimelineView: "新增日期屬性以使用時間線檢視。",
|
|
590
591
|
addAStatusSelectMultiSelectOrCheckbox2:
|
|
591
592
|
"新增狀態、選取、多選或核取方塊屬性來為此看板分組。",
|
|
592
|
-
addFilter: "
|
|
593
|
+
addFilter: "新增篩選器",
|
|
593
594
|
addSort: "新增排序",
|
|
594
595
|
allModels: "所有模型",
|
|
595
596
|
alreadyAttached: "已附加",
|
|
@@ -606,8 +607,8 @@ const messages = {
|
|
|
606
607
|
checkingBuilderConnection: "正在檢查 Builder 連線",
|
|
607
608
|
clear: "清除",
|
|
608
609
|
clearAll: "全部清除",
|
|
609
|
-
clearFilters: "
|
|
610
|
-
clearSearchAndFilters: "
|
|
610
|
+
clearFilters: "清除篩選器",
|
|
611
|
+
clearSearchAndFilters: "清除搜尋和篩選器",
|
|
611
612
|
clearSort: "清除排序",
|
|
612
613
|
clearSorts: "清除排序",
|
|
613
614
|
clearValue: "清除值",
|
|
@@ -624,11 +625,11 @@ const messages = {
|
|
|
624
625
|
deleteRow: "刪除行",
|
|
625
626
|
deleteRow2: "刪除行?",
|
|
626
627
|
deleteSelectedRows: "刪除所選行?",
|
|
627
|
-
deleteView: "
|
|
628
|
-
disconnectSource: "
|
|
628
|
+
deleteView: "刪除檢視",
|
|
629
|
+
disconnectSource: "斷開放原始碼",
|
|
629
630
|
duplicate: "Duplicate",
|
|
630
631
|
duplicateRow: "複製行",
|
|
631
|
-
duplicateView: "
|
|
632
|
+
duplicateView: "複製檢視",
|
|
632
633
|
empty: "空",
|
|
633
634
|
endDate: "結束日期",
|
|
634
635
|
enterAValidNumber: "請輸入有效數字。",
|
|
@@ -636,27 +637,27 @@ const messages = {
|
|
|
636
637
|
existingSourceNormalize: "現有來源 · 規範化",
|
|
637
638
|
expandAll: "全部展開",
|
|
638
639
|
expandAllGroups: "展開所有分組",
|
|
639
|
-
filterRowsWhere: "
|
|
640
|
+
filterRowsWhere: "篩選滿足條件的行",
|
|
640
641
|
gallery: "Gallery",
|
|
641
642
|
groupBy: "分組依據",
|
|
642
643
|
groupName: "分組名稱",
|
|
643
644
|
hideAll: "全部隱藏",
|
|
644
|
-
hideInView: "
|
|
645
|
+
hideInView: "在檢視中隱藏",
|
|
645
646
|
integrations: "Integrations",
|
|
646
647
|
list: "List",
|
|
647
|
-
liveWritesOn: "
|
|
648
|
+
liveWritesOn: "即時寫入已開啟",
|
|
648
649
|
loadingBoard: "正在載入看板",
|
|
649
650
|
loadingBuilderModels: "正在載入 Builder 模型",
|
|
650
651
|
loadingCalendar: "正在載入行事曆",
|
|
651
652
|
loadingDatabase: "正在載入資料庫",
|
|
652
653
|
loadingGallery: "正在載入畫廊",
|
|
653
|
-
loadingList: "
|
|
654
|
+
loadingList: "正在載入清單",
|
|
654
655
|
loadingTables: "正在載入表格",
|
|
655
656
|
loadingTimeline: "正在載入時間線",
|
|
656
657
|
localTables: "本機表格",
|
|
657
658
|
matchFormula: "匹配公式",
|
|
658
659
|
newSourceNormalize: "新來源 · 規範化",
|
|
659
|
-
newView: "
|
|
660
|
+
newView: "新檢視",
|
|
660
661
|
noBuilderModelsWereFoundInThisSpace: "此空間中未找到 Builder 模型。",
|
|
661
662
|
noDatabasePageSelected: "未選取資料庫頁面。",
|
|
662
663
|
noDate: "無日期",
|
|
@@ -676,9 +677,9 @@ const messages = {
|
|
|
676
677
|
properties: "Properties",
|
|
677
678
|
readOnly: "唯讀",
|
|
678
679
|
removeThisSource: "移除此來源",
|
|
679
|
-
renameView: "
|
|
680
|
+
renameView: "重新命名檢視",
|
|
680
681
|
retry: "Retry",
|
|
681
|
-
reviewBeforeTheyReachBuilder: "
|
|
682
|
+
reviewBeforeTheyReachBuilder: "在傳送到 Builder 前審核。",
|
|
682
683
|
reviewDiff: "審核差異",
|
|
683
684
|
sampleMatches: "範例匹配",
|
|
684
685
|
showAll: "顯示全部",
|
|
@@ -700,12 +701,12 @@ const messages = {
|
|
|
700
701
|
countValues: "值計數",
|
|
701
702
|
dateRange: "日期範圍",
|
|
702
703
|
earliest: "Earliest",
|
|
703
|
-
filterChecked: "
|
|
704
|
-
filterEmpty: "
|
|
705
|
-
filterNotEmpty: "
|
|
706
|
-
filterUnchecked: "
|
|
704
|
+
filterChecked: "篩選已選取",
|
|
705
|
+
filterEmpty: "篩選為空",
|
|
706
|
+
filterNotEmpty: "篩選非空",
|
|
707
|
+
filterUnchecked: "篩選未選取",
|
|
707
708
|
keepTheDatabaseRowsAndLocalPropertiesButRemoveSource:
|
|
708
|
-
"
|
|
709
|
+
"保留資料庫行和本機屬性,但移除來源對應、行識別和待處理來源更改。",
|
|
709
710
|
latest: "Latest",
|
|
710
711
|
max: "Max",
|
|
711
712
|
median: "Median",
|
|
@@ -843,7 +844,7 @@ const messages = {
|
|
|
843
844
|
completeStepsAboveFirst: "請先完成上面的步驟",
|
|
844
845
|
connectWorkspace: "連線工作區",
|
|
845
846
|
connected: "已連線",
|
|
846
|
-
connectedViaOAuth: "
|
|
847
|
+
connectedViaOAuth: "已透過 OAuth 連線",
|
|
847
848
|
copied: "已複製!",
|
|
848
849
|
copy: "複製",
|
|
849
850
|
disconnectWorkspace: "斷開工作區連線",
|
|
@@ -865,13 +866,13 @@ const messages = {
|
|
|
865
866
|
notionConnectedTooltip: "Notion:{{name}}",
|
|
866
867
|
notionConnectWorkspace: "連線你的工作區",
|
|
867
868
|
notionConnectWorkspaceDescription:
|
|
868
|
-
"
|
|
869
|
+
"點選下面的按鈕授權存取你的 Notion 工作區。你將被重新導向到 Notion 以授予權限。",
|
|
869
870
|
notionCopyOAuthCredentials: "複製 OAuth 憑證",
|
|
870
871
|
notionCopyOAuthCredentialsDescription:
|
|
871
872
|
'在 "OAuth Domain & URIs" 下複製 OAuth client ID 和 client secret。然後上傳 JSON 檔案或貼上到下方。',
|
|
872
873
|
notionCreateIntegration: "建立 Notion 整合",
|
|
873
874
|
notionCreateIntegrationDescription:
|
|
874
|
-
'前往 Notion
|
|
875
|
+
'前往 Notion 開發者門戶,點選 "New integration",為其命名(例如 "My Docs Sync"),並選取你的工作區。',
|
|
875
876
|
notionCredentialsNotFound: "在 JSON 中找不到 client_id 和 client_secret",
|
|
876
877
|
notionCredentialsSavedReloading: "憑證已儲存。正在重新載入...",
|
|
877
878
|
notionCredentialsSaveFailed: "儲存憑證失敗",
|
|
@@ -894,7 +895,7 @@ const messages = {
|
|
|
894
895
|
results: "結果",
|
|
895
896
|
search: "搜尋",
|
|
896
897
|
searchPages: "搜尋頁面...",
|
|
897
|
-
refreshConnection: "
|
|
898
|
+
refreshConnection: "重新整理連線",
|
|
898
899
|
saving: "正在儲存...",
|
|
899
900
|
sharedCopies: "共用副本",
|
|
900
901
|
synced: "已同步",
|
|
@@ -111,7 +111,7 @@ export function Layout({ children }: LayoutProps) {
|
|
|
111
111
|
scope={designScope}
|
|
112
112
|
browserTabId={getBrowserTabId()}
|
|
113
113
|
>
|
|
114
|
-
<div className="flex h-screen w-full overflow-hidden bg-background text-foreground">
|
|
114
|
+
<div className="agent-layout-shell flex h-screen w-full overflow-hidden bg-background text-foreground">
|
|
115
115
|
{mobileSidebarOpen && (
|
|
116
116
|
<div
|
|
117
117
|
className="fixed inset-0 z-40 bg-black/50 md:hidden"
|
|
@@ -120,7 +120,7 @@ export function Layout({ children }: LayoutProps) {
|
|
|
120
120
|
)}
|
|
121
121
|
<div
|
|
122
122
|
className={cn(
|
|
123
|
-
"fixed inset-y-0 start-0 z-50 md:static md:z-auto",
|
|
123
|
+
"agent-layout-left-drawer fixed inset-y-0 start-0 z-50 md:static md:z-auto",
|
|
124
124
|
mobileSidebarOpen
|
|
125
125
|
? "translate-x-0"
|
|
126
126
|
: "-translate-x-full rtl:translate-x-full md:translate-x-0 md:rtl:translate-x-0",
|
|
@@ -128,7 +128,7 @@ export function Layout({ children }: LayoutProps) {
|
|
|
128
128
|
>
|
|
129
129
|
<Sidebar />
|
|
130
130
|
</div>
|
|
131
|
-
<div className="flex h-full flex-1 flex-col overflow-hidden">
|
|
131
|
+
<div className="agent-layout-main-surface flex h-full flex-1 flex-col overflow-hidden">
|
|
132
132
|
{/* Mobile-only top bar with hamburger */}
|
|
133
133
|
{showMobileTopBar && (
|
|
134
134
|
<div className="flex h-12 shrink-0 items-center border-b border-border bg-sidebar px-4 md:hidden">
|