@agent-native/core 0.94.1 → 0.94.2

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.
Files changed (110) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +6 -0
  3. package/corpus/core/docs/content/cloneable-saas.mdx +15 -15
  4. package/corpus/core/docs/content/creating-templates.mdx +1 -1
  5. package/corpus/core/docs/content/extensions.mdx +1 -1
  6. package/corpus/core/docs/content/local-file-mode.mdx +6 -6
  7. package/corpus/core/docs/content/locales/ar-SA/voice-input.mdx +2 -2
  8. package/corpus/core/docs/content/locales/de-DE/voice-input.mdx +2 -2
  9. package/corpus/core/docs/content/locales/es-ES/voice-input.mdx +2 -2
  10. package/corpus/core/docs/content/locales/fr-FR/voice-input.mdx +2 -2
  11. package/corpus/core/docs/content/locales/hi-IN/voice-input.mdx +2 -2
  12. package/corpus/core/docs/content/locales/ja-JP/voice-input.mdx +2 -2
  13. package/corpus/core/docs/content/locales/ko-KR/voice-input.mdx +2 -2
  14. package/corpus/core/docs/content/locales/pt-BR/voice-input.mdx +2 -2
  15. package/corpus/core/docs/content/locales/zh-CN/voice-input.mdx +2 -2
  16. package/corpus/core/docs/content/locales/zh-TW/voice-input.mdx +2 -2
  17. package/corpus/core/docs/content/sharing.mdx +4 -4
  18. package/corpus/core/docs/content/template-analytics.mdx +2 -2
  19. package/corpus/core/docs/content/template-calendar.mdx +4 -4
  20. package/corpus/core/docs/content/template-clips.mdx +2 -2
  21. package/corpus/core/docs/content/template-content.mdx +12 -11
  22. package/corpus/core/docs/content/template-mail.mdx +1 -1
  23. package/corpus/core/docs/content/template-slides.mdx +2 -2
  24. package/corpus/core/docs/content/voice-input.mdx +2 -2
  25. package/corpus/core/docs/content/workspace.mdx +1 -1
  26. package/corpus/core/package.json +1 -1
  27. package/corpus/core/src/client/AssistantChat.tsx +30 -0
  28. package/corpus/core/src/client/MultiTabAssistantChat.tsx +19 -1
  29. package/corpus/core/src/client/agent-chat.ts +6 -0
  30. package/corpus/core/src/client/composer/RealtimeVoiceMode.tsx +72 -2
  31. package/corpus/core/src/client/composer/realtime-voice-audio-level.ts +64 -0
  32. package/corpus/core/src/client/composer/realtime-voice-transcript.ts +134 -0
  33. package/corpus/core/src/client/composer/useRealtimeVoiceMode.tsx +220 -6
  34. package/corpus/core/src/client/use-chat-threads.ts +33 -9
  35. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +11 -5
  36. package/corpus/templates/clips/app/components/player/comments-panel.tsx +98 -1
  37. package/corpus/templates/clips/changelog/2026-07-10-comment-urls-open-as-clickable-links.md +6 -0
  38. package/corpus/templates/clips/changelog/2026-07-10-desktop-recording-uploads-now-show-a-brief-uploaded-state-wi.md +6 -0
  39. package/corpus/templates/clips/changelog/2026-07-10-desktop-recordings-now-retry-saving-their-locally-captured-t.md +6 -0
  40. package/corpus/templates/clips/changelog/2026-07-10-desktop-update-prompts-are-more-compact-and-easier-to-dismiss.md +6 -0
  41. package/corpus/templates/clips/changelog/2026-07-10-quiet-recordings-now-finish-saving-instead-of-getting-stuck.md +6 -0
  42. package/corpus/templates/clips/desktop/src/components/UpdateBanner.tsx +7 -4
  43. package/corpus/templates/clips/desktop/src/lib/recorder.ts +284 -85
  44. package/corpus/templates/clips/desktop/src/overlays/finalizing.tsx +148 -40
  45. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +13 -13
  46. package/corpus/templates/clips/desktop/src/styles.css +83 -13
  47. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +43 -28
  48. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +130 -65
  49. package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +10 -4
  50. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +82 -1
  51. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/reset-chunks.post.ts +82 -1
  52. package/dist/client/AssistantChat.d.ts.map +1 -1
  53. package/dist/client/AssistantChat.js +20 -0
  54. package/dist/client/AssistantChat.js.map +1 -1
  55. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  56. package/dist/client/MultiTabAssistantChat.js +9 -0
  57. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  58. package/dist/client/agent-chat.d.ts +6 -0
  59. package/dist/client/agent-chat.d.ts.map +1 -1
  60. package/dist/client/agent-chat.js.map +1 -1
  61. package/dist/client/composer/RealtimeVoiceMode.d.ts +3 -1
  62. package/dist/client/composer/RealtimeVoiceMode.d.ts.map +1 -1
  63. package/dist/client/composer/RealtimeVoiceMode.js +32 -3
  64. package/dist/client/composer/RealtimeVoiceMode.js.map +1 -1
  65. package/dist/client/composer/realtime-voice-audio-level.d.ts +14 -0
  66. package/dist/client/composer/realtime-voice-audio-level.d.ts.map +1 -0
  67. package/dist/client/composer/realtime-voice-audio-level.js +47 -0
  68. package/dist/client/composer/realtime-voice-audio-level.js.map +1 -0
  69. package/dist/client/composer/realtime-voice-transcript.d.ts +26 -0
  70. package/dist/client/composer/realtime-voice-transcript.d.ts.map +1 -0
  71. package/dist/client/composer/realtime-voice-transcript.js +103 -0
  72. package/dist/client/composer/realtime-voice-transcript.js.map +1 -0
  73. package/dist/client/composer/useRealtimeVoiceMode.d.ts +14 -0
  74. package/dist/client/composer/useRealtimeVoiceMode.d.ts.map +1 -1
  75. package/dist/client/composer/useRealtimeVoiceMode.js +177 -6
  76. package/dist/client/composer/useRealtimeVoiceMode.js.map +1 -1
  77. package/dist/client/use-chat-threads.d.ts.map +1 -1
  78. package/dist/client/use-chat-threads.js +26 -6
  79. package/dist/client/use-chat-threads.js.map +1 -1
  80. package/dist/collab/routes.d.ts +1 -1
  81. package/dist/observability/routes.d.ts +1 -1
  82. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  83. package/dist/resources/handlers.d.ts +2 -2
  84. package/dist/server/transcribe-voice.d.ts +1 -1
  85. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +11 -5
  86. package/docs/content/cloneable-saas.mdx +15 -15
  87. package/docs/content/creating-templates.mdx +1 -1
  88. package/docs/content/extensions.mdx +1 -1
  89. package/docs/content/local-file-mode.mdx +6 -6
  90. package/docs/content/locales/ar-SA/voice-input.mdx +2 -2
  91. package/docs/content/locales/de-DE/voice-input.mdx +2 -2
  92. package/docs/content/locales/es-ES/voice-input.mdx +2 -2
  93. package/docs/content/locales/fr-FR/voice-input.mdx +2 -2
  94. package/docs/content/locales/hi-IN/voice-input.mdx +2 -2
  95. package/docs/content/locales/ja-JP/voice-input.mdx +2 -2
  96. package/docs/content/locales/ko-KR/voice-input.mdx +2 -2
  97. package/docs/content/locales/pt-BR/voice-input.mdx +2 -2
  98. package/docs/content/locales/zh-CN/voice-input.mdx +2 -2
  99. package/docs/content/locales/zh-TW/voice-input.mdx +2 -2
  100. package/docs/content/sharing.mdx +4 -4
  101. package/docs/content/template-analytics.mdx +2 -2
  102. package/docs/content/template-calendar.mdx +4 -4
  103. package/docs/content/template-clips.mdx +2 -2
  104. package/docs/content/template-content.mdx +12 -11
  105. package/docs/content/template-mail.mdx +1 -1
  106. package/docs/content/template-slides.mdx +2 -2
  107. package/docs/content/voice-input.mdx +2 -2
  108. package/docs/content/workspace.mdx +1 -1
  109. package/package.json +1 -1
  110. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +11 -5
