@maudecode/talaria-web 1.15.0 → 1.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/_release.json +4 -4
  2. package/dist/api/automation-router.d.ts +21 -7
  3. package/dist/api/automation-router.js +3 -0
  4. package/dist/api/automation-router.js.map +1 -1
  5. package/dist/api/chat-router.d.ts +142 -6
  6. package/dist/api/chat-router.js +11 -5
  7. package/dist/api/chat-router.js.map +1 -1
  8. package/dist/api/git-router.js +44 -32
  9. package/dist/api/git-router.js.map +1 -1
  10. package/dist/api/raw-routes.js +5 -58
  11. package/dist/api/raw-routes.js.map +1 -1
  12. package/dist/api/router.d.ts +4 -2
  13. package/dist/api/router.js +8 -8
  14. package/dist/api/router.js.map +1 -1
  15. package/dist/api/sessions-router.d.ts +714 -42
  16. package/dist/api/sessions-router.js +57 -23
  17. package/dist/api/sessions-router.js.map +1 -1
  18. package/dist/api/settings-router.d.ts +153 -9
  19. package/dist/api/settings-router.js +61 -16
  20. package/dist/api/settings-router.js.map +1 -1
  21. package/dist/api/sse-routes.js +1 -1
  22. package/dist/api/sse-routes.js.map +1 -1
  23. package/dist/api/tools-router.d.ts +13 -1
  24. package/dist/api/tools-router.js +10 -8
  25. package/dist/api/tools-router.js.map +1 -1
  26. package/dist/app.d.ts +1047 -67
  27. package/dist/auth/gate.js +8 -4
  28. package/dist/auth/gate.js.map +1 -1
  29. package/dist/auth/oidc.d.ts +6 -2
  30. package/dist/auth/oidc.js +16 -11
  31. package/dist/auth/oidc.js.map +1 -1
  32. package/dist/auth/store.d.ts +14 -2
  33. package/dist/auth/store.js +26 -1
  34. package/dist/auth/store.js.map +1 -1
  35. package/dist/cli/dotenv.d.ts +1 -1
  36. package/dist/cli/dotenv.js +36 -3
  37. package/dist/cli/dotenv.js.map +1 -1
  38. package/dist/http/addresses.d.ts +6 -0
  39. package/dist/http/addresses.js +26 -0
  40. package/dist/http/addresses.js.map +1 -1
  41. package/dist/http/context.d.ts +3 -3
  42. package/dist/links.d.ts +26 -0
  43. package/dist/links.js +60 -0
  44. package/dist/links.js.map +1 -0
  45. package/dist/onboarding.js +26 -7
  46. package/dist/onboarding.js.map +1 -1
  47. package/dist/profiles/profiles.js +1 -1
  48. package/dist/profiles/profiles.js.map +1 -1
  49. package/dist/providers/catalog.d.ts +74 -1
  50. package/dist/providers/catalog.js +248 -42
  51. package/dist/providers/catalog.js.map +1 -1
  52. package/dist/providers/tables.d.ts +3 -1
  53. package/dist/providers/tables.js +9 -4
  54. package/dist/providers/tables.js.map +1 -1
  55. package/dist/redact.js +493 -13
  56. package/dist/redact.js.map +1 -1
  57. package/dist/runtime.js +52 -28
  58. package/dist/runtime.js.map +1 -1
  59. package/dist/sessions/anchor.d.ts +22 -3
  60. package/dist/sessions/anchor.js +87 -42
  61. package/dist/sessions/anchor.js.map +1 -1
  62. package/dist/sessions/background-tasks.d.ts +4 -1
  63. package/dist/sessions/background-tasks.js +7 -4
  64. package/dist/sessions/background-tasks.js.map +1 -1
  65. package/dist/sessions/completions.js +1 -1
  66. package/dist/sessions/completions.js.map +1 -1
  67. package/dist/sessions/list.d.ts +8 -4
  68. package/dist/sessions/list.js +24 -17
  69. package/dist/sessions/list.js.map +1 -1
  70. package/dist/sessions/merge.d.ts +70 -7
  71. package/dist/sessions/merge.js +331 -23
  72. package/dist/sessions/merge.js.map +1 -1
  73. package/dist/sessions/pending.d.ts +5 -0
  74. package/dist/sessions/pending.js +30 -10
  75. package/dist/sessions/pending.js.map +1 -1
  76. package/dist/sessions/service.d.ts +57 -3
  77. package/dist/sessions/service.js +327 -56
  78. package/dist/sessions/service.js.map +1 -1
  79. package/dist/sessions/session.d.ts +6 -1
  80. package/dist/sessions/session.js +6 -0
  81. package/dist/sessions/session.js.map +1 -1
  82. package/dist/sessions/shares.js +11 -2
  83. package/dist/sessions/shares.js.map +1 -1
  84. package/dist/sessions/store.js +1 -1
  85. package/dist/sessions/store.js.map +1 -1
  86. package/dist/sessions/turn.d.ts +19 -1
  87. package/dist/sessions/turn.js +218 -113
  88. package/dist/sessions/turn.js.map +1 -1
  89. package/dist/settings.js +9 -0
  90. package/dist/settings.js.map +1 -1
  91. package/dist/sidecar/fake.js +2 -0
  92. package/dist/sidecar/fake.js.map +1 -1
  93. package/dist/tools/commands.d.ts +15 -0
  94. package/dist/tools/commands.js +52 -0
  95. package/dist/tools/commands.js.map +1 -0
  96. package/dist/tools/crons.d.ts +4 -1
  97. package/dist/tools/crons.js +58 -11
  98. package/dist/tools/crons.js.map +1 -1
  99. package/dist/tools/mcp.js +5 -1
  100. package/dist/tools/mcp.js.map +1 -1
  101. package/dist/tools/update-notifications.d.ts +1 -1
  102. package/dist/tools/update-notifications.js +1 -1
  103. package/dist/tools/update-notifications.js.map +1 -1
  104. package/dist/tools/updates.d.ts +8 -3
  105. package/dist/tools/updates.js +133 -34
  106. package/dist/tools/updates.js.map +1 -1
  107. package/dist/workspace/git.d.ts +57 -10
  108. package/dist/workspace/git.js +302 -195
  109. package/dist/workspace/git.js.map +1 -1
  110. package/dist/workspace/media-refs.d.ts +13 -0
  111. package/dist/workspace/media-refs.js +165 -0
  112. package/dist/workspace/media-refs.js.map +1 -0
  113. package/dist/workspace/media.d.ts +19 -0
  114. package/dist/workspace/media.js +61 -2
  115. package/dist/workspace/media.js.map +1 -1
  116. package/dist/workspace/workspaces.d.ts +7 -1
  117. package/dist/workspace/workspaces.js +30 -21
  118. package/dist/workspace/workspaces.js.map +1 -1
  119. package/dist/workspace/worktrees.d.ts +2 -4
  120. package/dist/workspace/worktrees.js +28 -33
  121. package/dist/workspace/worktrees.js.map +1 -1
  122. package/package.json +4 -2
  123. package/sidecar/scripts/replay_sidecar.py +3 -1
  124. package/sidecar/talaria_sidecar/__init__.py +1 -1
  125. package/sidecar/talaria_sidecar/home.py +59 -2
  126. package/sidecar/talaria_sidecar/methods/__init__.py +2 -2
  127. package/sidecar/talaria_sidecar/methods/aux.py +19 -3
  128. package/sidecar/talaria_sidecar/methods/chat.py +129 -23
  129. package/sidecar/talaria_sidecar/methods/commands.py +46 -31
  130. package/sidecar/talaria_sidecar/methods/config.py +14 -10
  131. package/sidecar/talaria_sidecar/methods/oauth.py +439 -0
  132. package/sidecar/talaria_sidecar/methods/profiles.py +5 -4
  133. package/sidecar/talaria_sidecar/methods/providers.py +161 -1
  134. package/sidecar/talaria_sidecar/methods/runtime.py +2 -0
  135. package/sidecar/talaria_sidecar/methods/text.py +1 -20
  136. package/sidecar/talaria_sidecar/methods/usage.py +7 -1
  137. package/static/dist/FILES.txt +124 -120
  138. package/static/dist/assets/AppShell-ef3bhu32.js +1 -0
  139. package/static/dist/assets/Button-nx37f4u1.js +1 -0
  140. package/static/dist/assets/ChatPage-cdcpykcg.js +25 -0
  141. package/static/dist/assets/Dialog-mec42hvb.js +1 -0
  142. package/static/dist/assets/HubRoute-ecb65zpr.js +2 -0
  143. package/static/dist/assets/{Markdown-dy8t4dy7.js → Markdown-jqrx5es0.js} +125 -125
  144. package/static/dist/assets/RightPanel-d1lgvk4s.js +1 -0
  145. package/static/dist/assets/Select-h4ivl9qf.js +1 -0
  146. package/static/dist/assets/SessionListPanel-ewib046b.js +1 -0
  147. package/static/dist/assets/SettingsLayout-lx654cup.js +1 -0
  148. package/static/dist/assets/States-ehsb6lzo.js +1 -0
  149. package/static/dist/assets/Toaster-mch1pa3t.js +1 -0
  150. package/static/dist/assets/_app-m8d961ef.js +1 -0
  151. package/static/dist/assets/_app.ext._extensionId-mp33hbzi.js +1 -0
  152. package/static/dist/assets/_app.index-dk6zp7e0.js +1 -0
  153. package/static/dist/assets/_app.insights-jt2fk4i1.js +1 -0
  154. package/static/dist/assets/_app.kanban-if4pubeu.js +1 -0
  155. package/static/dist/assets/_app.logs-mfaw9m6g.js +1 -0
  156. package/static/dist/assets/_app.memory-h3eaarb6.js +1 -0
  157. package/static/dist/assets/_app.profiles-ienktovs.js +1 -0
  158. package/static/dist/assets/{_app.session._sessionId-gyoh5ylx.js → _app.session._sessionId-hh27wwu2.js} +1 -1
  159. package/static/dist/assets/_app.settings-dpoe0bzf.js +1 -0
  160. package/static/dist/assets/_app.settings._section-l468ynag.js +3 -0
  161. package/static/dist/assets/_app.skills-kcbncc8i.js +1 -0
  162. package/static/dist/assets/_app.tasks-occdrqhw.js +2 -0
  163. package/static/dist/assets/_app.todos-nnke2rcc.js +1 -0
  164. package/static/dist/assets/_app.workspaces-cdlatvwj.js +1 -0
  165. package/static/dist/assets/{abnfDiagram-VCTEODGH-cjqletra.js → abnfDiagram-VCTEODGH-oity9y4o.js} +1 -1
  166. package/static/dist/assets/architecture-7GRP2DOG-hj11333z.js +1 -0
  167. package/static/dist/assets/architectureDiagram-5GKGNRK7-ceaepnyr.js +36 -0
  168. package/static/dist/assets/{back-e4m6nsnm.js → back-eu64w89w.js} +1 -1
  169. package/static/dist/assets/{blockDiagram-I7D4REHJ-b195z021.js → blockDiagram-I7D4REHJ-n79st4pj.js} +1 -1
  170. package/static/dist/assets/{c4Diagram-7LVT6UL2-olu212k1.js → c4Diagram-7LVT6UL2-mi73akzk.js} +1 -1
  171. package/static/dist/assets/cancel-mzvkdjg8.js +1 -0
  172. package/static/dist/assets/channel-mbvmf2vv.js +1 -0
  173. package/static/dist/assets/{chunk-4HAMMTFA-b8o1nufs.js → chunk-4HAMMTFA-laat0g1q.js} +1 -1
  174. package/static/dist/assets/{chunk-75Z2AOVW-l1seddto.js → chunk-75Z2AOVW-0psy1tr2.js} +1 -1
  175. package/static/dist/assets/{chunk-DU6HZSFF-lo5zg15v.js → chunk-DU6HZSFF-lw8uox8x.js} +3 -3
  176. package/static/dist/assets/{chunk-F27PBJKO-dsdzrp16.js → chunk-F27PBJKO-erassib3.js} +1 -1
  177. package/static/dist/assets/{chunk-GMAD6QVW-f3fxqq8b.js → chunk-GMAD6QVW-fz7rx619.js} +1 -1
  178. package/static/dist/assets/{chunk-GVQU2GXP-h8egxtf6.js → chunk-GVQU2GXP-gdb0epb2.js} +1 -1
  179. package/static/dist/assets/{chunk-IMKFNOWR-iolwd8s0.js → chunk-IMKFNOWR-ea8t26qw.js} +1 -1
  180. package/static/dist/assets/{chunk-L3NEJ4N5-b88bbtwi.js → chunk-L3NEJ4N5-mb1gu9kz.js} +1 -1
  181. package/static/dist/assets/{chunk-OSK3NFVY-e3e7nr6s.js → chunk-OSK3NFVY-eovmccvy.js} +1 -1
  182. package/static/dist/assets/{chunk-P2QGCYS3-mdc46rt1.js → chunk-P2QGCYS3-bo55zjo5.js} +1 -1
  183. package/static/dist/assets/{chunk-POPQ4Y6H-kqlllrrm.js → chunk-POPQ4Y6H-ja7ohe4h.js} +1 -1
  184. package/static/dist/assets/{chunk-PWAF6VOD-he585k2x.js → chunk-PWAF6VOD-e30g9nus.js} +1 -1
  185. package/static/dist/assets/{chunk-SHT3W25Y-gh94y9a4.js → chunk-SHT3W25Y-gbb798f7.js} +3 -3
  186. package/static/dist/assets/{chunk-SVP7TREG-euxp9y7e.js → chunk-SVP7TREG-h2iw8urm.js} +1 -1
  187. package/static/dist/assets/{chunk-TICWLB2K-c8cxes1q.js → chunk-TICWLB2K-fd2cottz.js} +1 -1
  188. package/static/dist/assets/classDiagram-ZZMXUADV-o8r05k0n.js +1 -0
  189. package/static/dist/assets/classDiagram-v2-VYDZK3BY-o8r05k0n.js +1 -0
  190. package/static/dist/assets/{copied-kq0u3ht7.js → copied-h65fc3cx.js} +1 -1
  191. package/static/dist/assets/copy-e6977uwq.js +1 -0
  192. package/static/dist/assets/{cynefin-OW5HDTMX-lxd44ux4.js → cynefin-OW5HDTMX-lbltyl5j.js} +1 -1
  193. package/static/dist/assets/{cynefinDiagram-5FMLGOSQ-njpiwat8.js → cynefinDiagram-5FMLGOSQ-lxhsqq4a.js} +1 -1
  194. package/static/dist/assets/{dagre-GXQ25YYZ-nvgy6yju.js → dagre-GXQ25YYZ-gn4nnaln.js} +4 -4
  195. package/static/dist/assets/{diagram-S7CK7UJ4-g98nyv72.js → diagram-S7CK7UJ4-pa3ij6q7.js} +3 -3
  196. package/static/dist/assets/{diagram-UQ7AKVKN-ovgm6lvv.js → diagram-UQ7AKVKN-zbipyz57.js} +1 -1
  197. package/static/dist/assets/{diagram-VSXAHHWV-pb2bn2e4.js → diagram-VSXAHHWV-d1kbpzgf.js} +1 -1
  198. package/static/dist/assets/{diagram-VX7I27RA-6j4mvfqo.js → diagram-VX7I27RA-i3ty14xl.js} +1 -1
  199. package/static/dist/assets/{diagram-Z3DM3KII-dqmb982r.js → diagram-Z3DM3KII-m8xefqa7.js} +1 -1
  200. package/static/dist/assets/{ebnfDiagram-PWID7BFC-ozbpzb6d.js → ebnfDiagram-PWID7BFC-nz7wj05l.js} +1 -1
  201. package/static/dist/assets/endpoints-k7yf25m0.js +64 -0
  202. package/static/dist/assets/{erDiagram-RLTQ6QDP-hl7m8vua.js → erDiagram-RLTQ6QDP-fa41ib83.js} +1 -1
  203. package/static/dist/assets/eventmodeling-NTZA5JFV-kpbq09bx.js +1 -0
  204. package/static/dist/assets/flowDiagram-HODETNUW-lcz0kx14.js +1 -0
  205. package/static/dist/assets/{ganttDiagram-EL5Y4UJY-ompixqmh.js → ganttDiagram-EL5Y4UJY-n7zq01qu.js} +1 -1
  206. package/static/dist/assets/{gitGraph-4MIJSDKK-b6vxwp9q.js → gitGraph-4MIJSDKK-c89emb07.js} +1 -1
  207. package/static/dist/assets/{gitGraphDiagram-WWUBYQGX-k98f57on.js → gitGraphDiagram-WWUBYQGX-cz7cgr6w.js} +1 -1
  208. package/static/dist/assets/{highlighted-body-KPVGNVTW-cd3ff6ge.js → highlighted-body-KPVGNVTW-d9bapmni.js} +1 -1
  209. package/static/dist/assets/{index-nqed3oum.js → index-h00usru2.js} +3 -3
  210. package/static/dist/assets/index-n73ijkv2.css +2 -0
  211. package/static/dist/assets/{info-A6RAGUB7-hjcwjami.js → info-A6RAGUB7-ndddhhhh.js} +1 -1
  212. package/static/dist/assets/infoDiagram-27XIBGKW-ccxigcpf.js +2 -0
  213. package/static/dist/assets/{ishikawaDiagram-5VMMS53U-bxak4mwu.js → ishikawaDiagram-5VMMS53U-le0z9vtc.js} +1 -1
  214. package/static/dist/assets/{journeyDiagram-3NMN7TZE-khmihclr.js → journeyDiagram-3NMN7TZE-ivsmb26o.js} +1 -1
  215. package/static/dist/assets/{kanban-definition-UXKFOSKX-h1r32wdx.js → kanban-definition-UXKFOSKX-h6n2awt0.js} +1 -1
  216. package/static/dist/assets/lazyRouteComponent-m1rtyk4t.js +1 -0
  217. package/static/dist/assets/{line-friyjof3.js → line-dmzlfe0u.js} +1 -1
  218. package/static/dist/assets/link-budeg5t9.js +1 -0
  219. package/static/dist/assets/login-kjhasvp8.js +1 -0
  220. package/static/dist/assets/mermaid-HWGCJPDP-jb5d211j.js +1 -0
  221. package/static/dist/assets/{mermaid-parser.core-f1gvpwrt.js → mermaid-parser.core-gwyd5bnq.js} +3 -3
  222. package/static/dist/assets/{mindmap-definition-YA3MSWOX-mt2oxwue.js → mindmap-definition-YA3MSWOX-l68gg5h7.js} +1 -1
  223. package/static/dist/assets/onboarding-cdfrk0pj.js +1 -0
  224. package/static/dist/assets/{packet-AYTQ26CC-jik4ixlf.js → packet-AYTQ26CC-gpv06065.js} +1 -1
  225. package/static/dist/assets/{pegDiagram-XKGWAZYB-erxlv6cc.js → pegDiagram-XKGWAZYB-e52vs23u.js} +1 -1
  226. package/static/dist/assets/{pie-WAS4IAKB-mnkoldfl.js → pie-WAS4IAKB-l6m7nz5s.js} +1 -1
  227. package/static/dist/assets/{pieDiagram-E7YTZNPT-i7lwrada.js → pieDiagram-E7YTZNPT-b4is36bq.js} +3 -3
  228. package/static/dist/assets/{quadrantDiagram-AXDQQJYC-fr8ejdoy.js → quadrantDiagram-AXDQQJYC-m8vt2788.js} +1 -1
  229. package/static/dist/assets/{radar-RG4KPBEZ-otarjte2.js → radar-RG4KPBEZ-nxbrhiov.js} +1 -1
  230. package/static/dist/assets/{railroad-74A4TZTK-lw362oto.js → railroad-74A4TZTK-222mu9hi.js} +1 -1
  231. package/static/dist/assets/railroad-abnf-HS5TGJTU-kdvgl6x8.js +1 -0
  232. package/static/dist/assets/railroad-ebnf-LZEXJU2U-itiqslby.js +1 -0
  233. package/static/dist/assets/railroad-peg-WCYAUIDC-go7kov78.js +1 -0
  234. package/static/dist/assets/{railroadDiagram-O6MQD6OU-esyn75pw.js → railroadDiagram-O6MQD6OU-o8lldfzv.js} +1 -1
  235. package/static/dist/assets/{refresh-cw-k66keho6.js → refresh-cw-kbcje1uy.js} +1 -1
  236. package/static/dist/assets/{requirementDiagram-BXWQKSXE-cyhi5u29.js → requirementDiagram-BXWQKSXE-ovyq38kv.js} +1 -1
  237. package/static/dist/assets/{sankeyDiagram-P5KCCOFB-jljpbo0h.js → sankeyDiagram-P5KCCOFB-ou7lznor.js} +1 -1
  238. package/static/dist/assets/{saved-do49si3v.js → saved-bazmcup9.js} +1 -1
  239. package/static/dist/assets/search-jen74z4u.js +1 -0
  240. package/static/dist/assets/{sequenceDiagram-WJ2MYXX4-fz0dhlu7.js → sequenceDiagram-WJ2MYXX4-ovckdzf2.js} +1 -1
  241. package/static/dist/assets/{settings_section_extensions_title-b7lojn0o.js → settings_section_extensions_title-ertwwhlx.js} +1 -1
  242. package/static/dist/assets/share._token-dan9hgvj.js +2 -0
  243. package/static/dist/assets/{sliders-horizontal-c4wya4dy.js → sliders-horizontal-f9cb3lh3.js} +1 -1
  244. package/static/dist/assets/{stateDiagram-D77RDMKH-kdnithdx.js → stateDiagram-D77RDMKH-fcrexkkv.js} +1 -1
  245. package/static/dist/assets/stateDiagram-v2-MP3YSRHH-lcfraua2.js +1 -0
  246. package/static/dist/assets/{swimlanes-42K2YHIH-esd6gmz3.js → swimlanes-42K2YHIH-f7usu8fw.js} +1 -1
  247. package/static/dist/assets/swimlanesDiagram-VR7AAH4N-ogmanni0.js +8 -0
  248. package/static/dist/assets/{timeline-definition-24CTP7MA-g0qygccv.js → timeline-definition-24CTP7MA-gp1hvz9f.js} +1 -1
  249. package/static/dist/assets/todoStore-eqtid4r4.js +1 -0
  250. package/static/dist/assets/{treeView-Q6P3EWNA-ndchzkuu.js → treeView-Q6P3EWNA-gb9gf11u.js} +1 -1
  251. package/static/dist/assets/{treemap-WGGIJYW6-hwjxj0zz.js → treemap-WGGIJYW6-nuvfnvvi.js} +1 -1
  252. package/static/dist/assets/{untitled-mbr6tuhu.js → untitled-htelhc68.js} +1 -1
  253. package/static/dist/assets/useForm-h2t0u14e.js +1 -0
  254. package/static/dist/assets/useLocale-hcsb84pj.js +1 -0
  255. package/static/dist/assets/useNavigate-nwy70ztj.js +1 -0
  256. package/static/dist/assets/{useParams-lo9u33d1.js → useParams-dqd64jv7.js} +1 -1
  257. package/static/dist/assets/{useSearch-lq1mr090.js → useSearch-j30pvsy7.js} +1 -1
  258. package/static/dist/assets/{vennDiagram-4TSXK5OY-gubovd1r.js → vennDiagram-4TSXK5OY-fzchbzaj.js} +1 -1
  259. package/static/dist/assets/{wardley-WFR3VGLG-ir3om65j.js → wardley-WFR3VGLG-m47mhfbh.js} +1 -1
  260. package/static/dist/assets/{wardleyDiagram-VM6X3IG4-ce0or1ie.js → wardleyDiagram-VM6X3IG4-odg6ct1z.js} +2 -2
  261. package/static/dist/assets/{xychartDiagram-S5SC5T6Z-dexylcjg.js → xychartDiagram-S5SC5T6Z-mrhms5um.js} +1 -1
  262. package/static/dist/index.html +1 -1
  263. package/static/dist/sw.js +1 -1
  264. package/static/dist/assets/AppShell-orat1s43.js +0 -1
  265. package/static/dist/assets/ChatPage-ojhka3hy.js +0 -22
  266. package/static/dist/assets/HubRoute-gxgw1t33.js +0 -2
  267. package/static/dist/assets/RightPanel-c66ani1s.js +0 -1
  268. package/static/dist/assets/Select-fswf66up.js +0 -1
  269. package/static/dist/assets/SessionListPanel-goh5mtt8.js +0 -1
  270. package/static/dist/assets/SettingsLayout-n5d4wq4m.js +0 -1
  271. package/static/dist/assets/States-kxyu50at.js +0 -1
  272. package/static/dist/assets/Toaster-6zmbcqgg.js +0 -1
  273. package/static/dist/assets/_app-fowyruiu.js +0 -1
  274. package/static/dist/assets/_app.ext._extensionId-nvjyrwhy.js +0 -1
  275. package/static/dist/assets/_app.index-c9zv4y7w.js +0 -1
  276. package/static/dist/assets/_app.insights-jf12nofo.js +0 -1
  277. package/static/dist/assets/_app.kanban-lri5a4yu.js +0 -1
  278. package/static/dist/assets/_app.logs-md1p0zqo.js +0 -1
  279. package/static/dist/assets/_app.memory-bzvf2e28.js +0 -1
  280. package/static/dist/assets/_app.profiles-jpg7zmbn.js +0 -1
  281. package/static/dist/assets/_app.settings-mpuwlx4j.js +0 -1
  282. package/static/dist/assets/_app.settings._section-knz8rwoj.js +0 -1
  283. package/static/dist/assets/_app.skills-fwu1dkir.js +0 -1
  284. package/static/dist/assets/_app.tasks-h9gphtl3.js +0 -2
  285. package/static/dist/assets/_app.todos-hd1dnvrh.js +0 -1
  286. package/static/dist/assets/_app.workspaces-l8toyn5f.js +0 -1
  287. package/static/dist/assets/architecture-7GRP2DOG-cavnusaw.js +0 -1
  288. package/static/dist/assets/architectureDiagram-5GKGNRK7-k5a7v36n.js +0 -36
  289. package/static/dist/assets/channel-gozy3dp3.js +0 -1
  290. package/static/dist/assets/classDiagram-ZZMXUADV-n0vs2f2q.js +0 -1
  291. package/static/dist/assets/classDiagram-v2-VYDZK3BY-n0vs2f2q.js +0 -1
  292. package/static/dist/assets/endpoints-k8agnro8.js +0 -9
  293. package/static/dist/assets/eventmodeling-NTZA5JFV-j1y2ekec.js +0 -1
  294. package/static/dist/assets/flowDiagram-HODETNUW-g2cvcbm5.js +0 -1
  295. package/static/dist/assets/index-nfy0ezs6.css +0 -2
  296. package/static/dist/assets/infoDiagram-27XIBGKW-fm06rj36.js +0 -2
  297. package/static/dist/assets/lazyRouteComponent-b2eg0fws.js +0 -1
  298. package/static/dist/assets/link-m90ahx3n.js +0 -1
  299. package/static/dist/assets/login-bw7m2fzo.js +0 -1
  300. package/static/dist/assets/mermaid-HWGCJPDP-njwcl62n.js +0 -1
  301. package/static/dist/assets/onboarding-ret37j1e.js +0 -1
  302. package/static/dist/assets/railroad-abnf-HS5TGJTU-m741owar.js +0 -1
  303. package/static/dist/assets/railroad-ebnf-LZEXJU2U-noa4fbia.js +0 -1
  304. package/static/dist/assets/railroad-peg-WCYAUIDC-o4bpw4nb.js +0 -1
  305. package/static/dist/assets/search-j5ki6a9o.js +0 -1
  306. package/static/dist/assets/share._token-kg8w647b.js +0 -2
  307. package/static/dist/assets/stateDiagram-v2-MP3YSRHH-k2wg2645.js +0 -1
  308. package/static/dist/assets/swimlanesDiagram-VR7AAH4N-n5kvjtgr.js +0 -8
  309. package/static/dist/assets/tabBuild-bjmyvmn5.js +0 -56
  310. package/static/dist/assets/todoStore-kjk5l0sy.js +0 -1
  311. package/static/dist/assets/useForm-ocxu460f.js +0 -1
  312. package/static/dist/assets/useLocale-fzy5jhg6.js +0 -1
