@agent-native/core 0.94.3 → 0.95.1
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 +16 -0
- package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +13 -0
- package/corpus/core/docs/content/locales/de-DE/template-design.mdx +18 -0
- package/corpus/core/docs/content/locales/es-ES/template-design.mdx +16 -0
- package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +17 -0
- package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +16 -0
- package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +17 -0
- package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +15 -0
- package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +16 -0
- package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +11 -0
- package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +12 -0
- package/corpus/core/docs/content/pr-visual-recap.mdx +20 -12
- package/corpus/core/docs/content/template-design.mdx +16 -0
- package/corpus/core/package.json +2 -2
- package/corpus/core/src/agent/engine/ai-sdk-engine.ts +3 -0
- package/corpus/core/src/agent/engine/registry.ts +6 -1
- package/corpus/core/src/agent/engine/types.ts +2 -0
- package/corpus/core/src/agent/production-agent.ts +20 -0
- package/corpus/core/src/agent/thread-data-builder.ts +41 -17
- package/corpus/core/src/cli/code-agent-executor.ts +61 -1
- package/corpus/core/src/cli/pr-visual-recap-workflow.ts +1 -1
- package/corpus/core/src/cli/recap.ts +262 -25
- package/corpus/core/src/client/AssistantChat.tsx +250 -25
- package/corpus/core/src/client/chat/tool-call-display.tsx +1 -1
- package/corpus/core/src/client/chat/use-reconnect-reader-owner.ts +28 -0
- package/corpus/core/src/client/guided-questions.tsx +9 -1
- package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +6 -7
- package/corpus/core/src/client/settings/UsageSection.tsx +26 -5
- package/corpus/core/src/client/sse-event-processor.ts +90 -21
- package/corpus/core/src/connections/catalog.ts +2 -2
- package/corpus/core/src/deploy/build.ts +3 -0
- package/corpus/core/src/index.ts +2 -0
- package/corpus/core/src/integrations/catalog.ts +2 -2
- package/corpus/core/src/server/auth.ts +1 -1
- package/corpus/core/src/server/credential-provider.ts +7 -3
- package/corpus/core/src/shared/cache-control.ts +10 -4
- package/corpus/core/src/usage/store.ts +82 -20
- package/corpus/templates/analytics/app/lib/data-sources.ts +5 -4
- package/corpus/templates/analytics/changelog/2026-07-10-slack-token-setup-marked-legacy.md +6 -0
- package/corpus/templates/analytics/server/lib/credential-keys.ts +6 -2
- package/corpus/templates/brain/changelog/2026-07-10-slack-backfill-token-marked-legacy.md +6 -0
- package/corpus/templates/brain/server/register-secrets.ts +2 -2
- package/corpus/templates/clips/app/components/library/library-layout.tsx +7 -1
- package/corpus/templates/clips/app/components/library/page-header.tsx +19 -3
- package/corpus/templates/clips/app/routes/_app.library._index.tsx +16 -12
- package/corpus/templates/clips/changelog/2026-07-10-new-recording-appears-once-when-the-library-sidebar-is-open.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-10-slack-token-fallback-guidance.md +6 -0
- package/corpus/templates/clips/server/register-secrets.ts +1 -1
- package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +0 -66
- package/corpus/templates/content/app/routes/_app.local-files.tsx +7 -47
- package/corpus/templates/content/changelog/2026-07-10-local-folders-now-wait-for-an-explicit-pull-before-content-r.md +6 -0
- package/corpus/templates/content/package.json +1 -1
- package/corpus/templates/design/actions/generate-design.ts +128 -31
- package/corpus/templates/design/actions/present-design-variants.ts +37 -9
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +9 -3
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +32 -10
- package/corpus/templates/design/app/components/design/QuestionFlow.tsx +2 -2
- package/corpus/templates/design/app/components/design/TweaksPanel.tsx +9 -1
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +7 -5
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +3 -0
- package/corpus/templates/design/app/global.css +10 -0
- package/corpus/templates/design/app/hooks/use-question-flow.ts +9 -2
- package/corpus/templates/design/app/i18n/zh-TW.ts +1 -0
- package/corpus/templates/design/app/i18n-data.ts +21 -11
- package/corpus/templates/design/changelog/2026-07-10-editor-panels-are-easier-to-distinguish-and-design-intake-qu.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-interact-mode-now-stays-on-the-full-canvas-matches-edit-visu.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-new-web-designs-open-at-desktop-size-and-adapt-across-mobile.md +6 -0
- package/corpus/templates/design/changelog/2026-07-10-tweaks-now-link-to-full-documentation.md +6 -0
- package/corpus/templates/design/server/plugins/agent-chat.ts +2 -0
- package/corpus/templates/mail/app/i18n/ar-SA.ts +3 -3
- package/corpus/templates/mail/app/i18n/de-DE.ts +3 -3
- package/corpus/templates/mail/app/i18n/en-US.ts +4 -3
- package/corpus/templates/mail/app/i18n/es-ES.ts +3 -3
- package/corpus/templates/mail/app/i18n/fr-FR.ts +3 -3
- package/corpus/templates/mail/app/i18n/hi-IN.ts +3 -3
- package/corpus/templates/mail/app/i18n/ja-JP.ts +3 -3
- package/corpus/templates/mail/app/i18n/ko-KR.ts +3 -3
- package/corpus/templates/mail/app/i18n/pt-BR.ts +3 -3
- package/corpus/templates/mail/app/i18n/zh-CN.ts +3 -3
- package/corpus/templates/mail/app/i18n/zh-TW.ts +3 -3
- package/corpus/templates/mail/changelog/2026-07-10-slack-intake-marked-legacy.md +6 -0
- package/corpus/templates/mail/server/lib/env-config.ts +5 -4
- package/corpus/templates/plan/actions/record-recap-usage-cost.ts +49 -0
- package/corpus/templates/plan/actions/record-recap-usage.ts +15 -22
- package/corpus/templates/plan/package.json +1 -1
- package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
- package/dist/agent/engine/ai-sdk-engine.js +3 -0
- package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
- package/dist/agent/engine/registry.d.ts +1 -1
- package/dist/agent/engine/registry.d.ts.map +1 -1
- package/dist/agent/engine/registry.js +2 -0
- package/dist/agent/engine/registry.js.map +1 -1
- package/dist/agent/engine/types.d.ts +2 -0
- package/dist/agent/engine/types.d.ts.map +1 -1
- package/dist/agent/engine/types.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +20 -0
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/thread-data-builder.d.ts.map +1 -1
- package/dist/agent/thread-data-builder.js +36 -18
- package/dist/agent/thread-data-builder.js.map +1 -1
- package/dist/cli/code-agent-executor.d.ts +2 -0
- package/dist/cli/code-agent-executor.d.ts.map +1 -1
- package/dist/cli/code-agent-executor.js +52 -3
- package/dist/cli/code-agent-executor.js.map +1 -1
- package/dist/cli/pr-visual-recap-workflow.d.ts +1 -1
- package/dist/cli/pr-visual-recap-workflow.d.ts.map +1 -1
- package/dist/cli/pr-visual-recap-workflow.js +1 -1
- package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
- package/dist/cli/recap.d.ts +22 -2
- package/dist/cli/recap.d.ts.map +1 -1
- package/dist/cli/recap.js +199 -22
- package/dist/cli/recap.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +3 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +200 -28
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/chat/tool-call-display.js +1 -1
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/chat/use-reconnect-reader-owner.d.ts +11 -0
- package/dist/client/chat/use-reconnect-reader-owner.d.ts.map +1 -0
- package/dist/client/chat/use-reconnect-reader-owner.js +21 -0
- package/dist/client/chat/use-reconnect-reader-owner.js.map +1 -0
- package/dist/client/guided-questions.d.ts.map +1 -1
- package/dist/client/guided-questions.js +5 -1
- package/dist/client/guided-questions.js.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
- package/dist/client/integrations/IntegrationsPanel.js +5 -7
- package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
- package/dist/client/settings/UsageSection.d.ts.map +1 -1
- package/dist/client/settings/UsageSection.js +12 -3
- package/dist/client/settings/UsageSection.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +67 -20
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/connections/catalog.d.ts +2 -2
- package/dist/connections/catalog.js +2 -2
- package/dist/connections/catalog.js.map +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +3 -1
- package/dist/deploy/build.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/catalog.js +2 -2
- package/dist/integrations/catalog.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +1 -1
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/auth.js +1 -1
- package/dist/server/auth.js.map +1 -1
- package/dist/server/credential-provider.d.ts +5 -3
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +7 -3
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/shared/cache-control.d.ts +8 -6
- package/dist/shared/cache-control.d.ts.map +1 -1
- package/dist/shared/cache-control.js +8 -3
- package/dist/shared/cache-control.js.map +1 -1
- package/dist/usage/store.d.ts +21 -0
- package/dist/usage/store.d.ts.map +1 -1
- package/dist/usage/store.js +54 -19
- package/dist/usage/store.js.map +1 -1
- package/docs/content/locales/ar-SA/template-design.mdx +13 -0
- package/docs/content/locales/de-DE/template-design.mdx +18 -0
- package/docs/content/locales/es-ES/template-design.mdx +16 -0
- package/docs/content/locales/fr-FR/template-design.mdx +17 -0
- package/docs/content/locales/hi-IN/template-design.mdx +16 -0
- package/docs/content/locales/ja-JP/template-design.mdx +17 -0
- package/docs/content/locales/ko-KR/template-design.mdx +15 -0
- package/docs/content/locales/pt-BR/template-design.mdx +16 -0
- package/docs/content/locales/zh-CN/template-design.mdx +11 -0
- package/docs/content/locales/zh-TW/template-design.mdx +12 -0
- package/docs/content/pr-visual-recap.mdx +20 -12
- package/docs/content/template-design.mdx +16 -0
- package/package.json +2 -2
package/corpus/README.md
CHANGED
package/corpus/core/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @agent-native/core
|
|
2
2
|
|
|
3
|
+
## 0.95.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 6baca78: Document Design tweak controls, inheritance, and context-specific overrides.
|
|
8
|
+
- 6baca78: Show each live tool call and streamed response once, keep thinking expanded by default, and simplify tool preparation status text.
|
|
9
|
+
- 6baca78: Keep public SSR responses fresh in Netlify's durable edge cache for an hour and ignore non-rendering query parameters when selecting cached responses.
|
|
10
|
+
- 6baca78: Allow hosted apps to use their deployment-level Google OAuth client credentials for signed-in connection flows while keeping user OAuth tokens scoped per user.
|
|
11
|
+
- 6baca78: Keep guided question forms visible while application state refreshes.
|
|
12
|
+
|
|
13
|
+
## 0.95.0
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- 2308575: Add an OpenAI-compatible PR visual recap backend for DeepSeek, Kimi, and other compatible providers.
|
|
18
|
+
|
|
3
19
|
## 0.94.3
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -364,6 +364,19 @@ pnpm dev
|
|
|
364
364
|
طبقات DOM/الكود داخل ملف واحد معروض. تعكس لوحة الطبقات هذا التقسيم: الشاشات
|
|
365
365
|
إطارات من المستوى الأعلى، وتحت الشاشة النشطة تظهر طبقات DOM/الكود المتداخلة.
|
|
366
366
|
|
|
367
|
+
### Tweaks
|
|
368
|
+
|
|
369
|
+
Tweaks هي عناصر تحكم مسماة لتغيير أهم الخصائص المرئية في التصميم بسرعة ومن دون
|
|
370
|
+
تحرير المصدر. يمكن أن يوفر التصميم عينات ألوان وخيارات مقسمة وشرائط تمرير ومفاتيح
|
|
371
|
+
لخصائص مثل لون التمييز ونصف قطر الزوايا والتباعد والكثافة والرؤية. يرتبط كل عنصر
|
|
372
|
+
تحكم بخاصية CSS مخصصة يستخدمها التصميم المعروض، لذلك تتحدث المعاينة أثناء التعديل.
|
|
373
|
+
|
|
374
|
+
تتبع Tweaks تسلسل المحرر. ترث نقاط التوقف المتجاوبة والحالات القيمة المحددة في
|
|
375
|
+
التصميم الأساسي. يؤدي تغيير tweak أثناء تنشيط نقطة توقف أو حالة إلى إنشاء تجاوز
|
|
376
|
+
لهذا السياق؛ وتؤدي إعادة ضبط عنصر التحكم إلى إزالة التجاوز واستعادة القيمة
|
|
377
|
+
الموروثة. تبقى القيم المحفوظة مع التصميم. استخدم **إضافة الضوابط القرص** أو اطلب
|
|
378
|
+
من الوكيل إظهار خاصية مرئية أخرى عندما لا تتضمن اللوحة عنصر التحكم المطلوب.
|
|
379
|
+
|
|
367
380
|
ثبّت `/visual-edit` عندما يحتاج وكيل البرمجة إلى فتح تطبيق محلي يعمل في
|
|
368
381
|
Design بدل إنشاء HTML نموذج أولي مستقل:
|
|
369
382
|
|
|
@@ -365,6 +365,24 @@ und Bearbeitung der DOM-/Code-Ebenen in einer gerenderten Datei gedacht. Das
|
|
|
365
365
|
Ebenenfenster spiegelt diese Trennung wider: Bildschirme sind Rahmen der
|
|
366
366
|
obersten Ebene, darunter liegen die DOM-/Code-Ebenen des aktiven Bildschirms.
|
|
367
367
|
|
|
368
|
+
### Tweaks
|
|
369
|
+
|
|
370
|
+
Tweaks sind benannte Steuerelemente, mit denen sich die wichtigsten visuellen
|
|
371
|
+
Eigenschaften eines Designs schnell und ohne Quellcodeänderung anpassen lassen.
|
|
372
|
+
Ein Design kann Farbfelder, segmentierte Optionen, Schieberegler und Schalter
|
|
373
|
+
für Akzentfarbe, Eckenradius, Abstände, Dichte oder Sichtbarkeit anbieten. Jedes
|
|
374
|
+
Steuerelement ist mit einer vom gerenderten Design verwendeten
|
|
375
|
+
CSS-Benutzereigenschaft verbunden, sodass die Vorschau beim Anpassen aktualisiert
|
|
376
|
+
wird.
|
|
377
|
+
|
|
378
|
+
Tweaks folgen der Kaskade des Editors. Responsive Breakpoints und Zustände erben
|
|
379
|
+
den im Basisdesign festgelegten Wert. Wird ein Tweak bei aktivem Breakpoint oder
|
|
380
|
+
Zustand geändert, entsteht eine Überschreibung für diesen Kontext; das Zurücksetzen
|
|
381
|
+
entfernt sie und stellt den geerbten Wert wieder her. Gespeicherte Werte bleiben
|
|
382
|
+
beim Design. Verwenden Sie **Fügen Sie Optimierungssteuerelemente hinzu** oder
|
|
383
|
+
bitten Sie den Agenten, eine weitere visuelle Eigenschaft bereitzustellen, wenn
|
|
384
|
+
das benötigte Steuerelement fehlt.
|
|
385
|
+
|
|
368
386
|
Installiere `/visual-edit`, wenn ein Coding Agent eine laufende lokale App in
|
|
369
387
|
Design öffnen soll, statt eigenständiges Prototype-HTML zu generieren:
|
|
370
388
|
|
|
@@ -364,6 +364,22 @@ comportamiento del prototipo y editar las capas DOM/código dentro de un archivo
|
|
|
364
364
|
renderizado. El panel de capas refleja esa división: las pantallas son marcos de
|
|
365
365
|
nivel superior, con capas DOM/código anidadas para la pantalla activa.
|
|
366
366
|
|
|
367
|
+
### Tweaks
|
|
368
|
+
|
|
369
|
+
Los tweaks son controles con nombre para cambiar rápidamente las propiedades visuales
|
|
370
|
+
más útiles de un diseño sin editar su código fuente. Un diseño puede ofrecer muestras
|
|
371
|
+
de color, opciones segmentadas, deslizadores e interruptores para propiedades como el
|
|
372
|
+
color de acento, el radio de las esquinas, el espaciado, la densidad o la visibilidad.
|
|
373
|
+
Cada control está conectado a una propiedad CSS personalizada utilizada por el diseño,
|
|
374
|
+
por lo que la vista previa se actualiza al ajustarlo.
|
|
375
|
+
|
|
376
|
+
Los tweaks siguen la cascada del editor. Los puntos de quiebre y estados heredan el
|
|
377
|
+
valor definido en el diseño base. Cambiar un tweak mientras un punto de quiebre o
|
|
378
|
+
estado está activo crea una modificación para ese contexto; restablecer el control
|
|
379
|
+
elimina la modificación y recupera el valor heredado. Los valores guardados permanecen
|
|
380
|
+
con el diseño. Usa **Agregar controles de ajuste** o pide al agente que exponga otra
|
|
381
|
+
propiedad visual cuando falte el control que necesitas.
|
|
382
|
+
|
|
367
383
|
Instala `/visual-edit` cuando un agente de código deba abrir una app local en
|
|
368
384
|
ejecución dentro de Design en lugar de generar HTML de prototipo independiente:
|
|
369
385
|
|
|
@@ -364,6 +364,23 @@ prototype et modifier les couches DOM/code dans un fichier rendu. Le panneau des
|
|
|
364
364
|
couches reflète cette séparation : les écrans sont des cadres de niveau
|
|
365
365
|
supérieur, avec les couches DOM/code imbriquées pour l'écran actif.
|
|
366
366
|
|
|
367
|
+
### Tweaks
|
|
368
|
+
|
|
369
|
+
Les tweaks sont des contrôles nommés qui permettent de modifier rapidement les
|
|
370
|
+
propriétés visuelles les plus utiles d'un design sans éditer sa source. Un design
|
|
371
|
+
peut proposer des nuanciers, des choix segmentés, des curseurs et des interrupteurs
|
|
372
|
+
pour la couleur d'accent, le rayon des angles, l'espacement, la densité ou la
|
|
373
|
+
visibilité. Chaque contrôle est relié à une propriété CSS personnalisée utilisée
|
|
374
|
+
par le design rendu, de sorte que l'aperçu se met à jour pendant le réglage.
|
|
375
|
+
|
|
376
|
+
Les tweaks suivent la cascade de l'éditeur. Les points d'arrêt responsive et les
|
|
377
|
+
états héritent de la valeur définie sur le design de base. Modifier un tweak pendant
|
|
378
|
+
qu'un point d'arrêt ou un état est actif crée une surcharge pour ce contexte ;
|
|
379
|
+
réinitialiser le contrôle supprime la surcharge et rétablit la valeur héritée. Les
|
|
380
|
+
valeurs enregistrées restent avec le design. Utilisez **Ajouter des contrôles de
|
|
381
|
+
réglage** ou demandez à l'agent d'exposer une autre propriété visuelle si le contrôle
|
|
382
|
+
nécessaire manque.
|
|
383
|
+
|
|
367
384
|
Installez `/visual-edit` lorsqu'un agent de code doit ouvrir une app locale en
|
|
368
385
|
cours d'exécution dans Design au lieu de générer du HTML de prototype autonome :
|
|
369
386
|
|
|
@@ -363,6 +363,22 @@ rendered file के अंदर DOM/code layers edit करने के ल
|
|
|
363
363
|
model दिखाता है: screens top-level frames हैं, और active screen के नीचे nested
|
|
364
364
|
DOM/code layers होते हैं।
|
|
365
365
|
|
|
366
|
+
### Tweaks
|
|
367
|
+
|
|
368
|
+
Tweaks नाम वाले controls हैं जिनसे source edit किए बिना design की सबसे उपयोगी
|
|
369
|
+
visual properties जल्दी बदली जा सकती हैं। Design accent color, corner radius,
|
|
370
|
+
spacing, density या visibility जैसी properties के लिए color swatches, segmented
|
|
371
|
+
choices, sliders और toggles दे सकता है। हर control rendered design में उपयोग होने
|
|
372
|
+
वाली CSS custom property से जुड़ा होता है, इसलिए adjustment के साथ preview update
|
|
373
|
+
होता है।
|
|
374
|
+
|
|
375
|
+
Tweaks editor के cascade का पालन करते हैं। Base design में set value responsive
|
|
376
|
+
breakpoints और states को inherit होती है। किसी breakpoint या state के active होने
|
|
377
|
+
पर tweak बदलने से उस context के लिए override बनता है; control reset करने पर override
|
|
378
|
+
हट जाता है और inherited value वापस आती है। Saved values design के साथ रहते हैं।
|
|
379
|
+
ज़रूरी control न हो तो **ट्विक नियंत्रण जोड़ें** का उपयोग करें या agent से कोई दूसरी
|
|
380
|
+
visual property expose करने को कहें।
|
|
381
|
+
|
|
366
382
|
जब coding agent को standalone prototype HTML बनाने के बजाय running local app को
|
|
367
383
|
Design में खोलना हो, तब `/visual-edit` install करें:
|
|
368
384
|
|
|
@@ -364,6 +364,23 @@ Design は複数画面の作業では概要を最初に使います。生成後
|
|
|
364
364
|
イヤーパネルもこの分離を反映します。画面は最上位フレームで、アクティブ
|
|
365
365
|
画面の下に DOM/コードレイヤーがネストされます。
|
|
366
366
|
|
|
367
|
+
### Tweaks
|
|
368
|
+
|
|
369
|
+
Tweaks は、ソースを編集せずにデザインの重要な視覚プロパティをすばやく
|
|
370
|
+
変更するための名前付きコントロールです。デザインは、アクセントカラー、
|
|
371
|
+
角丸、間隔、密度、表示状態などについて、カラースウォッチ、セグメント選択、
|
|
372
|
+
スライダー、トグルを提供できます。各コントロールはレンダリングされた
|
|
373
|
+
デザインが使用する CSS カスタムプロパティに接続され、調整と同時に
|
|
374
|
+
プレビューが更新されます。
|
|
375
|
+
|
|
376
|
+
Tweaks はエディターのカスケードに従います。ベースデザインで設定した値は、
|
|
377
|
+
レスポンシブブレークポイントと状態に継承されます。ブレークポイントまたは
|
|
378
|
+
状態がアクティブなときに tweak を変更すると、そのコンテキスト用の
|
|
379
|
+
オーバーライドが作成されます。リセットするとオーバーライドが削除され、
|
|
380
|
+
継承値に戻ります。保存した値はデザインとともに保持されます。必要な
|
|
381
|
+
コントロールがない場合は、**微調整コントロールを追加する**を使用するか、
|
|
382
|
+
別の視覚プロパティを公開するようエージェントに依頼してください。
|
|
383
|
+
|
|
367
384
|
コーディングエージェントがスタンドアロンのプロトタイプ HTML を生成する
|
|
368
385
|
代わりに、実行中のローカルアプリを Design で開く必要がある場合は
|
|
369
386
|
`/visual-edit` をインストールします。
|
|
@@ -363,6 +363,21 @@ Single-screen mode는 스크롤, prototype behavior와의 상호작용, 하나
|
|
|
363
363
|
반영합니다. screens는 top-level frames이고, active screen 아래에 nested
|
|
364
364
|
DOM/code layers가 표시됩니다.
|
|
365
365
|
|
|
366
|
+
### Tweaks
|
|
367
|
+
|
|
368
|
+
Tweaks는 소스를 편집하지 않고 디자인에서 가장 유용한 시각 속성을 빠르게
|
|
369
|
+
바꾸는 이름 있는 컨트롤입니다. 디자인은 강조색, 모서리 반경, 간격, 밀도,
|
|
370
|
+
표시 여부 등에 대해 색상 견본, 분할 선택, 슬라이더, 토글을 제공할 수 있습니다.
|
|
371
|
+
각 컨트롤은 렌더링된 디자인이 사용하는 CSS 사용자 지정 속성에 연결되므로
|
|
372
|
+
조정하는 즉시 미리보기가 업데이트됩니다.
|
|
373
|
+
|
|
374
|
+
Tweaks는 편집기의 계단식 규칙을 따릅니다. 기본 디자인에서 설정한 값은 반응형
|
|
375
|
+
중단점과 상태에 상속됩니다. 중단점이나 상태가 활성화된 동안 tweak를 변경하면
|
|
376
|
+
해당 컨텍스트에 대한 재정의가 만들어지고, 컨트롤을 재설정하면 재정의가
|
|
377
|
+
제거되어 상속된 값으로 돌아갑니다. 저장된 값은 디자인과 함께 유지됩니다.
|
|
378
|
+
필요한 컨트롤이 없다면 **조정 컨트롤 추가**를 사용하거나 에이전트에게 다른
|
|
379
|
+
시각 속성을 노출해 달라고 요청하세요.
|
|
380
|
+
|
|
366
381
|
코딩 에이전트가 독립형 prototype HTML을 생성하는 대신 실행 중인 로컬 앱을
|
|
367
382
|
Design에서 열어야 할 때 `/visual-edit`를 설치하세요:
|
|
368
383
|
|
|
@@ -364,6 +364,22 @@ protótipo e editar as camadas DOM/código dentro de um arquivo renderizado. O
|
|
|
364
364
|
painel de camadas reflete essa divisão: telas são frames de nível superior, com
|
|
365
365
|
camadas DOM/código aninhadas para a tela ativa.
|
|
366
366
|
|
|
367
|
+
### Tweaks
|
|
368
|
+
|
|
369
|
+
Tweaks são controles nomeados para alterar rapidamente as propriedades visuais
|
|
370
|
+
mais úteis de um design sem editar o código-fonte. Um design pode oferecer
|
|
371
|
+
amostras de cor, opções segmentadas, controles deslizantes e alternâncias para
|
|
372
|
+
propriedades como cor de destaque, raio dos cantos, espaçamento, densidade ou
|
|
373
|
+
visibilidade. Cada controle se conecta a uma propriedade CSS personalizada usada
|
|
374
|
+
pelo design renderizado, então a visualização é atualizada durante o ajuste.
|
|
375
|
+
|
|
376
|
+
Tweaks seguem a cascata do editor. Breakpoints responsivos e estados herdam o
|
|
377
|
+
valor definido no design base. Alterar um tweak enquanto um breakpoint ou estado
|
|
378
|
+
está ativo cria uma substituição para esse contexto; redefinir o controle remove
|
|
379
|
+
a substituição e restaura o valor herdado. Os valores salvos permanecem com o
|
|
380
|
+
design. Use **Adicionar controles de ajuste** ou peça ao agente para expor outra
|
|
381
|
+
propriedade visual quando o controle necessário não estiver no painel.
|
|
382
|
+
|
|
367
383
|
Instale `/visual-edit` quando um agente de código precisar abrir um app local em
|
|
368
384
|
execução no Design em vez de gerar HTML de protótipo independente:
|
|
369
385
|
|
|
@@ -360,6 +360,17 @@ Design 对多屏工作采用概览优先。生成或进行大范围更新后,
|
|
|
360
360
|
单屏模式用于滚动、与原型行为交互,以及编辑一个已渲染文件内的 DOM/代码
|
|
361
361
|
层。图层面板也反映这种分工:屏幕是顶层框架,活动屏幕下嵌套 DOM/代码层。
|
|
362
362
|
|
|
363
|
+
### Tweaks
|
|
364
|
+
|
|
365
|
+
Tweaks 是具名控件,无需编辑源代码即可快速调整设计中最常用的视觉属性。设计
|
|
366
|
+
可以为强调色、圆角、间距、密度或可见性等属性提供色板、分段选项、滑块和开关。
|
|
367
|
+
每个控件都连接到渲染设计使用的 CSS 自定义属性,因此调整时预览会立即更新。
|
|
368
|
+
|
|
369
|
+
Tweaks 遵循编辑器的级联规则。基础设计中设置的值会由响应式断点和状态继承。
|
|
370
|
+
在某个断点或状态激活时更改 tweak,会为该上下文创建覆盖;重置控件会移除覆盖
|
|
371
|
+
并恢复继承值。保存的 tweak 值会随设计保留。如果面板没有所需控件,请使用
|
|
372
|
+
**添加调整控件**,或让代理公开另一个视觉属性。
|
|
373
|
+
|
|
363
374
|
当编码代理需要在 Design 中打开正在运行的本地应用,而不是生成独立原型 HTML
|
|
364
375
|
时,请安装 `/visual-edit`:
|
|
365
376
|
|
|
@@ -361,6 +361,18 @@ Design 對多畫面工作採用概覽優先。產生或進行大範圍更新後
|
|
|
361
361
|
式碼圖層。圖層面板也反映這種分工:畫面是頂層框架,作用中畫面下嵌套
|
|
362
362
|
DOM/程式碼圖層。
|
|
363
363
|
|
|
364
|
+
### Tweaks
|
|
365
|
+
|
|
366
|
+
Tweaks 是具名控制項,不必編輯原始碼即可快速調整設計中最實用的視覺屬性。
|
|
367
|
+
設計可以為強調色、圓角、間距、密度或可見性等屬性提供色票、分段選項、滑桿
|
|
368
|
+
和開關。每個控制項都連接到渲染設計使用的 CSS 自訂屬性,因此調整時預覽會
|
|
369
|
+
立即更新。
|
|
370
|
+
|
|
371
|
+
Tweaks 遵循編輯器的級聯規則。基礎設計中設定的值會由響應式中斷點和狀態繼
|
|
372
|
+
承。在某個中斷點或狀態作用時變更 tweak,會為該情境建立覆寫;重設控制項會
|
|
373
|
+
移除覆寫並恢復繼承值。儲存的 tweak 值會隨設計保留。如果面板沒有需要的控制
|
|
374
|
+
項,請使用 **新增調整控制項**,或要求代理公開另一個視覺屬性。
|
|
375
|
+
|
|
364
376
|
當編碼代理需要在 Design 中開啟正在執行的本機應用,而不是產生獨立原型 HTML
|
|
365
377
|
時,請安裝 `/visual-edit`:
|
|
366
378
|
|
|
@@ -7,7 +7,7 @@ description: "A GitHub Action that runs your repo's visual-recap skill on every
|
|
|
7
7
|
|
|
8
8
|
PR Visual Recap is a GitHub Action that turns every pull request into a **visual code review**. On each push, an LLM coding agent runs the latest bundled [`visual-recap`](/docs/template-plan) skill (or your repo's committed copy when `VISUAL_RECAP_SKILL_SOURCE=repo`) against the PR diff, publishes a structured recap plan to the hosted Plans app, shows an informational `Visual Recap` check while it runs, and upserts **one sticky PR comment** that links to the interactive plan with an **inline screenshot** embedded right in the comment.
|
|
9
9
|
|
|
10
|
-
This is not a deterministic diff renderer. The action invokes a real coding agent (Claude Code CLI by default,
|
|
10
|
+
This is not a deterministic diff renderer. The action invokes a real coding agent (Claude Code CLI by default, OpenAI Codex CLI, or Agent-Native Code with an OpenAI-compatible provider) that reads the change, decides what matters, and authors the recap by calling the Plans MCP tool `create-visual-recap` — the same tool the `/visual-recap` slash command uses. You get a high-altitude, schema/API/before-after view of the change instead of a wall of raw diff.
|
|
11
11
|
|
|
12
12
|
The recap is **informational and non-blocking**. It creates a check row so reviewers can see that generation is in progress, but it is not a required check, it never blocks the PR, and it never replaces reading the actual diff. The sticky comment is a review aid, not a sign-off.
|
|
13
13
|
|
|
@@ -36,7 +36,7 @@ On each PR push, the workflow:
|
|
|
36
36
|
<div class="diagram-arrow diagram-muted" aria-hidden="true">→</div>
|
|
37
37
|
<div class="diagram-node">
|
|
38
38
|
Coding agent<br /><small class="diagram-muted"
|
|
39
|
-
>
|
|
39
|
+
>configured backend reads diff</small
|
|
40
40
|
>
|
|
41
41
|
</div>
|
|
42
42
|
<div class="diagram-arrow diagram-muted" aria-hidden="true">→</div>
|
|
@@ -127,28 +127,32 @@ pins its committed `visual-recap` folder, set the repository variable
|
|
|
127
127
|
|
|
128
128
|
Choose which coding agent runs the skill with the `VISUAL_RECAP_AGENT` repository variable:
|
|
129
129
|
|
|
130
|
-
| `VISUAL_RECAP_AGENT` | Coding agent
|
|
131
|
-
| -------------------- |
|
|
132
|
-
| `claude` _(default)_ | Claude Code CLI
|
|
133
|
-
| `codex` | OpenAI Codex CLI
|
|
130
|
+
| `VISUAL_RECAP_AGENT` | Coding agent | Required API key | Required variables |
|
|
131
|
+
| -------------------- | --------------------------------------- | ---------------------- | --------------------------------------------- |
|
|
132
|
+
| `claude` _(default)_ | Claude Code CLI | `ANTHROPIC_API_KEY` | — |
|
|
133
|
+
| `codex` | OpenAI Codex CLI | `OPENAI_API_KEY` | — |
|
|
134
|
+
| `openai-compatible` | Agent-Native Code + compatible provider | `VISUAL_RECAP_API_KEY` | `VISUAL_RECAP_BASE_URL`, `VISUAL_RECAP_MODEL` |
|
|
134
135
|
|
|
135
136
|
If the variable is unset, the action uses `claude`.
|
|
136
137
|
|
|
137
138
|
## Model and reasoning
|
|
138
139
|
|
|
139
|
-
Beyond the backend,
|
|
140
|
+
Beyond the backend, these repository variables tune how the agent runs:
|
|
140
141
|
|
|
141
|
-
- **`VISUAL_RECAP_MODEL`** pins the model passed to the CLI (`--model`) — for example `gpt-5.6-sol` for Codex,
|
|
142
|
+
- **`VISUAL_RECAP_MODEL`** pins the model passed to the CLI (`--model`) — for example `gpt-5.6-sol` for Codex, a Claude model id, or `deepseek-chat` for DeepSeek. It is required for `openai-compatible`; Claude and Codex may leave it unset to use their CLI default.
|
|
142
143
|
- **`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.
|
|
144
|
+
- **`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.
|
|
143
145
|
- **`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.
|
|
144
146
|
|
|
145
147
|
For example, to run the recap on Codex with GPT-5.6 Sol at high reasoning, set the repository variables `VISUAL_RECAP_AGENT=codex`, `VISUAL_RECAP_MODEL=gpt-5.6-sol`, and `VISUAL_RECAP_REASONING=high`.
|
|
146
148
|
|
|
149
|
+
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.
|
|
150
|
+
|
|
147
151
|
## Secrets and variables
|
|
148
152
|
|
|
149
153
|
Set these in your repository's **Settings → Secrets and variables → Actions**.
|
|
150
154
|
|
|
151
|
-
### Secrets
|
|
155
|
+
### Secrets for the default backend
|
|
152
156
|
|
|
153
157
|
| Secret | Purpose |
|
|
154
158
|
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
|
@@ -190,8 +194,10 @@ real token.
|
|
|
190
194
|
| Secret / variable | Default | When you need it |
|
|
191
195
|
| ------------------------ | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
192
196
|
| `OPENAI_API_KEY` | — | Secret. Set together with `VISUAL_RECAP_AGENT=codex` to run the recap with Codex instead. |
|
|
193
|
-
| `
|
|
194
|
-
| `
|
|
197
|
+
| `VISUAL_RECAP_API_KEY` | — | Secret. Set with `VISUAL_RECAP_AGENT=openai-compatible` for DeepSeek, Kimi, or another OpenAI-compatible provider. |
|
|
198
|
+
| `VISUAL_RECAP_AGENT` | `claude` | Variable. Selects the coding-agent backend (`claude`, `codex`, or `openai-compatible`). |
|
|
199
|
+
| `VISUAL_RECAP_BASE_URL` | required for compatible backend | Variable. HTTP(S) base URL for the OpenAI-compatible backend; credentials are rejected. |
|
|
200
|
+
| `VISUAL_RECAP_MODEL` | required for compatible backend | Variable. Provider model id for OpenAI-compatible backends; optional for Claude/Codex, where unset uses the CLI default. |
|
|
195
201
|
| `VISUAL_RECAP_REASONING` | each model's default | Variable. Reasoning depth: `none`, `minimal`, `low`, `medium`, `high`, or `xhigh`. Applies to the Codex backend. |
|
|
196
202
|
| `RECAP_CLI_VERSION` | `latest` | Variable. Pins the `@agent-native/core` CLI version the workflow installs — e.g. `1.5.0`. See [Version pinning](#version-pinning-copy-variant). |
|
|
197
203
|
| `PLAN_RECAP_APP_URL` | `https://plan.agent-native.com` | Secret. Only when self-hosting the Plans app at a different origin. |
|
|
@@ -214,7 +220,7 @@ This also means you can merge the workflow file **before** the secrets exist: wi
|
|
|
214
220
|
|
|
215
221
|
If you want to generate recaps for fork PRs, a second workflow file is available: `.github/workflows/pr-visual-recap-fork.yml`. It uses `pull_request_target` (which runs with base-repo secrets) but never checks out or executes fork code. Trusted fork authors with GitHub author association `OWNER`, `MEMBER`, or `COLLABORATOR` run automatically. Outside fork PRs require an explicit **per-head maintainer opt-in** via a fresh `recap` label event before the recap agent runs.
|
|
216
222
|
|
|
217
|
-
To install it, copy the file from [BuilderIO/agent-native](https://github.com/BuilderIO/agent-native/blob/main/.github/workflows/pr-visual-recap-fork.yml) into your repo's `.github/workflows/` directory alongside the existing `pr-visual-recap.yml`. The same
|
|
223
|
+
To install it, copy the file from [BuilderIO/agent-native](https://github.com/BuilderIO/agent-native/blob/main/.github/workflows/pr-visual-recap-fork.yml) into your repo's `.github/workflows/` directory alongside the existing `pr-visual-recap.yml`. The same backend configuration applies, including `VISUAL_RECAP_API_KEY`, `VISUAL_RECAP_BASE_URL`, and `VISUAL_RECAP_MODEL` when using an OpenAI-compatible provider.
|
|
218
224
|
|
|
219
225
|
<Diagram id="doc-block-h3lne0" title="Fork PR consent gate" summary={"Fork PRs get no secrets by default; trusted authors run automatically, and outside contributors require a fresh maintainer recap label."}>
|
|
220
226
|
|
|
@@ -454,10 +460,12 @@ jobs:
|
|
|
454
460
|
PLAN_RECAP_TOKEN: ${{ secrets.PLAN_RECAP_TOKEN }}
|
|
455
461
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
456
462
|
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
463
|
+
VISUAL_RECAP_API_KEY: ${{ secrets.VISUAL_RECAP_API_KEY }}
|
|
457
464
|
PLAN_RECAP_APP_URL: ${{ secrets.PLAN_RECAP_APP_URL }}
|
|
458
465
|
with:
|
|
459
466
|
agent: ${{ vars.VISUAL_RECAP_AGENT || 'claude' }}
|
|
460
467
|
model: ${{ vars.VISUAL_RECAP_MODEL || '' }}
|
|
468
|
+
base-url: ${{ vars.VISUAL_RECAP_BASE_URL || '' }}
|
|
461
469
|
reasoning: ${{ vars.VISUAL_RECAP_REASONING || '' }}
|
|
462
470
|
skill-source: ${{ vars.VISUAL_RECAP_SKILL_SOURCE || 'auto' }}
|
|
463
471
|
# cli-version: "latest" # pin to a specific @agent-native/core version
|
|
@@ -367,6 +367,22 @@ editing the DOM/code layers inside one rendered file. The layers panel reflects
|
|
|
367
367
|
that split: screens are top-level frames, with nested DOM/code layers for the
|
|
368
368
|
active screen.
|
|
369
369
|
|
|
370
|
+
### Tweaks
|
|
371
|
+
|
|
372
|
+
Tweaks are named controls for quickly changing the most useful visual properties
|
|
373
|
+
of a design without editing its source. A design can expose color swatches,
|
|
374
|
+
segmented choices, sliders, and toggles for properties such as accent color,
|
|
375
|
+
corner radius, spacing, density, or visibility. Each control is connected to a
|
|
376
|
+
CSS custom property used by the rendered design, so the preview updates as you
|
|
377
|
+
adjust it.
|
|
378
|
+
|
|
379
|
+
Tweaks follow the editor's cascade. A value set on the base design is inherited
|
|
380
|
+
by its responsive breakpoints and states. Changing a tweak while a breakpoint or
|
|
381
|
+
state is active creates an override for that context; resetting the control
|
|
382
|
+
removes the override and returns to the inherited value. Saved tweak values stay
|
|
383
|
+
with the design. Use **Add tweak controls** or ask the agent to expose another
|
|
384
|
+
visual property when the panel does not include the control you need.
|
|
385
|
+
|
|
370
386
|
Install `/visual-edit` when a coding agent should open a running local app in
|
|
371
387
|
Design instead of generating standalone prototype HTML:
|
|
372
388
|
|
package/corpus/core/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.95.1",
|
|
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": {
|
|
@@ -346,7 +346,7 @@
|
|
|
346
346
|
"@tabler/icons-react": "^3.40.0",
|
|
347
347
|
"@tailwindcss/typography": "^0.5.20",
|
|
348
348
|
"@tailwindcss/vite": "catalog:",
|
|
349
|
-
"@tanstack/react-query": "^5.
|
|
349
|
+
"@tanstack/react-query": "^5.101.2",
|
|
350
350
|
"@types/better-sqlite3": "^7.6.13",
|
|
351
351
|
"@types/diff-match-patch": "^1.0.36",
|
|
352
352
|
"@types/express": "^5.0.6",
|
|
@@ -205,6 +205,7 @@ class AISDKEngine implements AgentEngine {
|
|
|
205
205
|
readonly label: string;
|
|
206
206
|
readonly defaultModel: string;
|
|
207
207
|
readonly supportedModels: readonly string[];
|
|
208
|
+
readonly preserveCustomModels: boolean;
|
|
208
209
|
readonly capabilities: EngineCapabilities;
|
|
209
210
|
|
|
210
211
|
private readonly provider: AISDKProvider;
|
|
@@ -219,6 +220,8 @@ class AISDKEngine implements AgentEngine {
|
|
|
219
220
|
this.label = `${capitalize(provider)} (AI SDK)`;
|
|
220
221
|
this.defaultModel = config.model ?? PROVIDER_DEFAULT_MODELS[provider];
|
|
221
222
|
this.supportedModels = PROVIDER_SUPPORTED_MODELS[provider];
|
|
223
|
+
this.preserveCustomModels =
|
|
224
|
+
provider === "openai" && Boolean(config.baseUrl);
|
|
222
225
|
this.capabilities = PROVIDER_CAPABILITIES[provider];
|
|
223
226
|
this.apiKey =
|
|
224
227
|
config.apiKey ??
|
|
@@ -180,12 +180,17 @@ function findLatestSupportedVersionMatch(
|
|
|
180
180
|
}
|
|
181
181
|
|
|
182
182
|
export function normalizeModelForEngine(
|
|
183
|
-
engine: Pick<
|
|
183
|
+
engine: Pick<
|
|
184
|
+
AgentEngine,
|
|
185
|
+
"name" | "defaultModel" | "supportedModels" | "preserveCustomModels"
|
|
186
|
+
>,
|
|
184
187
|
model: string | null | undefined,
|
|
185
188
|
): string {
|
|
186
189
|
const candidate = typeof model === "string" ? model.trim() : "";
|
|
187
190
|
if (!candidate) return engine.defaultModel;
|
|
188
191
|
|
|
192
|
+
if (engine.preserveCustomModels) return candidate;
|
|
193
|
+
|
|
189
194
|
if (engine.supportedModels.length === 0) return candidate;
|
|
190
195
|
|
|
191
196
|
if (candidate === "auto" || engine.supportedModels.includes(candidate)) {
|
|
@@ -297,6 +297,8 @@ export interface AgentEngine {
|
|
|
297
297
|
readonly defaultModel: string;
|
|
298
298
|
/** Models this engine supports */
|
|
299
299
|
readonly supportedModels: readonly string[];
|
|
300
|
+
/** Whether the configured endpoint accepts provider-defined model ids. */
|
|
301
|
+
readonly preserveCustomModels?: boolean;
|
|
300
302
|
/** Capability flags used to gate provider-specific features */
|
|
301
303
|
readonly capabilities: EngineCapabilities;
|
|
302
304
|
|
|
@@ -3776,11 +3776,13 @@ export async function runAgentLoop(opts: {
|
|
|
3776
3776
|
const result = sourceSweepGuard.message;
|
|
3777
3777
|
send({
|
|
3778
3778
|
type: "tool_start",
|
|
3779
|
+
id: toolCall.id,
|
|
3779
3780
|
tool: toolCall.name,
|
|
3780
3781
|
input: toolCall.input as Record<string, string>,
|
|
3781
3782
|
});
|
|
3782
3783
|
send({
|
|
3783
3784
|
type: "tool_done",
|
|
3785
|
+
id: toolCall.id,
|
|
3784
3786
|
tool: toolCall.name,
|
|
3785
3787
|
input: toolCall.input as Record<string, unknown>,
|
|
3786
3788
|
result,
|
|
@@ -3800,11 +3802,13 @@ export async function runAgentLoop(opts: {
|
|
|
3800
3802
|
const result = sourceSweepDelegationGuard;
|
|
3801
3803
|
send({
|
|
3802
3804
|
type: "tool_start",
|
|
3805
|
+
id: toolCall.id,
|
|
3803
3806
|
tool: toolCall.name,
|
|
3804
3807
|
input: toolCall.input as Record<string, string>,
|
|
3805
3808
|
});
|
|
3806
3809
|
send({
|
|
3807
3810
|
type: "tool_done",
|
|
3811
|
+
id: toolCall.id,
|
|
3808
3812
|
tool: toolCall.name,
|
|
3809
3813
|
input: toolCall.input as Record<string, unknown>,
|
|
3810
3814
|
result,
|
|
@@ -3826,11 +3830,13 @@ export async function runAgentLoop(opts: {
|
|
|
3826
3830
|
);
|
|
3827
3831
|
send({
|
|
3828
3832
|
type: "tool_start",
|
|
3833
|
+
id: toolCall.id,
|
|
3829
3834
|
tool: toolCall.name,
|
|
3830
3835
|
input: toolCall.input as Record<string, string>,
|
|
3831
3836
|
});
|
|
3832
3837
|
send({
|
|
3833
3838
|
type: "tool_done",
|
|
3839
|
+
id: toolCall.id,
|
|
3834
3840
|
tool: toolCall.name,
|
|
3835
3841
|
input: toolCall.input as Record<string, unknown>,
|
|
3836
3842
|
result,
|
|
@@ -3875,6 +3881,7 @@ export async function runAgentLoop(opts: {
|
|
|
3875
3881
|
if (mustApprove) {
|
|
3876
3882
|
send({
|
|
3877
3883
|
type: "tool_start",
|
|
3884
|
+
id: toolCall.id,
|
|
3878
3885
|
tool: toolCall.name,
|
|
3879
3886
|
input: toolCall.input as Record<string, string>,
|
|
3880
3887
|
});
|
|
@@ -3913,6 +3920,7 @@ export async function runAgentLoop(opts: {
|
|
|
3913
3920
|
`can run. The turn is paused; do not retry.`;
|
|
3914
3921
|
send({
|
|
3915
3922
|
type: "tool_done",
|
|
3923
|
+
id: toolCall.id,
|
|
3916
3924
|
tool: toolCall.name,
|
|
3917
3925
|
input: toolCall.input as Record<string, unknown>,
|
|
3918
3926
|
result,
|
|
@@ -3973,11 +3981,13 @@ export async function runAgentLoop(opts: {
|
|
|
3973
3981
|
recordedResult;
|
|
3974
3982
|
send({
|
|
3975
3983
|
type: "tool_start",
|
|
3984
|
+
id: toolCall.id,
|
|
3976
3985
|
tool: toolCall.name,
|
|
3977
3986
|
input: toolCall.input as Record<string, string>,
|
|
3978
3987
|
});
|
|
3979
3988
|
send({
|
|
3980
3989
|
type: "tool_done",
|
|
3990
|
+
id: toolCall.id,
|
|
3981
3991
|
tool: toolCall.name,
|
|
3982
3992
|
input: toolCall.input as Record<string, unknown>,
|
|
3983
3993
|
result,
|
|
@@ -4027,11 +4037,13 @@ export async function runAgentLoop(opts: {
|
|
|
4027
4037
|
ledgerResult;
|
|
4028
4038
|
send({
|
|
4029
4039
|
type: "tool_start",
|
|
4040
|
+
id: toolCall.id,
|
|
4030
4041
|
tool: toolCall.name,
|
|
4031
4042
|
input: toolCall.input as Record<string, string>,
|
|
4032
4043
|
});
|
|
4033
4044
|
send({
|
|
4034
4045
|
type: "tool_done",
|
|
4046
|
+
id: toolCall.id,
|
|
4035
4047
|
tool: toolCall.name,
|
|
4036
4048
|
input: toolCall.input as Record<string, unknown>,
|
|
4037
4049
|
result,
|
|
@@ -4056,11 +4068,13 @@ export async function runAgentLoop(opts: {
|
|
|
4056
4068
|
`or split the request into smaller pieces.`;
|
|
4057
4069
|
send({
|
|
4058
4070
|
type: "tool_start",
|
|
4071
|
+
id: toolCall.id,
|
|
4059
4072
|
tool: toolCall.name,
|
|
4060
4073
|
input: toolCall.input as Record<string, string>,
|
|
4061
4074
|
});
|
|
4062
4075
|
send({
|
|
4063
4076
|
type: "tool_done",
|
|
4077
|
+
id: toolCall.id,
|
|
4064
4078
|
tool: toolCall.name,
|
|
4065
4079
|
input: toolCall.input as Record<string, unknown>,
|
|
4066
4080
|
result,
|
|
@@ -4107,6 +4121,7 @@ export async function runAgentLoop(opts: {
|
|
|
4107
4121
|
|
|
4108
4122
|
send({
|
|
4109
4123
|
type: "tool_start",
|
|
4124
|
+
id: toolCall.id,
|
|
4110
4125
|
tool: toolCall.name,
|
|
4111
4126
|
input: toolCall.input as Record<string, string>,
|
|
4112
4127
|
});
|
|
@@ -4122,6 +4137,7 @@ export async function runAgentLoop(opts: {
|
|
|
4122
4137
|
);
|
|
4123
4138
|
send({
|
|
4124
4139
|
type: "tool_done",
|
|
4140
|
+
id: toolCall.id,
|
|
4125
4141
|
tool: toolCall.name,
|
|
4126
4142
|
input: toolCall.input as Record<string, unknown>,
|
|
4127
4143
|
result,
|
|
@@ -4153,6 +4169,7 @@ export async function runAgentLoop(opts: {
|
|
|
4153
4169
|
);
|
|
4154
4170
|
send({
|
|
4155
4171
|
type: "tool_done",
|
|
4172
|
+
id: toolCall.id,
|
|
4156
4173
|
tool: toolCall.name,
|
|
4157
4174
|
input: toolCall.input as Record<string, unknown>,
|
|
4158
4175
|
result,
|
|
@@ -4184,6 +4201,7 @@ export async function runAgentLoop(opts: {
|
|
|
4184
4201
|
`Previous result:\n${previousResult}`;
|
|
4185
4202
|
send({
|
|
4186
4203
|
type: "tool_done",
|
|
4204
|
+
id: toolCall.id,
|
|
4187
4205
|
tool: toolCall.name,
|
|
4188
4206
|
input: toolCall.input as Record<string, unknown>,
|
|
4189
4207
|
result,
|
|
@@ -4213,6 +4231,7 @@ export async function runAgentLoop(opts: {
|
|
|
4213
4231
|
const result = planModeBlockedMessage(toolCall.name);
|
|
4214
4232
|
send({
|
|
4215
4233
|
type: "tool_done",
|
|
4234
|
+
id: toolCall.id,
|
|
4216
4235
|
tool: toolCall.name,
|
|
4217
4236
|
input: toolCall.input as Record<string, unknown>,
|
|
4218
4237
|
result,
|
|
@@ -4474,6 +4493,7 @@ export async function runAgentLoop(opts: {
|
|
|
4474
4493
|
|
|
4475
4494
|
send({
|
|
4476
4495
|
type: "tool_done",
|
|
4496
|
+
id: toolCall.id,
|
|
4477
4497
|
tool: toolCall.name,
|
|
4478
4498
|
input: toolCall.input as Record<string, unknown>,
|
|
4479
4499
|
result,
|