@@ -11,9 +11,9 @@ Das Framework erledigt das alles automatisch. Mit Builder verbundene Benutzer er
11
11
 
12
12
  ## Sprachmodus in Echtzeit {#realtime-speech-mode}
13
13
 
14
- Beim Öffnen des Mikrofons kannst du in einem Popover zwischen **Echtzeitgespräch** und **bearbeitbarem Diktat** wählen. Der Echtzeitmodus benötigt einen benutzerbezogenen `OPENAI_API_KEY` und verbindet den Browser über WebRTC mit `gpt-realtime-2.1`. Der Chat wird zu einer Sprachkugel unten rechts minimiert; mit einem Klick auf die Kugel lässt sich der Chat ein- oder ausblenden, ohne das Gespräch zu beenden.
14
+ Beim Öffnen des Mikrofons kannst du in einem Popover zwischen **Echtzeitgespräch** und **bearbeitbarem Diktat** wählen. Der Echtzeitmodus benötigt einen benutzerbezogenen `OPENAI_API_KEY` und verbindet den Browser über WebRTC mit `gpt-realtime-2.1`. Der Chat wird zu einer Sprachkugel unten rechts minimiert; mit einem Klick auf die Kugel lässt sich der Chat ein- oder ausblenden, ohne das Gespräch zu beenden. Die Kugel bleibt auch dann über dem Chat sichtbar, wenn sich der Chat automatisch öffnet; eine kompakte Wellenform reagiert auf deine Stimme und die Stimme des Assistenten.
15
15
 
16
- Das Sprachmodell verwendet dieselben authentifizierten Agent-Native-Werkzeuge wie der Chat. So kann es während des Gesprächs durch die App navigieren und Aktionen aufrufen. Genehmigungspflichtige Aktionen bleiben angehalten, bis du sie freigibst. Audio wird niemals in SQL gespeichert; Agent Native bewahrt nur einen kompakten Sitzungs- und Transkriptstatus auf. Eine Echtzeitsitzung dauert höchstens 60 Minuten.
16
+ Das Sprachmodell verwendet dieselben authentifizierten Agent-Native-Werkzeuge wie der Chat. So kann es während des Gesprächs durch die App navigieren und Aktionen aufrufen. Genehmigungspflichtige Aktionen bleiben angehalten, bis du sie freigibst. Nur abgeschlossene Textäußerungen von dir und dem Assistenten werden an den ursprünglichen Chat-Thread angehängt. Beim Beenden des Sprachmodus wird der Chat geöffnet, damit du per Text fortfahren kannst; Audio und vorläufige Transkriptteile werden nicht gespeichert. Eine Echtzeitsitzung dauert höchstens 60 Minuten.
17
17
 
18
18
  ## Wie es funktioniert {#how-it-works}
19
19
 
@@ -11,9 +11,9 @@ El marco maneja todo esto automáticamente. Los usuarios conectados a Builder ob
11
11
 
12
12
  ## Modo de voz en tiempo real {#realtime-speech-mode}
13
13
 
14
- Al abrir el micrófono, un menú emergente permite elegir entre **Conversación en tiempo real** y **Dictado editable**. El modo en tiempo real requiere una `OPENAI_API_KEY` de ámbito de usuario y conecta el navegador con `gpt-realtime-2.1` mediante WebRTC. El chat se contrae en un orbe de voz situado abajo a la derecha; al pulsarlo puedes mostrar u ocultar el chat sin finalizar la conversación.
14
+ Al abrir el micrófono, un menú emergente permite elegir entre **Conversación en tiempo real** y **Dictado editable**. El modo en tiempo real requiere una `OPENAI_API_KEY` de ámbito de usuario y conecta el navegador con `gpt-realtime-2.1` mediante WebRTC. El chat se contrae en un orbe de voz situado abajo a la derecha; al pulsarlo puedes mostrar u ocultar el chat sin finalizar la conversación. El orbe permanece visible sobre el chat aunque este se abra automáticamente, y una forma de onda compacta reacciona a tu voz y a la del asistente.
15
15
 