@@ -54,6 +54,8 @@ export declare const settingsRouter: {
54
54
  tts_voice: import("zod").ZodOptional<import("zod").ZodString>;
55
55
  dictation_append: import("zod").ZodOptional<import("zod").ZodBoolean>;
56
56
  persisted_speech_keys: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
57
+ confirm_external_links: import("zod").ZodOptional<import("zod").ZodBoolean>;
58
+ trusted_link_hosts: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
57
59
  }, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
58
60
  save: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<ApiContext & Record<never, never>, ApiContext & Record<never, never>, ApiContext>, ApiContext & Record<never, never> & Omit<ApiContext & Record<never, never>, "ctx">, import("@orpc/server").MergedCurrentContext<ApiContext, Record<never, never>>>, Omit<ApiContext, never> & Record<never, never>, import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, import("zod").ZodObject<{
59
61
  bot_name: import("zod").ZodOptional<import("zod").ZodString>;
@@ -103,7 +105,15 @@ export declare const settingsRouter: {
103
105
  tts_voice: import("zod").ZodOptional<import("zod").ZodString>;
104
106
  dictation_append: import("zod").ZodOptional<import("zod").ZodBoolean>;
105
107
  persisted_speech_keys: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
108
+ confirm_external_links: import("zod").ZodOptional<import("zod").ZodBoolean>;
109
+ trusted_link_hosts: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
106
110
  }, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
111
+ linkCheck: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<ApiContext & Record<never, never>, ApiContext & Record<never, never>, ApiContext>, ApiContext & Record<never, never> & Omit<ApiContext & Record<never, never>, "ctx">, import("@orpc/server").MergedCurrentContext<ApiContext, Record<never, never>>>, Omit<ApiContext, never> & Record<never, never>, import("zod").ZodObject<{
112
+ url: import("zod").ZodString;
113
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
114
+ opens_directly: import("zod").ZodBoolean;
115
+ host: import("zod").ZodNullable<import("zod").ZodString>;
116
+ }, import("zod/v4/core").$strip>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
107
117
  };
