sliccy 5.31.2 → 5.31.4

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 (209) hide show
  1. package/dist/node-server/_shared/electron-overlay-route.d.ts +31 -0
  2. package/dist/node-server/_shared/electron-overlay-route.d.ts.map +1 -0
  3. package/dist/node-server/_shared/electron-overlay-route.js +29 -0
  4. package/dist/node-server/_shared/electron-overlay-route.js.map +1 -0
  5. package/dist/node-server/_shared/index.d.ts +1 -0
  6. package/dist/node-server/_shared/index.d.ts.map +1 -1
  7. package/dist/node-server/_shared/index.js +1 -0
  8. package/dist/node-server/_shared/index.js.map +1 -1
  9. package/dist/node-server/electron-controller.d.ts +2 -10
  10. package/dist/node-server/electron-controller.js +5 -10
  11. package/dist/node-server/electron-runtime.d.ts +0 -1
  12. package/dist/node-server/electron-runtime.js +0 -1
  13. package/dist/ui/assets/__vite-browser-external-CDnYSdyJ.js +1 -0
  14. package/dist/ui/assets/account-store-CjP3u0Xj.js +103 -0
  15. package/dist/ui/assets/{account-store-CCSM8d8q.js → account-store-QLqDJZ3y.js} +3 -3
  16. package/dist/ui/assets/adobe-1kG8VxBi.js +1 -0
  17. package/dist/ui/assets/adobe-D014kRHR.js +2 -0
  18. package/dist/ui/assets/{adobe-oauth-state-CzP4Zq5_.js → adobe-oauth-state-Bw9cHJvy.js} +1 -1
  19. package/dist/ui/assets/adobe-oauth-state-Ge2y0PGt.js +1 -0
  20. package/dist/ui/assets/{agent-message-to-chat-GFs2kSg4.js → agent-message-to-chat-DAZlC-W0.js} +1 -1
  21. package/dist/ui/assets/anthropic-messages-DP3-Xd3J.js +39 -0
  22. package/dist/ui/assets/{anthropic-LjoeX6v-.js → anthropic-messages-DSmP2_-Q.js} +6 -6
  23. package/dist/ui/assets/{apps-BcboOJOi.js → apps-CQfWRwG1.js} +1 -1
  24. package/dist/ui/assets/azure-openai-D4Y91RF2.js +1 -0
  25. package/dist/ui/assets/{azure-openai-CNrgrux4.js → azure-openai-DzS94JlK.js} +1 -1
  26. package/dist/ui/assets/azure-openai-responses-CEEm6_Xn.js +1 -0
  27. package/dist/ui/assets/azure-openai-responses-YO8iO-Ch.js +1 -0
  28. package/dist/ui/assets/bedrock-camp-DVKDCEuf.js +1 -0
  29. package/dist/ui/assets/bedrock-camp-DbZ6Mjym.js +1 -0
  30. package/dist/ui/assets/cerebras-CCUO5Bgl.js +1 -0
  31. package/dist/ui/assets/cerebras-kxgog_fc.js +1 -0
  32. package/dist/ui/assets/compat-DADQxxLV.js +2 -0
  33. package/dist/ui/assets/completionchunk-B2eUYPOo.js +40 -0
  34. package/dist/ui/assets/completionchunk-BsT4qCtf.js +40 -0
  35. package/dist/ui/assets/{composer-speech-D7pXrLX8.js → composer-speech-C8TRsqUk.js} +1 -1
  36. package/dist/ui/assets/{connect-surface-DghcEB5c.js → connect-surface-BtGC0JlX.js} +1 -1
  37. package/dist/ui/assets/{context-compaction-DvlXtgVG.js → context-compaction-DaxQExZG.js} +1 -1
  38. package/dist/ui/assets/dip-MMWTvMmO.js +1 -0
  39. package/dist/ui/assets/{dist-CyO5KyPV.js → dist-B8waMwOf.js} +1 -1
  40. package/dist/ui/assets/{dist-WnUiq_H6.js → dist-NK6NkUbO.js} +1 -1
  41. package/dist/ui/assets/{ensure-speech-assets-DUy7MpCX.js → ensure-speech-assets-D5QLe0MT.js} +1 -1
  42. package/dist/ui/assets/esp8266-BtqgI4Fj.js +1 -0
  43. package/dist/ui/assets/{esptool-operations-BZV7XYJg.js → esptool-operations-9SVL1aTu.js} +2 -2
  44. package/dist/ui/assets/{fs-CbeB65Hv.js → fs-Cm5Q5rbx.js} +1 -1
  45. package/dist/ui/assets/{fs-DNUVsv8F.js → fs-DClGwY5x.js} +2 -2
  46. package/dist/ui/assets/{github-D-y_odP_.js → github-5cJ0OWUB.js} +2 -2
  47. package/dist/ui/assets/{github-DafF3J91.js → github-DvQEBnqP.js} +1 -1
  48. package/dist/ui/assets/github-copilot-BbNKKeqF.js +1 -0
  49. package/dist/ui/assets/github-copilot-BdkOFmSZ.js +2 -0
  50. package/dist/ui/assets/github-copilot-headers-DRgtIyTm.js +1 -0
  51. package/dist/ui/assets/google-generative-ai-Cz3VHJVe.js +1 -0
  52. package/dist/ui/assets/google-generative-ai-DRLjqQHr.js +1 -0
  53. package/dist/ui/assets/{google-shared-CwjAeP6N.js → google-shared-0Fg2dFO2.js} +1 -1
  54. package/dist/ui/assets/{google-shared-CFmFmYdk.js → google-shared-mehyRjje.js} +1 -1
  55. package/dist/ui/assets/google-vertex-C8F4Q-3-.js +1 -0
  56. package/dist/ui/assets/google-vertex-DI_ybVGc.js +1 -0
  57. package/dist/ui/assets/headers-CbDaTl3c.js +1 -0
  58. package/dist/ui/assets/{hear-DTf211DF.js → hear-C2QG7EBv.js} +1 -1
  59. package/dist/ui/assets/{hear-pJ6dxizz.js → hear-DEv4kmVy.js} +1 -1
  60. package/dist/ui/assets/{kernel-worker-4k1eVOmV.js → kernel-worker-dBGEcbBm.js} +1197 -1198
  61. package/dist/ui/assets/{kokoro-engine-DgL3vg_o.js → kokoro-engine-r1z4FFxZ.js} +1 -1
  62. package/dist/ui/assets/{lick-ws-bridge-DFfNBQjK.js → lick-ws-bridge-BvQNg7SI.js} +1 -1
  63. package/dist/ui/assets/{lick-ws-bridge-CjWMZdHT.js → lick-ws-bridge-Cc3lPQgg.js} +1 -1
  64. package/dist/ui/assets/{local-llm-C0H-56Mj.js → local-llm-DrnMUVlA.js} +2 -2
  65. package/dist/ui/assets/main-CPkFUsXk.js +24 -0
  66. package/dist/ui/assets/mistral-conversations-BD1LHG49.js +8 -0
  67. package/dist/ui/assets/mistral-conversations-CoropYyn.js +7 -0
  68. package/dist/ui/assets/models-ByRUWfA-.js +1 -0
  69. package/dist/ui/assets/mount-C4uwVpr7.js +1 -0
  70. package/dist/ui/assets/mount-bridge-client-DHpxu7lQ.js +1 -0
  71. package/dist/ui/assets/mount-m-BOnULA.js +2 -0
  72. package/dist/ui/assets/new-session-CxrL_CWN.js +2 -0
  73. package/dist/ui/assets/oauth-bootstrap-CDQPQ8Ho.js +2 -0
  74. package/dist/ui/assets/{oauth-service-DY8Ud2Yu.js → oauth-service-BSqTYvb6.js} +1 -1
  75. package/dist/ui/assets/openai-codex-B6ur6j3g.js +1 -0
  76. package/dist/ui/assets/openai-codex-responses-DUWTsNB0.js +7 -0
  77. package/dist/ui/assets/openai-codex-responses-DcE8b3Us.js +7 -0
  78. package/dist/ui/assets/{openai-codex-CMLZ1G9_.js → openai-codex-w1Ka-WDf.js} +1 -1
  79. package/dist/ui/assets/openai-completions-2m5htnw8.js +5 -0
  80. package/dist/ui/assets/openai-completions-CPxuOo6h.js +5 -0
  81. package/dist/ui/assets/openai-responses-BIaF8Olv.js +1 -0
  82. package/dist/ui/assets/openai-responses-D3YJWUR5.js +1 -0
  83. package/dist/ui/assets/openai-responses-shared-1KvKQf-4.js +12 -0
  84. package/dist/ui/assets/openai-responses-shared-CEQMR7Nx.js +12 -0
  85. package/dist/ui/assets/openrouter-images-CHaqAs_0.js +1 -0
  86. package/dist/ui/assets/openrouter-images-CIagBWVL.js +1 -0
  87. package/dist/ui/assets/otel-BvlmHUjk.js +3 -0
  88. package/dist/ui/assets/otel-CCT7TRJr.js +3 -0
  89. package/dist/ui/assets/{page-follower-tray-Cg2SsCF0.js → page-follower-tray-C9Fqqzib.js} +1 -1
  90. package/dist/ui/assets/panel-rpc-handlers-DgrIEdqQ.js +2 -0
  91. package/dist/ui/assets/port-bridge-client-BJ5rcoKH.js +2 -0
  92. package/dist/ui/assets/port-bridge-client-vT8ubtB-.js +1 -0
  93. package/dist/ui/assets/{provider-BUCvsLNz.js → provider-8lZWJTdm.js} +2 -2
  94. package/dist/ui/assets/{provider-BrF0oboR.js → provider-DKySmzpb.js} +1 -1
  95. package/dist/ui/assets/provider-env-D37PhSJu.js +1 -0
  96. package/dist/ui/assets/provider-env-DwY8YuMk.js +1 -0
  97. package/dist/ui/assets/provider-store-access-YMOMgBCh.js +1 -0
  98. package/dist/ui/assets/provider-store-access-gaNq5xWg.js +1 -0
  99. package/dist/ui/assets/{providers-DJhCeQOb.js → providers-B3pIB8gh.js} +1 -1
  100. package/dist/ui/assets/providers-TpMPsx54.js +2 -0
  101. package/dist/ui/assets/proxied-fetch-iGqLvoxh.js +2 -0
  102. package/dist/ui/assets/{py-realm-worker-DJfA3V8e.js → py-realm-worker-BP0PXobe.js} +1 -1
  103. package/dist/ui/assets/{pyodide-dCNxT3QU.js → pyodide-C3-pUJSm.js} +2 -2
  104. package/dist/ui/assets/{pyodide-CHuPF4e3.js → pyodide-CxYFR9UT.js} +1 -1
  105. package/dist/ui/assets/quick-llm-BRIFeEdv.js +1 -0
  106. package/dist/ui/assets/{secret-env-C-5TIS7_.js → secret-env-kbusPsVw.js} +1 -1
  107. package/dist/ui/assets/{secret-topology-D6iS4SOH.js → secret-topology-DnYeyyJY.js} +1 -1
  108. package/dist/ui/assets/secrets-bridge-client-x_puVSDN.js +1 -0
  109. package/dist/ui/assets/session-freezer-8K2DjgO1.js +1 -0
  110. package/dist/ui/assets/{speak-CvMJoM2C.js → speak-CWClYEDF.js} +1 -1
  111. package/dist/ui/assets/{speak-BvHvt4mX.js → speak-DnUM0f7v.js} +1 -1
  112. package/dist/ui/assets/{sprinkle-manager-OTHBZXNW.js → sprinkle-manager--5UxyLSA.js} +1 -1
  113. package/dist/ui/assets/src-BdPw21ST.js +1 -0
  114. package/dist/ui/assets/{store-nPUKvFth.js → store-Mv68Y-cH.js} +1 -1
  115. package/dist/ui/assets/{sudo-CiUUdnPg.js → sudo-CcKvrbuS.js} +1 -1
  116. package/dist/ui/assets/transform-messages-CQuDksPz.js +1 -0
  117. package/dist/ui/assets/transform-messages-D7OsqBmU.js +1 -0
  118. package/dist/ui/assets/{transformers-env-tAIm37Yk.js → transformers-env-CjH48rcA.js} +1 -1
  119. package/dist/ui/assets/{transformers-env-DSFJ1AwW.js → transformers-env-X1AdbDU-.js} +1 -1
  120. package/dist/ui/assets/{tray-leader-CRjmmeiD.js → tray-leader-eM_igB1C.js} +1 -1
  121. package/dist/ui/assets/{tray-leave-runtime-D2jLANoP.js → tray-leave-runtime-DBU7Ic9c.js} +1 -1
  122. package/dist/ui/assets/{upgrade-detection-B3Guwrir.js → upgrade-detection-CfImj_q5.js} +1 -1
  123. package/dist/ui/assets/{voice-reply-B8IglnVD.js → voice-reply-C8VjCUaj.js} +1 -1
  124. package/dist/ui/assets/wc-attach-Doo7OGT5.js +13 -0
  125. package/dist/ui/assets/wc-extension-B6EAyp6S.js +2 -0
  126. package/dist/ui/assets/{wc-float-label-bfJhTEza.js → wc-float-label-Dh8xz8qh.js} +1 -1
  127. package/dist/ui/assets/wc-follower-2aecKVEz.js +4 -0
  128. package/dist/ui/assets/wc-live-DQLH_pQE.js +258 -0
  129. package/dist/ui/assets/wc-nav-DWpnwKpW.js +2 -0
  130. package/dist/ui/assets/{wc-onboarding-Cc7Y71yr.js → wc-onboarding-C-y0ZiMT.js} +2 -2
  131. package/dist/ui/assets/wc-placeholder-Cy7INDNF.js +4 -0
  132. package/dist/ui/assets/{wc-settings-C1GihJ60.js → wc-settings-DzNAgUGS.js} +2 -2
  133. package/dist/ui/assets/{wc-shell-BIMESmsG.js → wc-shell-Djik448Y.js} +4 -4
  134. package/dist/ui/assets/wc-sprinkles-Jss4eZGw.js +2 -0
  135. package/dist/ui/assets/wc-tray-Cx_9mhYu.js +2 -0
  136. package/dist/ui/assets/{whisper-engine-CXEBUN7G.js → whisper-engine-D8ajA8nU.js} +1 -1
  137. package/dist/ui/assets/{whisper-session-CouZGLHz.js → whisper-session-Duou3zwG.js} +2 -2
  138. package/dist/ui/assets/{xai-grok-CXbJRFnC.js → xai-grok-267N2Xuf.js} +1 -1
  139. package/dist/ui/assets/xai-grok-C9i8WcJE.js +1 -0
  140. package/dist/ui/index.html +14 -13
  141. package/dist/ui/llm-proxy-sw.js +1 -1
  142. package/dist/ui/packages/webapp/index.html +14 -13
  143. package/package.json +4 -4
  144. package/dist/ui/assets/__vite-browser-external-Dyo3iKee.js +0 -1
  145. package/dist/ui/assets/account-store-C4AuIs8H.js +0 -99
  146. package/dist/ui/assets/adobe-BZKZ-lu4.js +0 -2
  147. package/dist/ui/assets/adobe-CFBqbTXi.js +0 -1
  148. package/dist/ui/assets/adobe-oauth-state---RmeoFk.js +0 -1
  149. package/dist/ui/assets/anthropic-BOEkIcb-.js +0 -39
  150. package/dist/ui/assets/azure-openai-DrzyqguT.js +0 -1
  151. package/dist/ui/assets/azure-openai-responses-CbJrQGi8.js +0 -1
  152. package/dist/ui/assets/azure-openai-responses-DPSrcT4o.js +0 -1
  153. package/dist/ui/assets/bedrock-camp-DjKgax8m.js +0 -1
  154. package/dist/ui/assets/bedrock-camp-DlP7CPgV.js +0 -5
  155. package/dist/ui/assets/cerebras-BsmBWDtr.js +0 -1
  156. package/dist/ui/assets/cerebras-CHs1ca14.js +0 -1
  157. package/dist/ui/assets/diagnostics-DRDFDs4d.js +0 -1
  158. package/dist/ui/assets/diagnostics-mI-AnKx_.js +0 -1
  159. package/dist/ui/assets/dip-BEFnAFyd.js +0 -1
  160. package/dist/ui/assets/dist-D69OmKNn.js +0 -4
  161. package/dist/ui/assets/esp8266-CZsuQis3.js +0 -1
  162. package/dist/ui/assets/event-stream-BJI_nGaK.js +0 -1
  163. package/dist/ui/assets/github-copilot-CPvJORhb.js +0 -1
  164. package/dist/ui/assets/github-copilot-Cyfds-bN.js +0 -2
  165. package/dist/ui/assets/github-copilot-headers-DZtWWv8W.js +0 -1
  166. package/dist/ui/assets/google-C3U0TK_l.js +0 -1
  167. package/dist/ui/assets/google-DPvIPcfE.js +0 -1
  168. package/dist/ui/assets/google-vertex-BbeV3aSP.js +0 -1
  169. package/dist/ui/assets/google-vertex-CEGsokz8.js +0 -1
  170. package/dist/ui/assets/headers-DO1UzNKu.js +0 -1
  171. package/dist/ui/assets/main-Cvx4yj8c.js +0 -24
  172. package/dist/ui/assets/mistral-CLF3Mo4W.js +0 -46
  173. package/dist/ui/assets/mistral-DkJAVbOW.js +0 -46
  174. package/dist/ui/assets/mount-Bj5edAhN.js +0 -1
  175. package/dist/ui/assets/mount-SVjRQA-_.js +0 -2
  176. package/dist/ui/assets/mount-bridge-client-CB9Fm9Jh.js +0 -2
  177. package/dist/ui/assets/new-session-mnPeJ9sS.js +0 -2
  178. package/dist/ui/assets/oauth-bootstrap-BD2sXBnz.js +0 -2
  179. package/dist/ui/assets/openai-codex-l2aWFKVd.js +0 -1
  180. package/dist/ui/assets/openai-codex-responses-B2oZ1hgB.js +0 -7
  181. package/dist/ui/assets/openai-codex-responses-Dumyd9t2.js +0 -7
  182. package/dist/ui/assets/openai-completions-B2n4Op2S.js +0 -5
  183. package/dist/ui/assets/openai-completions-aHU8w14d.js +0 -5
  184. package/dist/ui/assets/openai-responses-4ryIAXQS.js +0 -1
  185. package/dist/ui/assets/openai-responses-BurVahs3.js +0 -1
  186. package/dist/ui/assets/openai-responses-shared-BebU8o_f.js +0 -12
  187. package/dist/ui/assets/openai-responses-shared-D9O9OCYB.js +0 -12
  188. package/dist/ui/assets/openrouter-B1ruTb6k.js +0 -1
  189. package/dist/ui/assets/openrouter-XmffhsNH.js +0 -1
  190. package/dist/ui/assets/panel-rpc-handlers-5eK7z2WC.js +0 -2
  191. package/dist/ui/assets/provider-store-access-B_4FO9Mq.js +0 -1
  192. package/dist/ui/assets/provider-store-access-OGuFCskr.js +0 -1
  193. package/dist/ui/assets/providers-BXXZ3Xkp.js +0 -2
  194. package/dist/ui/assets/proxied-fetch-Bht31_rT.js +0 -2
  195. package/dist/ui/assets/quick-llm-oVxQHiDJ.js +0 -1
  196. package/dist/ui/assets/secrets-bridge-client-DwfYAgDv.js +0 -2
  197. package/dist/ui/assets/session-freezer-B5ZKu3BY.js +0 -1
  198. package/dist/ui/assets/src-x0cJ68Fe.js +0 -1
  199. package/dist/ui/assets/transform-messages-BjP6vDPY.js +0 -1
  200. package/dist/ui/assets/transform-messages-DiIjWKhh.js +0 -1
  201. package/dist/ui/assets/wc-attach-CV5PztL5.js +0 -13
  202. package/dist/ui/assets/wc-extension-Cyszr-Ua.js +0 -2
  203. package/dist/ui/assets/wc-follower-Bq5YVYRG.js +0 -4
  204. package/dist/ui/assets/wc-live-Cqx2-MrK.js +0 -258
  205. package/dist/ui/assets/wc-nav-DXxnXtTJ.js +0 -2
  206. package/dist/ui/assets/wc-placeholder-Db_9QdTp.js +0 -4
  207. package/dist/ui/assets/wc-sprinkles-Dxkie1pO.js +0 -2
  208. package/dist/ui/assets/wc-tray-D28SvDP2.js +0 -2
  209. package/dist/ui/assets/xai-grok-BzenC4W4.js +0 -1