16
- El modelo de voz utiliza las mismas herramientas autenticadas de Agent Native que el chat, por lo que puede navegar por la aplicación y ejecutar acciones mientras habla. Las acciones que requieren aprobación permanecen en pausa hasta que las apruebes. El audio nunca se almacena en SQL; Agent Native conserva únicamente un estado compacto de la sesión y la transcripción. Las sesiones en tiempo real duran como máximo 60 minutos.
16
+ El modelo de voz utiliza las mismas herramientas autenticadas de Agent Native que el chat, por lo que puede navegar por la aplicación y ejecutar acciones mientras habla. Las acciones que requieren aprobación permanecen en pausa hasta que las apruebes. Solo las intervenciones de texto completadas del usuario y del asistente se añaden al hilo de chat original. Al finalizar el modo de voz, el chat se abre para que puedas continuar por texto; no se guardan el audio ni los fragmentos provisionales. Las sesiones en tiempo real duran como máximo 60 minutos.
17
17
 
18
18
  ## Cómo funciona {#how-it-works}
19
19
 
@@ -11,9 +11,9 @@ Le framework gère tout cela automatiquement. Les utilisateurs connectés à Bui
11
11
 
12
12
  ## Mode vocal en temps réel {#realtime-speech-mode}
13
13
 
14
- À l’ouverture du micro, une fenêtre contextuelle permet de choisir entre **Conversation en temps réel** et **Dictée modifiable**. Le mode en temps réel nécessite une `OPENAI_API_KEY` propre à l’utilisateur et connecte le navigateur à `gpt-realtime-2.1` par WebRTC. Le chat se réduit à une bulle vocale en bas à droite ; cliquez dessus pour afficher ou masquer le chat sans mettre fin à la conversation.
14
+ À l’ouverture du micro, une fenêtre contextuelle permet de choisir entre **Conversation en temps réel** et **Dictée modifiable**. Le mode en temps réel nécessite une `OPENAI_API_KEY` propre à l’utilisateur et connecte le navigateur à `gpt-realtime-2.1` par WebRTC. Le chat se réduit à une bulle vocale en bas à droite ; cliquez dessus pour afficher ou masquer le chat sans mettre fin à la conversation. La bulle reste visible au-dessus du chat même si celui-ci s’ouvre automatiquement, et une forme d’onde compacte réagit à votre voix comme à celle de l’assistant.
15
15
 
16
- Le modèle vocal utilise les mêmes outils Agent Native authentifiés que le chat. Il peut donc parcourir l’application et appeler des actions tout en parlant. Les actions soumises à approbation restent en pause jusqu’à votre accord. Laudio nest jamais stocké dans SQL ; Agent Native ne conserve quun état compact de la session et de la transcription. Une session en temps réel dure au maximum 60 minutes.
16
+ Le modèle vocal utilise les mêmes outils Agent Native authentifiés que le chat. Il peut donc parcourir l’application et appeler des actions tout en parlant. Les actions soumises à approbation restent en pause jusqu’à votre accord. Seules les interventions textuelles terminées de lutilisateur et de lassistant sont ajoutées au fil de discussion d’origine. À la fin du mode vocal, le chat souvre pour vous permettre de continuer par écrit ; ni l’audio ni les fragments provisoires ne sont enregistrés. Une session en temps réel dure au maximum 60 minutes.
17
17
 
18
18
  ## Comment ça marche {#how-it-works}
19
19
 
@@ -11,9 +11,9 @@ description: "एजेंट चैट कंपोजर में वॉय
11
11
 
12
12
  ## रीयलटाइम स्पीच मोड {#realtime-speech-mode}
13
13
 
14
- माइक्रोफ़ोन खोलने पर एक पॉपओवर आपको **रीयलटाइम बातचीत** और **संपादन योग्य डिक्टेशन** में से चुनने देता है। रीयलटाइम मोड के लिए उपयोगकर्ता के दायरे वाली `OPENAI_API_KEY` चाहिए और यह WebRTC के ज़रिए ब्राउज़र को `gpt-realtime-2.1` से जोड़ता है। चैट नीचे दाईं ओर एक वॉइस ऑर्ब में सिमट जाती है; बातचीत समाप्त किए बिना चैट दिखाने या छिपाने के लिए ऑर्ब पर क्लिक करें।
14
+ माइक्रोफ़ोन खोलने पर एक पॉपओवर आपको **रीयलटाइम बातचीत** और **संपादन योग्य डिक्टेशन** में से चुनने देता है। रीयलटाइम मोड के लिए उपयोगकर्ता के दायरे वाली `OPENAI_API_KEY` चाहिए और यह WebRTC के ज़रिए ब्राउज़र को `gpt-realtime-2.1` से जोड़ता है। चैट नीचे दाईं ओर एक वॉइस ऑर्ब में सिमट जाती है; बातचीत समाप्त किए बिना चैट दिखाने या छिपाने के लिए ऑर्ब पर क्लिक करें। चैट अपने-आप खुलने पर भी ऑर्ब उसके ऊपर दिखाई देता रहता है, और एक छोटा वेवफ़ॉर्म आपकी तथा सहायक की आवाज़ की गतिविधि दिखाता है।
15
15
 
16
- स्पीच मॉडल चैट वाले उन्हीं प्रमाणीकृत Agent Native टूल का उपयोग करता है, इसलिए वह बोलते समय ऐप में नेविगेट कर सकता है और कार्रवाइयाँ चला सकता है। जिन कार्रवाइयों के लिए स्वीकृति चाहिए, वे आपकी स्वीकृति मिलने तक रुकी रहती हैं। ऑडियो कभी भी SQL में संग्रहीत नहीं होता; Agent Native केवल सत्र और ट्रांसक्रिप्ट की संक्षिप्त स्थिति रखता है। एक रीयलटाइम सत्र अधिकतम 60 मिनट तक चलता है।
16
+ स्पीच मॉडल चैट वाले उन्हीं प्रमाणीकृत Agent Native टूल का उपयोग करता है, इसलिए वह बोलते समय ऐप में नेविगेट कर सकता है और कार्रवाइयाँ चला सकता है। जिन कार्रवाइयों के लिए स्वीकृति चाहिए, वे आपकी स्वीकृति मिलने तक रुकी रहती हैं। केवल उपयोगकर्ता और सहायक के पूरे हुए टेक्स्ट कथन मूल चैट थ्रेड में जोड़े जाते हैं। वॉइस मोड बंद करने पर चैट खुल जाती है ताकि आप टेक्स्ट में आगे बढ़ सकें; ऑडियो या अंतरिम ट्रांसक्रिप्ट अंश सहेजे नहीं जाते। एक रीयलटाइम सत्र अधिकतम 60 मिनट तक चलता है।
17
17
 
