@agent-native/core 0.79.11 → 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 +25 -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 +738 -57
- 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 +29 -2
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +587 -51
- 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/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +7 -7
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- 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
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "工作區連線"
|
|
3
|
-
description: "用於 connect-once-use-everywhere
|
|
3
|
+
description: "用於 connect-once-use-everywhere 整合的共用提供者中繼資料、授權和憑證引用。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 工作區連線
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
工作區連線是可重用整合中繼資料的框架原語。它們使“連線一次、授予應用程式、重複使用憑證”成為可能,而無需假裝每個提供者都是完全通用的。
|
|
9
9
|
|
|
10
10
|
## 快速入門 {#quickstart}
|
|
11
11
|
|
|
12
12
|
### 四個概念
|
|
13
13
|
|
|
14
|
-
- **連線** — 指定提供者帳戶(`team-slack`、`acme-hubspot`)。紀錄提供者 ID
|
|
14
|
+
- **連線** — 指定提供者帳戶(`team-slack`、`acme-hubspot`)。紀錄提供者 ID、帳戶標籤、狀態、範圍和安全設定。從不儲存秘密值。
|
|
15
15
|
- **授予** — 特定應用程式使用連線的權限。未經授權的應用程式無法檢視連線的憑證。
|
|
16
16
|
- **credentialRef** — 指向保管庫機密 (`{ key: "SLACK_BOT_TOKEN", scope: "org" }`) 的指針。連線表明權杖所在的位置;金庫儲存著價值。
|
|
17
17
|
- **就緒** - 應用程式看到的組合狀態:`connected`(已授予 + 存在憑證)、`needs_grant`、`needs_credentials`、`needs_attention` 或 `not_configured`。
|
|
18
18
|
|
|
19
|
-
```an-diagram title="連線一次、授予應用程式、重複使用憑證" summary="
|
|
19
|
+
```an-diagram title="連線一次、授予應用程式、重複使用憑證" summary="連線儲存提供者中繼資料(絕不是秘密)和指向保管庫的 credentialRefs。每個應用程式授予解鎖它。應用程式讀取單一就緒狀態。"
|
|
20
20
|
{
|
|
21
21
|
"html": "<div class=\"diagram-conn\"><div class=\"diagram-panel col\" data-rough><span class=\"diagram-pill accent\">Connection</span><div class=\"diagram-box\" data-rough>named provider account<br><small class=\"diagram-muted\">provider, label, 狀態、作用域、設定 · never stores secret values</small></div><div class=\"diagram-muted\">credentialRef → pointer to a vault secret</div></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-panel col\" data-rough><span class=\"diagram-pill\">Grant</span><div class=\"diagram-box\" data-rough>per-app permission<br><small class=\"diagram-muted\">no grant = no credential access</small></div></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-panel col\" data-rough><span class=\"diagram-pill ok\">Readiness</span><small class=\"diagram-muted\">what the app sees</small><div class=\"sev-row\"><span class=\"diagram-pill ok\">connected</span><span class=\"diagram-pill warn\">needs_grant</span></div><div class=\"sev-row\"><span class=\"diagram-pill warn\">needs_credentials</span><span class=\"diagram-pill warn\">needs_attention</span></div><div class=\"sev-row\"><span class=\"diagram-pill\">not_configured</span></div></div></div>",
|
|
22
22
|
"css": ".diagram-conn{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.diagram-conn .col{display:flex;flex-direction:column;gap:8px;padding:14px;min-width:220px}.diagram-conn .diagram-arrow{font-size:22px;line-height:1}.diagram-conn .sev-row{display:flex;gap:8px;flex-wrap:wrap}"
|
|
@@ -64,7 +64,7 @@ await upsertWorkspaceConnectionGrant({
|
|
|
64
64
|
{
|
|
65
65
|
"id": "conn",
|
|
66
66
|
"name": "workspace_connections",
|
|
67
|
-
"note": "
|
|
67
|
+
"note": "指定的提供者帳戶。從不儲存秘密值。",
|
|
68
68
|
"fields": [
|
|
69
69
|
{ "name": "id", "type": "string", "pk": true, "note": "e.g. acme-slack" },
|
|
70
70
|
{ "name": "provider", "type": "string", "note": "穩定的提供者 ID,e.g。松弛" },
|
|
@@ -93,7 +93,7 @@ await upsertWorkspaceConnectionGrant({
|
|
|
93
93
|
}
|
|
94
94
|
```
|
|
95
95
|
|
|
96
|
-
###
|
|
96
|
+
### 呼叫哪些應用
|
|
97
97
|
|
|
98
98
|
在要求使用者貼上新金鑰之前,請先檢查準備情況:
|
|
99
99
|
|
|
@@ -151,9 +151,9 @@ if (workspaceConnectionProviderSupports("slack", "messages")) {
|
|
|
151
151
|
| `clips` | 搜尋、匯入、會議 | 大腦、剪輯、影片 |
|
|
152
152
|
| `generic` | 搜尋、匯入、檔案 | 自訂 webhooks 和檔案投放 |
|
|
153
153
|
|
|
154
|
-
憑證金鑰僅為名稱,例如 `SLACK_BOT_TOKEN` 或 `GITHUB_TOKEN
|
|
154
|
+
憑證金鑰僅為名稱,例如 `SLACK_BOT_TOKEN` 或 `GITHUB_TOKEN`。提供者中繼資料絕不能包含實際的憑證值。
|
|
155
155
|
|
|
156
|
-
###
|
|
156
|
+
### 連線儲存 API
|
|
157
157
|
|
|
158
158
|
```ts
|
|
159
159
|
import {
|
|
@@ -190,25 +190,25 @@ const brainCatalog = await listWorkspaceConnectionProviderCatalogForApp({
|
|
|
190
190
|
});
|
|
191
191
|
```
|
|
192
192
|
|
|
193
|
-
`credentialRefs`
|
|
193
|
+
`credentialRefs` 陣列指向保管庫金鑰;它不是憑證儲存。例如,`{ key: "SLACK_BOT_TOKEN", scope: "org" }` 告訴授權應用程式在需要呼叫 Slack 時尋找名為 `SLACK_BOT_TOKEN` 的組織範圍保管庫機密。連線級引用描述了提供者帳戶;授予層級的引用可以縮小或覆蓋特定應用程式應使用的內容。
|
|
194
194
|
|
|
195
195
|
當存在活動組織時,連線行的範圍僅限於活動組織。如果沒有組織,它們的範圍僅限於經過驗證的使用者。授予行使用相同的範圍。
|
|
196
196
|
|
|
197
|
-
**舊版 `allowedApps` 欄位:** `allowedApps: []` 表示同一範圍內的每個應用程式都可以使用該連線; `allowedApps: ["dispatch"]`
|
|
197
|
+
**舊版 `allowedApps` 欄位:** `allowedApps: []` 表示同一範圍內的每個應用程式都可以使用該連線; `allowedApps: ["dispatch"]` 透過舊欄位授予存取權限。使用顯式 `workspace_connection_grants` 行進行新設定 - 它們使撤銷、審核和每個應用程式的準備工作變得更容易。 `revokeWorkspaceConnectionGrant(connectionId, appId)` 刪除了顯式授權,但不更改舊版 `allowedApps`。
|
|
198
198
|
|
|
199
|
-
使用 `summarizeWorkspaceConnectionProviderForApp()` 和 `summarizeWorkspaceConnectionProviderReadiness()`
|
|
199
|
+
使用 `summarizeWorkspaceConnectionProviderForApp()` 和 `summarizeWorkspaceConnectionProviderReadiness()` 來取得面向應用的狀態,而不是手動滾動授權檢查。共用摘要返回 `grantState`、`grantAvailability`、安全憑證引用名稱、每個應用程式連線行以及就緒欄位(例如 `readyConnectionCount` 和 `missingRequiredCredentialKeys`)。
|
|
200
200
|
|
|
201
|
-
對於新的應用程式設定螢幕,更喜歡 `listWorkspaceConnectionProviderCatalogForApp()`
|
|
201
|
+
對於新的應用程式設定螢幕,更喜歡 `listWorkspaceConnectionProviderCatalogForApp()` 作為更進階別的邊界 - 它將提供者目錄、範圍連線、顯式授權、每個應用程式存取摘要和提供者準備情況結合到一個安全的形狀中。
|
|
202
202
|
|
|
203
203
|
### 這如何補充金庫
|
|
204
204
|
|
|
205
|
-
|
|
205
|
+
憑證庫回答:“秘密儲存在哪裡,誰可以存取它,以及哪些應用程式被授予它?”
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
工作區連線提供者中繼資料回答:“這是哪個提供者,它能做什麼,可能需要什麼憑證金鑰,以及哪些範本應提供它?”
|
|
208
208
|
|
|
209
|
-
```an-diagram title="
|
|
209
|
+
```an-diagram title="連線儲存與保管庫" summary="金庫擁有秘密價值。連線擁有提供者中繼資料和 credentialRefs(指針)。在執行時,應用程式透過授予的連線解析引用並從保管庫讀取值。"
|
|
210
210
|
{
|
|
211
|
-
"html": "<div class=\"diagram-vault\"><div class=\"diagram-panel col\" data-rough><span class=\"diagram-pill accent\"
|
|
211
|
+
"html": "<div class=\"diagram-vault\"><div class=\"diagram-panel col\" data-rough><span class=\"diagram-pill accent\">連線儲存</span><div class=\"diagram-box\" data-rough>provider account + metadata<br><small class=\"diagram-muted\">狀態、作用域、設定</small></div><div class=\"diagram-box\" data-rough>credentialRef<br><small class=\"diagram-muted\">{ key: SLACK_BOT_TOKEN, scope: org }</small></div></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\"><span class=\"diagram-pill\">應用 action</span><small class=\"diagram-muted\">resolves at execution time through a granted ref</small><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-panel col\" data-rough><span class=\"diagram-pill ok\">Vault</span><div class=\"diagram-box\" data-rough>secret value<br><small class=\"diagram-muted\">絕不返回給代理或 UI</small></div></div></div>",
|
|
212
212
|
"css": ".diagram-vault{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.diagram-vault .col{display:flex;flex-direction:column;gap:8px;padding:14px;min-width:220px}.diagram-vault .diagram-card{display:flex;flex-direction:column;gap:6px;padding:12px 14px}.diagram-vault .diagram-arrow{font-size:22px;line-height:1}"
|
|
213
213
|
}
|
|
214
214
|
```
|
|
@@ -216,17 +216,17 @@ const brainCatalog = await listWorkspaceConnectionProviderCatalogForApp({
|
|
|
216
216
|
同時使用兩者:
|
|
217
217
|
|
|
218
218
|
1. Dispatch(或其他工作區設定流程)建立底層保管庫機密或 OAuth 憑證引用。
|
|
219
|
-
2.
|
|
220
|
-
3.
|
|
221
|
-
4. 應用 UI
|
|
222
|
-
5. 特定於應用程式的 SQL
|
|
223
|
-
6. 應用程式 actions
|
|
219
|
+
2. 工作區連線儲存紀錄提供者帳戶、安全中繼資料、憑證引用和應用授權。
|
|
220
|
+
3. 每個應用程式從目錄中讀取提供者中繼資料,並從共用儲存中讀取連線/授權摘要。
|
|
221
|
+
4. 應用 UI 顯示就緒狀態:已連線、已授予但不健康、需要授予、缺少憑證或僅中繼資料。
|
|
222
|
+
5. 特定於應用程式的 SQL 僅儲存特定於應用程式的來源 ID、游標、過濾器、同步視窗、指標定義、審核規則和使用者選取。
|
|
223
|
+
6. 應用程式 actions 在執行時透過授予的連線引用和保管庫解析憑證,並且從不返回秘密值。
|
|
224
224
|
|
|
225
225
|
### 提供者讀取器執行時
|
|
226
226
|
|
|
227
|
-
|
|
227
|
+
提供者-讀取器層首先是一個契約,而不是每個提供者都有一個共用的即時讀取器的承諾。讀者定義描述了支援的操作、憑證要求和實施狀態:`metadata-only`、`template-owned` 或 `shared`。執行時解析應用程式授予的工作區連線和憑證引用,呼叫註冊的處理常式,並返回規範化的專案而不暴露秘密值。
|
|
228
228
|
|
|
229
|
-
|
|
229
|
+
如今,大多數即時處理常式仍然由範本擁有,這意味著 Brain 仍然擁有 Slack/GitHub 攝取行為,而 Analytics 仍然擁有分析解釋。僅當特定於提供者的 API 呼叫、分頁面、權限和結果語義真正可跨範本重用時,才將讀者提升為 `shared`。
|
|
230
230
|
|
|
231
231
|
### 應用準備模式
|
|
232
232
|
|
|
@@ -234,24 +234,24 @@ const brainCatalog = await listWorkspaceConnectionProviderCatalogForApp({
|
|
|
234
234
|
|
|
235
235
|
- **提供者目錄:**提供者 ID、標籤、功能、推薦的範本用途以及來自 `@agent-native/core/connections` 的所需憑證金鑰名稱。
|
|
236
236
|
- **工作區摘要:**來自 `@agent-native/core/workspace-connections` 的連線計數、活動/授權計數、授權狀態、憑證引用名稱和非秘密帳戶標籤。
|
|
237
|
-
- **提供者準備情況:** `ready`、`needs_credentials`、`needs_attention`、`checking`、`disabled` 或 `not_configured
|
|
238
|
-
-
|
|
237
|
+
- **提供者準備情況:** `ready`、`needs_credentials`、`needs_attention`、`checking`、`disabled` 或 `not_configured`(透過 `summarizeWorkspaceConnectionProviderReadiness()`)。
|
|
238
|
+
- **來源狀態:**應用程式本機設定的來源、游標、同步狀態和下一步操作。
|
|
239
239
|
|
|
240
|
-
Brain's Sources 頁面是參考實現。它在 Brain
|
|
240
|
+
Brain's Sources 頁面是參考實現。它在 Brain 來源紀錄旁邊顯示可重用的工作區連線提供者,將授權狀態標記為 `connected`、`granted`、`needs_grant` 或 `not_connected`,並將提供者的執行狀況顯示為就緒、缺少金鑰、需要授權、需要修復或僅中繼資料。
|
|
241
241
|
|
|
242
242
|
### 建置可重複使用的連線器
|
|
243
243
|
|
|
244
|
-
|
|
244
|
+
當新的提供者應跨多個範本工作時:
|
|
245
245
|
|
|
246
|
-
1.
|
|
247
|
-
2. **工作區連線:** Dispatch
|
|
248
|
-
3. **應用程式本機來源:** Brain、Analytics、Mail
|
|
246
|
+
1. **提供者中繼資料:**在 `@agent-native/core/connections` 中新增或重用提供者。這是穩定 ID、顯示標籤、功能清單、推薦範本用途和憑證金鑰名稱。
|
|
247
|
+
2. **工作區連線:** Dispatch 或其他工作區設定介面透過 `@agent-native/core/workspace-connections` 儲存連線帳戶的安全中繼資料、狀態、範圍、`credentialRefs` 和應用程式授權。
|
|
248
|
+
3. **應用程式本機來源:** Brain、Analytics、Mail 或其他應用程式僅儲存其擁有的特定於應用程式的選取,例如 Slack 通道、GitHub 儲存庫、HubSpot 物件過濾器、同步游標或輪詢節奏。
|
|
249
249
|
|
|
250
|
-
不要在每個應用程式中重複 OAuth
|
|
250
|
+
不要在每個應用程式中重複 OAuth/權杖儲存。連線紀錄顯示“這是 Acme Slack,其代幣位於 `SLACK_BOT_TOKEN`”;應用程式本機訊息來源稱“Brain 可能會從該 Slack 連線中攝取 `#product` 和 `#dev-fusion`。”
|
|
251
251
|
|
|
252
252
|
### 調度控制平面設定
|
|
253
253
|
|
|
254
|
-
Dispatch 公開了控制平面 actions
|
|
254
|
+
Dispatch 公開了控制平面 actions,該控制平面編寫應用程式可以直接呼叫的相同共用儲存函式:
|
|
255
255
|
|
|
256
256
|
```ts
|
|
257
257
|
// templates/dispatch/actions/upsert-workspace-connection.ts delegates to this.
|
|
@@ -289,7 +289,7 @@ await upsertWorkspaceConnectionGrant({
|
|
|
289
289
|
|
|
290
290
|
### 憑證解析
|
|
291
291
|
|
|
292
|
-
|
|
292
|
+
應用程式執行程式碼透過活動請求範圍中的保管庫解析來自授予的 `credentialRefs` 的憑證值。 Brain 的 `source-credentials.ts` 是目前的參考實現:它列出了提供者的工作區連線,檢查 `getWorkspaceConnectionAppAccess` 中的 `appId: "brain"`,合併連線層級和授予層級的憑證引用,並讀取第一個匹配的作用域保管庫機密。其他應用程式應遵循該形狀,而不是達到 `process.env`。
|
|
293
293
|
|
|
294
294
|
## 設計筆記 {#design-notes}
|
|
295
295
|
|
|
@@ -298,24 +298,24 @@ await upsertWorkspaceConnectionGrant({
|
|
|
298
298
|
|
|
299
299
|
### 應用程式本機邊界
|
|
300
300
|
|
|
301
|
-
|
|
301
|
+
共用連線和應用程式本機來源之間的邊界是有意的。如今可重用的是提供者身分、憑證引用解析、每個應用程式授權、提供者準備情況、安全帳戶中繼資料以及標準化的提供者-讀者合約。尚未通用的是大多數即時提供者 API 讀取、OAuth 流所有權、攝取游標、來源過濾器、同步節奏和域解釋。除非將讀取器實現顯式提升為共用,否則它們將保留在擁有工作流程的應用程式中。
|
|
302
302
|
|
|
303
303
|
應用程式來源連線器不應讀取部署級環境變數作為使用者/組織來源憑證的後備。環境變數對於部署來說是全域的,並且不表達工作區授權。
|
|
304
304
|
|
|
305
|
-
代理應遵循一個簡單的規則:如果使用者要求連線 Slack、GitHub、HubSpot、Gmail、Google Drive、Granola
|
|
305
|
+
代理應遵循一個簡單的規則:如果使用者要求連線 Slack、GitHub、HubSpot、Gmail、Google Drive、Granola 或其他共用提供者,請首先檢查工作區連線目錄。如果提供者是 `connected`,則使用它。如果是 `needs_grant`,請請求或執行應用程式授權。如果是 `needs_credentials`,請索要丟失的保管庫金鑰。僅當不存在可重用連線時才請求新的原始金鑰。
|
|
306
306
|
|
|
307
307
|
### “一次連線,隨處使用”之路
|
|
308
308
|
|
|
309
|
-
|
|
309
|
+
提供者目錄和贈款儲存是更廣泛的工作空間層的基礎:
|
|
310
310
|
|
|
311
311
|
- 共用提供者 ID 和功能名稱使範本保持一致。
|
|
312
|
-
-
|
|
313
|
-
-
|
|
312
|
+
- 工作區層級的清單可以顯示在 Brain、Mail、Analytics、Dispatch 和未來應用程式中設定了哪些提供者。
|
|
313
|
+
- 連線行紀錄帳戶標籤、狀態、允許的應用、憑證引用和執行狀況檢查,而無需更改面向範本的提供者 ID。
|
|
314
314
|
- 授予行讓工作區所有者連線一次,然後在工作區采用各個應用程式時啟用它們。
|
|
315
315
|
- 代理可以在應用程式之間路由工作,了解哪些提供者已連線以及哪些應用程式已獲得授權。
|
|
316
|
-
- 聯合搜尋可以請求具有 `search`、`docs`、`messages`、`meetings`、`crm` 或 `code`
|
|
317
|
-
- 特定於提供者的讀取器、OAuth
|
|
316
|
+
- 聯合搜尋可以請求具有 `search`、`docs`、`messages`、`meetings`、`crm` 或 `code` 功能的提供者,而不是對每個應用的連線器清單進行硬編碼。
|
|
317
|
+
- 特定於提供者的讀取器、OAuth 重新整理流、攝取檢查點和應用程式擁有的資料模型可以稍後共用,但今天的工作區連線並不暗示它們。
|
|
318
318
|
|
|
319
|
-
|
|
319
|
+
保持嚴格的邊界:提供者中繼資料可以安全地顯示;憑證值保留在保管庫中。
|
|
320
320
|
|
|
321
321
|
</details>
|
|
@@ -5,9 +5,9 @@ description: "分支、CODEOWNERS、PR 審查以及 Dispatch 如何與 git 級
|
|
|
5
5
|
|
|
6
6
|
# 工作區治理
|
|
7
7
|
|
|
8
|
-
> **哪個工作區檔案?** 此頁面涵蓋 **治理** -
|
|
8
|
+
> **哪個工作區檔案?** 此頁面涵蓋 **治理** - 誰在一個儲存庫中的多個應用程式中審查、核准和擁有內容。對於工作空間*是什麼*(定制層),請參閱 [Workspace](/docs/workspace);對於部署形狀(一個單一儲存庫,許多應用程式),請參閱 [Multi-App Workspaces](/docs/multi-app-workspace)。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
本指南涵蓋了執行 Agent-Native 工作區的操作方面 - 如何分支、誰審查什麼、如何設定程式碼所有權以及 Dispatch 控制平面如何適應您的治理模型。
|
|
11
11
|
|
|
12
12
|
```an-diagram title="兩個治理平面" summary="Git 管理程式碼; Dispatch 控制執行時。它們是互補的——不要將一個複製到另一個中。"
|
|
13
13
|
{
|
|
@@ -32,16 +32,16 @@ main ← production
|
|
|
32
32
|
|
|
33
33
|
**命名約定:**
|
|
34
34
|
|
|
35
|
-
-
|
|
35
|
+
- **單一應用程式更改:** `feat/<app>-<description>` 或 `fix/<app>-<description>` — 例如`feat/mail-thread-search`、`fix/calendar-recurrence-parse`
|
|
36
36
|
- **框架更改:** `feat/core-<description>` 或 `fix/core-<description>` — 例如`feat/core-polling-v2`
|
|
37
37
|
- **調度更改:** `feat/dispatch-<description>` — 例如`feat/dispatch-vault-policies`
|
|
38
38
|
- **跨應用程式更改:**如果框架更改需要範本更新,請在一個分支中執行這兩項操作,以便它們以原子方式發布
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
保持分支短暫。長期存在的分支與主分支分離,並造成痛苦的合併——尤其是在多個團隊每天推送的單一儲存庫中。
|
|
41
41
|
|
|
42
42
|
### 非開發人員分支
|
|
43
43
|
|
|
44
|
-
並不是每個需要進行更改的人都對 git 感到滿意。 [Builder.io](https://www.builder.io)
|
|
44
|
+
並不是每個需要進行更改的人都對 git 感到滿意。 [Builder.io](https://www.builder.io) 支援視覺化分支模型,可對應到底層的 git 分支 - 對於內容和副本更改、布局調整、設計迭代以及無需開發環境的 A/B 測試非常有用。
|
|
45
45
|
|
|
46
46
|
## 程式碼所有權
|
|
47
47
|
|
|
@@ -52,8 +52,8 @@ main ← production
|
|
|
52
52
|
"entries": [
|
|
53
53
|
{ "path": ".github/CODEOWNERS", "note": "按變更路徑自動分配 reviewers" },
|
|
54
54
|
{ "path": ".github/labeler.yml", "note": "按 app 自動給 PR 加標籤" },
|
|
55
|
-
{ "path": "pnpm-workspace.yaml", "note": "Workspace
|
|
56
|
-
{ "path": "package.json", "note": "Workspace
|
|
55
|
+
{ "path": "pnpm-workspace.yaml", "note": "Workspace 層級:寬範圍 review" },
|
|
56
|
+
{ "path": "package.json", "note": "Workspace 層級:平台團隊負責" }
|
|
57
57
|
]
|
|
58
58
|
}
|
|
59
59
|
```
|
|
@@ -73,7 +73,7 @@ templates/analytics/ @your-org/analytics-team
|
|
|
73
73
|
templates/calendar/ @your-org/calendar-team
|
|
74
74
|
# ... add an entry per app
|
|
75
75
|
|
|
76
|
-
#
|
|
76
|
+
# 工作區層級設定 - 廣泛審查,因為它影響每個人
|
|
77
77
|
.github/ @your-org/platform-team
|
|
78
78
|
package.json @your-org/platform-team
|
|
79
79
|
pnpm-workspace.yaml @your-org/platform-team
|
|
@@ -81,11 +81,11 @@ pnpm-workspace.yaml @your-org/platform-team
|
|
|
81
81
|
|
|
82
82
|
關鍵提示:使用 GitHub 團隊 (`@org/team`),而不是個人。框架和調度更改應始終需要平台審查。請參閱 [GitHub CODEOWNERS docs](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners) 了解 glob 語法和多所有者模式。
|
|
83
83
|
|
|
84
|
-
要啟用所需的審查:設定 → 分支 → `main` 的分支保護 →
|
|
84
|
+
要啟用所需的審查:設定 → 分支 → `main` 的分支保護 → **在合併之前需要 pull request** → **需要程式碼所有者的審查**。
|
|
85
85
|
|
|
86
|
-
##
|
|
86
|
+
## PR 標籤
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
透過應用使用 `.github/labeler.yml` 自動標記 PR(摘錄):
|
|
89
89
|
|
|
90
90
|
```yaml
|
|
91
91
|
app:mail:
|
|
@@ -101,20 +101,20 @@ core:
|
|
|
101
101
|
|
|
102
102
|
然後新增 [actions/labeler](https://github.com/actions/labeler) 操作 - 請參閱該儲存庫的 README 以了解完整的工作流程 YAML。開啟或更新 PR 時,標籤會自動應用。
|
|
103
103
|
|
|
104
|
-
##
|
|
104
|
+
## PR 審核指南
|
|
105
105
|
|
|
106
|
-
| 更改型別 | 誰評論 |
|
|
106
|
+
| 更改型別 | 誰評論 | 要注意什麼 |
|
|
107
107
|
| ------------------------------------- | ------------------------------- | --------------------------------------------------- |
|
|
108
108
|
| **僅限應用程式** (`templates/<app>/`) | 擁有應用團隊 | 域正確性、操作模式 |
|
|
109
|
-
| **框架**(`packages/core/`) | 平台團隊 + 一個受影響的應用團隊 |
|
|
110
|
-
| **架構遷移** |
|
|
109
|
+
| **框架**(`packages/core/`) | 平台團隊 + 一個受影響的應用團隊 | 重大變更、性能、向後相容性 |
|
|
110
|
+
| **架構遷移** | 平台團隊+進階工程師 | 資料安全、方言不可知論(SQLite + Postgres) |
|
|
111
111
|
| **Actions** | 所屬團隊 | Actions 都是代理工具 AND HTTP 端點 - 從兩個角度回顧 |
|
|
112
|
-
| **跨應用 A2A** | 兩個應用團隊 | 如果更改A2A
|
|
113
|
-
| **調度庫/資源** | 平台團隊 |
|
|
112
|
+
| **跨應用 A2A** | 兩個應用團隊 | 如果更改 A2A 介面,呼叫者需要知道 |
|
|
113
|
+
| **調度庫/資源** | 平台團隊 | 秘密存取、授予範圍、誰獲得什麼 |
|
|
114
114
|
|
|
115
115
|
### 並發代理工作
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
Agent-Native 工作區通常有多個 AI 代理同時在同一分支上工作。這是設計使然——代理共用一個分支並獨立推送。
|
|
118
118
|
|
|
119
119
|
```an-callout
|
|
120
120
|
{ "tone": "warning", "body": "**The later commit wins.** Two agents touching the same file won't conflict at commit time — the conflict surfaces at review. Run `pnpm run prep` (typecheck + test + format) before pushing, and don't revert changes you didn't make unless they're clearly broken." }
|
|
@@ -126,11 +126,11 @@ core:
|
|
|
126
126
|
- **檔案可能會被同一 PR 中的多個代理修改** - 這是正常的
|
|
127
127
|
- **在推送之前執行 `pnpm run prep`**(型別檢查 + 測試 + 格式)以捕獲代理更改之間的整合問題
|
|
128
128
|
- **如果兩個代理接觸同一個檔案,**較晚的提交獲勝。衝突在審查時出現,而不是在提交時出現
|
|
129
|
-
-
|
|
129
|
+
- **修復 PR 中任何程式碼中的錯誤,**無論是哪個代理編寫的。 PR 會作為一個整體進行審核。
|
|
130
130
|
|
|
131
131
|
## 調度作為治理
|
|
132
132
|
|
|
133
|
-
[Dispatch](/docs/dispatch)
|
|
133
|
+
[Dispatch](/docs/dispatch) 應用程式是工作區的執行時控制平面。它透過執行時治理補充了 git 級治理:
|
|
134
134
|
|
|
135
135
|
| 關注 | Git 和 GitHub | 調度 |
|
|
136
136
|
| ---------------- | ----------------------- | ----------------------------------------- |
|
|
@@ -139,13 +139,13 @@ core:
|
|
|
139
139
|
| 代理遵循哪些指示 | — | 全域工作區資源(AGENTS.md、說明、skills) |
|
|
140
140
|
| 共用哪些代理 | — | 工作區代理設定檔案 |
|
|
141
141
|
| 整合庫存 | — | 工作區連線和整合目錄 |
|
|
142
|
-
|
|
|
142
|
+
| 執行時變更核准 | — | 調度核准流程 |
|
|
143
143
|
| 審計跟蹤 | `git log` / `git blame` | Vault審核+調度審核記錄 |
|
|
144
144
|
| 訊息傳遞和路由 | — | Slack / Telegram 整合 |
|
|
145
145
|
|
|
146
146
|
**Git 處理程式碼治理。 Dispatch 處理執行時治理。** 不要嘗試在 Dispatch 內複製 git 工作流程,反之亦然。
|
|
147
147
|
|
|
148
|
-
Dispatch 管理:保管庫機密、可重用工作區連線、工作區資源(skills、說明、代理設定檔案、MCP
|
|
148
|
+
Dispatch 管理:保管庫機密、可重用工作區連線、工作區資源(skills、說明、代理設定檔案、MCP 伺服器)、核准和審核記錄。公開應用路由設定(`workspaceApp.audience` / `publicPaths` / `protectedPaths`)請參見[Multi-App Workspaces — Public app routes](/docs/multi-app-workspace#deployment)。
|
|
149
149
|
|
|
150
150
|
資源模型和規範路徑請參見[Workspace — Global resources](/docs/workspace#global-resources)。
|
|
151
151
|
|
|
@@ -157,7 +157,7 @@ Dispatch 管理:保管庫機密、可重用工作區連線、工作區資源
|
|
|
157
157
|
|
|
158
158
|
- [ ] 建立具有每個應用團隊所有權的 `.github/CODEOWNERS`
|
|
159
159
|
- [ ] 在 `main` 上啟用分支保護並進行必要的程式碼所有者審核
|
|
160
|
-
- [ ] 新增 `.github/labeler.yml`
|
|
160
|
+
- [ ] 新增 `.github/labeler.yml` 以透過應用自動標記 PR
|
|
161
161
|
- [ ] 為每個應用和平台團隊建立 GitHub 團隊
|
|
162
162
|
|
|
163
163
|
**調度:**
|
|
@@ -168,8 +168,8 @@ Dispatch 管理:保管庫機密、可重用工作區連線、工作區資源
|
|
|
168
168
|
- [ ] 為共用提供者帳戶註冊可重用工作區連線,然後
|
|
169
169
|
僅在需要時授予 Brain、Analytics、Mail 或 Dispatch 等應用程式
|
|
170
170
|
該帳戶
|
|
171
|
-
- [ ]
|
|
172
|
-
- [ ]
|
|
173
|
-
- [ ] 設定 SendGrid(`SENDGRID_API_KEY`、`SENDGRID_FROM_EMAIL
|
|
171
|
+
- [ ] 透過資源頁面新增工作區範圍的 skills、護欄說明和品牌/公司參考資源。請參閱 [Workspace](/docs/workspace#global-resources) 了解完整的資源模型表和推薦的入門包。
|
|
172
|
+
- [ ] 設定核准策略和核准人電子郵件
|
|
173
|
+
- [ ] 設定 SendGrid(`SENDGRID_API_KEY`、`SENDGRID_FROM_EMAIL`)以取得管理員通知
|
|
174
174
|
- [ ] 連線 Slack 或 Telegram 以進行工作區訊息傳遞
|
|
175
|
-
- [ ] 設定共用 MCP 伺服器 — 在 Dispatch 中新增 `mcp-servers/<name>.json` 工作區資源以用於所有應用程式或選定應用程式授權;使用 `mcp.config.json` 或 [MCP hub mode](/docs/mcp-clients#hub)
|
|
175
|
+
- [ ] 設定共用 MCP 伺服器 — 在 Dispatch 中新增 `mcp-servers/<name>.json` 工作區資源以用於所有應用程式或選定應用程式授權;使用 `mcp.config.json` 或 [MCP hub mode](/docs/mcp-clients#hub) 進行較低階別的部署
|