hypervibes 0.0.0-stage → 0.4.0

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 (362) hide show
  1. package/.build/client/assets/_authenticated-C87LKvH0.js +1 -0
  2. package/.build/client/assets/_authenticated.account-D-nTh_fC.js +1 -0
  3. package/.build/client/assets/_authenticated.agents-HwcveLyB.js +1 -0
  4. package/.build/client/assets/_authenticated.agents._agentId-DuE8Lv62.js +1 -0
  5. package/.build/client/assets/_authenticated.agents._agentId.chart-Bb_XkvQx.js +4 -0
  6. package/.build/client/assets/_authenticated.agents._agentId.chat-ClMMKw_N.js +1 -0
  7. package/.build/client/assets/_authenticated.agents._agentId.index-DNJwBwn9.js +1 -0
  8. package/.build/client/assets/_authenticated.agents._agentId.indicators-BmVjLtRI.js +1 -0
  9. package/.build/client/assets/_authenticated.agents._agentId.indicators_._indicatorId-CMqaaFQf.js +2 -0
  10. package/.build/client/assets/_authenticated.agents._agentId.indicators_._indicatorId-DtgkoNV5.js +6 -0
  11. package/.build/client/assets/_authenticated.agents._agentId.memories-O-4f6a4G.js +1 -0
  12. package/.build/client/assets/_authenticated.agents._agentId.memories_._memoryRef-BUPtUcj3.js +1 -0
  13. package/.build/client/assets/_authenticated.agents._agentId.notifications-2lyhXCSk.js +1 -0
  14. package/.build/client/assets/_authenticated.agents._agentId.notifications_._notificationId-Da3ZVT4v.js +1 -0
  15. package/.build/client/assets/_authenticated.agents._agentId.settings-C5cWHoYw.js +1 -0
  16. package/.build/client/assets/_authenticated.agents._agentId.sub-agents-HwcveLyB.js +1 -0
  17. package/.build/client/assets/_authenticated.agents._agentId.sub-agents._subagentId-CZ4MeRy4.js +1 -0
  18. package/.build/client/assets/_authenticated.agents._agentId.sub-agents._subagentId_.runs._runId-dVbo5kMU.js +3 -0
  19. package/.build/client/assets/_authenticated.agents._agentId.sub-agents.index-DeWTOYJD.js +1 -0
  20. package/.build/client/assets/_authenticated.agents._agentId.sub-agents.new-D02TflCE.js +37 -0
  21. package/.build/client/assets/_authenticated.agents._agentId.transactions-D3a8Glgj.js +1 -0
  22. package/.build/client/assets/_authenticated.agents.index-CEqeDEgP.js +1 -0
  23. package/.build/client/assets/_authenticated.agents.new-DLRWK5Uk.js +1 -0
  24. package/.build/client/assets/_authenticated.providers-D0iPLXra.js +1 -0
  25. package/.build/client/assets/agent-chat-page-C5eYFgxw.js +1 -0
  26. package/.build/client/assets/agent-enablement-control-CUzOp9ce.js +1 -0
  27. package/.build/client/assets/agent-events-DC8eDZf3.js +1 -0
  28. package/.build/client/assets/agent-input-aolvZ47U.js +1 -0
  29. package/.build/client/assets/agent-notifications-page-B0mr-Zz8.js +1 -0
  30. package/.build/client/assets/agent-queries-CNMBImun.js +1 -0
  31. package/.build/client/assets/app-DjmsvbUC.css +2 -0
  32. package/.build/client/assets/artifact-content-COO4VTSZ.js +1 -0
  33. package/.build/client/assets/auth-client-K13li9H1.js +3 -0
  34. package/.build/client/assets/call-DxlGie4_.js +31 -0
  35. package/.build/client/assets/ccip-BgPlVPYP.js +1 -0
  36. package/.build/client/assets/chart-contracts-Cr5SFCbE.js +1 -0
  37. package/.build/client/assets/chart-queries-Bpvrgd0-.js +1 -0
  38. package/.build/client/assets/chat-bubble-CAJkT-vL.js +1 -0
  39. package/.build/client/assets/config-dialog-C9x9gKW9.js +1 -0
  40. package/.build/client/assets/contracts-HhAL7Tt7.js +1 -0
  41. package/.build/client/assets/createServerFn-DfZIp2Fu.js +3 -0
  42. package/.build/client/assets/custom-BeqXuIIS.js +5 -0
  43. package/.build/client/assets/decimal-B0DEG-1V.js +1 -0
  44. package/.build/client/assets/esm-BTb2nBdW.js +1 -0
  45. package/.build/client/assets/identicon-Lb9pS4O1.js +1 -0
  46. package/.build/client/assets/index-B4hvjMmI.js +10 -0
  47. package/.build/client/assets/indicator-input-fields-CtmrfVfS.js +1 -0
  48. package/.build/client/assets/indicator-queries-CzZ6u1Mh.js +1 -0
  49. package/.build/client/assets/indicator-renderer-CfccsIt2.js +1 -0
  50. package/.build/client/assets/instrument-label-BZYlWXR5.js +1 -0
  51. package/.build/client/assets/instrument-picker-DLPpryOm.js +1 -0
  52. package/.build/client/assets/journal-decimal-DBvd_Ibi.js +1 -0
  53. package/.build/client/assets/jsx-runtime-CIazjfqY.js +1 -0
  54. package/.build/client/assets/lazyRouteComponent-CJgUa7_r.js +1 -0
  55. package/.build/client/assets/lightweight-charts.production-BiBiFZSH.js +1 -0
  56. package/.build/client/assets/login-MNgYxCOY.js +3 -0
  57. package/.build/client/assets/memory-badge-BbN-DJQi.js +1 -0
  58. package/.build/client/assets/memory-contracts-Doi_Q1XJ.js +1 -0
  59. package/.build/client/assets/memory-queries-BttL580R.js +1 -0
  60. package/.build/client/assets/model-picker-YCQNNmyw.js +1 -0
  61. package/.build/client/assets/notification-queries-B12DG3aS.js +1 -0
  62. package/.build/client/assets/preload-helper-Czpn1I53.js +1 -0
  63. package/.build/client/assets/provider-logo-Ddb77aBD.js +1 -0
  64. package/.build/client/assets/provider-queries-DxPwhDOU.js +1 -0
  65. package/.build/client/assets/query-nvK_95Jo.js +1 -0
  66. package/.build/client/assets/random-uuid-DJR3ygJS.js +1 -0
  67. package/.build/client/assets/react-dom-C6bOPxes.js +1 -0
  68. package/.build/client/assets/risk-queries-D_6PHwus.js +1 -0
  69. package/.build/client/assets/run-subagent-dialog-B4yQe9T9.js +1 -0
  70. package/.build/client/assets/secp256k1-BbZnIgDP.js +1 -0
  71. package/.build/client/assets/setup-checklist-CUW-K484.js +1 -0
  72. package/.build/client/assets/sha2-hT-Q4pur.js +1 -0
  73. package/.build/client/assets/subagent-enabled-toggle-Bk5wfScg.js +1 -0
  74. package/.build/client/assets/subagent-input-TQke90I1.js +1 -0
  75. package/.build/client/assets/subagent-mutations-DfsDbmFu.js +1 -0
  76. package/.build/client/assets/subagent-queries-DVv5JCfs.js +1 -0
  77. package/.build/client/assets/subagent-run-history-D55Uh5VK.js +1 -0
  78. package/.build/client/assets/toggle-timestamp-B50FTPmA.js +1 -0
  79. package/.build/client/assets/useBaseQuery-Bxruo_mV.js +1 -0
  80. package/.build/client/assets/useMutation-DrF53EQG.js +1 -0
  81. package/.build/client/assets/useQuery-BMSU16jY.js +1 -0
  82. package/.build/client/assets/useRouter-c0I1aURm.js +1 -0
  83. package/.build/client/assets/useSelector-ERD9RroG.js +2 -0
  84. package/.build/client/assets/useSuspenseQuery-vODFwDb8.js +1 -0
  85. package/.build/client/assets/utils-Bpv4vmSW.js +1 -0
  86. package/.build/client/assets/worker-triggers-DtXyn40O.js +1 -0
  87. package/.build/server/assets/_authenticated-Bch0_2QH.js +264 -0
  88. package/.build/server/assets/_authenticated-DGV5cZYE.js +22 -0
  89. package/.build/server/assets/_authenticated.account-6qu6oQ1y.js +685 -0
  90. package/.build/server/assets/_authenticated.agents-DYDnQxli.js +5 -0
  91. package/.build/server/assets/_authenticated.agents._agentId-4HvB3mhd.js +17 -0
  92. package/.build/server/assets/_authenticated.agents._agentId-Cl608F1T.js +260 -0
  93. package/.build/server/assets/_authenticated.agents._agentId-G2jAHjma.js +15 -0
  94. package/.build/server/assets/_authenticated.agents._agentId.chart-BIA8wy73.js +2644 -0
  95. package/.build/server/assets/_authenticated.agents._agentId.chart-D4aj8Qy9.js +22 -0
  96. package/.build/server/assets/_authenticated.agents._agentId.chat-ClsVle4g.js +13 -0
  97. package/.build/server/assets/_authenticated.agents._agentId.chat-JV3FDsTp.js +18 -0
  98. package/.build/server/assets/_authenticated.agents._agentId.index-Ct4kbu2f.js +1044 -0
  99. package/.build/server/assets/_authenticated.agents._agentId.index-DJgrupvW.js +18 -0
  100. package/.build/server/assets/_authenticated.agents._agentId.indicators-DrKd0aP5.js +184 -0
  101. package/.build/server/assets/_authenticated.agents._agentId.indicators-wiVaY8fW.js +18 -0
  102. package/.build/server/assets/_authenticated.agents._agentId.indicators_._indicatorId-C4Ox2R-a.js +25 -0
  103. package/.build/server/assets/_authenticated.agents._agentId.indicators_._indicatorId-D8Q0hCW0.js +489 -0
  104. package/.build/server/assets/_authenticated.agents._agentId.memories-BUTyVLYy.js +42 -0
  105. package/.build/server/assets/_authenticated.agents._agentId.memories-E8-nSEMT.js +362 -0
  106. package/.build/server/assets/_authenticated.agents._agentId.memories_._memoryRef-C-SC6wzq.js +14 -0
  107. package/.build/server/assets/_authenticated.agents._agentId.memories_._memoryRef-ZCrdrc8C.js +490 -0
  108. package/.build/server/assets/_authenticated.agents._agentId.notifications-DQeQqTzh.js +14 -0
  109. package/.build/server/assets/_authenticated.agents._agentId.notifications-DlFyYyHh.js +16 -0
  110. package/.build/server/assets/_authenticated.agents._agentId.notifications_._notificationId-B0RosY_R.js +15 -0
  111. package/.build/server/assets/_authenticated.agents._agentId.notifications_._notificationId-C1NikQ9e.js +13 -0
  112. package/.build/server/assets/_authenticated.agents._agentId.settings-DDwjT3Ui.js +42 -0
  113. package/.build/server/assets/_authenticated.agents._agentId.settings-PEzEvOfo.js +751 -0
  114. package/.build/server/assets/_authenticated.agents._agentId.sub-agents-z34-J3Tu.js +5 -0
  115. package/.build/server/assets/_authenticated.agents._agentId.sub-agents._subagentId-D-6TOi1U.js +1371 -0
  116. package/.build/server/assets/_authenticated.agents._agentId.sub-agents._subagentId-DipzVdnr.js +13 -0
  117. package/.build/server/assets/_authenticated.agents._agentId.sub-agents._subagentId_.runs._runId-BZR3VLV7.js +610 -0
  118. package/.build/server/assets/_authenticated.agents._agentId.sub-agents._subagentId_.runs._runId-DsYJKfGm.js +12 -0
  119. package/.build/server/assets/_authenticated.agents._agentId.sub-agents.index-BF8Cuzcr.js +231 -0
  120. package/.build/server/assets/_authenticated.agents._agentId.sub-agents.index-D2x0qCnt.js +12 -0
  121. package/.build/server/assets/_authenticated.agents._agentId.sub-agents.new-CYm_vuDD.js +13 -0
  122. package/.build/server/assets/_authenticated.agents._agentId.sub-agents.new-CiVShIka.js +497 -0
  123. package/.build/server/assets/_authenticated.agents._agentId.transactions-BC_XfGqw.js +95 -0
  124. package/.build/server/assets/_authenticated.agents._agentId.transactions-WtBW3xmh.js +495 -0
  125. package/.build/server/assets/_authenticated.agents.index-C8zmu8T8.js +78 -0
  126. package/.build/server/assets/_authenticated.agents.new-Bt-tBR47.js +302 -0
  127. package/.build/server/assets/_authenticated.providers-C0pb-ujV.js +672 -0
  128. package/.build/server/assets/_tanstack-start-manifest_v-Baw5u9sk.js +354 -0
  129. package/.build/server/assets/account-XvMwzRXh.js +66 -0
  130. package/.build/server/assets/account-queries-AJJVkLAV.js +32 -0
  131. package/.build/server/assets/agent-chat-page-DChiz8KQ.js +686 -0
  132. package/.build/server/assets/agent-enablement-control-C90f0uIb.js +143 -0
  133. package/.build/server/assets/agent-events-DK9Yz5__.js +217 -0
  134. package/.build/server/assets/agent-notifications-page-BdyKAyds.js +276 -0
  135. package/.build/server/assets/agent-queries-Cmx8RiUx.js +51 -0
  136. package/.build/server/assets/agents-CZq-0mna.js +106 -0
  137. package/.build/server/assets/agents-CfjmtW7A.js +278 -0
  138. package/.build/server/assets/artifact-content-B6uHmPz7.js +35 -0
  139. package/.build/server/assets/artifacts-HtLwHs8q.js +42 -0
  140. package/.build/server/assets/auth-DTikZAVz.js +12 -0
  141. package/.build/server/assets/auth-client-Vb3O0v7P.js +1897 -0
  142. package/.build/server/assets/auth-user-DkLo8ojH.js +108 -0
  143. package/.build/server/assets/chart-queries-Bc3AfsEb.js +109 -0
  144. package/.build/server/assets/charts-C4dKuwTJ.js +130 -0
  145. package/.build/server/assets/chat-bubble-ik3itVbx.js +109 -0
  146. package/.build/server/assets/config-dialog-9gSAjwwT.js +55 -0
  147. package/.build/server/assets/contracts-CG-nZuYJ.js +155 -0
  148. package/.build/server/assets/createServerRpc-DNqhdU4z.js +12 -0
  149. package/.build/server/assets/decimal-BthtZ77w.js +97 -0
  150. package/.build/server/assets/empty-plugin-adapters-MOWBbCMw.js +5 -0
  151. package/.build/server/assets/errors-DaZqUftX.js +151 -0
  152. package/.build/server/assets/gateway-CHkruO_a.js +193 -0
  153. package/.build/server/assets/identicon-CyawcVnx.js +41 -0
  154. package/.build/server/assets/indicator-input-fields-bzuhIh6t.js +75 -0
  155. package/.build/server/assets/indicator-queries-4dY1-LXx.js +171 -0
  156. package/.build/server/assets/indicator-renderer-B2muPS-8.js +395 -0
  157. package/.build/server/assets/indicators-ENxAHN42.js +192 -0
  158. package/.build/server/assets/insight-contracts-B5rmUDfO.js +14 -0
  159. package/.build/server/assets/instrument-label-C-tTGGsD.js +40 -0
  160. package/.build/server/assets/instrument-picker-CRroLwVq.js +381 -0
  161. package/.build/server/assets/journal-9aE-um9f.js +107 -0
  162. package/.build/server/assets/journal-decimal-Bh9EL029.js +66 -0
  163. package/.build/server/assets/login-BsEFUvTX.js +125 -0
  164. package/.build/server/assets/memories-2WF2fW1G.js +100 -0
  165. package/.build/server/assets/memory-badge-DVYLTtRR.js +53 -0
  166. package/.build/server/assets/memory-contracts-DQGN2IKV.js +22 -0
  167. package/.build/server/assets/memory-queries--4RbPRrk.js +92 -0
  168. package/.build/server/assets/model-picker-CA1uYb--.js +225 -0
  169. package/.build/server/assets/notification-queries-0CJUkBt9.js +52 -0
  170. package/.build/server/assets/notifications-Cn7BiCyw.js +72 -0
  171. package/.build/server/assets/provider-logo-BRdbOr9I.js +32 -0
  172. package/.build/server/assets/provider-queries-BaZWLw8J.js +78 -0
  173. package/.build/server/assets/providers-CyoN_jgW.js +89 -0
  174. package/.build/server/assets/risk-Bqrb6hKQ.js +34 -0
  175. package/.build/server/assets/risk-queries-JQpByHT2.js +18 -0
  176. package/.build/server/assets/router-Hkr5TH_I.js +419 -0
  177. package/.build/server/assets/run-subagent-dialog-C7iUOZa-.js +59 -0
  178. package/.build/server/assets/setup-DqMlwgNr.js +30 -0
  179. package/.build/server/assets/setup-checklist-BICTmBo2.js +60 -0
  180. package/.build/server/assets/start-C-GPoWRt.js +4 -0
  181. package/.build/server/assets/subagent-enabled-toggle-Djte00oo.js +22 -0
  182. package/.build/server/assets/subagent-input-BHQKs2cW.js +57 -0
  183. package/.build/server/assets/subagent-mutations-dUo3B_SG.js +32 -0
  184. package/.build/server/assets/subagent-queries-sAwBjFxC.js +146 -0
  185. package/.build/server/assets/subagent-run-history-C_xmucO-.js +186 -0
  186. package/.build/server/assets/subagents-CIoilC66.js +180 -0
  187. package/.build/server/assets/toggle-timestamp-CToUVn67.js +28 -0
  188. package/.build/server/assets/trading-contracts-zWq1Hxnb.js +26 -0
  189. package/.build/server/assets/validation-BX-krL0i.js +33 -0
  190. package/.build/server/assets/worker-triggers-CJF5HWzR.js +51 -0
  191. package/.build/server/server.js +7501 -0
  192. package/LICENSE +661 -0
  193. package/README.md +145 -2
  194. package/bin/hypervibes.js +24 -0
  195. package/dist/agents/agent-enablement.js +10 -0
  196. package/dist/agents/agent-input.js +38 -0
  197. package/dist/agents/agent-service.js +1004 -0
  198. package/dist/agents/cancel-task-scope.js +52 -0
  199. package/dist/agents/candle-intervals.js +1 -0
  200. package/dist/agents/default-subagents.js +36 -0
  201. package/dist/agents/execution-context-contracts.js +1 -0
  202. package/dist/agents/execution-context.js +206 -0
  203. package/dist/agents/execution-warnings.js +33 -0
  204. package/dist/agents/orchestrator-insights.js +14 -0
  205. package/dist/agents/run-inspection.js +99 -0
  206. package/dist/agents/subagent-dashboard.js +1 -0
  207. package/dist/agents/subagent-extension.js +156 -0
  208. package/dist/agents/subagent-history.js +5 -0
  209. package/dist/agents/subagent-input.js +73 -0
  210. package/dist/agents/subagent-service.js +1177 -0
  211. package/dist/agents/subagent-templates.js +20 -0
  212. package/dist/agents/template-manifest.js +34 -0
  213. package/dist/agents/templates/basic-analysis.json +40 -0
  214. package/dist/agents/templates/basic-review.json +48 -0
  215. package/dist/agents/templates/basic-trading.json +45 -0
  216. package/dist/agents/templates/indicator-developer.json +16 -0
  217. package/dist/agents/time-guidance.js +29 -0
  218. package/dist/agents/worker-events.js +18 -0
  219. package/dist/agents/worker-inbox.js +28 -0
  220. package/dist/agents/worker-triggers.js +23 -0
  221. package/dist/auth-options.js +98 -0
  222. package/dist/auth-user.js +15 -0
  223. package/dist/auth.js +28 -0
  224. package/dist/cache/svg-logo-cache.js +155 -0
  225. package/dist/canonical.js +13 -0
  226. package/dist/charts/chart-service.js +236 -0
  227. package/dist/charts/contracts.js +118 -0
  228. package/dist/charts/durable-extension.js +27 -0
  229. package/dist/charts/trading-contracts.js +14 -0
  230. package/dist/config.js +85 -0
  231. package/dist/db/agent-schema.js +26 -0
  232. package/dist/db/auth-schema.js +122 -0
  233. package/dist/db/database.js +31 -0
  234. package/dist/db/exchange-schema.js +23 -0
  235. package/dist/db/gateway-schema.js +24 -0
  236. package/dist/db/indicator-schema.js +19 -0
  237. package/dist/db/migrations/20261015221717_auth/migration.sql +62 -0
  238. package/dist/db/migrations/20261015231224_agents/migration.sql +35 -0
  239. package/dist/db/migrations/20261016040641_provider_connections/migration.sql +19 -0
  240. package/dist/db/migrations/20261016061831_trade_journal/migration.sql +48 -0
  241. package/dist/db/migrations/20261016080320_order_execution/migration.sql +62 -0
  242. package/dist/db/migrations/20261016181110_subagents/migration.sql +51 -0
  243. package/dist/db/migrations/20261017222959_research_artifacts/migration.sql +37 -0
  244. package/dist/db/migrations/20261018061531_memories_and_insights/migration.sql +162 -0
  245. package/dist/db/migrations/20261020091156_worker_event_inbox/migration.sql +54 -0
  246. package/dist/db/migrations/20261021051229_chart_workspace/migration.sql +33 -0
  247. package/dist/db/migrations/20261021222116_gateways/migration.sql +15 -0
  248. package/dist/db/migrations/20261022015813_pine_indicators/migration.sql +43 -0
  249. package/dist/db/migrations/20261022101559_notifications/migration.sql +51 -0
  250. package/dist/db/migrations.js +12 -0
  251. package/dist/db/order-provenance-schema.js +17 -0
  252. package/dist/db/order-schema.js +32 -0
  253. package/dist/db/profile-lock.js +12 -0
  254. package/dist/db/provider-schema.js +16 -0
  255. package/dist/db/shared-database.js +128 -0
  256. package/dist/db/subagent-schema.js +79 -0
  257. package/dist/gateway/bridge-service.js +223 -0
  258. package/dist/gateway/gateway-store.js +77 -0
  259. package/dist/gateway/handlers.js +122 -0
  260. package/dist/gateway/telegram/connector.js +115 -0
  261. package/dist/gateway/telegram/transport.js +96 -0
  262. package/dist/hyperliquid/account-info.js +117 -0
  263. package/dist/hyperliquid/account-status.js +64 -0
  264. package/dist/hyperliquid/agent-dashboard.js +56 -0
  265. package/dist/hyperliquid/chart-contracts.js +9 -0
  266. package/dist/hyperliquid/constants.js +25 -0
  267. package/dist/hyperliquid/crypto.js +29 -0
  268. package/dist/hyperliquid/currency-logo.js +7 -0
  269. package/dist/hyperliquid/decimal.js +98 -0
  270. package/dist/hyperliquid/durable-extension.js +39 -0
  271. package/dist/hyperliquid/errors.js +8 -0
  272. package/dist/hyperliquid/exchange.js +118 -0
  273. package/dist/hyperliquid/journal-decimal.js +48 -0
  274. package/dist/hyperliquid/journal-model.js +167 -0
  275. package/dist/hyperliquid/journal-service.js +648 -0
  276. package/dist/hyperliquid/live-dashboard.js +245 -0
  277. package/dist/hyperliquid/logo-cache.js +27 -0
  278. package/dist/hyperliquid/market-charts.js +242 -0
  279. package/dist/hyperliquid/market-snapshot.js +45 -0
  280. package/dist/hyperliquid/orders/order-contracts.js +42 -0
  281. package/dist/hyperliquid/orders/order-math.js +89 -0
  282. package/dist/hyperliquid/orders/order-outcomes.js +74 -0
  283. package/dist/hyperliquid/orders/order-prepare.js +109 -0
  284. package/dist/hyperliquid/orders/order-service.js +432 -0
  285. package/dist/hyperliquid/orders/order-store.js +134 -0
  286. package/dist/hyperliquid/orders/order-tools.js +40 -0
  287. package/dist/hyperliquid/orders/protection.js +35 -0
  288. package/dist/hyperliquid/orders/risk-settings.js +44 -0
  289. package/dist/hyperliquid/orders/trade-admission.js +117 -0
  290. package/dist/hyperliquid/orders/trade-planning.js +60 -0
  291. package/dist/hyperliquid/service.js +529 -0
  292. package/dist/hyperliquid/shared-feeds.js +40 -0
  293. package/dist/hyperliquid/signing.js +89 -0
  294. package/dist/indicators/builtin-catalog.js +59 -0
  295. package/dist/indicators/builtins/adx.pine +22 -0
  296. package/dist/indicators/builtins/atr.pine +11 -0
  297. package/dist/indicators/builtins/bollinger.pine +10 -0
  298. package/dist/indicators/builtins/ema.pine +5 -0
  299. package/dist/indicators/builtins/macd.pine +18 -0
  300. package/dist/indicators/builtins/rsi.pine +18 -0
  301. package/dist/indicators/builtins/sma.pine +5 -0
  302. package/dist/indicators/candle-window.js +36 -0
  303. package/dist/indicators/chart-contracts.js +64 -0
  304. package/dist/indicators/contracts.js +14 -0
  305. package/dist/indicators/durable-extension.js +32 -0
  306. package/dist/indicators/indicator-service.js +300 -0
  307. package/dist/indicators/indicator-store.js +137 -0
  308. package/dist/indicators/normalize.js +149 -0
  309. package/dist/indicators/result-schema.js +79 -0
  310. package/dist/indicators/runtime-wrapper.js +52 -0
  311. package/dist/indicators/runtime.js +201 -0
  312. package/dist/indicators/validation.js +124 -0
  313. package/dist/indicators/worker-queue.js +48 -0
  314. package/dist/initialize-config.js +160 -0
  315. package/dist/main.js +59 -0
  316. package/dist/memory/decision-audit.js +47 -0
  317. package/dist/memory/durable-extension.js +40 -0
  318. package/dist/memory/execution-audit.js +83 -0
  319. package/dist/memory/insight-contracts.js +33 -0
  320. package/dist/memory/insight-service.js +117 -0
  321. package/dist/memory/memory-contracts.js +113 -0
  322. package/dist/memory/memory-service.js +179 -0
  323. package/dist/memory/operations.js +46 -0
  324. package/dist/memory/tool-schemas.js +44 -0
  325. package/dist/memory/validation.js +42 -0
  326. package/dist/notifications/contracts.js +1 -0
  327. package/dist/notifications/delivery.js +11 -0
  328. package/dist/notifications/durable-extension.js +20 -0
  329. package/dist/notifications/notification-service.js +324 -0
  330. package/dist/providers/credential-store.js +86 -0
  331. package/dist/providers/ollama-cloud.js +148 -0
  332. package/dist/providers/provider-logo-url.js +18 -0
  333. package/dist/providers/provider-logo.js +31 -0
  334. package/dist/providers/provider-service.js +295 -0
  335. package/dist/research/artifacts.js +151 -0
  336. package/dist/research/call-queue.js +43 -0
  337. package/dist/research/contracts.js +37 -0
  338. package/dist/research/evidence.js +43 -0
  339. package/dist/research/journal.js +30 -0
  340. package/dist/research/research-service.js +191 -0
  341. package/dist/research/tool-activity.js +49 -0
  342. package/dist/research/tool-response.js +25 -0
  343. package/dist/runtime.js +145 -0
  344. package/dist/web/agent-events.js +418 -0
  345. package/dist/web/app.js +206 -0
  346. package/dist/web/artifact-downloads.js +23 -0
  347. package/dist/web/middleware.js +25 -0
  348. package/dist/web/random-uuid.js +14 -0
  349. package/dist/web/start.js +56 -0
  350. package/package.json +93 -3
  351. package/scripts/check-node.mjs +24 -0
  352. package/static/android-chrome-192x192.png +0 -0
  353. package/static/android-chrome-512x512.png +0 -0
  354. package/static/apple-touch-icon.png +0 -0
  355. package/static/favicon-16x16.png +0 -0
  356. package/static/favicon-32x32.png +0 -0
  357. package/static/favicon.ico +0 -0
  358. package/static/github.svg +3 -0
  359. package/static/hypervibes.png +0 -0
  360. package/static/logo.png +0 -0
  361. package/static/site.webmanifest +1 -0
  362. package/static/telegram.svg +1 -0