18
18
  ## यह कैसे काम करता है {#how-it-works}
19
19
 
@@ -11,9 +11,9 @@ description: "エージェント チャット コンポーザーでの音声デ
11
11
 
12
12
  ## リアルタイム音声モード {#realtime-speech-mode}
13
13
 
14
- マイクを開くと、ポップオーバーで**リアルタイム音声会話**と**編集可能な音声入力**のどちらかを選べます。リアルタイムモードにはユーザー単位の `OPENAI_API_KEY` が必要で、ブラウザから WebRTC 経由で `gpt-realtime-2.1` に接続します。チャットは右下の音声オーブに折りたたまれます。オーブをクリックすると、会話を終了せずにチャットの表示と非表示を切り替えられます。
14
+ マイクを開くと、ポップオーバーで**リアルタイム音声会話**と**編集可能な音声入力**のどちらかを選べます。リアルタイムモードにはユーザー単位の `OPENAI_API_KEY` が必要で、ブラウザから WebRTC 経由で `gpt-realtime-2.1` に接続します。チャットは右下の音声オーブに折りたたまれます。オーブをクリックすると、会話を終了せずにチャットの表示と非表示を切り替えられます。チャットが自動的に開いた場合もオーブはその上に表示され続け、コンパクトな波形がユーザーとアシスタント双方の音声に反応します。
15
15
 
16
- 音声モデルはチャットと同じ認証済みの Agent Native ツールを使用するため、話しながらアプリ内を移動したりアクションを呼び出したりできます。承認が必要なアクションは、承認するまで一時停止したままです。音声は SQL に一切保存されず、Agent Native が保持するのは簡潔なセッション状態と文字起こし状態だけです。リアルタイムセッションの上限は 60 分です。
16
+ 音声モデルはチャットと同じ認証済みの Agent Native ツールを使用するため、話しながらアプリ内を移動したりアクションを呼び出したりできます。承認が必要なアクションは、承認するまで一時停止したままです。完了したユーザーとアシスタントの発話テキストだけが開始時のチャットスレッドに追加されます。音声モードを終了するとチャットが開き、テキストで続けられます。音声や途中の文字起こしは保存されません。リアルタイムセッションの上限は 60 分です。
17
17
 
18
18
  ## 仕組み {#how-it-works}
19
19
 
@@ -11,9 +11,9 @@ description: "에이전트 채팅 작성기의 음성 받아쓰기 — Builder G
11
11
 
12
12
  ## 실시간 음성 모드 {#realtime-speech-mode}
13
13
 
14
- 마이크를 열면 팝오버에서 **실시간 음성 대화**와 **편집 가능한 받아쓰기** 중 하나를 선택할 수 있습니다. 실시간 모드에는 사용자 범위의 `OPENAI_API_KEY`가 필요하며, WebRTC를 통해 브라우저를 `gpt-realtime-2.1`에 연결합니다. 채팅은 오른쪽 아래의 음성 오브로 접힙니다. 오브를 클릭하면 대화를 끝내지 않고 채팅을 표시하거나 숨길 수 있습니다.
14
+ 마이크를 열면 팝오버에서 **실시간 음성 대화**와 **편집 가능한 받아쓰기** 중 하나를 선택할 수 있습니다. 실시간 모드에는 사용자 범위의 `OPENAI_API_KEY`가 필요하며, WebRTC를 통해 브라우저를 `gpt-realtime-2.1`에 연결합니다. 채팅은 오른쪽 아래의 음성 오브로 접힙니다. 오브를 클릭하면 대화를 끝내지 않고 채팅을 표시하거나 숨길 수 있습니다. 채팅이 자동으로 열려도 오브는 채팅 위에 계속 표시되며, 작은 파형이 사용자와 어시스턴트의 실제 음성 활동에 반응합니다.
15
15
 
16
- 음성 모델은 채팅과 동일한 인증된 Agent Native 도구를 사용하므로 말하는 동안 앱을 탐색하고 작업을 호출할 수 있습니다. 승인이 필요한 작업은 사용자가 승인할 때까지 일시 중지된 상태로 유지됩니다. 오디오는 SQL에 저장되지 않으며 Agent Native는 간결한 세션 대화 내용 상태만 보관합니다. 실시간 세션은 최대 60분 동안 지속됩니다.
16
+ 음성 모델은 채팅과 동일한 인증된 Agent Native 도구를 사용하므로 말하는 동안 앱을 탐색하고 작업을 호출할 수 있습니다. 승인이 필요한 작업은 사용자가 승인할 때까지 일시 중지된 상태로 유지됩니다. 완료된 사용자 어시스턴트 발화 텍스트만 처음 시작한 채팅 스레드에 추가됩니다. 음성 모드를 종료하면 채팅이 열려 텍스트로 이어갈 수 있으며, 오디오나 임시 전사 조각은 저장되지 않습니다. 실시간 세션은 최대 60분 동안 지속됩니다.
17
17
 
18
18
  ## 작동 방식 {#how-it-works}
19
19
 
@@ -11,9 +11,9 @@ A estrutura lida com tudo isso automaticamente. Os usuários conectados ao Build
11
11
 
12
12
  ## Modo de voz em tempo real {#realtime-speech-mode}
13
13
 
