@agent-native/core 0.100.2 → 0.101.3
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 +83 -0
- package/corpus/core/docs/content/locales/ar-SA/pr-visual-recap.mdx +48 -30
- package/corpus/core/docs/content/locales/ar-SA/template-plan.mdx +7 -0
- package/corpus/core/docs/content/locales/de-DE/pr-visual-recap.mdx +48 -30
- package/corpus/core/docs/content/locales/de-DE/template-plan.mdx +7 -0
- package/corpus/core/docs/content/locales/es-ES/pr-visual-recap.mdx +48 -30
- package/corpus/core/docs/content/locales/es-ES/template-plan.mdx +14 -0
- package/corpus/core/docs/content/locales/fr-FR/pr-visual-recap.mdx +48 -30
- package/corpus/core/docs/content/locales/fr-FR/template-plan.mdx +7 -0
- package/corpus/core/docs/content/locales/hi-IN/pr-visual-recap.mdx +48 -30
- package/corpus/core/docs/content/locales/hi-IN/template-plan.mdx +7 -0
- package/corpus/core/docs/content/locales/ja-JP/pr-visual-recap.mdx +48 -30
- package/corpus/core/docs/content/locales/ja-JP/template-plan.mdx +7 -0
- package/corpus/core/docs/content/locales/ko-KR/pr-visual-recap.mdx +48 -30
- package/corpus/core/docs/content/locales/ko-KR/template-plan.mdx +7 -0
- package/corpus/core/docs/content/locales/pt-BR/pr-visual-recap.mdx +48 -30
- package/corpus/core/docs/content/locales/pt-BR/template-plan.mdx +14 -0
- package/corpus/core/docs/content/locales/zh-CN/pr-visual-recap.mdx +48 -30
- package/corpus/core/docs/content/locales/zh-CN/template-plan.mdx +7 -0
- package/corpus/core/docs/content/locales/zh-TW/pr-visual-recap.mdx +48 -30
- package/corpus/core/docs/content/locales/zh-TW/template-plan.mdx +7 -0
- package/corpus/core/docs/content/pr-visual-recap.mdx +50 -32
- package/corpus/core/docs/content/template-plan.mdx +14 -0
- package/corpus/core/docs/content/toolkit-comments-review.mdx +16 -2
- package/corpus/core/package.json +4 -1
- package/corpus/core/src/a2a/index.ts +2 -1
- package/corpus/core/src/a2a/server.ts +34 -9
- package/corpus/core/src/agent/production-agent.ts +56 -10
- package/corpus/core/src/cli/create.ts +47 -19
- package/corpus/core/src/cli/pr-visual-recap-workflow.ts +2 -3
- package/corpus/core/src/cli/recap.ts +3 -4932
- package/corpus/core/src/cli/skills-content/visual-plan-skill.ts +6 -4
- package/corpus/core/src/cli/skills-content/visual-recap-skill.ts +7 -1
- package/corpus/core/src/client/AgentPanel.tsx +19 -17
- package/corpus/core/src/client/analytics.ts +8 -1
- package/corpus/core/src/client/chat/markdown-renderer.tsx +54 -8
- package/corpus/core/src/client/chat/message-components.tsx +8 -2
- package/corpus/core/src/client/clipboard.ts +28 -1
- package/corpus/core/src/client/guided-questions.tsx +4 -0
- package/corpus/core/src/client/i18n.tsx +2 -1
- package/corpus/core/src/client/index.ts +4 -0
- package/corpus/core/src/client/review/ReviewCommentComposer.tsx +108 -0
- package/corpus/core/src/client/review/ReviewThreadPanel.tsx +482 -150
- package/corpus/core/src/client/review/index.ts +8 -0
- package/corpus/core/src/client/review/use-review.ts +35 -1
- package/corpus/core/src/client/use-agent-chat-context.ts +3 -2
- package/corpus/core/src/credentials/index.ts +41 -8
- package/corpus/core/src/extensions/fetch-tool.ts +33 -3
- package/corpus/core/src/notifications/channels.ts +20 -6
- package/corpus/core/src/review/actions/create-review-comment.ts +2 -1
- package/corpus/core/src/review/actions/get-review-feedback.ts +6 -11
- package/corpus/core/src/review/actions/list-review-comments.ts +38 -4
- package/corpus/core/src/review/actions/reply-review-comment.ts +33 -22
- package/corpus/core/src/review/actions/resolve-review-thread.ts +29 -2
- package/corpus/core/src/review/actions/send-review-thread-to-agent.ts +62 -0
- package/corpus/core/src/review/identity.ts +101 -0
- package/corpus/core/src/review/index.ts +14 -0
- package/corpus/core/src/review/store.ts +315 -8
- package/corpus/core/src/review/types.ts +4 -0
- package/corpus/core/src/secrets/crypto.ts +26 -10
- package/corpus/core/src/secrets/storage.ts +16 -3
- package/corpus/core/src/server/action-discovery.ts +4 -0
- package/corpus/core/src/server/action-routes.ts +125 -4
- package/corpus/core/src/server/agent-chat/plugin-options.ts +16 -0
- package/corpus/core/src/server/agent-chat-plugin.ts +61 -7
- package/corpus/core/src/server/derived-secret.ts +5 -1
- package/corpus/core/src/server/index.ts +8 -0
- package/corpus/core/src/vite/action-types-plugin.ts +4 -0
- package/corpus/templates/analytics/changelog/2026-07-14-daily-dashboard-email-captures-authenticate-with-a-sessi.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-14-long-running-cross-app-analyses-now-continue-reliably-in-the.md +6 -0
- package/corpus/templates/analytics/server/lib/dashboard-report.ts +156 -3
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +8 -4
- package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +402 -142
- package/corpus/templates/assets/app/i18n/zh-TW.ts +1 -0
- package/corpus/templates/assets/app/i18n-data.ts +1 -0
- package/corpus/templates/assets/app/routes/library.tsx +187 -48
- package/corpus/templates/assets/changelog/2026-07-13-merged-the-candidates-panel-into-the-library-as-a-drafts-tab.md +6 -0
- package/corpus/templates/chat/app/lib/agent-page.tsx +40 -0
- package/corpus/templates/chat/app/routes/agent.tsx +5 -3
- package/corpus/templates/chat/changelog/2026-07-14-fixed-chat-template-startup-with-older-core-versions.md +6 -0
- package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +5 -0
- package/corpus/templates/clips/AGENTS.md +4 -0
- package/corpus/templates/clips/actions/get-feature-flags.ts +30 -0
- package/corpus/templates/clips/actions/lib/transcript-preview.ts +48 -0
- package/corpus/templates/clips/actions/request-transcript.ts +41 -1
- package/corpus/templates/clips/actions/view-screen.ts +5 -9
- package/corpus/templates/clips/app/components/library/library-layout.tsx +1 -1
- package/corpus/templates/clips/app/components/player/share-dialog.tsx +44 -81
- package/corpus/templates/clips/app/components/player/video-player.tsx +39 -1
- package/corpus/templates/clips/app/hooks/use-desktop-promo.ts +6 -12
- package/corpus/templates/clips/app/hooks/use-mse-video-source.ts +146 -0
- package/corpus/templates/clips/app/i18n/ar-SA.ts +0 -8
- package/corpus/templates/clips/app/i18n/de-DE.ts +0 -9
- package/corpus/templates/clips/app/i18n/en-US.ts +0 -8
- package/corpus/templates/clips/app/i18n/es-ES.ts +0 -9
- package/corpus/templates/clips/app/i18n/fr-FR.ts +0 -9
- package/corpus/templates/clips/app/i18n/hi-IN.ts +0 -8
- package/corpus/templates/clips/app/i18n/ja-JP.ts +0 -9
- package/corpus/templates/clips/app/i18n/ko-KR.ts +0 -9
- package/corpus/templates/clips/app/i18n/pt-BR.ts +0 -9
- package/corpus/templates/clips/app/i18n/zh-CN.ts +0 -7
- package/corpus/templates/clips/app/i18n/zh-TW.ts +0 -7
- package/corpus/templates/clips/app/lib/capture-install-options.ts +21 -0
- package/corpus/templates/clips/app/lib/fmp4.ts +271 -0
- package/corpus/templates/clips/app/lib/mse-video-loader.ts +585 -0
- package/corpus/templates/clips/app/routes/_app.dictate.tsx +0 -4
- package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +5 -13
- package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +2 -37
- package/corpus/templates/clips/app/routes/download.tsx +3 -2
- package/corpus/templates/clips/changelog/2026-07-10-shared-clips-now-start-playing-instantly-instead-of-showing-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-14-clips-now-distinguishes-transcript-previews-from-incomplete-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-14-desktop-app-prompts-stay-hidden-after-you-download-the-insta.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-14-share-dialogs-show-separate-links-for-people-and-agents.md +6 -0
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +5 -0
- package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +10 -0
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +4 -0
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/custom_capture.rs +2518 -0
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/live_upload.rs +353 -0
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +558 -67
- package/corpus/templates/clips/desktop/src-tauri/src/recording_indicator.rs +11 -1
- package/corpus/templates/clips/desktop/src-tauri/src/remote_flags.rs +188 -0
- package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +1 -1
- package/corpus/templates/clips/server/lib/post-finalize-dispatch.ts +1 -0
- package/corpus/templates/clips/server/plugins/agent-chat.ts +5 -0
- package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +5 -1
- package/corpus/templates/clips/shared/feature-flags.ts +41 -0
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +3 -0
- package/corpus/templates/design/.agents/skills/design-review-feedback/SKILL.md +42 -0
- package/corpus/templates/design/AGENTS.md +6 -0
- package/corpus/templates/design/README.md +1 -0
- package/corpus/templates/design/actions/navigate.ts +4 -4
- package/corpus/templates/design/actions/view-screen.ts +116 -2
- package/corpus/templates/design/agent-native.app-skill.json +5 -0
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +52 -59
- package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +13 -9
- package/corpus/templates/design/app/components/design/EditPanel.tsx +79 -11
- package/corpus/templates/design/app/components/design/LayersPanel.tsx +78 -65
- package/corpus/templates/design/app/components/design/ReviewCommentsPanel.tsx +161 -0
- package/corpus/templates/design/app/components/design/ReviewStatusControl.tsx +96 -0
- package/corpus/templates/design/app/components/design/bridge/hit-test.bridge.ts +166 -0
- package/corpus/templates/design/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/design/app/components/visual-editor/ReviewCanvasPins.tsx +1077 -0
- package/corpus/templates/design/app/components/visual-editor/index.ts +1 -0
- package/corpus/templates/design/app/components/visual-editor/review-canvas-state.ts +42 -0
- package/corpus/templates/design/app/hooks/use-design-systems.ts +2 -2
- package/corpus/templates/design/app/hooks/use-navigation-state.ts +9 -6
- package/corpus/templates/design/app/hooks/use-question-flow.ts +7 -1
- package/corpus/templates/design/app/i18n/ar-SA.ts +56 -1
- package/corpus/templates/design/app/i18n/de-DE.ts +57 -1
- package/corpus/templates/design/app/i18n/en-US.ts +56 -1
- package/corpus/templates/design/app/i18n/es-ES.ts +56 -1
- package/corpus/templates/design/app/i18n/fr-FR.ts +57 -1
- package/corpus/templates/design/app/i18n/hi-IN.ts +56 -1
- package/corpus/templates/design/app/i18n/ja-JP.ts +56 -1
- package/corpus/templates/design/app/i18n/ko-KR.ts +56 -1
- package/corpus/templates/design/app/i18n/pt-BR.ts +57 -1
- package/corpus/templates/design/app/i18n/zh-CN.ts +56 -1
- package/corpus/templates/design/app/i18n/zh-TW.ts +51 -0
- package/corpus/templates/design/app/pages/Present.tsx +172 -14
- package/corpus/templates/design/app/pages/design-editor/overview-camera.ts +23 -0
- package/corpus/templates/design/app/pages/design-editor/tool-state.ts +10 -0
- package/corpus/templates/design/app/pages/present-review-state.ts +18 -0
- package/corpus/templates/design/app/public-routes.ts +8 -0
- package/corpus/templates/design/app/root.tsx +7 -6
- package/corpus/templates/design/changelog/2026-07-13-dragged-design-assets-now-appear-at-the-visible-drop-locatio.md +6 -0
- package/corpus/templates/design/changelog/2026-07-13-reviewers-can-pin-comments-on-shared-designs-and-apply-verif.md +6 -0
- package/corpus/templates/design/server/plugins/agent-chat.ts +10 -0
- package/corpus/templates/design/server/plugins/auth.ts +7 -5
- package/corpus/templates/design/server/plugins/review.ts +9 -0
- package/corpus/templates/design/shared/review-anchor.ts +83 -0
- package/corpus/templates/design/shared/review-summary.ts +25 -0
- package/corpus/templates/dispatch/changelog/2026-07-14-dispatch-now-distinguishes-connected-agents-from-locally-mou.md +6 -0
- package/corpus/templates/forms/.agents/skills/form-publishing/SKILL.md +2 -0
- package/corpus/templates/forms/AGENTS.md +4 -0
- package/corpus/templates/forms/actions/create-form.ts +2 -1
- package/corpus/templates/forms/actions/update-form.ts +5 -2
- package/corpus/templates/forms/app/i18n/ar-SA.ts +3 -0
- package/corpus/templates/forms/app/i18n/de-DE.ts +3 -0
- package/corpus/templates/forms/app/i18n/en-US.ts +3 -0
- package/corpus/templates/forms/app/i18n/es-ES.ts +3 -0
- package/corpus/templates/forms/app/i18n/fr-FR.ts +3 -0
- package/corpus/templates/forms/app/i18n/hi-IN.ts +3 -0
- package/corpus/templates/forms/app/i18n/ja-JP.ts +3 -0
- package/corpus/templates/forms/app/i18n/ko-KR.ts +3 -0
- package/corpus/templates/forms/app/i18n/pt-BR.ts +3 -0
- package/corpus/templates/forms/app/i18n/zh-CN.ts +3 -0
- package/corpus/templates/forms/app/i18n/zh-TW.ts +3 -0
- package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +19 -0
- package/corpus/templates/forms/changelog/2026-07-14-fixed-the-ask-forms-loading-input-appearing-above-the-welcom.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-14-form-social-previews-now-show-the-form-title-description-and.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-14-forms-can-email-the-form-owner-when-new-responses-arrive.md +6 -0
- package/corpus/templates/forms/server/handlers/submissions.ts +17 -0
- package/corpus/templates/forms/server/lib/form-og-image.ts +64 -6
- package/corpus/templates/forms/server/lib/public-form-ssr.ts +6 -2
- package/corpus/templates/forms/server/lib/response-email.ts +65 -0
- package/corpus/templates/forms/server/plugins/agent-chat.ts +1 -0
- package/corpus/templates/forms/server/routes/api/forms/og/[...slug]/og.png.get.ts +184 -0
- package/corpus/templates/forms/shared/types.ts +2 -0
- package/corpus/templates/plan/.agents/skills/visual-plan/SKILL.md +6 -4
- package/corpus/templates/plan/.agents/skills/visual-recap/SKILL.md +7 -1
- package/dist/a2a/index.d.ts +2 -1
- package/dist/a2a/index.d.ts.map +1 -1
- package/dist/a2a/index.js +1 -1
- package/dist/a2a/index.js.map +1 -1
- package/dist/a2a/server.d.ts +25 -0
- package/dist/a2a/server.d.ts.map +1 -1
- package/dist/a2a/server.js +30 -6
- package/dist/a2a/server.js.map +1 -1
- package/dist/agent/production-agent.d.ts +2 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +37 -12
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/cli/create.d.ts +5 -3
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +44 -19
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/pr-visual-recap-workflow.d.ts +2 -2
- package/dist/cli/pr-visual-recap-workflow.d.ts.map +1 -1
- package/dist/cli/pr-visual-recap-workflow.js +2 -2
- package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
- package/dist/cli/recap.d.ts +3 -562
- package/dist/cli/recap.d.ts.map +1 -1
- package/dist/cli/recap.js +3 -3875
- package/dist/cli/recap.js.map +1 -1
- package/dist/cli/skills-content/visual-plan-skill.d.ts +1 -1
- package/dist/cli/skills-content/visual-plan-skill.d.ts.map +1 -1
- package/dist/cli/skills-content/visual-plan-skill.js +6 -4
- package/dist/cli/skills-content/visual-plan-skill.js.map +1 -1
- package/dist/cli/skills-content/visual-recap-skill.d.ts +1 -1
- package/dist/cli/skills-content/visual-recap-skill.d.ts.map +1 -1
- package/dist/cli/skills-content/visual-recap-skill.js +7 -1
- package/dist/cli/skills-content/visual-recap-skill.js.map +1 -1
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +3 -3
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/analytics.d.ts +5 -0
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +3 -1
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/chat/markdown-renderer.d.ts +1 -0
- package/dist/client/chat/markdown-renderer.d.ts.map +1 -1
- package/dist/client/chat/markdown-renderer.js +36 -1
- package/dist/client/chat/markdown-renderer.js.map +1 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +5 -2
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/clipboard.d.ts +3 -1
- package/dist/client/clipboard.d.ts.map +1 -1
- package/dist/client/clipboard.js +24 -1
- package/dist/client/clipboard.js.map +1 -1
- package/dist/client/guided-questions.d.ts +3 -1
- package/dist/client/guided-questions.d.ts.map +1 -1
- package/dist/client/guided-questions.js +2 -1
- package/dist/client/guided-questions.js.map +1 -1
- package/dist/client/i18n.d.ts.map +1 -1
- package/dist/client/i18n.js +3 -1
- package/dist/client/i18n.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/review/ReviewCommentComposer.d.ts +18 -0
- package/dist/client/review/ReviewCommentComposer.d.ts.map +1 -0
- package/dist/client/review/ReviewCommentComposer.js +30 -0
- package/dist/client/review/ReviewCommentComposer.js.map +1 -0
- package/dist/client/review/ReviewThreadPanel.d.ts +28 -1
- package/dist/client/review/ReviewThreadPanel.d.ts.map +1 -1
- package/dist/client/review/ReviewThreadPanel.js +151 -39
- package/dist/client/review/ReviewThreadPanel.js.map +1 -1
- package/dist/client/review/index.d.ts +3 -2
- package/dist/client/review/index.d.ts.map +1 -1
- package/dist/client/review/index.js +2 -1
- package/dist/client/review/index.js.map +1 -1
- package/dist/client/review/use-review.d.ts +23 -0
- package/dist/client/review/use-review.d.ts.map +1 -1
- package/dist/client/review/use-review.js +3 -0
- package/dist/client/review/use-review.js.map +1 -1
- package/dist/client/use-agent-chat-context.d.ts +1 -1
- package/dist/client/use-agent-chat-context.d.ts.map +1 -1
- package/dist/client/use-agent-chat-context.js +4 -2
- package/dist/client/use-agent-chat-context.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/credentials/index.d.ts +12 -7
- package/dist/credentials/index.d.ts.map +1 -1
- package/dist/credentials/index.js +33 -8
- package/dist/credentials/index.js.map +1 -1
- package/dist/extensions/fetch-tool.d.ts +13 -1
- package/dist/extensions/fetch-tool.d.ts.map +1 -1
- package/dist/extensions/fetch-tool.js +9 -2
- package/dist/extensions/fetch-tool.js.map +1 -1
- package/dist/notifications/channels.js +20 -4
- package/dist/notifications/channels.js.map +1 -1
- package/dist/observability/routes.d.ts +5 -5
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +3 -3
- package/dist/review/actions/create-review-comment.js +2 -1
- package/dist/review/actions/create-review-comment.js.map +1 -1
- package/dist/review/actions/get-review-feedback.js +6 -11
- package/dist/review/actions/get-review-feedback.js.map +1 -1
- package/dist/review/actions/list-review-comments.d.ts +1 -0
- package/dist/review/actions/list-review-comments.js +25 -4
- package/dist/review/actions/list-review-comments.js.map +1 -1
- package/dist/review/actions/reply-review-comment.js +12 -5
- package/dist/review/actions/reply-review-comment.js.map +1 -1
- package/dist/review/actions/resolve-review-thread.d.ts +3 -0
- package/dist/review/actions/resolve-review-thread.js +20 -3
- package/dist/review/actions/resolve-review-thread.js.map +1 -1
- package/dist/review/actions/send-review-thread-to-agent.d.ts +17 -0
- package/dist/review/actions/send-review-thread-to-agent.d.ts.map +1 -0
- package/dist/review/actions/send-review-thread-to-agent.js +49 -0
- package/dist/review/actions/send-review-thread-to-agent.js.map +1 -0
- package/dist/review/identity.d.ts +6 -0
- package/dist/review/identity.d.ts.map +1 -0
- package/dist/review/identity.js +68 -0
- package/dist/review/identity.js.map +1 -0
- package/dist/review/index.d.ts +3 -1
- package/dist/review/index.d.ts.map +1 -1
- package/dist/review/index.js +2 -1
- package/dist/review/index.js.map +1 -1
- package/dist/review/store.d.ts +36 -0
- package/dist/review/store.d.ts.map +1 -1
- package/dist/review/store.js +223 -8
- package/dist/review/store.js.map +1 -1
- package/dist/review/types.d.ts +4 -0
- package/dist/review/types.d.ts.map +1 -1
- package/dist/review/types.js.map +1 -1
- package/dist/secrets/crypto.d.ts +15 -7
- package/dist/secrets/crypto.d.ts.map +1 -1
- package/dist/secrets/crypto.js +23 -10
- package/dist/secrets/crypto.js.map +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/secrets/storage.d.ts.map +1 -1
- package/dist/secrets/storage.js +16 -3
- package/dist/secrets/storage.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +4 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/action-routes.d.ts +45 -0
- package/dist/server/action-routes.d.ts.map +1 -1
- package/dist/server/action-routes.js +71 -5
- package/dist/server/action-routes.js.map +1 -1
- package/dist/server/agent-chat/plugin-options.d.ts +16 -0
- package/dist/server/agent-chat/plugin-options.d.ts.map +1 -1
- package/dist/server/agent-chat/plugin-options.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +20 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +39 -4
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/derived-secret.d.ts +1 -1
- package/dist/server/derived-secret.d.ts.map +1 -1
- package/dist/server/derived-secret.js.map +1 -1
- package/dist/server/index.d.ts +3 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -1
- package/dist/vite/action-types-plugin.d.ts.map +1 -1
- package/dist/vite/action-types-plugin.js +4 -0
- package/dist/vite/action-types-plugin.js.map +1 -1
- package/docs/content/locales/ar-SA/pr-visual-recap.mdx +48 -30
- package/docs/content/locales/ar-SA/template-plan.mdx +7 -0
- package/docs/content/locales/de-DE/pr-visual-recap.mdx +48 -30
- package/docs/content/locales/de-DE/template-plan.mdx +7 -0
- package/docs/content/locales/es-ES/pr-visual-recap.mdx +48 -30
- package/docs/content/locales/es-ES/template-plan.mdx +14 -0
- package/docs/content/locales/fr-FR/pr-visual-recap.mdx +48 -30
- package/docs/content/locales/fr-FR/template-plan.mdx +7 -0
- package/docs/content/locales/hi-IN/pr-visual-recap.mdx +48 -30
- package/docs/content/locales/hi-IN/template-plan.mdx +7 -0
- package/docs/content/locales/ja-JP/pr-visual-recap.mdx +48 -30
- package/docs/content/locales/ja-JP/template-plan.mdx +7 -0
- package/docs/content/locales/ko-KR/pr-visual-recap.mdx +48 -30
- package/docs/content/locales/ko-KR/template-plan.mdx +7 -0
- package/docs/content/locales/pt-BR/pr-visual-recap.mdx +48 -30
- package/docs/content/locales/pt-BR/template-plan.mdx +14 -0
- package/docs/content/locales/zh-CN/pr-visual-recap.mdx +48 -30
- package/docs/content/locales/zh-CN/template-plan.mdx +7 -0
- package/docs/content/locales/zh-TW/pr-visual-recap.mdx +48 -30
- package/docs/content/locales/zh-TW/template-plan.mdx +7 -0
- package/docs/content/pr-visual-recap.mdx +50 -32
- package/docs/content/template-plan.mdx +14 -0
- package/docs/content/toolkit-comments-review.mdx +16 -2
- package/package.json +4 -1
- package/corpus/templates/clips/app/components/sharing/slack-share-hint.tsx +0 -68
- package/corpus/templates/forms/server/routes/api/forms/og/[slug]/og.png.get.ts +0 -45
|
@@ -102,13 +102,13 @@ PR Visual Recap 是一個 GitHub 操作,它將每個 pull request 轉變為**
|
|
|
102
102
|
npx @agent-native/core@latest skills add visual-plan --with-github-action
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
這將安裝 `visual-plan` 技能(其中包括操作執行的 `visual-recap` 技能)並將 `.github/workflows/pr-visual-recap.yml` 寫入您的儲存庫。工作流程透過 `npx @agent-native/
|
|
105
|
+
這將安裝 `visual-plan` 技能(其中包括操作執行的 `visual-recap` 技能)並將 `.github/workflows/pr-visual-recap.yml` 寫入您的儲存庫。工作流程透過 `npx @agent-native/recap-cli@latest recap <subcommand>` 呼叫**發布的 CLI 子指令** — 包括 `gate`、`collect-diff`、`block-reference`、`scan`、`build-prompt`、`publish`、`shot`、`comment`、`check` 和`usage` - 因此沒有任何內容作為幫助程式指令碼複製到您的儲存庫中。 `setup`和`doctor`是您本機執行的互動式助手; `gate` 是工作流程在每次回顧之前執行的安全門步驟。
|
|
106
106
|
|
|
107
107
|
然後執行引導設定幫助程式:
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
|
-
npx @agent-native/
|
|
111
|
-
npx @agent-native/
|
|
110
|
+
npx @agent-native/recap-cli@latest recap setup
|
|
111
|
+
npx @agent-native/recap-cli@latest recap doctor
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
`recap setup`重新整理工作流程,使用`gh`設定GitHub Actions
|
|
@@ -118,7 +118,7 @@ npx @agent-native/core@latest recap doctor
|
|
|
118
118
|
產生的工作流程檔案並開啟 PR 以檢視其執行。
|
|
119
119
|
|
|
120
120
|
預設情況下,工作流程根據最新捆綁的內容建置其代理提示
|
|
121
|
-
`@agent-native/
|
|
121
|
+
`@agent-native/recap-cli@latest` 中的 `visual-recap` 指導,包括任何同級
|
|
122
122
|
技能附帶的參考檔案。如果您的儲存庫有意定制並且
|
|
123
123
|
固定其提交的`visual-recap`資料夾,設定儲存庫變數
|
|
124
124
|
`VISUAL_RECAP_SKILL_SOURCE=repo`.
|
|
@@ -135,8 +135,8 @@ npx @agent-native/core@latest recap doctor
|
|
|
135
135
|
JSON 引號不可省略。此值會選取完整 `recap` 工作的執行器。若要在引導設定期間進行設定,請將相同的 JSON 值傳給 `--runs-on`,然後使用 `doctor` 驗證工作流程和執行器可用性:
|
|
136
136
|
|
|
137
137
|
```bash
|
|
138
|
-
npx @agent-native/
|
|
139
|
-
npx @agent-native/
|
|
138
|
+
npx @agent-native/recap-cli@latest recap setup --runs-on '["self-hosted","linux","x64","visual-recap"]'
|
|
139
|
+
npx @agent-native/recap-cli@latest recap doctor
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
輕量級閘道會另外使用 `ubuntu-latest`。停用 GitHub 託管執行器的儲存庫可以將 `VISUAL_RECAP_GATE_RUNS_ON` 設為一個不含 JSON 的純文字標籤,或使用 `--gate-runs-on visual-recap-gate`。自訂標籤僅用於同一儲存庫中身分為 `OWNER`、`MEMBER` 或 `COLLABORATOR` 的作者;分支及其他作者會被強制使用 `ubuntu-latest`,在停用 GitHub 託管執行器時可能一直無法排程。請使用專用且最好是暫時性的執行器;標準閘道不會簽出 PR 樹,只評估工作流程邏輯與 PR 中繼資料。
|
|
@@ -160,12 +160,30 @@ npx @agent-native/core@latest recap doctor
|
|
|
160
160
|
|
|
161
161
|
除了後端之外,兩個儲存庫變數還可以調整代理的執行方式:
|
|
162
162
|
|
|
163
|
-
- **`VISUAL_RECAP_MODEL`** 固定傳遞給 CLI (`--model`) 的模型 — 例如 `gpt-5.6-
|
|
163
|
+
- **`VISUAL_RECAP_MODEL`** 固定傳遞給 CLI (`--model`) 的模型 — 例如 Codex 使用 `gpt-5.6-luna`、Claude 模型 ID,或 DeepSeek 使用 `deepseek-chat`。對於 `openai-compatible` 是必需的。對於 **Claude** 後端,保留未設定現在預設使用 `claude-sonnet-5`;要使用其他 Claude 模型(例如更便宜的 `claude-haiku-4-5`),請明確設定該變數。對於 **Codex** 後端,保留未設定將使用 Codex CLI 自身的預設模型。
|
|
164
164
|
- **`VISUAL_RECAP_REASONING`** 設定推理深度:`none`、`minimal`、`low`、`medium`、`high` 或 `xhigh`。適用於Codex後端; Claude 的推理是模型驅動的,因此該變數被忽略。
|
|
165
165
|
- **`VISUAL_RECAP_SKILL_SOURCE`** 控制提示新鮮度:`auto`/unset 使用最新的捆綁技能指南,而 `repo` 固定到已提交的儲存庫本機 `visual-recap` 技能資料夾。
|
|
166
166
|
|
|
167
167
|
例如,要在 Codex 和 GPT-5.6 Sol 上以高推理執行回顧,請設定儲存庫變數 `VISUAL_RECAP_AGENT=codex`、`VISUAL_RECAP_MODEL=gpt-5.6-sol` 和 `VISUAL_RECAP_REASONING=high`。
|
|
168
168
|
|
|
169
|
+
## 成本
|
|
170
|
+
|
|
171
|
+
每次回顧執行都是一次完整的代理式編碼代理工作階段,讀取真實的 diff,而不是廉價的範本化摘要,因此其成本取決於模型選擇和執行頻率:
|
|
172
|
+
|
|
173
|
+
- **每次 PR 推送都會執行完整工作階段。** 預設觸發程序在 `synchronize` 時觸發,因此被推送十次的 PR 會執行代理十次。
|
|
174
|
+
- **每次都是整個 PR**,而不僅僅是自上次執行以來的提交 — 成本隨 PR 總大小而非增量差異大小擴展。
|
|
175
|
+
- **差異輸入上限約為 600KB。** 這限制了每次執行的最壞情況,但大差異的成本仍然明顯高於小差異。
|
|
176
|
+
- **失敗時自動重試一次**,這可能會讓一次暫時性失敗的執行成本大約加倍。
|
|
177
|
+
|
|
178
|
+
若要降低成本:
|
|
179
|
+
|
|
180
|
+
- **固定使用較便宜的模型。** 對於 Claude,為簡單或小型儲存庫設定 `VISUAL_RECAP_MODEL=claude-haiku-4-5` — 這是最便宜的 Claude 層級;`claude-sonnet-5`(預設值)是均衡層級。
|
|
181
|
+
- **切換到使用較便宜模型的 Codex。** 設定 `VISUAL_RECAP_AGENT=codex` 並搭配 `VISUAL_RECAP_MODEL=gpt-5.6-luna`(最便宜的 GPT-5.6 層級)或 `gpt-5.6-terra`(中間層級),並設定 `VISUAL_RECAP_REASONING=low` 以進一步減少推理 token 花費。推理深度僅適用於 Codex。
|
|
182
|
+
- **指向較便宜的 OpenAI 相容供應商。** 設定 `VISUAL_RECAP_AGENT=openai-compatible`,並搭配指向 DeepSeek、Kimi 或任何其他 OpenAI 相容端點的 `VISUAL_RECAP_BASE_URL`/`VISUAL_RECAP_MODEL`/`VISUAL_RECAP_API_KEY`。
|
|
183
|
+
- **降低回顧頻率。** 將已安裝工作流程的 `on.pull_request.types` 從 `[opened, synchronize, reopened, ready_for_review, closed]` 編輯為 `[opened, ready_for_review, closed]`,使其僅在 PR 開啟和合併時回顧,而不是每次推送都回顧。
|
|
184
|
+
|
|
185
|
+
每次執行都會記錄實際花費:工作流程的 `recap usage` 步驟會將 token 和成本使用情況附加到已發布的計畫中,因此你可以查看每次執行的實際花費,而不是靠猜測。
|
|
186
|
+
|
|
169
187
|
## 秘密和變數
|
|
170
188
|
|
|
171
189
|
在儲存庫的 **設定 → 秘密和變數 → Actions** 中設定這些內容。
|
|
@@ -196,11 +214,11 @@ npx @agent-native/core@latest connect https://plan.agent-native.com --service-to
|
|
|
196
214
|
|
|
197
215
|
**Solo:個人代幣仍然有效。**用 `npx @agent-native/core@latest connect` 鑄造它
|
|
198
216
|
針對您的計畫應用程式。對於託管應用程式,這還會寫入本機
|
|
199
|
-
`npx @agent-native/
|
|
217
|
+
`npx @agent-native/recap-cli@latest recap setup`可以讀取的發布權杖檔案:
|
|
200
218
|
|
|
201
219
|
```bash
|
|
202
220
|
npx @agent-native/core@latest connect https://plan.agent-native.com --client codex
|
|
203
|
-
npx @agent-native/
|
|
221
|
+
npx @agent-native/recap-cli@latest recap setup
|
|
204
222
|
```
|
|
205
223
|
|
|
206
224
|
如果您更喜歡手動設定,請將權杖貼上到 GitHub 金鑰中。使用
|
|
@@ -209,16 +227,16 @@ npx @agent-native/core@latest recap setup
|
|
|
209
227
|
|
|
210
228
|
### 可選(僅當您更改預設值時)
|
|
211
229
|
|
|
212
|
-
| 秘密/變數 | 預設
|
|
213
|
-
| ------------------------ |
|
|
214
|
-
| `OPENAI_API_KEY` | —
|
|
215
|
-
| `VISUAL_RECAP_AGENT` | `claude`
|
|
216
|
-
| `VISUAL_RECAP_MODEL` |
|
|
217
|
-
| `VISUAL_RECAP_REASONING` | 每個模型的預設值
|
|
218
|
-
| `RECAP_CLI_VERSION` | `latest`
|
|
219
|
-
| `PLAN_RECAP_APP_URL` | `https://plan.agent-native.com`
|
|
230
|
+
| 秘密/變數 | 預設 | 當你需要的時候 |
|
|
231
|
+
| ------------------------ | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
232
|
+
| `OPENAI_API_KEY` | — | 秘密。與 `VISUAL_RECAP_AGENT=codex` 一起設定以使用 Codex 執行回顧。 |
|
|
233
|
+
| `VISUAL_RECAP_AGENT` | `claude` | 變數。選取編碼代理後端(`claude` 或 `codex`)。 |
|
|
234
|
+
| `VISUAL_RECAP_MODEL` | Claude 使用 `claude-sonnet-5`;相容後端必需 | 變數。OpenAI 相容後端的供應商模型 ID(在該後端為必需)。對於 Claude,未設定時現在預設使用 `claude-sonnet-5` — 設定以覆寫,例如使用最便宜層級的 `claude-haiku-4-5`。對於 Codex,未設定時使用 Codex CLI 自身的預設值。 |
|
|
235
|
+
| `VISUAL_RECAP_REASONING` | 每個模型的預設值 | 變數。推理深度:`none`、`minimal`、`low`、`medium`、`high` 或 `xhigh`。適用於Codex後端。 |
|
|
236
|
+
| `RECAP_CLI_VERSION` | `latest` | 變數。固定工作流程安裝的 `@agent-native/recap-cli` CLI 版本 - 例如`1.5.0`。參見[Version pinning](#version-pinning-copy-variant)。 |
|
|
237
|
+
| `PLAN_RECAP_APP_URL` | `https://plan.agent-native.com` | 秘密。僅當在不同來源自行託管計畫應用時。 |
|
|
220
238
|
|
|
221
|
-
工作流自動偵測如何呼叫其助手 CLI(此 monorepo 內的本機來源,在其他地方發布的 `@agent-native/
|
|
239
|
+
工作流自動偵測如何呼叫其助手 CLI(此 monorepo 內的本機來源,在其他地方發布的 `@agent-native/recap-cli`),因此無需設定 `RECAP_CLI` 變數。
|
|
222
240
|
|
|
223
241
|
## 評論內嵌截圖
|
|
224
242
|
|
|
@@ -357,9 +375,9 @@ GitHub 操作專為託管、可共用的 PR 審核而設計。如果你想要一
|
|
|
357
375
|
相同的幫助程式在本機檔案模式下本機流動:
|
|
358
376
|
|
|
359
377
|
```bash
|
|
360
|
-
npx @agent-native/
|
|
361
|
-
npx @agent-native/
|
|
362
|
-
npx @agent-native/
|
|
378
|
+
npx @agent-native/recap-cli@latest recap collect-diff --base main --head HEAD --out recap.diff --stat recap.stat
|
|
379
|
+
npx @agent-native/recap-cli@latest recap scan --diff recap.diff
|
|
380
|
+
npx @agent-native/recap-cli@latest recap build-prompt --pr 123 --diff recap.diff --stat recap.stat --local-files --local-dir plans/pr-123-visual-recap
|
|
363
381
|
```
|
|
364
382
|
|
|
365
383
|
將產生的 `recap-prompt.md` 交給您的編碼代理。在本機檔案模式
|
|
@@ -389,7 +407,7 @@ npx @agent-native/core@latest plan local serve --dir plans/pr-123-visual-recap -
|
|
|
389
407
|
|
|
390
408
|
## 版本固定(複製變體) {#version-pinning-copy-variant}
|
|
391
409
|
|
|
392
|
-
預設情況下,複製變體工作流程在執行時安裝 `@agent-native/
|
|
410
|
+
預設情況下,複製變體工作流程在執行時安裝 `@agent-native/recap-cli@latest`,因此每次回顧執行都會自動選取最新的 CLI。如果您的 CI 需要可重現的工具,請設定 **`RECAP_CLI_VERSION`** 儲存庫變數來固定已安裝的版本:
|
|
393
411
|
|
|
394
412
|
1. 轉到您的儲存庫的**設定 → 秘密和變數 → Actions → 變數**。
|
|
395
413
|
2. 建立一個名為 `RECAP_CLI_VERSION` 的變數,其值類似於 `1.5.0`。
|
|
@@ -400,7 +418,7 @@ npx @agent-native/core@latest plan local serve --dir plans/pr-123-visual-recap -
|
|
|
400
418
|
|
|
401
419
|
## 秘密掃描允許清單
|
|
402
420
|
|
|
403
|
-
在發布回顧之前,工作流程執行 `npx @agent-native/
|
|
421
|
+
在發布回顧之前,工作流程執行 `npx @agent-native/recap-cli@latest recap scan` 以偵測差異中可能的秘密。任何其 diff 與已知秘密模式匹配的 PR 都會被阻止並帶有解釋性註解 - 不會發布摘要,並且不會將 diff 內容傳送到編碼代理。
|
|
404
422
|
|
|
405
423
|
在極少數情況下,儲存庫具有故意的測試裝置或表面上類似於秘密模式的非秘密字串(例如,測試檔案中的裝置金鑰)。要抑制誤報,請在儲存庫的根目錄中建立 `.github/recap-scan-allowlist`。
|
|
406
424
|
|
|
@@ -434,7 +452,7 @@ EXAMPLE_API_KEY=placeholder-value
|
|
|
434
452
|
|
|
435
453
|
### 為什麼使用可重用變體?
|
|
436
454
|
|
|
437
|
-
預設安裝程式將完整的約 360 行工作流程 YAML 複製到您的儲存庫中(**複製**選項)。對於氣隙儲存庫或需要審核每一行執行內容的儲存庫來說,這是正確的選取。缺點是錯誤修復和改進永遠不會到達您的手中 - 您需要在每次發布後手動重新執行 `npx @agent-native/
|
|
455
|
+
預設安裝程式將完整的約 360 行工作流程 YAML 複製到您的儲存庫中(**複製**選項)。對於氣隙儲存庫或需要審核每一行執行內容的儲存庫來說,這是正確的選取。缺點是錯誤修復和改進永遠不會到達您的手中 - 您需要在每次發布後手動重新執行 `npx @agent-native/recap-cli@latest recap setup`。
|
|
438
456
|
|
|
439
457
|
**可重用**選項改為編寫一個精簡的約 20 行呼叫程式。它透過`uses:`委托給`BuilderIO/agent-native/.github/workflows/pr-visual-recap-reusable.yml`。當工作流程執行時,每個呼叫者都會自動取得最新邏輯,無需本機更新。
|
|
440
458
|
|
|
@@ -447,7 +465,7 @@ EXAMPLE_API_KEY=placeholder-value
|
|
|
447
465
|
|
|
448
466
|
### 呼叫者片段
|
|
449
467
|
|
|
450
|
-
這是`npx @agent-native/
|
|
468
|
+
這是`npx @agent-native/recap-cli@latest recap setup --reusable`寫的(或者你可以手動貼上):
|
|
451
469
|
|
|
452
470
|
```yaml
|
|
453
471
|
name: PR Visual Recap
|
|
@@ -482,7 +500,7 @@ jobs:
|
|
|
482
500
|
skill-source: ${{ vars.VISUAL_RECAP_SKILL_SOURCE || 'auto' }}
|
|
483
501
|
runs-on: ${{ vars.VISUAL_RECAP_RUNS_ON || '"ubuntu-latest"' }}
|
|
484
502
|
gate-runs-on: ${{ vars.VISUAL_RECAP_GATE_RUNS_ON || 'ubuntu-latest' }}
|
|
485
|
-
# cli-version: "latest" # pin to a specific @agent-native/
|
|
503
|
+
# cli-version: "latest" # pin to a specific @agent-native/recap-cli version
|
|
486
504
|
```
|
|
487
505
|
|
|
488
506
|
適用 [Secrets and variables](#secrets-and-variables) 中描述的相同秘密和變數。可重複使用的呼叫端會將完整工作的 `VISUAL_RECAP_RUNS_ON` 轉送為 `runs-on`,並將閘道的 `VISUAL_RECAP_GATE_RUNS_ON` 轉送為單一標籤 `gate-runs-on`。省略時兩者都使用 `ubuntu-latest`。
|
|
@@ -491,15 +509,15 @@ jobs:
|
|
|
491
509
|
|
|
492
510
|
```bash
|
|
493
511
|
# 編寫瘦呼叫者而不是完整副本:
|
|
494
|
-
npx @agent-native/
|
|
512
|
+
npx @agent-native/recap-cli@latest recap setup --reusable
|
|
495
513
|
|
|
496
514
|
# 或者使用固定參考來實現可重複性:
|
|
497
|
-
npx @agent-native/
|
|
515
|
+
npx @agent-native/recap-cli@latest recap setup --reusable --ref v1.2.3
|
|
498
516
|
```
|
|
499
517
|
|
|
500
518
|
兩種變體都將工作流程寫入 `.github/workflows/pr-visual-recap.yml`。如果現有工作流程已存在且有所不同,則該指令會拒絕並告訴您傳遞 `--force` 進行覆蓋。
|
|
501
519
|
|
|
502
|
-
寫入後,照常執行 `npx @agent-native/
|
|
520
|
+
寫入後,照常執行 `npx @agent-native/recap-cli@latest recap doctor` 以確認機密已設定。
|
|
503
521
|
|
|
504
522
|
### 版本固定
|
|
505
523
|
|
|
@@ -509,7 +527,7 @@ npx @agent-native/core@latest recap setup --reusable --ref v1.2.3
|
|
|
509
527
|
uses: BuilderIO/agent-native/.github/workflows/pr-visual-recap-reusable.yml@v1.2.3
|
|
510
528
|
```
|
|
511
529
|
|
|
512
|
-
`cli-version` 輸入控制工作流程中執行的 `@agent-native/
|
|
530
|
+
`cli-version` 輸入控制工作流程中執行的 `@agent-native/recap-cli` CLI 版本 - 將其保留在 `"latest"` 以跟蹤最新版本,或將其固定到版本字串(例如 `"1.5.0"`)以實現完全可重複性。
|
|
513
531
|
|
|
514
532
|
### workflow_call事件脈絡
|
|
515
533
|
|
|
@@ -208,6 +208,13 @@ vscode://builder.agent-native/open?url=<encoded-plan-url>
|
|
|
208
208
|
**開放式問題**表格位於同一計畫的底部。接聽並傳送
|
|
209
209
|
它向代理啟動針對現有計畫的修訂。
|
|
210
210
|
|
|
211
|
+
## 成本和模型選擇
|
|
212
|
+
|
|
213
|
+
產生計畫或回顧會對你的編碼代理的 LLM 執行一次完整的代理式工作階段,而不是輕量級的範本填充,因此成本會隨 diff 或計畫的大小以及你選擇的模型而變化。
|
|
214
|
+
|
|
215
|
+
- 應用程式自身的預設聊天模型是 Sonnet 5;你可以隨時在 **設定** 中變更它。Haiku 是較便宜的 Claude 選項,Luna 是 GPT-5.6 系列中較便宜的選項。
|
|
216
|
+
- 來自 GitHub Action 的自動化 PR 回顧與互動式應用程式分開執行,擁有自己的模型和成本調整項 — 關於 `VISUAL_RECAP_MODEL`、`VISUAL_RECAP_AGENT` 和 `VISUAL_RECAP_REASONING`,請參見[PR Visual Recap](/docs/pr-visual-recap)。
|
|
217
|
+
|
|
211
218
|
## 你可以用它做什麼
|
|
212
219
|
|
|
213
220
|
- **實施前審查。** React 到圖表、線框圖、選項分頁,
|
|
@@ -102,13 +102,13 @@ explicitly at any time:
|
|
|
102
102
|
npx @agent-native/core@latest skills add visual-plan --with-github-action
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
This installs the `visual-plan` skill (which includes the `visual-recap` skill the action runs) and writes `.github/workflows/pr-visual-recap.yml` into your repo. The workflow calls **published CLI subcommands** through `npx @agent-native/
|
|
105
|
+
This installs the `visual-plan` skill (which includes the `visual-recap` skill the action runs) and writes `.github/workflows/pr-visual-recap.yml` into your repo. The workflow calls **published CLI subcommands** through `npx @agent-native/recap-cli@latest recap <subcommand>` — including `gate`, `collect-diff`, `block-reference`, `scan`, `build-prompt`, `publish`, `shot`, `comment`, `check`, and `usage` — so nothing is copied into your repo as helper scripts. `setup` and `doctor` are the interactive helpers you run locally; `gate` is the security-gate step the workflow runs before every recap.
|
|
106
106
|
|
|
107
107
|
Then run the guided setup helper:
|
|
108
108
|
|
|
109
109
|
```bash
|
|
110
|
-
npx @agent-native/
|
|
111
|
-
npx @agent-native/
|
|
110
|
+
npx @agent-native/recap-cli@latest recap setup
|
|
111
|
+
npx @agent-native/recap-cli@latest recap doctor
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
`recap setup` refreshes the workflow, uses `gh` to set GitHub Actions
|
|
@@ -118,7 +118,7 @@ set. Secret values are sent to `gh` through stdin, not command arguments. Commit
|
|
|
118
118
|
the generated workflow file and open a PR to see it run.
|
|
119
119
|
|
|
120
120
|
By default, the workflow builds its agent prompt from the latest bundled
|
|
121
|
-
`visual-recap` guidance in `@agent-native/
|
|
121
|
+
`visual-recap` guidance in `@agent-native/recap-cli@latest`, including any sibling
|
|
122
122
|
reference files the skill ships with. If your repo intentionally customizes and
|
|
123
123
|
pins its committed `visual-recap` folder, set the repository variable
|
|
124
124
|
`VISUAL_RECAP_SKILL_SOURCE=repo`.
|
|
@@ -140,8 +140,8 @@ To configure it during guided setup, pass the same JSON value to `--runs-on`,
|
|
|
140
140
|
then validate the workflow and runner availability with `doctor`:
|
|
141
141
|
|
|
142
142
|
```bash
|
|
143
|
-
npx @agent-native/
|
|
144
|
-
npx @agent-native/
|
|
143
|
+
npx @agent-native/recap-cli@latest recap setup --runs-on '["self-hosted","linux","x64","visual-recap"]'
|
|
144
|
+
npx @agent-native/recap-cli@latest recap doctor
|
|
145
145
|
```
|
|
146
146
|
|
|
147
147
|
The lightweight security gate defaults separately to GitHub-hosted
|
|
@@ -186,7 +186,7 @@ If the variable is unset, the action uses `claude`.
|
|
|
186
186
|
|
|
187
187
|
Beyond the backend, these repository variables tune how the agent runs:
|
|
188
188
|
|
|
189
|
-
- **`VISUAL_RECAP_MODEL`** pins the model passed to the CLI (`--model`) — for example `gpt-5.6-
|
|
189
|
+
- **`VISUAL_RECAP_MODEL`** pins the model passed to the CLI (`--model`) — for example `gpt-5.6-luna` for Codex, a Claude model id, or `deepseek-chat` for DeepSeek. It is required for `openai-compatible`. For the **Claude** backend, leaving it unset now defaults to `claude-sonnet-5`; set the variable explicitly to use a different Claude model, such as the cheaper `claude-haiku-4-5`. For the **Codex** backend, leaving it unset uses the Codex CLI's own default model.
|
|
190
190
|
- **`VISUAL_RECAP_REASONING`** sets the reasoning depth: `none`, `minimal`, `low`, `medium`, `high`, or `xhigh`. It applies to the Codex backend; Claude's reasoning is model-driven, so this variable is ignored there.
|
|
191
191
|
- **`VISUAL_RECAP_BASE_URL`** selects the HTTP(S) base URL for the `openai-compatible` backend. Use the provider's OpenAI-compatible endpoint, such as DeepSeek or Kimi, without embedding credentials in the URL.
|
|
192
192
|
- **`VISUAL_RECAP_SKILL_SOURCE`** controls prompt freshness: `auto`/unset uses the latest bundled skill guidance, while `repo` pins to the committed repo-local `visual-recap` skill folder.
|
|
@@ -195,6 +195,24 @@ For example, to run the recap on Codex with GPT-5.6 Sol at high reasoning, set t
|
|
|
195
195
|
|
|
196
196
|
For DeepSeek, set `VISUAL_RECAP_AGENT=openai-compatible`, `VISUAL_RECAP_BASE_URL=https://api.deepseek.com/v1`, `VISUAL_RECAP_MODEL=deepseek-chat`, and the `VISUAL_RECAP_API_KEY` secret. Kimi works the same way with its OpenAI-compatible base URL and model id. Other OpenAI-compatible providers use the same three settings.
|
|
197
197
|
|
|
198
|
+
## Cost
|
|
199
|
+
|
|
200
|
+
Each recap run is a full agentic coding-agent session reading a real diff, not a cheap templated summary, so its cost tracks model choice and how often it runs:
|
|
201
|
+
|
|
202
|
+
- **A full session per PR push.** The default trigger fires on `synchronize`, so a PR that gets pushed to ten times runs the agent ten times.
|
|
203
|
+
- **The whole PR each time**, not just the commits since the last run — cost scales with total PR size, not incremental diff size.
|
|
204
|
+
- **Diff input capped at ~600KB.** This bounds the worst case per run, but large diffs still cost meaningfully more than small ones.
|
|
205
|
+
- **One automatic retry on failure**, which can roughly double the cost of a run that fails transiently.
|
|
206
|
+
|
|
207
|
+
To reduce cost:
|
|
208
|
+
|
|
209
|
+
- **Pin a cheaper model.** For Claude, set `VISUAL_RECAP_MODEL=claude-haiku-4-5` for simple or small repos — it's the cheapest Claude tier; `claude-sonnet-5` (the default) is the balanced tier.
|
|
210
|
+
- **Switch to Codex with a cheaper model.** Set `VISUAL_RECAP_AGENT=codex` with `VISUAL_RECAP_MODEL=gpt-5.6-luna` (the cheapest GPT-5.6 tier) or `gpt-5.6-terra` (mid-tier), and set `VISUAL_RECAP_REASONING=low` to cut reasoning-token spend further. Reasoning depth only applies to Codex.
|
|
211
|
+
- **Point at a cheaper OpenAI-compatible provider.** Set `VISUAL_RECAP_AGENT=openai-compatible` with `VISUAL_RECAP_BASE_URL`/`VISUAL_RECAP_MODEL`/`VISUAL_RECAP_API_KEY` targeting DeepSeek, Kimi, or any other OpenAI-compatible endpoint.
|
|
212
|
+
- **Recap less often.** Edit the installed workflow's `on.pull_request.types` from `[opened, synchronize, reopened, ready_for_review, closed]` to `[opened, ready_for_review, closed]` so it recaps only when a PR opens and when it merges, instead of on every push.
|
|
213
|
+
|
|
214
|
+
Every run records what it actually spent: the workflow's `recap usage` step attaches token and cost usage to the published plan, so you can look at real spend per run instead of guessing.
|
|
215
|
+
|
|
198
216
|
## Secrets and variables
|
|
199
217
|
|
|
200
218
|
Set these in your repository's **Settings → Secrets and variables → Actions**.
|
|
@@ -225,11 +243,11 @@ Plans app.
|
|
|
225
243
|
|
|
226
244
|
**Solo: a personal token still works.** Mint it with `npx @agent-native/core@latest connect`
|
|
227
245
|
against your Plans app. For the hosted app, this also writes a local
|
|
228
|
-
publish-token file that `npx @agent-native/
|
|
246
|
+
publish-token file that `npx @agent-native/recap-cli@latest recap setup` can read:
|
|
229
247
|
|
|
230
248
|
```bash
|
|
231
249
|
npx @agent-native/core@latest connect https://plan.agent-native.com --client codex
|
|
232
|
-
npx @agent-native/
|
|
250
|
+
npx @agent-native/recap-cli@latest recap setup
|
|
233
251
|
```
|
|
234
252
|
|
|
235
253
|
If you prefer manual setup, paste the token into the GitHub secret. Use a
|
|
@@ -238,18 +256,18 @@ real token.
|
|
|
238
256
|
|
|
239
257
|
### Optional (only if you change defaults)
|
|
240
258
|
|
|
241
|
-
| Secret / variable | Default
|
|
242
|
-
| ------------------------ |
|
|
243
|
-
| `OPENAI_API_KEY` | —
|
|
244
|
-
| `VISUAL_RECAP_API_KEY` | —
|
|
245
|
-
| `VISUAL_RECAP_AGENT` | `claude`
|
|
246
|
-
| `VISUAL_RECAP_BASE_URL` | required for compatible backend
|
|
247
|
-
| `VISUAL_RECAP_MODEL` | required for compatible backend | Variable. Provider model id for OpenAI-compatible backends
|
|
248
|
-
| `VISUAL_RECAP_REASONING` | each model's default
|
|
249
|
-
| `RECAP_CLI_VERSION` | `latest`
|
|
250
|
-
| `PLAN_RECAP_APP_URL` | `https://plan.agent-native.com`
|
|
259
|
+
| Secret / variable | Default | When you need it |
|
|
260
|
+
| ------------------------ | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
261
|
+
| `OPENAI_API_KEY` | — | Secret. Set together with `VISUAL_RECAP_AGENT=codex` to run the recap with Codex instead. |
|
|
262
|
+
| `VISUAL_RECAP_API_KEY` | — | Secret. Set with `VISUAL_RECAP_AGENT=openai-compatible` for DeepSeek, Kimi, or another OpenAI-compatible provider. |
|
|
263
|
+
| `VISUAL_RECAP_AGENT` | `claude` | Variable. Selects the coding-agent backend (`claude`, `codex`, or `openai-compatible`). |
|
|
264
|
+
| `VISUAL_RECAP_BASE_URL` | required for compatible backend | Variable. HTTP(S) base URL for the OpenAI-compatible backend; credentials are rejected. |
|
|
265
|
+
| `VISUAL_RECAP_MODEL` | `claude-sonnet-5` for Claude; required for compatible backend | Variable. Provider model id for OpenAI-compatible backends (required there). For Claude, unset now defaults to `claude-sonnet-5` — set it to override, e.g. `claude-haiku-4-5` for the cheapest tier. For Codex, unset uses the Codex CLI's own default. |
|
|
266
|
+
| `VISUAL_RECAP_REASONING` | each model's default | Variable. Reasoning depth: `none`, `minimal`, `low`, `medium`, `high`, or `xhigh`. Applies to the Codex backend. |
|
|
267
|
+
| `RECAP_CLI_VERSION` | `latest` | Variable. Pins the `@agent-native/recap-cli` version the workflow installs — e.g. `1.5.0`. See [Version pinning](#version-pinning-copy-variant). |
|
|
268
|
+
| `PLAN_RECAP_APP_URL` | `https://plan.agent-native.com` | Secret. Only when self-hosting the Plans app at a different origin. |
|
|
251
269
|
|
|
252
|
-
The workflow auto-detects how to invoke its helper CLI (local source inside this monorepo, the published `@agent-native/
|
|
270
|
+
The workflow auto-detects how to invoke its helper CLI (local source inside this monorepo, the published `@agent-native/recap-cli` elsewhere), so there is no `RECAP_CLI` variable to set.
|
|
253
271
|
|
|
254
272
|
## Inline screenshot in the comment
|
|
255
273
|
|
|
@@ -390,9 +408,9 @@ recap without sending recap content to the Agent-Native Plan database, run the
|
|
|
390
408
|
same helper flow locally in local-files mode instead:
|
|
391
409
|
|
|
392
410
|
```bash
|
|
393
|
-
npx @agent-native/
|
|
394
|
-
npx @agent-native/
|
|
395
|
-
npx @agent-native/
|
|
411
|
+
npx @agent-native/recap-cli@latest recap collect-diff --base main --head HEAD --out recap.diff --stat recap.stat
|
|
412
|
+
npx @agent-native/recap-cli@latest recap scan --diff recap.diff
|
|
413
|
+
npx @agent-native/recap-cli@latest recap build-prompt --pr 123 --diff recap.diff --stat recap.stat --local-files --local-dir plans/pr-123-visual-recap
|
|
396
414
|
```
|
|
397
415
|
|
|
398
416
|
Give the generated `recap-prompt.md` to your coding agent. In local-files mode
|
|
@@ -422,7 +440,7 @@ The recap is a review aid layered on top of the normal PR flow:
|
|
|
422
440
|
|
|
423
441
|
## Version pinning (copy variant) {#version-pinning-copy-variant}
|
|
424
442
|
|
|
425
|
-
By default the copy-variant workflow installs `@agent-native/
|
|
443
|
+
By default the copy-variant workflow installs `@agent-native/recap-cli@latest` at run time so every recap run automatically picks up the newest CLI. If your CI needs reproducible tooling, set the **`RECAP_CLI_VERSION`** repository variable to pin the installed version:
|
|
426
444
|
|
|
427
445
|
1. Go to your repo's **Settings → Secrets and variables → Actions → Variables**.
|
|
428
446
|
2. Create a variable named `RECAP_CLI_VERSION` with a value like `1.5.0`.
|
|
@@ -433,7 +451,7 @@ For the reusable-caller variant, use the `cli-version` input instead (see [Versi
|
|
|
433
451
|
|
|
434
452
|
## Secret-scan allowlist
|
|
435
453
|
|
|
436
|
-
Before publishing a recap the workflow runs `npx @agent-native/
|
|
454
|
+
Before publishing a recap the workflow runs `npx @agent-native/recap-cli@latest recap scan` to detect likely secrets in the diff. Any PR whose diff matches a known-secret pattern is blocked with an explanatory comment — the recap is not published, and no diff content is sent to the coding agent.
|
|
437
455
|
|
|
438
456
|
In rare cases a repo has intentional test fixtures or non-secret strings that superficially resemble secret patterns (e.g., a fixture key in a test file). To suppress a false positive, create `.github/recap-scan-allowlist` in the root of your repository.
|
|
439
457
|
|
|
@@ -467,7 +485,7 @@ The allowlist is only consulted by the secret-scan gate. It does not affect what
|
|
|
467
485
|
|
|
468
486
|
### Why use the reusable variant?
|
|
469
487
|
|
|
470
|
-
The default installer copies the full ~360-line workflow YAML into your repo (the **copy** option). This is the right choice for air-gapped repos or repos that need to audit every line of what runs. The downside is that bug fixes and improvements never reach you — you need to re-run `npx @agent-native/
|
|
488
|
+
The default installer copies the full ~360-line workflow YAML into your repo (the **copy** option). This is the right choice for air-gapped repos or repos that need to audit every line of what runs. The downside is that bug fixes and improvements never reach you — you need to re-run `npx @agent-native/recap-cli@latest recap setup` manually after each release.
|
|
471
489
|
|
|
472
490
|
The **reusable** option writes a thin ~20-line caller instead. It delegates to `BuilderIO/agent-native/.github/workflows/pr-visual-recap-reusable.yml` via `uses:`. Every caller automatically picks up the latest logic when the workflow runs, with no local update needed.
|
|
473
491
|
|
|
@@ -480,7 +498,7 @@ The **reusable** option writes a thin ~20-line caller instead. It delegates to `
|
|
|
480
498
|
|
|
481
499
|
### Caller snippet
|
|
482
500
|
|
|
483
|
-
This is what `npx @agent-native/
|
|
501
|
+
This is what `npx @agent-native/recap-cli@latest recap setup --reusable` writes (or you can paste it manually):
|
|
484
502
|
|
|
485
503
|
```yaml
|
|
486
504
|
name: PR Visual Recap
|
|
@@ -517,7 +535,7 @@ jobs:
|
|
|
517
535
|
skill-source: ${{ vars.VISUAL_RECAP_SKILL_SOURCE || 'auto' }}
|
|
518
536
|
runs-on: ${{ vars.VISUAL_RECAP_RUNS_ON || '"ubuntu-latest"' }}
|
|
519
537
|
gate-runs-on: ${{ vars.VISUAL_RECAP_GATE_RUNS_ON || 'ubuntu-latest' }}
|
|
520
|
-
# cli-version: "latest" # pin to a specific @agent-native/
|
|
538
|
+
# cli-version: "latest" # pin to a specific @agent-native/recap-cli version
|
|
521
539
|
```
|
|
522
540
|
|
|
523
541
|
The same secrets and variables described in [Secrets and variables](#secrets-and-variables) apply — set them in your repo settings the same way as for the copy variant. The reusable caller forwards `VISUAL_RECAP_RUNS_ON` through its JSON `runs-on` input for the full recap job and `VISUAL_RECAP_GATE_RUNS_ON` through its plain-label `gate-runs-on` input for the metadata-only gate. The latter is used only for trusted same-repository authors; other PRs use GitHub-hosted `ubuntu-latest`. Omitting either input preserves its `ubuntu-latest` default.
|
|
@@ -526,15 +544,15 @@ The same secrets and variables described in [Secrets and variables](#secrets-and
|
|
|
526
544
|
|
|
527
545
|
```bash
|
|
528
546
|
# Write the thin caller instead of the full copy:
|
|
529
|
-
npx @agent-native/
|
|
547
|
+
npx @agent-native/recap-cli@latest recap setup --reusable
|
|
530
548
|
|
|
531
549
|
# Or with a pinned ref for reproducibility:
|
|
532
|
-
npx @agent-native/
|
|
550
|
+
npx @agent-native/recap-cli@latest recap setup --reusable --ref v1.2.3
|
|
533
551
|
```
|
|
534
552
|
|
|
535
553
|
Both variants write the workflow to `.github/workflows/pr-visual-recap.yml`. If an existing workflow is already there and differs, the command refuses and tells you to pass `--force` to overwrite.
|
|
536
554
|
|
|
537
|
-
After writing, run `npx @agent-native/
|
|
555
|
+
After writing, run `npx @agent-native/recap-cli@latest recap doctor` as usual to confirm secrets are configured.
|
|
538
556
|
|
|
539
557
|
### Version pinning
|
|
540
558
|
|
|
@@ -544,7 +562,7 @@ By default the caller references `@main`, which always uses the latest published
|
|
|
544
562
|
uses: BuilderIO/agent-native/.github/workflows/pr-visual-recap-reusable.yml@v1.2.3
|
|
545
563
|
```
|
|
546
564
|
|
|
547
|
-
The `cli-version` input controls which `@agent-native/
|
|
565
|
+
The `cli-version` input controls which `@agent-native/recap-cli` version runs inside the workflow — leave it at `"latest"` to track the newest release, or pin it to a version string (e.g. `"1.5.0"`) for full reproducibility.
|
|
548
566
|
|
|
549
567
|
### workflow_call event context
|
|
550
568
|
|
|
@@ -226,6 +226,20 @@ If the first pass still has answerable decisions, the agent can place an
|
|
|
226
226
|
**Open Questions** form at the bottom of the same plan. Answering it and sending
|
|
227
227
|
it to the agent starts a revision turn against the existing plan.
|
|
228
228
|
|
|
229
|
+
## Cost and model choice
|
|
230
|
+
|
|
231
|
+
Generating a plan or recap runs a full agentic session against your coding
|
|
232
|
+
agent's LLM, not a lightweight template fill, so cost scales with the size of
|
|
233
|
+
the diff or plan and the model you choose.
|
|
234
|
+
|
|
235
|
+
- The app's own default chat model is Sonnet 5; change it any time in
|
|
236
|
+
**Settings**. Haiku is the cheaper Claude option, and Luna is the cheaper
|
|
237
|
+
option in the GPT-5.6 family.
|
|
238
|
+
- Automated PR recaps from the GitHub Action run separately from the
|
|
239
|
+
interactive app and have their own model and cost knobs — see
|
|
240
|
+
[PR Visual Recap](/docs/pr-visual-recap) for `VISUAL_RECAP_MODEL`,
|
|
241
|
+
`VISUAL_RECAP_AGENT`, and `VISUAL_RECAP_REASONING`.
|
|
242
|
+
|
|
229
243
|
## What you can do with it
|
|
230
244
|
|
|
231
245
|
- **Review before implementation.** React to diagrams, wireframes, option tabs,
|
|
@@ -24,9 +24,9 @@ status such as draft, review, approved, or needs changes.
|
|
|
24
24
|
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
25
25
|
| `registerReviewableResource()` | Register a resource type and optional access resolver for review actions. |
|
|
26
26
|
| Comment actions | `list-review-comments`, `create-review-comment`, `reply-review-comment`, `resolve-review-thread`, and `delete-review-comment`. |
|
|
27
|
-
| Feedback actions | `get-review-feedback` and `consume-review-feedback` for
|
|
27
|
+
| Feedback actions | `get-review-feedback`, `send-review-thread-to-agent`, and `consume-review-feedback` for root-thread agent queues and human handoffs. |
|
|
28
28
|
| Review status action | `set-review-status` for draft, in review, approved, and changes requested states. |
|
|
29
|
-
| `ReviewThreadPanel` | Drop-in React panel with
|
|
29
|
+
| `ReviewThreadPanel` | Drop-in React panel with capability-gated composer, reply, resolve, delete, and custom thread-action controls. |
|
|
30
30
|
| `ReviewStatusBadge` | Controlled status badge for app headers, sidebars, and review panels. |
|
|
31
31
|
| Review hooks | `useReviewComments()`, `useCreateReviewComment()`, `useReplyReviewComment()`, `useResolveReviewThread()`, `useDeleteReviewComment()`, and `useSetReviewStatus()`. |
|
|
32
32
|
| Mentions helpers | `extractReviewMentions()` and `normalizeReviewMentions()` for `@[Label](mailto:email@example.com)` tokens. |
|
|
@@ -42,6 +42,13 @@ specialize anchor shapes, but the common model preserves:
|
|
|
42
42
|
- `parentCommentId` for replies
|
|
43
43
|
- optional `mentions`
|
|
44
44
|
- optional `anchor` or `resolutionTarget`
|
|
45
|
+
- optional `resolutionNote` on a resolved root thread
|
|
46
|
+
|
|
47
|
+
`list-review-comments` supports anonymous reads for resources whose access
|
|
48
|
+
resolver grants public viewer access. Public viewer responses redact ownership,
|
|
49
|
+
organization, email, and actor metadata while preserving safe display names and
|
|
50
|
+
the caller-specific `canDelete` capability. Its `summary` reports unpaginated
|
|
51
|
+
open-root and agent-queue counts even when the returned comment page is bounded.
|
|
45
52
|
|
|
46
53
|
## Register A Resource {#register-resource}
|
|
47
54
|
|
|
@@ -76,6 +83,9 @@ export function DocumentReview({ documentId }: { documentId: string }) {
|
|
|
76
83
|
resourceType="document"
|
|
77
84
|
resourceId={documentId}
|
|
78
85
|
targetId="intro-section"
|
|
86
|
+
canReply
|
|
87
|
+
canResolve={false}
|
|
88
|
+
canDeleteComment={(comment) => comment.canDelete === true}
|
|
79
89
|
/>
|
|
80
90
|
);
|
|
81
91
|
}
|
|
@@ -93,6 +103,10 @@ actions and thread UI.
|
|
|
93
103
|
- Agents can read open review feedback before changing code or content.
|
|
94
104
|
- `consumedAt` and `resolved` are separate. An agent can consume a piece of
|
|
95
105
|
feedback without closing the reviewer-visible thread.
|
|
106
|
+
- The root comment owns routing. A human-targeted root is absent from the agent
|
|
107
|
+
queue; sending it back to the agent clears its previous consumption marker.
|
|
108
|
+
- Agents can pass `resolutionNote` to `resolve-review-thread` so verification
|
|
109
|
+
evidence remains attached to the resolved root.
|
|
96
110
|
|
|
97
111
|
## What's next
|
|
98
112
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.101.3",
|
|
4
4
|
"description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
|
|
5
5
|
"homepage": "https://github.com/BuilderIO/agent-native#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -156,6 +156,7 @@
|
|
|
156
156
|
"./review/actions/consume-review-feedback": "./dist/review/actions/consume-review-feedback.js",
|
|
157
157
|
"./review/actions/get-review-feedback": "./dist/review/actions/get-review-feedback.js",
|
|
158
158
|
"./review/actions/set-review-status": "./dist/review/actions/set-review-status.js",
|
|
159
|
+
"./review/actions/send-review-thread-to-agent": "./dist/review/actions/send-review-thread-to-agent.js",
|
|
159
160
|
"./comments-review/actions/list-review-comments": "./dist/review/actions/list-review-comments.js",
|
|
160
161
|
"./comments-review/actions/create-review-comment": "./dist/review/actions/create-review-comment.js",
|
|
161
162
|
"./comments-review/actions/reply-review-comment": "./dist/review/actions/reply-review-comment.js",
|
|
@@ -164,6 +165,7 @@
|
|
|
164
165
|
"./comments-review/actions/consume-review-feedback": "./dist/review/actions/consume-review-feedback.js",
|
|
165
166
|
"./comments-review/actions/get-review-feedback": "./dist/review/actions/get-review-feedback.js",
|
|
166
167
|
"./comments-review/actions/set-review-status": "./dist/review/actions/set-review-status.js",
|
|
168
|
+
"./comments-review/actions/send-review-thread-to-agent": "./dist/review/actions/send-review-thread-to-agent.js",
|
|
167
169
|
"./sharing": "./dist/sharing/index.js",
|
|
168
170
|
"./sharing/actions/share-resource": "./dist/sharing/actions/share-resource.js",
|
|
169
171
|
"./sharing/actions/unshare-resource": "./dist/sharing/actions/unshare-resource.js",
|
|
@@ -333,6 +335,7 @@
|
|
|
333
335
|
"y-protocols": "^1.0.7",
|
|
334
336
|
"yjs": "^13.6.31",
|
|
335
337
|
"zod": "^4.3.6",
|
|
338
|
+
"@agent-native/recap-cli": "0.4.0",
|
|
336
339
|
"@agent-native/toolkit": "^0.4.10"
|
|
337
340
|
},
|
|
338
341
|
"devDependencies": {
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { appPath, useActionQuery, useT } from "@agent-native/core/client";
|
|
2
|
-
import { IconBrandSlack } from "@tabler/icons-react";
|
|
3
|
-
|
|
4
|
-
interface SlackInstallation {
|
|
5
|
-
status: string;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
interface SlackInstallationsResponse {
|
|
9
|
-
oauthConfigured: boolean;
|
|
10
|
-
installations: SlackInstallation[];
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Contextual nudge shown in the share popover's Link tab for public clips.
|
|
15
|
-
*
|
|
16
|
-
* A public Clips link unfurls into a playable video when pasted in a connected
|
|
17
|
-
* Slack workspace, but that integration is otherwise only discoverable in
|
|
18
|
-
* Settings. When a workspace is connected we confirm the payoff; when none is,
|
|
19
|
-
* clip owners/admins get a one-click link to connect one in Settings.
|
|
20
|
-
*
|
|
21
|
-
* Only rendered for public clips (the caller gates on `isPublic`), so the
|
|
22
|
-
* `list-slack-installations` query never runs for private shares.
|
|
23
|
-
*/
|
|
24
|
-
export function SlackShareHint({ canManage }: { canManage: boolean }) {
|
|
25
|
-
const t = useT();
|
|
26
|
-
const slack = useActionQuery<SlackInstallationsResponse>(
|
|
27
|
-
"list-slack-installations",
|
|
28
|
-
undefined,
|
|
29
|
-
{ retry: false },
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
const data = slack.data;
|
|
33
|
-
const connected =
|
|
34
|
-
data?.installations?.some((i) => i.status === "connected") ?? false;
|
|
35
|
-
|
|
36
|
-
if (connected) {
|
|
37
|
-
return (
|
|
38
|
-
<div className="flex items-center gap-2 rounded-md bg-muted/35 px-2.5 py-1.5 text-xs text-muted-foreground">
|
|
39
|
-
<IconBrandSlack className="h-4 w-4 shrink-0 text-muted-foreground" />
|
|
40
|
-
<span className="min-w-0 truncate">
|
|
41
|
-
{t("slackShareHint.playsInline")}
|
|
42
|
-
</span>
|
|
43
|
-
</div>
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// No workspace connected yet. Connecting needs the deployment's Slack OAuth
|
|
48
|
-
// credentials, so only point managers at Settings when it's actually set up —
|
|
49
|
-
// otherwise the Connect button there is disabled and the link is a dead end.
|
|
50
|
-
// While the query is loading or errored, `data` is undefined and we render
|
|
51
|
-
// nothing rather than guess at the workspace state.
|
|
52
|
-
if (!data || !canManage || !data.oauthConfigured) return null;
|
|
53
|
-
|
|
54
|
-
return (
|
|
55
|
-
<a
|
|
56
|
-
href={appPath("/settings#slack")}
|
|
57
|
-
className="flex items-center gap-2 rounded-md bg-muted/35 px-2.5 py-1.5 text-xs text-muted-foreground transition-colors hover:bg-muted/55"
|
|
58
|
-
>
|
|
59
|
-
<IconBrandSlack className="h-4 w-4 shrink-0 text-muted-foreground" />
|
|
60
|
-
<span className="min-w-0 flex-1 truncate">
|
|
61
|
-
{t("slackShareHint.makeInline")}
|
|
62
|
-
</span>
|
|
63
|
-
<span className="shrink-0 font-medium text-primary">
|
|
64
|
-
{t("slackShareHint.connect")}
|
|
65
|
-
</span>
|
|
66
|
-
</a>
|
|
67
|
-
);
|
|
68
|
-
}
|