108
118
  profiles: {
109
119
  list: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<ApiContext & Record<never, never>, ApiContext & Record<never, never>, ApiContext>, ApiContext & Record<never, never> & Omit<ApiContext & Record<never, never>, "ctx">, import("@orpc/server").MergedCurrentContext<ApiContext, Record<never, never>>>, Omit<ApiContext, never> & Record<never, never>, import("@orpc/server").Schema<unknown, unknown>, import("zod").ZodObject<{
@@ -194,6 +204,9 @@ export declare const settingsRouter: {
194
204
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
195
205
  active_provider: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
196
206
  default_model: import("zod").ZodOptional<import("zod").ZodString>;
207
+ default_provider_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
208
+ default_bare_id: import("zod").ZodOptional<import("zod").ZodString>;
209
+ default_option_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
197
210
  groups: import("zod").ZodArray<import("zod").ZodObject<{
198
211
  provider: import("zod").ZodString;
199
212
  provider_id: import("zod").ZodOptional<import("zod").ZodString>;
@@ -201,12 +214,16 @@ export declare const settingsRouter: {
201
214
  id: import("zod").ZodString;
202
215
  label: import("zod").ZodOptional<import("zod").ZodString>;
203
216
  provider: import("zod").ZodOptional<import("zod").ZodString>;
217
+ provider_id: import("zod").ZodOptional<import("zod").ZodString>;
218
+ bare_id: import("zod").ZodOptional<import("zod").ZodString>;
204
219
  supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
205
220
  }, import("zod/v4/core").$loose>>;
206
221
  extra_models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
207
222
  id: import("zod").ZodString;
208
223
  label: import("zod").ZodOptional<import("zod").ZodString>;
209
224
  provider: import("zod").ZodOptional<import("zod").ZodString>;
225
+ provider_id: import("zod").ZodOptional<import("zod").ZodString>;
226
+ bare_id: import("zod").ZodOptional<import("zod").ZodString>;
210
227
  supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
211
228
  }, import("zod/v4/core").$loose>>>;
212
229
  }, import("zod/v4/core").$loose>>;
@@ -224,6 +241,9 @@ export declare const settingsRouter: {
224
241
  models: import("zod").ZodObject<{
225
242
  active_provider: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
226
243
  default_model: import("zod").ZodOptional<import("zod").ZodString>;
244
+ default_provider_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
245
+ default_bare_id: import("zod").ZodOptional<import("zod").ZodString>;
246
+ default_option_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
227
247
  groups: import("zod").ZodArray<import("zod").ZodObject<{
228
248
  provider: import("zod").ZodString;
229
249
  provider_id: import("zod").ZodOptional<import("zod").ZodString>;
@@ -231,12 +251,16 @@ export declare const settingsRouter: {
231
251
  id: import("zod").ZodString;
232
252
  label: import("zod").ZodOptional<import("zod").ZodString>;
233
253
  provider: import("zod").ZodOptional<import("zod").ZodString>;
254
+ provider_id: import("zod").ZodOptional<import("zod").ZodString>;
255
+ bare_id: import("zod").ZodOptional<import("zod").ZodString>;
234
256
  supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
235
257
  }, import("zod/v4/core").$loose>>;
236
258
  extra_models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
237
259
  id: import("zod").ZodString;
238
260
  label: import("zod").ZodOptional<import("zod").ZodString>;
239
261
  provider: import("zod").ZodOptional<import("zod").ZodString>;
262
+ provider_id: import("zod").ZodOptional<import("zod").ZodString>;
263
+ bare_id: import("zod").ZodOptional<import("zod").ZodString>;
240
264
  supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
241
265
  }, import("zod/v4/core").$loose>>>;
242
266
  }, import("zod/v4/core").$loose>>;
@@ -331,6 +355,8 @@ export declare const settingsRouter: {
331
355
  id: import("zod").ZodString;
332
356
  label: import("zod").ZodOptional<import("zod").ZodString>;
333
357
  provider: import("zod").ZodOptional<import("zod").ZodString>;
358
+ provider_id: import("zod").ZodOptional<import("zod").ZodString>;
359
+ bare_id: import("zod").ZodOptional<import("zod").ZodString>;
334
360
  supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
335
361
  }, import("zod/v4/core").$loose>>>;
336
362
  models_total: import("zod").ZodOptional<import("zod").ZodNumber>;
@@ -358,12 +384,64 @@ export declare const settingsRouter: {
358
384
  quota: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<ApiContext & Record<never, never>, ApiContext & Record<never, never>, ApiContext>, ApiContext & Record<never, never> & Omit<ApiContext & Record<never, never>, "ctx">, import("@orpc/server").MergedCurrentContext<ApiContext, Record<never, never>>>, Omit<ApiContext, never> & Record<never, never>, import("zod").ZodObject<{
359
385
  provider: import("zod").ZodOptional<import("zod").ZodString>;
360
386
  refresh: import("zod").ZodOptional<import("zod").ZodString>;
361
- }, import("zod/v4/core").$strip>, import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
387
+ }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
388
+ computed_at: import("zod").ZodString;
389
+ ok: import("zod").ZodBoolean;
390
+ provider: import("zod").ZodNullable<import("zod").ZodString>;
391
+ display_name: import("zod").ZodNullable<import("zod").ZodString>;
392
+ supported: import("zod").ZodBoolean;
393
+ status: import("zod").ZodString;
394
+ label: import("zod").ZodOptional<import("zod").ZodString>;
395
+ message: import("zod").ZodString;
396
+ quota: import("zod").ZodUnknown;
397
+ account_limits: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
398
+ available: import("zod").ZodOptional<import("zod").ZodBoolean>;
399
+ stale: import("zod").ZodOptional<import("zod").ZodBoolean>;
400
+ title: import("zod").ZodOptional<import("zod").ZodString>;
401
+ plan: import("zod").ZodOptional<import("zod").ZodUnknown>;
402
+ unavailable_reason: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
403
+ windows: import("zod").ZodArray<import("zod").ZodObject<{
404
+ label: import("zod").ZodString;
405
+ used_percent: import("zod").ZodNullable<import("zod").ZodNumber>;
406
+ remaining_percent: import("zod").ZodNullable<import("zod").ZodNumber>;
407
+ reset_at: import("zod").ZodNullable<import("zod").ZodString>;
408
+ detail: import("zod").ZodNullable<import("zod").ZodString>;
409
+ window_seconds: import("zod").ZodNullable<import("zod").ZodNumber>;
410
+ pace: import("zod").ZodNullable<import("zod").ZodObject<{
411
+ expected_remaining_percent: import("zod").ZodNumber;
412
+ pace_delta_percent: import("zod").ZodNumber;
413
+ burn_rate: import("zod").ZodNumber;
414
+ minutes_to_reset: import("zod").ZodNumber;
415
+ projected_minutes_to_empty: import("zod").ZodNullable<import("zod").ZodNumber>;
416
+ elapsed_minutes: import("zod").ZodNumber;
417
+ valid_until: import("zod").ZodString;
418
+ }, import("zod/v4/core").$loose>>;
419
+ forecast: import("zod").ZodNullable<import("zod").ZodObject<{
420
+ outcome: import("zod").ZodEnum<{
421
+ warning: "warning";
422
+ safe: "safe";
423
+ }>;
424
+ budget_unit: import("zod").ZodEnum<{
425
+ hour: "hour";
426
+ day: "day";
427
+ }>;
428
+ budget_percent: import("zod").ZodNullable<import("zod").ZodNumber>;
429
+ depletion_margin_minutes: import("zod").ZodNullable<import("zod").ZodNumber>;
430
+ }, import("zod/v4/core").$loose>>;
431
+ }, import("zod/v4/core").$loose>>;
432
+ details: import("zod").ZodOptional<import("zod").ZodUnknown>;
433
+ fetched_at: import("zod").ZodNullable<import("zod").ZodString>;
434
+ pace_window_index: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
435
+ session_window_index: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
436
+ weekly_window_index: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
437
+ }, import("zod/v4/core").$loose>>>;
438
+ }, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
362
439
  quotas: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<ApiContext & Record<never, never>, ApiContext & Record<never, never>, ApiContext>, ApiContext & Record<never, never> & Omit<ApiContext & Record<never, never>, "ctx">, import("@orpc/server").MergedCurrentContext<ApiContext, Record<never, never>>>, Omit<ApiContext, never> & Record<never, never>, import("zod").ZodObject<{
363
440
  source: import("zod").ZodOptional<import("zod").ZodString>;
364
441
  refresh: import("zod").ZodOptional<import("zod").ZodString>;
365
442
  }, import("zod/v4/core").$strip>, import("zod").ZodObject<{
366
443
  version: import("zod").ZodNumber;
444
+ computed_at: import("zod").ZodString;
367
445
  scope_id: import("zod").ZodString;
368
446
  profile_id: import("zod").ZodString;
369
447
  active_provider: import("zod").ZodNullable<import("zod").ZodString>;
@@ -379,13 +457,44 @@ export declare const settingsRouter: {
379
457
  message: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
380
458
  is_active_provider: import("zod").ZodOptional<import("zod").ZodBoolean>;
381
459
  quota: import("zod").ZodOptional<import("zod").ZodUnknown>;
382
- windows: import("zod").ZodOptional<import("zod").ZodUnknown>;
460
+ windows: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
461
+ label: import("zod").ZodString;
462
+ used_percent: import("zod").ZodNullable<import("zod").ZodNumber>;
463
+ remaining_percent: import("zod").ZodNullable<import("zod").ZodNumber>;
464
+ reset_at: import("zod").ZodNullable<import("zod").ZodString>;
465
+ detail: import("zod").ZodNullable<import("zod").ZodString>;
466
+ window_seconds: import("zod").ZodNullable<import("zod").ZodNumber>;
467
+ pace: import("zod").ZodNullable<import("zod").ZodObject<{
468
+ expected_remaining_percent: import("zod").ZodNumber;
469
+ pace_delta_percent: import("zod").ZodNumber;
470
+ burn_rate: import("zod").ZodNumber;
471
+ minutes_to_reset: import("zod").ZodNumber;
472
+ projected_minutes_to_empty: import("zod").ZodNullable<import("zod").ZodNumber>;
473
+ elapsed_minutes: import("zod").ZodNumber;
474
+ valid_until: import("zod").ZodString;
475
+ }, import("zod/v4/core").$loose>>;
476
+ forecast: import("zod").ZodNullable<import("zod").ZodObject<{
477
+ outcome: import("zod").ZodEnum<{
478
+ warning: "warning";
479
+ safe: "safe";
480
+ }>;
481
+ budget_unit: import("zod").ZodEnum<{
482
+ hour: "hour";
483
+ day: "day";
484
+ }>;
485
+ budget_percent: import("zod").ZodNullable<import("zod").ZodNumber>;
486
+ depletion_margin_minutes: import("zod").ZodNullable<import("zod").ZodNumber>;
487
+ }, import("zod/v4/core").$loose>>;
488
+ }, import("zod/v4/core").$loose>>>;
383
489
  balances: import("zod").ZodOptional<import("zod").ZodUnknown>;
384
490
  plan: import("zod").ZodOptional<import("zod").ZodUnknown>;
385
491
  details: import("zod").ZodOptional<import("zod").ZodUnknown>;
386
492
  unavailable_reason: import("zod").ZodOptional<import("zod").ZodUnknown>;
387
493
  retry_after: import("zod").ZodOptional<import("zod").ZodUnknown>;
388
494
  fetched_at: import("zod").ZodOptional<import("zod").ZodUnknown>;
495
+ pace_window_index: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
496
+ session_window_index: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
497
+ weekly_window_index: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
389
498
  }, import("zod/v4/core").$loose>>;
390
499
  }, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