14
- Ao abrir o microfone, um popover permite escolher entre **Conversa em tempo real** e **Ditado editável**. O modo em tempo real exige uma `OPENAI_API_KEY` no escopo do usuário e conecta o navegador ao `gpt-realtime-2.1` por WebRTC. O chat se recolhe em uma esfera de voz no canto inferior direito; clique nela para mostrar ou ocultar o chat sem encerrar a conversa.
14
+ Ao abrir o microfone, um popover permite escolher entre **Conversa em tempo real** e **Ditado editável**. O modo em tempo real exige uma `OPENAI_API_KEY` no escopo do usuário e conecta o navegador ao `gpt-realtime-2.1` por WebRTC. O chat se recolhe em uma esfera de voz no canto inferior direito; clique nela para mostrar ou ocultar o chat sem encerrar a conversa. A esfera permanece visível sobre o chat mesmo quando ele abre automaticamente, e uma forma de onda compacta reage à sua voz e à voz do assistente.
15
15
 
16
- O modelo de voz usa as mesmas ferramentas autenticadas do Agent Native que o chat, portanto pode navegar pelo aplicativo e chamar ações enquanto fala. Ações que exigem aprovação permanecem pausadas até você aprová-las. O áudio nunca é armazenado no SQL; o Agent Native mantém apenas um estado compacto da sessão e da transcrição. Uma sessão em tempo real dura no máximo 60 minutos.
16
+ O modelo de voz usa as mesmas ferramentas autenticadas do Agent Native que o chat, portanto pode navegar pelo aplicativo e chamar ações enquanto fala. Ações que exigem aprovação permanecem pausadas até você aprová-las. Somente as falas de texto concluídas do usuário e do assistente são adicionadas à conversa original. Ao encerrar o modo de voz, o chat é aberto para você continuar por texto; o áudio e os trechos provisórios da transcrição não são armazenados. Uma sessão em tempo real dura no máximo 60 minutos.
17
17
 
18
18
  ## Como funciona {#how-it-works}
19
19
 
@@ -11,9 +11,9 @@ description: "代理聊天编辑器中的语音听写 - Builder Gemini、BYOK
11
11
 
12
12
  ## 实时语音模式 {#realtime-speech-mode}
13
13
 
14
- 打开麦克风后,弹出菜单让你在**实时语音对话**和**可编辑听写**之间选择。实时模式需要用户范围的 `OPENAI_API_KEY`,并通过 WebRTC 将浏览器连接到 `gpt-realtime-2.1`。聊天会收起为右下角的语音球;点击语音球即可显示或隐藏聊天,而不会结束对话。
14
+ 打开麦克风后,弹出菜单让你在**实时语音对话**和**可编辑听写**之间选择。实时模式需要用户范围的 `OPENAI_API_KEY`,并通过 WebRTC 将浏览器连接到 `gpt-realtime-2.1`。聊天会收起为右下角的语音球;点击语音球即可显示或隐藏聊天,而不会结束对话。即使聊天自动打开,语音球也会保持显示在聊天上方;紧凑的波形会实时响应你和助手的声音。
15
15
 
16
- 语音模型使用与聊天相同的、经过身份验证的 Agent Native 工具,因此可以一边说话,一边在应用中导航和调用操作。需要审批的操作会保持暂停,直到你批准为止。音频绝不会存储到 SQL 中;Agent Native 只保留精简的会话和转录状态。实时会话最长可持续 60 分钟。
16
+ 语音模型使用与聊天相同的、经过身份验证的 Agent Native 工具,因此可以一边说话,一边在应用中导航和调用操作。需要审批的操作会保持暂停,直到你批准为止。只有用户和助手已经完成的文本话语会追加到开始语音时的聊天线程。结束语音模式后,聊天会自动打开,方便你继续输入文字;音频和临时转录片段都不会保存。实时会话最长可持续 60 分钟。
17
17
 
18
18
  ## 它是如何工作的 {#how-it-works}
19
19
 
@@ -11,9 +11,9 @@ description: "代理聊天編輯器中的語音聽寫 - Builder Gemini、BYOK
11
11
 
12
12
  ## 即時語音模式 {#realtime-speech-mode}
13
13
 
14
- 開啟麥克風後,彈出式選單會讓您在**即時語音對話**和**可編輯聽寫**之間選擇。即時模式需要使用者範圍的 `OPENAI_API_KEY`,並透過 WebRTC 將瀏覽器連線到 `gpt-realtime-2.1`。聊天會收合為右下角的語音球;點選語音球即可顯示或隱藏聊天,而不會結束對話。
14
+ 開啟麥克風後,彈出式選單會讓您在**即時語音對話**和**可編輯聽寫**之間選擇。即時模式需要使用者範圍的 `OPENAI_API_KEY`,並透過 WebRTC 將瀏覽器連線到 `gpt-realtime-2.1`。聊天會收合為右下角的語音球;點選語音球即可顯示或隱藏聊天,而不會結束對話。即使聊天自動開啟,語音球也會持續顯示在聊天上方;精簡的波形會即時回應您和助理的聲音。
15
15
 
16
- 語音模型使用與聊天相同且經過驗證的 Agent Native 工具,因此可以一邊說話,一邊在應用程式中導覽和呼叫動作。需要核准的動作會維持暫停,直到您核准為止。音訊絕不會儲存到 SQL 中;Agent Native 只保留精簡的工作階段和轉錄狀態。即時工作階段最長可持續 60 分鐘。
16
+ 語音模型使用與聊天相同且經過驗證的 Agent Native 工具,因此可以一邊說話,一邊在應用程式中導覽和呼叫動作。需要核准的動作會維持暫停,直到您核准為止。只有使用者和助理已完成的文字發言會附加到開始語音時的聊天討論串。結束語音模式後,聊天會自動開啟,方便您繼續輸入文字;音訊和暫時的轉錄片段都不會儲存。即時工作階段最長可持續 60 分鐘。
17
17
 
18
18
  ## 它是如何工作的 {#how-it-works}
19
19
 
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  title: "Sharing & Privacy"
3
- description: "Familiar, consistent sharing built into the framework. Every user-created resource — docs, dashboards, designs, decks, clips, recordings, forms — gets the same private-by-default model with one consistent share UI."
3
+ description: "Google-Docs-style sharing, built into the framework. Every user-created resource — docs, dashboards, designs, decks, clips, recordings, forms — gets the same private-by-default model with one consistent share UI."
4
4
  ---