@@ -0,0 +1,672 @@
1
+ import { a as providerSettingsQueryOptions, i as providerMutationOptions, o as setupQueryOptions, t as invalidateProviderQueries } from "./provider-queries-BaZWLw8J.js";
2
+ import { t as SetupChecklist } from "./setup-checklist-BICTmBo2.js";
3
+ import { t as ProviderLogo } from "./provider-logo-BRdbOr9I.js";
4
+ import { a as modelKey, i as costCurrency, r as choiceContextTokens } from "./model-picker-CA1uYb--.js";
5
+ import { useEffect, useId, useRef, useState } from "react";
6
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
+ import { useMutation, useQueryClient, useSuspenseQuery } from "@tanstack/react-query";
8
+ import { toast } from "sonner";
9
+ //#region src/components/providers-page.tsx
10
+ var button = "cursor-pointer rounded-lg border border-zinc-700 px-3 py-2 text-sm hover:bg-zinc-800 disabled:cursor-not-allowed disabled:opacity-50";
11
+ var primaryButton = "cursor-pointer rounded-lg bg-violet-600 px-3 py-2 text-sm text-white hover:bg-violet-500 disabled:cursor-not-allowed disabled:opacity-50";
12
+ var dangerButton = "cursor-pointer rounded-lg border border-red-800 px-3 py-2 text-sm text-red-300 hover:bg-red-950 hover:text-red-200 disabled:cursor-not-allowed disabled:opacity-50";
13
+ var input = "w-full rounded-lg border border-zinc-700 bg-zinc-950 px-3 py-2 text-sm text-white";
14
+ /** Connect buttons sit inside the provider's own row, so a bare auth-type label
15
+ * reads better than repeating the provider name ("Anthropic API key"). */
16
+ function connectLabel(method) {
17
+ return method.type === "oauth" ? "OAuth" : "API key";
18
+ }
19
+ function ProvidersPage() {
20
+ const client = useQueryClient();
21
+ const signInTab = useRef(void 0);
22
+ function closeSignInTab() {
23
+ signInTab.current?.tab.close();
24
+ signInTab.current = void 0;
25
+ }
26
+ const { data: settings, error: refreshError } = useSuspenseQuery(providerSettingsQueryOptions());
27
+ const { data: setup } = useSuspenseQuery(setupQueryOptions());
28
+ const { agentCount } = setup;
29
+ const mutation = useMutation({
30
+ ...providerMutationOptions(client),
31
+ onError: (_error, operation) => {
32
+ if (operation.type === "answer") closeSignInTab();
33
+ },
34
+ onSuccess: (login, operation) => {
35
+ if (operation.type === "begin" && login) if (login.state === "complete") toast.success("Provider connected.");
36
+ else setLogin(login);
37
+ else if (operation.type === "cancel") setLogin(void 0);
38
+ else if (operation.type === "answer") setValue("");
39
+ }
40
+ });
41
+ const [login, setLogin] = useState(settings.activeLogin);
42
+ const [disconnecting, setDisconnecting] = useState();
43
+ const [value, setValue] = useState("");
44
+ const [search, setSearch] = useState("");
45
+ const [expanded, setExpanded] = useState();
46
+ const [streamError, setStreamError] = useState("");
47
+ const pending = mutation.isPending;
48
+ const error = streamError || mutation.error?.message || refreshError?.message;
49
+ const active = login?.state === "pending";
50
+ useEffect(() => () => closeSignInTab(), []);
51
+ useEffect(() => {
52
+ const waiting = signInTab.current;
53
+ if (!waiting) return;
54
+ if (!login || login.id !== waiting.loginId || login.state !== "pending") {
55
+ closeSignInTab();
56
+ return;
57
+ }
58
+ const event = login.events.slice(waiting.eventCount).find((event) => event.type === "auth_url");
59
+ if (event?.type !== "auth_url") return;
60
+ try {
61
+ const url = new URL(event.url);
62
+ if (url.protocol !== "https:" && url.protocol !== "http:") {
63
+ closeSignInTab();
64
+ return;
65
+ }
66
+ if (!waiting.tab.closed) waiting.tab.location.replace(url.href);
67
+ signInTab.current = void 0;
68
+ } catch {
69
+ closeSignInTab();
70
+ }
71
+ }, [login]);
72
+ useEffect(() => {
73
+ setValue("");
74
+ }, [login?.prompt?.id]);
75
+ useEffect(() => {
76
+ if (!login || login.state !== "pending") return;
77
+ let disposed = false;
78
+ const source = new EventSource(`/api/providers/logins/${encodeURIComponent(login.id)}/events`);
79
+ source.addEventListener("provider-login", (event) => {
80
+ if (disposed) return;
81
+ const snapshot = JSON.parse(event.data);
82
+ setStreamError("");
83
+ if (snapshot.state === "pending") {
84
+ setLogin(snapshot);
85
+ return;
86
+ }
87
+ source.close();
88
+ setLogin(snapshot.state === "failed" ? snapshot : void 0);
89
+ if (snapshot.state === "complete") toast.success("Provider connected.");
90
+ invalidateProviderQueries(client);
91
+ });
92
+ source.onerror = () => {
93
+ if (disposed) return;
94
+ if (source.readyState === EventSource.CLOSED) {
95
+ setLogin(void 0);
96
+ setStreamError("Sign-in status unavailable. Reload the page to reconnect.");
97
+ } else setStreamError("Sign-in status unavailable. Reconnecting…");
98
+ };
99
+ source.addEventListener("stream-error", () => {
100
+ source.close();
101
+ if (!disposed) {
102
+ setLogin(void 0);
103
+ setStreamError("Sign-in status unavailable. Reload the page.");
104
+ }
105
+ });
106
+ source.addEventListener("unauthorized", () => {
107
+ source.close();
108
+ if (!disposed) {
109
+ setLogin(void 0);
110
+ setStreamError("Session ended. Please sign in again.");
111
+ }
112
+ });
113
+ return () => {
114
+ disposed = true;
115
+ source.close();
116
+ };
117
+ }, [
118
+ client,
119
+ login?.id,
120
+ login?.state
121
+ ]);
122
+ function begin(providerId, type) {
123
+ setStreamError("");
124
+ mutation.mutate({
125
+ type: "begin",
126
+ providerId,
127
+ authType: type
128
+ });
129
+ }
130
+ function submitAnswer(answer) {
131
+ const prompt = login?.prompt;
132
+ if (!login || !prompt) return;
133
+ if (pending) return;
134
+ if (answer === "browser" && prompt.input.type === "select" && prompt.input.options.some((option) => option.id === "browser")) {
135
+ closeSignInTab();
136
+ try {
137
+ const tab = window.open("about:blank", "_blank");
138
+ if (tab) {
139
+ tab.opener = null;
140
+ signInTab.current = {
141
+ tab,
142
+ loginId: login.id,
143
+ eventCount: login.events.length
144
+ };
145
+ }
146
+ } catch {
147
+ closeSignInTab();
148
+ }
149
+ }
150
+ mutation.mutate({
151
+ type: "answer",
152
+ id: login.id,
153
+ promptId: prompt.id,
154
+ value: answer
155
+ });
156
+ }
157
+ function cancelLogin() {
158
+ closeSignInTab();
159
+ if (!login) return;
160
+ if (login.state !== "pending") {
161
+ setLogin(void 0);
162
+ return;
163
+ }
164
+ mutation.mutate({
165
+ type: "cancel",
166
+ id: login.id
167
+ });
168
+ }
169
+ function disconnect(provider) {
170
+ mutation.mutate({
171
+ type: "disconnect",
172
+ providerId: provider.id
173
+ });
174
+ }
175
+ const connected = settings.providers.filter((provider) => provider.connected);
176
+ const renderProvider = (provider) => {
177
+ const models = settings.models.filter((model) => model.provider === provider.id);
178
+ const open = expanded === provider.id && models.length > 0;
179
+ return /* @__PURE__ */ jsxs("section", { children: [/* @__PURE__ */ jsxs("div", {
180
+ className: "flex flex-wrap items-center justify-between gap-4 p-4",
181
+ children: [/* @__PURE__ */ jsxs("div", {
182
+ className: "flex min-w-0 items-center gap-3",
183
+ children: [/* @__PURE__ */ jsx(ProviderLogo, {
184
+ provider: provider.id,
185
+ className: "h-8 w-8 shrink-0 rounded-lg border border-zinc-800 bg-white p-1"
186
+ }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h3", {
187
+ className: "font-medium text-white",
188
+ children: provider.name
189
+ }), /* @__PURE__ */ jsxs("p", {
190
+ className: "mt-1 text-xs text-zinc-400",
191
+ children: [
192
+ /* @__PURE__ */ jsx("span", {
193
+ className: provider.connected ? provider.configured ? "text-emerald-400" : "text-amber-300" : void 0,
194
+ children: provider.connected ? provider.configured ? `Configured · ${provider.authType === "oauth" ? "OAuth" : "API key"}` : "Connection needs attention" : "Not connected"
195
+ }),
196
+ " · ",
197
+ models.length > 0 ? /* @__PURE__ */ jsxs("button", {
198
+ type: "button",
199
+ className: "cursor-pointer underline decoration-zinc-600 hover:text-white",
200
+ "aria-expanded": open,
201
+ onClick: () => setExpanded(open ? void 0 : provider.id),
202
+ children: [models.length, " chat models"]
203
+ }) : `${models.length} chat models`
204
+ ]
205
+ })] })]
206
+ }), /* @__PURE__ */ jsxs("div", {
207
+ className: "flex flex-wrap gap-2",
208
+ children: [
209
+ provider.methods.map((method) => /* @__PURE__ */ jsx("button", {
210
+ className: button,
211
+ disabled: pending || active || !settings.storageReady,
212
+ onClick: () => begin(provider.id, method.type),
213
+ children: provider.connected ? "Re-connect" : connectLabel(method)
214
+ }, method.type)),
215
+ !provider.methods.length && /* @__PURE__ */ jsx("span", {
216
+ className: "text-xs text-zinc-500",
217
+ children: "Ambient-only authentication is not available in per-user setup."
218
+ }),
219
+ provider.connected && /* @__PURE__ */ jsx("button", {
220
+ className: dangerButton,
221
+ disabled: pending || active,
222
+ onClick: () => setDisconnecting(provider),
223
+ children: "Disconnect"
224
+ })
225
+ ]
226
+ })]
227
+ }), open && /* @__PURE__ */ jsx("div", {
228
+ className: "max-h-60 overflow-y-auto border-t border-zinc-800 px-4 py-3",
229
+ children: /* @__PURE__ */ jsxs("table", {
230
+ className: "w-full text-xs",
231
+ children: [
232
+ /* @__PURE__ */ jsxs("caption", {
233
+ className: "sr-only",
234
+ children: [provider.name, " chat models"]
235
+ }),
236
+ /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", {
237
+ className: "text-left text-zinc-500",
238
+ children: [
239
+ /* @__PURE__ */ jsx("th", {
240
+ scope: "col",
241
+ className: "py-1 pr-4 font-medium",
242
+ children: "Model"
243
+ }),
244
+ /* @__PURE__ */ jsx("th", {
245
+ scope: "col",
246
+ className: "py-1 pr-4 font-medium",
247
+ children: "ID"
248
+ }),
249
+ /* @__PURE__ */ jsx("th", {
250
+ scope: "col",
251
+ className: "py-1 pr-4 font-medium",
252
+ children: "Context"
253
+ }),
254
+ /* @__PURE__ */ jsx("th", {
255
+ scope: "col",
256
+ className: "py-1 pr-4 font-medium",
257
+ children: "Reasoning"
258
+ }),
259
+ /* @__PURE__ */ jsx("th", {
260
+ scope: "col",
261
+ className: "py-1 pr-4 text-right font-medium",
262
+ children: "Input / 1M"
263
+ }),
264
+ /* @__PURE__ */ jsx("th", {
265
+ scope: "col",
266
+ className: "py-1 text-right font-medium",
267
+ children: "Output / 1M"
268
+ })
269
+ ]
270
+ }) }),
271
+ /* @__PURE__ */ jsx("tbody", { children: models.map((model) => /* @__PURE__ */ jsxs("tr", {
272
+ className: "border-t border-zinc-800/60",
273
+ children: [
274
+ /* @__PURE__ */ jsx("td", {
275
+ className: "max-w-48 truncate py-1.5 pr-4 text-zinc-200",
276
+ children: model.name
277
+ }),
278
+ /* @__PURE__ */ jsx("td", {
279
+ className: "max-w-48 truncate py-1.5 pr-4 text-zinc-500",
280
+ children: model.modelId
281
+ }),
282
+ /* @__PURE__ */ jsx("td", {
283
+ className: "whitespace-nowrap py-1.5 pr-4 text-zinc-400",
284
+ children: choiceContextTokens(model)
285
+ }),
286
+ /* @__PURE__ */ jsx("td", {
287
+ className: "whitespace-nowrap py-1.5 pr-4 text-zinc-400",
288
+ children: model.reasoning ? "Yes" : "—"
289
+ }),
290
+ /* @__PURE__ */ jsx("td", {
291
+ className: "whitespace-nowrap py-1.5 pr-4 text-right font-mono text-zinc-400",
292
+ children: costCurrency(model.inputCost)
293
+ }),
294
+ /* @__PURE__ */ jsx("td", {
295
+ className: "whitespace-nowrap py-1.5 text-right font-mono text-zinc-400",
296
+ children: costCurrency(model.outputCost)
297
+ })
298
+ ]
299
+ }, modelKey(model))) })
300
+ ]
301
+ })
302
+ })] }, provider.id);
303
+ };
304
+ const loginOpen = login !== void 0 && (login.state === "pending" || login.state === "failed");
305
+ return /* @__PURE__ */ jsxs("div", {
306
+ className: "mx-auto flex h-[calc(100dvh-6.5rem)] max-w-4xl flex-col gap-6 overflow-hidden",
307
+ children: [
308
+ /* @__PURE__ */ jsxs("header", {
309
+ className: "shrink-0",
310
+ children: [/* @__PURE__ */ jsx("h1", {
311
+ className: "text-3xl font-semibold text-white",
312
+ children: "Providers"
313
+ }), /* @__PURE__ */ jsx("p", {
314
+ className: "mt-2 text-sm text-zinc-400",
315
+ children: "Connect your AI accounts."
316
+ })]
317
+ }),
318
+ !settings.storageReady && /* @__PURE__ */ jsx("p", {
319
+ role: "status",
320
+ className: "shrink-0 text-sm text-amber-200",
321
+ children: "Provider setup requires AGENTS_ENCRYPTION_KEY on the server."
322
+ }),
323
+ /* @__PURE__ */ jsx(SetupChecklist, {
324
+ state: {
325
+ ...setup,
326
+ providerConnected: connected.length > 0
327
+ },
328
+ agentCount
329
+ }),
330
+ error && /* @__PURE__ */ jsx("p", {
331
+ role: "alert",
332
+ className: "shrink-0 text-sm text-red-300",
333
+ children: error
334
+ }),
335
+ connected.length > 0 && /* @__PURE__ */ jsxs("section", {
336
+ "aria-labelledby": "connected-providers-heading",
337
+ className: "shrink-0 space-y-3",
338
+ children: [/* @__PURE__ */ jsx("h2", {
339
+ id: "connected-providers-heading",
340
+ className: "text-lg font-semibold text-white",
341
+ children: "Connected Providers"
342
+ }), /* @__PURE__ */ jsx("div", {
343
+ className: "divide-y divide-zinc-800 rounded-xl border border-zinc-800",
344
+ children: connected.map(renderProvider)
345
+ })]
346
+ }),
347
+ /* @__PURE__ */ jsxs("section", {
348
+ "aria-labelledby": "all-providers-heading",
349
+ className: "flex min-h-0 flex-1 flex-col gap-3",
350
+ children: [
351
+ /* @__PURE__ */ jsx("h2", {
352
+ id: "all-providers-heading",
353
+ className: "shrink-0 text-lg font-semibold text-white",
354
+ children: "All Providers"
355
+ }),
356
+ /* @__PURE__ */ jsxs("div", {
357
+ className: "flex shrink-0 flex-wrap gap-3",
358
+ children: [/* @__PURE__ */ jsx("input", {
359
+ autoFocus: true,
360
+ "aria-label": "Search providers",
361
+ placeholder: "Search providers…",
362
+ className: `${input} flex-1`,
363
+ value: search,
364
+ onChange: (event) => setSearch(event.target.value)
365
+ }), /* @__PURE__ */ jsx("button", {
366
+ className: button,
367
+ disabled: pending || active,
368
+ onClick: () => mutation.mutate({ type: "refresh" }),
369
+ children: "Refresh models"
370
+ })]
371
+ }),
372
+ /* @__PURE__ */ jsx("div", {
373
+ className: "min-h-0 flex-1 divide-y divide-zinc-800 overflow-y-auto rounded-xl border border-zinc-800",
374
+ children: settings.providers.filter((provider) => !provider.connected && `${provider.name} ${provider.id}`.toLowerCase().includes(search.toLowerCase())).map(renderProvider)
375
+ })
376
+ ]
377
+ }),
378
+ loginOpen && login && /* @__PURE__ */ jsx(ProviderLoginDialog, {
379
+ login,
380
+ providerName: settings.providers.find((provider) => provider.id === login.providerId)?.name ?? login.providerId,
381
+ value,
382
+ onValueChange: setValue,
383
+ pending,
384
+ onSubmit: submitAnswer,
385
+ onCancel: cancelLogin
386
+ }),
387
+ disconnecting && /* @__PURE__ */ jsx(DisconnectProviderDialog, {
388
+ provider: disconnecting,
389
+ onCancel: () => setDisconnecting(void 0),
390
+ onConfirm: () => {
391
+ const provider = disconnecting;
392
+ setDisconnecting(void 0);
393
+ disconnect(provider);
394
+ }
395
+ })
396
+ ]
397
+ });
398
+ }
399
+ function ProviderLoginDialog({ login, providerName, value, onValueChange, pending, onSubmit, onCancel }) {
400
+ const ref = useRef(null);
401
+ const titleId = useId();
402
+ const formId = useId();
403
+ useEffect(() => {
404
+ const element = ref.current;
405
+ element.showModal();
406
+ return () => element.close();
407
+ }, []);
408
+ const prompt = login.prompt;
409
+ const loginMethods = prompt?.input.type === "select" && prompt.input.options.length === 2 && prompt.input.options.some((option) => option.id === "browser") && prompt.input.options.some((option) => option.id === "device_code") ? [...prompt.input.options].sort((a) => a.id === "browser" ? -1 : 1) : void 0;
410
+ return /* @__PURE__ */ jsxs("dialog", {
411
+ ref,
412
+ "aria-labelledby": titleId,
413
+ onCancel: (event) => {
414
+ event.preventDefault();
415
+ if (!pending) onCancel();
416
+ },
417
+ className: "m-auto max-h-[calc(100dvh-2rem)] w-[calc(100%_-_2rem)] max-w-md overflow-y-auto rounded-2xl border border-zinc-800 bg-[#0d0d10] p-6 text-zinc-100 shadow-2xl backdrop:bg-black/70 backdrop:backdrop-blur-sm",
418
+ children: [
419
+ /* @__PURE__ */ jsxs("h3", {
420
+ id: titleId,
421
+ className: "text-lg font-semibold text-white",
422
+ children: [providerName, " sign-in"]
423
+ }),
424
+ login.events.length > 0 && /* @__PURE__ */ jsx("div", {
425
+ className: "mt-4 space-y-3",
426
+ children: login.events.map((event, index) => /* @__PURE__ */ jsx(LoginEvent, { event }, index))
427
+ }),
428
+ login.state === "failed" && /* @__PURE__ */ jsx("p", {
429
+ role: "alert",
430
+ className: "mt-4 text-sm text-red-300",
431
+ children: login.error ?? "Sign-in failed."
432
+ }),
433
+ login.state === "pending" && prompt && /* @__PURE__ */ jsx("form", {
434
+ id: formId,
435
+ className: "mt-4 space-y-3",
436
+ onSubmit: (event) => {
437
+ event.preventDefault();
438
+ onSubmit(value);
439
+ },
440
+ children: loginMethods ? /* @__PURE__ */ jsxs("fieldset", {
441
+ disabled: pending,
442
+ children: [/* @__PURE__ */ jsx("legend", {
443
+ className: "text-sm",
444
+ children: prompt.input.message
445
+ }), /* @__PURE__ */ jsx("div", {
446
+ className: "mt-3 grid grid-cols-2 gap-3",
447
+ children: loginMethods.map((option) => /* @__PURE__ */ jsxs("button", {
448
+ type: "button",
449
+ "aria-label": option.label,
450
+ title: option.description ? `${option.label} — ${option.description}` : option.label,
451
+ className: `${button} flex flex-col items-center justify-center gap-2 py-5 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-violet-400`,
452
+ onClick: () => onSubmit(option.id),
453
+ children: [/* @__PURE__ */ jsx("svg", {
454
+ "aria-hidden": "true",
455
+ className: "h-7 w-7",
456
+ viewBox: "0 0 24 24",
457
+ fill: "none",
458
+ stroke: "currentColor",
459
+ strokeWidth: "1.5",
460
+ strokeLinecap: "round",
461
+ strokeLinejoin: "round",
462
+ children: option.id === "browser" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("rect", {
463
+ x: "3",
464
+ y: "4",
465
+ width: "18",
466
+ height: "16",
467
+ rx: "2"
468
+ }), /* @__PURE__ */ jsx("path", { d: "M3 9h18M7 6.5h.01M10 6.5h.01" })] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("rect", {
469
+ x: "3",
470
+ y: "4",
471
+ width: "18",
472
+ height: "16",
473
+ rx: "2"
474
+ }), /* @__PURE__ */ jsx("path", { d: "m7 9 3 3-3 3m6 0h4" })] })
475
+ }), /* @__PURE__ */ jsx("span", { children: option.id === "browser" ? "Browser (default)" : "Device code" })]
476
+ }, option.id))
477
+ })]
478
+ }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("label", {
479
+ htmlFor: "provider-answer",
480
+ className: "block text-sm",
481
+ children: prompt.input.message
482
+ }), prompt.input.type === "select" ? /* @__PURE__ */ jsxs("select", {
483
+ id: "provider-answer",
484
+ className: input,
485
+ value,
486
+ onChange: (event) => onValueChange(event.target.value),
487
+ required: true,
488
+ children: [/* @__PURE__ */ jsx("option", {
489
+ value: "",
490
+ children: "Choose…"
491
+ }), prompt.input.options.map((option) => /* @__PURE__ */ jsxs("option", {
492
+ value: option.id,
493
+ children: [option.label, option.description ? ` — ${option.description}` : ""]
494
+ }, option.id))]
495
+ }) : /* @__PURE__ */ jsx("input", {
496
+ id: "provider-answer",
497
+ className: input,
498
+ autoComplete: "off",
499
+ type: prompt.input.type === "secret" ? "password" : "text",
500
+ value,
501
+ maxLength: 16e3,
502
+ placeholder: "placeholder" in prompt.input ? prompt.input.placeholder : void 0,
503
+ onChange: (event) => onValueChange(event.target.value),
504
+ required: prompt.input.type !== "text"
505
+ })] })
506
+ }, prompt.id),
507
+ login.state === "pending" && !prompt && /* @__PURE__ */ jsx("p", {
508
+ role: "status",
509
+ className: "mt-4 text-sm text-zinc-400",
510
+ children: "Waiting for provider…"
511
+ }),
512
+ login.state === "failed" ? /* @__PURE__ */ jsx("div", {
513
+ className: "mt-6 flex items-center justify-end gap-3",
514
+ children: /* @__PURE__ */ jsx("button", {
515
+ type: "button",
516
+ className: button,
517
+ onClick: onCancel,
518
+ children: "Close"
519
+ })
520
+ }) : /* @__PURE__ */ jsxs("div", {
521
+ className: "mt-6 flex items-center justify-between gap-3",
522
+ children: [/* @__PURE__ */ jsx("button", {
523
+ type: "button",
524
+ className: button,
525
+ disabled: pending,
526
+ onClick: onCancel,
527
+ children: "Cancel sign-in"
528
+ }), prompt && !loginMethods && /* @__PURE__ */ jsx("button", {
529
+ type: "submit",
530
+ form: formId,
531
+ className: primaryButton,
532
+ disabled: pending || prompt.input.type !== "text" && !value.trim(),
533
+ children: "Continue"
534
+ })]
535
+ })
536
+ ]
537
+ });
538
+ }
539
+ function DisconnectProviderDialog({ provider, onCancel, onConfirm }) {
540
+ const ref = useRef(null);
541
+ const titleId = useId();
542
+ useEffect(() => {
543
+ const element = ref.current;
544
+ element.showModal();
545
+ return () => element.close();
546
+ }, []);
547
+ return /* @__PURE__ */ jsxs("dialog", {
548
+ ref,
549
+ "aria-labelledby": titleId,
550
+ "aria-describedby": `${titleId}-description`,
551
+ onCancel: (event) => {
552
+ event.preventDefault();
553
+ onCancel();
554
+ },
555
+ className: "m-auto w-[calc(100%_-_2rem)] max-w-md rounded-2xl border border-zinc-800 bg-[#0d0d10] p-6 text-zinc-100 shadow-2xl backdrop:bg-black/70 backdrop:backdrop-blur-sm",
556
+ children: [
557
+ /* @__PURE__ */ jsxs("h3", {
558
+ id: titleId,
559
+ className: "text-lg font-semibold text-white",
560
+ children: [
561
+ "Disconnect ",
562
+ provider.name,
563
+ "?"
564
+ ]
565
+ }),
566
+ /* @__PURE__ */ jsx("p", {
567
+ id: `${titleId}-description`,
568
+ className: "mt-2 text-sm leading-6 text-zinc-400",
569
+ children: "Agents using it will need another model or a reconnection."
570
+ }),
571
+ /* @__PURE__ */ jsxs("div", {
572
+ className: "mt-6 flex flex-col-reverse gap-3 sm:flex-row sm:justify-end",
573
+ children: [/* @__PURE__ */ jsx("button", {
574
+ type: "button",
575
+ autoFocus: true,
576
+ onClick: onCancel,
577
+ className: "cursor-pointer rounded-full border border-zinc-800 px-4 py-2 text-sm font-medium text-zinc-300 hover:border-zinc-700 hover:text-white",
578
+ children: "Cancel"
579
+ }), /* @__PURE__ */ jsx("button", {
580
+ type: "button",
581
+ onClick: onConfirm,
582
+ className: "cursor-pointer rounded-full bg-red-600 px-4 py-2 text-sm font-medium text-white hover:bg-red-500",
583
+ children: "Disconnect"
584
+ })]
585
+ })
586
+ ]
587
+ });
588
+ }
589
+ function SafeLink({ url, children }) {
590
+ try {
591
+ if (!["http:", "https:"].includes(new URL(url).protocol)) return null;
592
+ } catch {
593
+ return null;
594
+ }
595
+ return /* @__PURE__ */ jsx("a", {
596
+ className: "cursor-pointer break-all text-violet-300 underline",
597
+ href: url,
598
+ target: "_blank",
599
+ rel: "noopener noreferrer",
600
+ children
601
+ });
602
+ }
603
+ function DeviceCode({ code, url }) {
604
+ const [copyState, setCopyState] = useState("idle");
605
+ async function copy() {
606
+ if (copyState === "copying") return;
607
+ setCopyState("copying");
608
+ try {
609
+ await navigator.clipboard.writeText(code);
610
+ setCopyState("copied");
611
+ } catch {
612
+ setCopyState("failed");
613
+ }
614
+ }
615
+ return /* @__PURE__ */ jsxs("div", {
616
+ className: "space-y-2 text-sm",
617
+ children: [
618
+ /* @__PURE__ */ jsx(SafeLink, {
619
+ url,
620
+ children: "Open device authorization"
621
+ }),
622
+ /* @__PURE__ */ jsxs("div", {
623
+ className: "flex flex-wrap items-center gap-3",
624
+ children: [/* @__PURE__ */ jsxs("p", { children: ["Code: ", /* @__PURE__ */ jsx("strong", {
625
+ className: "select-all font-mono",
626
+ children: code
627
+ })] }), /* @__PURE__ */ jsx("button", {
628
+ type: "button",
629
+ className: button,
630
+ disabled: copyState === "copying",
631
+ onClick: () => {
632
+ copy();
633
+ },
634
+ children: "Copy to clipboard"
635
+ })]
636
+ }),
637
+ /* @__PURE__ */ jsx("p", {
638
+ role: "status",
639
+ className: copyState === "failed" ? "text-amber-300" : "text-emerald-400",
640
+ children: copyState === "copied" ? "Copied!" : copyState === "failed" ? "Unable to copy. Select and copy the code above." : copyState === "copying" ? "Copying…" : ""
641
+ })
642
+ ]
643
+ });
644
+ }
645
+ function LoginEvent({ event }) {
646
+ if (event.type === "auth_url") return /* @__PURE__ */ jsxs("p", {
647
+ className: "text-sm",
648
+ children: [/* @__PURE__ */ jsx(SafeLink, {
649
+ url: event.url,
650
+ children: "Open provider sign-in"
651
+ }), event.instructions && /* @__PURE__ */ jsx("span", {
652
+ className: "mt-1 block text-zinc-400",
653
+ children: event.instructions
654
+ })]
655
+ });
656
+ if (event.type === "device_code") return /* @__PURE__ */ jsx(DeviceCode, {
657
+ code: event.userCode,
658
+ url: event.verificationUri
659
+ }, event.userCode);
660
+ return /* @__PURE__ */ jsxs("div", {
661
+ className: "text-sm text-zinc-400",
662
+ children: [/* @__PURE__ */ jsx("p", { children: event.message }), event.type === "info" && event.links?.map((link, index) => /* @__PURE__ */ jsx(SafeLink, {
663
+ url: link.url,
664
+ children: link.label ?? link.url
665
+ }, index))]
666
+ });
667
+ }
668
+ //#endregion
669
+ //#region src/routes/_authenticated.providers.tsx?tsr-split=component
670
+ var SplitComponent = ProvidersPage;
671
+ //#endregion
672
+ export { SplitComponent as component };