391
500
  costHistory: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<ApiContext & Record<never, never>, ApiContext & Record<never, never>, ApiContext>, ApiContext & Record<never, never> & Omit<ApiContext & Record<never, never>, "ctx">, import("@orpc/server").MergedCurrentContext<ApiContext, Record<never, never>>>, Omit<ApiContext, never> & Record<never, never>, import("zod").ZodObject<{
@@ -458,6 +567,10 @@ export declare const settingsRouter: {
458
567
  base_url: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
459
568
  models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnknown>>;
460
569
  category: import("zod").ZodOptional<import("zod").ZodString>;
570
+ default_model: import("zod").ZodOptional<import("zod").ZodString>;
571
+ oauth_flow: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodLiteral<"device_code">>>;
572
+ oauth_label: import("zod").ZodOptional<import("zod").ZodString>;
573
+ signed_in: import("zod").ZodOptional<import("zod").ZodBoolean>;
461
574
  }, import("zod/v4/core").$loose>>>;
462
575
  categories: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnknown>>;
463
576
  current: import("zod").ZodOptional<import("zod").ZodObject<{
@@ -484,7 +597,7 @@ export declare const settingsRouter: {
484
597
  }, import("zod/v4/core").$loose>>;
485
598
  workspaces: import("zod").ZodOptional<import("zod").ZodObject<{
486
599
  items: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
487
- name: import("zod").ZodOptional<import("zod").ZodString>;
600
+ name: import("zod").ZodString;
488
601
  path: import("zod").ZodString;
489
602
  }, import("zod/v4/core").$loose>>>;
490
603
  last: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
@@ -492,6 +605,9 @@ export declare const settingsRouter: {
492
605
  models: import("zod").ZodOptional<import("zod").ZodObject<{
493
606
  active_provider: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
494
607
  default_model: import("zod").ZodOptional<import("zod").ZodString>;
608
+ default_provider_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
609
+ default_bare_id: import("zod").ZodOptional<import("zod").ZodString>;
610
+ default_option_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
495
611
  groups: import("zod").ZodArray<import("zod").ZodObject<{
496
612
  provider: import("zod").ZodString;
497
613
  provider_id: import("zod").ZodOptional<import("zod").ZodString>;
@@ -499,12 +615,16 @@ export declare const settingsRouter: {
499
615
  id: import("zod").ZodString;
500
616
  label: import("zod").ZodOptional<import("zod").ZodString>;
501
617
  provider: import("zod").ZodOptional<import("zod").ZodString>;
618
+ provider_id: import("zod").ZodOptional<import("zod").ZodString>;
619
+ bare_id: import("zod").ZodOptional<import("zod").ZodString>;
502
620
  supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
503
621
  }, import("zod/v4/core").$loose>>;
504
622
  extra_models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
505
623
  id: import("zod").ZodString;
506
624
  label: import("zod").ZodOptional<import("zod").ZodString>;
507
625
  provider: import("zod").ZodOptional<import("zod").ZodString>;
626
+ provider_id: import("zod").ZodOptional<import("zod").ZodString>;
627
+ bare_id: import("zod").ZodOptional<import("zod").ZodString>;
508
628
  supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
509
629
  }, import("zod/v4/core").$loose>>>;
510
630
  }, import("zod/v4/core").$loose>>;
@@ -536,6 +656,10 @@ export declare const settingsRouter: {
536
656
  base_url: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
537
657
  models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnknown>>;
538
658
  category: import("zod").ZodOptional<import("zod").ZodString>;
659
+ default_model: import("zod").ZodOptional<import("zod").ZodString>;
660
+ oauth_flow: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodLiteral<"device_code">>>;
661
+ oauth_label: import("zod").ZodOptional<import("zod").ZodString>;
662
+ signed_in: import("zod").ZodOptional<import("zod").ZodBoolean>;
539
663
  }, import("zod/v4/core").$loose>>>;
540
664
  categories: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnknown>>;
541
665
  current: import("zod").ZodOptional<import("zod").ZodObject<{
@@ -562,7 +686,7 @@ export declare const settingsRouter: {
562
686
  }, import("zod/v4/core").$loose>>;
563
687
  workspaces: import("zod").ZodOptional<import("zod").ZodObject<{
564
688
  items: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
565
- name: import("zod").ZodOptional<import("zod").ZodString>;
689
+ name: import("zod").ZodString;
566
690
  path: import("zod").ZodString;
567
691
  }, import("zod/v4/core").$loose>>>;
568
692
  last: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
@@ -570,6 +694,9 @@ export declare const settingsRouter: {
570
694
  models: import("zod").ZodOptional<import("zod").ZodObject<{
571
695
  active_provider: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
572
696
  default_model: import("zod").ZodOptional<import("zod").ZodString>;
697
+ default_provider_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
698
+ default_bare_id: import("zod").ZodOptional<import("zod").ZodString>;
699
+ default_option_id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
573
700
  groups: import("zod").ZodArray<import("zod").ZodObject<{
574
701
  provider: import("zod").ZodString;
575
702
  provider_id: import("zod").ZodOptional<import("zod").ZodString>;
@@ -577,12 +704,16 @@ export declare const settingsRouter: {
577
704
  id: import("zod").ZodString;
578
705
  label: import("zod").ZodOptional<import("zod").ZodString>;
579
706
  provider: import("zod").ZodOptional<import("zod").ZodString>;
707
+ provider_id: import("zod").ZodOptional<import("zod").ZodString>;
708
+ bare_id: import("zod").ZodOptional<import("zod").ZodString>;
580
709
  supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
581
710
  }, import("zod/v4/core").$loose>>;
582
711
  extra_models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
583
712
  id: import("zod").ZodString;
584
713
  label: import("zod").ZodOptional<import("zod").ZodString>;
585
714
  provider: import("zod").ZodOptional<import("zod").ZodString>;
715
+ provider_id: import("zod").ZodOptional<import("zod").ZodString>;
716
+ bare_id: import("zod").ZodOptional<import("zod").ZodString>;
586
717
  supports_fast_tier: import("zod").ZodOptional<import("zod").ZodBoolean>;
587
718
  }, import("zod/v4/core").$loose>>>;
588
719
  }, import("zod/v4/core").$loose>>;
@@ -601,25 +732,35 @@ export declare const settingsRouter: {
601
732
  message: import("zod").ZodOptional<import("zod").ZodString>;
602
733
  models: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodUnknown>>;
603
734
  }, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
604
- oauthStart: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<ApiContext & Record<never, never>, ApiContext & Record<never, never>, ApiContext>, ApiContext & Record<never, never> & Omit<ApiContext & Record<never, never>, "ctx">, import("@orpc/server").MergedCurrentContext<ApiContext, Record<never, never>>>, Omit<ApiContext, never> & Record<never, never>, import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, import("zod").ZodObject<{
735
+ oauthStart: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<ApiContext & Record<never, never>, ApiContext & Record<never, never>, ApiContext>, ApiContext & Record<never, never> & Omit<ApiContext & Record<never, never>, "ctx">, import("@orpc/server").MergedCurrentContext<ApiContext, Record<never, never>>>, Omit<ApiContext, never> & Record<never, never>, import("zod").ZodObject<{
736
+ provider: import("zod").ZodOptional<import("zod").ZodString>;
737
+ }, import("zod/v4/core").$loose>, import("zod").ZodObject<{
605
738
  ok: import("zod").ZodOptional<import("zod").ZodBoolean>;
606
739
  status: import("zod").ZodOptional<import("zod").ZodString>;
607
740
  url: import("zod").ZodOptional<import("zod").ZodString>;
608
741
  verification_url: import("zod").ZodOptional<import("zod").ZodString>;
609
742
  user_code: import("zod").ZodOptional<import("zod").ZodString>;
610
743
  message: import("zod").ZodOptional<import("zod").ZodString>;
611
- error: import("zod").ZodOptional<import("zod").ZodString>;
744
+ error: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
612
745
  flow_id: import("zod").ZodOptional<import("zod").ZodString>;
746
+ provider: import("zod").ZodOptional<import("zod").ZodString>;
747
+ expires_in: import("zod").ZodOptional<import("zod").ZodNumber>;
748
+ interval: import("zod").ZodOptional<import("zod").ZodNumber>;
613
749
  }, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
614
- oauthCancel: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<ApiContext & Record<never, never>, ApiContext & Record<never, never>, ApiContext>, ApiContext & Record<never, never> & Omit<ApiContext & Record<never, never>, "ctx">, import("@orpc/server").MergedCurrentContext<ApiContext, Record<never, never>>>, Omit<ApiContext, never> & Record<never, never>, import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>, import("zod").ZodObject<{
750
+ oauthCancel: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<ApiContext & Record<never, never>, ApiContext & Record<never, never>, ApiContext>, ApiContext & Record<never, never> & Omit<ApiContext & Record<never, never>, "ctx">, import("@orpc/server").MergedCurrentContext<ApiContext, Record<never, never>>>, Omit<ApiContext, never> & Record<never, never>, import("zod").ZodObject<{
751
+ flow_id: import("zod").ZodOptional<import("zod").ZodString>;
752
+ }, import("zod/v4/core").$loose>, import("zod").ZodObject<{
615
753
  ok: import("zod").ZodOptional<import("zod").ZodBoolean>;
616
754
  status: import("zod").ZodOptional<import("zod").ZodString>;
617
755
  url: import("zod").ZodOptional<import("zod").ZodString>;
618
756
  verification_url: import("zod").ZodOptional<import("zod").ZodString>;
619
757
  user_code: import("zod").ZodOptional<import("zod").ZodString>;
620
758
  message: import("zod").ZodOptional<import("zod").ZodString>;
621
- error: import("zod").ZodOptional<import("zod").ZodString>;
759
+ error: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
622
760
  flow_id: import("zod").ZodOptional<import("zod").ZodString>;
761
+ provider: import("zod").ZodOptional<import("zod").ZodString>;
762
+ expires_in: import("zod").ZodOptional<import("zod").ZodNumber>;
763
+ interval: import("zod").ZodOptional<import("zod").ZodNumber>;
623
764
  }, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
624
765
  oauthPoll: import("@orpc/server").Procedure<import("@orpc/server").MergedInitialContext<import("@orpc/server").MergedInitialContext<ApiContext & Record<never, never>, ApiContext & Record<never, never>, ApiContext>, ApiContext & Record<never, never> & Omit<ApiContext & Record<never, never>, "ctx">, import("@orpc/server").MergedCurrentContext<ApiContext, Record<never, never>>>, Omit<ApiContext, never> & Record<never, never>, import("zod").ZodObject<{
625
766
  flow_id: import("zod").ZodOptional<import("zod").ZodString>;
@@ -630,8 +771,11 @@ export declare const settingsRouter: {
630
771
  verification_url: import("zod").ZodOptional<import("zod").ZodString>;
631
772
  user_code: import("zod").ZodOptional<import("zod").ZodString>;
632
773
  message: import("zod").ZodOptional<import("zod").ZodString>;
633
- error: import("zod").ZodOptional<import("zod").ZodString>;
774
+ error: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
634
775
  flow_id: import("zod").ZodOptional<import("zod").ZodString>;
776
+ provider: import("zod").ZodOptional<import("zod").ZodString>;
777
+ expires_in: import("zod").ZodOptional<import("zod").ZodNumber>;
778
+ interval: import("zod").ZodOptional<import("zod").ZodNumber>;
635
779
  }, import("zod/v4/core").$loose>, import("@orpc/server").MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
636
780
  };
637
781
  };
@@ -7,18 +7,19 @@ import { HttpError } from './router.js';
7
7
  import { requestSessionIdGuard } from './session-visibility.js';
8
8
  import { activeProfileName, buildProfileCookie, ensureTrustedAuthSession, sessionCanManageServer } from '../auth/gate.js';
9
9
  import { forwardedClientIp, isLoopback, rawPeerIsTrustedProxy } from '../http/origin.js';
10
- import { isNonGlobalAddress } from '../http/addresses.js';
11
- import { isIP } from 'node:net';
10
+ import { isPrivateLan } from '../http/addresses.js';
12
11
  import { HttpFailure } from '../sessions/service.js';
12
+ import { SidecarError } from '../sidecar/client.js';
13
13
  import { SessionNotFound } from '../sessions/store.js';
14
14
  import { auxiliaryModels, canonicaliseProviderId, ConfigUnavailable, maxTokensStatus, personalityPrompt, personalityRows, reasoningStatus, setAuxiliaryModel, setDefaultModel, setMaxTokens, validReasoningEffort } from '../config/agent-config.js';
15
15
  import { ProfileError, validateProfileName } from '../profiles/profiles.js';
16
16
  import { OnboardingError } from '../onboarding.js';
17
17
  import { writeEnvFile } from '../providers/env-file.js';
18
18
  import { displayName, providerEnvVar, stampAuxiliarySelections } from '../providers/catalog.js';
19
- import { OAUTH_PROVIDERS } from '../providers/tables.js';
19
+ import { OAUTH_PROVIDERS, SUPPORTED_PROVIDER_SETUPS } from '../providers/tables.js';
20
20
  import { displayBotName, SETTINGS_SPEECH_KEYS, pyBool } from '../settings.js';
21
21
  import { str } from '../util.js';
22
+ import { checkExternalLink, linkPreferences } from '../links.js';
22
23
  const os = implement(settingsContract).$context().use(requestSessionIdGuard);
23
24
  function failure(error) {
24
25
  if (error instanceof HttpError)
@@ -46,13 +47,8 @@ const home = (ctx) => ctx.deps.profileHome(activeProfileName(ctx));
46
47
  /** The active profile's auxiliary slots, stamped against the same catalog `/api/models` answers. */
47
48
  const auxiliaryState = async (ctx) => stampAuxiliarySelections(auxiliaryModels(await ctx.deps.agentConfig.read(home(ctx))), await ctx.deps.catalog.models(home(ctx)));
48
49
  const truthy = (v) => ['1', 'true', 'yes', 'on'].includes((v ?? '').trim().toLowerCase());
49
- /** Python `addr.is_loopback or addr.is_private` (`ipaddress` treats every non-global range as private). */
50
- function ipIsLoopbackOrPrivate(addr) {
51
- const ip = addr.trim();
52
- if (!isIP(ip))
53
- return false;
54
- return isLoopback(ip) || isNonGlobalAddress(ip);
55
- }
50
+ /** Python `addr.is_loopback or addr.is_private`: CGNAT/Tailscale `100.64.0.0/10` peers are remote. */
51
+ const ipIsLoopbackOrPrivate = (addr) => isLoopback(addr.trim()) || isPrivateLan(addr);
56
52
  /** Python `_onboarding_request_is_local`: forwarded headers count only behind a trusted proxy with the opt-in. */
57
53
  export function onboardingRequestIsLocal(ctx) {
58
54
  const env = ctx.deps.config.env;
@@ -122,6 +118,9 @@ async function saveSettings(ctx, input) {
122
118
  const body = { ...input };
123
119
  if (['auto_apply_updates', 'update_channel', 'agent_update_channel', 'check_for_updates'].some((key) => key in body) && !(await canManageServer(ctx)))
124
120
  throw new HttpError(403, 'An owner session is required to manage updates');
121
+ // Link safety applies to every user of this server, so only an owner may relax it.
122
+ if (['confirm_external_links', 'trusted_link_hosts'].some((key) => key in body) && !(await canManageServer(ctx)))
123
+ throw new HttpError(403, 'An owner session is required to manage link safety');
125
124
  if ('bot_name' in body)
126
125
  body.bot_name = displayBotName(body.bot_name);
127
126
  const authEnabledBefore = await auth.isAuthEnabled();
@@ -205,11 +204,37 @@ const effortsResolver = (ctx) => async (model, provider) => {
205
204
  return [];
206
205
  }
207
206
  };
208
- const OAUTH_UNAVAILABLE = 'Browser OAuth onboarding is not available in this release. Run `hermes auth` in a terminal, then reload.';
207
+ const OAUTH_GATE_DENIED = 'Onboarding OAuth is only available from local networks when auth is not enabled. To bypass this on a remote server, set HERMES_WEBUI_ONBOARDING_OPEN=1.';
208
+ /** TAL-398: a device-code sign-in runs in the Agent sidecar, which writes the credential to the profile's own auth store. Callers check the onboarding gate first. */
209
+ async function oauthCall(ctx, method, params) {
210
+ const sidecar = ctx.deps.sidecar();
211
+ if (!sidecar)
212
+ throw new HttpError(503, 'Provider sign-in needs the Agent sidecar, which is not running.', { condition: 'sidecar_unavailable' });
213
+ try {
214
+ return await sidecar.call(method, params);
215
+ }
216
+ catch (error) {
217
+ if (!(error instanceof SidecarError))
218
+ throw error;
219
+ const status = { sidecar_unavailable: 503, oauth_flow_not_found: 404, oauth_unsupported: 409, oauth_superseded: 409, invalid_params: 400 }[error.condition] ?? (error.code === -32602 ? 400 : 502);
220
+ throw new HttpError(status, error.message, { condition: error.condition });
221
+ }
222
+ }
223
+ /** One flow's state as the onboarding view renders it: `ok` is false for every ending without a credential. */
224
+ function oauthView(flow) {
225
+ return { ok: flow.status === 'pending' || flow.status === 'approved', flow_id: flow.flow_id, provider: flow.provider, status: flow.status, error: flow.error };
226
+ }
227
+ function oauthFlowId(raw) {
228
+ const flowId = str(raw).trim();
229
+ if (!flowId)
230
+ throw new HttpError(400, 'flow_id is required');
231
+ return flowId;
232
+ }
209
233
  export const settingsRouter = os.router({
210
234
  settings: {
211
235
  get: os.settings.get.handler(({ context: { ctx } }) => run(() => settingsPayload(ctx))),
212
236
  save: os.settings.save.handler(({ input, context: { ctx } }) => run(() => saveSettings(ctx, input))),
237
+ linkCheck: os.settings.linkCheck.handler(({ input, context: { ctx } }) => checkExternalLink(input.url, linkPreferences(ctx.deps.settings.load()))),
213
238
  },
214
239
  profiles: {
215
240
  list: os.profiles.list.handler(({ context: { ctx } }) => run(async () => ({ profiles: await ctx.deps.profiles.list(activeProfileName(ctx)), active: activeProfileName(ctx), single_profile_mode: ctx.deps.isolatedProfileMode() }))),
@@ -446,13 +471,33 @@ export const settingsRouter = os.router({
446
471
  throw new HttpError(500, `probe failed: ${str(error.message)}`);
447
472
  }
448
473
  })),
449
- oauthStart: os.onboarding.oauthStart.handler(({ context: { ctx } }) => run(async () => {
474
+ oauthStart: os.onboarding.oauthStart.handler(({ input, context: { ctx } }) => run(async () => {
475
+ if (!(await onboardingGateAllows(ctx)))
476
+ throw new HttpError(403, OAUTH_GATE_DENIED);
477
+ const provider = str(input.provider).trim().toLowerCase();
478
+ if (!provider)
479
+ throw new HttpError(400, 'provider is required');
480
+ if (SUPPORTED_PROVIDER_SETUPS[provider]?.oauth_flow !== 'device_code')
481
+ throw new HttpError(400, `'${displayName(provider)}' does not sign in with a device code here. Run \`hermes auth\` in a terminal for it.`);
482
+ const flow = await oauthCall(ctx, 'oauth.start', { profile_home: home(ctx), provider });
483
+ return { ok: true, flow_id: flow.flow_id, provider: flow.provider, status: flow.status, user_code: flow.user_code, verification_url: flow.verification_url, url: flow.verification_url, expires_in: flow.expires_in, interval: flow.interval };
484
+ })),
485
+ oauthCancel: os.onboarding.oauthCancel.handler(({ input, context: { ctx } }) => run(async () => {
486
+ if (!(await onboardingGateAllows(ctx)))
487
+ throw new HttpError(403, OAUTH_GATE_DENIED);
488
+ const flow = await oauthCall(ctx, 'oauth.cancel', { profile_home: home(ctx), flow_id: oauthFlowId(input.flow_id) });
489
+ // The cancel answer is about the request: a flow that had already ended keeps its own ending.
490
+ return { ...oauthView(flow), ok: flow.status === 'cancelled' };
491
+ })),
492
+ oauthPoll: os.onboarding.oauthPoll.handler(({ input, context: { ctx } }) => run(async () => {
450
493
  if (!(await onboardingGateAllows(ctx)))
451
- throw new HttpError(403, 'Onboarding OAuth is only available from local networks when auth is not enabled. To bypass this on a remote server, set HERMES_WEBUI_ONBOARDING_OPEN=1.');
452
- throw new HttpError(501, OAUTH_UNAVAILABLE);
494
+ throw new HttpError(403, OAUTH_GATE_DENIED);
495
+ const flow = await oauthCall(ctx, 'oauth.poll', { profile_home: home(ctx), flow_id: oauthFlowId(input.flow_id) });
496
+ // A new credential changes which providers and models the catalog lists.
497
+ if (flow.status === 'approved')
498
+ ctx.deps.catalog.invalidate();
499
+ return oauthView(flow);
453
500
  })),
454
- oauthCancel: os.onboarding.oauthCancel.handler(() => run(() => { throw new HttpError(501, OAUTH_UNAVAILABLE); })),
455
- oauthPoll: os.onboarding.oauthPoll.handler(() => run(() => { throw new HttpError(501, OAUTH_UNAVAILABLE); })),
456
501
  },
457
502
  });
458
503
  /** Python `set_provider_key`: `.env` write; `null` removes the key. */