5
5
 
6
6
  # Sharing & Privacy
7
7
 
8
8
  Every resource a user creates in an agent-native app — a document, a dashboard, a design, a deck, a screen recording, a meeting transcript, a form, a booking link — is **private to the creator by default**. Other people see it only when the creator explicitly shares it, or changes its visibility to `org` or `public`.
9
9
 
10
- It's one familiar sharing model everywhere: the same share button, the same dialog, the same three-tier visibility model, the same per-user/per-org grants — across every template, with no per-app reinvention.
10
+ It looks and works like Google Docs. The same share button, the same dialog, the same three-tier visibility model, the same per-user/per-org grants — across every template, with no per-app reinvention.
11
11
 
12
12
  ## Why one model {#why}
13
13
 
@@ -92,7 +92,7 @@ Every template that stores user-authored work uses this model. Concretely:
92
92
  - **Content** — documents
93
93
  - **Slides** — decks
94
94
  - **Design** — designs and assets
95
- - **Clips** — screen recordings
95
+ - **Clips** — screen recordings (Loom-style)
96
96
  - **Plan** — visual plans and PR recaps
97
97
  - **Forms** — form definitions
98
98
  - **Calendar** — events and booking links
@@ -115,7 +115,7 @@ Every shareable resource gets a share button in its header. Clicking it opens a
115
115
 
116
116
  - Visibility selector (`Private` / `Organization` / `Public link`).
117
117
  - "Add people or teams" autocomplete — search users in the org or paste an email.
118
- - A `Notify people` checkbox for individual email grants.
118
+ - A Google Docs-style `Notify people` checkbox for individual email grants.
119
119
  - A list of current grants with role pickers and a remove control.
120
120
  - A copy-link button that respects the current visibility.
121
121
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: "Analytics"
3
- description: "Ask analytics questions in plain English, get charts and dashboards back — connect your own warehouse and event sources, and own the code and the data."
3
+ description: "Ask analytics questions in plain English, get charts and dashboards back — an open-source replacement for Amplitude, Mixpanel, and Looker that connects your own warehouse and event sources."
4
4
  ---
5
5
 
6
6
  # Analytics
@@ -16,7 +16,7 @@ Ask analytics questions in plain English, get charts and dashboards back. The ag
16
16
  />
17
17
  </WireframeBlock>
18
18
 
19
- It's an open-source analytics stack for teams that want to own the code, the queries, and the data.
19
+ It's an open-source replacement for Amplitude, Mixpanel, and Looker — for teams that want to own the code, the queries, and the data.
20
20
 
21
21
  <Diagram id="doc-block-9n9ub7" title="Question to chart" summary="The agent consults the data dictionary, writes SQL, validates it against the warehouse, then renders a chart or saves a panel.">
22
22
 
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  title: "Calendar"
3
- description: "An agent-powered calendar with Google Calendar sync and shareable booking pages. Schedule, find slots, and manage availability through plain English."
3
+ description: "An agent-powered calendar with Google Calendar sync and Calendly-style booking links. Schedule, find slots, and manage availability through plain English."
4
4
  ---
5
5
 
6
6
  # Calendar
7
7
 
8
- An agent-powered calendar app. Connect your Google Calendar and the agent can read your schedule, find free slots, create events, and manage shareable booking links — all in plain English. It brings your calendar and public booking pages into one app you own.
8
+ An agent-powered calendar app. Connect your Google Calendar and the agent can read your schedule, find free slots, create events, and manage Calendly-style booking links — all in plain English. It replaces the Google Calendar + Calendly combo with one app you own.
9
9
 
10
10
  <WireframeBlock id="doc-block-6wsrao">
11
11
  <Screen
@@ -167,7 +167,7 @@ Under the hood the agent calls actions like `list-events`, `check-availability`,
167
167
  Defined in `templates/calendar/server/db/schema.ts`. Only non-event data is stored locally:
168
168
 
169
169
  - `bookings` — confirmed appointments from public booking pages. Stores name, email, start, end, slug, optional notes, custom field responses, meeting link, a `cancelToken` for the public manage URL, and a `confirmed` or `cancelled` status.
170
- - `booking_links` — the booking-page link definitions. Slug, title, description, primary `duration`, optional `durations` list, `customFields`, `conferencing`, `color`, and an `isActive` flag. Uses the framework's `ownableColumns` so the sharing system applies.
170
+ - `booking_links` — the Calendly-style link definitions. Slug, title, description, primary `duration`, optional `durations` list, `customFields`, `conferencing`, `color`, and an `isActive` flag. Uses the framework's `ownableColumns` so the sharing system applies.
171
171
  - `booking_slug_redirects` — remembers old slugs when a link is renamed so existing public URLs keep working.
172
172
  - `booking_link_shares` — share grants for booking links.
173
173
 
