@agent-native/core 0.79.12 → 0.79.16
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 +29 -6
- package/corpus/core/src/deploy/build.ts +432 -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 +123 -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 +16 -6
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/collab/routes.d.ts +2 -2
- package/dist/deploy/build.d.ts +3 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +372 -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/notifications/routes.d.ts +1 -1
- package/dist/observability/routes.d.ts +5 -5
- package/dist/resources/handlers.d.ts +3 -3
- package/dist/server/agent-engine-api-key-route.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/server/transcribe-voice.d.ts +1 -1
- package/dist/styles/agent-native.css +123 -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
|
@@ -7,27 +7,27 @@ description: "defineAction - 成為代理工具、型別化前端掛鉤、框架
|
|
|
7
7
|
|
|
8
8
|
Actions 是您的應用所做的任何事情的唯一事實來源。使用 `defineAction()` 定義一次操作,將其放入 `actions/` 中,然後立即可用:
|
|
9
9
|
|
|
10
|
-
- **代理工具** —
|
|
10
|
+
- **代理工具** — 代理透過 zod 派生的 JSON 架構檢視它,並可以在聊天中呼叫它。
|
|
11
11
|
- **型別安全 React 掛鉤** - 前端的 `useActionQuery("name")` 和 `useActionMutation("name")`,從架構推斷的型別。
|
|
12
|
-
-
|
|
12
|
+
- **指令式用戶端呼叫** — 當鉤子不適合時 `callAction("name", params)`。
|
|
13
13
|
- **框架傳輸** — 由這些鉤子後面的框架自動安裝,並可供外部 HTTP 用戶端使用。
|
|
14
|
-
- **MCP 工具** - 暴露給 Claude、ChatGPT 自訂 MCP 應用、Claude
|
|
15
|
-
- **A2A 工具** —
|
|
16
|
-
- **CLI 指令** - `pnpm action <name>`
|
|
14
|
+
- **MCP 工具** - 暴露給 Claude、ChatGPT 自訂 MCP 應用、Claude 桌面/程式碼、游標、Codex 和任何其他 MCP 用戶端。
|
|
15
|
+
- **A2A 工具** — 由其他 Agent-Native 應用透過 A2A 呼叫。
|
|
16
|
+
- **CLI 指令** - `pnpm action <name>` 用於指令碼和開發迴圈。
|
|
17
17
|
|
|
18
18
|
一個定義,七個消費者。這是 [ladder](/docs/what-is-agent-native#the-ladder) 的第 3 級。
|
|
19
19
|
如果您正在決定是否在聊天中、在聊天中無頭公開操作
|
|
20
20
|
嵌入式 sidecar,或作為完整的應用螢幕,請參閱 [Agent Surfaces](/docs/agent-surfaces)。
|
|
21
21
|
|
|
22
|
-
```an-diagram title="一個定義,七個消費者" summary="
|
|
22
|
+
```an-diagram title="一個定義,七個消費者" summary="單一 defineAction() 扇出到每個表面 - 代理、UI、HTTP、MCP、A2A 和 CLI - 具有一個經過驗證的模式和一個 run() 主體。"
|
|
23
23
|
{
|
|
24
|
-
"html": "<div class=\"diagram-fanout\"><div class=\"diagram-panel center\" data-rough><span class=\"diagram-pill accent\">defineAction()</span><small class=\"diagram-muted\">schema + run(),只定義一次</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-grid\"><div class=\"diagram-node\">Agent 工具<br><small class=\"diagram-muted\"
|
|
24
|
+
"html": "<div class=\"diagram-fanout\"><div class=\"diagram-panel center\" data-rough><span class=\"diagram-pill accent\">defineAction()</span><small class=\"diagram-muted\">schema + run(),只定義一次</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-grid\"><div class=\"diagram-node\">Agent 工具<br><small class=\"diagram-muted\">脈絡中的 JSON Schema</small></div><div class=\"diagram-node\">React 鉤子<br><small class=\"diagram-muted\">useActionQuery/Mutation</small></div><div class=\"diagram-node\">callAction()<br><small class=\"diagram-muted\">指令式用戶端</small></div><div class=\"diagram-node\">HTTP<br><small class=\"diagram-muted\">/_agent-native/actions/:name</small></div><div class=\"diagram-node\">MCP 工具<br><small class=\"diagram-muted\">外部主機</small></div><div class=\"diagram-node\">A2A 工具<br><small class=\"diagram-muted\">其他 agent-native 應用</small></div><div class=\"diagram-node\">CLI<br><small class=\"diagram-muted\">pnpm action <name></small></div></div></div>",
|
|
25
25
|
"css": ".diagram-fanout{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.diagram-fanout .center{display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 16px}.diagram-fanout .diagram-arrow{font-size:22px;line-height:1}.diagram-fanout .diagram-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}"
|
|
26
26
|
}
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
如果 UI
|
|
30
|
-
|
|
29
|
+
如果 UI 和代理都需要做某事,請採取行動 - 而不是自訂
|
|
30
|
+
路由。對於何時路由型協議才是正確的呼叫,請參閱[首選 Actions
|
|
31
31
|
對於應用程式操作](/docs/server#actions-first)。
|
|
32
32
|
|
|
33
33
|
## 從一個動作開始 {#hello-action}
|
|
@@ -61,19 +61,19 @@ pnpm action hello '{"name":"Steve"}'
|
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
CLI 接受 JSON 物件作為操作輸入,它與結構化的匹配
|
|
64
|
-
|
|
64
|
+
代理已進行工具呼叫。簡單的標誌仍然適用於快速手動執行:
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
67
|
pnpm action hello --name Steve
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
然後針對該資料夾執行應用程式代理迴圈:
|
|
71
71
|
|
|
72
72
|
```bash
|
|
73
73
|
pnpm agent "Call hello for Steve and explain the result"
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
這與您計畫的作業、聊天 UI、外部 MCP
|
|
76
|
+
這與您計畫的作業、聊天 UI、外部 MCP 迴圈相同的應用程式代理
|
|
77
77
|
工具,以及未來的螢幕將使用。聊天和域範本用於新增 UI
|
|
78
78
|
大約 actions,不是操作本身的必需先決條件。
|
|
79
79
|
|
|
@@ -85,28 +85,28 @@ pnpm agent "Call hello for Steve and explain the result"
|
|
|
85
85
|
"language": "ts",
|
|
86
86
|
"code": "import { defineAction } from \"@agent-native/core/action\";\nimport { z } from \"zod\";\n\nexport default defineAction({\n description: \"Reply to an email thread in the user's voice.\",\n schema: z.object({\n emailId: z.string().describe(\"The id of the email to reply to.\"),\n body: z.string().describe(\"The reply body, in markdown.\"),\n }),\n run: async ({ emailId, body }) => {\n await db.insert(replies).values({ emailId, body });\n return { ok: true, emailId };\n },\n});",
|
|
87
87
|
"annotations": [
|
|
88
|
-
{ "lines": "5", "label": "工具表面", "note": "`description`
|
|
88
|
+
{ "lines": "5", "label": "工具表面", "note": "`description` 是代理讀取以決定何時呼叫此動作的內容。每個欄位的 `.describe()` 也會進入 JSON Schema。" },
|
|
89
89
|
{ "lines": "6-9", "label": "型別化契約", "note": "一個 schema 會驗證來自**每個**介面的輸入,並轉換為供模型使用的 JSON Schema。無效輸入永遠不會進入 `run`。" },
|
|
90
90
|
{ "lines": "10-13", "label": "單一實現", "note": "`run` 主體是唯一事實來源,UI 按鈕和代理工具都會執行這一段。" }
|
|
91
91
|
]
|
|
92
92
|
}
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
就是這樣。此框架會自動發現 `actions/` 中的每個檔案並在啟動時掛載它們。
|
|
96
96
|
|
|
97
97
|
### 架構選項 {#schemas}
|
|
98
98
|
|
|
99
|
-
`schema` 接受任何 [Standard Schema](https://standardschema.dev)
|
|
99
|
+
`schema` 接受任何 [Standard Schema](https://standardschema.dev) 相容庫:
|
|
100
100
|
|
|
101
101
|
- **Zod** (v4) — 最常見、最佳型別推斷,自動轉換為 JSON 架構。
|
|
102
102
|
- **Valibot** — 最小捆綁包大小(如果重要的話)。
|
|
103
103
|
- **ArkType** — 如果您喜歡語法。
|
|
104
104
|
|
|
105
|
-
該架構將轉換為 Claude API 工具定義的 JSON 架構,並在執行時用於在 `run()`
|
|
105
|
+
該架構將轉換為 Claude API 工具定義的 JSON 架構,並在執行時用於在 `run()` 觸發之前驗證輸入。無效輸入永遠不會到達您的處理常式。
|
|
106
106
|
|
|
107
107
|
### 驗證返回值 {#output-schema}
|
|
108
108
|
|
|
109
|
-
`schema` 驗證*輸入*。要驗證操作 **返回**,請傳遞 `outputSchema
|
|
109
|
+
`schema` 驗證*輸入*。要驗證操作 **返回**,請傳遞 `outputSchema`(任何標準模式相容模式 - Zod、Valibot、ArkType、與 `schema` 相同的表面)。框架在 `run()` 解析之後驗證結果,並與輸入驗證組合:在 `run` 之前驗證輸入,在 `run` 之後驗證輸出。
|
|
110
110
|
|
|
111
111
|
```ts
|
|
112
112
|
export default defineAction({
|
|
@@ -131,9 +131,9 @@ export default defineAction({
|
|
|
131
131
|
| `"strict"` | 拋出一個明顯的錯誤,以便大聲地浮現出有問題的操作。 |
|
|
132
132
|
| `"fallback"` | 返回提供的 `outputFallback` 值來代替無效結果。 |
|
|
133
133
|
|
|
134
|
-
成功後,將返回 **validated** 值,因此 `outputSchema` 上定義的任何強制或預設值都會生效(鏡像輸入路徑)。當沒有提供 `outputSchema`
|
|
134
|
+
成功後,將返回 **validated** 值,因此 `outputSchema` 上定義的任何強制或預設值都會生效(鏡像輸入路徑)。當沒有提供 `outputSchema` 時,行為是逐位元組不變的——沒有包裝。這是從 Mastra/Flue 結構化輸出借來的,並且在操作層上保持無依賴性。
|
|
135
135
|
|
|
136
|
-
### HTTP設定 {#http}
|
|
136
|
+
### HTTP 設定 {#http}
|
|
137
137
|
|
|
138
138
|
預設情況下,每個操作都公開為 `POST /_agent-native/actions/<name>`。使用 `http` 選項覆蓋:
|
|
139
139
|
|
|
@@ -154,9 +154,9 @@ export default defineAction({
|
|
|
154
154
|
{
|
|
155
155
|
"method": "GET",
|
|
156
156
|
"path": "/_agent-native/actions/get-lead",
|
|
157
|
-
"summary": "每個 action 都會自動掛載在這裡 -
|
|
158
|
-
"description": "預設是 POST;`http: { method: \"GET\" }` 會讓它成為 GET。無論任何 `http.path` 覆蓋如何,React 鉤子 和 `callAction`
|
|
159
|
-
"auth": "工作階段 cookie
|
|
157
|
+
"summary": "每個 action 都會自動掛載在這裡 - 檔名就是 action 名稱。",
|
|
158
|
+
"description": "預設是 POST;`http: { method: \"GET\" }` 會讓它成為 GET。無論任何 `http.path` 覆蓋如何,React 鉤子 和 `callAction` 始終按名稱呼叫這個路徑。",
|
|
159
|
+
"auth": "工作階段 cookie;前端呼叫會攜帶 `X-Agent-Native-Frontend: 1`",
|
|
160
160
|
"params": [
|
|
161
161
|
{ "name": "leadId", "in": "query", "type": "string", "required": true, "description": "GET 參數以查詢參數傳入;POST 參數以 JSON body 傳入。" }
|
|
162
162
|
],
|
|
@@ -167,39 +167,39 @@ export default defineAction({
|
|
|
167
167
|
}
|
|
168
168
|
```
|
|
169
169
|
|
|
170
|
-
- **`http: { method: "GET" | "POST" | "PUT" | "DELETE" }`** — 預設 `POST`。 `GET` actions 會自動標記為 `readOnly
|
|
171
|
-
- **`http: { path: "..." }`** — 覆蓋 `/_agent-native/actions/` 下安裝的 URL
|
|
170
|
+
- **`http: { method: "GET" | "POST" | "PUT" | "DELETE" }`** — 預設 `POST`。 `GET` actions 會自動標記為 `readOnly`,因此成功的呼叫不會觸發 UI 輪詢重新整理。
|
|
171
|
+
- **`http: { path: "..." }`** — 覆蓋 `/_agent-native/actions/` 下安裝的 URL。預設為檔名。 **路徑覆蓋僅針對直接 HTTP 呼叫方更改 URL** — 無論此覆蓋如何,`useActionQuery`、`useActionMutation` 和 `callAction` 始終呼叫 `/_agent-native/actions/<name>`,因此覆蓋路徑會使這些掛鉤 404。僅對外部 HTTP 呼叫方使用路徑覆蓋。另請注意,覆蓋路徑中的 `:param` 路由段**不會**解析為 `run()` 參數 - 只有查詢字串參數和 JSON 內文欄位。
|
|
172
172
|
- **`http: false`** — 完全停用 HTTP 端點。僅限代理 + CLI。
|
|
173
|
-
- **`readOnly: true`** — 即使對於不變異的 POST actions
|
|
174
|
-
- **`parallelSafe: true`** —
|
|
173
|
+
- **`readOnly: true`** — 即使對於不變異的 POST actions 也顯式跳過輪詢重新整理。
|
|
174
|
+
- **`parallelSafe: true`** — 允許變異操作與其他同回合工具呼叫同時執行。僅當操作內部並發安全且與順序無關時才設定此項;預設情況下改變 actions 序列化。
|
|
175
175
|
|
|
176
176
|
### 保持操作面較小 {#small-surface}
|
|
177
177
|
|
|
178
|
-
|
|
178
|
+
代理可以看到的每個動作都是模型脈絡視窗中的一個工具,而長而重疊的工具清單會降低模型的工具選取品質。將操作介面設計為您維護的 API,而不是為每個 UI 功能提供一個操作:
|
|
179
179
|
|
|
180
|
-
- 更喜歡**一個 CRUD 風格的 `update`**,它采用一個可選欄位補丁,而不是 N 個每個欄位 actions(`update-name`、`update-order`、`update-color
|
|
181
|
-
-
|
|
182
|
-
- 標記僅 UI
|
|
180
|
+
- 更喜歡**一個 CRUD 風格的 `update`**,它采用一個可選欄位補丁,而不是 N 個每個欄位 actions(`update-name`、`update-order`、`update-color`,...)。呼叫者僅傳送更改的內容。
|
|
181
|
+
- 在為每個查詢/過濾器新增新的讀取操作之前,請使用通用逃生口:用於提供者資料的 [provider API trio](/docs/template-dispatch) (`provider-api-catalog` / `provider-api-docs` / `provider-api-request`) 或用於應用程式資料的 dev `db-query` 工具。
|
|
182
|
+
- 標記僅 UI 或程式化 actions [`agentTool: false`](#agent-tool),以便它們保持前端/HTTP 可呼叫,而無需在模型的工具清單中佔用一個位置。
|
|
183
183
|
- 刪除或隱藏 UI 不再使用的 actions,而不是將它們暴露給模型。
|
|
184
184
|
|
|
185
185
|
回購級諮詢助手 `node scripts/audit-template-actions.mjs [template ...]`(別名 `pnpm actions:audit`)靜態掃描範本的 `actions/` 並標記可能的 UI 死 actions 和冗餘的每欄位叢集。它僅是建議性的(始終退出 0,永遠不會失敗 CI)並使用保守的啟發式方法,因此請檢視其建議,而不是將其視為錯誤。
|
|
186
186
|
|
|
187
|
-
###
|
|
187
|
+
### 曝游標誌 {#exposure-flags}
|
|
188
188
|
|
|
189
|
-
|
|
189
|
+
四個標誌控制誰可以呼叫操作。所有預設值都為允許值,因此您只需設定一個即可收緊特定表面。該表是一目了然的摘要;這些小節新增了每個需要的細節。
|
|
190
190
|
|
|
191
|
-
| 標記 | 預設 |
|
|
191
|
+
| 標記 | 預設 | 限制值→誰仍然可以呼叫 | 典型用途 |
|
|
192
192
|
| --------------- | ------------ | -------------------------------------------------------------- | ----------------------------------------------- |
|
|
193
|
-
| `agentTool` | `true` | `false` → 僅 UI、HTTP、CLI — **對模型隱藏**、MCP 和 A2A | 僅 UI
|
|
193
|
+
| `agentTool` | `true` | `false` → 僅 UI、HTTP、CLI — **對模型隱藏**、MCP 和 A2A | 僅 UI/程式化 actions,不應該花費工具槽 |
|
|
194
194
|
| `toolCallable` | `true` | `false` → 一切**除了**沙盒擴充功能 iframe 橋 (403) | 授權相鄰操作(刪除帳戶、更改組織成員資格/角色) |
|
|
195
195
|
| `publicAgent` | 關閉(私人) | `{ expose: true }` → 將操作新增到**公開** MCP/A2A/OpenAPI 表面 | 無需驗證即可存取安全讀取/攝取工具 |
|
|
196
|
-
| `needsApproval` | `false` | `true` →
|
|
196
|
+
| `needsApproval` | `false` | `true` → 代理**暫停**;人類必須核准特定的呼叫 | 間接副作用(傳送電子郵件、為卡充值、刪除) |
|
|
197
197
|
|
|
198
|
-
這些是獨立的:`agentTool`
|
|
198
|
+
這些是獨立的:`agentTool` 控制模型的檢視,`toolCallable` 僅控制擴充功能 iframe,`publicAgent` 新增選取加入的公開介面(公開 Web 路由絕不意味著公開工具暴露),而 `needsApproval` 在呼叫後控制執行 - 請參閱下面的 [Human-in-the-loop approval](#needs-approval)。
|
|
199
199
|
|
|
200
200
|
#### `agentTool` — 隱藏模型 {#agent-tool}
|
|
201
201
|
|
|
202
|
-
|
|
202
|
+
預設情況下,每個操作都是可呼叫的代理工具。設定 `agentTool: false` 以將其保留在框架的驗證 + 操作介面後面,同時將其從每個代理工具清單中刪除 - 它仍然可以從 UI (`useActionMutation` / `callAction`)、CLI 和 `/_agent-native/actions/<name>` 進行呼叫:
|
|
203
203
|
|
|
204
204
|
```ts
|
|
205
205
|
export default defineAction({
|
|
@@ -213,11 +213,11 @@ export default defineAction({
|
|
|
213
213
|
});
|
|
214
214
|
```
|
|
215
215
|
|
|
216
|
-
當您新增僅 UI
|
|
216
|
+
當您新增僅 UI 或純程式化操作時,或者當 UI 停止使用您本來會暴露給模型的操作時,請使用它。
|
|
217
217
|
|
|
218
218
|
#### `toolCallable` — 阻止擴充功能 iframe {#tool-callable}
|
|
219
219
|
|
|
220
|
-
擴充功能 ([Alpine.js mini-apps in sandboxed iframes](/docs/extensions))
|
|
220
|
+
擴充功能 ([Alpine.js mini-apps in sandboxed iframes](/docs/extensions)) 透過 `appAction(name, params)` 呼叫 actions,以檢視者的權限、機密和 SQL 範圍執行。對於高爆炸半徑的操作,預設情況下信任度過高。設定 `toolCallable: false` 以使擴充功能橋返回 403,同時保持可從 UI、代理、CLI、MCP 和 A2A 呼叫的操作:
|
|
221
221
|
|
|
222
222
|
```ts
|
|
223
223
|
export default defineAction({
|
|
@@ -230,11 +230,11 @@ export default defineAction({
|
|
|
230
230
|
});
|
|
231
231
|
```
|
|
232
232
|
|
|
233
|
-
將其用於 actions
|
|
233
|
+
將其用於 actions,刪除或轉移帳戶/組織、更改驗證狀態、修改組織成員資格或授予共用存取權限。此框架的內建 `share-resource`、`unshare-resource` 和 `set-resource-visibility` 已被選取退出。透過 iframe 呼叫上不可欺騙的主機集標頭執行;一般 UI/agent/CLI/MCP/A2A 呼叫不受影響 - 詳情請參閱 [Security](/docs/security)。
|
|
234
234
|
|
|
235
|
-
###
|
|
235
|
+
### 執行脈絡(第二個參數) {#run-context}
|
|
236
236
|
|
|
237
|
-
`run` 接收可選的第二個參數 `ctx
|
|
237
|
+
`run` 接收可選的第二個參數 `ctx`,它攜帶解析的請求識別和呼叫操作的表面。讀取它而不是手動呼叫`getRequestUserEmail()` / `getRequestOrgId()`,並將整個`ctx`傳遞給跟蹤:
|
|
238
238
|
|
|
239
239
|
```ts
|
|
240
240
|
export default defineAction({
|
|
@@ -259,30 +259,30 @@ export default defineAction({
|
|
|
259
259
|
|
|
260
260
|
`ActionRunContext` 欄位:
|
|
261
261
|
|
|
262
|
-
| 欄位 | 型別 |
|
|
262
|
+
| 欄位 | 型別 | 註解 |
|
|
263
263
|
| ------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
264
264
|
| `userEmail` | `string \| undefined` | Resolved request user. **Never defaulted to a dev identity** — `undefined` when the request has no authenticated user. Apply your own fallback if you need one. |
|
|
265
265
|
| `orgId` | `string \| null` | Resolved org id, or `null` when the request has no org. |
|
|
266
|
-
| `caller` | `ActionCaller` |
|
|
267
|
-
| `send` | `(event) => void` | 可選。向用戶端發出 SSE
|
|
268
|
-
| `attachments` | `AgentChatAttachment[]` |
|
|
266
|
+
| `caller` | `ActionCaller` | 如何呼叫操作(見下文)。 |
|
|
267
|
+
| `send` | `(event) => void` | 可選。向用戶端發出 SSE 事件。僅存在於代理工具迴圈內部(`caller: "tool"`); `undefined` 其他地方。 |
|
|
268
|
+
| `attachments` | `AgentChatAttachment[]` | 目前代理提交的檔案、圖片和貼上的文字塊。僅當`caller: "tool"`時才填充; `undefined` 在所有其他表面上。 |
|
|
269
269
|
|
|
270
270
|
`caller` 是並集 `"tool" | "http" | "frontend" | "cli" | "mcp" | "a2a"`:
|
|
271
271
|
|
|
272
272
|
| `caller` | 設定當... |
|
|
273
273
|
| ------------ | --------------------------------------------------------------------------------------------------------------------- |
|
|
274
|
-
| `"tool"` |
|
|
275
|
-
| `"frontend"` |
|
|
276
|
-
| `"http"` |
|
|
274
|
+
| `"tool"` | 應用內代理迴圈、子代理/代理團隊或 A2A 請求(A2A 驅動相同的代理迴圈,因此其工具呼叫為 `"tool"`)。 |
|
|
275
|
+
| `"frontend"` | 透過 `useActionMutation` / `useActionQuery` / `callAction` 的瀏覽器呼叫(用 `X-Agent-Native-Frontend: 1` 標頭標記)。 |
|
|
276
|
+
| `"http"` | 沒有前端標記的裸程式化 `POST` / `GET` 到 `/_agent-native/actions/<name>`。 |
|
|
277
277
|
| `"cli"` | `pnpm action <name>`(CLI 跑步者)。 |
|
|
278
278
|
| `"mcp"` | MCP `tools/call` 端點上的外部代理。 |
|
|
279
|
-
| `"a2a"` | 保留用於將來的直接 A2A 操作調度。今天 A2A
|
|
279
|
+
| `"a2a"` | 保留用於將來的直接 A2A 操作調度。今天 A2A 執行在代理迴圈中,因此這些呼叫是 `"tool"`。 |
|
|
280
280
|
|
|
281
|
-
`run`
|
|
281
|
+
`run` 保持向後相容:現有的 1 參數處理常式和僅解構 `{ send }` 的處理常式繼續保持不變。
|
|
282
282
|
|
|
283
283
|
### actions中的存取控制 {#access-control}
|
|
284
284
|
|
|
285
|
-
|
|
285
|
+
使用者擁有的表必須透過 `accessFilter` 進行讀取,並透過 `assertAccess` 進行寫入——框架的共用系統使用相同的幫助程式。這是一個完整的、可貼上的範例:
|
|
286
286
|
|
|
287
287
|
```ts
|
|
288
288
|
// actions/create-lead.ts
|
|
@@ -307,11 +307,11 @@ export default defineAction({
|
|
|
307
307
|
});
|
|
308
308
|
```
|
|
309
309
|
|
|
310
|
-
對於列出和讀取 actions,請使用 `accessFilter` 將查詢範圍限定為目前使用者和組織。對於更新或刪除特定行的 actions,在寫入之前使用 `assertAccess`
|
|
310
|
+
對於列出和讀取 actions,請使用 `accessFilter` 將查詢範圍限定為目前使用者和組織。對於更新或刪除特定行的 actions,在寫入之前使用 `assertAccess` 來確認呼叫者是否被允許。請參閱 [Security](/docs/security#access-guards) 和 [Sharing](/docs/sharing) 了解完整助手 API。
|
|
311
311
|
|
|
312
|
-
###
|
|
312
|
+
### 人機互動核准 {#needs-approval}
|
|
313
313
|
|
|
314
|
-
少數 actions 過於重要,無法讓代理自主執行 -
|
|
314
|
+
少數 actions 過於重要,無法讓代理自主執行 - 傳送電子郵件、為卡充值、刪除帳戶。對於這些,設定 `needsApproval` 暫停迴圈並要求人員在 `run()` 執行之前核准特定呼叫:
|
|
315
315
|
|
|
316
316
|
```ts
|
|
317
317
|
export default defineAction({
|
|
@@ -324,14 +324,14 @@ export default defineAction({
|
|
|
324
324
|
});
|
|
325
325
|
```
|
|
326
326
|
|
|
327
|
-
`needsApproval` 還接受謂詞 `(args, ctx) => boolean | Promise<boolean>`
|
|
327
|
+
`needsApproval` 還接受謂詞 `(args, ctx) => boolean | Promise<boolean>` 進行有條件的門控(例如,僅外部接收者,僅高於閾值);它**無法關閉**,因此拋出算作“需要核准”。當門為真且未經核准時,迴圈會停止回合,並且副作用永遠不會觸發,直到有人在聊天 UI 中核准為止。
|
|
328
328
|
|
|
329
329
|
> [!WARNING]
|
|
330
|
-
>
|
|
330
|
+
> 保持很少的核准。每個門控操作都是代理迴圈中的硬停止。預設值為**關閉**,幾乎每個操作都應將其關閉。請參閱 [Human-in-the-Loop Approvals](/docs/human-approval) 了解謂詞 API、`approval_required` 事件和完整流程。
|
|
331
331
|
|
|
332
332
|
### 審核記錄紀錄 {#audit}
|
|
333
333
|
|
|
334
|
-
|
|
334
|
+
每個變異操作都會被**自動審核**——框架會紀錄誰執行它、何時執行、從哪個表面執行、以及(當它是代理時)哪個對話串/輪次,以及經過憑證編輯的輸入。唯讀 (`GET`) actions 被跳過。您無需為此編寫任何程式碼;它發生在 `defineAction` 接縫處。
|
|
335
335
|
|
|
336
336
|
僅將 `audit` 塊新增到 _tune_ capture - 最有用的是聲明操作更改的資源,以便更改顯示在該資源所有者的跟蹤中:
|
|
337
337
|
|
|
@@ -349,9 +349,9 @@ export default defineAction({
|
|
|
349
349
|
});
|
|
350
350
|
```
|
|
351
351
|
|
|
352
|
-
其他旋鈕:`audit: { onRead: true }` 審核敏感讀取(秘密存取、批量匯出); `audit: { enabled: false }` 選取噪聲寫入; `audit: { recordInputs: false }`
|
|
352
|
+
其他旋鈕:`audit: { onRead: true }` 審核敏感讀取(秘密存取、批量匯出); `audit: { enabled: false }` 選取噪聲寫入; `audit: { recordInputs: false }` 跳過捕獲參數。使用內建 `list-audit-events` / `get-audit-event` actions 讀取軌跡。詳細資訊請參見 [Audit Log](/docs/audit-log)。
|
|
353
353
|
|
|
354
|
-
## 從UI
|
|
354
|
+
## 從 UI 呼叫 {#ui}
|
|
355
355
|
|
|
356
356
|
兩個掛鉤,均位於 `@agent-native/core/client` 中。型別是從您的 `defineAction` 架構中推斷出來的 - 無需手動型別聲明。
|
|
357
357
|
|
|
@@ -372,7 +372,7 @@ const { mutate, isPending } = useActionMutation("reply-to-email");
|
|
|
372
372
|
</Button>;
|
|
373
373
|
```
|
|
374
374
|
|
|
375
|
-
成功後,框架會發出 `source: "action"` 的更改事件,以便 `useActionQuery`
|
|
375
|
+
成功後,框架會發出 `source: "action"` 的更改事件,以便 `useActionQuery` 使用者和活動查詢觀察者自動重新取得。參見[Live Sync](/docs/key-concepts#polling-sync)。
|
|
376
376
|
|
|
377
377
|
### `useActionQuery` {#use-action-query}
|
|
378
378
|
|
|
@@ -386,11 +386,11 @@ const { data, isLoading } = useActionQuery("get-lead", { leadId });
|
|
|
386
386
|
|
|
387
387
|
查詢快取在 `["action", "get-lead", { leadId }]` 下,並在完成任何變異操作後自動失效。
|
|
388
388
|
|
|
389
|
-
## 渲染原生聊天UI {#native-chat-ui}
|
|
389
|
+
## 渲染原生聊天 UI {#native-chat-ui}
|
|
390
390
|
|
|
391
|
-
Actions
|
|
391
|
+
Actions 可以返回應用內聊天呈現的結構化小工具資料
|
|
392
392
|
本機。這是可重用表格、圖表、設定的第一方聊天路徑
|
|
393
|
-
摘要和見解卡;使用 [MCP Apps](/docs/mcp-apps)
|
|
393
|
+
摘要和見解卡;使用 [MCP Apps](/docs/mcp-apps) 進行行內 UI
|
|
394
394
|
外部 MCP 主機。
|
|
395
395
|
|
|
396
396
|
```ts
|
|
@@ -432,34 +432,34 @@ export default defineAction({
|
|
|
432
432
|
});
|
|
433
433
|
```
|
|
434
434
|
|
|
435
|
-
|
|
435
|
+
內建判別式為 `"data-table"`、`"data-chart"` 和
|
|
436
436
|
`"data-insights"`,具有伺服器安全的建置器和架構
|
|
437
437
|
`@agent-native/core/data-widgets`。見[Native 聊天介面](/docs/native-chat-ui)
|
|
438
|
-
|
|
438
|
+
取得完整結果合約和 BYO 執行時指南,或
|
|
439
439
|
[Agent Surfaces](/docs/agent-surfaces) 了解如何保持相同的操作
|
|
440
|
-
|
|
440
|
+
無頭、在聊天中渲染或變成全螢幕。
|
|
441
441
|
|
|
442
|
-
## 從CLI
|
|
442
|
+
## 從 CLI 呼叫 {#cli}
|
|
443
443
|
|
|
444
|
-
|
|
444
|
+
每個操作都可以透過 `pnpm action` 執行:
|
|
445
445
|
|
|
446
446
|
```bash
|
|
447
447
|
pnpm action reply-to-email '{"emailId":"thread-123","body":"Thanks!"}'
|
|
448
448
|
```
|
|
449
449
|
|
|
450
|
-
JSON
|
|
450
|
+
JSON 輸入是代理和複雜物件的首選形狀。標誌是
|
|
451
451
|
仍然解析為相同的模式形狀,以進行簡單的手動執行和現有
|
|
452
|
-
|
|
452
|
+
指令碼。對於代理開發迴圈、指令碼和 cron 很有用。
|
|
453
453
|
|
|
454
|
-
##
|
|
454
|
+
## 從另一個代理呼叫它(A2A) {#a2a}
|
|
455
455
|
|
|
456
|
-
如果您的應用程式是 [A2A](/docs/a2a-protocol)
|
|
456
|
+
如果您的應用程式是 [A2A](/docs/a2a-protocol) 對等點,則其他 Agent-Native 應用程式會自動發現您的 actions 並可以透過名稱呼叫它們。同來源部署跳過 JWT 簽名;跨域使用共用的`A2A_SECRET`。
|
|
457
457
|
|
|
458
|
-
##
|
|
458
|
+
## 透過 MCP 公開它 {#mcp}
|
|
459
459
|
|
|
460
|
-
啟用 MCP 後,您的 actions 將顯示在框架的 MCP 伺服器中,位置為 `/_agent-native/mcp
|
|
460
|
+
啟用 MCP 後,您的 actions 將顯示在框架的 MCP 伺服器中,位置為 `/_agent-native/mcp`。預設情況下,每個呼叫者都會獲得一個緊湊的目錄 - 面向應用程式的內建程式以及範本聲明的應用程式 actions - 並且 `tool-search` 始終存在,因此任何其他工具都可以按需存取。完整的操作介面僅在明確選取加入(`--full-catalog` 代幣或 `AGENT_NATIVE_MCP_FULL_CATALOG=1`)時提供,並且 `publicAgent.expose` 在公開介面上選取安全讀取/攝取工具。請參閱 [MCP Protocol](/docs/mcp-protocol) 了解目錄層、驗證和 `mcpApp` 資源詳細資訊。
|
|
461
461
|
|
|
462
|
-
|
|
462
|
+
對於支援 UI 的 MCP 主機,操作可以透過 `mcpApp` 欄位(加上匹配的 `link`)聲明可選的 MCP Apps 資源,以便有能力的主機行內渲染結果。當 `link` 和 `mcpApp` 應指向同一路由時,`embedRoute()` 從一個純路徑建置器建置兩者:
|
|
463
463
|
|
|
464
464
|
```ts
|
|
465
465
|
import { embedRoute } from "@agent-native/core";
|
|
@@ -487,7 +487,7 @@ export default defineAction({
|
|
|
487
487
|
|
|
488
488
|
### 檢視螢幕 {#view-screen}
|
|
489
489
|
|
|
490
|
-
|
|
490
|
+
讀取目前導覽狀態,取得脈絡資料,並返回使用者所看到內容的快照。當代理需要重新檢視螢幕時會呼叫此函式。
|
|
491
491
|
|
|
492
492
|
```ts
|
|
493
493
|
// actions/view-screen.ts
|
|
@@ -537,7 +537,7 @@ export default defineAction({
|
|
|
537
537
|
|
|
538
538
|
## 舊版 CLI 樣式 actions {#legacy-cli-actions}
|
|
539
539
|
|
|
540
|
-
|
|
540
|
+
此框架仍然支援未包含在 `defineAction` 中的較舊的 `export default async function(args)` actions - 對於不需要代理/HTTP 暴露的一次性開發指令碼很有用。這些僅限 CLI;它們不會顯示為代理工具,不會掛載 HTTP 端點,也不會獲得型別安全的前端掛鉤。
|
|
541
541
|
|
|
542
542
|
```ts
|
|
543
543
|
// actions/debug-dump.ts — CLI-only
|
|
@@ -553,7 +553,7 @@ export default async function main(args: string[]) {
|
|
|
553
553
|
|
|
554
554
|
### `parseArgs(args)` {#parseargs}
|
|
555
555
|
|
|
556
|
-
舊式 actions
|
|
556
|
+
舊式 actions 的幫助程式。解析 `--key value` 或 `--key=value` 格式的 CLI 參數:
|
|
557
557
|
|
|
558
558
|
```ts
|
|
559
559
|
import { parseArgs } from "@agent-native/core";
|
|
@@ -562,7 +562,7 @@ const args = parseArgs(["--name", "Steve", "--verbose", "--count=3"]);
|
|
|
562
562
|
// { name: "Steve", verbose: "true", count: "3" }
|
|
563
563
|
```
|
|
564
564
|
|
|
565
|
-
##
|
|
565
|
+
## 實用函式 {#utility-functions}
|
|
566
566
|
|
|
567
567
|
| 功能 | 退貨 | 描述 |
|
|
568
568
|
| ----------------------- | --------- | -------------------------------------- |
|
|
@@ -573,9 +573,9 @@ const args = parseArgs(["--name", "Steve", "--verbose", "--count=3"]);
|
|
|
573
573
|
| `ensureDir(dir)` | `void` | `mkdir -p` 助手。 |
|
|
574
574
|
| `fail(message)` | `never` | 列印到stderr和`exit(1)`。 |
|
|
575
575
|
|
|
576
|
-
##
|
|
576
|
+
## 下一步是什麼
|
|
577
577
|
|
|
578
|
-
- [**Audit Log**](/docs/audit-log) —
|
|
578
|
+
- [**Audit Log**](/docs/audit-log) — 每個操作的自動誰更改了什麼跟蹤
|
|
579
579
|
- [**Human-in-the-Loop Approvals**](/docs/human-approval) — `needsApproval` 門的深度
|
|
580
580
|
- [**Drop-in Agent**](/docs/drop-in-agent) — React 中的 `useActionMutation` / `useActionQuery`
|
|
581
581
|
- [**Context Awareness**](/docs/context-awareness) — `view-screen` + `navigate` 模式的深度
|
|
@@ -9,27 +9,27 @@ description: "使用@提及在聊天中標記自訂代理、連線的代理和
|
|
|
9
9
|
|
|
10
10
|
## 概述 {#overview}
|
|
11
11
|
|
|
12
|
-
`@` 提及系統將聊天編輯器連線到更廣泛的代理生態系統。當您鍵入 `@`
|
|
12
|
+
`@` 提及系統將聊天編輯器連線到更廣泛的代理生態系統。當您鍵入 `@` 時,會出現一個快顯視窗,列出可用的自訂代理、連線的代理、程式碼庫檔案和資源。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
這是您透過單一聊天協調多代理工作流程的方式。要求您本機的 `@design` 代理評論布局,`@analytics` 從另一個應用程式中擷取最新資料,主要代理可以將兩者合併到一個對話中。
|
|
15
15
|
|
|
16
16
|
## 提及代理 {#mentioning-agents}
|
|
17
17
|
|
|
18
18
|
要在聊天編輯器中提及代理:
|
|
19
19
|
|
|
20
|
-
1. 輸入 `@`
|
|
21
|
-
2.
|
|
20
|
+
1. 輸入 `@` 開啟提及快顯視窗
|
|
21
|
+
2. 瀏覽或搜尋可用代理清單
|
|
22
22
|
3. 選取一個代理 - 它在您的訊息中顯示為標籤
|
|
23
|
-
4.
|
|
23
|
+
4. 傳送訊息 - 伺服器解析提及並將該代理的回應包含在對話脈絡中
|
|
24
24
|
|
|
25
25
|
有兩條代理路徑:
|
|
26
26
|
|
|
27
27
|
- **自訂代理** — `agents/*.md` 中的本機工作區代理設定檔案。它們使用代理設定檔案的指令和可選模型覆蓋在目前應用程式/執行時內執行。
|
|
28
|
-
- **連線的代理** — 遠端 A2A
|
|
28
|
+
- **連線的代理** — 遠端 A2A 對等點。這些是透過 [A2A protocol](/docs/a2a-protocol) 呼叫的。
|
|
29
29
|
|
|
30
30
|
在這兩種情況下,您的主要代理都會看到回應並可以引用或建置它。
|
|
31
31
|
|
|
32
|
-
```an-diagram title="@提及路由的位置" summary="
|
|
32
|
+
```an-diagram title="@提及路由的位置" summary="伺服器按型別拆分每個提及:自訂代理在本機執行,連線的代理透過 A2A - 兩個回應都折疊回主代理的脈絡中。"
|
|
33
33
|
{
|
|
34
34
|
"html": "<div class=\"diagram-mention\"><div class=\"diagram-node\">@-mention<br><small class=\"diagram-muted\">in the composer</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-panel center\" data-rough><span class=\"diagram-pill accent\">伺服器解析</span><small class=\"diagram-muted\">extract refs by type</small></div><div class=\"diagram-col\"><div class=\"row\"><span class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</span><div class=\"diagram-box\">自訂代理<br><small class=\"diagram-muted\">agents/*.md · runs local</small></div></div><div class=\"row\"><span class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</span><div class=\"diagram-box\">已連線代理<br><small class=\"diagram-muted\">A2A peer · remote call</small></div></div></div><div class=\"diagram-arrow diagram-accent\" aria-hidden=\"true\">→</div><div class=\"diagram-box diagram-accent\"><agent-response><br><small class=\"diagram-muted\">injected into main agent</small></div></div>",
|
|
35
35
|
"css": ".diagram-mention{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-mention .center{display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px}.diagram-mention .diagram-col{display:flex;flex-direction:column;gap:10px}.diagram-mention .row{display:flex;align-items:center;gap:8px}.diagram-mention .diagram-arrow{font-size:22px;line-height:1}"
|
|
@@ -38,16 +38,16 @@ description: "使用@提及在聊天中標記自訂代理、連線的代理和
|
|
|
38
38
|
|
|
39
39
|
## 它是如何工作的 {#how-it-works}
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
當傳送包含 `@` 提及的訊息時,伺服器上會發生以下情況:
|
|
42
42
|
|
|
43
|
-
1.
|
|
43
|
+
1. 伺服器從訊息中擷取提及引用
|
|
44
44
|
2. 對於每個提到的代理:
|
|
45
45
|
- 自訂代理按照其設定檔案說明在本機執行
|
|
46
|
-
-
|
|
47
|
-
3. 代理的回應被包裝在 `<agent-response>` XML
|
|
48
|
-
4.
|
|
46
|
+
- 透過 A2A 呼叫連線的代理
|
|
47
|
+
3. 代理的回應被包裝在 `<agent-response>` XML 塊中並注入到對話脈絡中
|
|
48
|
+
4. 主代理處理豐富的訊息,檢視使用者的文字和提到的代理的回應
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
主代理在其脈絡中看到的內容:
|
|
51
51
|
|
|
52
52
|
```text
|
|
53
53
|
User: Draft an email with the latest signup numbers. @analytics
|
|
@@ -60,7 +60,7 @@ Last week's signups: 1,247 total
|
|
|
60
60
|
</agent-response>
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
然後,主代理可以在其回應中自然地使用這些資料 -
|
|
63
|
+
然後,主代理可以在其回應中自然地使用這些資料 - 例如,將這些數字合併到電子郵件草稿中。
|
|
64
64
|
|
|
65
65
|
```an-callout
|
|
66
66
|
{
|
|
@@ -71,15 +71,15 @@ Last week's signups: 1,247 total
|
|
|
71
71
|
|
|
72
72
|
## 新增代理 {#adding-agents}
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
可以透過多種機制提及代理:
|
|
75
75
|
|
|
76
76
|
- **自訂工作區代理** — 在“工作區”分頁中建立代理設定檔案為 `agents/*.md`
|
|
77
|
-
- **自動發現** -
|
|
77
|
+
- **自動發現** - 框架自動發現在已知連接埠或設定的 URL 上執行的連線代理
|
|
78
78
|
- **遠端清單** — 新增連線代理清單為 `remote-agents/*.json`
|
|
79
79
|
|
|
80
80
|
### 自訂工作區代理
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
自訂代理是儲存在工作區中的 Markdown 檔案:
|
|
83
83
|
|
|
84
84
|
```markdown
|
|
85
85
|
---
|
|
@@ -117,7 +117,7 @@ You are a focused design agent.
|
|
|
117
117
|
|
|
118
118
|
## 對於開發者:擴充功能提及 {#extending-mentions}
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
範本可以註冊自訂提及提供者,以新增代理和檔案之外的特定於域的可提及專案。提及提供者實現了 `MentionProvider` 介面:
|
|
121
121
|
|
|
122
122
|
```an-annotated-code title="自訂 MentionProvider"
|
|
123
123
|
{
|
|
@@ -145,17 +145,17 @@ export default createAgentChatPlugin({
|
|
|
145
145
|
});
|
|
146
146
|
```
|
|
147
147
|
|
|
148
|
-
|
|
148
|
+
自訂提及提供者與內建代理和檔案提供者一起顯示在提及快顯視窗中。
|
|
149
149
|
|
|
150
150
|
## 引用檔案 {#referencing-files}
|
|
151
151
|
|
|
152
|
-
`@`
|
|
152
|
+
`@` 快顯視窗不僅限於代理。您還可以參考:
|
|
153
153
|
|
|
154
|
-
- **程式碼庫檔案** — 輸入 `@`
|
|
154
|
+
- **程式碼庫檔案** — 輸入 `@` 並搜尋檔名。檔案內容包含在代理的脈絡中,因此它可以讀取、分析或修改檔案。
|
|
155
155
|
- **工作空間資源** — 在“工作空間”分頁中定義的參考檔案。這些可以是資料檔案、設定或任何其他結構化內容。
|
|
156
156
|
- **Skills** — 輸入 `/` 來引用技能。 Skills 提供結構化指令來指導代理如何處理工作。
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
所有引用型別都遵循相同的模式:從快顯視窗中進行選取,傳送訊息時引用的內容將被解析並注入到代理的脈絡中。
|
|
159
159
|
|
|
160
160
|
## 子代理選取 {#sub-agent-selection}
|
|
161
161
|
|