@@ -0,0 +1 @@
1
+ import{a as e,d as t,o as n,r}from"./transform-messages-CQuDksPz.js";import{t as i}from"./provider-env-DwY8YuMk.js";import{n as a}from"./headers-CbDaTl3c.js";import{t as o}from"./sanitize-unicode-DmIE6hZJ.js";import{a as s,c,i as l,l as u,n as d,o as f,r as p,s as m,t as h}from"./google-shared-0Fg2dFO2.js";const g={THINKING_LEVEL_UNSPECIFIED:u.THINKING_LEVEL_UNSPECIFIED,MINIMAL:u.MINIMAL,LOW:u.LOW,MEDIUM:u.MEDIUM,HIGH:u.HIGH};let _=0;const v=(n,r,i)=>{let a=new t;return(async()=>{let t={role:`assistant`,content:[],api:`google-vertex`,provider:n.provider,model:n.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let o=E(i),s=o?x(n,o,i?.headers):b(n,O(i),k(i),i?.headers,i?.env),c=A(n,r,i),u=await i?.onPayload?.(c,n);u!==void 0&&(c=u);let d=await s.models.generateContentStream(c);a.push({type:`start`,partial:t});let m=null,h=t.content,g=()=>h.length-1;for await(let r of d){t.responseId||=r.responseId;let i=r.candidates?.[0];if(i?.content?.parts)for(let e of i.content.parts){if(e.text!==void 0){let n=p(e);(!m||n&&m.type!==`thinking`||!n&&m.type!==`text`)&&(m&&(m.type===`text`?a.push({type:`text_end`,contentIndex:h.length-1,content:m.text,partial:t}):a.push({type:`thinking_end`,contentIndex:g(),content:m.thinking,partial:t})),n?(m={type:`thinking`,thinking:``,thinkingSignature:void 0},t.content.push(m),a.push({type:`thinking_start`,contentIndex:g(),partial:t})):(m={type:`text`,text:``},t.content.push(m),a.push({type:`text_start`,contentIndex:g(),partial:t}))),m.type===`thinking`?(m.thinking+=e.text,m.thinkingSignature=f(m.thinkingSignature,e.thoughtSignature),a.push({type:`thinking_delta`,contentIndex:g(),delta:e.text,partial:t})):(m.text+=e.text,m.textSignature=f(m.textSignature,e.thoughtSignature),a.push({type:`text_delta`,contentIndex:g(),delta:e.text,partial:t}))}if(e.functionCall){m&&=(m.type===`text`?a.push({type:`text_end`,contentIndex:g(),content:m.text,partial:t}):a.push({type:`thinking_end`,contentIndex:g(),content:m.thinking,partial:t}),null);let n=e.functionCall.id,r={type:`toolCall`,id:!n||t.content.some(e=>e.type===`toolCall`&&e.id===n)?`${e.functionCall.name}_${Date.now()}_${++_}`:n,name:e.functionCall.name||``,arguments:e.functionCall.args??{},...e.thoughtSignature&&{thoughtSignature:e.thoughtSignature}};t.content.push(r),a.push({type:`toolcall_start`,contentIndex:g(),partial:t}),a.push({type:`toolcall_delta`,contentIndex:g(),delta:JSON.stringify(r.arguments),partial:t}),a.push({type:`toolcall_end`,contentIndex:g(),toolCall:r,partial:t})}}i?.finishReason&&(t.stopReason=l(i.finishReason),t.content.some(e=>e.type===`toolCall`)&&(t.stopReason=`toolUse`)),r.usageMetadata&&(t.usage={input:(r.usageMetadata.promptTokenCount||0)-(r.usageMetadata.cachedContentTokenCount||0),output:(r.usageMetadata.candidatesTokenCount||0)+(r.usageMetadata.thoughtsTokenCount||0),cacheRead:r.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,totalTokens:r.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},e(n,t.usage))}if(m&&(m.type===`text`?a.push({type:`text_end`,contentIndex:g(),content:m.text,partial:t}):a.push({type:`thinking_end`,contentIndex:g(),content:m.thinking,partial:t})),i?.signal?.aborted)throw Error(`Request was aborted`);if(t.stopReason===`aborted`||t.stopReason===`error`)throw Error(`An unknown error occurred`);a.push({type:`done`,reason:t.stopReason,message:t}),a.end()}catch(e){for(let e of t.content)`index`in e&&delete e.index;t.stopReason=i?.signal?.aborted?`aborted`:`error`,t.errorMessage=e instanceof Error?e.message:JSON.stringify(e),a.push({type:`error`,reason:t.stopReason,error:t}),a.end()}})(),a},y=(e,t,i)=>{let a=r(e,i,void 0);if(!i?.reasoning)return v(e,t,{...a,thinking:{enabled:!1}});let o=n(e,i.reasoning),s=o===`off`?`high`:o,c=e;return j(c)||M(c)?v(e,t,{...a,thinking:{enabled:!0,level:P(s,c)}}):v(e,t,{...a,thinking:{enabled:!0,budgetTokens:F(c,s,i.thinkingBudgets)}})};function b(e,t,n,r,i){let a=T(i);return new m({vertexai:!0,project:t,location:n,apiVersion:`v1`,...a?{googleAuthOptions:a}:{},httpOptions:S(e,r)})}function x(e,t,n){return new m({vertexai:!0,apiKey:t,apiVersion:`v1`,httpOptions:S(e,n)})}function S(e,t){let n={},r=C(e.baseUrl);r&&(n.baseUrl=r,n.baseUrlResourceScope=c.COLLECTION,w(r)&&(n.apiVersion=``));let i=a({...e.headers,...t});return i&&(n.headers=i),Object.keys(n).length>0?n:void 0}function C(e){let t=e.trim();if(!(!t||t.includes(`{location}`)))return t}function w(e){try{return new URL(e).pathname.split(`/`).some(e=>/^v\d+(?:beta\d*)?$/.test(e))}catch{return/(?:^|\/)v\d+(?:beta\d*)?(?:\/|$)/.test(e)}}function T(e){let t=i(`GOOGLE_APPLICATION_CREDENTIALS`,e);return t?{keyFilename:t}:void 0}function E(e){let t=e?.apiKey?.trim();if(!(!t||t===`gcp-vertex-credentials`||D(t)))return t}function D(e){return/^<[^>]+>$/.test(e)}function O(e){let t=e?.project||i(`GOOGLE_CLOUD_PROJECT`,e?.env)||i(`GCLOUD_PROJECT`,e?.env);if(!t)throw Error(`Vertex AI requires a project ID. Set GOOGLE_CLOUD_PROJECT/GCLOUD_PROJECT or pass project in options.`);return t}function k(e){let t=e?.location||i(`GOOGLE_CLOUD_LOCATION`,e?.env);if(!t)throw Error(`Vertex AI requires a location. Set GOOGLE_CLOUD_LOCATION or pass location in options.`);return t}function A(e,t,n={}){let r=h(e,t),i={};n.temperature!==void 0&&(i.temperature=n.temperature),n.maxTokens!==void 0&&(i.maxOutputTokens=n.maxTokens);let a={...Object.keys(i).length>0&&i,...t.systemPrompt&&{systemInstruction:o(t.systemPrompt)},...t.tools&&t.tools.length>0&&{tools:d(t.tools)}};if(t.tools&&t.tools.length>0&&n.toolChoice?a.toolConfig={functionCallingConfig:{mode:s(n.toolChoice)}}:a.toolConfig=void 0,n.thinking?.enabled&&e.reasoning){let e={includeThoughts:!0};n.thinking.level===void 0?n.thinking.budgetTokens!==void 0&&(e.thinkingBudget=n.thinking.budgetTokens):e.thinkingLevel=g[n.thinking.level],a.thinkingConfig=e}else e.reasoning&&n.thinking&&!n.thinking.enabled&&(a.thinkingConfig=N(e));if(n.signal){if(n.signal.aborted)throw Error(`Request aborted`);a.abortSignal=n.signal}return{model:e.id,contents:r,config:a}}function j(e){return/gemini-3(?:\.\d+)?-pro/.test(e.id.toLowerCase())}function M(e){let t=e.id.toLowerCase();return/gemini-3(?:\.\d+)?-flash/.test(t)||t===`gemini-flash-latest`||t===`gemini-flash-lite-latest`}function N(e){let t=e;return j(t)?{thinkingLevel:u.LOW}:M(t)?{thinkingLevel:u.MINIMAL}:{thinkingBudget:0}}function P(e,t){if(j(t))switch(e){case`minimal`:case`low`:return`LOW`;case`medium`:case`high`:return`HIGH`}switch(e){case`minimal`:return`MINIMAL`;case`low`:return`LOW`;case`medium`:return`MEDIUM`;case`high`:return`HIGH`}}function F(e,t,n){return n?.[t]===void 0?e.id.includes(`2.5-pro`)?{minimal:128,low:2048,medium:8192,high:32768}[t]:e.id.includes(`2.5-flash`)?{minimal:128,low:2048,medium:8192,high:24576}[t]:-1:n[t]}export{v as stream,y as streamSimple};
@@ -0,0 +1 @@
1
+ import{n as e,o as t,t as n}from"./models-ByRUWfA-.js";import{t as r}from"./provider-env-D37PhSJu.js";import{r as i}from"./transform-messages-D7OsqBmU.js";import{n as a}from"./headers-CbDaTl3c.js";import{t as o}from"./sanitize-unicode-DmIE6hZJ.js";import{a as s,c,i as l,l as u,n as d,o as f,r as p,s as m,t as h}from"./google-shared-mehyRjje.js";var g=`v1`,_=`gcp-vertex-credentials`,v={THINKING_LEVEL_UNSPECIFIED:u.THINKING_LEVEL_UNSPECIFIED,MINIMAL:u.MINIMAL,LOW:u.LOW,MEDIUM:u.MEDIUM,HIGH:u.HIGH},y=0,b=(e,r,i)=>{let a=new t;return(async()=>{let t={role:`assistant`,content:[],api:`google-vertex`,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let o=O(i),s=o?C(e,o,i?.headers):S(e,A(i),j(i),i?.headers,i?.env),c=M(e,r,i),u=await i?.onPayload?.(c,e);u!==void 0&&(c=u);let d=await s.models.generateContentStream(c);a.push({type:`start`,partial:t});let m=null,h=t.content,g=()=>h.length-1;for await(let r of d){t.responseId||=r.responseId;let i=r.candidates?.[0];if(i?.content?.parts)for(let e of i.content.parts){if(e.text!==void 0){let n=p(e);(!m||n&&m.type!==`thinking`||!n&&m.type!==`text`)&&(m&&(m.type===`text`?a.push({type:`text_end`,contentIndex:h.length-1,content:m.text,partial:t}):a.push({type:`thinking_end`,contentIndex:g(),content:m.thinking,partial:t})),n?(m={type:`thinking`,thinking:``,thinkingSignature:void 0},t.content.push(m),a.push({type:`thinking_start`,contentIndex:g(),partial:t})):(m={type:`text`,text:``},t.content.push(m),a.push({type:`text_start`,contentIndex:g(),partial:t}))),m.type===`thinking`?(m.thinking+=e.text,m.thinkingSignature=f(m.thinkingSignature,e.thoughtSignature),a.push({type:`thinking_delta`,contentIndex:g(),delta:e.text,partial:t})):(m.text+=e.text,m.textSignature=f(m.textSignature,e.thoughtSignature),a.push({type:`text_delta`,contentIndex:g(),delta:e.text,partial:t}))}if(e.functionCall){m&&=(m.type===`text`?a.push({type:`text_end`,contentIndex:g(),content:m.text,partial:t}):a.push({type:`thinking_end`,contentIndex:g(),content:m.thinking,partial:t}),null);let n=e.functionCall.id,r={type:`toolCall`,id:!n||t.content.some(e=>e.type===`toolCall`&&e.id===n)?`${e.functionCall.name}_${Date.now()}_${++y}`:n,name:e.functionCall.name||``,arguments:e.functionCall.args??{},...e.thoughtSignature&&{thoughtSignature:e.thoughtSignature}};t.content.push(r),a.push({type:`toolcall_start`,contentIndex:g(),partial:t}),a.push({type:`toolcall_delta`,contentIndex:g(),delta:JSON.stringify(r.arguments),partial:t}),a.push({type:`toolcall_end`,contentIndex:g(),toolCall:r,partial:t})}}i?.finishReason&&(t.stopReason=l(i.finishReason),t.content.some(e=>e.type===`toolCall`)&&(t.stopReason=`toolUse`)),r.usageMetadata&&(t.usage={input:(r.usageMetadata.promptTokenCount||0)-(r.usageMetadata.cachedContentTokenCount||0),output:(r.usageMetadata.candidatesTokenCount||0)+(r.usageMetadata.thoughtsTokenCount||0),cacheRead:r.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,totalTokens:r.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},n(e,t.usage))}if(m&&(m.type===`text`?a.push({type:`text_end`,contentIndex:g(),content:m.text,partial:t}):a.push({type:`thinking_end`,contentIndex:g(),content:m.thinking,partial:t})),i?.signal?.aborted)throw Error(`Request was aborted`);if(t.stopReason===`aborted`||t.stopReason===`error`)throw Error(`An unknown error occurred`);a.push({type:`done`,reason:t.stopReason,message:t}),a.end()}catch(e){for(let e of t.content)`index`in e&&delete e.index;t.stopReason=i?.signal?.aborted?`aborted`:`error`,t.errorMessage=e instanceof Error?e.message:JSON.stringify(e),a.push({type:`error`,reason:t.stopReason,error:t}),a.end()}})(),a},x=(t,n,r)=>{let a=i(t,r,void 0);if(!r?.reasoning)return b(t,n,{...a,thinking:{enabled:!1}});let o=e(t,r.reasoning),s=o===`off`?`high`:o,c=t;return N(c)||P(c)?b(t,n,{...a,thinking:{enabled:!0,level:I(s,c)}}):b(t,n,{...a,thinking:{enabled:!0,budgetTokens:L(c,s,r.thinkingBudgets)}})};function S(e,t,n,r,i){let a=D(i);return new m({vertexai:!0,project:t,location:n,apiVersion:g,...a?{googleAuthOptions:a}:{},httpOptions:w(e,r)})}function C(e,t,n){return new m({vertexai:!0,apiKey:t,apiVersion:g,httpOptions:w(e,n)})}function w(e,t){let n={},r=T(e.baseUrl);r&&(n.baseUrl=r,n.baseUrlResourceScope=c.COLLECTION,E(r)&&(n.apiVersion=``));let i=a({...e.headers,...t});return i&&(n.headers=i),Object.keys(n).length>0?n:void 0}function T(e){let t=e.trim();if(!(!t||t.includes(`{location}`)))return t}function E(e){try{return new URL(e).pathname.split(`/`).some(e=>/^v\d+(?:beta\d*)?$/.test(e))}catch{return/(?:^|\/)v\d+(?:beta\d*)?(?:\/|$)/.test(e)}}function D(e){let t=r(`GOOGLE_APPLICATION_CREDENTIALS`,e);return t?{keyFilename:t}:void 0}function O(e){let t=e?.apiKey?.trim();if(!(!t||t===_||k(t)))return t}function k(e){return/^<[^>]+>$/.test(e)}function A(e){let t=e?.project||r(`GOOGLE_CLOUD_PROJECT`,e?.env)||r(`GCLOUD_PROJECT`,e?.env);if(!t)throw Error(`Vertex AI requires a project ID. Set GOOGLE_CLOUD_PROJECT/GCLOUD_PROJECT or pass project in options.`);return t}function j(e){let t=e?.location||r(`GOOGLE_CLOUD_LOCATION`,e?.env);if(!t)throw Error(`Vertex AI requires a location. Set GOOGLE_CLOUD_LOCATION or pass location in options.`);return t}function M(e,t,n={}){let r=h(e,t),i={};n.temperature!==void 0&&(i.temperature=n.temperature),n.maxTokens!==void 0&&(i.maxOutputTokens=n.maxTokens);let a={...Object.keys(i).length>0&&i,...t.systemPrompt&&{systemInstruction:o(t.systemPrompt)},...t.tools&&t.tools.length>0&&{tools:d(t.tools)}};if(t.tools&&t.tools.length>0&&n.toolChoice?a.toolConfig={functionCallingConfig:{mode:s(n.toolChoice)}}:a.toolConfig=void 0,n.thinking?.enabled&&e.reasoning){let e={includeThoughts:!0};n.thinking.level===void 0?n.thinking.budgetTokens!==void 0&&(e.thinkingBudget=n.thinking.budgetTokens):e.thinkingLevel=v[n.thinking.level],a.thinkingConfig=e}else e.reasoning&&n.thinking&&!n.thinking.enabled&&(a.thinkingConfig=F(e));if(n.signal){if(n.signal.aborted)throw Error(`Request aborted`);a.abortSignal=n.signal}return{model:e.id,contents:r,config:a}}function N(e){return/gemini-3(?:\.\d+)?-pro/.test(e.id.toLowerCase())}function P(e){let t=e.id.toLowerCase();return/gemini-3(?:\.\d+)?-flash/.test(t)||t===`gemini-flash-latest`||t===`gemini-flash-lite-latest`}function F(e){let t=e;return N(t)?{thinkingLevel:u.LOW}:P(t)?{thinkingLevel:u.MINIMAL}:{thinkingBudget:0}}function I(e,t){if(N(t))switch(e){case`minimal`:case`low`:return`LOW`;case`medium`:case`high`:return`HIGH`}switch(e){case`minimal`:return`MINIMAL`;case`low`:return`LOW`;case`medium`:return`MEDIUM`;case`high`:return`HIGH`}}function L(e,t,n){return n?.[t]===void 0?e.id.includes(`2.5-pro`)?{minimal:128,low:2048,medium:8192,high:32768}[t]:e.id.includes(`2.5-flash`)?{minimal:128,low:2048,medium:8192,high:24576}[t]:-1:n[t]}export{b as stream,x as streamSimple};
@@ -0,0 +1 @@
1
+ function e(e){let t={};for(let[n,r]of e.entries())t[n]=r;return t}function t(e){if(!e)return;let t={};for(let[n,r]of Object.entries(e))r!==null&&(t[n]=r);return Object.keys(t).length>0?t:void 0}export{t as n,e as t};
@@ -1 +1 @@
1
- import{t as e}from"./logger-LESFN7Hj.js";import{t}from"./wc-permissions-registry-C7PhTX3c.js";import{i as n,n as r,r as i}from"./whisper-engine-CXEBUN7G.js";const a=16e3;async function o(e){if(typeof AudioContext>`u`||typeof OfflineAudioContext>`u`)throw Error(`audio decoding requires a window/page realm (AudioContext unavailable)`);let t=new AudioContext,n;try{n=await t.decodeAudioData(e.slice(0))}finally{await t.close().catch(()=>{})}let r=Math.max(1,Math.ceil(n.duration*a)),i=new OfflineAudioContext(1,r,a),o=i.createBufferSource();return o.buffer=n,o.connect(i.destination),o.start(),(await i.startRendering()).getChannelData(0).slice(0)}e(`speech:whisper-session`);function s(e){return e?.split(`-`)[0]?.toLowerCase()||void 0}const c=e(`speech:hear`);let l={};function u(){return l.getPermissionSurface?l.getPermissionSurface():t()||null}function d(){if(typeof window>`u`)return null;let e=window;return e.SpeechRecognition??e.webkitSpeechRecognition??null}var f=class extends Error{code;constructor(e){super(p(e)),this.name=`SpeechRecognitionError`,this.code=e}};function p(e){switch(e){case`network`:case`service-not-allowed`:return"builtin speech recognition is unsupported in this browser (no Web Speech cloud backend) — use `hear --engine enhanced`";case`not-allowed`:return`microphone permission denied for builtin speech recognition`;case`audio-capture`:return`no microphone available for builtin speech recognition`;case`no-speech`:return`no speech detected`;case`aborted`:return`speech recognition aborted`;default:return`speech recognition error: ${e}`}}function m(e){return e instanceof f&&(e.code===`network`||e.code===`service-not-allowed`)}function h(e,t){let n=d();return n?new Promise((r,i)=>{let a=Date.now(),o=()=>Date.now()-a,s=new n;s.continuous=!1,s.interimResults=!1,e&&(s.lang=e),c.debug(`builtinOnce: recognizer constructed`,{lang:e??`(browser default)`,timeoutMs:t});let l=``,u=!1,d=setTimeout(()=>{c.debug(`builtinOnce: timeout reached — stopping recognizer`,{elapsedMs:o()});try{s.stop()}catch{}},t);s.onstart=()=>c.debug(`builtinOnce: onstart (recognition service active)`,{elapsedMs:o()}),s.onaudiostart=()=>c.debug(`builtinOnce: onaudiostart (capturing audio)`,{elapsedMs:o()}),s.onspeechstart=()=>c.debug(`builtinOnce: onspeechstart (speech detected)`,{elapsedMs:o()}),s.onspeechend=()=>c.debug(`builtinOnce: onspeechend (speech ended)`,{elapsedMs:o()}),s.onnomatch=()=>c.debug(`builtinOnce: onnomatch (no recognizable speech)`,{elapsedMs:o()}),s.onresult=e=>{let t=[];for(let n=0;n<e.results.length;n++)t.push(e.results[n][0]?.transcript??``);l=t.join(` `).trim(),c.debug(`builtinOnce: onresult`,{elapsedMs:o(),resultCount:e.results.length,transcriptLength:l.length})},s.onerror=e=>{if(e.error===`no-speech`||e.error===`aborted`){c.debug(`builtinOnce: onerror (non-fatal — ends with empty transcript)`,{elapsedMs:o(),code:e.error});return}u=!0,clearTimeout(d),c.error(`builtinOnce: onerror (fatal)`,{elapsedMs:o(),code:e.error}),i(new f(e.error))},s.onend=()=>{clearTimeout(d),u?c.debug(`builtinOnce: onend after fatal error (already rejected)`,{elapsedMs:o()}):(c.debug(`builtinOnce: onend — resolving`,{elapsedMs:o(),transcriptLength:l.length,empty:l.length===0}),r(l))},c.debug(`builtinOnce: calling recognizer.start()`,{elapsedMs:o()}),s.start()}):Promise.reject(Error(`speech recognition unavailable in this environment`))}async function g(e){let t={audio:e?{deviceId:{exact:e}}:!0},n=u();if(n){c.debug(`acquireMicrophoneStream: requesting microphone via permission surface`,{hasDeviceId:!!e});let r=await n.prompt({kinds:[`microphone`],description:`The hear command needs your microphone to transcribe speech.`,requestOptions:{microphone:{constraints:t}},skipIfGranted:!0});if(r.status!==`granted`){c.error(`acquireMicrophoneStream: microphone permission not granted`,{status:r.status,reason:r.reason});let e=r.message?`: ${r.message}`:``;throw Error(`microphone permission ${r.reason??r.status}${e}`)}let i=r.grants.find(e=>e.kind===`microphone`);if(!i)throw c.error(`acquireMicrophoneStream: permission granted without a microphone stream`),Error(`microphone permission granted without a stream`);return c.debug(`acquireMicrophoneStream: microphone stream acquired via surface`),i.stream}if(!navigator.mediaDevices?.getUserMedia)throw c.error(`acquireMicrophoneStream: getUserMedia unavailable in this realm`),Error(`microphone capture unavailable in this realm`);c.debug(`acquireMicrophoneStream: no permission surface; calling getUserMedia directly`);try{let e=await navigator.mediaDevices.getUserMedia(t);return c.debug(`acquireMicrophoneStream: getUserMedia succeeded (direct)`),e}catch(e){throw c.error(`acquireMicrophoneStream: getUserMedia failed (direct)`,e),e}}async function _(e){let t=await g(e),n=new MediaRecorder(t),r=[];n.ondataavailable=e=>{e.data.size>0&&r.push(e.data)},n.start(500);let i=()=>{for(let e of t.getTracks())e.stop()};return{stop:()=>new Promise(e=>{n.onstop=()=>{i(),e(r.length?new Blob(r,{type:n.mimeType||`audio/webm`}):null)};try{n.stop()}catch{i(),e(null)}}),cancel:()=>{try{n.stop()}catch{}i()}}}async function v(e){if(!u())return c.debug(`primeBuiltinPermission: no permission surface; recognizer drives its own prompt`),null;c.debug(`primeBuiltinPermission: priming microphone grant via permission surface`,{hasDeviceId:!!e});let t=await g(e);return c.debug(`primeBuiltinPermission: microphone primed; holding stream open for recognizer`),t}function y(e){if(e){for(let t of e.getTracks())t.stop();c.debug(`primeBuiltinPermission: released primed microphone stream`)}}async function b(e,t){let n=await _(e.deviceId),i=``;try{i=await h(e.lang,t)}catch(e){c.warn(`builtin endpointing failed; transcribing captured audio anyway`,e)}let a=await n.stop();if(!a)return{transcript:i,engine:`builtin`};try{let t=await r(),n=await o(await a.arrayBuffer()),i=await t.transcribe(n,{language:s(e.lang)});if(i)return{transcript:i,engine:`enhanced`}}catch(e){c.warn(`whisper transcription failed; falling back to builtin text`,e)}return{transcript:i,engine:`builtin`}}async function x(e={}){let t=e.timeoutMs??3e4,r=e.engine??`auto`,i=n()===`ready`;if(r===`enhanced`&&!i)throw c.error(`hearCapture: enhanced engine requested but whisper is not ready`),Error("enhanced engine not ready — run `hear --warmup` (check progress with `hear --status`)");let a=r!==`builtin`&&i;if(c.debug(`hearCapture: engine dispatch`,{requested:r,enhancedReady:i,resolved:a?`enhanced`:`builtin`}),a)return b(e,t);let o=await v(e.deviceId);try{let n=await h(e.lang,t);return c.debug(`hearCapture: builtin recognition produced a transcript`),{transcript:n,engine:`builtin`}}catch(n){if(!m(n))throw c.error(`hearCapture: builtin recognition failed`,n),n;if(i)return c.debug(`hearCapture: builtin unsupported in this browser; falling back to enhanced whisper`),y(o),o=null,b(e,t);throw c.error(`hearCapture: builtin unsupported and whisper not ready`,{code:n.code}),n}finally{y(o)}}async function S(e,t){let n=await r(),i=await o(e);return{transcript:await n.transcribe(i,{language:s(t)}),engine:`enhanced`}}function C(){let e=i();return{state:n(),...e?{loaded:e.loaded,total:e.total,etaSeconds:e.etaSeconds}:{}}}function w(){return r().catch(()=>{}),C()}export{x as hearCapture,C as hearStatus,S as hearTranscribe,w as hearWarmup};
1
+ import{t as e}from"./logger-LESFN7Hj.js";import{t}from"./wc-permissions-registry-C7PhTX3c.js";import{i as n,n as r,r as i}from"./whisper-engine-D8ajA8nU.js";const a=16e3;async function o(e){if(typeof AudioContext>`u`||typeof OfflineAudioContext>`u`)throw Error(`audio decoding requires a window/page realm (AudioContext unavailable)`);let t=new AudioContext,n;try{n=await t.decodeAudioData(e.slice(0))}finally{await t.close().catch(()=>{})}let r=Math.max(1,Math.ceil(n.duration*a)),i=new OfflineAudioContext(1,r,a),o=i.createBufferSource();return o.buffer=n,o.connect(i.destination),o.start(),(await i.startRendering()).getChannelData(0).slice(0)}e(`speech:whisper-session`);function s(e){return e?.split(`-`)[0]?.toLowerCase()||void 0}const c=e(`speech:hear`);let l={};function u(){return l.getPermissionSurface?l.getPermissionSurface():t()||null}function d(){if(typeof window>`u`)return null;let e=window;return e.SpeechRecognition??e.webkitSpeechRecognition??null}var f=class extends Error{code;constructor(e){super(p(e)),this.name=`SpeechRecognitionError`,this.code=e}};function p(e){switch(e){case`network`:case`service-not-allowed`:return"builtin speech recognition is unsupported in this browser (no Web Speech cloud backend) — use `hear --engine enhanced`";case`not-allowed`:return`microphone permission denied for builtin speech recognition`;case`audio-capture`:return`no microphone available for builtin speech recognition`;case`no-speech`:return`no speech detected`;case`aborted`:return`speech recognition aborted`;default:return`speech recognition error: ${e}`}}function m(e){return e instanceof f&&(e.code===`network`||e.code===`service-not-allowed`)}function h(e,t){let n=d();return n?new Promise((r,i)=>{let a=Date.now(),o=()=>Date.now()-a,s=new n;s.continuous=!1,s.interimResults=!1,e&&(s.lang=e),c.debug(`builtinOnce: recognizer constructed`,{lang:e??`(browser default)`,timeoutMs:t});let l=``,u=!1,d=setTimeout(()=>{c.debug(`builtinOnce: timeout reached — stopping recognizer`,{elapsedMs:o()});try{s.stop()}catch{}},t);s.onstart=()=>c.debug(`builtinOnce: onstart (recognition service active)`,{elapsedMs:o()}),s.onaudiostart=()=>c.debug(`builtinOnce: onaudiostart (capturing audio)`,{elapsedMs:o()}),s.onspeechstart=()=>c.debug(`builtinOnce: onspeechstart (speech detected)`,{elapsedMs:o()}),s.onspeechend=()=>c.debug(`builtinOnce: onspeechend (speech ended)`,{elapsedMs:o()}),s.onnomatch=()=>c.debug(`builtinOnce: onnomatch (no recognizable speech)`,{elapsedMs:o()}),s.onresult=e=>{let t=[];for(let n=0;n<e.results.length;n++)t.push(e.results[n][0]?.transcript??``);l=t.join(` `).trim(),c.debug(`builtinOnce: onresult`,{elapsedMs:o(),resultCount:e.results.length,transcriptLength:l.length})},s.onerror=e=>{if(e.error===`no-speech`||e.error===`aborted`){c.debug(`builtinOnce: onerror (non-fatal — ends with empty transcript)`,{elapsedMs:o(),code:e.error});return}u=!0,clearTimeout(d),c.error(`builtinOnce: onerror (fatal)`,{elapsedMs:o(),code:e.error}),i(new f(e.error))},s.onend=()=>{clearTimeout(d),u?c.debug(`builtinOnce: onend after fatal error (already rejected)`,{elapsedMs:o()}):(c.debug(`builtinOnce: onend — resolving`,{elapsedMs:o(),transcriptLength:l.length,empty:l.length===0}),r(l))},c.debug(`builtinOnce: calling recognizer.start()`,{elapsedMs:o()}),s.start()}):Promise.reject(Error(`speech recognition unavailable in this environment`))}async function g(e){let t={audio:e?{deviceId:{exact:e}}:!0},n=u();if(n){c.debug(`acquireMicrophoneStream: requesting microphone via permission surface`,{hasDeviceId:!!e});let r=await n.prompt({kinds:[`microphone`],description:`The hear command needs your microphone to transcribe speech.`,requestOptions:{microphone:{constraints:t}},skipIfGranted:!0});if(r.status!==`granted`){c.error(`acquireMicrophoneStream: microphone permission not granted`,{status:r.status,reason:r.reason});let e=r.message?`: ${r.message}`:``;throw Error(`microphone permission ${r.reason??r.status}${e}`)}let i=r.grants.find(e=>e.kind===`microphone`);if(!i)throw c.error(`acquireMicrophoneStream: permission granted without a microphone stream`),Error(`microphone permission granted without a stream`);return c.debug(`acquireMicrophoneStream: microphone stream acquired via surface`),i.stream}if(!navigator.mediaDevices?.getUserMedia)throw c.error(`acquireMicrophoneStream: getUserMedia unavailable in this realm`),Error(`microphone capture unavailable in this realm`);c.debug(`acquireMicrophoneStream: no permission surface; calling getUserMedia directly`);try{let e=await navigator.mediaDevices.getUserMedia(t);return c.debug(`acquireMicrophoneStream: getUserMedia succeeded (direct)`),e}catch(e){throw c.error(`acquireMicrophoneStream: getUserMedia failed (direct)`,e),e}}async function _(e){let t=await g(e),n=new MediaRecorder(t),r=[];n.ondataavailable=e=>{e.data.size>0&&r.push(e.data)},n.start(500);let i=()=>{for(let e of t.getTracks())e.stop()};return{stop:()=>new Promise(e=>{n.onstop=()=>{i(),e(r.length?new Blob(r,{type:n.mimeType||`audio/webm`}):null)};try{n.stop()}catch{i(),e(null)}}),cancel:()=>{try{n.stop()}catch{}i()}}}async function v(e){if(!u())return c.debug(`primeBuiltinPermission: no permission surface; recognizer drives its own prompt`),null;c.debug(`primeBuiltinPermission: priming microphone grant via permission surface`,{hasDeviceId:!!e});let t=await g(e);return c.debug(`primeBuiltinPermission: microphone primed; holding stream open for recognizer`),t}function y(e){if(e){for(let t of e.getTracks())t.stop();c.debug(`primeBuiltinPermission: released primed microphone stream`)}}async function b(e,t){let n=await _(e.deviceId),i=``;try{i=await h(e.lang,t)}catch(e){c.warn(`builtin endpointing failed; transcribing captured audio anyway`,e)}let a=await n.stop();if(!a)return{transcript:i,engine:`builtin`};try{let t=await r(),n=await o(await a.arrayBuffer()),i=await t.transcribe(n,{language:s(e.lang)});if(i)return{transcript:i,engine:`enhanced`}}catch(e){c.warn(`whisper transcription failed; falling back to builtin text`,e)}return{transcript:i,engine:`builtin`}}async function x(e={}){let t=e.timeoutMs??3e4,r=e.engine??`auto`,i=n()===`ready`;if(r===`enhanced`&&!i)throw c.error(`hearCapture: enhanced engine requested but whisper is not ready`),Error("enhanced engine not ready — run `hear --warmup` (check progress with `hear --status`)");let a=r!==`builtin`&&i;if(c.debug(`hearCapture: engine dispatch`,{requested:r,enhancedReady:i,resolved:a?`enhanced`:`builtin`}),a)return b(e,t);let o=await v(e.deviceId);try{let n=await h(e.lang,t);return c.debug(`hearCapture: builtin recognition produced a transcript`),{transcript:n,engine:`builtin`}}catch(n){if(!m(n))throw c.error(`hearCapture: builtin recognition failed`,n),n;if(i)return c.debug(`hearCapture: builtin unsupported in this browser; falling back to enhanced whisper`),y(o),o=null,b(e,t);throw c.error(`hearCapture: builtin unsupported and whisper not ready`,{code:n.code}),n}finally{y(o)}}async function S(e,t){let n=await r(),i=await o(e);return{transcript:await n.transcribe(i,{language:s(t)}),engine:`enhanced`}}function C(){let e=i();return{state:n(),...e?{loaded:e.loaded,total:e.total,etaSeconds:e.etaSeconds}:{}}}function w(){return r().catch(()=>{}),C()}export{x as hearCapture,C as hearStatus,S as hearTranscribe,w as hearWarmup};
@@ -1 +1 @@
1
- import{t as e}from"./logger-DDBAeTLF.js";import{t}from"./wc-permissions-registry-Blyunq37.js";import{a as n,i as r,n as i,o as a,r as o}from"./whisper-session-CouZGLHz.js";var s=e(`speech:hear`),c={};function l(){return c.getPermissionSurface?c.getPermissionSurface():t()||null}var u=3e4;function d(){if(typeof window>`u`)return null;let e=window;return e.SpeechRecognition??e.webkitSpeechRecognition??null}var f=class extends Error{code;constructor(e){super(p(e)),this.name=`SpeechRecognitionError`,this.code=e}};function p(e){switch(e){case`network`:case`service-not-allowed`:return"builtin speech recognition is unsupported in this browser (no Web Speech cloud backend) — use `hear --engine enhanced`";case`not-allowed`:return`microphone permission denied for builtin speech recognition`;case`audio-capture`:return`no microphone available for builtin speech recognition`;case`no-speech`:return`no speech detected`;case`aborted`:return`speech recognition aborted`;default:return`speech recognition error: ${e}`}}function m(e){return e instanceof f&&(e.code===`network`||e.code===`service-not-allowed`)}function h(e,t){let n=d();return n?new Promise((r,i)=>{let a=Date.now(),o=()=>Date.now()-a,c=new n;c.continuous=!1,c.interimResults=!1,e&&(c.lang=e),s.debug(`builtinOnce: recognizer constructed`,{lang:e??`(browser default)`,timeoutMs:t});let l=``,u=!1,d=setTimeout(()=>{s.debug(`builtinOnce: timeout reached — stopping recognizer`,{elapsedMs:o()});try{c.stop()}catch{}},t);c.onstart=()=>s.debug(`builtinOnce: onstart (recognition service active)`,{elapsedMs:o()}),c.onaudiostart=()=>s.debug(`builtinOnce: onaudiostart (capturing audio)`,{elapsedMs:o()}),c.onspeechstart=()=>s.debug(`builtinOnce: onspeechstart (speech detected)`,{elapsedMs:o()}),c.onspeechend=()=>s.debug(`builtinOnce: onspeechend (speech ended)`,{elapsedMs:o()}),c.onnomatch=()=>s.debug(`builtinOnce: onnomatch (no recognizable speech)`,{elapsedMs:o()}),c.onresult=e=>{let t=[];for(let n=0;n<e.results.length;n++)t.push(e.results[n][0]?.transcript??``);l=t.join(` `).trim(),s.debug(`builtinOnce: onresult`,{elapsedMs:o(),resultCount:e.results.length,transcriptLength:l.length})},c.onerror=e=>{if(e.error===`no-speech`||e.error===`aborted`){s.debug(`builtinOnce: onerror (non-fatal — ends with empty transcript)`,{elapsedMs:o(),code:e.error});return}u=!0,clearTimeout(d),s.error(`builtinOnce: onerror (fatal)`,{elapsedMs:o(),code:e.error}),i(new f(e.error))},c.onend=()=>{clearTimeout(d),u?s.debug(`builtinOnce: onend after fatal error (already rejected)`,{elapsedMs:o()}):(s.debug(`builtinOnce: onend — resolving`,{elapsedMs:o(),transcriptLength:l.length,empty:l.length===0}),r(l))},s.debug(`builtinOnce: calling recognizer.start()`,{elapsedMs:o()}),c.start()}):Promise.reject(Error(`speech recognition unavailable in this environment`))}async function g(e){let t={audio:e?{deviceId:{exact:e}}:!0},n=l();if(n){s.debug(`acquireMicrophoneStream: requesting microphone via permission surface`,{hasDeviceId:!!e});let r=await n.prompt({kinds:[`microphone`],description:`The hear command needs your microphone to transcribe speech.`,requestOptions:{microphone:{constraints:t}},skipIfGranted:!0});if(r.status!==`granted`){s.error(`acquireMicrophoneStream: microphone permission not granted`,{status:r.status,reason:r.reason});let e=r.message?`: ${r.message}`:``;throw Error(`microphone permission ${r.reason??r.status}${e}`)}let i=r.grants.find(e=>e.kind===`microphone`);if(!i)throw s.error(`acquireMicrophoneStream: permission granted without a microphone stream`),Error(`microphone permission granted without a stream`);return s.debug(`acquireMicrophoneStream: microphone stream acquired via surface`),i.stream}if(!navigator.mediaDevices?.getUserMedia)throw s.error(`acquireMicrophoneStream: getUserMedia unavailable in this realm`),Error(`microphone capture unavailable in this realm`);s.debug(`acquireMicrophoneStream: no permission surface; calling getUserMedia directly`);try{let e=await navigator.mediaDevices.getUserMedia(t);return s.debug(`acquireMicrophoneStream: getUserMedia succeeded (direct)`),e}catch(e){throw s.error(`acquireMicrophoneStream: getUserMedia failed (direct)`,e),e}}async function _(e){let t=await g(e),n=new MediaRecorder(t),r=[];n.ondataavailable=e=>{e.data.size>0&&r.push(e.data)},n.start(500);let i=()=>{for(let e of t.getTracks())e.stop()};return{stop:()=>new Promise(e=>{n.onstop=()=>{i(),e(r.length?new Blob(r,{type:n.mimeType||`audio/webm`}):null)};try{n.stop()}catch{i(),e(null)}}),cancel:()=>{try{n.stop()}catch{}i()}}}async function v(e){if(!l())return s.debug(`primeBuiltinPermission: no permission surface; recognizer drives its own prompt`),null;s.debug(`primeBuiltinPermission: priming microphone grant via permission surface`,{hasDeviceId:!!e});let t=await g(e);return s.debug(`primeBuiltinPermission: microphone primed; holding stream open for recognizer`),t}function y(e){if(e){for(let t of e.getTracks())t.stop();s.debug(`primeBuiltinPermission: released primed microphone stream`)}}async function b(e,t){let n=await _(e.deviceId),a=``;try{a=await h(e.lang,t)}catch(e){s.warn(`builtin endpointing failed; transcribing captured audio anyway`,e)}let c=await n.stop();if(!c)return{transcript:a,engine:`builtin`};try{let t=await r(),n=await o(await c.arrayBuffer()),a=await t.transcribe(n,{language:i(e.lang)});if(a)return{transcript:a,engine:`enhanced`}}catch(e){s.warn(`whisper transcription failed; falling back to builtin text`,e)}return{transcript:a,engine:`builtin`}}async function x(e={}){let t=e.timeoutMs??u,n=e.engine??`auto`,r=a()===`ready`;if(n===`enhanced`&&!r)throw s.error(`hearCapture: enhanced engine requested but whisper is not ready`),Error("enhanced engine not ready — run `hear --warmup` (check progress with `hear --status`)");let i=n!==`builtin`&&r;if(s.debug(`hearCapture: engine dispatch`,{requested:n,enhancedReady:r,resolved:i?`enhanced`:`builtin`}),i)return b(e,t);let o=await v(e.deviceId);try{let n=await h(e.lang,t);return s.debug(`hearCapture: builtin recognition produced a transcript`),{transcript:n,engine:`builtin`}}catch(n){if(!m(n))throw s.error(`hearCapture: builtin recognition failed`,n),n;if(r)return s.debug(`hearCapture: builtin unsupported in this browser; falling back to enhanced whisper`),y(o),o=null,b(e,t);throw s.error(`hearCapture: builtin unsupported and whisper not ready`,{code:n.code}),n}finally{y(o)}}async function S(e,t){let n=await r(),a=await o(e);return{transcript:await n.transcribe(a,{language:i(t)}),engine:`enhanced`}}function C(){let e=n();return{state:a(),...e?{loaded:e.loaded,total:e.total,etaSeconds:e.etaSeconds}:{}}}function w(){return r().catch(()=>{}),C()}export{x as hearCapture,C as hearStatus,S as hearTranscribe,w as hearWarmup};
1
+ import{t as e}from"./logger-DDBAeTLF.js";import{t}from"./wc-permissions-registry-Blyunq37.js";import{a as n,i as r,n as i,o as a,r as o}from"./whisper-session-Duou3zwG.js";var s=e(`speech:hear`),c={};function l(){return c.getPermissionSurface?c.getPermissionSurface():t()||null}var u=3e4;function d(){if(typeof window>`u`)return null;let e=window;return e.SpeechRecognition??e.webkitSpeechRecognition??null}var f=class extends Error{code;constructor(e){super(p(e)),this.name=`SpeechRecognitionError`,this.code=e}};function p(e){switch(e){case`network`:case`service-not-allowed`:return"builtin speech recognition is unsupported in this browser (no Web Speech cloud backend) — use `hear --engine enhanced`";case`not-allowed`:return`microphone permission denied for builtin speech recognition`;case`audio-capture`:return`no microphone available for builtin speech recognition`;case`no-speech`:return`no speech detected`;case`aborted`:return`speech recognition aborted`;default:return`speech recognition error: ${e}`}}function m(e){return e instanceof f&&(e.code===`network`||e.code===`service-not-allowed`)}function h(e,t){let n=d();return n?new Promise((r,i)=>{let a=Date.now(),o=()=>Date.now()-a,c=new n;c.continuous=!1,c.interimResults=!1,e&&(c.lang=e),s.debug(`builtinOnce: recognizer constructed`,{lang:e??`(browser default)`,timeoutMs:t});let l=``,u=!1,d=setTimeout(()=>{s.debug(`builtinOnce: timeout reached — stopping recognizer`,{elapsedMs:o()});try{c.stop()}catch{}},t);c.onstart=()=>s.debug(`builtinOnce: onstart (recognition service active)`,{elapsedMs:o()}),c.onaudiostart=()=>s.debug(`builtinOnce: onaudiostart (capturing audio)`,{elapsedMs:o()}),c.onspeechstart=()=>s.debug(`builtinOnce: onspeechstart (speech detected)`,{elapsedMs:o()}),c.onspeechend=()=>s.debug(`builtinOnce: onspeechend (speech ended)`,{elapsedMs:o()}),c.onnomatch=()=>s.debug(`builtinOnce: onnomatch (no recognizable speech)`,{elapsedMs:o()}),c.onresult=e=>{let t=[];for(let n=0;n<e.results.length;n++)t.push(e.results[n][0]?.transcript??``);l=t.join(` `).trim(),s.debug(`builtinOnce: onresult`,{elapsedMs:o(),resultCount:e.results.length,transcriptLength:l.length})},c.onerror=e=>{if(e.error===`no-speech`||e.error===`aborted`){s.debug(`builtinOnce: onerror (non-fatal — ends with empty transcript)`,{elapsedMs:o(),code:e.error});return}u=!0,clearTimeout(d),s.error(`builtinOnce: onerror (fatal)`,{elapsedMs:o(),code:e.error}),i(new f(e.error))},c.onend=()=>{clearTimeout(d),u?s.debug(`builtinOnce: onend after fatal error (already rejected)`,{elapsedMs:o()}):(s.debug(`builtinOnce: onend — resolving`,{elapsedMs:o(),transcriptLength:l.length,empty:l.length===0}),r(l))},s.debug(`builtinOnce: calling recognizer.start()`,{elapsedMs:o()}),c.start()}):Promise.reject(Error(`speech recognition unavailable in this environment`))}async function g(e){let t={audio:e?{deviceId:{exact:e}}:!0},n=l();if(n){s.debug(`acquireMicrophoneStream: requesting microphone via permission surface`,{hasDeviceId:!!e});let r=await n.prompt({kinds:[`microphone`],description:`The hear command needs your microphone to transcribe speech.`,requestOptions:{microphone:{constraints:t}},skipIfGranted:!0});if(r.status!==`granted`){s.error(`acquireMicrophoneStream: microphone permission not granted`,{status:r.status,reason:r.reason});let e=r.message?`: ${r.message}`:``;throw Error(`microphone permission ${r.reason??r.status}${e}`)}let i=r.grants.find(e=>e.kind===`microphone`);if(!i)throw s.error(`acquireMicrophoneStream: permission granted without a microphone stream`),Error(`microphone permission granted without a stream`);return s.debug(`acquireMicrophoneStream: microphone stream acquired via surface`),i.stream}if(!navigator.mediaDevices?.getUserMedia)throw s.error(`acquireMicrophoneStream: getUserMedia unavailable in this realm`),Error(`microphone capture unavailable in this realm`);s.debug(`acquireMicrophoneStream: no permission surface; calling getUserMedia directly`);try{let e=await navigator.mediaDevices.getUserMedia(t);return s.debug(`acquireMicrophoneStream: getUserMedia succeeded (direct)`),e}catch(e){throw s.error(`acquireMicrophoneStream: getUserMedia failed (direct)`,e),e}}async function _(e){let t=await g(e),n=new MediaRecorder(t),r=[];n.ondataavailable=e=>{e.data.size>0&&r.push(e.data)},n.start(500);let i=()=>{for(let e of t.getTracks())e.stop()};return{stop:()=>new Promise(e=>{n.onstop=()=>{i(),e(r.length?new Blob(r,{type:n.mimeType||`audio/webm`}):null)};try{n.stop()}catch{i(),e(null)}}),cancel:()=>{try{n.stop()}catch{}i()}}}async function v(e){if(!l())return s.debug(`primeBuiltinPermission: no permission surface; recognizer drives its own prompt`),null;s.debug(`primeBuiltinPermission: priming microphone grant via permission surface`,{hasDeviceId:!!e});let t=await g(e);return s.debug(`primeBuiltinPermission: microphone primed; holding stream open for recognizer`),t}function y(e){if(e){for(let t of e.getTracks())t.stop();s.debug(`primeBuiltinPermission: released primed microphone stream`)}}async function b(e,t){let n=await _(e.deviceId),a=``;try{a=await h(e.lang,t)}catch(e){s.warn(`builtin endpointing failed; transcribing captured audio anyway`,e)}let c=await n.stop();if(!c)return{transcript:a,engine:`builtin`};try{let t=await r(),n=await o(await c.arrayBuffer()),a=await t.transcribe(n,{language:i(e.lang)});if(a)return{transcript:a,engine:`enhanced`}}catch(e){s.warn(`whisper transcription failed; falling back to builtin text`,e)}return{transcript:a,engine:`builtin`}}async function x(e={}){let t=e.timeoutMs??u,n=e.engine??`auto`,r=a()===`ready`;if(n===`enhanced`&&!r)throw s.error(`hearCapture: enhanced engine requested but whisper is not ready`),Error("enhanced engine not ready — run `hear --warmup` (check progress with `hear --status`)");let i=n!==`builtin`&&r;if(s.debug(`hearCapture: engine dispatch`,{requested:n,enhancedReady:r,resolved:i?`enhanced`:`builtin`}),i)return b(e,t);let o=await v(e.deviceId);try{let n=await h(e.lang,t);return s.debug(`hearCapture: builtin recognition produced a transcript`),{transcript:n,engine:`builtin`}}catch(n){if(!m(n))throw s.error(`hearCapture: builtin recognition failed`,n),n;if(r)return s.debug(`hearCapture: builtin unsupported in this browser; falling back to enhanced whisper`),y(o),o=null,b(e,t);throw s.error(`hearCapture: builtin unsupported and whisper not ready`,{code:n.code}),n}finally{y(o)}}async function S(e,t){let n=await r(),a=await o(e);return{transcript:await n.transcribe(a,{language:i(t)}),engine:`enhanced`}}function C(){let e=n();return{state:a(),...e?{loaded:e.loaded,total:e.total,etaSeconds:e.etaSeconds}:{}}}function w(){return r().catch(()=>{}),C()}export{x as hearCapture,C as hearStatus,S as hearTranscribe,w as hearWarmup};