@@ -181,7 +181,7 @@ Defined in `templates/calendar/server/db/schema.ts`. Only non-event data is stor
181
181
  {
182
182
  id: "booking_links",
183
183
  name: "booking_links",
184
- note: "Booking-page link definitions (ownable)",
184
+ note: "Calendly-style link definitions (ownable)",
185
185
  fields: [
186
186
  {
187
187
  name: "id",
@@ -17,7 +17,7 @@ A capture-everything app: screen recordings, meeting notes from your calendar, a
17
17
  />
18
18
  </WireframeBlock>
19
19
 
20
- Async screen recordings, calendar-synced meeting notes, and push-to-talk voice dictation rolled into one app — the agent is a first-class editor across every surface, and the recordings, meetings, and dictations are yours, not a SaaS vendor's. Clips also makes shared recordings agent-readable: paste a public Clips share link or a temporary **Copy for agent** link into an agent and it can "hear" the transcript as text and "see" timestamped screen frames as images — no raw video needed. Frame-viewing works in any image-capable agent (ChatGPT, Claude Code, Cursor, Codex); text-only web chats still get the full transcript and can take a frame you upload.
20
+ Think along the lines of Loom + Granola + Wispr Flow rolled into one app: async screen recordings, calendar-synced meeting notes, and push-to-talk voice dictation but the agent is a first-class editor across every surface, and the recordings, meetings, and dictations are yours, not a SaaS vendor's. Clips also makes shared recordings agent-readable: paste a public Clips share link or a temporary **Copy for agent** link into an agent and it can "hear" the transcript as text and "see" timestamped screen frames as images — no raw video needed. Frame-viewing works in any image-capable agent (ChatGPT, Claude Code, Cursor, Codex); text-only web chats still get the full transcript and can take a frame you upload.
21
21
 
22
22
  <Diagram id="doc-block-pqnd4p" title="Capture, transcribe, reuse" summary={"Three capture types land in one library; the agent transcribes, titles, and summarizes, then every transcript is searchable and shareable."}>
23
23
 
@@ -85,7 +85,7 @@ Async screen recordings, calendar-synced meeting notes, and push-to-talk voice d
85
85
  - **Get an auto-generated title, summary, and chapter markers** for every recording — the agent fills them in and keeps them current.
86
86
  - **Search across every transcript** — screen recordings, meetings, and dictations all in one library. "Find the clip where we discussed the rollout plan."
87
87
  - **Share clips** with per-clip permissions (public, team, private). Link tracking and threaded comments work too.
88
- - **Preview public clips in Slack** with a playable video unfurl after the
88
+ - **Preview public clips in Slack** with a Loom-style playable unfurl after the
89
89
  workspace installs your Clips Slack app.
90
90
  - **Capture browser logs with the Chrome extension.** Browser recordings can
91
91
  attach redacted console logs and fetch/XHR metadata, which is helpful for
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  title: "Content"
3
- description: "A local-file-friendly document workspace: edit Markdown/MDX files, generate rich interactive custom blocks, and write together with an AI agent."
3
+ description: "Open-source Obsidian for MDX: edit local Markdown/MDX files, generate rich interactive custom blocks, and write with an AI agent."
4
4
  ---
5
5
 
6
6
  # Content
7
7
 
8
- Content is a local-file-friendly document workspace where the agent can read,
9
- write, reorganize, and publish pages for you. Open a doc, ask "rewrite this
10
- paragraph to be more concise" or "create a page called Q4 Planning with
11
- sub-pages for Goals, Metrics, and Risks" - same result whether you do it
12
- yourself or ask.
8
+ Content is open-source Obsidian for MDX: a local-file-friendly document
9
+ workspace where the agent can read, write, reorganize, and publish pages for
10
+ you. Open a doc, ask "rewrite this paragraph to be more concise" or "create a
11
+ page called Q4 Planning with sub-pages for Goals, Metrics, and Risks" - same
12
+ result whether you do it yourself or ask.
13
13
 
14
14
  <WireframeBlock id="doc-block-1i1ubpx">
15
15
  <Screen
@@ -90,7 +90,7 @@ When you open the app, you'll see a page tree next to the editor. The agent alwa
90
90
  - **Write rich text** with headings, lists, tables, code blocks, images, and links. Slash commands (`/`) insert blocks; selecting text pops up a formatting toolbar.
91
91
  - **Organize pages in a tree** — nest infinitely, drag to reorder, favorite pages you use often.
92
92
  - **Search across everything** with full-text search across titles and content.
93
- - **Edit local Markdown/MDX files with your own tools.** Use the `/local-files` view
93
+ - **Edit local Markdown/MDX files like Obsidian.** Use the `/local-files` view
94
94
  to export your workspace to files, edit them in your own tools, preview
95
95
  changes, and import them back. In Local File Mode, Content writes straight to
96
96
  the selected `.md` or `.mdx` file.
@@ -119,8 +119,9 @@ Select text and hit Cmd+I to focus the agent with that selection pre-loaded —
119
119
  ## Local Markdown/MDX files {#local-files}
120
120
 
121
121
  Content can round-trip documents through local files without cloning or running
122
- the Content app locally. Files stay inspectable and editable on disk, while the
123
- app gives you a rich editor, agent actions, sharing, and custom blocks. Open
122
+ the Content app locally. It feels like Obsidian for MDX: files stay inspectable
123
+ and editable on disk, while the app gives you a rich editor, agent actions,
124
+ sharing, and custom blocks. Open
124
125
  `/local-files`, choose a folder in your browser or Agent Native Desktop, and
125
126
  export the current document tree as Markdown/MDX under `content/`.
126
127
 
@@ -141,7 +142,7 @@ truth instead of SQL documents. Add `agent-native.json` to a repo, set
141
142
  `content/`, and `resources/`. The standard Content editor then populates its
142
143
  left sidebar from those local `.md`/`.mdx` files and writes edits back to the
143
144
  selected file through the normal document actions. Use this for repo-first docs,
144
- blogs, resource libraries, or a personal MDX-powered notes vault; switch back to
145
+ blogs, resource libraries, or an Obsidian-style personal MDX-powered notes vault; switch back to
145
146
  database mode when you want hosted collaboration and SQL-backed sharing. See [Local File Mode](/docs/local-file-mode) for the
146
147
  standalone repo layout, configuration, custom MDX components, local
147
148
  `extensions/` widgets, and production safety guide.
@@ -218,7 +219,7 @@ Local file workspaces can also provide repo-local React components through the
218
219
  configured `components` folder. The Content dev server imports PascalCase
219
220
  exports from those files, renders matching MDX tags such as `<ImpactCounter />`
220
221
  inside the editor, and exposes them in the slash menu under Local components.
221
- This is the local-first custom-block layer: custom MDX blocks stay local to the
222
+ This is the "Obsidian for MDX" layer: custom MDX blocks stay local to the
222
223
  workspace, but the editor can render them and the agent can generate or update
223
224
  their source without cloning the Content app. A minimal workspace component can
224
225
  be:
@@ -5,7 +5,7 @@ description: "An agent-powered email client. Connect your Gmail and the agent ca
5
5
 
6
6
  # Mail
7
7
 
8
- An agent-powered email client. Connect your Gmail account and the agent can read, draft, send, and organize email for you — alongside a fast, keyboard-first inbox you can drive yourself, with the agent as a first-class citizen and the codebase yours to own.
8
+ An agent-powered email client. Connect your Gmail account and the agent can read, draft, send, and organize email for you — alongside a fast, keyboard-first inbox you can drive yourself. Think Superhuman, but the agent is a first-class citizen and the codebase is yours to own.
9
9
 
10
10
  <WireframeBlock id="doc-block-ofadgy">
11
11
  <Screen
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  title: "Slides"
3
- description: "Generate decks from a prompt, edit visually, and present full-screen — an open-source deck editor with import/export, design systems, and real-time collaboration built in."
3
+ description: "Generate decks from a prompt, edit visually, and present full-screen — an open-source replacement for Google Slides, Pitch, and PowerPoint, with import/export, design systems, and real-time collaboration built in."
4
4
  ---
5
5
 
6
6
  # Slides
7
7
 
8
- Generate full presentation decks from a prompt, edit slides visually, and present full-screen. Ask the agent for "a 10-slide pitch deck for a coffee subscription service" and watch it stream slide-by-slide into the editor in seconds. It's an open-source deck editor you own end to end generate, import, edit, present, and export without a subscription.
8
+ Generate full presentation decks from a prompt, edit slides visually, and present full-screen. Ask the agent for "a 10-slide pitch deck for a coffee subscription service" and watch it stream slide-by-slide into the editor in seconds. It's an open-source replacement for Google Slides, Pitch, and PowerPoint — a deck editor you own end to end: generate, import, edit, present, and export without a subscription.
9
9
 
10
10
  <WireframeBlock id="doc-block-eqogw6">
11
11
  <Screen
@@ -125,9 +125,9 @@ You don't need to call this directly — the composer does. If you're building a
125
125
 
126
126
  ## Realtime speech mode {#realtime-speech-mode}
127
127
 
128
- Beyond one-shot dictation, the composer also offers a live, hands-free conversation mode. When the mic opens, a popover lets you choose **Realtime speech** or **Editable dictation**. Realtime speech requires a user-scoped `OPENAI_API_KEY` and connects the browser to `gpt-realtime-2.1` over WebRTC. The chat collapses into a speech orb in the bottom-end corner; click the orb to show or hide chat without ending the conversation.
128
+ Beyond one-shot dictation, the composer also offers a live, hands-free conversation mode. When the mic opens, a popover lets you choose **Realtime speech** or **Editable dictation**. Realtime speech requires a user-scoped `OPENAI_API_KEY` and connects the browser to `gpt-realtime-2.1` over WebRTC. The chat collapses into a speech orb in the bottom-end corner; click the orb to show or hide chat without ending the conversation. The orb stays visible above the chat even if the chat opens automatically, and its compact waveform reacts to your voice and the assistant's voice.
129
129
 
130
- The speech model uses the same authenticated Agent Native tools as chat, so it can navigate the app and call actions while it talks. Approval-gated actions remain paused until you approve them. Audio is never stored in SQL; Agent Native keeps only compact session and transcript state. A realtime session lasts at most 60 minutes.
130
+ The speech model uses the same authenticated Agent Native tools as chat, so it can navigate the app and call actions while it talks. Approval-gated actions remain paused until you approve them. Only completed user and assistant text turns are appended to the original chat thread. Ending voice mode opens that chat so you can continue over text; audio and interim transcript fragments are never stored. A realtime session lasts at most 60 minutes.
131
131
 
132
132
  ## Customizing the provider {#customizing}
133
133
 
@@ -86,7 +86,7 @@ The twist: **it's SQL rows, not filesystem files.** Each user gets their own wor
86
86
  | Per-project `CLAUDE.md` / skills | Per-app `AGENTS.md` + workspace memory resources |
87
87
  | MCP config in a JSON file | MCP config in JSON _or_ the settings UI, per scope |
88
88
 
89
- Same capabilities. Different economics. See [Apps](/docs/cloneable-saas) for why this matters for SaaS.
89
+ Same capabilities. Different economics. See [Templates](/docs/cloneable-saas) for why this matters for SaaS.
90
90
 
91
91
  ## Overview {#overview}
92
92
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.94.1",
3
+ "version": "0.94.2",
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": {
@@ -46,8 +46,11 @@ from the dictation providers below. It requires the authenticated user's
46
46
  configuration, and keeps the key out of browser code.
47
47
 
48
48
  - Starting voice mode collapses the chat into a persistent bottom-end speech
49
- orb. Clicking the orb shows or hides chat without ending the session; ending
50
- the session is a separate, explicit control.
49
+ orb. The orb stays visible above the chat even when the chat opens
50
+ automatically. Clicking it shows or hides chat without ending the session;
51
+ ending the session is a separate, explicit control.
52
+ - The orb's compact waveform must reflect actual microphone or assistant audio
53
+ activity. It is an audio-level indicator, not a decorative animation.
51
54
  - Semantic VAD keeps listening, starts responses automatically, and supports
52
55
  barge-in while the agent is speaking.
53
56
  - Function calls must cross the authenticated realtime tool bridge and enter
@@ -57,9 +60,12 @@ configuration, and keeps the key out of browser code.
57
60
  - Preserve the active browser-tab id in request context so `set-url`,
58
61
  `set-search-params`, `view-screen`, and tab-scoped application state affect
59
62
  the app the user is actually speaking to.
60
- - Do not persist audio. Store only compact lifecycle and latest-transcript
61
- context at `application_state["realtime-voice-session"]`; delete it when the
62
- session ends.
63
+ - Do not persist audio or interim transcript deltas. Append completed user and
64
+ assistant utterances as ordinary text messages to the exact chat thread
65
+ captured when the session starts. Ending voice mode opens that chat so the
66
+ user can continue over text. Store only compact lifecycle and latest context
67
+ at `application_state["realtime-voice-session"]`; delete it when the session
68
+ ends.
63
69
  - Missing-key failures should open Settings focused on the user-scoped
64
70
  `OPENAI_API_KEY` field. Never send, log, or echo the key to the browser.
65
71